From c52ae6222dd36a3fca038324bd34b77ab52a33a1 Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Tue, 14 Nov 2023 11:36:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B6=E5=93=81=E4=B8=8A=E6=9E=B6=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProductputawayRequestMainUpdateReqVO.java | 6 + .../vo/ProductscrapRequestMainBaseVO.java | 10 - .../ProductputawayRequestDetailConvert.java | 4 + .../ProductputawayRequestMainConvert.java | 10 + .../ProductreceiptRequestMainConvert.java | 9 +- .../ProductputawayRequestMainDO.java | 3 - .../ProductputawayRequestMainServiceImpl.java | 399 +++++++++++------- .../ProductscrapRequestMainServiceImpl.java | 21 +- 8 files changed, 287 insertions(+), 175 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainUpdateReqVO.java index e1b3a909..a264df64 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productputawayRequest/vo/ProductputawayRequestMainUpdateReqVO.java @@ -1,9 +1,12 @@ package com.win.module.wms.controller.productputawayRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailUpdateReqVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import javax.validation.constraints.*; +import java.util.List; @Schema(description = "管理后台 - 制品上架申请主更新 Request VO") @Data @@ -15,4 +18,7 @@ public class ProductputawayRequestMainUpdateReqVO extends ProductputawayRequestM @NotNull(message = "id不能为空") private Long id; + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java index b922abd7..42506ddd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java @@ -3,10 +3,6 @@ package com.win.module.wms.controller.productscrapRequest.vo; import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import java.time.LocalDateTime; import javax.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; @@ -24,23 +20,19 @@ public class ProductscrapRequestMainBaseVO { private Long id; @Schema(description = "从仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从仓库代码不能为空") private String fromWarehouseCode; @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) @OnlyOne - @NotNull(message = "单据号不能为空") private String number; @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "业务类型不能为空") private String businessType; @Schema(description = "备注") private String remark; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "创建时间不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime; @@ -70,11 +62,9 @@ public class ProductscrapRequestMainBaseVO { private String updater; @Schema(description = "从库位类型范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从库位类型范围不能为空") private String fromLocationTypes; @Schema(description = "从库区代码范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从库区代码范围不能为空") private String fromAreaCodes; @Schema(description = "自动提交", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java index 8ae161bb..e2f987d0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestDetailConvert.java @@ -4,11 +4,13 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailUpdateReqVO; import com.win.module.wms.controller.productputawayRequest.vo.*; import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO; import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailExcelVO; import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO; import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; @@ -41,6 +43,8 @@ public interface ProductputawayRequestDetailConvert { List convertList02(List list); List convertList03(List list); + List convertList05(List list); + @Mappings({ @Mapping(source = "mainDO.number", target = "number"), @Mapping(source = "mainDO.remark", target = "remark"), diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java index f05c09a9..2f48cea1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productputawayRequest/ProductputawayRequestMainConvert.java @@ -4,9 +4,15 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainBaseVO; import com.win.module.wms.controller.productputawayRequest.vo.*; +import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestImportErrorVO; +import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestMainCreateReqVO; import com.win.module.wms.controller.purchaseclaimRequest.vo.*; import com.win.module.wms.controller.workstation.vo.WorkstationImportExcelVo; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; @@ -28,6 +34,8 @@ public interface ProductputawayRequestMainConvert { ProductputawayRequestMainDO convert(ProductputawayRequestMainCreateReqVO bean); + ProductputawayRequestMainDO convert( ProductputawayRequestMainBaseVO bean); + ProductputawayRequestMainDO convert(ProductputawayRequestMainUpdateReqVO bean); ProductputawayRequestMainRespVO convert(ProductputawayRequestMainDO bean); @@ -40,6 +48,8 @@ public interface ProductputawayRequestMainConvert { ProductputawayRequestMainDO convert(ProductputawayImportExcelVO bean); + ProductputawayImportErrorVO convert(ProductputawayRequestMainCreateReqVO mainVo, ProductputawayRequestDetailDO detailDo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java index f1413a40..45438152 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java @@ -4,10 +4,9 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainExcelVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainRespVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainUpdateReqVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainBaseVO; +import com.win.module.wms.controller.productreceiptRequest.vo.*; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; @@ -22,6 +21,8 @@ public interface ProductreceiptRequestMainConvert { ProductreceiptRequestMainConvert INSTANCE = Mappers.getMapper(ProductreceiptRequestMainConvert.class); + ProductreceiptRequestMainDO convert (ProductreceiptRequestMainBaseVO bean); + ProductreceiptRequestMainDO convert(ProductreceiptRequestMainCreateReqVO bean); ProductreceiptRequestMainDO convert(ProductreceiptRequestMainUpdateReqVO bean); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestMainDO.java index f63dd4f3..bdd3eef7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productputawayRequest/ProductputawayRequestMainDO.java @@ -33,12 +33,10 @@ public class ProductputawayRequestMainDO extends BaseDO { /** * 从仓库代码 */ - @NotBlank private String fromWarehouseCode; /** * 到仓库代码 */ - @NotBlank private String toWarehouseCode; /** * 从库位类型范围 @@ -97,7 +95,6 @@ public class ProductputawayRequestMainDO extends BaseDO { /** * 部门 */ - @NotBlank private String departmentCode; /** * 状态 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java index 0e902492..c920d4c3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java @@ -4,14 +4,32 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.util.StrUtil; import com.google.common.annotations.VisibleForTesting; +import com.win.framework.common.util.validation.ValidationUtils; import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.dict.DictDataApi; import com.win.module.system.api.dict.dto.DictDataRespDTO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainUpdateReqVO; +import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainBaseVO; +import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO; +import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestImportErrorVO; +import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; +import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestMainConvert; +import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; import com.win.module.wms.dal.dataobject.balance.BalanceDO; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.mysql.productputawayRequest.ProductputawayRequestDetailMapper; +import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.util.*; import com.win.framework.common.pojo.CustomConditions; @@ -32,7 +50,9 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import com.win.module.wms.convert.productputawayRequest.*; import javax.annotation.Resource; +import javax.validation.Validator; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -69,7 +89,8 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque @Resource private BusinesstypeService businesstypeService; - + @Resource + private Validator validator; @Resource private LocationService locationService; @@ -79,24 +100,109 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque @Resource private DictDataApi dictDataApi; + @Resource + private TrendsApi trendsApi; + @Override public Long createProductputawayRequestMain(ProductputawayRequestMainCreateReqVO createReqVO) { - // 插入 - ProductputawayRequestMainDO productputawayRequestMain = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO); - productputawayRequestMainMapper.insert(productputawayRequestMain); - // 返回 - return productputawayRequestMain.getId(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); + ProductputawayRequestMainDO productputawayRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "ProductputawayRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); + return productputawayRequestMainDO.getId(); + } + private ProductputawayRequestMainDO validatorToCreate( ProductputawayRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); + ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList03(subList); + for(ProductputawayRequestDetailDO productputawayRequestDetailDO: subDOList){ + validateDetailMethod(productputawayRequestDetailDO,businesstypeDO,productputawayRequestMainDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + productputawayRequestMainDO.setNumber(number); + productputawayRequestMainMapper.insert(productputawayRequestMainDO); + for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) { + productputawayRequestDetailDO.setMasterId(productputawayRequestMainDO.getId()); + productputawayRequestDetailDO.setNumber(productputawayRequestMainDO.getNumber()); + } + productputawayRequestDetailMapper.insertBatch(subDOList); + return productputawayRequestMainDO; + } + private void validateDetailMethod(ProductputawayRequestDetailDO productputawayRequestDetailDO, BusinesstypeDO businesstypeDO, ProductputawayRequestMainDO productputawayRequestMainDO) { + ItembasicDO itembasicDO = validatorItembasic(productputawayRequestDetailDO.getItemCode()); + productputawayRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); + productputawayRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); + productputawayRequestDetailDO.setItemName(itembasicDO.getName()); + productputawayRequestDetailDO.setProjectCode(itembasicDO.getProject()); + validatorLocation(productputawayRequestDetailDO.getFromLocationCode()); + IfInToLocationType(productputawayRequestDetailDO.getFromLocationCode(),businesstypeDO); + DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(productputawayRequestDetailDO.getInventoryStatus()); + String value = dictDataRespDTO.getValue(); + String[] businessArray = value.split(","); + List business = Arrays.asList(businessArray); + List balance = selectlocationReturnManagement(productputawayRequestDetailDO.getItemCode(), productputawayRequestDetailDO.getPackingNumber(), + productputawayRequestDetailDO.getBatch(), productputawayRequestDetailDO.getFromLocationCode(), business); + for(BalanceDO balance2 :balance){ + productputawayRequestMainDO.setFromWarehouseCode(balance2.getWarehouseCode()); + productputawayRequestMainDO.setDueTime(balance2.getExpireDate()); + } + BalanceDO blance1 = balance.get(0); + isqty(productputawayRequestDetailDO.getQty(),blance1.getQty()); + + } + + private ProductputawayRequestMainDO validateMainMethod(ProductputawayRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ + ProductputawayRequestMainDO productputawayRequestMainDO = ProductputawayRequestMainConvert.INSTANCE.convert(baseVO); + productputawayRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productputawayRequestMainDO.setRequestTime(LocalDateTime.now()); + productputawayRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + productputawayRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + productputawayRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + productputawayRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + productputawayRequestMainDO.setBusinessType(businesstypeDO.getCode()); + productputawayRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + productputawayRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + productputawayRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + productputawayRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + return productputawayRequestMainDO; } @Override public void updateProductputawayRequestMain(ProductputawayRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); // 校验存在 validateProductputawayRequestMainExists(updateReqVO.getId()); // 更新 - ProductputawayRequestMainDO updateObj = ProductputawayRequestMainConvert.INSTANCE.convert(updateReqVO); - productputawayRequestMainMapper.updateById(updateObj); + ProductputawayRequestMainDO productputawayRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE); + } + + private ProductputawayRequestMainDO validatorToUpdate(ProductputawayRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); + ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = updateReqVO.getSubList(); + + if(subList!=null) { + List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList05(subList); + for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) { + validateDetailMethod(productputawayRequestDetailDO, businesstypeDO, productputawayRequestMainDO); + } + productputawayRequestDetailMapper.updateBatch(subDOList); + } + productputawayRequestMainMapper.updateById(productputawayRequestMainDO); + return productputawayRequestMainDO; } + @Override public void deleteProductputawayRequestMain(Long id) { // 校验存在 @@ -135,48 +241,13 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque public PageResult getProductputawayRequestMainSenior(CustomConditions conditions) { return productputawayRequestMainMapper.selectSenior(conditions); } - @Override - @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入 - public List importProductputawayList(List importProductputaways, Integer mode, boolean updatePart) { - if (CollUtil.isEmpty(importProductputaways)) { - throw exception(WORKSTATION_IMPORT_LIST_IS_EMPTY); - } - List errorList = new ArrayList<>(); - importProductputaways.forEach(productputaway -> { - String massage = ""; - // 校验,判断是否有不符合的原因 - if(mode != null){ - try{ - validateProductputawayExists(null); - } catch(Exception ex){ - massage += ex.getMessage() + ","; - } - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(productputaway); - } - // 判断如果不存在,在进行插入 - if(errorList == null){ - ProductputawayRequestMainDO existAccountcalendar = productputawayRequestMainMapper.selectByNumber(productputaway.getPackingNumber()); - if (existAccountcalendar == null&& mode != 3) { - productputawayRequestMainMapper.insert(ProductputawayRequestMainConvert.INSTANCE.convert(productputaway)); - } - else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新 - ProductputawayRequestMainDO productputawayDo = ProductputawayRequestMainConvert.INSTANCE.convert(productputaway); - productputawayDo.setId(existAccountcalendar.getId()); - productputawayRequestMainMapper.updateById(productputawayDo); - } - } - } - }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - return errorList; + @Override + public List importProductputawayList(List importProductputaways, Integer mode, boolean updatePart) { + return null; } + private void validateproductputawayForCreateOrUpdate(Long id,String code,String workshopCode,String productionLineCode,String available) { // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 DataPermissionUtils.executeIgnore(() -> { @@ -203,124 +274,154 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque if(uom2.equals(value)){ return "ture"; }else { - throw new UtilException("计量单位"+uom2+"错误,应该是"+value); + throw exception(UOM_ERRORR,uom2,value); } } public String isqty(BigDecimal qty1, BigDecimal qty2) { if(qty1.compareTo(qty2) < 0){ return "ture"; } else { - throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1); + throw exception(QTY_ERRORR,qty2,qty1); } } + + private String validateProductputawayRequestMainImport(ProductputawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setRequestTime(LocalDateTime.now()); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); + if (requestsettingDO == null) { + message.append("未查找到制品上架申请的相关申请设置"); + } else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + + if (businesstypeDO == null) { + message.append("根据单据设置未查找到制品上架申请的相关业务类型"); + } else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + private void validatorLocation(String locationCode){ + locationService.selectLocation(locationCode); + } + private void IfInToLocationType( String fromlocationcode,BusinesstypeDO bus ){ + + jobUtils.ifInToLocationType(fromlocationcode,bus); + + } + List selectlocationReturnManagement(String ItemCode, String packingNumber, + String batch , String fromLocationCode , List business){ + List balanceDO = jobUtils.selectlocationReturnManagementAccuracy(ItemCode, packingNumber, + batch,fromLocationCode, business); + return balanceDO; + } + + private String validateProductputawayRequestDetailImport(ProductputawayRequestDetailDO detailDo, ProductputawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList + try { + ItembasicDO item = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(item.getDesc1()); + detailDo.setItemDesc2(item.getDesc2()); + detailDo.setItemName(item.getName()); + detailDo.setProjectCode(item.getProject()); + try{ + Isuom(item.getUom(),detailDo.getUom()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + validatorLocation(detailDo.getFromLocationCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + IfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); + DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDo.getInventoryStatus()); + String value = dictDataRespDTO.getValue(); + String[] businessArray = value.split(","); + List business = Arrays.asList(businessArray); + try { + List balance = selectlocationReturnManagement(detailDo.getItemCode(), detailDo.getPackingNumber(), + detailDo.getBatch(), detailDo.getFromLocationCode(), business); + try{ + for(BalanceDO balance2 :balance){ + mainDo.setFromWarehouseCode(balance2.getWarehouseCode()); + mainDo.setDueTime(balance2.getExpireDate()); + } + BalanceDO blance1 = balance.get(0); + isqty(detailDo.getQty(),blance1.getQty()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + }catch(Exception ex) { + message.append(ex.getMessage()).append(","); + } + + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + + return message.toString(); + } + + public List importProductputawayRequestList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(PRODUCTPUTAWAY_REQUEST_NOT_EXISTS); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - String massage = ""; - boolean isError = false; - RequestsettingDO requestsetting = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); - createReqVO.setAutoCommit(requestsetting.getAutoCommit()); - createReqVO.setAutoAgree(requestsetting.getAutoAgree()); - createReqVO.setAutoExecute(requestsetting.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsetting.getDirectCreateRecord()); - + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); + ProductputawayRequestMainDO mainDo = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validateProductputawayRequestMainImport(mainDo, businesstypeDO); List subList = createReqVO.getSubList(); List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (ProductputawayRequestDetailDO detailDO : subDOList) { - if (mode != null) { - try { - validateProductputawayExists(null); - } catch (Exception ex) { - massage += ex.getMessage() + ","; - } - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - try { - ItembasicDO item = itembasicService.selectItembasic(detailDO.getItemCode()); - detailDO.setItemDesc1(item.getDesc1()); - detailDO.setItemDesc2(item.getDesc2()); - detailDO.setItemName(item.getName()); - detailDO.setProjectCode(item.getProject()); - try{ - Isuom(item.getUom(),detailDO.getUom()); - }catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - } catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - try{ - locationService.selectLocation(detailDO.getFromLocationCode()); - }catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - try{ - BusinesstypeDO bus = businesstypeService.selectBusinesstypeExist("ProductPutawayRequest"); - createReqVO.setBusinessType(bus.getCode()); - createReqVO.setFromLocationTypes(bus.getOutLocationTypes()); - createReqVO.setToLocationTypes(bus.getInLocationTypes()); - createReqVO.setFromAreaCodes(bus.getOutAreaCodes()); - createReqVO.setToAreaCodes(bus.getInAreaCodes()); - //TODO TB ---TB1 效验业务类型相关属性 - try{ - jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),bus); - DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDO.getInventoryStatus()); - String value = dictDataRespDTO.getValue(); - String[] businessArray = value.split(","); - List business = Arrays.asList(businessArray); - - List balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber(), - detailDO.getBatch(), detailDO.getFromLocationCode(), business); - - try{ - BalanceDO blance1 = balance.get(0); - isqty(detailDO.getQty(),blance1.getQty()); - }catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - }catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - - } - }catch (Exception ex) { - isError = true; - massage += ex.getMessage() + ","; - } - if(isError) { - ProductputawayImportErrorVO importVO = ProductputawayRequestDetailConvert.INSTANCE.convert(createReqVO,detailDO); - importVO.setImportStatus("失败"); - importVO.setImportRemark(massage.substring(0, massage.length() - 1)); - errorList.add(importVO); - } - if(!isError) { - if( mode != 3) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - createReqVO.setNumber(number); - ProductputawayRequestMainDO createObj = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO); - productputawayRequestMainMapper.insert(createObj); - productputawayRequestDetailMapper.insertBatch(subDOList); - } - else if(mode != 2){ - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - createReqVO.setNumber(number); - ProductputawayRequestMainDO createObj = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO); - productputawayRequestMainMapper.updateById(createObj); - productputawayRequestDetailMapper.updateBatch(subDOList); - } - } - } - } - }); + boolean flag = true; + for (ProductputawayRequestDetailDO detailDO : subDOList) { + String messageDetail = validateProductputawayRequestDetailImport(detailDO, mainDo, businesstypeDO); + if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { + ProductputawayImportErrorVO importErrorVO = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productputawayRequestMainMapper.insert(mainDo); + for (ProductputawayRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + productputawayRequestDetailMapper.insertBatch(subDOList); + } + }); return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java index e120bb5b..fe49f384 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java @@ -117,18 +117,19 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Override public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { - RequestsettingDO requestsettingDO = new RequestsettingDO(); - ProductscrapRequestMainDO productscrapRequestMainDO = validatorToCreate(createReqVO, requestsettingDO); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest"); + ProductscrapRequestMainDO productscrapRequestMainDO = validatorToCreate(createReqVO); //调用自动执行方法 if (RequestStatusEnum.HANDLING.getCode().equals(productscrapRequestMainDO.getStatus())) { } - trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE); + trendsApi.createTrends(requestsettingDO.getId(), "ProductScrapRequest", "增加了制品报废申请", TrendsTypeEnum.CREATE); return productscrapRequestMainDO.getId(); } - private ProductscrapRequestMainDO validatorToCreate(ProductscrapRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + private ProductscrapRequestMainDO validatorToCreate(ProductscrapRequestMainCreateReqVO createReqVO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest"); ProductscrapRequestMainDO productscrapRequestMainDO = validateMainMethod(createReqVO, businesstypeDO, requestsettingDO); //子表校验 List subList = createReqVO.getSubList(); @@ -154,13 +155,17 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa productscrapRequestDetailDO.setItemName(itembasic.getName()); productscrapRequestDetailDO.setProjectCode(itembasic.getProject()); Isuom(productscrapRequestDetailDO.getUom(), itembasic.getUom()); - jobUtils.selectItembasicExist(itembasic.getType(), businesstypeDO); + jobUtils.selectItembasicExist(itembasic.getCode(), businesstypeDO); jobUtils.ifInToLocationType(productscrapRequestDetailDO.getFromLocationCode(), businesstypeDO); jobUtils.ifOutInventoryStatuses(productscrapRequestDetailDO.getInventoryStatus(), businesstypeDO); List business = validatorbusinessbasic(productscrapRequestDetailDO.getInventoryStatus()); List balance = validatorbalance(productscrapRequestDetailDO.getItemCode(), productscrapRequestDetailDO.getPackingNumber(), productscrapRequestDetailDO.getBatch(), productscrapRequestDetailDO.getFromLocationCode(), business); BalanceDO blance1 = balance.get(0); + for(BalanceDO balance2 :balance) { + productscrapRequestMainDO.setFromWarehouseCode(balance2.getWarehouseCode()); + productscrapRequestMainDO.setDueTime(balance2.getExpireDate()); + } isqty(productscrapRequestDetailDO.getQty(), blance1.getQty()); } @@ -169,12 +174,10 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa ProductscrapRequestMainDO productscrapRequestMainDO = ProductscrapRequestMainConvert.INSTANCE.convert(baseVO); productscrapRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); productscrapRequestMainDO.setRequestTime(LocalDateTime.now()); - requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest"); productscrapRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); productscrapRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); productscrapRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); productscrapRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); productscrapRequestMainDO.setBusinessType(businesstypeDO.getCode()); productscrapRequestMainDO.setFromLocationTypes(businesstypeDO.getInLocationTypes()); productscrapRequestMainDO.setFromAreaCodes(businesstypeDO.getInAreaCodes()); @@ -390,7 +393,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa } //写入数据 if (flag) { - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_SCRAP_REQUEST.getCode()); mainDo.setNumber(number); mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); productscrapRequestMainMapper.insert(mainDo);