Browse Source

[fix]

仓库管理 入库单
修改保存委外单入库service方法;
dev
王晓迪 3 months ago
parent
commit
e4a07f1e58
  1. 48
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

48
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

@ -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);
}
}
// 存在库存查询记录,更新可用库存数

Loading…
Cancel
Save