From 716b09407b4d8f2ccedab87f7f728edc7884a9f4 Mon Sep 17 00:00:00 2001 From: yejiaxing <591141169@qq.com> Date: Mon, 13 Nov 2023 16:20:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E8=B4=A7=E8=AE=A1=E5=88=92=20=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/DeliverPlanMainUpdateReqVO.java | 10 +- .../deliverPlan/DeliverPlanDetailConvert.java | 2 + .../deliverPlan/DeliverPlanMainConvert.java | 25 +- .../DeliverPlanMainServiceImpl.java | 289 +++++++++++------- .../IssueRequestMainServiceImpl.java | 223 +++++++------- 5 files changed, 314 insertions(+), 235 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainUpdateReqVO.java index 481fd0c5..b68d3db8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainUpdateReqVO.java @@ -1,12 +1,20 @@ package com.win.module.wms.controller.deliverPlan.vo; +import com.win.framework.excel.core.annotations.SubObject; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; @Schema(description = "管理后台 - 发货计划主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class DeliverPlanMainUpdateReqVO extends DeliverPlanMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java index 54adbf99..5b698388 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanDetailConvert.java @@ -35,6 +35,8 @@ public interface DeliverPlanDetailConvert { List convertList03(List list); + List convertList05(List list); + DeliverPlanDetailCreateReqVO convert1(DeliverPlanDetailDO bean); @Mappings({ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanMainConvert.java index 802d735d..c2136b2c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/deliverPlan/DeliverPlanMainConvert.java @@ -1,16 +1,15 @@ package com.win.module.wms.convert.deliverPlan; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainCreateReqVO; -import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainExcelVO; -import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainRespVO; -import com.win.module.wms.controller.deliverPlan.vo.DeliverPlanMainUpdateReqVO; +import com.win.module.wms.controller.deliverPlan.vo.*; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; + +import java.util.List; /** * 发货计划主 Convert @@ -24,6 +23,8 @@ public interface DeliverPlanMainConvert { DeliverPlanMainDO convert(DeliverPlanMainCreateReqVO bean); + DeliverPlanMainDO convert(DeliverPlanMainBaseVO bean); + DeliverPlanMainDO convert(DeliverPlanMainUpdateReqVO bean); DeliverPlanMainRespVO convert(DeliverPlanMainDO bean); @@ -34,4 +35,12 @@ public interface DeliverPlanMainConvert { List convertList02(List list); + DeliverPlanMainCreateReqVO convert1(DeliverPlanMainCreateReqVO createReqVO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + DeliverPlanMainImportErrorVO convert(DeliverPlanMainCreateReqVO mainVo, DeliverPlanDetailDO detailDo); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java index ea6145f8..b34c017c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java @@ -5,6 +5,8 @@ import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.deliverPlan.vo.*; @@ -15,10 +17,12 @@ import com.win.module.wms.dal.dataobject.customer.CustomerDO; import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.sale.SaleDetailDO; import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanDetailMapper; import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.businesstype.BusinesstypeService; import com.win.module.wms.service.customer.CustomerService; import com.win.module.wms.service.deliverJob.DeliverJobMainService; @@ -28,7 +32,6 @@ import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -37,8 +40,7 @@ import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.DELIVER_PLAN_MAIN_NOT_EXISTS; -import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 发货计划主 Service 实现类 @@ -71,25 +73,34 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { private DeliverJobMainService deliverJobMainService; @Resource private SerialNumberApi serialNumberApi; - + @Resource + private TrendsApi trendsApi; @Override public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) { - // 插入 - DeliverPlanMainDO deliverPlanMain = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); - deliverPlanMainMapper.insert(deliverPlanMain); - // 返回 - return deliverPlanMain.getId(); + + RequestsettingDO requestsettingDO = new RequestsettingDO(); + DeliverPlanMainDO deliverPlanMainDO = validatorToCreate(createReqVO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); + return deliverPlanMainDO.getId(); } @Override public void updateDeliverPlanMain(DeliverPlanMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = new RequestsettingDO(); // 校验存在 validateDeliverPlanMainExists(updateReqVO.getId()); - // 更新 - DeliverPlanMainDO updateObj = DeliverPlanMainConvert.INSTANCE.convert(updateReqVO); - deliverPlanMainMapper.updateById(updateObj); + DeliverPlanMainDO deliverPlanMainDO = validatorToUpdate(updateReqVO); + if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); + } @Override @@ -134,125 +145,173 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { @Override public List importDeliverPlanMainList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { + //TODO throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - String messageMain = ""; - //主表的验证 - //校验客户代码 - try { - CustomerDO customerDO = customerService.selectCustomerExist(createReqVO.getCustomerCode()); - if (customerDO == null) { - messageMain += "客户代码" + createReqVO.getCustomerCode() + "无效" + ","; + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + DeliverPlanMainDO mainDo = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validateDeliverPlanMainImport(mainDo, businesstypeDO); + List subList = createReqVO.getSubList(); + List subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (DeliverPlanDetailDO detailDO : subDOList) { + String messageDetail = validateDeliverPlanDetailImport(detailDO, mainDo, businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + DeliverPlanMainImportErrorVO importErrorVO = DeliverPlanMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - } catch (ServiceException ex) { - messageMain += ex.getMessage() + ","; } - //校验业务类型相关属性 - try { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); + //写入数据 + if (flag) { + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest"); if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); + mainDo.setBusinessType(businesstypeDO.getCode()); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); + mainDo.setNumber(number); + deliverPlanMainMapper.insert(mainDo); + for (DeliverPlanDetailDO detailDO : subDOList) { + detailDO.setNumber(mainDo.getNumber()); + detailDO.setMasterId(mainDo.getId()); + detailDO.setCustomerDockCode(null); } -// createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); -// createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes()); -// createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); -// createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes()); - } catch (ServiceException ex) { - messageMain += ex.getMessage() + ","; + deliverPlanDetailMapper.insertBatch(subDOList); } + }); + return errorList; + } - //子表的验证 - List subList = createReqVO.getSubList(); - List subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); - for (DeliverPlanDetailDO purchaseDetailDO : subDOList) { - String messageDetail = ""; - // 校验物品基础信息 - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); - if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { - messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; - } else { -// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); -// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); -// purchaseDetailDO.setItemName(itembasicDO.getName()); - purchaseDetailDO.setProject(itembasicDO.getProject()); - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } + /** + * 主表校验导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validateDeliverPlanMainImport(DeliverPlanMainDO mainDo, BusinesstypeDO businesstypeDO) { + // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String messageMain = ""; + //主表的验证 + //校验客户代码 + try { + CustomerDO customerDO = customerService.selectCustomerExist(mainDo.getCustomerCode()); + if (customerDO == null) { + messageMain += "客户代码" + mainDo.getCustomerCode() + "无效" + ","; + } + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + //校验业务类型相关属性 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); + if (businesstypeDO != null) { + mainDo.setBusinessType(businesstypeDO.getCode()); + } + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + return messageMain; + } - // 校验物品标包信息 - try { - SaleDetailDO saleDetailDO = deliverJobMainService.saleDetailExist(purchaseDetailDO.getSoNumber(), purchaseDetailDO.getSoLine(), purchaseDetailDO.getItemCode()); - if (saleDetailDO != null) { -// createReqVO.setBusinessType(saleDetailDO.getCode()); - } -// jobUtils.ifInToLocationType(from_location_code,saleDetailDO); -// createReqVO.setFromLocationTypes(saleDetailDO.getOutLocationTypes()); -// createReqVO.setToLocationTypes(saleDetailDO.getInLocationTypes()); -// createReqVO.setFromAreaCodes(saleDetailDO.getOutAreaCodes()); -// createReqVO.setToAreaCodes(saleDetailDO.getInAreaCodes()); - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } + /** + * 子表校验导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validateDeliverPlanDetailImport(DeliverPlanDetailDO detailDo, DeliverPlanMainDO mainDo, BusinesstypeDO businesstypeDO) { + String messageDetail = ""; + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + if ( !detailDo.getUom().equals(itembasicDO.getUom())) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验物品标包信息 + try { + SaleDetailDO saleDetailDO = deliverJobMainService.saleDetailExist(detailDo.getSoNumber(), detailDo.getSoLine(), detailDo.getItemCode()); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + return messageDetail; + } - DeliverPlanDetailCreateReqVO purchaseDetailCreateReqVO = DeliverPlanDetailConvert.INSTANCE.convert1(purchaseDetailDO); - DeliverPlanMainImportErrorVO importVO = DeliverPlanDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); - //进行子表的错误统计 - //主表没有错误 写入库里 - if (!messageMain.equals("") || !messageDetail.equals("")) { - importVO.setImportStatus("失败"); - messageMain = messageMain + messageDetail; - importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); - errorList.add(importVO); - } else { - purchaseDetailDO.setNumber(createReqVO.getNumber()); - purchaseDetailDO.setMasterId(createReqVO.getId()); - purchaseDetailDO.setCustomerDockCode(null); - purchaseDetailDO.setNumber(createReqVO.getNumber()); - } - } + //新增方法(主和子) + private DeliverPlanMainDO validatorToCreate(DeliverPlanMainCreateReqVO createReqVO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); + DeliverPlanMainDO deliverPlanMainDO = validateMainMethod(createReqVO,businesstypeDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); + for (DeliverPlanDetailDO DeliverPlanDetailDO : subDOList) { + validateDetailMethod(DeliverPlanDetailDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); + deliverPlanMainDO.setNumber(number); + deliverPlanMainMapper.insert(deliverPlanMainDO); + for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) { + deliverPlanDetailDO.setNumber(deliverPlanMainDO.getNumber()); + deliverPlanDetailDO.setMasterId(deliverPlanMainDO.getId()); + deliverPlanDetailDO.setCustomerDockCode(null); + } + deliverPlanDetailMapper.insertBatch(subDOList); + return deliverPlanMainDO; + } - if (errorList.isEmpty()) { - // 判断如果不存在,在进行插入 - DeliverPlanMainDO existPurchaseclaimRequestMainDO = deliverPlanMainMapper.selectByNumber(createReqVO.getNumber()); - if (existPurchaseclaimRequestMainDO == null && mode != 3) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - createReqVO.setStatus(null); - String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); - createReqVO.setNumber(number); - DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); - deliverPlanMainMapper.insert(createObj); - deliverPlanDetailMapper.insertBatch(subDOList); - } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequestRequest"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - createReqVO.setStatus(null); - String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); - createReqVO.setNumber(number); - DeliverPlanMainDO createObj = DeliverPlanMainConvert.INSTANCE.convert(createReqVO); - deliverPlanMainMapper.updateById(createObj); - deliverPlanDetailMapper.updateBatch(subDOList); - } - } - }); - //错误不为空并非部分更新,手工回滚 - if (!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + //修改方法(主和子) + private DeliverPlanMainDO validatorToUpdate(DeliverPlanMainUpdateReqVO updateReqVO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + DeliverPlanMainDO deliverPlanMainDO = validateMainMethod(updateReqVO,businesstypeDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = DeliverPlanDetailConvert.INSTANCE.convertList05(subList); + for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) { + validateDetailMethod(deliverPlanDetailDO); } - return errorList; + deliverPlanMainMapper.updateById(deliverPlanMainDO); + deliverPlanDetailMapper.updateBatch(subDOList); + return deliverPlanMainDO; } + //校验主表公共方法(适用于新增/修改) + private DeliverPlanMainDO validateMainMethod(DeliverPlanMainBaseVO baseVO, BusinesstypeDO businesstypeDO){ + DeliverPlanMainDO deliverPlanMainDO = DeliverPlanMainConvert.INSTANCE.convert(baseVO); + this.validatorCustomerExist(deliverPlanMainDO.getCustomerCode()); + deliverPlanMainDO.setBusinessType(businesstypeDO.getCode()); + return deliverPlanMainDO; + } + + //校验子表公共方法(适用于新增/修改) + private void validateDetailMethod(DeliverPlanDetailDO deliverPlanDetailDO) { + ItembasicDO itembasicDO = this.validatorItembasic(deliverPlanDetailDO.getItemCode()); + if ( !deliverPlanDetailDO.getUom().equals(itembasicDO.getUom())) { + throw exception(UOM_ERROR, deliverPlanDetailDO.getUom()); + } + this.validatorDetailExist(deliverPlanDetailDO.getSoNumber(), deliverPlanDetailDO.getSoLine(), deliverPlanDetailDO.getItemCode()); + } + + //主表校验客户代码 + private void validatorCustomerExist(String customerCode) { + customerService.selectCustomerExist(customerCode); + } + //子表校验物品基础信息 + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + //子表校验客户代码 + private void validatorDetailExist(String soNumber, String soLine, String itemCode) { + deliverJobMainService.saleDetailExist(soNumber, soLine, itemCode); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java index 7a048721..43af6e44 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.exceptions.UtilException; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.common.pojo.PageResult; import com.win.framework.common.util.validation.ValidationUtils; import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.infra.api.trends.TrendsApi; @@ -14,13 +15,16 @@ import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.issueRequest.vo.*; import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; +import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; 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.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.issueRequest.IssueRequestDetailMapper; +import com.win.module.wms.dal.mysql.issueRequest.IssueRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.itembasic.ItembasicService; @@ -32,21 +36,15 @@ import com.win.module.wms.service.workshop.WorkshopService; import com.win.module.wms.service.workstation.WorkstationService; import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import javax.validation.Validator; - import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import javax.annotation.Resource; +import javax.validation.Validator; import java.time.LocalDateTime; -import java.util.*; - -import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; -import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; -import com.win.module.wms.dal.mysql.issueRequest.IssueRequestMainMapper; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.*; @@ -175,6 +173,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { return request; } + //导入的主方法 @Override @Transactional public List importIssueRequestList(List datas, Integer mode, boolean updatePart) { @@ -217,106 +216,8 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { return errorList; } - private void validatorWorkshop(String workshopCode) { - workshopService.selectWorkshopExist(workshopCode); - } - - private ItembasicDO validatorItembasic(String itemCode) { - return itembasicService.selectItembasic(itemCode); - } - - //接口调用后throw的错误需要进行修改形式 code需要统一一下 - private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) { - jobUtils.ifInType(itemType, businesstypeDO); - } - - private ProductionlineDO validatorProductionLineCode(String productionLineCode) { - return productionlineService.productionLineCodeExist(productionLineCode); - } - - private WorkstationDO validatorWorkstation(String workStationCode, String workshopCode, String productionLineCode) { - return workstationService.selectWorkstationExist(workStationCode, workshopCode, productionLineCode); - } - - private void validatorProductionLineCodeAndpItemCodeExist(String productionLineCode, String itemCode) { - productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode); - } - - //新增校验 - private IssueRequestMainDO validatorToCreate(IssueRequestMainCreateReqVO createReqVO,RequestsettingDO requestsettingDO) { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); - IssueRequestMainDO issueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); - //子表校验 - List subList = createReqVO.getSubList(); - List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); - for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { - validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO); - } - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - issueRequestMainDO.setNumber(number); - issueRequestMainMapper.insert(issueRequestMainDO); - for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { - issueRequestDetailDO.setMasterId(issueRequestMainDO.getId()); - issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber()); - } - issueRequestDetailMapper.insertBatch(subDOList); - return issueRequestMainDO; - } - - //修改校验 - private IssueRequestMainDO validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO,RequestsettingDO requestsettingDO) { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); - IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); - //子表校验 - List subList = updateReqVO.getSubList(); - List subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(subList); - for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { - validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO); - } - issueRequestMainMapper.updateById(issueRequestMainDO); - issueRequestDetailMapper.updateBatch(subDOList); - return issueRequestMainDO; - } - //校验主表公共方法(适用于新增/修改) - private IssueRequestMainDO validateMainMethod(IssueRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ - IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(baseVO); - this.validatorWorkshop(issueRequestMainDO.getWorkshopCode()); - issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - issueRequestMainDO.setRequestTime(LocalDateTime.now()); - requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); - issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); - issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); - issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); - issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); - issueRequestMainDO.setBusinessType(businesstypeDO.getCode()); - issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); - issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); - issueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); - issueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); - return issueRequestMainDO; - } - //校验子表公共方法(适用于新增/修改) - private void validateDetailMethod(IssueRequestDetailDO issueRequestDetailDO,BusinesstypeDO businesstypeDO,IssueRequestMainDO issueRequestMainDO) { - ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode()); - this.validatorIfInType(itembasicDO.getType(), businesstypeDO); - this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom()); - ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode()); - issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode()); - WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode()); - issueRequestDetailDO.setToLocationCode(workstationDO.getRawLocationCode()); - this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode()); - RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null); - if (grounding == null) { - throw exception(555, "未查找到该条上架策略"); - } else { - JSONObject json = JSONUtil.parseObj(grounding); - String locationCode = json.get("LocationCode").toString(); - this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode); - } - } /** - * 校验导入,并赋值一些参数 + * 主表校验导入,并赋值一些参数 * * @param mainDo * @return @@ -358,7 +259,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { } /** - * 校验导入,并赋值一些参数 + * 子表校验导入,并赋值一些参数 * * @param detailDo * @return @@ -416,4 +317,104 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { } return message.toString(); } + + //新增方法(主和子) + private IssueRequestMainDO validatorToCreate(IssueRequestMainCreateReqVO createReqVO,RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + IssueRequestMainDO issueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); + for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { + validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + issueRequestMainDO.setNumber(number); + issueRequestMainMapper.insert(issueRequestMainDO); + for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { + issueRequestDetailDO.setMasterId(issueRequestMainDO.getId()); + issueRequestDetailDO.setNumber(issueRequestMainDO.getNumber()); + } + issueRequestDetailMapper.insertBatch(subDOList); + return issueRequestMainDO; + } + + //修改方法(主和子) + private IssueRequestMainDO validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO,RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(subList); + for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { + validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO); + } + issueRequestMainMapper.updateById(issueRequestMainDO); + issueRequestDetailMapper.updateBatch(subDOList); + return issueRequestMainDO; + } + + //校验主表公共方法(适用于新增/修改) + private IssueRequestMainDO validateMainMethod(IssueRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ + IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(baseVO); + this.validatorWorkshop(issueRequestMainDO.getWorkshopCode()); + issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + issueRequestMainDO.setRequestTime(LocalDateTime.now()); + requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); + issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); + issueRequestMainDO.setBusinessType(businesstypeDO.getCode()); + issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + issueRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + issueRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + return issueRequestMainDO; + } + //校验子表公共方法(适用于新增/修改) + private void validateDetailMethod(IssueRequestDetailDO issueRequestDetailDO,BusinesstypeDO businesstypeDO,IssueRequestMainDO issueRequestMainDO) { + ItembasicDO itembasicDO = validatorItembasic(issueRequestDetailDO.getItemCode()); + this.validatorIfInType(itembasicDO.getType(), businesstypeDO); + this.ifUomSuccess(itembasicDO.getUom(), issueRequestDetailDO.getUom()); + ProductionlineDO productionlineDO = validatorProductionLineCode(issueRequestDetailDO.getProductionLineCode()); + issueRequestDetailDO.setToLocationCode(productionlineDO.getRawLocationCode()); + WorkstationDO workstationDO = validatorWorkstation(issueRequestDetailDO.getWorkStationCode(), issueRequestMainDO.getWorkshopCode(), issueRequestDetailDO.getProductionLineCode()); + issueRequestDetailDO.setToLocationCode(workstationDO.getRawLocationCode()); + this.validatorProductionLineCodeAndpItemCodeExist(issueRequestDetailDO.getProductionLineCode(), issueRequestDetailDO.getItemCode()); + RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, issueRequestDetailDO.getItemCode(), null, null, null, null, null, null); + if (grounding == null) { + throw exception(555, "未查找到该条上架策略"); + } else { + JSONObject json = JSONUtil.parseObj(grounding); + String locationCode = json.get("LocationCode").toString(); + this.ifLocationCodeInRule(issueRequestDetailDO.getItemCode(), issueRequestDetailDO.getToLocationCode(), locationCode); + } + } + + private void validatorWorkshop(String workshopCode) { + workshopService.selectWorkshopExist(workshopCode); + } + + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + + //接口调用后throw的错误需要进行修改形式 code需要统一一下 + private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) { + jobUtils.ifInType(itemType, businesstypeDO); + } + + private ProductionlineDO validatorProductionLineCode(String productionLineCode) { + return productionlineService.productionLineCodeExist(productionLineCode); + } + + private WorkstationDO validatorWorkstation(String workStationCode, String workshopCode, String productionLineCode) { + return workstationService.selectWorkstationExist(workStationCode, workshopCode, productionLineCode); + } + + private void validatorProductionLineCodeAndpItemCodeExist(String productionLineCode, String itemCode) { + productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode); + } }