|
|
@ -126,6 +126,15 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
@Autowired |
|
|
|
private MakeReturnOrderDetailMapper returnOrderDetailMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private BaseReturnOrderMapper baseReturnOrderMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private BaseReturnOrderDetailMapper baseReturnOrderDetailMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private OutsourceRequisitionMapper outsourceRequisitionMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private SysMakeorderPickDetailMapper makeorderPickDetailMapper; |
|
|
|
|
|
|
@ -1467,7 +1476,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
return warehouseStorageOrderMapper.selectStorageOrderListByCodes(ids); |
|
|
|
} |
|
|
|
|
|
|
|
//入库-退料单
|
|
|
|
//入库-生产退料单
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@Override |
|
|
|
public int updateReturnOrder(WarehouseStorageOrder warehouseStorageOrder) { |
|
|
@ -1574,6 +1583,110 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//入库-员工退料单
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@Override |
|
|
|
public int updateBaseReturnOrder(WarehouseStorageOrder warehouseStorageOrder) { |
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
String storageCode = warehouseStorageOrder.getWarehouseStorageCode(); |
|
|
|
String relatedOrderCode = warehouseStorageOrder.getRelatedOrderCode(); |
|
|
|
WarehouseStorageOrder oldStorageOrder = warehouseStorageOrderMapper.selectStorageOrderByCode(storageCode); |
|
|
|
|
|
|
|
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); |
|
|
|
if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ |
|
|
|
log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); |
|
|
|
throw new BusinessException("入库单详情数据为空"); |
|
|
|
} |
|
|
|
|
|
|
|
//插入主表入库数量
|
|
|
|
int orderStorageNum = Optional.ofNullable(oldStorageOrder.getStorageNum()) |
|
|
|
.orElse(0); |
|
|
|
int storageSum = warehouseStorageOrderDetailList.stream() |
|
|
|
.mapToInt(WarehouseStorageOrderDetail::getStorageNum) |
|
|
|
.sum(); |
|
|
|
storageSum = storageSum + orderStorageNum; |
|
|
|
warehouseStorageOrder.setStorageNum(storageSum); |
|
|
|
warehouseStorageOrder.setWarehouseStorageStatus("3");//部分入库
|
|
|
|
//品质合格数和总入库数相等,全部入库
|
|
|
|
int qualifiedNum = oldStorageOrder.getQualityQualifiedNum(); |
|
|
|
if(storageSum == qualifiedNum){ |
|
|
|
warehouseStorageOrder.setWarehouseStorageStatus("4");//全部入库
|
|
|
|
} |
|
|
|
for (WarehouseStorageOrderDetail storageOrderDetail : warehouseStorageOrderDetailList) { |
|
|
|
//更新入库单详情的数据
|
|
|
|
storageOrderDetail.setUpdateBy(loginName); |
|
|
|
storageOrderDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
//更新已入库数
|
|
|
|
int hasStorageNum = Optional.ofNullable(storageOrderDetail.getHasStorageNum()) |
|
|
|
.orElse(0); |
|
|
|
hasStorageNum = hasStorageNum + storageOrderDetail.getStorageNum(); |
|
|
|
storageOrderDetail.setHasStorageNum(hasStorageNum); |
|
|
|
int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(storageOrderDetail); |
|
|
|
if (updateWarehouseStorageOrderDetailResult <= 0){ |
|
|
|
throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); |
|
|
|
} |
|
|
|
|
|
|
|
WarehouseStorageOrderDetail updatedStorageDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId()); |
|
|
|
|
|
|
|
//更新库存查询
|
|
|
|
int inquiryUpdateResult = updateReturnInventoryInquiry(updatedStorageDetail); |
|
|
|
if (inquiryUpdateResult <= 0){ |
|
|
|
throw new BusinessException("更新库存查询数据失败"); |
|
|
|
} |
|
|
|
|
|
|
|
/*更新退料单详情已退料数*/ |
|
|
|
BaseReturnOrderDetail tempReturnDetail = new BaseReturnOrderDetail(); |
|
|
|
tempReturnDetail.setBaseReturnOrderCode(relatedOrderCode); |
|
|
|
tempReturnDetail.setMaterialNo(storageOrderDetail.getMaterialNo()); |
|
|
|
BaseReturnOrderDetail returnOrderDetail = baseReturnOrderDetailMapper.selectBaseReturnOrderDetailList(tempReturnDetail).get(0); |
|
|
|
int actualReturnNum = Optional.ofNullable(returnOrderDetail.getHasReturnNum()).orElse(0); |
|
|
|
actualReturnNum = actualReturnNum + storageOrderDetail.getStorageNum(); |
|
|
|
returnOrderDetail.setHasReturnNum(actualReturnNum); |
|
|
|
returnOrderDetail.setUpdateBy(loginName); |
|
|
|
returnOrderDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
int returnDeUpdateResult = baseReturnOrderDetailMapper.updateBaseReturnOrderDetail(returnOrderDetail); |
|
|
|
if (returnDeUpdateResult <= 0){ |
|
|
|
throw new BusinessException("更新退料单详情数据失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
//更新退料单的数据
|
|
|
|
BaseReturnOrder baseReturnOrder = baseReturnOrderMapper.selectBaseReturnOrderByCode(relatedOrderCode); |
|
|
|
//入库数
|
|
|
|
int returnStorageNum = Optional.ofNullable(baseReturnOrder.getStorageNum()) |
|
|
|
.orElse(0); |
|
|
|
returnStorageNum = returnStorageNum + storageSum; |
|
|
|
baseReturnOrder.setStorageNum(returnStorageNum); |
|
|
|
|
|
|
|
int returnQualifiedNum = Optional.ofNullable(baseReturnOrder.getQualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
int returnUnQualifiedNum = Optional.ofNullable(baseReturnOrder.getUnqualifiedNum()) |
|
|
|
.orElse(0); |
|
|
|
int qualityNum = returnQualifiedNum + returnUnQualifiedNum; |
|
|
|
/*退料状态*/ |
|
|
|
if(returnStorageNum < returnQualifiedNum){ |
|
|
|
baseReturnOrder.setReturnStatus("1");//部分退料
|
|
|
|
}else if(qualityNum < baseReturnOrder.getReturnSum()){//未品质完
|
|
|
|
baseReturnOrder.setReturnStatus("1");//部分退料
|
|
|
|
}else if(qualityNum == baseReturnOrder.getReturnSum() && returnStorageNum == returnQualifiedNum){ |
|
|
|
baseReturnOrder.setReturnStatus("2");//全部退料
|
|
|
|
} |
|
|
|
baseReturnOrder.setUpdateBy(ShiroUtils.getLoginName()); |
|
|
|
baseReturnOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
int updateReturnOrderResult = baseReturnOrderMapper.updateBaseReturnOrder(baseReturnOrder); |
|
|
|
if (updateReturnOrderResult <= 0){ |
|
|
|
throw new BusinessException("更新退料单数据失败"); |
|
|
|
} |
|
|
|
//更新入库单的数据
|
|
|
|
warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); |
|
|
|
warehouseStorageOrder.setWarehouseEmployee(loginName); |
|
|
|
warehouseStorageOrder.setUpdateBy(loginName); |
|
|
|
warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); |
|
|
|
if (updateResult <= 0){ |
|
|
|
throw new BusinessException("更新入库单数据失败,未影响任何行"); |
|
|
|
} |
|
|
|
return updateResult; |
|
|
|
} |
|
|
|
/* |
|
|
|
* 更新退料单库存查询*/ |
|
|
|
public int updateReturnInventoryInquiry(WarehouseStorageOrderDetail storageOrderDetail){ |
|
|
@ -1620,6 +1733,48 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
if(insertResult <=0){ |
|
|
|
throw new BusinessException("新增库存查询履历失败"); |
|
|
|
} |
|
|
|
}else if(returnOrderType.equals("4")||returnOrderType.equals("7")){//委外退料
|
|
|
|
BaseReturnOrder baseReturnOrder = baseReturnOrderMapper.selectBaseReturnOrderByCode(returnOrderCode); |
|
|
|
String pickNo = baseReturnOrder.getPickNo(); |
|
|
|
|
|
|
|
/*获取领料单占用共享、固定库存数*/ |
|
|
|
if(pickNo.startsWith("WWLL")){ |
|
|
|
OutsourceRequisitionDetail tempOutPick = new OutsourceRequisitionDetail(); |
|
|
|
tempOutPick.setOutsourceRequisitionNo(pickNo); |
|
|
|
tempOutPick.setMaterialNo(storageOrderDetail.getMaterialNo()); |
|
|
|
tempOutPick.setLevel(1); |
|
|
|
List<OutsourceRequisitionDetail> pickDetails = outsourceRequisitionMapper.selectOutsourceRequisitionDetailList(tempOutPick); |
|
|
|
sharedNum = Optional.ofNullable(pickDetails.get(0).getSharedStockNum()) |
|
|
|
.orElse(0); |
|
|
|
}else if(pickNo.startsWith("YGLL")){ |
|
|
|
|
|
|
|
} |
|
|
|
/*获取该领料单关联所有退料单详情实际总退料数,以便计算归还固定和共享库存数*/ |
|
|
|
BaseReturnOrderDetail tempReturnDetail = new BaseReturnOrderDetail(); |
|
|
|
tempReturnDetail.setPickNo(pickNo); |
|
|
|
tempReturnDetail.setMaterialNo(materialNo); |
|
|
|
List<BaseReturnOrderDetail> returnOrderDetails = baseReturnOrderDetailMapper.selectBaseReturnOrderDetailList(tempReturnDetail); |
|
|
|
//总已入库数
|
|
|
|
allStorage = returnOrderDetails.stream().mapToInt(item -> item.getHasReturnNum()).sum(); |
|
|
|
|
|
|
|
/*新增库存查询历史*/ |
|
|
|
WarehouseInventoryInquiryDetail inquiryDetail = createMakeInOrderInquiryDetail(storageOrderDetail); |
|
|
|
if(pickNo.startsWith("WWLL")){ |
|
|
|
inquiryDetail.setInquiryBusinessType("2");//委外
|
|
|
|
inquiryDetail.setInquiryOrderType("8");//订单类型-委外退料
|
|
|
|
inquiryDetail.setInquiryWarehouseType("8");//入库类型-委外退料
|
|
|
|
}else if(pickNo.startsWith("YGLL")){ |
|
|
|
inquiryDetail.setInquiryBusinessType("7");//员工服务
|
|
|
|
inquiryDetail.setInquiryOrderType("9");//订单类型-员工退料
|
|
|
|
inquiryDetail.setInquiryWarehouseType("9");//入库类型-员工退料
|
|
|
|
} |
|
|
|
inquiryDetail.setIncreaseDecreaseNum(storageNum); |
|
|
|
inquiryDetail.setCreateBy(loginName); |
|
|
|
inquiryDetail.setCreateTime(DateUtils.getNowDate()); |
|
|
|
int insertResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail); |
|
|
|
if(insertResult <=0){ |
|
|
|
throw new BusinessException("新增库存查询履历失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
if(allStorage >= sharedNum){//总已入库数 >= 占用共享库存数,全部返还为固定
|
|
|
|
fixedReturnNum = storageNum; |
|
|
@ -1640,14 +1795,18 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
.orElse(0); |
|
|
|
int sharedAvaliableNum = Optional.ofNullable(inquiry.getSharedAvailableStockNum()) |
|
|
|
.orElse(0); |
|
|
|
int useNum = Optional.ofNullable(inquiry.getUseNum()) |
|
|
|
.orElse(0); |
|
|
|
|
|
|
|
availableNum = availableNum + storageNum; |
|
|
|
fixedAvailableNum = fixedAvailableNum + fixedReturnNum; |
|
|
|
sharedAvaliableNum = sharedAvaliableNum + sharedReturnNum; |
|
|
|
useNum = useNum - storageNum; |
|
|
|
|
|
|
|
inquiry.setAvailableStockNum(availableNum); |
|
|
|
inquiry.setFixedAvailableStockNum(fixedAvailableNum); |
|
|
|
inquiry.setSharedAvailableStockNum(sharedAvaliableNum); |
|
|
|
inquiry.setUseNum(useNum); |
|
|
|
inquiry.setUpdateBy(ShiroUtils.getLoginName()); |
|
|
|
inquiry.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
|
|
|