|
|
@ -3,6 +3,7 @@ package com.ruoyi.warehouse.service.impl; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Optional; |
|
|
|
|
|
|
|
import com.ruoyi.common.core.redis.RedisCache; |
|
|
|
import com.ruoyi.common.exception.BusinessException; |
|
|
@ -720,7 +721,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail); |
|
|
|
} |
|
|
|
} |
|
|
|
}else if(warehouseStorageType.equals("2")){//新增委内入库库存历史记录
|
|
|
|
}else if(warehouseStorageType.equals("5")){//新增生产入库库存历史记录
|
|
|
|
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail(); |
|
|
|
inquiryDetail = createMakeInOrderInquiryDetail(warehouseStorageOrderDetail); |
|
|
|
inquiryDetail.setInventoryHistoricalType("1"); |
|
|
@ -824,7 +825,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
return inquiryDetail; |
|
|
|
} |
|
|
|
|
|
|
|
//生成委内(委外)入库库存历史记录
|
|
|
|
//生成生产(委外)入库库存历史记录
|
|
|
|
public WarehouseInventoryInquiryDetail createMakeInOrderInquiryDetail(WarehouseStorageOrderDetail warehouseStorageOrderDetail){ |
|
|
|
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail(); |
|
|
|
inquiryDetail.setMaterialNo(warehouseStorageOrderDetail.getMaterialNo()); |
|
|
@ -1351,20 +1352,18 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
@Override |
|
|
|
public int updateStorageMake(WarehouseStorageOrder warehouseStorageOrder) { |
|
|
|
String loginName = ShiroUtils.getLoginName(); |
|
|
|
String storageCode = warehouseStorageOrder.getWarehouseStorageCode(); |
|
|
|
WarehouseStorageOrder oldStorageOrder = warehouseStorageOrderMapper.selectStorageOrderByCode(storageCode); |
|
|
|
|
|
|
|
//假设全部入库
|
|
|
|
warehouseStorageOrder.setWarehouseStorageStatus("4"); |
|
|
|
warehouseStorageOrder.setUpdateBy(loginName); |
|
|
|
warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
//记录一下入库时间
|
|
|
|
warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); |
|
|
|
oldStorageOrder.setStorageTime(DateUtils.getNowDate()); |
|
|
|
String warehouseCode = warehouseStorageOrder.getWarehouseCode(); |
|
|
|
String warehouseName = warehouseStorageOrder.getWarehouseName(); |
|
|
|
if (StringUtils.isNotEmpty(warehouseCode)){ |
|
|
|
warehouseStorageOrder.setWarehouseCode(warehouseCode); |
|
|
|
oldStorageOrder.setWarehouseCode(warehouseCode); |
|
|
|
} |
|
|
|
if (StringUtils.isNotEmpty(warehouseName)){ |
|
|
|
warehouseStorageOrder.setWarehouseName(warehouseName); |
|
|
|
oldStorageOrder.setWarehouseName(warehouseName); |
|
|
|
} |
|
|
|
|
|
|
|
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); |
|
|
@ -1373,53 +1372,66 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
throw new BusinessException("入库单详情数据为空"); |
|
|
|
} |
|
|
|
|
|
|
|
//入库数
|
|
|
|
Integer storageNum = 0; |
|
|
|
|
|
|
|
// 检查storageNum是否含有null值
|
|
|
|
boolean hasThisStorageNumNull = warehouseStorageOrderDetailList.stream() |
|
|
|
.anyMatch(item -> item.getStorageNum() == null); |
|
|
|
|
|
|
|
if (hasThisStorageNumNull) { |
|
|
|
throw new BusinessException("存在入库数为空,请检查!"); |
|
|
|
} |
|
|
|
// 计算各个字段的总和
|
|
|
|
storageNum = warehouseStorageOrderDetailList.stream() |
|
|
|
//插入主表入库数量
|
|
|
|
int orderStorageNum = Optional.ofNullable(oldStorageOrder.getStorageNum()) |
|
|
|
.orElse(0); |
|
|
|
int storageSum = warehouseStorageOrderDetailList.stream() |
|
|
|
.mapToInt(WarehouseStorageOrderDetail::getStorageNum) |
|
|
|
.sum(); |
|
|
|
|
|
|
|
//插入主表入库数量
|
|
|
|
warehouseStorageOrder.setStorageNum(storageNum); |
|
|
|
|
|
|
|
storageSum = storageSum + orderStorageNum; |
|
|
|
warehouseStorageOrder.setStorageNum(storageSum); |
|
|
|
warehouseStorageOrder.setWarehouseStorageStatus("3");//部分入库
|
|
|
|
//品质合格数和总入库数相等,全部入库
|
|
|
|
int qualifiedNum = oldStorageOrder.getQualityQualifiedNum(); |
|
|
|
if(storageSum == qualifiedNum){ |
|
|
|
warehouseStorageOrder.setWarehouseStorageStatus("4");//全部入库
|
|
|
|
} |
|
|
|
|
|
|
|
//更新生产订单的数据
|
|
|
|
SysMakeOrder tempSysMakeOrder = sysMakeOrderMapper.selectMakeOrderByMakeNo(warehouseStorageOrder.getRelatedOrderCode()); |
|
|
|
tempSysMakeOrder.setEceiptNum(storageNum); |
|
|
|
tempSysMakeOrder.setEceiptNum(storageSum); |
|
|
|
//设置生产状态为全部完成
|
|
|
|
tempSysMakeOrder.setMakeStatus("6"); |
|
|
|
int updateMakeOrderResult = sysMakeOrderService.updateByMakeNo(tempSysMakeOrder); |
|
|
|
if (updateMakeOrderResult <= 0){ |
|
|
|
throw new BusinessException("更新生产订单数据失败"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//更新销售订单数据
|
|
|
|
SysSalesOrder sysSalesOrder = salesOrderMapper.selectSysSalesOrderBySalesOrderCode(tempSysMakeOrder.getSaleNo()); |
|
|
|
//设置为全部完成
|
|
|
|
sysSalesOrder.setMakeStatus("6"); |
|
|
|
//设置为待出货
|
|
|
|
sysSalesOrder.setDeliveryStatus("2"); |
|
|
|
//设置为生产订单的完成状态
|
|
|
|
sysSalesOrder.setMakeStatus(tempSysMakeOrder.getMakeStatus()); |
|
|
|
int updateSalesOrderResult = salesOrderService.updateSysSalesOrderBySalesOrderCode(sysSalesOrder); |
|
|
|
if (updateSalesOrderResult <= 0){ |
|
|
|
throw new BusinessException("更新销售订单数据失败"); |
|
|
|
} |
|
|
|
|
|
|
|
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 storageOrderInquiryDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId()); |
|
|
|
int inquiryResult = createWarehouseInventoryInquiry(storageOrderInquiryDetail); |
|
|
|
if (inquiryResult <= 0){ |
|
|
|
throw new BusinessException("更新仓库库存查询失败,未影响任何行"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//更新销售订单子表的数据
|
|
|
|
for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : warehouseStorageOrderDetailList) { |
|
|
|
SysSalesOrderChild sysSalesOrderChild = new SysSalesOrderChild(); |
|
|
|
sysSalesOrderChild.setQuoteId(tempSysMakeOrder.getSaleNo()); |
|
|
|
sysSalesOrderChild.setMaterialCode(warehouseStorageOrderDetail.getMaterialNo()); |
|
|
|
sysSalesOrderChild.setFinishNum(warehouseStorageOrderDetail.getStorageNum()); |
|
|
|
sysSalesOrderChild.setFinishNum(warehouseStorageOrderDetail.getHasStorageNum()); |
|
|
|
sysSalesOrderChild.setUpdateBy(loginName); |
|
|
|
sysSalesOrderChild.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
int updateSalesOrderChildResult = salesOrderChildMapper.updateSysSalesOrderChildByCodeAndQuoteId(sysSalesOrderChild); |
|
|
@ -1427,33 +1439,12 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS |
|
|
|
throw new BusinessException("更新销售订单子表数据失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// //更新生产单数据
|
|
|
|
// int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder, warehouseStorageOrderDetailList);
|
|
|
|
// if (updateMakeOrderResult <= 0){
|
|
|
|
// throw new BusinessException("更新生产订单失败,未影响任何行");
|
|
|
|
// }
|
|
|
|
|
|
|
|
for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : warehouseStorageOrderDetailList) { |
|
|
|
//更新入库单详情的数据
|
|
|
|
warehouseStorageOrderDetail.setUpdateBy(loginName); |
|
|
|
warehouseStorageOrderDetail.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
//更新已入库数
|
|
|
|
warehouseStorageOrderDetail.setHasStorageNum(warehouseStorageOrderDetail.getStorageNum()); |
|
|
|
int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(warehouseStorageOrderDetail); |
|
|
|
if (updateWarehouseStorageOrderDetailResult <= 0){ |
|
|
|
throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); |
|
|
|
} |
|
|
|
} |
|
|
|
//更新入库单的数据
|
|
|
|
int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); |
|
|
|
|
|
|
|
if (updateResult <= 0){ |
|
|
|
log.warn("更新入库单失败,未影响任何行"); |
|
|
|
throw new BusinessException("更新入库单数据失败,未影响任何行"); |
|
|
|
} |
|
|
|
return updateResult; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|