From a0dedde66216efce4c1cc053d5ce1df26c638e51 Mon Sep 17 00:00:00 2001 From: yejiaxing <591141169@qq.com> Date: Tue, 14 Nov 2023 15:19:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E8=B4=A7=E8=AE=A1=E5=88=92=20=20?= =?UTF-8?q?=E8=A6=81=E8=B4=A7=E9=A2=84=E6=B5=8B=20=20=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=B3=E8=AF=B7=E7=AD=89=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E5=AF=BC=E5=85=A5/=E6=96=B0=E5=A2=9E/=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 2 + .../deliverPlan/vo/DeliverPlanMainBaseVO.java | 11 +- .../vo/DemandforecastingMainUpdateReqVO.java | 11 +- ...InventorychangeRequestMainUpdateReqVO.java | 11 +- .../DemandforecastingDetailConvert.java | 2 + .../DemandforecastingMainConvert.java | 18 +- .../InventorychangeRequestDetailConvert.java | 2 + .../InventorychangeRequestMainConvert.java | 19 +- .../DeliverPlanMainServiceImpl.java | 18 +- .../DemandforecastingMainServiceImpl.java | 291 ++++--- ...InventorychangeRequestMainServiceImpl.java | 731 +++++++++++------- 11 files changed, 673 insertions(+), 443 deletions(-) diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index 56e54c2f..2318bed3 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java @@ -662,6 +662,8 @@ public interface ErrorCodeConstants { ErrorCode SALE_MAIN_NOT_EXISTS = new ErrorCode(1_000_117_000, "销售订单主不存在"); ErrorCode SALE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_117_001, "销售订单子不存在"); //发货计划ErrorCode + //发货计划导入不能为空 + ErrorCode DELIVERPLAN_MAIN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_020_015, "导入发货计划不能为空"); ErrorCode DELIVER_PLAN_MAIN_NOT_EXISTS = new ErrorCode(1_000_118_000, "发货计划主不存在"); ErrorCode DELIVER_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_000_118_001, "发货计划子不存在"); //发货申请ErrorCode diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainBaseVO.java index 64fa2425..7e73d5a6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverPlan/vo/DeliverPlanMainBaseVO.java @@ -1,16 +1,9 @@ package com.win.module.wms.controller.deliverPlan.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 java.time.LocalDateTime; -import javax.validation.constraints.*; +import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; - +import java.time.LocalDateTime; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; /** diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/demandforecasting/vo/DemandforecastingMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/demandforecasting/vo/DemandforecastingMainUpdateReqVO.java index 941c434a..69343af4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/demandforecasting/vo/DemandforecastingMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/demandforecasting/vo/DemandforecastingMainUpdateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.demandforecasting.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 DemandforecastingMainUpdateReqVO extends DemandforecastingMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainUpdateReqVO.java index 7ccb58f5..ffc4e217 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorychangeRequest/vo/InventorychangeRequestMainUpdateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.inventorychangeRequest.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 InventorychangeRequestMainUpdateReqVO extends InventorychangeRequestMainBaseVO { - + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java index 12b216ec..3cd97ab7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingDetailConvert.java @@ -35,6 +35,8 @@ public interface DemandforecastingDetailConvert { List convertList03(List list); + List convertList05(List list); + DemandforecastingDetailCreateReqVO convert1(DemandforecastingDetailDO bean); @Mappings({ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingMainConvert.java index 14340159..2da95267 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/demandforecasting/DemandforecastingMainConvert.java @@ -1,16 +1,15 @@ package com.win.module.wms.convert.demandforecasting; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainCreateReqVO; -import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainExcelVO; -import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainRespVO; -import com.win.module.wms.controller.demandforecasting.vo.DemandforecastingMainUpdateReqVO; +import com.win.module.wms.controller.demandforecasting.vo.*; +import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDetailDO; +import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO; + +import java.util.List; /** * 要货预测主 Convert @@ -24,6 +23,8 @@ public interface DemandforecastingMainConvert { DemandforecastingMainDO convert(DemandforecastingMainCreateReqVO bean); + DemandforecastingMainDO convert(DemandforecastingMainBaseVO bean); + DemandforecastingMainDO convert(DemandforecastingMainUpdateReqVO bean); DemandforecastingMainRespVO convert(DemandforecastingMainDO bean); @@ -34,4 +35,5 @@ public interface DemandforecastingMainConvert { List convertList02(List list); + DemandforecastingImportErrorVO convert(DemandforecastingMainCreateReqVO mainVo, DemandforecastingDetailDO detailDo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java index 7727203b..f590e56c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestDetailConvert.java @@ -35,6 +35,8 @@ public interface InventorychangeRequestDetailConvert { List convertList03(List list); + List convertList05(List list); + InventorychangeRequestDetailCreateReqVO convert1(InventorychangeRequestDetailDO bean); @Mappings({ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java index ab2c849c..795673df 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inventorychangeRequest/InventorychangeRequestMainConvert.java @@ -1,16 +1,13 @@ package com.win.module.wms.convert.inventorychangeRequest; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainCreateReqVO; -import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainExcelVO; -import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainRespVO; -import com.win.module.wms.controller.inventorychangeRequest.vo.InventorychangeRequestMainUpdateReqVO; +import com.win.module.wms.controller.inventorychangeRequest.vo.*; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestDetailDO; +import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.inventorychangeRequest.InventorychangeRequestMainDO; + +import java.util.List; /** * 库存修改申请主 Convert @@ -26,6 +23,8 @@ public interface InventorychangeRequestMainConvert { InventorychangeRequestMainDO convert(InventorychangeRequestMainUpdateReqVO bean); + InventorychangeRequestMainDO convert(InventorychangeRequestMainBaseVO bean); + InventorychangeRequestMainRespVO convert(InventorychangeRequestMainDO bean); List convertList(List list); @@ -34,4 +33,8 @@ public interface InventorychangeRequestMainConvert { List convertList02(List list); + InventorychangeRequestMainImportErrorVO convert(InventorychangeRequestMainCreateReqVO mainVo, InventorychangeRequestDetailDO 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 b34c017c..4301ef10 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 @@ -28,6 +28,7 @@ import com.win.module.wms.service.customer.CustomerService; import com.win.module.wms.service.deliverJob.DeliverJobMainService; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.util.JobUtils; @@ -75,12 +76,13 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { private SerialNumberApi serialNumberApi; @Resource private TrendsApi trendsApi; + @Resource + private RequestsettingService requestsettingService; @Override public Long createDeliverPlanMain(DeliverPlanMainCreateReqVO createReqVO) { - - RequestsettingDO requestsettingDO = new RequestsettingDO(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan"); DeliverPlanMainDO deliverPlanMainDO = validatorToCreate(createReqVO); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) { @@ -92,15 +94,14 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { @Override public void updateDeliverPlanMain(DeliverPlanMainUpdateReqVO updateReqVO) { - RequestsettingDO requestsettingDO = new RequestsettingDO(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan"); // 校验存在 validateDeliverPlanMainExists(updateReqVO.getId()); DeliverPlanMainDO deliverPlanMainDO = validatorToUpdate(updateReqVO); if(RequestStatusEnum.HANDLING.getCode().equals(deliverPlanMainDO.getStatus())) { } - trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); - + trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "修改了发货计划", TrendsTypeEnum.CREATE); } @Override @@ -145,8 +146,7 @@ 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); + throw exception(DELIVERPLAN_MAIN_IMPORT_LIST_IS_EMPTY); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { @@ -255,8 +255,8 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { //子表校验 List subList = createReqVO.getSubList(); List subDOList = DeliverPlanDetailConvert.INSTANCE.convertList03(subList); - for (DeliverPlanDetailDO DeliverPlanDetailDO : subDOList) { - validateDetailMethod(DeliverPlanDetailDO); + for (DeliverPlanDetailDO deliverPlanDetailDO : subDOList) { + validateDetailMethod(deliverPlanDetailDO); } String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); deliverPlanMainDO.setNumber(number); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java index 864cfbc0..f8bd6430 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/demandforecasting/DemandforecastingMainServiceImpl.java @@ -1,11 +1,12 @@ package com.win.module.wms.service.demandforecasting; import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.demandforecasting.vo.*; @@ -16,11 +17,13 @@ import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingDeta import com.win.module.wms.dal.dataobject.demandforecasting.DemandforecastingMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.supplier.SupplierDO; import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; import com.win.module.wms.dal.mysql.demandforecasting.DemandforecastingDetailMapper; import com.win.module.wms.dal.mysql.demandforecasting.DemandforecastingMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.purchase.PurchaseMainService; import com.win.module.wms.service.requestsetting.RequestsettingService; @@ -29,7 +32,6 @@ import com.win.module.wms.service.supplieritem.SupplieritemService; 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 org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -68,24 +70,29 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe private SupplieritemService supplieritemService; @Resource private SerialNumberApi serialNumberApi; - + private TrendsApi trendsApi; @Override public Long createDemandforecastingMain(DemandforecastingMainCreateReqVO createReqVO) { - // 插入 - DemandforecastingMainDO demandforecastingMain = DemandforecastingMainConvert.INSTANCE.convert(createReqVO); - demandforecastingMainMapper.insert(demandforecastingMain); - // 返回 - return demandforecastingMain.getId(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("Demandforecasting"); + DemandforecastingMainDO demandforecastingMainDO = validatorToCreate(createReqVO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) { + } + trendsApi.createTrends(requestsettingDO.getId(), "Demandforecasting", "增加了要货预测", TrendsTypeEnum.CREATE); + return demandforecastingMainDO.getId(); } @Override public void updateDemandforecastingMain(DemandforecastingMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("Demandforecasting"); // 校验存在 validateDemandforecastingMainExists(updateReqVO.getId()); - // 更新 - DemandforecastingMainDO updateObj = DemandforecastingMainConvert.INSTANCE.convert(updateReqVO); - demandforecastingMainMapper.updateById(updateObj); + DemandforecastingMainDO demandforecastingMainDO = validatorToUpdate(updateReqVO); + if(RequestStatusEnum.HANDLING.getCode().equals(demandforecastingMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "Demandforecasting", "修改了要货预测", TrendsTypeEnum.CREATE); } @Override @@ -135,113 +142,173 @@ public class DemandforecastingMainServiceImpl implements DemandforecastingMainSe } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - String messageMain = ""; - //主表校验方法 - if (mode != null) { - //校验供应商基础信息 - try { - SupplierDO supplierDO = supplierService.selectSupplier(createReqVO.getSupplierCode()); - if (supplierDO == null) { - messageMain += "未查找到供应商" + createReqVO.getSupplierCode() + "信息" + ","; - } - } catch (Exception ex) { - messageMain += ex.getMessage() + ","; + + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + DemandforecastingMainDO mainDo = DemandforecastingMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validateDemandforecastingMainImport(mainDo, businesstypeDO); + List subList = createReqVO.getSubList(); + List subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (DemandforecastingDetailDO detailDO : subDOList) { + String messageDetail = validateDemandforecastingDetailImport(detailDO, mainDo, businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + DemandforecastingImportErrorVO importErrorVO = DemandforecastingMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - List subList = createReqVO.getSubList(); - List subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 - for (DemandforecastingDetailDO detailDO : subDOList) { - String messageDetail = ""; - //校验物品基础信息 - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); - if (itembasicDO == null) { - messageDetail += "物品" + detailDO.getItemCode() + "无效" + ","; - } else { - if (!detailDO.getUom().equals(itembasicDO.getUom())) { - messageDetail += "计量单位" + detailDO.getItemCode() + "错误," + "应该是" + itembasicDO.getUom() + ","; - } - } - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - //校验采购订单 - try { - PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDO.getPoNumber(), createReqVO.getSupplierCode(), detailDO.getItemCode(), detailDO.getPoLine()); - if ((purchaseDetailDO.getShippedQty().add(detailDO.getPlanQty())).compareTo(purchaseDetailDO.getOrderQty()) == 1) { - messageDetail += "订单行" + detailDO.getPoLine() + "的已收货数量" + purchaseDetailDO.getReceivedQty() + "+计划数量" + detailDO.getPlanQty() + "大于订单数量" + purchaseDetailDO.getOrderQty() + ","; - } - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - // 校验供应商物品 - try { - SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), detailDO.getItemCode()); - if (supplieritemDO == null) { - messageDetail += "未查找到物品" + detailDO.getItemCode() + "供应商" + createReqVO.getSupplierCode() + "信息" + ","; - } - - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - DemandforecastingDetailCreateReqVO demandforecastingDetailCreateReqVO = DemandforecastingDetailConvert.INSTANCE.convert1(detailDO); - DemandforecastingImportErrorVO importVO = DemandforecastingDetailConvert.INSTANCE.convert(createReqVO, demandforecastingDetailCreateReqVO); - //进行子表的错误统计 - //主表没有错误 写入库里 - if (!messageMain.equals("") || !messageDetail.equals("")) { - importVO.setImportStatus("失败"); - messageMain = messageMain + messageDetail; - importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); - errorList.add(importVO); - } else { - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PREDICTION.getCode()); - createReqVO.setNumber(number); - } + } + //写入数据 + if (flag) { + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction"); + if (businesstypeDO != null) { + mainDo.setBusinessType(businesstypeDO.getCode()); } - if (errorList.isEmpty()) { - // 判断如果不存在,在进行插入 - DemandforecastingMainDO demandforecastingMainDO = demandforecastingMainMapper.selectByNumber(createReqVO.getSupplierCode()); - if (demandforecastingMainDO == null && mode != 3) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO); - //根据版本默认作废之前版本 - QueryWrapper demandforecastingMainDOQueryWrapper = new QueryWrapper<>(); - demandforecastingMainDOQueryWrapper.eq("supplier_code", createReqVO.getSupplierCode()); - List doList = demandforecastingMainMapper.selectList(demandforecastingMainDOQueryWrapper); - for (DemandforecastingMainDO mainDO : doList) { - mainDO.setAvailable("FALSE"); - } - demandforecastingMainMapper.insert(createObj); - demandforecastingDetailMapper.insertBatch(subDOList); - } else if (demandforecastingMainDO != null && mode != 2) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePrediction"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - DemandforecastingMainDO createObj = DemandforecastingMainConvert.INSTANCE.convert(createReqVO); - //根据版本默认作废之前版本 - QueryWrapper demandforecastingMainDOQueryWrapper = new QueryWrapper<>(); - demandforecastingMainDOQueryWrapper.eq("supplier_code", createReqVO.getSupplierCode()); - List doList = demandforecastingMainMapper.selectList(demandforecastingMainDOQueryWrapper); - for (DemandforecastingMainDO mainDO : doList) { - mainDO.setAvailable("FALSE"); - } - demandforecastingMainMapper.updateById(createObj); - demandforecastingDetailMapper.updateBatch(subDOList); - } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PREDICTION.getCode()); + mainDo.setNumber(number); + demandforecastingMainMapper.insert(mainDo); + for (DemandforecastingDetailDO detailDO : subDOList) { + detailDO.setNumber(number); } + demandforecastingDetailMapper.insertBatch(subDOList); } }); - //错误不为空并非部分更新,手工回滚 - if (!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } + /** + * 主表校验导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validateDemandforecastingMainImport(DemandforecastingMainDO mainDo, BusinesstypeDO businesstypeDO) { + // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String messageMain = ""; + //主表的验证 + //校验供应商基础信息 + try { + SupplierDO supplierDO = supplierService.selectSupplier(mainDo.getSupplierCode()); + if (supplierDO == null) { + messageMain += "未查找到供应商" + mainDo.getSupplierCode() + "信息" + ","; + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + return messageMain; + } + + /** + * 子表校验导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validateDemandforecastingDetailImport(DemandforecastingDetailDO detailDo, DemandforecastingMainDO mainDo, BusinesstypeDO businesstypeDO) { + String messageDetail = ""; + //校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + if (itembasicDO == null) { + messageDetail += "物品" + detailDo.getItemCode() + "无效" + ","; + } else { + if (!detailDo.getUom().equals(itembasicDO.getUom())) { + messageDetail += "计量单位" + detailDo.getItemCode() + "错误," + "应该是" + itembasicDO.getUom() + ","; + } + } + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + //校验采购订单 + try { + PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDo.getPoNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + if ((purchaseDetailDO.getShippedQty().add(detailDo.getPlanQty())).compareTo(purchaseDetailDO.getOrderQty()) == 1) { + messageDetail += "订单行" + detailDo.getPoLine() + "的已收货数量" + purchaseDetailDO.getReceivedQty() + "+计划数量" + detailDo.getPlanQty() + "大于订单数量" + purchaseDetailDO.getOrderQty() + ","; + } + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验供应商物品 + try { + SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); + if (supplieritemDO == null) { + messageDetail += "未查找到物品" + detailDo.getItemCode() + "供应商" + mainDo.getSupplierCode() + "信息" + ","; + } + + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + return messageDetail; + } + + + //新增方法(主和子) + private DemandforecastingMainDO validatorToCreate(DemandforecastingMainCreateReqVO createReqVO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("Demandforecasting"); + DemandforecastingMainDO demandforecastingMainDO = validateMainMethod(createReqVO,businesstypeDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = DemandforecastingDetailConvert.INSTANCE.convertList03(subList); + for (DemandforecastingDetailDO demandforecastingDetailDO : subDOList) { + validateDetailMethod(demandforecastingMainDO,demandforecastingDetailDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.SUPPLIER_DELIVER_REQUEST.getCode()); + demandforecastingMainDO.setNumber(number); + demandforecastingMainMapper.insert(demandforecastingMainDO); + for (DemandforecastingDetailDO DemandforecastingDetailDO : subDOList) { + DemandforecastingDetailDO.setNumber(demandforecastingMainDO.getNumber()); + DemandforecastingDetailDO.setMasterId(demandforecastingMainDO.getId()); + } + demandforecastingDetailMapper.insertBatch(subDOList); + return demandforecastingMainDO; + } + + //修改方法(主和子) + private DemandforecastingMainDO validatorToUpdate(DemandforecastingMainUpdateReqVO updateReqVO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + DemandforecastingMainDO demandforecastingMainDO = validateMainMethod(updateReqVO,businesstypeDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = DemandforecastingDetailConvert.INSTANCE.convertList05(subList); + for (DemandforecastingDetailDO demandforecastingDetailDO : subDOList) { + validateDetailMethod(demandforecastingMainDO,demandforecastingDetailDO); + } + demandforecastingMainMapper.updateById(demandforecastingMainDO); + demandforecastingDetailMapper.updateBatch(subDOList); + return demandforecastingMainDO; + } + + //校验主表公共方法(适用于新增/修改) + private DemandforecastingMainDO validateMainMethod(DemandforecastingMainBaseVO baseVO, BusinesstypeDO businesstypeDO){ + DemandforecastingMainDO demandforecastingMainDO = DemandforecastingMainConvert.INSTANCE.convert(baseVO); + this.validatorSupplier(demandforecastingMainDO.getSupplierCode()); + return demandforecastingMainDO; + } + + //校验子表公共方法(适用于新增/修改) + private void validateDetailMethod(DemandforecastingMainDO demandforecastingMainDO,DemandforecastingDetailDO demandforecastingDetailDO) { + itembasicService.selectItembasic(demandforecastingDetailDO.getItemCode()); + purchaseMainService.selectPurchaseDetailDoExist(demandforecastingDetailDO.getPoNumber(), demandforecastingMainDO.getSupplierCode(), demandforecastingDetailDO.getItemCode(), demandforecastingDetailDO.getPoLine()); + supplieritemService.selectSupplierItemExist(demandforecastingMainDO.getSupplierCode(), demandforecastingDetailDO.getItemCode()); + } + + + //主表校验客户代码 + private void validatorSupplier(String supplierCode) { + supplierService.selectSupplier(supplierCode); + } + + //子表校验物品基础信息 + private void validatorItembasic(String itemCode) { + itembasicService.selectItembasic(itemCode); + } + + //子表校验物品基础信息 + private void validatorItembasic(String poNumber, String supplierCode, String itemCode, String poLine) { + purchaseMainService.selectPurchaseDetailDoExist(poNumber, supplierCode, itemCode, poLine); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java index 36db240b..21d770b9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorychangeRequest/InventorychangeRequestMainServiceImpl.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.inventorychangeRequest.vo.*; @@ -20,6 +22,7 @@ import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestDetailMapper; import com.win.module.wms.dal.mysql.inventorychangeRequest.InventorychangeRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; import com.win.module.wms.service.location.LocationService; @@ -27,7 +30,6 @@ import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.shift.ShiftService; 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; @@ -36,8 +38,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.INVENTORYCHANGE_REQUEST_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 实现类 @@ -64,25 +65,33 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq private LocationService locationService; @Resource private SerialNumberApi serialNumberApi; - + @Resource + private TrendsApi trendsApi; @Resource private RequestsettingService requestsettingService; + @Override public Long createInventorychangeRequestMain(InventorychangeRequestMainCreateReqVO createReqVO) { - // 插入 - InventorychangeRequestMainDO inventorychangeRequestMain = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); - inventorychangeRequestMainMapper.insert(inventorychangeRequestMain); - // 返回 - return inventorychangeRequestMain.getId(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventorychangeRequest"); + InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToCreate(createReqVO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "增加了发货计划", TrendsTypeEnum.CREATE); + return inventorychangeRequestMainDO.getId(); } @Override public void updateInventorychangeRequestMain(InventorychangeRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverPlan"); // 校验存在 validateInventorychangeRequestMainExists(updateReqVO.getId()); - // 更新 - InventorychangeRequestMainDO updateObj = InventorychangeRequestMainConvert.INSTANCE.convert(updateReqVO); - inventorychangeRequestMainMapper.updateById(updateObj); + InventorychangeRequestMainDO inventorychangeRequestMainDO = validatorToUpdate(updateReqVO); + if(RequestStatusEnum.HANDLING.getCode().equals(inventorychangeRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "DeliverPlan", "修改了发货计划", TrendsTypeEnum.CREATE); } @Override @@ -131,312 +140,448 @@ public class InventorychangeRequestMainServiceImpl implements InventorychangeReq } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - String messageMain = ""; - //主表的验证 - - - //子表的验证 + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + InventorychangeRequestMainDO mainDo = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validateInventorychangeRequestMainImport(mainDo, businesstypeDO); List subList = createReqVO.getSubList(); List subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); - for (InventorychangeRequestDetailDO purchaseDetailDO : subDOList) { - String messageDetail = ""; - //校验来源库位基础信息 - try { - LocationDO locationDO = locationService.selectLocation(purchaseDetailDO.getLocationCode()); - if (locationDO != null) { - purchaseDetailDO.setLocationCode(locationDO.getCode()); - purchaseDetailDO.setAreaCode(locationDO.getAreaCode()); - purchaseDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode()); - } - } catch (ServiceException ex) { - messageMain += ex.getMessage() + ","; + // 是否有错误数据 + boolean flag = true; + for (InventorychangeRequestDetailDO detailDO : subDOList) { + String messageDetail = validateInventorychangeRequestDetailImport(detailDO, mainDo, businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + InventorychangeRequestMainImportErrorVO importErrorVO = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - // 校验物品基础信息 - 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.setProjectCode(itembasicDO.getProject()); - } - purchaseDetailDO.setProjectCode(itembasicDO.getCode()); - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; + } + //写入数据 + if (flag) { + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryChangeRequest"); + if (businesstypeDO != null) { + mainDo.setBusinessType(businesstypeDO.getCode()); } - // 校验业务类型 - try { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk"); - jobUtils.selectItembasicExist(purchaseDetailDO.getItemCode(), businesstypeDO); - jobUtils.ifOutInventoryStatuses(purchaseDetailDO.getFromInventoryStatus(), businesstypeDO); - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; + String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_CHANGE_REQUEST.getCode()); + mainDo.setNumber(number); + inventorychangeRequestMainMapper.insert(mainDo); + for (InventorychangeRequestDetailDO detailDO : subDOList) { + detailDO.setNumber(mainDo.getNumber()); + detailDO.setMasterId(mainDo.getId()); } + inventorychangeRequestDetailMapper.insertBatch(subDOList); + } + }); + return errorList; + } - //隔离转合格申请 - if ("Hold".equals(purchaseDetailDO.getFromInventoryStatus())) { - // 校验库存余额是否存在 - try { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("Hold"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() - , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - purchaseDetailDO.setFromQty(balanceDO.getQty()); - purchaseDetailDO.setToQty(balanceDO.getQty()); - purchaseDetailDO.setQty(balanceDO.getQty()); - - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - purchaseDetailDO.setToInventoryStatus("OK"); - String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); - createReqVO.setNumber(number); - - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest"); - if (requestsettingDO != null) { - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - } + /** + * 主表校验导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validateInventorychangeRequestMainImport(InventorychangeRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String messageMain = ""; + //主表的验证 + return messageMain; + } - //合格转隔离申请 - if ("OK".equals(purchaseDetailDO.getFromInventoryStatus())) { - // 校验库存余额是否存在 - try { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("OK"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() - , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - purchaseDetailDO.setFromQty(balanceDO.getQty()); - purchaseDetailDO.setToQty(balanceDO.getQty()); - purchaseDetailDO.setQty(balanceDO.getQty()); - - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - purchaseDetailDO.setToInventoryStatus("Hold"); - String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); - createReqVO.setNumber(number); - - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); - if (requestsettingDO != null) { - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - - purchaseDetailDO.setToPackingNumber(null); - purchaseDetailDO.setToBatch(null); - purchaseDetailDO.setToContainerNumber(null); - } + /** + * 子表校验导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validateInventorychangeRequestDetailImport(InventorychangeRequestDetailDO detailDo, InventorychangeRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + String messageDetail = ""; + //校验来源库位基础信息 + try { + LocationDO locationDO = locationService.selectLocation(detailDo.getLocationCode()); + if (locationDO != null) { + detailDo.setLocationCode(locationDO.getCode()); + detailDo.setAreaCode(locationDO.getAreaCode()); + detailDo.setLocationGroupCode(locationDO.getLocationGroupCode()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验物品基础信息 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + if (itembasicDO.getUom() != detailDo.getUom()) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; + } else { + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + // 校验业务类型 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk"); + jobUtils.selectItembasicExist(detailDo.getItemCode(), businesstypeDO); + jobUtils.ifOutInventoryStatuses(detailDo.getFromInventoryStatus(), businesstypeDO); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } - //隔离转报废申请 - if ("Hold".equals(purchaseDetailDO.getFromInventoryStatus())) { - // 校验库存余额是否存在 - try { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("Hold"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() - , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - purchaseDetailDO.setFromQty(balanceDO.getQty()); - purchaseDetailDO.setToQty(balanceDO.getQty()); - purchaseDetailDO.setQty(balanceDO.getQty()); - - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - purchaseDetailDO.setToInventoryStatus("Scrap"); - String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); - createReqVO.setNumber(number); - - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); - if (requestsettingDO != null) { - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - - purchaseDetailDO.setFromPackingNumber(null); - purchaseDetailDO.setFromBatch(null); - purchaseDetailDO.setFromContainerNumber(null); + //隔离转合格申请 + if ("Hold".equals(detailDo.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("Hold"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() + , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + detailDo.setFromQty(balanceDO.getQty()); + detailDo.setToQty(balanceDO.getQty()); + detailDo.setQty(balanceDO.getQty()); + + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setFromProduceDate(balanceDO.getProduceDate()); + detailDo.setFromExpireDate(balanceDO.getExpireDate()); + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setToProduceDate(balanceDO.getProduceDate()); + detailDo.setToExpireDate(balanceDO.getExpireDate()); } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + detailDo.setToInventoryStatus("OK"); + String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); + detailDo.setNumber(number); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRequest"); + if (businesstypeDO != null) { + mainDo.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("HoldToScrapRequest"); + if (requestsettingDO != null) { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + } - //报废转隔离申请 - if ("Scrap".equals(purchaseDetailDO.getFromInventoryStatus())) { - // 校验库存余额是否存在 - try { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("Scrap"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() - , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - purchaseDetailDO.setFromQty(balanceDO.getQty()); - purchaseDetailDO.setToQty(balanceDO.getQty()); - purchaseDetailDO.setQty(balanceDO.getQty()); - - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - purchaseDetailDO.setToInventoryStatus("Scrap"); - String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode()); - createReqVO.setNumber(number); - - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest"); - if (requestsettingDO != null) { - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - - purchaseDetailDO.setFromPackingNumber(null); - purchaseDetailDO.setFromBatch(null); - purchaseDetailDO.setFromContainerNumber(null); + //合格转隔离申请 + if ("OK".equals(detailDo.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("OK"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() + , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + detailDo.setFromQty(balanceDO.getQty()); + detailDo.setToQty(balanceDO.getQty()); + detailDo.setQty(balanceDO.getQty()); + + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setFromProduceDate(balanceDO.getProduceDate()); + detailDo.setFromExpireDate(balanceDO.getExpireDate()); + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setToProduceDate(balanceDO.getProduceDate()); + detailDo.setToExpireDate(balanceDO.getExpireDate()); } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + detailDo.setToInventoryStatus("Hold"); + String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); + mainDo.setNumber(number); + + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); + if (businesstypeDO != null) { + mainDo.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); + if (requestsettingDO != null) { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } - //合格转报废 - if ("Ok".equals(purchaseDetailDO.getFromInventoryStatus())) { - // 校验库存余额是否存在 - try { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("Scrap"); - List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(purchaseDetailDO.getItemCode(), purchaseDetailDO.getFromPackingNumber() - , purchaseDetailDO.getFromBatch(), purchaseDetailDO.getLocationCode(), inventoryStatus); - if (balanceDOList != null) { - BalanceDO balanceDO = balanceDOList.get(0); - purchaseDetailDO.setFromQty(balanceDO.getQty()); - purchaseDetailDO.setToQty(balanceDO.getQty()); - purchaseDetailDO.setQty(balanceDO.getQty()); - - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setFromProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setFromExpireDate(balanceDO.getExpireDate()); - purchaseDetailDO.setToArrivdAte(balanceDO.getArriveDate()); - purchaseDetailDO.setToProduceDate(balanceDO.getProduceDate()); - purchaseDetailDO.setToExpireDate(balanceDO.getExpireDate()); - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - purchaseDetailDO.setToInventoryStatus("Scrap"); - String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode()); - createReqVO.setNumber(number); - - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest"); - if (requestsettingDO != null) { - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - - purchaseDetailDO.setFromPackingNumber(null); - purchaseDetailDO.setFromBatch(null); - purchaseDetailDO.setFromContainerNumber(null); + detailDo.setToPackingNumber(null); + detailDo.setToBatch(null); + detailDo.setToContainerNumber(null); + } + + //隔离转报废申请 + if ("Hold".equals(detailDo.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("Hold"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() + , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + detailDo.setFromQty(balanceDO.getQty()); + detailDo.setToQty(balanceDO.getQty()); + detailDo.setQty(balanceDO.getQty()); + + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setFromProduceDate(balanceDO.getProduceDate()); + detailDo.setFromExpireDate(balanceDO.getExpireDate()); + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setToProduceDate(balanceDO.getProduceDate()); + detailDo.setToExpireDate(balanceDO.getExpireDate()); } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + detailDo.setToInventoryStatus("Scrap"); + String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); + mainDo.setNumber(number); + + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRequest"); + if (businesstypeDO != null) { + mainDo.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToHoldRequest"); + if (requestsettingDO != null) { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + detailDo.setFromPackingNumber(null); + detailDo.setFromBatch(null); + detailDo.setFromContainerNumber(null); + } - InventorychangeRequestDetailCreateReqVO purchaseDetailCreateReqVO = InventorychangeRequestDetailConvert.INSTANCE.convert1(purchaseDetailDO); - InventorychangeRequestMainImportErrorVO importVO = InventorychangeRequestDetailConvert.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()); + //报废转隔离申请 + if ("Scrap".equals(detailDo.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("Scrap"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() + , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + detailDo.setFromQty(balanceDO.getQty()); + detailDo.setToQty(balanceDO.getQty()); + detailDo.setQty(balanceDO.getQty()); + + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setFromProduceDate(balanceDO.getProduceDate()); + detailDo.setFromExpireDate(balanceDO.getExpireDate()); + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setToProduceDate(balanceDO.getProduceDate()); + detailDo.setToExpireDate(balanceDO.getExpireDate()); } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; } + detailDo.setToInventoryStatus("Scrap"); + String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode()); + mainDo.setNumber(number); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRequest"); + if (businesstypeDO != null) { + mainDo.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ScrapToHoldRequest"); + if (requestsettingDO != null) { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } - if (errorList.isEmpty()) { - if (mode != 3) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - - InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); - inventorychangeRequestMainMapper.insert(createObj); - inventorychangeRequestDetailMapper.insertBatch(subDOList); - } else if (mode != 2) { - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + detailDo.setFromPackingNumber(null); + detailDo.setFromBatch(null); + detailDo.setFromContainerNumber(null); + } - InventorychangeRequestMainDO createObj = InventorychangeRequestMainConvert.INSTANCE.convert(createReqVO); - inventorychangeRequestMainMapper.updateById(createObj); - inventorychangeRequestDetailMapper.updateBatch(subDOList); + //合格转报废 + if ("Ok".equals(detailDo.getFromInventoryStatus())) { + // 校验库存余额是否存在 + try { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("Scrap"); + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() + , detailDo.getFromBatch(), detailDo.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + detailDo.setFromQty(balanceDO.getQty()); + detailDo.setToQty(balanceDO.getQty()); + detailDo.setQty(balanceDO.getQty()); + + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setFromProduceDate(balanceDO.getProduceDate()); + detailDo.setFromExpireDate(balanceDO.getExpireDate()); + detailDo.setToArrivdAte(balanceDO.getArriveDate()); + detailDo.setToProduceDate(balanceDO.getProduceDate()); + detailDo.setToExpireDate(balanceDO.getExpireDate()); } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; } - }); - //错误不为空并非部分更新,手工回滚 - if (!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + detailDo.setToInventoryStatus("Scrap"); + String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode()); + mainDo.setNumber(number); + + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); + if (businesstypeDO != null) { + mainDo.setBusinessType(businesstypeDO.getCode()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest"); + if (requestsettingDO != null) { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + + detailDo.setFromPackingNumber(null); + detailDo.setFromBatch(null); + detailDo.setFromContainerNumber(null); } - return errorList; + return messageDetail; + } + + + //新增方法(主和子) + private InventorychangeRequestMainDO validatorToCreate(InventorychangeRequestMainCreateReqVO createReqVO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverPlan"); + InventorychangeRequestMainDO inventorychangeRequestMainDO = validateMainMethod(createReqVO, businesstypeDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList03(subList); + for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { + validateDetailMethod(inventorychangeRequestDetailDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); + inventorychangeRequestMainDO.setNumber(number); + inventorychangeRequestMainMapper.insert(inventorychangeRequestMainDO); + for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { + inventorychangeRequestDetailDO.setNumber(inventorychangeRequestMainDO.getNumber()); + inventorychangeRequestDetailDO.setMasterId(inventorychangeRequestMainDO.getId()); + } + inventorychangeRequestDetailMapper.insertBatch(subDOList); + return inventorychangeRequestMainDO; + } + + //修改方法(主和子) + private InventorychangeRequestMainDO validatorToUpdate(InventorychangeRequestMainUpdateReqVO updateReqVO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + InventorychangeRequestMainDO deliverPlanMainDO = validateMainMethod(updateReqVO, businesstypeDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = InventorychangeRequestDetailConvert.INSTANCE.convertList05(subList); + for (InventorychangeRequestDetailDO inventorychangeRequestDetailDO : subDOList) { + validateDetailMethod(inventorychangeRequestDetailDO); + } + inventorychangeRequestMainMapper.updateById(deliverPlanMainDO); + inventorychangeRequestDetailMapper.updateBatch(subDOList); + return deliverPlanMainDO; + } + + + //校验主表公共方法(适用于新增/修改) + private InventorychangeRequestMainDO validateMainMethod(InventorychangeRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO) { + InventorychangeRequestMainDO InventorychangeRequestMainDO = InventorychangeRequestMainConvert.INSTANCE.convert(baseVO); + return InventorychangeRequestMainDO; + } + + //校验子表公共方法(适用于新增/修改) + private void validateDetailMethod(InventorychangeRequestDetailDO inventorychangeRequestDetailDO) { + LocationDO locationDO = this.validatorLocation(inventorychangeRequestDetailDO.getLocationCode()); + if (locationDO != null) { + inventorychangeRequestDetailDO.setLocationCode(locationDO.getCode()); + inventorychangeRequestDetailDO.setAreaCode(locationDO.getAreaCode()); + inventorychangeRequestDetailDO.setLocationGroupCode(locationDO.getLocationGroupCode()); + } + + ItembasicDO itembasicDO = this.validatorItembasic(inventorychangeRequestDetailDO.getItemCode()); + if (!inventorychangeRequestDetailDO.getUom().equals(itembasicDO.getUom())) { + throw exception(UOM_ERROR, inventorychangeRequestDetailDO.getUom()); + } else { + inventorychangeRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); + inventorychangeRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); + inventorychangeRequestDetailDO.setItemName(itembasicDO.getName()); + inventorychangeRequestDetailDO.setProjectCode(itembasicDO.getProject()); + } + //校验库存余额是否存在 + List inventoryStatus = new ArrayList<>(); + //隔离转合格申请 + if ("Hold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { + + inventoryStatus.add("Hold"); + } + //合格转隔离申请 + if ("HOKold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { + inventoryStatus.add("OK"); + } + //隔离转报废申请 + if ("Hold".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { + inventoryStatus.add("Hold"); + } + //报废转隔离申请 + if ("Scrap".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { + inventoryStatus.add("Scrap"); + } + //合格转报废申请 + if ("Ok".equals(inventorychangeRequestDetailDO.getFromInventoryStatus())) { + inventoryStatus.add("Scrap"); + } + List balanceDOList = this.validatorLocationReturnManagementAccuracy(inventorychangeRequestDetailDO.getItemCode(), inventorychangeRequestDetailDO.getFromPackingNumber() + , inventorychangeRequestDetailDO.getFromBatch(), inventorychangeRequestDetailDO.getLocationCode(), inventoryStatus); + if (balanceDOList != null) { + BalanceDO balanceDO = balanceDOList.get(0); + inventorychangeRequestDetailDO.setFromQty(balanceDO.getQty()); + inventorychangeRequestDetailDO.setToQty(balanceDO.getQty()); + inventorychangeRequestDetailDO.setQty(balanceDO.getQty()); + + inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + inventorychangeRequestDetailDO.setFromProduceDate(balanceDO.getProduceDate()); + inventorychangeRequestDetailDO.setFromExpireDate(balanceDO.getExpireDate()); + inventorychangeRequestDetailDO.setToArrivdAte(balanceDO.getArriveDate()); + inventorychangeRequestDetailDO.setToProduceDate(balanceDO.getProduceDate()); + inventorychangeRequestDetailDO.setToExpireDate(balanceDO.getExpireDate()); + } + + } + + //子表校验来源库位基础信息 + private LocationDO validatorLocation(String locationCode) { + LocationDO locationDO = locationService.selectLocation(locationCode); + return locationDO; + } + + //子表校验物品基础信息 + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + + //子表校验业务类型 + private void validatorItembasic(String itemCode, String fromInventoryStatus) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOk"); + jobUtils.selectItembasicExist(itemCode, businesstypeDO); + jobUtils.ifOutInventoryStatuses(fromInventoryStatus, businesstypeDO); + } + + private List validatorLocationReturnManagementAccuracy(String itemCode, String fromPackingNumber, String fromBatch, String locationCode, List inventoryStatus) { + List balanceDOList = jobUtils.selectlocationReturnManagementAccuracy(itemCode, fromPackingNumber + , fromBatch, locationCode, inventoryStatus); + return balanceDOList; } }