Browse Source

检验任务执行修改库存事务。

master
刘忱 2 years ago
parent
commit
03fa2c0c36
  1. 26
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectJob/vo/InspectJobDetailUpdateReqVO.java
  2. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java
  3. 52
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java
  4. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java
  5. 37
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java
  6. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java

26
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectJob/vo/InspectJobDetailUpdateReqVO.java

@ -1,14 +1,12 @@
package com.win.module.wms.controller.inspectJob.vo; package com.win.module.wms.controller.inspectJob.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 检验任务子更新 Request VO") @Schema(description = "管理后台 - 检验任务子更新 Request VO")
@Data @Data
@ -44,22 +42,4 @@ public class InspectJobDetailUpdateReqVO extends InspectJobDetailBaseVO {
@NotNull(message = "到库存状态不能为空") @NotNull(message = "到库存状态不能为空")
private String toInventoryStatus; private String toInventoryStatus;
@Schema(description = "单价")
private BigDecimal singlePrice;
@Schema(description = "金额")
private BigDecimal amount;
@Schema(description = "到货日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime arriveDate;
@Schema(description = "生产日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime produceDate;
@Schema(description = "失效日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime expireDate;
} }

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java

@ -77,6 +77,19 @@ public interface BalanceMapper extends BaseMapperX<BalanceDO> {
return result > 0; return result > 0;
} }
/**
* 更新库存余额数量出库qty是负数
*/
default BalanceDO getBalanceQty(String packingNumber, String itemCode, String batch, String inventoryStatus, String locationCode) {
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("packing_number", packingNumber);
queryWrapper.eq("item_code", itemCode);
queryWrapper.eq("batch", batch);
queryWrapper.eq("inventory_status", inventoryStatus);
queryWrapper.eq("location_code", locationCode);
return selectOne(queryWrapper);
}
default PageResult<BalanceDO> selectPage(BalancePageReqVO reqVO) { default PageResult<BalanceDO> selectPage(BalancePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BalanceDO>() return selectPage(reqVO, new LambdaQueryWrapperX<BalanceDO>()
.eqIfPresent(BalanceDO::getPackingNumber, reqVO.getPackingNumber()) .eqIfPresent(BalanceDO::getPackingNumber, reqVO.getPackingNumber())

52
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectJob/InspectJobMainServiceImpl.java

@ -12,12 +12,14 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.inspectJob.vo.*; import com.win.module.wms.controller.inspectJob.vo.*;
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO;
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.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.inspectJob.InspectJobMainDO; import com.win.module.wms.dal.dataobject.inspectJob.InspectJobMainDO;
import com.win.module.wms.dal.dataobject.inspectRecord.InspectRecordDetailDO; import com.win.module.wms.dal.dataobject.inspectRecord.InspectRecordDetailDO;
import com.win.module.wms.dal.dataobject.inspectRecord.InspectRecordMainDO; import com.win.module.wms.dal.dataobject.inspectRecord.InspectRecordMainDO;
import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO;
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; 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.inspectJob.InspectJobDetailMapper; import com.win.module.wms.dal.mysql.inspectJob.InspectJobDetailMapper;
import com.win.module.wms.dal.mysql.inspectJob.InspectJobMainMapper; import com.win.module.wms.dal.mysql.inspectJob.InspectJobMainMapper;
import com.win.module.wms.dal.mysql.inspectRecord.InspectRecordDetailMapper; import com.win.module.wms.dal.mysql.inspectRecord.InspectRecordDetailMapper;
@ -77,6 +79,8 @@ public class InspectJobMainServiceImpl implements InspectJobMainService {
private TransactionService transactionService; private TransactionService transactionService;
@Resource @Resource
private ExpectinService expectinService; private ExpectinService expectinService;
@Resource
private BalanceMapper balanceMapper;
@Override @Override
public InspectJobMainDO getInspectJobMain(Long id) { public InspectJobMainDO getInspectJobMain(Long id) {
@ -219,6 +223,8 @@ public class InspectJobMainServiceImpl implements InspectJobMainService {
inspectRecordDetailDO.setUpdater(null); inspectRecordDetailDO.setUpdater(null);
inspectRecordDetailDO.setUpdateTime(null); inspectRecordDetailDO.setUpdateTime(null);
inspectRecordDetailDOList.add(inspectRecordDetailDO); inspectRecordDetailDOList.add(inspectRecordDetailDO);
//查询库存余额
BalanceDO balanceDO = balanceMapper.getBalanceQty(inspectJobDetailUpdateReqVO.getPackingNumber(), inspectJobMainUpdateReqVO.getItemCode(), inspectJobMainUpdateReqVO.getBatch(), inspectJobDetailUpdateReqVO.getInventoryStatus(), inspectJobDetailUpdateReqVO.getFromLocationCode());
//添加库存事务入list //添加库存事务入list
TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO();
BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVOIn); BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVOIn);
@ -226,21 +232,36 @@ public class InspectJobMainServiceImpl implements InspectJobMainService {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectJob"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectJob");
transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode());
TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType());
transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction());
transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode()); transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode());
transactionCreateReqVOIn.setRecordNumber(number); transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setQty(inspectJobDetailUpdateReqVO.getGoodQty());
transactionCreateReqVOIn.setBatch(inspectRecordMainDO.getBatch()); transactionCreateReqVOIn.setBatch(inspectRecordMainDO.getBatch());
transactionCreateReqVOIn.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); transactionCreateReqVOIn.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOIn.setInventoryStatus(inspectJobDetailUpdateReqVO.getToInventoryStatus()); transactionCreateReqVOIn.setInventoryStatus(inspectJobDetailUpdateReqVO.getToInventoryStatus());
transactionCreateReqVOIn.setSinglePrice(inspectJobDetailUpdateReqVO.getSinglePrice()); transactionCreateReqVOIn.setSinglePrice(balanceDO.getSinglePrice());
transactionCreateReqVOIn.setAmount(inspectJobDetailUpdateReqVO.getAmount()); transactionCreateReqVOIn.setAmount(balanceDO.getAmount());
transactionCreateReqVOIn.setArriveDate(inspectJobDetailUpdateReqVO.getArriveDate()); transactionCreateReqVOIn.setArriveDate(balanceDO.getArriveDate());
transactionCreateReqVOIn.setProduceDate(inspectJobDetailUpdateReqVO.getProduceDate()); transactionCreateReqVOIn.setProduceDate(balanceDO.getProduceDate());
transactionCreateReqVOIn.setExpireDate(inspectJobDetailUpdateReqVO.getExpireDate()); transactionCreateReqVOIn.setExpireDate(balanceDO.getExpireDate());
transactionCreateReqVOIn.setId(null); transactionCreateReqVOIn.setId(null);
//待确定库存事务信息 if(inspectJobDetailUpdateReqVO.getGoodQty() != null && inspectJobDetailUpdateReqVO.getGoodQty().compareTo(BigDecimal.ZERO) > 0) {
transactionCreateReqVOList.add(transactionCreateReqVOIn); TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(transactionCreateReqVOIn, transactionCreateReqVO);
transactionCreateReqVO.setInventoryAction("OK");
transactionCreateReqVO.setQty(inspectJobDetailUpdateReqVO.getGoodQty());
transactionCreateReqVOList.add(transactionCreateReqVO);
} else if (inspectJobDetailUpdateReqVO.getCrackQty() != null && inspectJobDetailUpdateReqVO.getCrackQty().compareTo(BigDecimal.ZERO) > 0) {
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(transactionCreateReqVOIn, transactionCreateReqVO);
transactionCreateReqVO.setInventoryAction("SCRAP");
transactionCreateReqVO.setQty(inspectJobDetailUpdateReqVO.getCrackQty());
transactionCreateReqVOList.add(transactionCreateReqVO);
} else if (inspectJobDetailUpdateReqVO.getFailedQty() != null && inspectJobDetailUpdateReqVO.getFailedQty().compareTo(BigDecimal.ZERO) > 0) {
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO();
BeanUtils.copyProperties(transactionCreateReqVOIn, transactionCreateReqVO);
transactionCreateReqVO.setInventoryAction("NOK");
transactionCreateReqVO.setQty(inspectJobDetailUpdateReqVO.getFailedQty());
transactionCreateReqVOList.add(transactionCreateReqVO);
}
//添加库存事务出list //添加库存事务出list
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO();
BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVOOut); BeanUtils.copyProperties(inspectRecordDetailDO, transactionCreateReqVOOut);
@ -252,13 +273,14 @@ public class InspectJobMainServiceImpl implements InspectJobMainService {
transactionCreateReqVOOut.setBatch(inspectRecordMainDO.getBatch()); transactionCreateReqVOOut.setBatch(inspectRecordMainDO.getBatch());
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId()));
transactionCreateReqVOOut.setRecordNumber(number); transactionCreateReqVOOut.setRecordNumber(number);
transactionCreateReqVOOut.setQty(inspectJobDetailUpdateReqVO.getGoodQty()); //出库数量为子表数量,不管合格不合格都要出掉
transactionCreateReqVOIn.setQty(inspectJobDetailUpdateReqVO.getQty());
transactionCreateReqVOOut.setInventoryStatus(inspectJobDetailUpdateReqVO.getInventoryStatus()); transactionCreateReqVOOut.setInventoryStatus(inspectJobDetailUpdateReqVO.getInventoryStatus());
transactionCreateReqVOOut.setSinglePrice(inspectJobDetailUpdateReqVO.getSinglePrice()); transactionCreateReqVOOut.setSinglePrice(balanceDO.getSinglePrice());
transactionCreateReqVOOut.setAmount(inspectJobDetailUpdateReqVO.getAmount()); transactionCreateReqVOOut.setAmount(balanceDO.getAmount());
transactionCreateReqVOOut.setArriveDate(inspectJobDetailUpdateReqVO.getArriveDate()); transactionCreateReqVOOut.setArriveDate(balanceDO.getArriveDate());
transactionCreateReqVOOut.setProduceDate(inspectJobDetailUpdateReqVO.getProduceDate()); transactionCreateReqVOOut.setProduceDate(balanceDO.getProduceDate());
transactionCreateReqVOOut.setExpireDate(inspectJobDetailUpdateReqVO.getExpireDate()); transactionCreateReqVOOut.setExpireDate(balanceDO.getExpireDate());
transactionCreateReqVOOut.setId(null); transactionCreateReqVOOut.setId(null);
//待确定库存事务信息 //待确定库存事务信息
transactionCreateReqVOList.add(transactionCreateReqVOOut); transactionCreateReqVOList.add(transactionCreateReqVOOut);

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java

