|
|
@ -480,51 +480,60 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
@Override |
|
|
|
public int updateOutsourceStorageSave(WarehouseStorageOrder warehouseStorageOrder) { |
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
//假设全部入库
|
|
|
|
warehouseStorageOrder.setWarehouseStorageStatus("4"); |
|
|
|
|
|
|
|
warehouseStorageOrder.setUpdateBy(loginName); |
|
|
|
warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
//记录一下入库时间
|
|
|
|
warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); |
|
|
|
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); |
|
|
|
if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ |
|
|
|
log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); |
|
|
|
List<WarehouseStorageOrderDetail> storageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); |
|
|
|
if (StringUtils.isEmpty(storageOrderDetailList)){ |
|
|
|
throw new BusinessException("入库单详情数据为空"); |
|
|
|
} |
|
|
|
//入库数
|
|
|
|
Integer storageNum = 0; |
|
|
|
|
|
|
|
// 检查storageNum是否含有null值
|
|
|
|
boolean hasThisStorageNumNull = warehouseStorageOrderDetailList.stream() |
|
|
|
boolean hasThisStorageNumNull = storageOrderDetailList.stream() |
|
|
|
.anyMatch(item -> item.getStorageNum() == null); |
|
|
|
|
|
|
|
if (hasThisStorageNumNull) { |
|
|
|
throw new BusinessException("存在入库数为空,请检查!"); |
|
|
|
} |
|
|
|
// 计算各个字段的总和
|
|
|
|
storageNum = warehouseStorageOrderDetailList.stream() |
|
|
|
storageNum = storageOrderDetailList.stream() |
|
|
|
.mapToInt(WarehouseStorageOrderDetail::getStorageNum) |
|
|
|
.sum(); |
|
|
|
|
|
|
|
for (WarehouseStorageOrderDetail detail: storageOrderDetailList) { |
|
|
|
int detailStorageNum = detail.getHasStorageNum() + detail.getStorageNum(); |
|
|
|
if(detailStorageNum > detail.getQualityQualifiedNum()){ |
|
|
|
throw new BusinessException("物料" +detail.getMaterialNo()+ "总入库数大于品质合格数"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//插入主表入库数量
|
|
|
|
warehouseStorageOrder.setStorageNum(storageNum); |
|
|
|
int orderStorageNum = warehouseStorageOrder.getStorageNum(); |
|
|
|
orderStorageNum = orderStorageNum + storageNum; |
|
|
|
warehouseStorageOrder.setStorageNum(orderStorageNum); |
|
|
|
|
|
|
|
for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : warehouseStorageOrderDetailList) { |
|
|
|
for (WarehouseStorageOrderDetail storageOrderDetail : storageOrderDetailList) { |
|
|
|
//更新入库单详情的数据
|
|
|
|
warehouseStorageOrderDetail.setUpdateBy(loginName); |
|
|
|
warehouseStorageOrderDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
storageOrderDetail.setUpdateBy(loginName); |
|
|
|
storageOrderDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
//更新已入库数
|
|
|
|
warehouseStorageOrderDetail.setHasStorageNum(warehouseStorageOrderDetail.getStorageNum()); |
|
|
|
int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(warehouseStorageOrderDetail); |
|
|
|
int detailStorageNum = storageOrderDetail.getHasStorageNum() + storageOrderDetail.getStorageNum(); |
|
|
|
storageOrderDetail.setHasStorageNum(detailStorageNum); |
|
|
|
int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(storageOrderDetail); |
|
|
|
if (updateWarehouseStorageOrderDetailResult <= 0){ |
|
|
|
throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); |
|
|
|
} |
|
|
|
//更新委外入库单详情,(只更新子表,详情页面需要展示,主表直接使用入库单,不存在
|
|
|
|
OutsourceStorageDetail tempOut = new OutsourceStorageDetail(); |
|
|
|
tempOut.setWarehouseStorageCode(warehouseStorageOrderDetail.getWarehouseStorageCode()); |
|
|
|
tempOut.setMaterialNo(warehouseStorageOrderDetail.getMaterialNo()); |
|
|
|
tempOut.setWarehouseStorageCode(storageOrderDetail.getWarehouseStorageCode()); |
|
|
|
tempOut.setMaterialNo(storageOrderDetail.getMaterialNo()); |
|
|
|
List<OutsourceStorageDetail> outStorageDetails = outsourceStorageDetailMapper.selectOutsourceStorageDetailList(tempOut); |
|
|
|
OutsourceStorageDetail updateDetail = outStorageDetails.get(0); |
|
|
|
updateDetail.setTakenMaterial(new BigDecimal(warehouseStorageOrderDetail.getHasStorageNum())); |
|
|
|
updateDetail.setTakenMaterial(new BigDecimal(storageOrderDetail.getHasStorageNum()));//入库单详情已领料数已更新
|
|
|
|
updateDetail.setUpdateBy(loginName); |
|
|
|
updateDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
int outUpdateResult = outsourceStorageDetailMapper.updateOutsourceStorageDetail(updateDetail); |
|
|
@ -532,12 +541,11 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
throw new BusinessException("更新委外入库单详情失败!"); |
|
|
|
} |
|
|
|
|
|
|
|
WarehouseStorageOrderDetail storageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(warehouseStorageOrderDetail.getWarehouseStorageDetailId()); |
|
|
|
int inventoryInquiryResult = createWarehouseInventoryInquiry(storageOrderDetail); |
|
|
|
WarehouseStorageOrderDetail updateStorageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId()); |
|
|
|
int inventoryInquiryResult = createWarehouseInventoryInquiry(updateStorageOrderDetail); |
|
|
|
if (inventoryInquiryResult <= 0){ |
|
|
|
throw new BusinessException("更新/新增库存查询失败,未影响任何行"); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//更新入库单的数据
|
|
|
@ -740,7 +748,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
if(StringUtils.isNotEmpty(damageChildren)){ |
|
|
|
for (WarehouseInventoryReportDamageChild damageChild:damageChildren) { |
|
|
|
BigDecimal scrapNum = damageChild.getActualScrapQuantity(); |
|
|
|
scrapSum = scrapSum.add(scrapSum); |
|
|
|
scrapSum = scrapSum.add(scrapNum); |
|
|
|
} |
|
|
|
} |
|
|
|
// 存在库存查询记录,更新可用库存数
|
|
|
|