|
@ -146,6 +146,9 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
@Autowired |
|
|
@Autowired |
|
|
private ISysRemindService remindService; |
|
|
private ISysRemindService remindService; |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
|
private BaseEmpRequisiteOrderChildMapper empRequisiteOrderChildMapper; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 查询仓库入库单 |
|
|
* 查询仓库入库单 |
|
|
* |
|
|
* |
|
@ -515,79 +518,73 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
public int updateOutsourceStorageSave(WarehouseStorageOrder warehouseStorageOrder) { |
|
|
public int updateOutsourceStorageSave(WarehouseStorageOrder warehouseStorageOrder) { |
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
|
|
|
|
|
warehouseStorageOrder.setUpdateBy(loginName); |
|
|
|
|
|
warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
|
//记录一下入库时间
|
|
|
|
|
|
warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); |
|
|
|
|
|
List<WarehouseStorageOrderDetail> storageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); |
|
|
List<WarehouseStorageOrderDetail> storageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); |
|
|
if (StringUtils.isEmpty(storageOrderDetailList)){ |
|
|
if (StringUtils.isEmpty(storageOrderDetailList)){ |
|
|
throw new BusinessException("入库单详情数据为空"); |
|
|
throw new BusinessException("入库单详情数据为空"); |
|
|
} |
|
|
} |
|
|
|
|
|
WarehouseStorageOrder oldStorageOrder = warehouseStorageOrderMapper.selectStorageOrderByCode(warehouseStorageOrder.getWarehouseStorageCode()); |
|
|
//入库数
|
|
|
//入库数
|
|
|
Integer storageNum = 0; |
|
|
Integer storageNum = 0; |
|
|
|
|
|
|
|
|
// 检查storageNum是否含有null值
|
|
|
// 检查storageNum是否含有null值
|
|
|
boolean hasThisStorageNumNull = storageOrderDetailList.stream() |
|
|
List<WarehouseStorageOrderDetail> filtList = storageOrderDetailList.stream() |
|
|
.anyMatch(item -> item.getStorageNum() == null); |
|
|
.filter(item ->item.getStorageNum()!=null).collect(Collectors.toList()); |
|
|
|
|
|
if (filtList.size()==0) { |
|
|
if (hasThisStorageNumNull) { |
|
|
throw new BusinessException("实际出库数不能全为空,请检查!"); |
|
|
throw new BusinessException("存在入库数为空,请检查!"); |
|
|
|
|
|
} |
|
|
} |
|
|
// 计算各个字段的总和
|
|
|
// 计算各个详情入库数的总和
|
|
|
storageNum = storageOrderDetailList.stream() |
|
|
storageNum = filtList.stream() |
|
|
.mapToInt(WarehouseStorageOrderDetail::getStorageNum) |
|
|
.mapToInt(WarehouseStorageOrderDetail::getStorageNum) |
|
|
.sum(); |
|
|
.sum(); |
|
|
|
|
|
for (WarehouseStorageOrderDetail detail: filtList) { |
|
|
for (WarehouseStorageOrderDetail detail: storageOrderDetailList) { |
|
|
|
|
|
int detailStorageNum = detail.getHasStorageNum() + detail.getStorageNum(); |
|
|
int detailStorageNum = detail.getHasStorageNum() + detail.getStorageNum(); |
|
|
if(detailStorageNum > detail.getQualityQualifiedNum()){ |
|
|
if(detailStorageNum > detail.getQualityHasQualifiedNum()){ |
|
|
throw new BusinessException("物料" +detail.getMaterialNo()+ "总入库数大于品质合格数"); |
|
|
throw new BusinessException("物料" +detail.getMaterialNo()+ "总入库数大于品质合格数"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//插入主表入库数量
|
|
|
//插入主表入库数量
|
|
|
int orderStorageNum = warehouseStorageOrder.getStorageNum(); |
|
|
int orderStorageNum = oldStorageOrder.getStorageNum(); |
|
|
orderStorageNum = orderStorageNum + storageNum; |
|
|
orderStorageNum = orderStorageNum + storageNum; |
|
|
warehouseStorageOrder.setStorageNum(orderStorageNum); |
|
|
oldStorageOrder.setStorageNum(orderStorageNum); |
|
|
|
|
|
|
|
|
for (WarehouseStorageOrderDetail storageOrderDetail : storageOrderDetailList) { |
|
|
for (WarehouseStorageOrderDetail detail : filtList) { |
|
|
//更新入库单详情的数据
|
|
|
//更新入库单详情的数据
|
|
|
storageOrderDetail.setUpdateBy(loginName); |
|
|
detail.setUpdateBy(loginName); |
|
|
storageOrderDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
detail.setUpdateTime(DateUtils.getNowDate()); |
|
|
//更新已入库数
|
|
|
//更新已入库数
|
|
|
int detailStorageNum = storageOrderDetail.getHasStorageNum() + storageOrderDetail.getStorageNum(); |
|
|
int detailHasStockNum = Optional.ofNullable(detail.getHasStorageNum()).orElse(0); |
|
|
storageOrderDetail.setHasStorageNum(detailStorageNum); |
|
|
int detailStorageNum = detailHasStockNum + detail.getStorageNum(); |
|
|
int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(storageOrderDetail); |
|
|
detail.setHasStorageNum(detailStorageNum); |
|
|
|
|
|
int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(detail); |
|
|
if (updateWarehouseStorageOrderDetailResult <= 0){ |
|
|
if (updateWarehouseStorageOrderDetailResult <= 0){ |
|
|
throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); |
|
|
throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); |
|
|
} |
|
|
} |
|
|
//更新委外入库单详情,(只更新子表,详情页面需要展示,主表直接使用入库单,不存在
|
|
|
//更新委外入库单详情,(只更新子表,详情页面需要展示,主表直接使用入库单,不存在
|
|
|
OutsourceStorageDetail tempOut = new OutsourceStorageDetail(); |
|
|
OutsourceStorageDetail tempOut = new OutsourceStorageDetail(); |
|
|
tempOut.setWarehouseStorageCode(storageOrderDetail.getWarehouseStorageCode()); |
|
|
tempOut.setWarehouseStorageCode(detail.getWarehouseStorageCode()); |
|
|
tempOut.setMaterialNo(storageOrderDetail.getMaterialNo()); |
|
|
tempOut.setMaterialNo(detail.getMaterialNo()); |
|
|
List<OutsourceStorageDetail> outStorageDetails = outsourceStorageDetailMapper.selectOutsourceStorageDetailList(tempOut); |
|
|
List<OutsourceStorageDetail> outStorageDetails = outsourceStorageDetailMapper.selectOutsourceStorageDetailList(tempOut); |
|
|
OutsourceStorageDetail updateDetail = outStorageDetails.get(0); |
|
|
OutsourceStorageDetail updateDetail = outStorageDetails.get(0); |
|
|
updateDetail.setTakenMaterial(new BigDecimal(storageOrderDetail.getHasStorageNum()));//入库单详情已领料数已更新
|
|
|
updateDetail.setTakenMaterial(new BigDecimal(detail.getHasStorageNum()));//入库单详情已领料数已更新
|
|
|
updateDetail.setUpdateBy(loginName); |
|
|
updateDetail.setUpdateBy(loginName); |
|
|
updateDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
updateDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
int outUpdateResult = outsourceStorageDetailMapper.updateOutsourceStorageDetail(updateDetail); |
|
|
int outUpdateResult = outsourceStorageDetailMapper.updateOutsourceStorageDetail(updateDetail); |
|
|
if(outUpdateResult<=0){ |
|
|
if(outUpdateResult<=0){ |
|
|
throw new BusinessException("更新委外入库单详情失败!"); |
|
|
throw new BusinessException("更新委外入库单详情失败!"); |
|
|
} |
|
|
} |
|
|
|
|
|
/*更新库存查询信息*/ |
|
|
WarehouseStorageOrderDetail updateStorageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId()); |
|
|
WarehouseStorageOrderDetail updateStorageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(detail.getWarehouseStorageDetailId()); |
|
|
createWarehouseInventoryInquiry(updateStorageOrderDetail); |
|
|
createWarehouseInventoryInquiry(updateStorageOrderDetail); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//更新入库单的数据
|
|
|
//更新入库单的数据
|
|
|
|
|
|
oldStorageOrder.setUpdateBy(loginName); |
|
|
|
|
|
oldStorageOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
|
oldStorageOrder.setStorageTime(DateUtils.getNowDate()); |
|
|
int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); |
|
|
int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); |
|
|
|
|
|
|
|
|
if (updateResult <= 0){ |
|
|
if (updateResult <= 0){ |
|
|
log.warn("更新入库单失败,未影响任何行"); |
|
|
throw new BusinessException("更新入库单失败,未影响任何行"); |
|
|
} |
|
|
} |
|
|
return updateResult; |
|
|
return updateResult; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -741,22 +738,6 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据入库单(采购订单)关联品质单获取历史总数(已到货数-品质不合格数)(采购总数-退换货数)
|
|
|
|
|
|
public BigDecimal getHistoricalTotalFromQualityOrder(WarehouseStorageOrderDetail warehouseStorageOrderDetail){ |
|
|
|
|
|
BigDecimal historicalTotal = BigDecimal.ZERO; |
|
|
|
|
|
QualityOrderDetail tempDetail = new QualityOrderDetail(); |
|
|
|
|
|
tempDetail.setInStorageCode(warehouseStorageOrderDetail.getWarehouseStorageCode()); |
|
|
|
|
|
tempDetail.setMaterialNo(warehouseStorageOrderDetail.getMaterialNo()); |
|
|
|
|
|
|
|
|
|
|
|
QualityOrderDetail qualityOrderDetail = qualityOrderDetailMapper.selectQualityOrderDetailByStorageCodeAndno(tempDetail); |
|
|
|
|
|
Integer actualArriveNum = qualityOrderDetail.getCheckNum(); |
|
|
|
|
|
Integer qualityUnqualifiedNum = qualityOrderDetail.getQualityUnqualifiedNum(); |
|
|
|
|
|
|
|
|
|
|
|
historicalTotal = BigDecimal.valueOf(actualArriveNum) |
|
|
|
|
|
.subtract(BigDecimal.valueOf(qualityUnqualifiedNum)); |
|
|
|
|
|
return historicalTotal; |
|
|
|
|
|
} |
|
|
|
|
|
/** |
|
|
/** |
|
|
* 修改保存入库-采购单(仓库入库) |
|
|
* 修改保存入库-采购单(仓库入库) |
|
|
*/ |
|
|
*/ |
|
@ -1749,7 +1730,12 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
sharedNum = Optional.ofNullable(pickDetails.get(0).getSharedStockNum()) |
|
|
sharedNum = Optional.ofNullable(pickDetails.get(0).getSharedStockNum()) |
|
|
.orElse(0); |
|
|
.orElse(0); |
|
|
}else if(pickNo.startsWith("YGLL")){ |
|
|
}else if(pickNo.startsWith("YGLL")){ |
|
|
|
|
|
BaseEmpRequisiteOrderChild tempChild = new BaseEmpRequisiteOrderChild(); |
|
|
|
|
|
tempChild.setQuoteId(pickNo); |
|
|
|
|
|
tempChild.setMaterialCode(storageOrderDetail.getMaterialNo()); |
|
|
|
|
|
List<BaseEmpRequisiteOrderChild> pickDetails = empRequisiteOrderChildMapper.selectBaseEmpRequisiteOrderChildList(tempChild); |
|
|
|
|
|
sharedNum = Optional.ofNullable(pickDetails.get(0).getSharedStockAllocatedNum()) |
|
|
|
|
|
.orElse(0); |
|
|
} |
|
|
} |
|
|
/*获取该领料单关联所有退料单详情实际总退料数,以便计算归还固定和共享库存数*/ |
|
|
/*获取该领料单关联所有退料单详情实际总退料数,以便计算归还固定和共享库存数*/ |
|
|
BaseReturnOrderDetail tempReturnDetail = new BaseReturnOrderDetail(); |
|
|
BaseReturnOrderDetail tempReturnDetail = new BaseReturnOrderDetail(); |
|
@ -1988,22 +1974,57 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
if (insertDetailResult <= 0){ |
|
|
if (insertDetailResult <= 0){ |
|
|
throw new BusinessException("新增库存履历失败!"); |
|
|
throw new BusinessException("新增库存履历失败!"); |
|
|
} |
|
|
} |
|
|
}else if(warehouseStorageType.equals("4")){//新增委外入库库存历史记录
|
|
|
|
|
|
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail(); |
|
|
|
|
|
inquiryDetail = createMakeInOrderInquiryDetail(warehouseStorageOrderDetail); |
|
|
|
|
|
// inquiryDetail.setInventoryHistoricalType("2");
|
|
|
|
|
|
inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail); |
|
|
|
|
|
} |
|
|
} |
|
|
//查询该物料报损数,更新库存查询报损数
|
|
|
else if(warehouseStorageType.equals("4")){//新增委外入库库存历史记录
|
|
|
List<WarehouseInventoryReportDamageChild> damageChildren = damageChildMapper.selectWarehouseInventoryReportDamageChildByMaterialNo(materialNo); |
|
|
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo); |
|
|
Integer scrapSum = 0; |
|
|
Integer historicalTotal = oldWarehouseInventoryInquiry.getHistoricalTotal(); |
|
|
if(StringUtils.isNotEmpty(damageChildren)){ |
|
|
historicalTotal += storageNum; |
|
|
for (WarehouseInventoryReportDamageChild damageChild:damageChildren) { |
|
|
oldWarehouseInventoryInquiry.setHistoricalTotal(historicalTotal); |
|
|
Integer scrapNum = damageChild.getActualScrapQuantity(); |
|
|
|
|
|
scrapSum += scrapSum; |
|
|
Integer availableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum(); |
|
|
|
|
|
if (availableStockNum == null || availableStockNum == 0){ |
|
|
|
|
|
availableStockNum = storageNum; |
|
|
|
|
|
}else { |
|
|
|
|
|
availableStockNum += storageNum; |
|
|
|
|
|
} |
|
|
|
|
|
oldWarehouseInventoryInquiry.setAvailableStockNum(availableStockNum); |
|
|
|
|
|
|
|
|
|
|
|
Integer fixedAvailableStockNum = oldWarehouseInventoryInquiry.getFixedAvailableStockNum();//固定可用库存
|
|
|
|
|
|
if (fixedAvailableStockNum == null || fixedAvailableStockNum == 0){ |
|
|
|
|
|
fixedAvailableStockNum = storageNum; |
|
|
|
|
|
}else { |
|
|
|
|
|
fixedAvailableStockNum += storageNum; |
|
|
|
|
|
} |
|
|
|
|
|
oldWarehouseInventoryInquiry.setFixedAvailableStockNum(fixedAvailableStockNum); |
|
|
|
|
|
|
|
|
|
|
|
int updateResult = warehouseInventoryInquiryService.updateWarehouseInventoryInquiry(oldWarehouseInventoryInquiry); |
|
|
|
|
|
if (updateResult <= 0){ |
|
|
|
|
|
throw new BusinessException("更新库存查询记录失败!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
remindService.warehouseSafetyStockRemind(oldWarehouseInventoryInquiry); |
|
|
|
|
|
|
|
|
|
|
|
WarehouseInventoryInquiryDetail inquiryDetail = createMakeInOrderInquiryDetail(warehouseStorageOrderDetail); |
|
|
|
|
|
|
|
|
|
|
|
inquiryDetail.setInquiryWarehouseType("2");//委外入库
|
|
|
|
|
|
inquiryDetail.setInquiryOrderType("2");//委外入库单
|
|
|
|
|
|
inquiryDetail.setInquiryBusinessType("2");//委外
|
|
|
|
|
|
|
|
|
|
|
|
int insertDetailResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail); |
|
|
|
|
|
if (insertDetailResult <= 0){ |
|
|
|
|
|
throw new BusinessException("新增库存履历失败!"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//查询该物料报损数,更新库存查询报损数
|
|
|
|
|
|
// List<WarehouseInventoryReportDamageChild> damageChildren = damageChildMapper.selectWarehouseInventoryReportDamageChildByMaterialNo(materialNo);
|
|
|
|
|
|
// Integer scrapSum = 0;
|
|
|
|
|
|
// if(StringUtils.isNotEmpty(damageChildren)){
|
|
|
|
|
|
// for (WarehouseInventoryReportDamageChild damageChild:damageChildren) {
|
|
|
|
|
|
// Integer scrapNum = damageChild.getActualScrapQuantity();
|
|
|
|
|
|
// scrapSum += scrapSum;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//生成入库库存历史记录
|
|
|
//生成入库库存历史记录
|
|
|
public WarehouseInventoryInquiryDetail createMakeInOrderInquiryDetail(WarehouseStorageOrderDetail storageOrderDetail){ |
|
|
public WarehouseInventoryInquiryDetail createMakeInOrderInquiryDetail(WarehouseStorageOrderDetail storageOrderDetail){ |
|
|