diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainBaseVO.java index 225d2bea..ba212631 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainBaseVO.java @@ -2,15 +2,13 @@ package com.win.module.wms.controller.inspectRequest.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 lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDateTime; + import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; /** @@ -115,11 +113,11 @@ public class InspectRequestMainBaseVO { @Schema(description = "收货数量", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "收货数量不能为空") - private Integer receiveQty; + private BigDecimal receiveQty; @Schema(description = "样品数量", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "样品数量不能为空") - private Integer sampleQty; + private BigDecimal sampleQty; @Schema(description = "货主代码") private String ownerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java index 81b690b3..8fb7f2c9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java @@ -1,16 +1,12 @@ package com.win.module.wms.controller.inspectRequest.vo; -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 com.alibaba.excel.annotation.ExcelProperty; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; /** @@ -100,10 +96,10 @@ public class InspectRequestMainExcelVO { private String uom; @ExcelProperty("收货数量") - private Integer receiveQty; + private BigDecimal receiveQty; @ExcelProperty("样品数量") - private Integer sampleQty; + private BigDecimal sampleQty; @ExcelProperty("货主代码") private String ownerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExportReqVO.java index 42f90a57..c4101e8d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExportReqVO.java @@ -1,12 +1,12 @@ package com.win.module.wms.controller.inspectRequest.vo; -import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; -import com.win.framework.common.pojo.PageParam; -import java.time.LocalDateTime; +import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.math.BigDecimal; +import java.time.LocalDateTime; + import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 检验申请主 Excel 导出 Request VO,参数和 InspectRequestMainPageReqVO 是一致的") @@ -90,10 +90,10 @@ public class InspectRequestMainExportReqVO { private String uom; @Schema(description = "收货数量") - private Integer receiveQty; + private BigDecimal receiveQty; @Schema(description = "样品数量") - private Integer sampleQty; + private BigDecimal sampleQty; @Schema(description = "货主代码") private String ownerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainPageReqVO.java index 2c122510..1bcbd251 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainPageReqVO.java @@ -1,10 +1,13 @@ package com.win.module.wms.controller.inspectRequest.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import com.win.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; import java.time.LocalDateTime; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -92,10 +95,10 @@ public class InspectRequestMainPageReqVO extends PageParam { private String uom; @Schema(description = "收货数量") - private Integer receiveQty; + private BigDecimal receiveQty; @Schema(description = "样品数量") - private Integer sampleQty; + private BigDecimal sampleQty; @Schema(description = "货主代码") private String ownerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobDetailBaseVO.java index 28c2ae56..119d1625 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobDetailBaseVO.java @@ -116,4 +116,10 @@ public class PurchasereceiptJobDetailBaseVO { @Schema(description = "实际数量") private BigDecimal handleQty; + @Schema(description = "到包装号") + private String toPackingNumber; + + @Schema(description = "到际批次") + private String toBatch; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestMainDO.java index db28ec8a..e8aebf06 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestMainDO.java @@ -1,13 +1,13 @@ package com.win.module.wms.dal.dataobject.inspectRequest; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; + +import java.math.BigDecimal; import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.win.framework.mybatis.core.dataobject.BaseDO; /** * 检验申请主 DO @@ -143,11 +143,11 @@ public class InspectRequestMainDO extends BaseDO { /** * 收货数量 */ - private Integer receiveQty; + private BigDecimal receiveQty; /** * 样品数量 */ - private Integer sampleQty; + private BigDecimal sampleQty; /** * 货主代码 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java index ca6c8137..da783e16 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java @@ -93,7 +93,7 @@ public class RequestStatusState { } /** - * 审批 + * 处理 * @return */ public boolean handle() { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java index f958ae99..58f322dc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java @@ -1,12 +1,15 @@ package com.win.module.wms.service.inspectRequest; -import java.util.*; -import javax.validation.*; - import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.inspectRequest.vo.*; import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; -import com.win.framework.common.pojo.PageResult; + +import javax.validation.Valid; +import java.math.BigDecimal; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; /** * 检验申请主 Service 接口 @@ -84,5 +87,21 @@ public interface InspectRequestMainService { * @param updatePart 是否支持更新 * @return */ - public List importInspectRequestList(List datas, Integer mode, boolean updatePart); + List importInspectRequestList(List datas, Integer mode, boolean updatePart); + + /** + * 获取规则 + * @param supplierCode + * @param itemCode + * @return + */ + HashMap selectRule(String supplierCode, String itemCode); + + /** + * 查询检验物品数量 + * @param sampleQty + * @param ruleAll + * @return + */ + BigDecimal selectInspectType(BigDecimal sampleQty, HashMap ruleAll); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java index 5bcebbf2..304ba5ee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java @@ -39,17 +39,19 @@ import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; -import javax.validation.Validator; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.validation.Validator; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.*; +import static com.win.module.wms.enums.ErrorCodeConstants.INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.INSPECT_REQUEST_MAIN_NOT_EXISTS; /** * 检验申请主 Service 实现类 @@ -84,13 +86,17 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService private RequestsettingService requestsettingService; @Resource private TrendsApi trendsApi; + @Override + @Transactional public Long createInspectRequestMain(InspectRequestMainCreateReqVO createReqVO) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); - InspectRequestMainDO inspectRequestMainDO = validatorToCreate(createReqVO, businesstypeDO); + InspectRequestMainDO inspectRequestMainDO = this.validatorCreate(createReqVO, businesstypeDO, requestsettingDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_REQUEST.getCode()); + inspectRequestMainDO.setNumber(number); //调用自动执行方法 - if(RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { } trendsApi.createTrends(requestsettingDO.getId(), "InspectRequest", "增加了到货校验申请", TrendsTypeEnum.CREATE); @@ -98,20 +104,22 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService } @Override + @Transactional public void updateInspectRequestMain(InspectRequestMainUpdateReqVO updateReqVO) { - RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); // 校验存在 validateInspectRequestMainExists(updateReqVO.getId()); // 更新主表 - InspectRequestMainDO inspectRequestMainDO = validatorToUpdate(updateReqVO, businesstypeDO); - if(RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { + InspectRequestMainDO inspectRequestMainDO = validatorUpdate(updateReqVO, businesstypeDO, requestsettingDO); + if (RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { } trendsApi.createTrends(requestsettingDO.getId(), "InspectRequest", "增加了到货校验申请", TrendsTypeEnum.CREATE); } @Override + @Transactional public void deleteInspectRequestMain(Long id) { // 校验存在 validateInspectRequestMainExists(id); @@ -139,196 +147,200 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService public PageResult getInspectRequestMainPage(InspectRequestMainPageReqVO pageReqVO) { return inspectRequestMainMapper.selectPage(pageReqVO); } + @Override public PageResult getInspectRequestMainSenior(CustomConditions conditions) { return inspectRequestMainMapper.selectSenior(conditions); } + @Override public List getInspectRequestMainList(InspectRequestMainExportReqVO exportReqVO) { return inspectRequestMainMapper.selectList(exportReqVO); } + @Override + @Transactional + public List importInspectRequestList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + //主表校验方法 + InspectRequestMainDO mainDO = InspectRequestMainConvert.INSTANCE.convert(createReqVO); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); + String messageMain = this.validatorInspectRequestMainImport(mainDO, businesstypeDO); + List subList = createReqVO.getSubList(); + List subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); + for (InspectRequestDetailDO detailDO : subDOList) { + String messageDetail = this.validatorInspectRequestDetailImport(detailDO, mainDO, businesstypeDO); + InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = InspectRequestDetailConvert.INSTANCE.convert1(detailDO); + InspectRequestImportErrorVO importVO = InspectRequestDetailConvert.INSTANCE.convert(createReqVO, inspectRequestDetailCreateReqVO); + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } + } + mainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + if (errorList.isEmpty()) { + InspectRequestMainDO existInspectRequestMainDO = inspectRequestMainMapper.selectPurchaseReceiptNumber(createReqVO.getPurchaseReceiptRecordNumber()); + if (existInspectRequestMainDO == null && mode != 3) { + String number = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_REQUEST.getCode()); + mainDO.setNumber(number); + inspectRequestMainMapper.insert(mainDO); + for(InspectRequestDetailDO inspectRequestDetailDO : subDOList) { + inspectRequestDetailDO.setMasterId(mainDO.getId()); + } + inspectRequestDetailMapper.insertBatch(subDOList); + } else if (existInspectRequestMainDO != null && mode != 2) { + inspectRequestMainMapper.updateById(mainDO); + inspectRequestDetailMapper.updateBatch(subDOList); + } + } + }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + //判断导入单位是否正确 - private void ifUomSuccess(String itemUom,String uom) { + private void ifUomSuccess(String itemUom, String uom) { DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(uom); - if(dictDataRespDTO != null){ - if(!itemUom.equals(dictDataRespDTO.getLabel())){ - throw new UtilException("提示单位"+ uom + "错误,应该是" + itemUom); + if (dictDataRespDTO != null) { + if (!itemUom.equals(dictDataRespDTO.getLabel())) { + throw new UtilException("提示单位" + uom + "错误,应该是" + itemUom); } } } + //查询检验类型 - private Integer selectInspectType(Integer sampleQty, HashMap ruleAll) { + @Override + public BigDecimal selectInspectType(BigDecimal sampleQty, HashMap ruleAll) { String inspectType = ruleAll.get("InspectType"); - if("EXEMPT".equals(inspectType)){ - return 0; - } else if ("FULL".equals(inspectType)) { + if ("FULL".equals(inspectType)) { return sampleQty; - }else if("SAMPLING".equals(inspectType)){ + } else if ("SAMPLING".equals(inspectType)) { return selectSampleMethod(ruleAll, sampleQty); - }else { - return 0; + } else { + return BigDecimal.ZERO; } } + //查询抽检方式 计算抽检数量并返回 - private Integer selectSampleMethod(HashMap ruleAll,Integer sampleQty) { + private BigDecimal selectSampleMethod(HashMap ruleAll, BigDecimal sampleQty) { String sampleMethod = ruleAll.get("SampleMethod"); JSONArray aplList = JSONUtil.parseArray(ruleAll.get("AplList")); //获取最大校验规则范围 - Integer maxFloorQty = 0; - Integer maxCeilingQty = 0; - Integer maxSampleValue = 0; - Integer result = 0; + BigDecimal maxFloorQty = BigDecimal.ZERO; + BigDecimal maxCeilingQty = BigDecimal.ZERO; + BigDecimal maxSampleValue = BigDecimal.ZERO; + BigDecimal result = BigDecimal.ZERO; for (Object o : aplList) { JSONObject parse = JSONUtil.parseObj(o); - Integer floorQty = Integer.valueOf(parse.get("FloorQty").toString()); - Integer ceilingQty = Integer.valueOf(parse.get("CeilingQty").toString()); - Integer sampleValue = Integer.valueOf(parse.get("SampleValue").toString()); - if (maxFloorQty < floorQty){ + BigDecimal floorQty = new BigDecimal(String.valueOf(parse.get("FloorQty"))); + BigDecimal ceilingQty = new BigDecimal(String.valueOf(parse.get("CeilingQty"))); + BigDecimal sampleValue = new BigDecimal(String.valueOf(parse.get("SampleValue"))); + if (maxFloorQty.compareTo(floorQty) < 0) { maxFloorQty = floorQty; } - if (maxCeilingQty < ceilingQty){ + if (maxCeilingQty.compareTo(ceilingQty) < 0) { maxCeilingQty = ceilingQty; } - if (maxSampleValue < sampleValue){ + if (maxSampleValue.compareTo(sampleValue) < 0) { maxSampleValue = sampleValue; } //根据校验规则计算出抽样数量 - if(sampleQty != null && sampleQty != 0){ - if(floorQty <= sampleQty && sampleQty <= ceilingQty){ - if("QTY".equals(sampleMethod)){ + if (sampleQty != null && sampleQty.compareTo(BigDecimal.ZERO) != 0) { + if(floorQty.compareTo(sampleQty) <= 0 && sampleQty.compareTo(ceilingQty) <= 0) { + if ("QTY".equals(sampleMethod)) { result = sampleValue; - }else if ("PERCENT".equals(sampleMethod)) { - double doubleSampleQty = sampleQty * (sampleValue * 0.01); - result = (int) Math.round(doubleSampleQty); + } else if ("PERCENT".equals(sampleMethod)) { + result = sampleQty.multiply(sampleValue).multiply(new BigDecimal("0.01")); } } - }else { + } else { throw new UtilException("当前到货数量为空,不能进行校验"); } } - if (maxCeilingQty < sampleQty) { + if (maxCeilingQty.compareTo(sampleQty) < 0) { throw new UtilException("当前到货数量已超出校验规则范围"); - }else { + } else { return result; } } //获取策略里的参数进行字段对应 - private HashMap selectRule(String supplierCode,String itemCode){ - RuleRespVO inspect = ruleService.inspect(supplierCode,itemCode ); - if(inspect == null){ + public HashMap selectRule(String supplierCode, String itemCode) { + RuleRespVO inspect = ruleService.inspect(supplierCode, itemCode); + if (inspect == null) { throw new UtilException("未找到该策略"); } JSONArray configuration = JSONUtil.parseArray(inspect.getConfiguration()); HashMap mapRule = new HashMap<>(); for (Object o : configuration) { JSONObject entries = JSONUtil.parseObj(o); - mapRule.put(entries.get("ParamCode").toString(),entries.get("Value").toString()); + mapRule.put(entries.get("ParamCode").toString(), entries.get("Value").toString()); } String aqlList = mapRule.get("AqlList"); - if(aqlList !=null){ + if (aqlList != null) { JSONArray objects = JSONUtil.parseArray(aqlList); for (int i = 0; i < objects.size(); i++) { JSONObject entries = JSONUtil.parseObj(objects.getObj(i)); - mapRule.put("FloorQty" + (i+1),entries.get("FloorQty").toString()); - mapRule.put("CeilingQty" + (i+1),entries.get("CeilingQty").toString()); - mapRule.put("SampleValue" + (i+1),entries.get("SampleValue").toString()); + mapRule.put("FloorQty" + (i + 1), entries.get("FloorQty").toString()); + mapRule.put("CeilingQty" + (i + 1), entries.get("CeilingQty").toString()); + mapRule.put("SampleValue" + (i + 1), entries.get("SampleValue").toString()); } } return mapRule; } - private PurchasereceiptRecordDetailDO validatorPurchasereceiptExist(String purchaseReceiptRecordNumber, String poNumber, String poLine, String itemCode){ + + private PurchasereceiptRecordDetailDO validatorPurchasereceiptExist(String purchaseReceiptRecordNumber, String poNumber, String poLine, String itemCode) { return purchasereceiptRecordMainService.selectPurchasereceiptExist(poNumber, null, purchaseReceiptRecordNumber, poLine, itemCode); } - private void validatorRule(InspectRequestMainDO mainDO){ + + private void validatorRule(InspectRequestMainDO mainDO) { HashMap rule = selectRule(null, mainDO.getItemCode()); - selectInspectType(mainDO.getReceiveQty(),rule); + mainDO.setSampleQty(selectInspectType(mainDO.getReceiveQty(), rule)); } - private ItembasicDO validatorItembasic(String itemCode){ + + private ItembasicDO validatorItembasic(String itemCode) { return itembasicService.selectItembasic(itemCode); } - private void validatorLocation(String fromLocationCode){ + + private void validatorLocation(String fromLocationCode) { locationService.selectLocation(fromLocationCode); } - private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO){ + + private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) { jobUtils.ifInType(itemType, businesstypeDO); } - private void validatorIfOutInventoryStatuses(String inventoryStatus,BusinesstypeDO businesstypeDO){ + + private void validatorIfOutInventoryStatuses(String inventoryStatus, BusinesstypeDO businesstypeDO) { jobUtils.ifOutInventoryStatuses(inventoryStatus, businesstypeDO); } - private void validatorIfInFromLocationType(String fromLocationCode,BusinesstypeDO businesstypeDO){ + + private void validatorIfInFromLocationType(String fromLocationCode, BusinesstypeDO businesstypeDO) { jobUtils.ifInFromLocationType(fromLocationCode, businesstypeDO); } - private void validatorLlocationReturnManagementAccuracy(String itemCode,String packingNumber,String batch,String fromLocationCode,String inventoryStatu){ - ArrayList inventoryStatus = new ArrayList(); + + private void validatorLocationReturnManagementAccuracy(String itemCode, String packingNumber, String batch, String fromLocationCode, String inventoryStatu) { + ArrayList inventoryStatus = new ArrayList<>(); inventoryStatus.add(inventoryStatu); jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber, batch, fromLocationCode, inventoryStatus); - } - @Override - @Transactional - public List importInspectRequestList(List datas, Integer mode, boolean updatePart) { - if (CollUtil.isEmpty(datas)) { - throw exception(INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY); - } - List errorList = new ArrayList<>(); - datas.forEach(createReqVO -> { - String messageMain = ""; - //主表校验方法 - List subList = createReqVO.getSubList(); - List subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); - for (InspectRequestDetailDO detailDO : subDOList) { - String messageDetail = ""; - try { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); - createReqVO.setBusinessType(businesstypeDO.getCode()); - createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); - createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - - InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = InspectRequestDetailConvert.INSTANCE.convert1(detailDO); - InspectRequestImportErrorVO importVO = InspectRequestDetailConvert.INSTANCE.convert(createReqVO, inspectRequestDetailCreateReqVO); - if(!messageMain.equals("") || !messageDetail.equals("")){ - importVO.setImportStatus("失败"); - messageMain = messageMain + messageDetail; - importVO.setImportRemark(messageMain.substring(0,messageMain.length()-1)); - errorList.add(importVO); - }else { - detailDO.setMasterId(createReqVO.getId()); - } - } - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - - InspectRequestMainDO createobj = InspectRequestMainConvert.INSTANCE.convert(createReqVO); - if(errorList.isEmpty()){ - InspectRequestMainDO existInspectRequestMainDO = inspectRequestMainMapper.selectPurchaseReceiptNumber(createReqVO.getPurchaseReceiptRecordNumber()); - if(existInspectRequestMainDO == null && mode != 3){ - inspectRequestMainMapper.insert(createobj); - inspectRequestDetailMapper.insertBatch(subDOList); - }else if(existInspectRequestMainDO != null && mode != 2){ - inspectRequestMainMapper.updateById(createobj); - inspectRequestDetailMapper.updateBatch(subDOList); - } - } - }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - return errorList; - } // 新增校验 - private InspectRequestMainDO validatorToCreate(InspectRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO) { - InspectRequestMainDO mainDo = validatorMainMethod(createReqVO,businesstypeDO); + private InspectRequestMainDO validatorCreate(InspectRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { + InspectRequestMainDO mainDo = validatorMainMethod(createReqVO, businesstypeDO, requestsettingDO); //子表校验 List subList = createReqVO.getSubList(); List subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); for (InspectRequestDetailDO detailDO : subDOList) { - validatorDetailMethod(detailDO,mainDo,businesstypeDO); + validatorDetailMethod(detailDO, mainDo, businesstypeDO); } String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); mainDo.setNumber(number); @@ -339,37 +351,37 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService } //修改校验 - private InspectRequestMainDO validatorToUpdate(InspectRequestMainUpdateReqVO updateReqVO, BusinesstypeDO businesstypeDO) { - InspectRequestMainDO mainDo = validatorMainMethod(updateReqVO,businesstypeDO); + private InspectRequestMainDO validatorUpdate(InspectRequestMainUpdateReqVO updateReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { + InspectRequestMainDO mainDo = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); //子表校验 List subList = updateReqVO.getSubList(); List subDOList = InspectRequestDetailConvert.INSTANCE.convertList05(subList); for (InspectRequestDetailDO detailDO : subDOList) { - validatorDetailMethod(detailDO,mainDo,businesstypeDO); + validatorDetailMethod(detailDO, mainDo, businesstypeDO); } inspectRequestMainMapper.updateById(mainDo); inspectRequestDetailMapper.updateBatch(subDOList); return mainDo; } + //校验主表公共方法(适用于新增/修改) - private InspectRequestMainDO validatorMainMethod(InspectRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO){ + private InspectRequestMainDO validatorMainMethod(InspectRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { InspectRequestMainDO mainDo = InspectRequestMainConvert.INSTANCE.convert(baseVO); PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = validatorPurchasereceiptExist(mainDo.getPurchaseReceiptRecordNumber(), mainDo.getPoNumber(), mainDo.getPoLine(), mainDo.getItemCode()); - mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty().intValue()); + mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty()); validatorRule(mainDo); - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); return mainDo; } + //校验子表公共方法(适用于新增/修改) - private void validatorDetailMethod(InspectRequestDetailDO detailDo,InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + private void validatorDetailMethod(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); detailDo.setItemDesc1(itembasicDO.getDesc1()); detailDo.setItemDesc2(itembasicDO.getDesc2()); @@ -380,7 +392,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService validatorLocation(detailDo.getFromLocationCode()); validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); validatorIfInFromLocationType(detailDo.getFromLocationCode(), businesstypeDO); - validatorLlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); + validatorLocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); } /** @@ -389,24 +401,22 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService * @param mainDo * @return */ - private String validatorInspectRequestMainImport(InspectRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + private String validatorInspectRequestMainImport(InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { StringBuilder message = new StringBuilder(); try { PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = validatorPurchasereceiptExist(mainDo.getPurchaseReceiptRecordNumber(), mainDo.getPoNumber(), mainDo.getPoLine(), mainDo.getItemCode()); - mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty().intValue()); - }catch (Exception ex) { + mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty()); + } catch (Exception ex) { message.append(ex.getMessage()).append(","); } try { validatorRule(mainDo); - }catch (Exception ex) { + } catch (Exception ex) { message.append(ex.getMessage()).append(","); } - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); if (businesstypeDO == null) { message.append("根据业务类型设置未查找到采购退货申请的相关业务类型"); - } - else { + } else { mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); @@ -414,8 +424,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); if (requestsettingDO == null) { message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); - } - else { + } else { mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); @@ -435,24 +444,25 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService * @param detailDo * @return */ - private String validatorInspectRequestDetailImport(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + private String validatorInspectRequestDetailImport(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { StringBuilder message = new StringBuilder(); + ItembasicDO itembasicDO = null; try { - ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + itembasicDO = validatorItembasic(detailDo.getItemCode()); detailDo.setItemDesc1(itembasicDO.getDesc1()); detailDo.setItemDesc2(itembasicDO.getDesc2()); detailDo.setItemName(itembasicDO.getName()); detailDo.setProjectCode(itembasicDO.getProject()); - try { - this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); - } catch (Exception ex) { - message.append(ex.getMessage()).append(","); - } - try{ - validatorIfInType(itembasicDO.getType(), businesstypeDO); - }catch (Exception ex) { - message.append(ex.getMessage()).append(","); - } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatorIfInType(itembasicDO.getType(), businesstypeDO); } catch (Exception ex) { message.append(ex.getMessage()).append(","); } @@ -461,18 +471,18 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService } catch (Exception ex) { message.append(ex.getMessage()).append(","); } - try{ + try { validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); - }catch (Exception ex) { + } catch (Exception ex) { message.append(ex.getMessage()).append(","); } - try{ + try { validatorIfInFromLocationType(detailDo.getFromLocationCode(), businesstypeDO); - }catch (Exception ex) { + } catch (Exception ex) { message.append(ex.getMessage()).append(","); } try { - validatorLlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); + validatorLocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); } catch (Exception ex) { message.append(ex.getMessage()).append(","); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java index 49655431..bc157e4e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java @@ -1,5 +1,7 @@ package com.win.module.wms.service.purchasereceiptJob; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; @@ -10,12 +12,16 @@ import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailCreateReqVO; +import com.win.module.wms.controller.inspectRequest.vo.InspectRequestMainCreateReqVO; import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailUpdateReqVO; import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainExportReqVO; import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainPageReqVO; import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainUpdateReqVO; +import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.documentSwitch.SwitchDO; import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO; import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; @@ -32,6 +38,9 @@ import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptReques import com.win.module.wms.enums.job.JobStatusEnum; import com.win.module.wms.enums.job.JobStatusState; import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.documentSwitch.SwitchService; +import com.win.module.wms.service.inspectRequest.InspectRequestMainService; +import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.service.supplierdeliverRecord.SupplierdeliverRecordMainService; import com.win.module.wms.service.transaction.TransactionService; import com.win.module.wms.util.JobUtils; @@ -81,6 +90,12 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain private SerialNumberApi serialNumberApi; @Resource private JobUtils jobUtils; + @Resource + private SwitchService switchService; + @Resource + private InspectRequestMainService inspectRequestMainService; + @Resource + private RuleService ruleService; @Override public PageResult getPurchasereceiptJobMainSenior(CustomConditions conditions) { @@ -216,12 +231,14 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain //库存事务 List transactionCreateReqVOList = new ArrayList<>(); List purchasereceiptJobDetailUpdateReqVOList = purchasereceiptJobMainUpdateReqVO.getSubList(); + List purchasereceiptRecordDetailDOList = new ArrayList<>(); + List purchaseshortageDetailDOList = new ArrayList<>(); for(PurchasereceiptJobDetailDO purchasereceiptJobDetailDO : subList) { boolean isExists = false; + PurchasereceiptJobDetailUpdateReqVO purchasereceiptJobDetailUpdateReqVOTemp = null; for(PurchasereceiptJobDetailUpdateReqVO purchasereceiptJobDetailUpdateReqVO : purchasereceiptJobDetailUpdateReqVOList) { if(purchasereceiptJobDetailDO.getId().equals(purchasereceiptJobDetailUpdateReqVO.getId())) { - //实际收货数量 - purchasereceiptJobDetailUpdateReqVO.setQty(purchasereceiptJobDetailUpdateReqVO.getHandleQty()); + purchasereceiptJobDetailUpdateReqVOTemp = purchasereceiptJobDetailUpdateReqVO; isExists = true; break; } @@ -232,12 +249,17 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain purchasereceiptRecordDetailDO.setMasterId(purchasereceiptRecordMainDO.getId()); purchasereceiptRecordDetailDO.setNumber(number); purchasereceiptRecordDetailDO.setJobDetailId(String.valueOf(purchasereceiptJobDetailDO.getId())); + purchasereceiptRecordDetailDO.setFromBatch(purchasereceiptJobDetailDO.getBatch()); + purchasereceiptRecordDetailDO.setToBatch(purchasereceiptJobDetailUpdateReqVOTemp.getToBatch()); + purchasereceiptRecordDetailDO.setFromPackingNumber(purchasereceiptJobDetailDO.getPackingNumber()); + purchasereceiptRecordDetailDO.setToPackingNumber(purchasereceiptJobDetailUpdateReqVOTemp.getToPackingNumber()); + purchasereceiptRecordDetailDO.setQty(purchasereceiptJobDetailUpdateReqVOTemp.getHandleQty()); purchasereceiptRecordDetailDO.setId(null); purchasereceiptRecordDetailDO.setCreator(null); purchasereceiptRecordDetailDO.setCreateTime(null); purchasereceiptRecordDetailDO.setUpdater(null); purchasereceiptRecordDetailDO.setUpdateTime(null); - purchasereceiptRecordDetailMapper.insert(purchasereceiptRecordDetailDO); + purchasereceiptRecordDetailDOList.add(purchasereceiptRecordDetailDO); //添加库存事务list TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); BeanUtils.copyProperties(purchasereceiptRecordDetailDO, transactionCreateReqVO); @@ -262,15 +284,22 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain purchaseshortageDetailDO.setCreateTime(null); purchaseshortageDetailDO.setUpdater(null); purchaseshortageDetailDO.setUpdateTime(null); - purchaseshortageDetailMapper.insert(purchaseshortageDetailDO); + purchaseshortageDetailDOList.add(purchaseshortageDetailDO); } } + if(!purchasereceiptRecordDetailDOList.isEmpty()) { + purchasereceiptRecordDetailMapper.insertBatch(purchasereceiptRecordDetailDOList); + } + if(!purchaseshortageDetailDOList.isEmpty()) { + purchaseshortageDetailMapper.insertBatch(purchaseshortageDetailDOList); + } List typeList = new ArrayList<>(); typeList.add(JobStatusEnum.PENDING.getCode()); typeList.add(JobStatusEnum.PROCESSING.getCode()); Long count = purchasereceiptJobMainMapper.selectListCount(typeList, purchasereceiptJobMainDO.getRequestNumber()); PurchasereceiptRequestMainDO purchasereceiptRequestMainDO = purchasereceiptRequestMainMapper.selectByNumber(purchasereceiptJobMainDO.getRequestNumber()); - if(count == 0) {//申请单下所有任务全部完成 + //申请单下所有任务全部完成 + if(count == 0) { purchasereceiptRequestMainDO.setStatus(RequestStatusEnum.COMPLETED.getCode()); purchasereceiptRequestMainMapper.updateById(purchasereceiptRequestMainDO); } else if(purchasereceiptRequestMainDO.getStatus().equals(RequestStatusEnum.HANDLING.getCode())) {//部分完成 @@ -278,7 +307,63 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain purchasereceiptRequestMainMapper.updateById(purchasereceiptRequestMainDO); } //创建拣货申请 - + SwitchDO switchDO = switchService.selectSwitchExist("CreateInspectRequestAfterPurchaseReceiptRecordCreated"); + //需要增加到货检验申请 + if(switchDO.getEffectiveSetValue().equals("TRUE")) { + RuleRespVO ruleRespVO = ruleService.inspect(purchasereceiptRecordMainDO.getSupplierCode(), null); + JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); + if(!"EXAMPT".equals(String.valueOf(jsonObject.get("InspectType")))) { + //按零件号和批次分组 + Map> listMap = new HashMap<>(); + for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO : purchasereceiptRecordDetailDOList) { + String key = purchasereceiptRecordDetailDO.getItemCode() + "_" + purchasereceiptRecordDetailDO.getFromBatch(); + List list = listMap.get(key); + if(list == null) { + list = new ArrayList<>(); + } + list.add(purchasereceiptRecordDetailDO); + listMap.put(key, list); + } + //组装到货检验数据 + for(String mapKey : listMap.keySet()) { + List purchasereceiptRecordDetailDOList1 = listMap.get(mapKey); + //创建主表信息 + PurchasereceiptRecordDetailDO recordDetailDO = purchasereceiptRecordDetailDOList1.get(0); + InspectRequestMainCreateReqVO inspectRequestMainCreateReqVO = new InspectRequestMainCreateReqVO(); + String inspectRecordNumber = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_RECORD.getCode()); + inspectRequestMainCreateReqVO.setNumber(inspectRecordNumber); + inspectRequestMainCreateReqVO.setPurchaseReceiptRecordNumber(number); + inspectRequestMainCreateReqVO.setSupplierCode(purchasereceiptRecordMainDO.getSupplierCode()); + inspectRequestMainCreateReqVO.setItemCode(recordDetailDO.getItemCode()); + inspectRequestMainCreateReqVO.setBatch(recordDetailDO.getFromBatch()); + inspectRequestMainCreateReqVO.setPoNumber(recordDetailDO.getPoNumber()); + inspectRequestMainCreateReqVO.setPoLine(recordDetailDO.getPoLine()); + inspectRequestMainCreateReqVO.setUom(recordDetailDO.getUom()); + inspectRequestMainCreateReqVO.setReceiveQty(recordDetailDO.getQty()); + List inspectRequestDetailCreateReqVOList = new ArrayList<>(); + //创建子表信息 + for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO : purchasereceiptRecordDetailDOList1) { + InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = new InspectRequestDetailCreateReqVO(); + inspectRequestDetailCreateReqVO.setPackingNumber(purchasereceiptRecordDetailDO.getFromPackingNumber()); + inspectRequestDetailCreateReqVO.setContainerNumber(purchasereceiptRecordDetailDO.getFromContainerNumber()); + inspectRequestDetailCreateReqVO.setInventoryStatus(purchasereceiptRecordDetailDO.getInventoryStatus()); + inspectRequestDetailCreateReqVO.setFromLocationCode(purchasereceiptRecordDetailDO.getFromLocationCode()); + inspectRequestDetailCreateReqVO.setItemCode(purchasereceiptRecordDetailDO.getItemCode()); + inspectRequestDetailCreateReqVO.setItemName(purchasereceiptRecordDetailDO.getItemName()); + inspectRequestDetailCreateReqVO.setItemDesc1(purchasereceiptRecordDetailDO.getItemDesc1()); + inspectRequestDetailCreateReqVO.setItemDesc2(purchasereceiptRecordDetailDO.getItemDesc2()); + inspectRequestDetailCreateReqVO.setProjectCode(purchasereceiptRecordDetailDO.getProjectCode()); + inspectRequestDetailCreateReqVO.setQty(purchasereceiptRecordDetailDO.getQty()); + inspectRequestDetailCreateReqVO.setUom(purchasereceiptRecordDetailDO.getUom()); + //合计数量 + inspectRequestMainCreateReqVO.setReceiveQty(inspectRequestMainCreateReqVO.getReceiveQty().add(inspectRequestDetailCreateReqVO.getQty())); + inspectRequestDetailCreateReqVOList.add(inspectRequestDetailCreateReqVO); + } + inspectRequestMainCreateReqVO.setSubList(inspectRequestDetailCreateReqVOList); + inspectRequestMainService.createInspectRequestMain(inspectRequestMainCreateReqVO); + } + } + } //增加库存事务 transactionService.createTransaction(transactionCreateReqVOList); //变更记录 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java index 1716b4fc..a64be2c3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java @@ -81,6 +81,8 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq @Resource private SupplierService supplierService; @Resource + private SupplieritemService supplieritemService; + @Resource private RuleService ruleService; @Resource private SerialNumberApi serialNumberApi; @@ -97,6 +99,10 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq @Resource private JobUtils jobUtils; @Resource + private ShiftService shiftService; + @Resource + private PurchaseMainService purchaseMainService; + @Resource private PurchasereceiptRecordMainService purchasereceiptRecordMainService; @Resource private PurchasereceiptRecordDetailService purchasereceiptRecordDetailService; @@ -225,7 +231,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq boolean flag = true; for (PurchasereceiptRequestDetailDO detailDO : subDOList) { String messageDetail = this.validatePurchasereceiptRequestDetailImport(mainDO, detailDO); - if(!messageMain.isEmpty() || messageDetail.isEmpty()) { + if(!messageMain.isEmpty() || !messageDetail.isEmpty()) { PurchasereceiptRequestMainImportErrorVO importErrorVO = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); importErrorVO.setImportStatus("失败"); messageMain = messageMain + messageDetail; @@ -405,8 +411,6 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq * @param mainDO 采购收货主 * @param detailDOList 采购收货子 */ - - @Transactional private void generateJob(PurchasereceiptRequestMainDO mainDO, List detailDOList) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); //跳过任务直接生成记录 @@ -484,14 +488,16 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq for(int i = 0; i < purchasereceiptRequestDetailDOList.size(); i++) { //PurchasereceiptJobMainCreateReqVO不包含id、创建人等信息 PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO; - List subList = null; + List subList = new ArrayList<>(); if(i % count == 0) { purchasereceiptJobMainCreateReqVO = PurchasereceiptJobMainConvert.INSTANCE.convert(mainDO); subList = new ArrayList<>(); purchasereceiptJobMainCreateReqVO.setSubList(subList); purchasereceiptJobMainCreateReqVOList.add(purchasereceiptJobMainCreateReqVO); } - PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptRequestDetailDOList.get(i)); + PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO = purchasereceiptRequestDetailDOList.get(i); + PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptRequestDetailDO); + purchasereceiptJobDetailCreateReqVO.setToLocationCode(purchasereceiptRequestDetailDO.getDefaultToLocationCode()); subList.add(purchasereceiptJobDetailCreateReqVO); } } @@ -505,13 +511,15 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptJob"); purchasereceiptJobMainDO.setBusinessType(businesstypeDO.getCode()); purchasereceiptJobMainMapper.insert(purchasereceiptJobMainDO); - trendsApi.createTrends(purchasereceiptJobMainDO.getId(), "purchasereceiptJob", "采购收货申请生成采购收货任务", TrendsTypeEnum.CREATE); + List purchasereceiptJobDetailDOList = new ArrayList<>(); for(PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO : purchasereceiptJobMainCreateReqVO.getSubList()) { PurchasereceiptJobDetailDO purchasereceiptJobDetailDO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptJobDetailCreateReqVO); purchasereceiptJobDetailDO.setNumber(number); purchasereceiptJobDetailDO.setMasterId(purchasereceiptJobMainDO.getId()); - purchasereceiptJobDetailMapper.insert(purchasereceiptJobDetailDO); + purchasereceiptJobDetailDOList.add(purchasereceiptJobDetailDO); } + purchasereceiptJobDetailMapper.insertBatch(purchasereceiptJobDetailDOList); + trendsApi.createTrends(purchasereceiptJobMainDO.getId(), "purchasereceiptJob", "采购收货申请生成采购收货任务", TrendsTypeEnum.CREATE); } } @@ -566,8 +574,8 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq } catch (Exception e) { message.append(e.getMessage()).append(","); } - if(!itembasicDO.getUom().equals(itembasicDO.getUom())) { - message.append("计量单位【").append(itembasicDO.getUom()).append("】错误,应该是【").append(itembasicDO.getUom()).append("】").append(","); + if(!detailDo.getUom().equals(itembasicDO.getUom())) { + message.append("计量单位【").append(detailDo.getUom()).append("】错误,应该是【").append(itembasicDO.getUom()).append("】").append(","); } try { this.validateItemPacking(detailDo);