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
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 WORK_MAIN_NOT_EXISTS = new ErrorCode(1_000_100_000, "生产订单主不存在");
//生产订单子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.productionreturnRecord.ProductionreturnRecordDetailMapper;
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.location.LocationService;
import com.win.module.wms.service.recordsetting.RecordsettingService;
@ -60,6 +61,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Validated
public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRecordMainService {
@Resource
private BalanceService balanceService;
@Resource
private BalanceMapper balanceMapper;
@Resource
@ -121,16 +124,21 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
productionreturnRecordMainMapper.insert(mainDO);
//库存事务
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>();
// 求和
BigDecimal sumQty = BigDecimal.ZERO;
for (ProductionreturnRecordDetailDO detailDO : subDOList) {
sumQty = sumQty.add(detailDO.getQty());
}
for (ProductionreturnRecordDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
// LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode());
// if(locationDOFrom != null) {
// detailDO.setFromAreaCode(locationDOFrom.getAreaCode());
// detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode());
// } else {
// throw exception(LOCATION_NOT_EXISTS);
// }
LocationDO locationDOFrom = locationService.selectLocation(detailDO.getFromLocationCode());
if(locationDOFrom != null) {
detailDO.setFromAreaCode(locationDOFrom.getAreaCode());
detailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode());
} else {
throw exception(LOCATION_NOT_EXISTS);
}
LocationDO locationDOTo = locationService.selectLocation(detailDO.getToLocationCode());
if(locationDOTo != null) {
detailDO.setToAreaCode(locationDOTo.getAreaCode());
@ -149,10 +157,17 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
throw exception(ITEMBASIC_NOT_EXISTS);
}
//查询库存余额
BalanceDO balanceDO = balanceMapper.getBalanceQty(detailDO.getFromPackingNumber(), detailDO.getItemCode(), detailDO.getFromBatch(), detailDO.getInventoryStatus(), detailDO.getToLocationCode());
if (balanceDO == null) {
List<String> status = new ArrayList<>();
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);
}
// 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();
BeanUtils.copyProperties(detailDO, transactionCreateReqVOIn);
@ -165,11 +180,11 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
transactionCreateReqVOIn.setPackingNumber(detailDO.getToPackingNumber());
transactionCreateReqVOIn.setInventoryStatus(detailDO.getInventoryStatus());
transactionCreateReqVOIn.setLocationCode(detailDO.getToLocationCode());
transactionCreateReqVOIn.setSinglePrice(balanceDO.getSinglePrice());
transactionCreateReqVOIn.setAmount(balanceDO.getAmount());
transactionCreateReqVOIn.setArriveDate(balanceDO.getArriveDate());
transactionCreateReqVOIn.setProduceDate(balanceDO.getProduceDate());
transactionCreateReqVOIn.setExpireDate(balanceDO.getExpireDate());
transactionCreateReqVOIn.setSinglePrice(balanceDOList.get(0).getSinglePrice());
transactionCreateReqVOIn.setAmount(balanceDOList.get(0).getAmount());
transactionCreateReqVOIn.setArriveDate(balanceDOList.get(0).getArriveDate());
transactionCreateReqVOIn.setProduceDate(balanceDOList.get(0).getProduceDate());
transactionCreateReqVOIn.setExpireDate(balanceDOList.get(0).getExpireDate());
transactionCreateReqVOIn.setWarehouseCode(mainDO.getFromWarehouseCode());
transactionCreateReqVOIn.setRecordNumber(number);
transactionCreateReqVOIn.setId(null);
@ -187,11 +202,11 @@ public class ProductionreturnRecordMainServiceImpl implements ProductionreturnRe
transactionCreateReqVOOut.setBatch(detailDO.getFromBatch());
transactionCreateReqVOOut.setPackingNumber(detailDO.getFromPackingNumber());
transactionCreateReqVOOut.setLocationCode(detailDO.getFromLocationCode());
transactionCreateReqVOOut.setSinglePrice(balanceDO.getSinglePrice());
transactionCreateReqVOOut.setAmount(balanceDO.getAmount());
transactionCreateReqVOOut.setArriveDate(balanceDO.getArriveDate());
transactionCreateReqVOOut.setProduceDate(balanceDO.getProduceDate());
transactionCreateReqVOOut.setExpireDate(balanceDO.getExpireDate());
transactionCreateReqVOOut.setSinglePrice(balanceDOList.get(0).getSinglePrice());
transactionCreateReqVOOut.setAmount(balanceDOList.get(0).getAmount());
transactionCreateReqVOOut.setArriveDate(balanceDOList.get(0).getArriveDate());
transactionCreateReqVOOut.setProduceDate(balanceDOList.get(0).getProduceDate());
transactionCreateReqVOOut.setExpireDate(balanceDOList.get(0).getExpireDate());
transactionCreateReqVOOut.setWarehouseCode(mainDO.getFromWarehouseCode());
transactionCreateReqVOOut.setId(null);
transactionCreateReqVOList.add(transactionCreateReqVOOut);

Loading…
Cancel
Save