Browse Source

[fix]

仓库管理 入库单
修改采购订单仓库入库和采购入库service方法,添加品质合格数非空判断,过滤入库数不为0的入库单详情;
修改仓库采购进行入库的时候更新订单service方法,遍历关联订单号,根据字符串开头查找更新生产订单和请购单仓库状态;
dev
王晓迪 3 months ago
parent
commit
acf0a5bdba
  1. 32
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java
  2. 44
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

32
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java

@ -27,6 +27,7 @@ import com.ruoyi.quality.mapper.QualityOrderMapper;
import com.ruoyi.quality.mapper.QualityOrderReportMapper; import com.ruoyi.quality.mapper.QualityOrderReportMapper;
import com.ruoyi.quality.mapper.QualityShippingDeviceMapper; import com.ruoyi.quality.mapper.QualityShippingDeviceMapper;
import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.Vo.BaseRequisitioningOrderVo;
import com.ruoyi.system.dto.SysEquipDetailDto; import com.ruoyi.system.dto.SysEquipDetailDto;
import com.ruoyi.system.dto.SysEquipMaterialDto; import com.ruoyi.system.dto.SysEquipMaterialDto;
import com.ruoyi.system.dto.SysMakeorderMaterialDto; import com.ruoyi.system.dto.SysMakeorderMaterialDto;
@ -122,6 +123,9 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService
@Autowired @Autowired
private PurchaseOrderMapper purchaseOrderMapper; private PurchaseOrderMapper purchaseOrderMapper;
@Autowired
private BaseRequisitioningOrderMapper requisitioningOrderMapper;
/** /**
* 查询生产订单 * 查询生产订单
* *
@ -524,25 +528,35 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService
} }
List<PurchasePlan> purchasePlans = purchasePlanService.selectPurchaseOrderByPlanCodeList(purchasePlanCodes); List<PurchasePlan> purchasePlans = purchasePlanService.selectPurchaseOrderByPlanCodeList(purchasePlanCodes);
List<String> makeNos = purchasePlans.stream().map(PurchasePlan::getCorrelationCode).collect(Collectors.toList()); List<String> relatedCodes = purchasePlans.stream().map(PurchasePlan::getCorrelationCode).collect(Collectors.toList());
List<SysMakeOrder> sysMakeOrders = sysMakeOrderMapper.selectMakeOrderByMakeNoList(makeNos); for (String relatedCode: relatedCodes) {
if(relatedCode.startsWith("PO")){
for (SysMakeOrder sysMakeOrder : sysMakeOrders) { SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderByMakeNo(relatedCode);
sysMakeOrder.setUpdateBy(loginName); sysMakeOrder.setUpdateBy(loginName);
sysMakeOrder.setUpdateTime(new Date()); sysMakeOrder.setUpdateTime(new Date());
if (warehouseStorageOrder.getStorageNum().equals(oldWarehouseStorageOrder.getTemporaryQualifiedNum())){
sysMakeOrder.setEceiptStatus("8");//全部入库
}else {
sysMakeOrder.setEceiptStatus("7");//部分入库 sysMakeOrder.setEceiptStatus("7");//部分入库
}
//更新生产订单的数据 //更新生产订单的数据
updateResult += sysMakeOrderMapper.updateByMakeNo(sysMakeOrder); updateResult += sysMakeOrderMapper.updateByMakeNo(sysMakeOrder);
if (updateResult <= 0){ if (updateResult <= 0){
log.warn("更新生产单失败,未影响任何行"); log.warn("更新生产单失败,未影响任何行");
throw new BusinessException("更新生产单失败,未影响任何行"); throw new BusinessException("更新生产单失败,未影响任何行");
} }
}else if(relatedCode.startsWith("QG")){
BaseRequisitioningOrderVo temp = new BaseRequisitioningOrderVo();
temp.setRequisitioningCode(relatedCode);
BaseRequisitioningOrder requisitioningOrder = requisitioningOrderMapper.selectBaseRequisitioningOrderList(temp).get(0);
requisitioningOrder.setUpdateBy(loginName);
requisitioningOrder.setUpdateTime(new Date());
requisitioningOrder.setRequisitioningStatus("2");//部分入库
//更新生产订单的数据
updateResult += requisitioningOrderMapper.updateBaseRequisitioningOrder(requisitioningOrder);
if (updateResult <= 0){
log.warn("更新请购单失败,未影响任何行");
throw new BusinessException("更新请购单失败,未影响任何行");
}
}
} }
return updateResult; return updateResult;
} }

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

@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper; import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
@ -593,22 +594,26 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
String purchaseOrderCode = warehouseStorageOrder.getRelatedOrderCode(); String purchaseOrderCode = warehouseStorageOrder.getRelatedOrderCode();
PurchaseOrder purchaseOrder = purchaseOrderMapper.selectPurchaseOrderByOrderCode(purchaseOrderCode); PurchaseOrder purchaseOrder = purchaseOrderMapper.selectPurchaseOrderByOrderCode(purchaseOrderCode);
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); List<WarehouseStorageOrderDetail> orderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList();
if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ if (StringUtils.isEmpty(orderDetailList)){
log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); log.warn("入库单详情数据为空:{}",orderDetailList);
throw new BusinessException("入库单详情数据为空"); throw new BusinessException("入库单详情数据为空");
} }
//入库数
Integer storageNum = 0;
// 检查storageNum是否含有null值 // 检查storageNum是否含有null值
boolean hasThisStorageNumNull = warehouseStorageOrderDetailList.stream() boolean hasThisStorageNumNull = orderDetailList.stream()
.anyMatch(item -> item.getStorageNum() == null); .anyMatch(item -> item.getStorageNum() == null);
if (hasThisStorageNumNull) { if (hasThisStorageNumNull) {
throw new BusinessException("存在入库数为空,请检查!"); throw new BusinessException("存在入库数为空,请检查!");
} }
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = orderDetailList.stream()
.filter(item ->item.getStorageNum() != 0).collect(Collectors.toList());
//入库数
Integer storageNum = 0;
// 计算各个字段的总和 // 计算各个字段的总和
storageNum = warehouseStorageOrderDetailList.stream() storageNum = warehouseStorageOrderDetailList.stream()
.mapToInt(WarehouseStorageOrderDetail::getStorageNum) .mapToInt(WarehouseStorageOrderDetail::getStorageNum)
@ -979,22 +984,26 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
String purchaseOrderCode = warehouseStorageOrder.getRelatedOrderCode(); String purchaseOrderCode = warehouseStorageOrder.getRelatedOrderCode();
PurchaseOrder purchaseOrder = purchaseOrderMapper.selectPurchaseOrderByOrderCode(purchaseOrderCode); PurchaseOrder purchaseOrder = purchaseOrderMapper.selectPurchaseOrderByOrderCode(purchaseOrderCode);
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); List<WarehouseStorageOrderDetail> orderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList();
if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ if (StringUtils.isEmpty(orderDetailList)){
log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); log.warn("入库单详情数据为空:{}",orderDetailList);
throw new BusinessException("入库单详情数据为空"); throw new BusinessException("入库单详情数据为空");
} }
//入库数
Integer storageNum = 0;
// 检查storageNum是否含有null值 // 检查storageNum是否含有null值
boolean hasThisStorageNumNull = warehouseStorageOrderDetailList.stream() boolean hasThisStorageNumNull = orderDetailList.stream()
.anyMatch(item -> item.getStorageNum() == null); .anyMatch(item -> item.getStorageNum() == null);
if (hasThisStorageNumNull) { if (hasThisStorageNumNull) {
throw new BusinessException("存在入库数为空,请检查!"); throw new BusinessException("存在入库数为空,请检查!");
} }
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = orderDetailList.stream()
.filter(item ->item.getStorageNum() != null && item.getStorageNum() != 0).collect(Collectors.toList());
//入库数
Integer storageNum = 0;
// 计算各个字段的总和 // 计算各个字段的总和
storageNum = warehouseStorageOrderDetailList.stream() storageNum = warehouseStorageOrderDetailList.stream()
.mapToInt(WarehouseStorageOrderDetail::getStorageNum) .mapToInt(WarehouseStorageOrderDetail::getStorageNum)
@ -1026,7 +1035,8 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
oldPurchaseOrderChild.setUpdateTime(DateUtils.getNowDate()); oldPurchaseOrderChild.setUpdateTime(DateUtils.getNowDate());
Integer storageNumDetail = warehouseStorageOrderDetail.getStorageNum(); Integer storageNumDetail = warehouseStorageOrderDetail.getStorageNum();
Integer qualityHasQualifiedNum = warehouseStorageOrderDetail.getQualityHasQualifiedNum(); Integer qualityHasQualifiedNum = Optional.ofNullable(warehouseStorageOrderDetail.getQualityHasQualifiedNum())
.orElse(0);
if (qualityHasQualifiedNum < storageNumDetail){ if (qualityHasQualifiedNum < storageNumDetail){
throw new BusinessException("入库数量不能大于品质合格数"); throw new BusinessException("入库数量不能大于品质合格数");
} }
@ -1044,7 +1054,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
} }
if (qualityHasQualifiedNum < hasStorageNum){ if (qualityHasQualifiedNum < hasStorageNum){
throw new BusinessException("入库数量不能大于品质合格数"); throw new BusinessException("入库数量不能大于品质合格数");
} }
int updatePurchaseOrderChildResult = purchaseOrderChildMapper.updatePurchaseOrderChild(oldPurchaseOrderChild); int updatePurchaseOrderChildResult = purchaseOrderChildMapper.updatePurchaseOrderChild(oldPurchaseOrderChild);

Loading…
Cancel
Save