@ -365,7 +365,6 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService
} }
return; return;
} }
InspectRequestDetailDO inspectRequestDetailDOTmp = detailDOList.get(0);
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>(); List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
InspectJobMainDO inspectJobMainDO = InspectJobMainConvert.INSTANCE.convert(mainDO); InspectJobMainDO inspectJobMainDO = InspectJobMainConvert.INSTANCE.convert(mainDO);
inspectJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); inspectJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());

37
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java

@ -453,16 +453,14 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
} }
for(PurchasereceiptRequestDetailDO detailDO : detailDOList) { for(PurchasereceiptRequestDetailDO detailDO : detailDOList) {
List<PurchasereceiptRequestDetailDO> list; List<PurchasereceiptRequestDetailDO> list;
//从map取出list if (key.equals("item")) {//按零件拆分
switch (key) { list = listMap.get(detailDO.getItemCode());
case "item": } else if (key.equals("container")) {//按器具拆分
list = listMap.get(detailDO.getItemCode()); list = listMap.get(detailDO.getContainerNumber());
case "container": } else if (key.equals("location")) {//按库位拆分
list = listMap.get(detailDO.getContainerNumber()); list = listMap.get(detailDO.getDefaultToLocationCode());
case "location": } else {
list = listMap.get(detailDO.getFromLocationCode()); list = listMap.get(key);
default:
list = listMap.get(key);
} }
if(list == null) { if(list == null) {
list = new ArrayList<>(); list = new ArrayList<>();
@ -470,25 +468,24 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
//向list增加数据 //向list增加数据
list.add(detailDO); list.add(detailDO);
//放回map //放回map
switch (key) { if (key.equals("item")) {//按零件拆分
case "item": listMap.put(detailDO.getItemCode(), list);
listMap.put(detailDO.getItemCode(), list); } else if (key.equals("container")) {//按器具拆分
case "container": listMap.put(detailDO.getContainerNumber(), list);
listMap.put(detailDO.getContainerNumber(), list); } else if (key.equals("location")) {//按库位拆分
case "location": listMap.put(detailDO.getDefaultToLocationCode(), list);
listMap.put(detailDO.getFromLocationCode(), list); } else {
default: listMap.put(key, list);
listMap.put(key, list);
} }
} }
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("PurchaseReceiptJob"); JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("PurchaseReceiptJob");
//组装任务数据 //组装任务数据
for(String mapKey : listMap.keySet()) { for(String mapKey : listMap.keySet()) {
List<PurchasereceiptRequestDetailDO> purchasereceiptRequestDetailDOList = listMap.get(mapKey); List<PurchasereceiptRequestDetailDO> purchasereceiptRequestDetailDOList = listMap.get(mapKey);
List<PurchasereceiptJobDetailCreateReqVO> subList = new ArrayList<>();
for(int i = 0; i < purchasereceiptRequestDetailDOList.size(); i++) { for(int i = 0; i < purchasereceiptRequestDetailDOList.size(); i++) {
//PurchasereceiptJobMainCreateReqVO不包含id、创建人等信息 //PurchasereceiptJobMainCreateReqVO不包含id、创建人等信息
PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO; PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO;
List<PurchasereceiptJobDetailCreateReqVO> subList = new ArrayList<>();
if(i % count == 0) { if(i % count == 0) {
purchasereceiptJobMainCreateReqVO = PurchasereceiptJobMainConvert.INSTANCE.convert(mainDO); purchasereceiptJobMainCreateReqVO = PurchasereceiptJobMainConvert.INSTANCE.convert(mainDO);
purchasereceiptJobMainCreateReqVO.setRequestNumber(mainDO.getNumber()); purchasereceiptJobMainCreateReqVO.setRequestNumber(mainDO.getNumber());

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java

@ -110,12 +110,19 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
@Override @Override
public Long createPurchasereturnRequestMain(PurchasereturnRequestMainCreateReqVO createReqVO) { public Long createPurchasereturnRequestMain(PurchasereturnRequestMainCreateReqVO createReqVO) {
// 插入
PurchasereturnRequestMainDO purchasereturnRequestMain = PurchasereturnRequestMainConvert.INSTANCE.convert(createReqVO); PurchasereturnRequestMainDO purchasereturnRequestMain = PurchasereturnRequestMainConvert.INSTANCE.convert(createReqVO);
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode());
purchasereturnRequestMain.setNumber(number);
PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToCreate(createReqVO); PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToCreate(createReqVO);
List<PurchasereturnRequestDetailDO> subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
for (PurchasereturnRequestDetailDO detailDO : subDOList) {
detailDO.setMasterId(purchasereturnRequestMain.getId());
detailDO.setNumber(number);
}
purchasereturnRequestDetailMapper.insertBatch(subDOList);
//调用自动执行方法 //调用自动执行方法
if (RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) { if (RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) {
this.generateJob(purchasereturnRequestMain, subDOList);
} }
trendsApi.createTrends(purchasereturnRequestMain.getId(), "purchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE); trendsApi.createTrends(purchasereturnRequestMain.getId(), "purchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE);
// 返回 // 返回
@ -128,9 +135,6 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
validatePurchasereturnRequestMainExists(updateReqVO.getId()); validatePurchasereturnRequestMainExists(updateReqVO.getId());
// 更新主表 // 更新主表
PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToUpdate(updateReqVO); PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToUpdate(updateReqVO);
if (RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) {
}
trendsApi.createTrends(purchasereturnRequestMainDO.getId(), "purchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE); trendsApi.createTrends(purchasereturnRequestMainDO.getId(), "purchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE);
} }

Loading…
Cancel
Save