Browse Source

[fix]

仓库管理 入库单
修改采购订单仓库入库和采购入库service方法,添加品质合格数非空判断,过滤入库数不为0的入库单详情;
修改仓库采购进行入库的时候更新订单service方法,遍历关联订单号,根据字符串开头查找更新生产订单和请购单仓库状态;
dev
王晓迪 3 months ago
parent
commit
acf0a5bdba
  1. 46
      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

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

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

Loading…
Cancel
Save