From 3f27fa3230465fd532a42e413e0fe69249492787 Mon Sep 17 00:00:00 2001 From: chenfang Date: Wed, 20 Dec 2023 19:35:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E9=80=80=E8=B4=A7=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=20=20=E6=96=B0=E5=A2=9E=E6=97=B6=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=AD=90=E8=A1=A8=E6=95=B0=E9=87=8F=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InventorymoveJobMainController.java | 16 +- .../vo/InventorymoveJobDetailUpdateReqVO.java | 21 +- .../vo/InventorymoveJobMainPageReqVO.java | 5 + .../vo/InventorymoveRecordMainPageReqVO.java | 5 + .../vo/InventorymoveRequestMainImportVO.java | 4 + .../recordsetting/RecordsettingDO.java | 6 +- .../InventorymoveJobMainMapper.java | 24 +- .../InventorymoveRecordMainMapper.java | 19 +- .../CustomerreturnRequestMainServiceImpl.java | 149 +++++++---- .../CustomersettleRequestMainServiceImpl.java | 33 ++- .../DeliverRequestMainServiceImpl.java | 2 +- .../InventorymoveJobMainServiceImpl.java | 177 +++++++------ .../InventorymoveRecordMainServiceImpl.java | 26 +- .../InventorymoveRequestMainServiceImpl.java | 234 ++++++++++-------- .../com/win/module/wms/util/JobUtils.java | 2 +- 15 files changed, 443 insertions(+), 280 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/InventorymoveJobMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/InventorymoveJobMainController.java index d8cf1436..d36f7853 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/InventorymoveJobMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/InventorymoveJobMainController.java @@ -5,9 +5,13 @@ import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.system.api.dept.DeptApi; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.deliverJob.vo.DeliverJobMainRespVO; import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveRequestMainExcelVO; +import com.win.module.wms.convert.deliverJob.DeliverJobMainConvert; import com.win.module.wms.convert.inventorymoveJob.InventorymoveJobDetailConvert; import com.win.module.wms.convert.inventorymoveRequest.InventorymoveRequestMainConvert; +import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobDetailDO; +import com.win.module.wms.dal.dataobject.deliverJob.DeliverJobMainDO; import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestDetailDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; @@ -196,11 +200,13 @@ public class InventorymoveJobMainController { if(result==null) { return success(result); }; - InventorymoveJobDetailExportReqVO exportReqVO = new InventorymoveJobDetailExportReqVO(); - exportReqVO.setMasterId(result.getId()); - List inventorymoveJobDetailList = inventorymoveJobDetailService.getInventorymoveJobDetailList(exportReqVO); - List inventorymoveJobDetailExcelVOS = InventorymoveJobDetailConvert.INSTANCE.convertList02(inventorymoveJobDetailList); - result.setSubList(inventorymoveJobDetailExcelVOS); +// InventorymoveJobDetailExportReqVO exportReqVO = new InventorymoveJobDetailExportReqVO(); +// exportReqVO.setMasterId(result.getId()); +// List inventorymoveJobDetailList = inventorymoveJobDetailService.getInventorymoveJobDetailList(exportReqVO); +// List inventorymoveJobDetailExcelVOS = InventorymoveJobDetailConvert.INSTANCE.convertList02(inventorymoveJobDetailList); +// result.setSubList(inventorymoveJobDetailExcelVOS); + List subList = inventorymoveJobDetailService.selectList(id); + result.setSubList(subList); return success(result); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailUpdateReqVO.java index 96af369a..bcd95123 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobDetailUpdateReqVO.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.inventorymoveJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -11,6 +12,22 @@ import java.util.Map; @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class InventorymoveJobDetailUpdateReqVO extends InventorymoveJobDetailBaseVO { - @Schema(description = "子表记录数据") - private List> recordList; + + @Schema(description = "实际收货数量") + private BigDecimal handleQty; + + @Schema(description = "到包装") + private String toPackingNumber; + + @Schema(description = "到器具") + private String toContainerNumber; + + @Schema(description = "到批次") + private String toBatch; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + + @Schema(description = "到库位") + private String toLocationCode; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainPageReqVO.java index b4d057e5..672ed748 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveJob/vo/InventorymoveJobMainPageReqVO.java @@ -136,4 +136,9 @@ public class InventorymoveJobMainPageReqVO extends PageParam { @Schema(description = "允许修改箱码") private String allowModifyPackingNumber; + @Schema(description = "从库存状态") + private String fromInventoryStatus; + + @Schema(description = "到库存状态") + private String toInventoryStatus; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainPageReqVO.java index 4e511bbd..42f4eaf0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRecord/vo/InventorymoveRecordMainPageReqVO.java @@ -95,4 +95,9 @@ public class InventorymoveRecordMainPageReqVO extends PageParam { @Schema(description = "主表id") private String masterId; + @Schema(description = "从库存状态") + private String fromInventoryStatus; + + @Schema(description = "到库存状态") + private String toInventoryStatus; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java index f3217d75..55da1449 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inventorymoveRequest/vo/InventorymoveRequestMainImportVO.java @@ -46,6 +46,10 @@ public class InventorymoveRequestMainImportVO { @DictFormat(DictTypeConstants.INVENTORY_STATUS) private String fromInventoryStatus; + @ExcelProperty(value = "到库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String toInventoryStatus; + @ExcelProperty("从库位代码") private String fromLocationCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/recordsetting/RecordsettingDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/recordsetting/RecordsettingDO.java index 01518199..fbc3a9b8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/recordsetting/RecordsettingDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/recordsetting/RecordsettingDO.java @@ -1,11 +1,7 @@ package com.win.module.wms.dal.dataobject.recordsetting; +import com.sun.xml.bind.v2.TODO; 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 com.baomidou.mybatisplus.annotation.*; import com.win.framework.mybatis.core.dataobject.BaseDO; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobMainMapper.java index 669bbbc2..1907b8e2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inventorymoveJob/InventorymoveJobMainMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainExportReqVO; import com.win.module.wms.controller.inventorymoveJob.vo.InventorymoveJobMainPageReqVO; import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO; +import com.win.module.wms.dal.dataobject.inventorymoveRecord.InventorymoveRecordMainDO; import com.win.module.wms.dal.dataobject.inventorymoveRequest.InventorymoveRequestMainDO; import com.win.module.wms.dal.dataobject.productdismantleJob.ProductdismantleJobMainDO; import org.apache.ibatis.annotations.Mapper; @@ -23,8 +24,8 @@ import org.apache.ibatis.annotations.Mapper; public interface InventorymoveJobMainMapper extends BaseMapperX { default PageResult selectPage(InventorymoveJobMainPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(InventorymoveJobMainDO::getRequestNumber, reqVO.getRequestNumber()) + LambdaQueryWrapperX lambdaQueryWrapperX = new LambdaQueryWrapperX<>(); + lambdaQueryWrapperX.eqIfPresent(InventorymoveJobMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(InventorymoveJobMainDO::getUseOnTheWayLocation, reqVO.getUseOnTheWayLocation()) .eqIfPresent(InventorymoveJobMainDO::getFromWarehouseCode, reqVO.getFromWarehouseCode()) .betweenIfPresent(InventorymoveJobMainDO::getRequestTime, reqVO.getRequestTime()) @@ -62,11 +63,25 @@ public interface InventorymoveJobMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + default List selectList(InventorymoveJobMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(InventorymoveJobMainDO::getRequestNumber, reqVO.getRequestNumber()) @@ -111,7 +126,8 @@ public interface InventorymoveJobMainMapper extends BaseMapperX { default PageResult selectPage(InventorymoveRecordMainPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(InventorymoveRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) + LambdaQueryWrapperX lambdaQueryWrapperX = new LambdaQueryWrapperX<>(); + lambdaQueryWrapperX.eqIfPresent(InventorymoveRecordMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(InventorymoveRecordMainDO::getJobNumber, reqVO.getJobNumber()) .eqIfPresent(InventorymoveRecordMainDO::getUseOnTheWayLocation, reqVO.getUseOnTheWayLocation()) .eqIfPresent(InventorymoveRecordMainDO::getOutTransactionType, reqVO.getOutTransactionType()) @@ -46,7 +47,19 @@ public interface InventorymoveRecordMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java index ae49cacf..3e0b17eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java @@ -2,6 +2,7 @@ package com.win.module.wms.service.customerreturnRequest; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; +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; @@ -65,6 +66,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -147,7 +149,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque this.validateCustomerreturnRequestMainCreate(mainDO); List subDOList = CustomerreturnRequestMainConvert.INSTANCE.convertList03(createReqVO.getSubList()); for (CustomerreturnRequestDetailDO detailDO : subDOList) { - this.validateCustomerreturnRequestDetailCreate(mainDO,detailDO); + this.validateCustomerreturnRequestDetailCreate(mainDO, detailDO); } String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_REQUEST.getCode()); mainDO.setNumber(number); @@ -155,11 +157,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque requestStatusState.newObject(mainDO.getAutoCommit(), mainDO.getAutoAgree(), mainDO.getAutoExecute()); mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 - if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { this.generateJob(mainDO, subDOList); } customerreturnRequestMainMapper.insert(mainDO); for (CustomerreturnRequestDetailDO detailDO : subDOList) { + detailDO.setId(null); detailDO.setMasterId(mainDO.getId()); detailDO.setNumber(number); } @@ -177,7 +180,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque CustomerreturnRequestMainDO updateObj = CustomerreturnRequestMainConvert.INSTANCE.convert(updateReqVO); this.validateCustomerreturnRequestMainCreate(updateObj); //调用自动执行方法 - if(RequestStatusEnum.HANDLING.getCode().equals(updateObj.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(updateObj.getStatus())) { this.generateJob(updateObj, customerreturnRequestDetailMapper.selectList(updateReqVO.getId())); } customerreturnRequestMainMapper.updateById(updateObj); @@ -262,7 +265,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque mainDo.setStatus(PlanStatusEnum.NEW.getCode()); String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_REQUEST.getCode()); DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber()); - if(deliverRecordMainDO != null){ + if (deliverRecordMainDO != null) { mainDo.setFromWarehouseCode(deliverRecordMainDO.getToWarehouseCode()); mainDo.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode()); } @@ -274,7 +277,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque detailDO.setMasterId(mainDo.getId()); } //调用自动执行方法 - if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { this.generateJob(mainDo, subDOList); } customerreturnRequestDetailMapper.insertBatch(subDOList); @@ -285,7 +288,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque private void generateJob(CustomerreturnRequestMainDO mainDO, List detailDOList) { //跳过任务直接生成记录 - if("TRUE".equals(mainDO.getDirectCreateRecord())) { + if ("TRUE".equals(mainDO.getDirectCreateRecord())) { //如果直接生成记录 修改申请状态为已完成 mainDO.setStatus("8"); customerreturnRequestMainMapper.updateById(mainDO); @@ -305,7 +308,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque customerreturnRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); CustomerreturnRecordMainDO recordMainDO = CustomerreturnRecordMainConvert.INSTANCE.convert(customerreturnRecordMainCreateReqVO); customerreturnRecordMainMapper.insert(recordMainDO); - for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { + for (CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { //记录子表数据 同名属性同名赋值 CustomerreturnRecordDetailCreateReqVO customerreturnRecordDetailCreateReqVO = new CustomerreturnRecordDetailCreateReqVO(); CustomerreturnRecordDetailDO recordDetailDO = CustomerreturnRecordDetailConvert.INSTANCE.convert(customerreturnRecordDetailCreateReqVO); @@ -356,7 +359,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque customerreturnJobMainMapper.insert(customerreturnJobMainDO); List expectinCreateReqVOList = new ArrayList<>(); List customerreturnJobDetailDOList = new ArrayList<>(); - for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { + for (CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { //任务子表数据 同名属性同名赋值 CustomerreturnJobDetailDO customerreturnJobDetailDO = CustomerreturnJobDetailConvert.INSTANCE.convert(customerreturnRequestDetailDO); BeanUtils.copyProperties(customerreturnRequestDetailDO, customerreturnJobDetailDO); @@ -387,6 +390,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque /** * 主表校验导入,并赋值一些参数 + * * @param mainDo * @return */ @@ -417,41 +421,41 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque /** * 子表校验导入,并赋值一些参数 + * * @param detailDo * @return */ private String validateCustomerreturnRequestDetailImport(CustomerreturnRequestDetailDO detailDo, CustomerreturnRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { String messageDetail = ""; - // 校验物品基础信息 try { - validateDeliverRecordDetail(mainDo,detailDo); + validateDeliverRecordDetail(mainDo, detailDo); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } try { ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); - if ( !detailDo.getUom().equals(itembasicDO.getUom())) { + if (!detailDo.getUom().equals(itembasicDO.getUom())) { messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; } } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } try { - if(!"".equals(detailDo.getFromLocationCode())){ - validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); + if (!"".equals(detailDo.getFromLocationCode())) { + validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); } } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } try { - validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO); + validatorIfInFromLocationType(detailDo.getToLocationCode(), businesstypeDO); } catch (ServiceException ex) { messageDetail += "从" + ex.getMessage() + ","; } try { - validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); + validatorIfInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); } catch (ServiceException ex) { - messageDetail += "到" + ex.getMessage() + ","; + messageDetail += "到" + ex.getMessage() + ","; } try { validatorBalance(detailDo); @@ -461,7 +465,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque try { ValidationUtils.validate(validator, mainDo); } catch (Exception ex) { - messageDetail+= ex.getMessage() + (","); + messageDetail += ex.getMessage() + (","); } return messageDetail; } @@ -472,12 +476,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque // 校验存在存在下级单据 CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); Long count = customerreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); - if(count > 0) { + if (count > 0) { throw new ServiceException(CUSTOMERRETURN_REQUEST_JOB_EXISTS); } RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.close(); - if(!flag) { + if (!flag) { throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_CLOSE); } mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 @@ -491,12 +495,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque // 校验存在存在下级单据 CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); Long count = customerreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); - if(count > 0) { + if (count > 0) { throw new ServiceException(CUSTOMERRETURN_REQUEST_JOB_EXISTS); } RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.reAdd(); - if(!flag) { + if (!flag) { throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_RE_ADD); } mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 @@ -510,12 +514,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); - if(!flag) { + if (!flag) { throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_SUBMIT); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 - if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId())); } trendsApi.createTrends(id, "CustomerRejectRequest", "提交了客户退货申请", TrendsTypeEnum.UPDATE); @@ -529,12 +533,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); - if(!flag) { + if (!flag) { throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_AGREE); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 - if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId())); } trendsApi.createTrends(id, "CustomerRejectRequest", "审批同意了客户退货申请", TrendsTypeEnum.UPDATE); @@ -548,7 +552,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.handle(); - if(!flag) { + if (!flag) { throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_HANDLE); } mainDO.setStatus(requestStatusState.getState().getCode()); @@ -565,7 +569,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.refused(); - if(!flag) { + if (!flag) { throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_ABORT); } mainDO.setStatus(requestStatusState.getState().getCode()); @@ -575,6 +579,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque /** * 新增主表校验 + * * @param mainDo * @return */ @@ -589,40 +594,41 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque /** * 新增子表校验 + * * @param detailDo * @return */ private void validateCustomerreturnRequestDetailCreate(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDo) { BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); - //校验成品发货记录子表并赋值 - validateDeliverRecordDetail(mainDo,detailDo); //校验物品基础信息并赋值 ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); - if(detailDo.getUom() != null){ + if (detailDo.getUom() != null) { if (!detailDo.getUom().equals(itembasicDO.getUom())) { //注意转换字段数值 - throw exception(UOM_EXCEPTION,"计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","); + throw exception(UOM_EXCEPTION, "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","); } } //校验来源库位 - if(!"".equals(detailDo.getFromLocationCode())){ - validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); + if (!"".equals(detailDo.getFromLocationCode())) { + validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); } //校验到库位 // customerdockService. - validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO); + validatorIfInFromLocationType(detailDo.getToLocationCode(), businesstypeDO); //校验库存状态 - validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); + validatorIfInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); //校验库存余额 validatorBalance(detailDo); + validateDeliverRecordQtyDetail(mainDo, detailDo); } /** * 校验发货记录并赋值 + * * @param mainDo */ private CustomerreturnRequestMainDO validateDeliverRecord(CustomerreturnRequestMainDO mainDo) { - DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber()); + DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber()); mainDo.setDeliverPlanNumber(deliverRecordMainDO.getDeliverPlanNumber()); mainDo.setCustomerCode(deliverRecordMainDO.getCustomerCode()); mainDo.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode()); @@ -632,9 +638,10 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque /** * 校验业务类型和申请设置并赋值 + * * @param mainDo */ - private void validateRequestsettingAndBusinesstype(CustomerreturnRequestMainDO mainDo){ + private void validateRequestsettingAndBusinesstype(CustomerreturnRequestMainDO mainDo) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CustomerRejectRequest"); if (requestsettingDO != null) { mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); @@ -643,7 +650,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); } BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); - if(businesstypeDO != null){ + if (businesstypeDO != null) { mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); @@ -655,14 +662,51 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque } + private HashMap validateDeliverRecordQtyDetail(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDO) { + QueryWrapper customerreturnRecordMainDOQueryWrapper = new QueryWrapper<>(); + customerreturnRecordMainDOQueryWrapper.eq("deliver_record_number", mainDo.getDeliverRecordNumber()); + HashMap hashMap = new HashMap<>(); + //查询出已经退货完的记录主表 + List customerreturnRecordMainDOS = customerreturnRecordMainMapper.selectList(customerreturnRecordMainDOQueryWrapper); + //获取发货记录子表每条数据 + List deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(mainDo.getDeliverRecordNumber()); + if (deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0) { + //2条 + for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) { + for (CustomerreturnRecordMainDO customerreturnRecordMainDO : customerreturnRecordMainDOS) { + List customerreturnRecordDetailDOS = customerreturnRecordDetailMapper.selectList(customerreturnRecordMainDO.getId()); + //查询出已经退货完的记录主表下的子表数据 + BigDecimal qty = BigDecimal.ZERO; + for (CustomerreturnRecordDetailDO customerreturnRecordDetailDO : customerreturnRecordDetailDOS) { + if (deliver.getItemCode().equals(detailDO.getItemCode()) && deliver.getBatch().equals(detailDO.getBatch()) + && deliver.getPackingNumber().equals(detailDO.getPackingNumber())) { + if (deliver.getItemCode().equals(customerreturnRecordDetailDO.getItemCode()) && deliver.getBatch().equals(customerreturnRecordDetailDO.getFromBatch()) + && deliver.getPackingNumber().equals(customerreturnRecordDetailDO.getFromPackingNumber())) { + hashMap.put(detailDO.getId(), qty = qty.add(customerreturnRecordDetailDO.getQty())); + + } + } + } + if (hashMap.get(detailDO.getId()) != null) { + if (deliver.getQty().compareTo((hashMap.get(detailDO.getId())).add(detailDO.getQty())) == -1) { + throw exception(QTY_EXCEPTION, "当前客户退货申请单的" + detailDO.getId() + "的退货数量已超出当前发货记录的发货数量" + (hashMap.get(detailDO.getId())).add(detailDO.getQty()).subtract(deliver.getQty()) + "个"); + } + } + } + } + } + return hashMap; + } + /** * 校验成品发货记录子表并赋值 + * * @param mainDo * @param detailDO */ - private void validateDeliverRecordDetail(CustomerreturnRequestMainDO mainDo,CustomerreturnRequestDetailDO detailDO){ + private void validateDeliverRecordDetail(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDO) { List deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(mainDo.getDeliverRecordNumber()); - if(deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0){ + if (deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0) { Boolean result = false; for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) { if ( @@ -670,28 +714,25 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque // deliver.getSoLine().equals(detailDO.getSoLine()) && deliver.getItemCode().equals(detailDO.getItemCode()) && deliver.getBatch().equals(detailDO.getBatch()) && - deliver.getPackingNumber().equals(detailDO.getPackingNumber())) - { - detailDO.setQty(deliver.getQty()); - detailDO.setUom(deliver.getUom()); + deliver.getPackingNumber().equals(detailDO.getPackingNumber())) { result = true; } } - if(!result){ - throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" + if (!result) { + throw exception(DELIVER_RECORD_DETAIL_EXCEPTION, "物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" + mainDo.getDeliverRecordNumber() + "中"); // throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"销售订单号" + detailDO.getSoNumber() + "销售订单行" + detailDO.getSoLine() // + "物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" // + createReqVO.getDeliverRecordNumber() + "中"); } - } - else { + } else { throw exception(DELIVER_RECORD_DETAIL_NOT_EXISTS); } } /** * 校验物品基础信息并赋值 + * * @param itemCode */ private ItembasicDO validatorItembasic(String itemCode) { @@ -700,6 +741,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque /** * 校验出库库位类型是否一致 + * * @param fromLocationCode * @param businesstypeDO */ @@ -709,15 +751,17 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque /** * 校验出库库位类型是否一致 + * * @param toLocationCode * @param businesstypeDO */ private void validatorIfInFromLocationType(String toLocationCode, BusinesstypeDO businesstypeDO) { - jobUtils.ifInFromLocationType(toLocationCode, businesstypeDO); + jobUtils.ifInFromLocationType(toLocationCode, businesstypeDO); } /** * 校验库存状态是否一致 + * * @param inventoryStatus * @param businesstypeDO */ @@ -727,14 +771,15 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque /** * 校验库存余额 + * * @param */ private void validatorBalance(CustomerreturnRequestDetailDO detailDO) { ArrayList list = new ArrayList<>(); list.add(detailDO.getInventoryStatus()); - if("CUST".equals(detailDO.getFromLocationCode())){ - List balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(),detailDO.getPackingNumber() - ,detailDO.getBatch(),detailDO.getFromLocationCode(),list); + if ("CUST".equals(detailDO.getFromLocationCode())) { + List balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber() + , detailDO.getBatch(), detailDO.getFromLocationCode(), list); isqty(detailDO.getQty(), balance.get(0).getQty()); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java index a1d67175..000a60fd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customersettleRequest/CustomersettleRequestMainServiceImpl.java @@ -9,21 +9,25 @@ import com.win.framework.common.util.validation.ValidationUtils; 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.api.user.AdminUserApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.customersettleRecord.vo.CustomersettleRecordDetailCreateReqVO; import com.win.module.wms.controller.customersettleRecord.vo.CustomersettleRecordMainCreateReqVO; import com.win.module.wms.controller.customersettleRequest.vo.*; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.customersettleRecord.CustomersettleRecordDetailConvert; import com.win.module.wms.convert.customersettleRecord.CustomersettleRecordMainConvert; import com.win.module.wms.convert.customersettleRequest.CustomersettleRequestDetailConvert; import com.win.module.wms.convert.customersettleRequest.CustomersettleRequestMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.customersettleRecord.CustomersettleRecordDetailDO; import com.win.module.wms.dal.dataobject.customersettleRecord.CustomersettleRecordMainDO; import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestDetailDO; import com.win.module.wms.dal.dataobject.customersettleRequest.CustomersettleRequestMainDO; import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.mysql.customersettleRecord.CustomersettleRecordDetailMapper; import com.win.module.wms.dal.mysql.customersettleRecord.CustomersettleRecordMainMapper; import com.win.module.wms.dal.mysql.customersettleRequest.CustomersettleRequestDetailMapper; @@ -42,12 +46,14 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Validator; +import java.math.BigDecimal; import java.time.LocalDateTime; 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.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static com.win.module.wms.enums.ErrorCodeConstants.*; /** @@ -84,6 +90,8 @@ public class CustomersettleRequestMainServiceImpl implements CustomersettleReque private TrendsApi trendsApi; @Resource private SerialNumberApi serialNumberApi; + @Resource + private AdminUserApi userApi; @Override public Long createCustomersettleRequestMain(CustomersettleRequestMainCreateReqVO createReqVO) { // 插入 @@ -270,14 +278,35 @@ public class CustomersettleRequestMainServiceImpl implements CustomersettleReque customersettleRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); CustomersettleRecordMainDO convert = CustomersettleRecordMainConvert.INSTANCE.convert(customersettleRecordMainCreateReqVO); customersettleRecordMainMapper.insert(convert); + List transactionCreateReqVOList = new ArrayList<>(); for (CustomersettleRequestDetailDO customersettleRequestDetailDO : detailDOList) { CustomersettleRecordDetailCreateReqVO customersettleRecordDetailCreateReqVO = new CustomersettleRecordDetailCreateReqVO(); BeanUtils.copyProperties(customersettleRequestDetailDO, customersettleRecordDetailCreateReqVO); customersettleRecordDetailCreateReqVO.setNumber(number); customersettleRecordDetailCreateReqVO.setMasterId(convert.getId().toString()); - customersettleRecordDetailMapper.insert(CustomersettleRecordDetailConvert.INSTANCE.convert(customersettleRecordDetailCreateReqVO)); - trendsApi.createTrends(mainDO.getId(), "CustomersettleRecord", "客户结算申请生成客户结算记录", TrendsTypeEnum.CREATE); + CustomersettleRecordDetailDO recordDetailDO = CustomersettleRecordDetailConvert.INSTANCE.convert(customersettleRecordDetailCreateReqVO); + customersettleRecordDetailMapper.insert(recordDetailDO); + //添加库存事务list + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(recordDetailDO, transactionCreateReqVO); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(mainDO.getBusinessType()); + transactionCreateReqVO.setOwnerCode(recordDetailDO.getOwnerCode()); + transactionCreateReqVO.setItemCode(recordDetailDO.getItemCode()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(recordDetailDO.getPackingNumber()); + transactionCreateReqVO.setBatch(recordDetailDO.getBatch()); + transactionCreateReqVO.setContainerNumber(null); + transactionCreateReqVO.setAmount(recordDetailDO.getAmount()); + transactionCreateReqVO.setWarehouseCode(mainDO.getFromWarehouseCode()); + transactionCreateReqVO.setLocationCode(recordDetailDO.getFromLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVO); } + trendsApi.createTrends(mainDO.getId(), "CustomersettleRecord", "客户结算申请生成客户结算记录", TrendsTypeEnum.CREATE); } @Override diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java index 0e305cce..72fc2d52 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java @@ -614,7 +614,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService deliverJobDetailDo.setUpdateTime(null); deliverJobDetailDo.setUpdater(null); if("TRUE".equals(businesstypeDO.getUseOnTheWay())){ - deliverJobDetailDo.setToLocationCode("FAC_INTRANS"); + deliverJobDetailDo.setToLocationCode("CUST"); }else { deliverJobDetailDo.setToLocationCode(null); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java index 61589cd1..7b02784d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveJob/InventorymoveJobMainServiceImpl.java @@ -12,6 +12,7 @@ import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO; import com.win.module.wms.controller.inventorymoveJob.vo.*; +import com.win.module.wms.controller.purchasereturnJob.vo.PurchasereturnJobDetailUpdateReqVO; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobDetailDO; @@ -193,7 +194,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ inventorymoveJobMainDO.setAcceptUserId(String.valueOf(userId)); inventorymoveJobMainDO.setAcceptUserName(userRespDTO.getNickname()); inventorymoveJobMainDO.setAcceptTime(LocalDateTime.now()); - trendsApi.createTrends(id, "MoveJob", "承接了库存转移任务", TrendsTypeEnum.UPDATE); + trendsApi.createTrends(id, "InventoryMoveJob", "承接了库存转移任务", TrendsTypeEnum.UPDATE); return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO); } @@ -209,7 +210,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ inventorymoveJobMainDO.setAcceptUserId(null); inventorymoveJobMainDO.setAcceptUserName(null); inventorymoveJobMainDO.setAcceptTime(null); - trendsApi.createTrends(id, "MoveJob", "取消了库存转移任务", TrendsTypeEnum.UPDATE); + trendsApi.createTrends(id, "InventoryMoveJob", "取消了库存转移任务", TrendsTypeEnum.UPDATE); return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO); } @@ -222,7 +223,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ throw exception(DELIVER_JOB_MAIN_STATUS_ERROR); } inventorymoveJobMainDO.setStatus(jobStatusState.getState().getCode()); - trendsApi.createTrends(id, "MoveJob", "关闭了库存转移任务", TrendsTypeEnum.UPDATE); + trendsApi.createTrends(id, "InventoryMoveJob", "关闭了库存转移任务", TrendsTypeEnum.UPDATE); return inventorymoveJobMainMapper.updateById(inventorymoveJobMainDO); } @@ -231,7 +232,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ public String executeInventorymoveJobMain(InventorymoveJobMainUpdateReqVO inventorymoveJobMainUpdateReqVO) { RecordsettingDO recordsettingDO = null; BusinesstypeDO businesstypeDO = null; - String number = ""; + String number = ""; //查询数据 InventorymoveJobMainDO inventorymoveJobMainDO = this.validateInventorymoveJobMainExists(inventorymoveJobMainUpdateReqVO.getId()); List subList = inventorymoveJobDetailService.selectList(inventorymoveJobMainDO.getId()); @@ -259,26 +260,30 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ inventorymoveRecordMainDO.setExecuteTime(LocalDateTime.now()); inventorymoveRecordMainDO.setActiveDate(LocalDateTime.now()); inventorymoveRecordMainDO.setDueTime(inventorymoveJobMainDO.getRequestDueTime()); - if("HoldToOkJob".equals(inventorymoveRecordMainDO.getBusinessType())){ + if ("HoldToOkJob".equals(inventorymoveRecordMainDO.getBusinessType())) { number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode()); recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord"); - } else if("OkToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())){ + } else if ("OkToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())) { number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode()); recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord"); - } else if("HoldToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())){ + } else if ("HoldToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())) { number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode()); recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord"); - } else if("ScrapToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())){ + } else if ("ScrapToHoldJob".equals(inventorymoveRecordMainDO.getBusinessType())) { number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode()); recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord"); - } else if("OkToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())){ + } else if ("OkToScrapJob".equals(inventorymoveRecordMainDO.getBusinessType())) { number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode()); recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord"); + }else { + number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_RECORD.getCode()); + recordsettingDO = recordsettingService.selectRecordsettingExist("InventoryMoveRecord"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord"); } inventorymoveRecordMainDO.setNumber(number); inventorymoveRecordMainDO.setBusinessType(businesstypeDO.getCode()); @@ -290,84 +295,78 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ List inventorymoveRecordDetailDOList = new ArrayList<>(); //库存事务 List transactionCreateReqVOList = new ArrayList<>(); - subList.forEach(subListItem -> { - inventorymoveJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { - // 匹配任务子表与参数中子表 - if (DetailUpdateItem.getId().equals(subListItem.getId())) { - List> recordList = DetailUpdateItem.getRecordList(); - recordList.forEach(recordListItem -> {InventorymoveRecordDetailDO inventorymoveRecordDetailDO = new InventorymoveRecordDetailDO(); - BeanUtils.copyProperties(DetailUpdateItem, inventorymoveRecordDetailDO); - inventorymoveRecordDetailDO.setJobDetailId(DetailUpdateItem.getId().toString()); - inventorymoveRecordDetailDO.setId(null); - inventorymoveRecordDetailDO.setCreator(null); - inventorymoveRecordDetailDO.setCreateTime(LocalDateTime.now()); - inventorymoveRecordDetailDO.setUpdater(null); - inventorymoveRecordDetailDO.setUpdateTime(null); - inventorymoveRecordDetailDO.setNumber(inventorymoveRecordMainDO.getNumber()); - inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType()); - inventorymoveRecordDetailDO.setMasterId(inventorymoveRecordMainDO.getId().toString()); - inventorymoveRecordDetailDO.setQty(new BigDecimal(recordListItem.get("handleQty"))); - inventorymoveRecordDetailDO.setToPackingNumber(recordListItem.get("toPackingNumber")==null?"":recordListItem.get("toPackingNumber")); - inventorymoveRecordDetailDO.setToContainerNumber(recordListItem.get("toContainerNumber")==null?"":recordListItem.get("toContainerNumber")); - inventorymoveRecordDetailDO.setToBatch(recordListItem.get("toBatch")==null?"":recordListItem.get("toBatch")); - inventorymoveRecordDetailDO.setToLocationCode(recordListItem.get("toLocationCode")); - LocationDO toLocationDO = locationService.selectLocation(recordListItem.get("toLocationCode")); - inventorymoveRecordDetailDO.setToAreaCode(toLocationDO.getAreaCode()); - inventorymoveRecordDetailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode()); - LocationDO fromLocationDO = locationService.selectLocation(inventorymoveRecordDetailDO.getFromLocationCode()); - inventorymoveRecordDetailDO.setFromAreaCode(fromLocationDO.getAreaCode()); - inventorymoveRecordDetailDO.setFromLocationGroupCode(fromLocationDO.getLocationGroupCode()); - inventorymoveRecordDetailDO.setToInventoryStatus(recordListItem.get("toInventoryStatus")); - inventorymoveRecordDetailDO.setFromPackingNumber(DetailUpdateItem.getPackingNumber()); - inventorymoveRecordDetailDO.setFromContainerNumber(DetailUpdateItem.getContainerNumber()); - inventorymoveRecordDetailDO.setFromAreaCode(inventorymoveJobMainDO.getFromAreaCodes()); - inventorymoveRecordDetailDO.setToAreaCode(inventorymoveJobMainDO.getToAreaCodes()); - inventorymoveRecordDetailDO.setFromBatch(DetailUpdateItem.getBatch()); - inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType()); - inventorymoveRecordDetailDO.setFromInventoryStatus(DetailUpdateItem.getInventoryStatus()); - inventorymoveRecordDetailDOList.add(inventorymoveRecordDetailDO); - //添加库存事务list - // 入动作 - TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); - BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVO); - TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getInTransactionType()); - transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); - transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); - transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); - transactionCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType()); - transactionCreateReqVO.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode()); - transactionCreateReqVO.setRecordNumber(inventorymoveRecordMainDO.getNumber()); - transactionCreateReqVO.setId(null); - transactionCreateReqVO.setPackingNumber(DetailUpdateItem.getPackingNumber()); - transactionCreateReqVO.setBatch(DetailUpdateItem.getBatch()); - transactionCreateReqVO.setContainerNumber(DetailUpdateItem.getContainerNumber()); - transactionCreateReqVO.setInventoryStatus(DetailUpdateItem.getInventoryStatus()); - transactionCreateReqVO.setAmount(BigDecimal.ZERO); - transactionCreateReqVO.setLocationCode(recordListItem.get("toLocationCode").toString()); - transactionCreateReqVOList.add(transactionCreateReqVO); - // 出动作 - TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); - BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVOOut); - TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getOutTransactionType()); - transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); - transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); - transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); - transactionCreateReqVOOut.setBusinessType(inventorymoveJobMainDO.getBusinessType()); - transactionCreateReqVOOut.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode()); - transactionCreateReqVOOut.setRecordNumber(inventorymoveRecordMainDO.getNumber()); - transactionCreateReqVOOut.setId(null); - transactionCreateReqVOOut.setPackingNumber(DetailUpdateItem.getPackingNumber()); - transactionCreateReqVOOut.setBatch(DetailUpdateItem.getBatch()); - transactionCreateReqVOOut.setContainerNumber(DetailUpdateItem.getContainerNumber()); - transactionCreateReqVOOut.setInventoryStatus(DetailUpdateItem.getInventoryStatus()); - transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); - transactionCreateReqVOOut.setLocationCode(subListItem.getFromLocationCode()); - transactionCreateReqVOList.add(transactionCreateReqVOOut);}); - } - }); - }); - if(!inventorymoveRecordDetailDOList.isEmpty()) { - inventorymoveRecordDetailMapper.insertBatch(inventorymoveRecordDetailDOList); + for (InventorymoveJobDetailUpdateReqVO inventorymoveJobDetailUpdateReqVO : inventorymoveJobDetailUpdateReqVOList) { + InventorymoveRecordDetailDO inventorymoveRecordDetailDO = new InventorymoveRecordDetailDO(); + BeanUtils.copyProperties(inventorymoveJobDetailUpdateReqVO, inventorymoveRecordDetailDO); + inventorymoveRecordDetailDO.setJobDetailId(inventorymoveJobDetailUpdateReqVO.getId().toString()); + inventorymoveRecordDetailDO.setId(null); + inventorymoveRecordDetailDO.setCreator(null); + inventorymoveRecordDetailDO.setCreateTime(LocalDateTime.now()); + inventorymoveRecordDetailDO.setUpdater(null); + inventorymoveRecordDetailDO.setUpdateTime(null); + inventorymoveRecordDetailDO.setNumber(inventorymoveRecordMainDO.getNumber()); + inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType()); + inventorymoveRecordDetailDO.setMasterId(inventorymoveRecordMainDO.getId().toString()); + inventorymoveRecordDetailDO.setQty(inventorymoveJobDetailUpdateReqVO.getHandleQty()); + inventorymoveRecordDetailDO.setToPackingNumber(inventorymoveJobDetailUpdateReqVO.getToPackingNumber()); + inventorymoveRecordDetailDO.setToContainerNumber(inventorymoveJobDetailUpdateReqVO.getToContainerNumber()); + inventorymoveRecordDetailDO.setToBatch(inventorymoveJobDetailUpdateReqVO.getToBatch()); + inventorymoveRecordDetailDO.setToLocationCode(inventorymoveJobDetailUpdateReqVO.getToLocationCode()); + LocationDO toLocationDO = locationService.selectLocation(inventorymoveJobDetailUpdateReqVO.getToLocationCode()); + inventorymoveRecordDetailDO.setToAreaCode(toLocationDO.getAreaCode()); + inventorymoveRecordDetailDO.setToLocationGroupCode(toLocationDO.getLocationGroupCode()); + LocationDO fromLocationDO = locationService.selectLocation(inventorymoveRecordDetailDO.getFromLocationCode()); + inventorymoveRecordDetailDO.setFromAreaCode(fromLocationDO.getAreaCode()); + inventorymoveRecordDetailDO.setFromLocationGroupCode(fromLocationDO.getLocationGroupCode()); + inventorymoveRecordDetailDO.setToInventoryStatus(inventorymoveJobDetailUpdateReqVO.getToInventoryStatus()); + inventorymoveRecordDetailDO.setFromPackingNumber(inventorymoveJobDetailUpdateReqVO.getPackingNumber()); + inventorymoveRecordDetailDO.setFromContainerNumber(inventorymoveJobDetailUpdateReqVO.getContainerNumber()); + inventorymoveRecordDetailDO.setFromAreaCode(inventorymoveJobMainDO.getFromAreaCodes()); + inventorymoveRecordDetailDO.setToAreaCode(inventorymoveJobMainDO.getToAreaCodes()); + inventorymoveRecordDetailDO.setFromBatch(inventorymoveJobDetailUpdateReqVO.getBatch()); + inventorymoveRecordDetailDO.setInterfaceType(inventorymoveRecordMainDO.getInterfaceType()); + inventorymoveRecordDetailDO.setFromInventoryStatus(inventorymoveJobDetailUpdateReqVO.getInventoryStatus()); + inventorymoveRecordDetailDOList.add(inventorymoveRecordDetailDO); + //添加库存事务list + // 入动作 + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVO); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getInTransactionType()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(inventorymoveJobMainDO.getBusinessType()); + transactionCreateReqVO.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVO.setRecordNumber(inventorymoveRecordMainDO.getNumber()); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(inventorymoveJobDetailUpdateReqVO.getPackingNumber()); + transactionCreateReqVO.setBatch(inventorymoveJobDetailUpdateReqVO.getBatch()); + transactionCreateReqVO.setContainerNumber(inventorymoveJobDetailUpdateReqVO.getContainerNumber()); + transactionCreateReqVO.setInventoryStatus(inventorymoveJobDetailUpdateReqVO.getInventoryStatus()); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + transactionCreateReqVO.setLocationCode(inventorymoveJobDetailUpdateReqVO.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVO); + // 出动作 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(inventorymoveRecordDetailDO, transactionCreateReqVOOut); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(inventorymoveRecordMainDO.getOutTransactionType()); + transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(inventorymoveJobMainDO.getBusinessType()); + transactionCreateReqVOOut.setOwnerCode(inventorymoveRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVOOut.setRecordNumber(inventorymoveRecordMainDO.getNumber()); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOOut.setPackingNumber(inventorymoveJobDetailUpdateReqVO.getPackingNumber()); + transactionCreateReqVOOut.setBatch(inventorymoveJobDetailUpdateReqVO.getBatch()); + transactionCreateReqVOOut.setContainerNumber(inventorymoveJobDetailUpdateReqVO.getContainerNumber()); + transactionCreateReqVOOut.setInventoryStatus(inventorymoveJobDetailUpdateReqVO.getInventoryStatus()); + transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); + transactionCreateReqVOOut.setLocationCode(inventorymoveJobDetailUpdateReqVO.getFromLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + }; + if(!inventorymoveRecordDetailDOList.isEmpty()){ + inventorymoveRecordDetailMapper.insertBatch(inventorymoveRecordDetailDOList); } //增加库存事务 transactionService.createTransaction(transactionCreateReqVOList); @@ -376,7 +375,7 @@ public class InventorymoveJobMainServiceImpl implements InventorymoveJobMainServ //移除预计出 expectoutService.deleteExpectoutByJobNumber(inventorymoveJobMainDO.getNumber()); //变更记录 - trendsApi.createTrends(inventorymoveJobMainDO.getId(), inventorymoveJobMainDO.getBusinessType(), "执行了库存转移任务", TrendsTypeEnum.UPDATE); + trendsApi.createTrends(inventorymoveJobMainDO.getId(),inventorymoveJobMainDO.getBusinessType(),"执行了库存转移任务",TrendsTypeEnum.UPDATE); return number; - } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java index c7d8bda1..4372b27b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRecord/InventorymoveRecordMainServiceImpl.java @@ -77,33 +77,27 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa RecordsettingDO recordsettingDO = null; BusinesstypeDO businesstypeDO = null; // 插入 - InventorymoveRecordMainDO inventorymoveRecordMain = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO); - inventorymoveRecordMainMapper.insert(inventorymoveRecordMain); - // 插入 - InventorymoveRecordMainDO nventorymoveRecordMain = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO); - inventorymoveRecordMainMapper.insert(nventorymoveRecordMain); InventorymoveRecordMainDO mainDO = InventorymoveRecordMainConvert.INSTANCE.convert(createReqVO); + inventorymoveRecordMainMapper.insert(mainDO); List subDOList = InventorymoveRecordMainConvert.INSTANCE.convertList03(createReqVO.getSubList()); - if("HoldToOkRequest".equals(mainDO.getBusinessType())){ + if("HoldToOkRecord".equals(mainDO.getBusinessType())){ number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_RECORD.getCode()); - recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToOkRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToOkRecord"); - } else if("OkToHoldRequest".equals(mainDO.getBusinessType())){ + } else if("OkToHoldRecord".equals(mainDO.getBusinessType())){ number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_RECORD.getCode()); - recordsettingDO = recordsettingService.selectRecordsettingExist("OkToHoldRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToHoldRecord"); - } else if("HoldToScrapRequest".equals(mainDO.getBusinessType())){ + } else if("HoldToScrapRecord".equals(mainDO.getBusinessType())){ number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_RECORD.getCode()); - recordsettingDO = recordsettingService.selectRecordsettingExist("HoldToScrapRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("HoldToScrapRecord"); - } else if("ScrapToHoldRequest".equals(mainDO.getBusinessType())){ + } else if("ScrapToHoldRecord".equals(mainDO.getBusinessType())){ number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_RECORD.getCode()); - recordsettingDO = recordsettingService.selectRecordsettingExist("ScrapToHoldRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ScrapToHoldRecord"); - } else if("OkToScrapRequest".equals(mainDO.getBusinessType())){ + } else if("OkToScrapRecord".equals(mainDO.getBusinessType())){ number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode()); - recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord"); + }else if("InventoryMoveRecord".equals(mainDO.getBusinessType())){ + number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode()); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord"); } mainDO.setNumber(number); mainDO.setBusinessType(businesstypeDO.getCode()); @@ -169,7 +163,7 @@ public class InventorymoveRecordMainServiceImpl implements InventorymoveRecordMa //增加操作记录 trendsApi.createTrends(mainDO.getId(), "inventorymoveRecordMain", "增加了库存转移记录", TrendsTypeEnum.CREATE); // 返回 - return inventorymoveRecordMain.getId(); + return mainDO.getId(); } @Override diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java index 7cd689e1..bd7b14b8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventorymoveRequest/InventorymoveRequestMainServiceImpl.java @@ -150,37 +150,34 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest inventorymoveRequestDetailDO.setCreateTime(LocalDateTime.now()); validatelocation(inventorymoveRequestMainDO, inventorymoveRequestDetailDO); ItembasicDO itembasicDO = validteitembasic(inventorymoveRequestDetailDO); - //校验库存余额是否存在 - List inventoryStatus = new ArrayList<>(); //隔离转合格申请 if ("HOLD".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "OK".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { - inventoryStatus.add("HOLD"); String OkToScrapRequest = "HoldToOkRequest"; CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest); } //合格转隔离申请 - if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { - inventoryStatus.add("OK"); + else if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { String OkToScrapRequest = "OkToHoldRequest"; CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest); } //隔离转报废申请 - if ("HOLD".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { - inventoryStatus.add("HOLD"); + else if ("HOLD".equals(inventorymoveRequestDetailDO.getFromInventoryStatus()) && "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { String OkToScrapRequest = "HoldToScrapRequest"; CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest); } //报废转隔离申请 - if ("SCRAP".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { - inventoryStatus.add("SCRAP"); + else if ("SCRAP".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "HOLD".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { String OkToScrapRequest = "ScrapToHoldRequest"; CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest); } //合格转报废申请 - if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { - inventoryStatus.add("SCRAP"); + else if ("OK".equals(inventorymoveRequestDetailDO.getFromInventoryStatus())&& "SCRAP".equals(inventorymoveRequestDetailDO.getToInventoryStatus())) { String OkToScrapRequest = "OkToScrapRequest"; CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,OkToScrapRequest); + }//库存转移申请 + else { + String InventoryMoveRequest = "InventoryMoveRequest"; + CreateBusinessTypeAndRequestSetting(inventorymoveRequestMainDO,inventorymoveRequestDetailDO,itembasicDO,InventoryMoveRequest); } validtebalance(inventorymoveRequestDetailDO); inventorymoveRequestDetailDO.setToBatch(inventorymoveRequestDetailDO.getFromBatch()); @@ -224,16 +221,14 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest @Override public void updateInventorymoveRequestMain(InventorymoveRequestMainUpdateReqVO updateReqVO) { - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MoveRequest"); // 校验存在 validateInventorymoveRequestMainExists(updateReqVO.getId()); // 更新 InventorymoveRequestMainDO inventorymoveRequestMainDO = validatorToUpdate(updateReqVO); - if (RequestStatusEnum.HANDLING.getCode().equals(inventorymoveRequestMainDO.getStatus())) { - + this.generateJob(inventorymoveRequestMainDO, inventorymoveRequestDetailMapper.selectList(inventorymoveRequestMainDO.getId())); } - trendsApi.createTrends(requestsettingDO.getId(), "MoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE); + trendsApi.createTrends(inventorymoveRequestMainDO.getId(), "InventoryMoveRequest", "增加了库存移动申请", TrendsTypeEnum.CREATE); } private InventorymoveRequestMainDO validatorToUpdate(InventorymoveRequestMainUpdateReqVO updateReqVO) { @@ -294,73 +289,6 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest return inventorymoveRequestMainMapper.selectList(exportReqVO); } - /** - * 主表导入验证 - * - * @param mainDo - * @return - */ - private String validateInventorymoveRequestMainImport(InventorymoveRequestMainDO mainDo) { - StringBuilder message = new StringBuilder(); - try { - ValidationUtils.validate(validator, mainDo); - } catch (Exception ex) { - message.append(ex.getMessage()).append(","); - } - return message.toString(); - } - - /** - * 校验来源/目标库位基础信息 - * - * @param detailDo - * @return - */ - private void validatelocation(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDo) { - LocationDO fromLocationDO = locationService.selectLocation(detailDo.getFromLocationCode()); - if (fromLocationDO != null) { - detailDo.setFromLocationCode(fromLocationDO.getCode()); - mainDO.setFromWarehouseCode(fromLocationDO.getWarehouseCode()); - mainDO.setFromLocationTypes(fromLocationDO.getType()); - mainDO.setFromAreaCodes(fromLocationDO.getAreaCode()); - } - LocationDO toLocationDO = locationService.selectLocation(detailDo.getToLocationCode()); - if (toLocationDO != null) { - detailDo.setToLocationCode(toLocationDO.getCode()); - mainDO.setToWarehouseCode(toLocationDO.getWarehouseCode()); - mainDO.setToLocationTypes(fromLocationDO.getType()); - mainDO.setToAreaCodes(toLocationDO.getAreaCode()); - } - } - - /** - * 校验物品基础信息 - * - * @param detailDo - * @return - */ - private ItembasicDO validteitembasic(InventorymoveRequestDetailDO detailDo) { - ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); - detailDo.setItemDesc1(itembasicDO.getDesc1()); - detailDo.setItemDesc2(itembasicDO.getDesc2()); - detailDo.setItemName(itembasicDO.getName()); - detailDo.setUom(itembasicDO.getUom()); - detailDo.setProjectCode(itembasicDO.getProject()); - return itembasicDO; - } - - /** - * 校验库存余额是否存在 - * - * @param detailDo - */ - private void validtebalance(InventorymoveRequestDetailDO detailDo) { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add(detailDo.getFromInventoryStatus()); - jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() - , detailDo.getFromBatch(), detailDo.getFromLocationCode(), inventoryStatus); - } - /** * 导入子表校验 * @param mainDO @@ -394,9 +322,7 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest // mainDo.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); // } //隔离转合格申请 - if ("HOLD".equals(detailDo.getFromInventoryStatus())) { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("HOLD"); + if ("HOLD".equals(detailDo.getFromInventoryStatus()) && "OK".equals(detailDo.getToInventoryStatus())) { String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_OK_REQUEST.getCode()); detailDo.setNumber(number); // 校验业务类型 @@ -416,11 +342,8 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest mainDO.setRequestTime(LocalDateTime.now()); } } - //合格转隔离申请 - if ("OK".equals(detailDo.getFromInventoryStatus())) { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("OK"); + else if ("OK".equals(detailDo.getFromInventoryStatus()) && "HOLD".equals(detailDo.getToInventoryStatus())) { String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_HOLD_REQUEST.getCode()); mainDO.setNumber(number); // 校验业务类型 @@ -439,11 +362,8 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); } } - //隔离转报废申请 - if ("HOLD".equals(detailDo.getFromInventoryStatus())) { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("HOLD"); + else if ("HOLD".equals(detailDo.getFromInventoryStatus()) && "SCRAP".equals(detailDo.getToInventoryStatus())) { String number = serialNumberApi.generateCode(RuleCodeEnum.HOLD_TO_SCRAP_REQUEST.getCode()); mainDO.setNumber(number); // 校验业务类型 @@ -462,11 +382,8 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); } } - //报废转隔离申请 - if ("SCRAP".equals(detailDo.getFromInventoryStatus())) { - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("SCRAP"); + else if ("SCRAP".equals(detailDo.getFromInventoryStatus()) && "HOLD".equals(detailDo.getToInventoryStatus())) { String number = serialNumberApi.generateCode(RuleCodeEnum.SCRAP_TO_HOLD_REQUEST.getCode()); mainDO.setNumber(number); // 校验业务类型 @@ -485,9 +402,28 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); } } - //合格转报废 - if ("Ok".equals(detailDo.getFromInventoryStatus())) { + else if ("OK".equals(detailDo.getFromInventoryStatus()) && "SCRAP".equals(detailDo.getToInventoryStatus())) { + String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode()); + mainDO.setNumber(number); + // 校验业务类型 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); + mainDO.setBusinessType(businesstypeDO.getCode()); + validationBusinesstype(detailDo,businesstypeDO,messageDetail); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("OkToScrapRequest"); + if (requestsettingDO != null) { + mainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + } + //合格转报废 + else if ("OK".equals(detailDo.getFromInventoryStatus()) && "SCRAP".equals(detailDo.getToInventoryStatus())) { List inventoryStatus = new ArrayList<>(); inventoryStatus.add("SCRAP"); String number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_REQUEST.getCode()); @@ -497,7 +433,7 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest try { businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRequest"); mainDO.setBusinessType(businesstypeDO.getCode()); - validationBusinesstype(detailDo,businesstypeDO,messageDetail); + validationBusinesstype(detailDo, businesstypeDO, messageDetail); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; } @@ -508,7 +444,28 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest mainDO.setAutoExecute(requestsettingDO.getAutoExecute()); mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); } + }//库存转移申请 + else { + String number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_REQUEST.getCode()); + mainDO.setNumber(number); + // 校验业务类型 + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRequest"); + mainDO.setBusinessType(businesstypeDO.getCode()); + validationBusinesstype(detailDo,businesstypeDO,messageDetail); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InventoryMoveRequest"); + if (requestsettingDO != null) { + mainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } } + + try { validtebalance(detailDo); } catch (Exception ex) { @@ -643,6 +600,10 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode()); recordsettingDO = recordsettingService.selectRecordsettingExist("OkToScrapRecord"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapRecord"); + }else { + number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_RECORD.getCode()); + recordsettingDO = recordsettingService.selectRecordsettingExist("InventoryMoveRecord"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveRecord"); } inventorymoveRecordMainCreateReqVO.setNumber(number); inventorymoveRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); @@ -699,6 +660,10 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest number = serialNumberApi.generateCode(RuleCodeEnum.OK_TO_SCRAP_JOB.getCode()); jobsettingDO = jobsettingService.selectJobsettingExist("OkToScrapJob"); businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("OkToScrapJob"); + }else { + number = serialNumberApi.generateCode(RuleCodeEnum.INVENTORY_MOVE_JOB.getCode()); + jobsettingDO = jobsettingService.selectJobsettingExist("InventoryMoveJob"); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InventoryMoveJob"); } inventorymoveJobMainDO.setNumber(number); inventorymoveJobMainDO.setRequestTime(mainDO.getRequestTime()); @@ -893,4 +858,73 @@ public class InventorymoveRequestMainServiceImpl implements InventorymoveRequest public List getInventorymoveRequestMainList(CustomConditions conditions) { return inventorymoveRequestMainMapper.selectSeniorList(conditions); } + + + /** + * 主表导入验证 + * + * @param mainDo + * @return + */ + private String validateInventorymoveRequestMainImport(InventorymoveRequestMainDO mainDo) { + StringBuilder message = new StringBuilder(); + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验来源/目标库位基础信息 + * + * @param detailDo + * @return + */ + private void validatelocation(InventorymoveRequestMainDO mainDO, InventorymoveRequestDetailDO detailDo) { + LocationDO fromLocationDO = locationService.selectLocation(detailDo.getFromLocationCode()); + if (fromLocationDO != null) { + detailDo.setFromLocationCode(fromLocationDO.getCode()); + mainDO.setFromWarehouseCode(fromLocationDO.getWarehouseCode()); + mainDO.setFromLocationTypes(fromLocationDO.getType()); + mainDO.setFromAreaCodes(fromLocationDO.getAreaCode()); + } + LocationDO toLocationDO = locationService.selectLocation(detailDo.getToLocationCode()); + if (toLocationDO != null) { + detailDo.setToLocationCode(toLocationDO.getCode()); + mainDO.setToWarehouseCode(toLocationDO.getWarehouseCode()); + mainDO.setToLocationTypes(fromLocationDO.getType()); + mainDO.setToAreaCodes(toLocationDO.getAreaCode()); + } + } + + /** + * 校验物品基础信息 + * + * @param detailDo + * @return + */ + private ItembasicDO validteitembasic(InventorymoveRequestDetailDO detailDo) { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setUom(itembasicDO.getUom()); + detailDo.setProjectCode(itembasicDO.getProject()); + return itembasicDO; + } + + /** + * 校验库存余额是否存在 + * + * @param detailDo + */ + private void validtebalance(InventorymoveRequestDetailDO detailDo) { + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add(detailDo.getFromInventoryStatus()); + jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getFromPackingNumber() + , detailDo.getFromBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java index 80c748fc..fb65904b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java @@ -372,7 +372,7 @@ public class JobUtils { if (ifOutLocationType) { return true; } else { - throw exception(LOCATION_EXCEPTION, "出库库位" + plocationCode + "的库位类型" + locationDO.getType() + "与业务类型与业务类型" + + throw exception(LOCATION_EXCEPTION, "出库库位" + plocationCode + "的库位类型" + locationDO.getType() + "与业务类型" + businesstypeDO.getName() + "的出库库位类型" + businesstypeDO.getOutLocationTypes() + "不一致"); } }