Browse Source

生产退料 直接记录 修改

master
陈薪名 2 years ago
parent
commit
936ccb01fe
  1. 1
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 53
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java

1
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java

@ -627,6 +627,7 @@ public interface ErrorCodeConstants {
ErrorCode PRODUCTIONRETURN_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_099_000, "生产退料记录主不存在"); ErrorCode PRODUCTIONRETURN_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_099_000, "生产退料记录主不存在");
//生产退料任务子ErrorCode //生产退料任务子ErrorCode
ErrorCode PRODUCTIONRETURN_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_099_001, "生产退料记录子不存在"); ErrorCode PRODUCTIONRETURN_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_099_001, "生产退料记录子不存在");
ErrorCode PRODUCTIONRETURN_RECORD_QTY_ERROR = new ErrorCode(1_000_099_002, "退料总数:【{}】 大于 库存余额数量:【{}】 ");
//生产订单主ErrorCode //生产订单主ErrorCode
ErrorCode WORK_MAIN_NOT_EXISTS = new ErrorCode(1_000_100_000, "生产订单主不存在"); ErrorCode WORK_MAIN_NOT_EXISTS = new ErrorCode(1_000_100_000, "生产订单主不存在");
//生产订单子ErrorCode //生产订单子ErrorCode

53
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRecord/ProductionreturnRecordMainServiceImpl.java

@ -30,6 +30,7 @@ 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.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordDetailMapper; import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordDetailMapper;
import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordMainMapper; import com.win.module.wms.dal.mysql.productionreturnRecord.ProductionreturnRecordMainMapper;
import com.win.module.wms.service.balance.BalanceService;
import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.recordsetting.RecordsettingService; import com.win.module.wms.service.recordsetting.RecordsettingService;
@ -60,6 +61,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated @Validated
public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRecordMainService { public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRecordMainService {
@Resource
private BalanceService balanceService;
@Resource @Resource
private BalanceMapper balanceMapper; private BalanceMapper balanceMapper;
@Resource @Resource
@ -121,16 +124,21 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
productionreturnRecordMainMapper.insert(mainDO); productionreturnRecordMainMapper.insert(mainDO);
//库存事务 //库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
// 求和
BigDecimal sumQty = BigDecimal.ZERO;
for (ProductionreturnRecordDetailDO detailDO : subDOList) {
sumQty = sumQty.add(detailDO.getQty());
}
for (ProductionreturnRecordDetailDO detailDO : subDOList) { for (ProductionreturnRecordDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId()); detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number); detailDO.setNumber(number);
// LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode()); LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode());
// if(locationDOFrom != null) { if(locationDOFrom != null) {
// detailDO.setFromAreaCode(locationDOFrom.getAreaCode()); detailDO.setFromAreaCode(locationDOFrom.getAreaCode());
// detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode());
// } else { } else {
// throw exception(LOCATION_NOT_EXISTS); throw exception(LOCATION_NOT_EXISTS);
// } }
LocationDO locationDOTo = locationService.selectLocation(detailDO.getToLocationCode()); LocationDO locationDOTo = locationService.selectLocation(detailDO.getToLocationCode());
if(locationDOTo != null) { if(locationDOTo != null) {
detailDO.setToAreaCode(locationDOTo.getAreaCode()); detailDO.setToAreaCode(locationDOTo.getAreaCode());
@ -149,10 +157,17 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
throw exception(ITEMBASIC_NOT_EXISTS); throw exception(ITEMBASIC_NOT_EXISTS);
} }
//查询库存余额 //查询库存余额
BalanceDO balanceDO = balanceMapper.getBalanceQty(detailDO.getFromPackingNumber(), detailDO.getItemCode(), detailDO.getFromBatch(), detailDO.getInventoryStatus(), detailDO.getToLocationCode()); List<String> status = new ArrayList<>();
if (balanceDO == null) { status.add(detailDO.getInventoryStatus());
List<BalanceDO> balanceDOList = balanceService.selectNumber(detailDO.getItemCode(),status,detailDO.getFromLocationCode());
if (balanceDOList == null || balanceDOList.size() == 0) {
throw exception(UNPLANNEDISSUE_REQUEST_DETAIL_BALANCE_NOT_EXISTS); throw exception(UNPLANNEDISSUE_REQUEST_DETAIL_BALANCE_NOT_EXISTS);
} }
// balanceDOList.get(0) 线边库 管理模式为 数量管理 库存余额应该就是一个
// 退料总数量 大于 库存余额数量 返回 错误信息
if (sumQty.compareTo(balanceDOList.get(0).getQty()) == 1) {
throw exception(PRODUCTIONRETURN_RECORD_QTY_ERROR, sumQty, balanceDOList.get(0).getQty());
}
// 库存事务——入 // 库存事务——入
TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO();
BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn); BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn);
@ -165,11 +180,11 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber()); transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber());
transactionCreateReqVOIn.setInventoryStatus(detailDO.getInventoryStatus()); transactionCreateReqVOIn.setInventoryStatus(detailDO.getInventoryStatus());
transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode()); transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode());
transactionCreateReqVOIn.setSinglePrice(balanceDO.getSinglePrice()); transactionCreateReqVOIn.setSinglePrice(balanceDOList.get(0).getSinglePrice());
transactionCreateReqVOIn.setAmount(balanceDO.getAmount()); transactionCreateReqVOIn.setAmount(balanceDOList.get(0).getAmount());
transactionCreateReqVOIn.setArriveDate(balanceDO.getArriveDate()); transactionCreateReqVOIn.setArriveDate(balanceDOList.get(0).getArriveDate());
transactionCreateReqVOIn.setProduceDate(balanceDO.getProduceDate()); transactionCreateReqVOIn.setProduceDate(balanceDOList.get(0).getProduceDate());
transactionCreateReqVOIn.setExpireDate(balanceDO.getExpireDate()); transactionCreateReqVOIn.setExpireDate(balanceDOList.get(0).getExpireDate());
transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode()); transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode());
transactionCreateReqVOIn.setRecordNumber(number); transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setId(null); transactionCreateReqVOIn.setId(null);
@ -187,11 +202,11 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
transactionCreateReqVOOut.setBatch(detailDO.getFromBatch()); transactionCreateReqVOOut.setBatch(detailDO.getFromBatch());
transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber()); transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber());
transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode()); transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode());
transactionCreateReqVOOut.setSinglePrice(balanceDO.getSinglePrice()); transactionCreateReqVOOut.setSinglePrice(balanceDOList.get(0).getSinglePrice());
transactionCreateReqVOOut.setAmount(balanceDO.getAmount()); transactionCreateReqVOOut.setAmount(balanceDOList.get(0).getAmount());
transactionCreateReqVOOut.setArriveDate(balanceDO.getArriveDate()); transactionCreateReqVOOut.setArriveDate(balanceDOList.get(0).getArriveDate());
transactionCreateReqVOOut.setProduceDate(balanceDO.getProduceDate()); transactionCreateReqVOOut.setProduceDate(balanceDOList.get(0).getProduceDate());
transactionCreateReqVOOut.setExpireDate(balanceDO.getExpireDate()); transactionCreateReqVOOut.setExpireDate(balanceDOList.get(0).getExpireDate());
transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode()); transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode());
transactionCreateReqVOOut.setId(null); transactionCreateReqVOOut.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOOut); transactionCreateReqVOList.add(transactionCreateReqVOOut);

Loading…
Cancel
Save