|
@ -866,74 +866,115 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService |
|
|
throw new BusinessException("更新出库单信息失败:缺少必要参数"); |
|
|
throw new BusinessException("更新出库单信息失败:缺少必要参数"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
WarehouseOutOrder oldWarehouseOutOrder = warehouseOutOrderMapper.selectWarehouseOutOrderByCode(warehouseOutOrder.getOutOrderCode()); |
|
|
|
|
|
if (oldWarehouseOutOrder == null){ |
|
|
|
|
|
log.warn("更新出库单信息失败:出库单号为空:{}",warehouseOutOrder.getOutOrderCode()); |
|
|
|
|
|
throw new BusinessException("出库单号为空"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//查询数据库中的生产领料单
|
|
|
|
|
|
SysMakeorderPick oldMakeorderPick = sysMakeorderPickMapper.selectSysMakeorderPickByOutOrderCode(warehouseOutOrder.getOutOrderCode()); |
|
|
|
|
|
|
|
|
List<WarehouseOutOrderDetail> warehouseOutOrderDetailList = warehouseOutOrder.getWarehouseOutOrderDetailList(); |
|
|
List<WarehouseOutOrderDetail> warehouseOutOrderDetailList = warehouseOutOrder.getWarehouseOutOrderDetailList(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 检查outOrderSum是否含有null值
|
|
|
|
|
|
boolean hasOutOrderSumNull = warehouseOutOrderDetailList.stream() |
|
|
|
|
|
.anyMatch(item -> item.getActualOutOrderSum() == null); |
|
|
|
|
|
|
|
|
|
|
|
if (hasOutOrderSumNull) { |
|
|
|
|
|
throw new BusinessException("存在实际出库数为空,请检查!"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//出库数
|
|
|
|
|
|
Integer outOrderSum = 0; |
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(warehouseOutOrderDetailList)){ |
|
|
if (CollectionUtils.isEmpty(warehouseOutOrderDetailList)){ |
|
|
log.warn("保存生产单出库,物料列表信息为空:{}",warehouseOutOrder); |
|
|
log.warn("保存生产单出库,物料列表信息为空:{}",warehouseOutOrder); |
|
|
throw new BusinessException("出库单详情数据为空"); |
|
|
throw new BusinessException("出库单详情数据为空"); |
|
|
}else { |
|
|
}else { |
|
|
|
|
|
|
|
|
|
|
|
outOrderSum = warehouseOutOrderDetailList.stream().mapToInt(WarehouseOutOrderDetail::getActualOutOrderSum).sum(); |
|
|
|
|
|
|
|
|
|
|
|
Integer oldOutOrderSum = oldWarehouseOutOrder.getOutOrderSum(); |
|
|
|
|
|
if (oldOutOrderSum == null || oldOutOrderSum == 0){ |
|
|
|
|
|
oldOutOrderSum = outOrderSum; |
|
|
|
|
|
}else { |
|
|
|
|
|
oldOutOrderSum += outOrderSum; |
|
|
|
|
|
} |
|
|
|
|
|
warehouseOutOrder.setOutOrderSum(oldOutOrderSum); |
|
|
|
|
|
|
|
|
int updateRows = 0; |
|
|
int updateRows = 0; |
|
|
for (WarehouseOutOrderDetail warehouseOutOrderDetail : warehouseOutOrderDetailList) { |
|
|
for (WarehouseOutOrderDetail warehouseOutOrderDetail : warehouseOutOrderDetailList) { |
|
|
warehouseOutOrderDetail.setUpdateBy(loginName); |
|
|
warehouseOutOrderDetail.setUpdateBy(loginName); |
|
|
warehouseOutOrderDetail.setUpdateTime(new Date()); |
|
|
warehouseOutOrderDetail.setUpdateTime(new Date()); |
|
|
warehouseOutOrderDetail.setRemark(warehouseOutOrder.getRemark()); |
|
|
warehouseOutOrderDetail.setRemark(warehouseOutOrder.getRemark()); |
|
|
|
|
|
|
|
|
|
|
|
Integer applyOutOrderSum = warehouseOutOrderDetail.getApplyOutOrderSum(); |
|
|
|
|
|
Integer hasOutOrderSum = warehouseOutOrderDetail.getHasOutOrderSum(); |
|
|
|
|
|
Integer actualOutOrderSum = warehouseOutOrderDetail.getActualOutOrderSum(); |
|
|
|
|
|
if (actualOutOrderSum > applyOutOrderSum ){ |
|
|
|
|
|
throw new BusinessException("实际出库数不能大于申请出库数"); |
|
|
|
|
|
} |
|
|
|
|
|
if (hasOutOrderSum == null || hasOutOrderSum == 0){ |
|
|
|
|
|
hasOutOrderSum= actualOutOrderSum; |
|
|
|
|
|
}else { |
|
|
|
|
|
hasOutOrderSum += actualOutOrderSum; |
|
|
|
|
|
} |
|
|
|
|
|
if (hasOutOrderSum > applyOutOrderSum ){ |
|
|
|
|
|
throw new BusinessException("已出库数不能大于申请出库数"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//设置已出库数
|
|
|
//设置已出库数
|
|
|
warehouseOutOrderDetail.setHasOutOrderSum(warehouseOutOrderDetail.getActualOutOrderSum()); |
|
|
warehouseOutOrderDetail.setHasOutOrderSum(hasOutOrderSum); |
|
|
|
|
|
|
|
|
//设置仓库员
|
|
|
//设置仓库员
|
|
|
warehouseOutOrderDetail.setWarehouseName(loginName); |
|
|
warehouseOutOrderDetail.setWarehouseName(loginName); |
|
|
//更新数据库记录
|
|
|
//更新数据库记录
|
|
|
updateRows += outOrderDetailMapper.updateWarehouseOutOrderDetail(warehouseOutOrderDetail); |
|
|
updateRows += outOrderDetailMapper.updateWarehouseOutOrderDetail(warehouseOutOrderDetail); |
|
|
if (updateRows <= 0){ |
|
|
if (updateRows <= 0){ |
|
|
throw new BusinessException("更新出库单详情数据失败"); |
|
|
throw new BusinessException("更新出库单详情数据失败"); |
|
|
}else { |
|
|
|
|
|
// 更新库存查询记录,新增库存历史
|
|
|
|
|
|
String materialNo = warehouseOutOrderDetail.getMaterialNo(); |
|
|
|
|
|
WarehouseInventoryInquiry inventoryInquiry = inventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo); |
|
|
|
|
|
if(inventoryInquiry == null){ |
|
|
|
|
|
throw new BusinessException("更新库存查询数据失败!该物料不存在库存数据"); |
|
|
|
|
|
}else{ |
|
|
|
|
|
int inquiryUpdateResult = updateWarehouseInventoryInquiry(warehouseOutOrderDetail,inventoryInquiry); |
|
|
|
|
|
if (inquiryUpdateResult <= 0){ |
|
|
|
|
|
throw new BusinessException("更新库存查询数据失败"); |
|
|
|
|
|
} |
|
|
|
|
|
WarehouseInventoryInquiryDetail inquiryDetail = createWarehouseInventoryInquiryDetail(warehouseOutOrderDetail); |
|
|
|
|
|
inquiryDetail.setInventoryHistoricalType("4");//生产出库
|
|
|
|
|
|
int insertInquiryResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail); |
|
|
|
|
|
if (insertInquiryResult <= 0){ |
|
|
|
|
|
throw new BusinessException("新增库存历史数据失败"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
// else {
|
|
|
|
|
|
//// 更新库存查询记录,新增库存历史
|
|
|
|
|
|
// String materialNo = warehouseOutOrderDetail.getMaterialNo();
|
|
|
|
|
|
// WarehouseInventoryInquiry inventoryInquiry = inventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
|
|
|
|
|
|
// if(inventoryInquiry == null){
|
|
|
|
|
|
// throw new BusinessException("更新库存查询数据失败!该物料不存在库存数据");
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
// int inquiryUpdateResult = updateWarehouseInventoryInquiry(warehouseOutOrderDetail,inventoryInquiry);
|
|
|
|
|
|
// if (inquiryUpdateResult <= 0){
|
|
|
|
|
|
// throw new BusinessException("更新库存查询数据失败");
|
|
|
|
|
|
// }
|
|
|
|
|
|
// WarehouseInventoryInquiryDetail inquiryDetail = createWarehouseInventoryInquiryDetail(warehouseOutOrderDetail);
|
|
|
|
|
|
// inquiryDetail.setInventoryHistoricalType("4");//生产出库
|
|
|
|
|
|
// int insertInquiryResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
|
|
|
|
|
|
// if (insertInquiryResult <= 0){
|
|
|
|
|
|
// throw new BusinessException("新增库存历史数据失败");
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
warehouseOutOrder.setUpdateBy(loginName); |
|
|
warehouseOutOrder.setUpdateBy(loginName); |
|
|
warehouseOutOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
warehouseOutOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
//表明已出库
|
|
|
|
|
|
warehouseOutOrder.setWarehouseOutStatus("7"); |
|
|
if (warehouseOutOrder.getOutOrderSum().equals(oldWarehouseOutOrder.getEnterpriseSum())){ |
|
|
|
|
|
warehouseOutOrder.setWarehouseOutStatus("6");//全部出库
|
|
|
|
|
|
oldMakeorderPick.setPickStatus("2"); |
|
|
|
|
|
}else { |
|
|
|
|
|
warehouseOutOrder.setWarehouseOutStatus("5");//部分出库
|
|
|
|
|
|
oldMakeorderPick.setPickStatus("1"); |
|
|
|
|
|
} |
|
|
//设置出库时间
|
|
|
//设置出库时间
|
|
|
warehouseOutOrder.setOutOrderTime(DateUtils.getNowDate()); |
|
|
warehouseOutOrder.setOutOrderTime(DateUtils.getNowDate()); |
|
|
|
|
|
|
|
|
//设置仓库员
|
|
|
//设置仓库员
|
|
|
warehouseOutOrder.setWarehouseName(loginName); |
|
|
warehouseOutOrder.setWarehouseName(loginName); |
|
|
|
|
|
|
|
|
//计算出库单主表的出库数
|
|
|
|
|
|
Integer outOrderSum = 0; |
|
|
|
|
|
|
|
|
|
|
|
// 检查outOrderSum是否含有null值
|
|
|
|
|
|
boolean hasOutOrderSumNull = warehouseOutOrderDetailList.stream() |
|
|
|
|
|
.anyMatch(item -> item.getActualOutOrderSum() == null); |
|
|
|
|
|
|
|
|
|
|
|
if (hasOutOrderSumNull) { |
|
|
|
|
|
throw new BusinessException("存在实际出库数为空,请检查!"); |
|
|
|
|
|
} |
|
|
|
|
|
// 计算各个字段的总和
|
|
|
|
|
|
outOrderSum = warehouseOutOrderDetailList.stream() |
|
|
|
|
|
.mapToInt(WarehouseOutOrderDetail::getActualOutOrderSum) |
|
|
|
|
|
.sum(); |
|
|
|
|
|
//设置出库单主表的出库数
|
|
|
|
|
|
warehouseOutOrder.setOutOrderSum(outOrderSum); |
|
|
|
|
|
|
|
|
|
|
|
//更新生产订单信息
|
|
|
//更新生产订单信息
|
|
|
SysMakeOrder sysMakeOrder = new SysMakeOrder(); |
|
|
SysMakeOrder sysMakeOrder = new SysMakeOrder(); |
|
@ -965,8 +1006,12 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService |
|
|
log.warn("更新销售订单信息失败"); |
|
|
log.warn("更新销售订单信息失败"); |
|
|
throw new BusinessException("更新销售订单信息失败"); |
|
|
throw new BusinessException("更新销售订单信息失败"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
oldMakeorderPick.setUpdateBy(loginName); |
|
|
|
|
|
oldMakeorderPick.setUpdateTime(new Date()); |
|
|
// 更新生产领料单数据表示已领料
|
|
|
// 更新生产领料单数据表示已领料
|
|
|
int updateMakeorderPickResult = sysMakeorderPickMapper.updateMakeorderPickByCode(warehouseOutOrder.getOutOrderCode()); |
|
|
int updateMakeorderPickResult = sysMakeorderPickMapper.updateSysMakeorderPick(oldMakeorderPick); |
|
|
if (updateMakeorderPickResult <= 0){ |
|
|
if (updateMakeorderPickResult <= 0){ |
|
|
log.warn("更新生产领料单信息失败"); |
|
|
log.warn("更新生产领料单信息失败"); |
|
|
throw new BusinessException("更新生产领料单信息失败"); |
|
|
throw new BusinessException("更新生产领料单信息失败"); |
|
|