From 6fee81d2319b0534d8be6bffd9667d97be360022 Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Wed, 6 Dec 2023 18:57:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=98=E7=82=B9=E8=B0=83=E6=95=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 2 +- .../CountadjustRecordMainMapper.java | 5 + .../CountadjustRequestMainServiceImpl.java | 105 ++++++++++++++++-- .../itembasic/ItembasicServiceImpl.java | 11 +- 4 files changed, 105 insertions(+), 18 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 32053b9e..fa1d4614 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 @@ -941,7 +941,7 @@ public interface ErrorCodeConstants { //盘点调整申请ErrorCode ErrorCode COUNTADJUST_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_156_000, "盘点调整申请主不存在"); ErrorCode COUNTADJUST_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_156_001, "盘点调整申请子不存在"); - ErrorCode COUNTADJUST_REQUEST_JOB_EXISTS = new ErrorCode(1_000_078_003, "盘点调整申请存在采购收货任务单"); + ErrorCode COUNTADJUST_REQUEST_RECORD_EXISTS = new ErrorCode(1_000_078_003, "盘点调整申请存在盘点调整记录单"); ErrorCode COUNTADJUST_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_078_004, "盘点调整申请状态不支持关闭"); ErrorCode COUNTADJUST_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_078_005, "盘点调整申请状态不支持提交"); ErrorCode COUNTADJUST_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_078_006, "盘点调整申请状态不支持审批同意"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRecord/CountadjustRecordMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRecord/CountadjustRecordMainMapper.java index 88f82bab..677f5328 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRecord/CountadjustRecordMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countadjustRecord/CountadjustRecordMainMapper.java @@ -68,6 +68,11 @@ public interface CountadjustRecordMainMapper extends BaseMapperX() + .eq(CountadjustRecordMainDO::getRequestNumber, requestNumber)); + } + default List selectSeniorList(CustomConditions conditions) { return selectList(QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countadjustRequest/CountadjustRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countadjustRequest/CountadjustRequestMainServiceImpl.java index d15c59b1..cd155de3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countadjustRequest/CountadjustRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countadjustRequest/CountadjustRequestMainServiceImpl.java @@ -5,23 +5,42 @@ import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; 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.countadjustRecord.vo.CountadjustRecordDetailCreateReqVO; +import com.win.module.wms.controller.countadjustRecord.vo.CountadjustRecordMainCreateReqVO; import com.win.module.wms.controller.countadjustRequest.vo.CountadjustRequestMainExportReqVO; import com.win.module.wms.controller.countadjustRequest.vo.CountadjustRequestMainPageReqVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.countadjustRecord.CountadjustRecordDetailConvert; +import com.win.module.wms.convert.countadjustRecord.CountadjustRecordMainConvert; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.countadjustRecord.CountadjustRecordMainDO; import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestDetailDO; import com.win.module.wms.dal.dataobject.countadjustRequest.CountadjustRequestMainDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; +import com.win.module.wms.dal.mysql.balance.BalanceMapper; +import com.win.module.wms.dal.mysql.countadjustRecord.CountadjustRecordDetailMapper; import com.win.module.wms.dal.mysql.countadjustRecord.CountadjustRecordMainMapper; import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestDetailMapper; import com.win.module.wms.dal.mysql.countadjustRequest.CountadjustRequestMainMapper; import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.enums.request.RequestStatusState; +import com.win.module.wms.service.transaction.TransactionService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; 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.*; /** @@ -40,7 +59,17 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain @Resource private CountadjustRecordMainMapper countadjustRecordMainMapper; @Resource + private CountadjustRecordDetailMapper countadjustRecordDetailMapper; + @Resource + private TransactionService transactionService; + @Resource + private BalanceMapper balanceMapper; + @Resource private TrendsApi trendsApi; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private JobUtils jobUtils; @Override public PageResult getCountadjustRequestMainSenior(CustomConditions conditions) { @@ -67,10 +96,10 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain public Integer closeCountadjustRequestMain(Long id) { // 校验存在存在下级单据 CountadjustRequestMainDO mainDO = validateCountadjustRequestMainExists(id); -// Long count = countadjustRecordMainMapper.selectByRequestNumber(mainDO.getNumber()); -// if(count > 0) { -// throw new ServiceException(COUNTADJUST_REQUEST_JOB_EXISTS); -// } + Long count = countadjustRecordMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(COUNTADJUST_REQUEST_RECORD_EXISTS); + } RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.close(); if(!flag) { @@ -93,7 +122,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { - this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); + this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); } trendsApi.createTrends(id, "countadjustRequest", "提交了到货校验申请", TrendsTypeEnum.UPDATE); return countadjustRequestMainMapper.updateById(mainDO); @@ -112,7 +141,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { - this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); + this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); } trendsApi.createTrends(id, "countadjustRequest", "审批同意了到货校验申请", TrendsTypeEnum.UPDATE); return countadjustRequestMainMapper.updateById(mainDO); @@ -130,7 +159,7 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain } mainDO.setStatus(requestStatusState.getState().getCode()); //调用执行方法 - this.generateJob(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); + this.generateRecord(mainDO, countadjustRequestDetailMapper.selectList(mainDO.getId())); trendsApi.createTrends(id, "countadjustRequest", "执行了到货校验申请", TrendsTypeEnum.UPDATE); return countadjustRequestMainMapper.updateById(mainDO); } @@ -151,12 +180,64 @@ public class CountadjustRequestMainServiceImpl implements CountadjustRequestMain } /** - * 生成收货检验任务,不要改动事务传播方式,否则会有事务问题 - * @param mainDO 收货检验主 - * @param detailDOList 收货检验子 + * 生成盘点调整记录,并更新库存 + * @param mainDO 盘点调整主 + * @param detailDOList 盘点调整子 */ - private void generateJob(CountadjustRequestMainDO mainDO, List detailDOList) { - + private void generateRecord(CountadjustRequestMainDO mainDO, List detailDOList) { + CountadjustRecordMainCreateReqVO countadjustRecordMainCreateReqVO = new CountadjustRecordMainCreateReqVO(); + BeanUtils.copyProperties(mainDO, countadjustRecordMainCreateReqVO); + countadjustRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); + String number = serialNumberApi.generateCode(RuleCodeEnum.COUNT_ADJUST_RECORD.getCode()); + countadjustRecordMainCreateReqVO.setNumber(number); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountadjustRecord"); + countadjustRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); + CountadjustRecordMainDO countadjustRecordMainDO = CountadjustRecordMainConvert.INSTANCE.convert(countadjustRecordMainCreateReqVO); + countadjustRecordMainMapper.insert(countadjustRecordMainDO); + List transactionCreateReqVOList = new ArrayList<>(); + for(CountadjustRequestDetailDO countadjustRequestDetailDO : detailDOList) { + CountadjustRecordDetailCreateReqVO countadjustRecordDetailCreateReqVO = new CountadjustRecordDetailCreateReqVO(); + BeanUtils.copyProperties(countadjustRequestDetailDO, countadjustRecordDetailCreateReqVO); + countadjustRecordDetailCreateReqVO.setNumber(number); + countadjustRecordDetailMapper.insert(CountadjustRecordDetailConvert.INSTANCE.convert(countadjustRecordDetailCreateReqVO)); + //添加库存事务list + BalanceDO balanceDO = balanceMapper.getBalanceQty(countadjustRecordDetailCreateReqVO.getPackingNumber(), countadjustRecordDetailCreateReqVO.getItemCode(), countadjustRecordDetailCreateReqVO.getBatch(), countadjustRecordDetailCreateReqVO.getInventoryStatus(), countadjustRecordDetailCreateReqVO.getLocationCode()); + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(countadjustRecordDetailCreateReqVO, transactionCreateReqVO); + //增加业务类型 + BusinesstypeDO countAdjustBusinesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountAdjust"); + transactionCreateReqVO.setBusinessType(countAdjustBusinesstypeDO.getCode()); + if(countadjustRecordDetailCreateReqVO.getAdjustQty().compareTo(BigDecimal.ZERO) > 0) { + TransactiontypeDO transactionTypeDOIn = jobUtils.selectDocumentFromTransactionType(countAdjustBusinesstypeDO.getInTransactionType()); + transactionCreateReqVO.setInventoryAction(transactionTypeDOIn.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactionTypeDOIn.getCode()); + } else { + TransactiontypeDO transactionTypeDOOut = jobUtils.selectDocumentFromTransactionType(countAdjustBusinesstypeDO.getOutTransactionType()); + transactionCreateReqVO.setInventoryAction(transactionTypeDOOut.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactionTypeDOOut.getCode()); + } + transactionCreateReqVO.setBusinessType(mainDO.getBusinessType()); + transactionCreateReqVO.setLocationCode(countadjustRecordDetailCreateReqVO.getLocationCode()); + transactionCreateReqVO.setOwnerCode(countadjustRecordDetailCreateReqVO.getOwnerCode()); + transactionCreateReqVO.setSinglePrice(balanceDO.getSinglePrice()); + transactionCreateReqVO.setAmount(balanceDO.getAmount()); + transactionCreateReqVO.setArriveDate(balanceDO.getArriveDate()); + transactionCreateReqVO.setProduceDate(balanceDO.getProduceDate()); + transactionCreateReqVO.setExpireDate(balanceDO.getExpireDate()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setQty(countadjustRecordDetailCreateReqVO.getAdjustQty().abs());//绝对值 + transactionCreateReqVO.setInventoryStatus(countadjustRecordDetailCreateReqVO.getInventoryStatus()); + transactionCreateReqVO.setWarehouseCode(countadjustRecordMainDO.getWarehouseCode()); + transactionCreateReqVO.setBatch(countadjustRecordDetailCreateReqVO.getBatch()); + transactionCreateReqVO.setWorker(String.valueOf(getLoginUserId())); + transactionCreateReqVO.setPackingNumber(countadjustRecordDetailCreateReqVO.getPackingNumber()); + transactionCreateReqVOList.add(transactionCreateReqVO); + } + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //变更记录 + trendsApi.createTrends(countadjustRecordMainDO.getId(), "countadjustRequest", "生成了盘点调整记录", TrendsTypeEnum.CREATE); } private CountadjustRequestMainDO validateCountadjustRequestMainExists(Long id) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java index a8ebac4c..ddffc36e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java @@ -13,7 +13,6 @@ import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.wms.controller.itembasic.vo.*; import com.win.module.wms.convert.itembasic.ItembasicConvert; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; -import com.win.module.wms.dal.dataobject.owner.OwnerDO; import com.win.module.wms.dal.mysql.itembasic.ItembasicMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -97,10 +96,12 @@ public class ItembasicServiceImpl implements ItembasicService { public List getItembasicList(CustomConditions conditions) { return itembasicMapper.selectSeniorList(conditions); } + @Override public List getItembasicList() { return itembasicMapper.selectAllList(); } + @Override public PageResult getItembasicPage(ItembasicPageReqVO pageReqVO) { return itembasicMapper.selectPage(pageReqVO); @@ -288,19 +289,19 @@ public class ItembasicServiceImpl implements ItembasicService { } @VisibleForTesting private void validateIsStdPackExists(String stdPack) { - if (stdPack == null || stdPack == null) { + if (stdPack == null) { throw exception(ITEMBASIC_IS_STDPACK_NOT_EXISTS); } } @VisibleForTesting private void validateEnableBuyExists(String enableBuy) { - if (enableBuy == null || enableBuy == null) { + if (enableBuy == null) { throw exception(ITEMBASIC_ENABLE_BUY_NOT_EXISTS); } } @VisibleForTesting private void validateEnableMakeExists(String enableMark) { - if (enableMark == null || enableMark == null) { + if (enableMark == null) { throw exception(ITEMBASIC_ENABLE_MAKE_NOT_EXISTS); } } @@ -348,7 +349,7 @@ public class ItembasicServiceImpl implements ItembasicService { } //公共方法 查询物料 public ItembasicDO selectItembasic(String code) { - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("code",code); queryWrapper.eq("available","TRUE"); // queryWrapper.eq("status","ENABLE");