diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java index 334f0fc9..364d5f87 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java @@ -42,6 +42,18 @@ public interface PurchaseOrderMapper * */ List selectPurchaseOrderChildListByCodes(String[] purchaseOrderCodes); + /** + * 根据采购订单编号查询采购订单 + * */ + + PurchaseOrder selectPurchaseOrderByOrderCode(String purchaseOrderCode); + + + /** + * 通过采购订单号数组查关联的采购计划单号 + * */ + + String selectPurchasePlanCodeByCode(String purchaseOrderCode); /** * 新增采购订单 @@ -87,8 +99,7 @@ public interface PurchaseOrderMapper //查询关联类型为生产订单的采购订单列表 public List selectOrderByIdDesc(); - //根据采购订单编号查询采购订单 - PurchaseOrder selectPurchaseOrderByOrderCode(String purchaseOrderCode); + //校验采购订单编号是否唯一 public Integer checkPurchaseOrderCodeUnique(String purchaseOrderCode); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeOrder.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeOrder.java index 4d8980f4..4f57e875 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeOrder.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeOrder.java @@ -25,8 +25,8 @@ public class SysMakeOrder extends BaseEntity @Excel(name = "生产状态") private String makeStatus; - /** 入库状态 */ - @Excel(name = "入库状态") + /** 入库状态(0待采购、1采购中、2待暂收、3部分暂收、4全部暂收、5已暂收、6待入库、7部分入库、8全部入库、9已入库) */ + @Excel(name = "入库状态",dictType = "purchase_status") private String eceiptStatus; /** 品质状态 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java index ac8f7703..2b1d3136 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java @@ -124,4 +124,10 @@ public interface SysMakeOrderMapper * 根据销售单号查询生产订单 * */ SysMakeOrder selectMakeOrderBySaleNo(String salesOrderCode); + + /** + * 根据生产单号集合查询生产订单 + * */ + + List selectMakeOrderByMakeNoList(List makeNos); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java index fe761dec..6d0167b1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java @@ -15,6 +15,8 @@ import com.ruoyi.erp.domain.ErpInboundOrderDetail; import com.ruoyi.erp.domain.ErpMaterial; import com.ruoyi.erp.mapper.ErpMaterialMapper; import com.ruoyi.erp.service.IErpBomService; +import com.ruoyi.purchase.domain.PurchasePlan; +import com.ruoyi.purchase.mapper.PurchaseOrderMapper; import com.ruoyi.purchase.service.IPurchasePlanService; import com.ruoyi.quality.domain.QualityOrder; import com.ruoyi.quality.domain.QualityOrderDetail; @@ -32,6 +34,7 @@ import com.ruoyi.system.mapper.*; import com.ruoyi.system.service.*; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; +import com.ruoyi.warehouse.mapper.WarehouseStorageOrderMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -112,6 +115,13 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService @Autowired private QualityShippingDeviceMapper qualityDeviceMapper; + + @Autowired + private WarehouseStorageOrderMapper warehouseStorageOrderMapper; + + @Autowired + private PurchaseOrderMapper purchaseOrderMapper; + /** * 查询生产订单 * @@ -487,40 +497,55 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService public int updateSysMakeOrderByWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder,List warehouseStorageOrderDetailList) { String loginName = ShiroUtils.getLoginName(); - SysMakeOrder sysMakeOrder = new SysMakeOrder(); - sysMakeOrder.setUpdateBy(loginName); - sysMakeOrder.setUpdateTime(new Date()); - //暂时假设全部入库 - sysMakeOrder.setEceiptStatus("8"); - //暂时假设全部品质 - sysMakeOrder.setQualityStatus("2"); + + int updateResult = 0; //查询生产订单数据 根据 入库单关联单号 String warehouseStorageCode = warehouseStorageOrder.getWarehouseStorageCode(); if (StringUtils.isEmpty(warehouseStorageCode)){ log.warn("更新生产订单相关的入库单号为空:{}",warehouseStorageCode); } -// //合计入库的时候所有物料信息的入库数量 -// int makeOrderStorageNum = warehouseStorageOrderDetailList.stream() -// .mapToInt(WarehouseStorageOrderDetail::getStorageNum) -// .sum(); - String makeNo = sysMakeOrderMapper.selectMakeByWarehouseStorageCode(warehouseStorageCode); + String purchaseOrderCode = warehouseStorageOrderMapper.selectRelateCodeByCode(warehouseStorageCode); + if (StringUtils.isEmpty(purchaseOrderCode)){ + log.warn("找不到与仓库入库单号关联的采购单号:{}",purchaseOrderCode); + throw new BusinessException("找不到与仓库入库单号关联的采购单号"); + } - if (StringUtils.isEmpty(makeNo)) { - log.warn("找不到与仓库存储单号[{}]相关的生产单号", warehouseStorageCode); + List purchasePlanCodes = new ArrayList<>(); + String purchasePlanCode = purchaseOrderMapper.selectPurchasePlanCodeByCode(purchaseOrderCode); + if (StringUtils.isEmpty(purchasePlanCode)){ + log.warn("找不到与采购单号关联的采购计划号:{}",purchasePlanCode); + throw new BusinessException("找不到与采购单号关联的采购计划号"); } - sysMakeOrder.setMakeNo(makeNo); - //只有生产入库才能更新生产订单的已入库数 - //sysMakeOrder.setEceiptNum((long) warehouseStorageOrder.getStorageNum()); - //更新生产订单的数据 - int updateResult = sysMakeOrderMapper.updateByMakeNo(sysMakeOrder); - if (updateResult <= 0){ - log.warn("更新生产单失败,未影响任何行"); - throw new BusinessException("更新生产单失败,未影响任何行"); + if (StringUtils.isNotEmpty(purchasePlanCode)){ + String[] splitPurchasePlanCode = purchasePlanCode.split(","); + purchasePlanCodes = Arrays.asList(splitPurchasePlanCode); } - return updateResult; + List purchasePlans = purchasePlanService.selectPurchaseOrderByPlanCodeList(purchasePlanCodes); + + List makeNos = purchasePlans.stream().map(PurchasePlan::getCorrelationCode).collect(Collectors.toList()); + List sysMakeOrders = sysMakeOrderMapper.selectMakeOrderByMakeNoList(makeNos); + + for (SysMakeOrder sysMakeOrder : sysMakeOrders) { + sysMakeOrder.setUpdateBy(loginName); + sysMakeOrder.setUpdateTime(new Date()); + if (warehouseStorageOrder.getStorageNum().equals(warehouseStorageOrder.getTemporaryQualifiedNum())){ + sysMakeOrder.setEceiptStatus("8");//全部入库 + }else { + sysMakeOrder.setEceiptStatus("7");//部分入库 + } + //暂时全部品质 + sysMakeOrder.setQualityStatus("2"); + //更新生产订单的数据 + updateResult += sysMakeOrderMapper.updateByMakeNo(sysMakeOrder); + if (updateResult <= 0){ + log.warn("更新生产单失败,未影响任何行"); + throw new BusinessException("更新生产单失败,未影响任何行"); + } + } + return updateResult; } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java index df1657c7..fdb76437 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java @@ -143,4 +143,14 @@ public interface WarehouseStorageOrderMapper //根据入库单号批量查询 List selectStorageOrderListByCodes(String[] ids); + + /** + * 根据入库单号查询入库单 + * */ + WarehouseStorageOrder selectStorageOrderByCode(String warehouseStorageCode); + + /** + * 根据入库单号查询关联单号 + */ + String selectRelateCodeByCode(String warehouseStorageCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java index 8f68d75b..43a348cc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java @@ -97,10 +97,6 @@ public interface IWarehouseStorageOrderService int updateWarehouseStorageOrderByOutQualityOrder(QualityOrder qualityOrder, List qualityOrderDetailList); - /** - * 入库-采购单(采购入库) - * */ - int storagePurchaseWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder); /** * 修改保存暂收-采购单(采购入库) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java index bbffbf5b..5ee8a647 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java @@ -16,6 +16,7 @@ import com.ruoyi.erp.mapper.ErpMaterialMapper; import com.ruoyi.purchase.domain.PurchaseOrder; import com.ruoyi.purchase.domain.PurchaseOrderChild; import com.ruoyi.purchase.mapper.PurchaseOrderChildMapper; +import com.ruoyi.purchase.mapper.PurchaseOrderMapper; import com.ruoyi.quality.domain.QualityOrder; import com.ruoyi.quality.domain.QualityOrderDetail; import com.ruoyi.quality.domain.QualityRefundsExchanges; @@ -95,6 +96,10 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS @Autowired private PurchaseOrderChildMapper purchaseOrderChildMapper; + + @Autowired + private PurchaseOrderMapper purchaseOrderMapper; + @Autowired private ErpMaterialMapper erpMaterialMapper; @@ -321,41 +326,8 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS } return updateResult; } - /** - * 入库-采购单(采购入库) 旧版弃用 - * */ - @Transactional(rollbackFor = Exception.class) - @Override - public int storagePurchaseWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder) { - //假设全部入库 - warehouseStorageOrder.setWarehouseStorageStatus("4"); - warehouseStorageOrder.setUpdateBy(ShiroUtils.getLoginName()); - warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); - //记录一下入库时间 - warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); - List warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); - if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ - log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); - } - //更新生产单数据 - sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder,warehouseStorageOrderDetailList); - - for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : warehouseStorageOrderDetailList) { - //更新入库单详情的数据 - storageOrderDetailMapper.updateWarehouseStorageOrderDetail(warehouseStorageOrderDetail); - } - - //更新入库单的数据 - int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); - - if (updateResult <= 0){ - log.warn("更新入库单失败,未影响任何行"); - } - return updateResult; - } - /** * 修改保存暂收-采购单(采购入库) * */ @@ -628,6 +600,14 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); //记录一下入库时间 warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); + String warehouseStorageCode = warehouseStorageOrder.getWarehouseStorageCode(); + WarehouseStorageOrder oldWarehouseStorageOrder = warehouseStorageOrderMapper.selectStorageOrderByCode(warehouseStorageCode); + + + //更新采购订单的数据 + String purchaseOrderCode = warehouseStorageOrder.getRelatedOrderCode(); + PurchaseOrder purchaseOrder = purchaseOrderMapper.selectPurchaseOrderByOrderCode(purchaseOrderCode); + List warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); @@ -649,20 +629,40 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS .mapToInt(WarehouseStorageOrderDetail::getStorageNum) .sum(); - //插入主表入库数量 - warehouseStorageOrder.setStorageNum(storageNum); - //更新生产单数据 - int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder, warehouseStorageOrderDetailList); - if (updateMakeOrderResult <= 0){ - throw new BusinessException("更新生产订单失败,未影响任何行"); + if (oldWarehouseStorageOrder.getStorageNum() == null || oldWarehouseStorageOrder.getStorageNum() == 0){ + //插入主表入库数量 + warehouseStorageOrder.setStorageNum(storageNum); + purchaseOrder.setStorageSum(storageNum); + }else { + warehouseStorageOrder.setStorageNum(storageNum + oldWarehouseStorageOrder.getStorageNum()); + purchaseOrder.setStorageSum(storageNum + oldWarehouseStorageOrder.getStorageNum()); } + + for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : warehouseStorageOrderDetailList) { //更新入库单详情的数据 warehouseStorageOrderDetail.setUpdateBy(loginName); warehouseStorageOrderDetail.setUpdateTime(DateUtils.getNowDate()); - //更新已入库数 - warehouseStorageOrderDetail.setHasStorageNum(warehouseStorageOrderDetail.getStorageNum()); + + Integer storageNumDetail = warehouseStorageOrderDetail.getStorageNum(); + Integer temporaryQualifiedNum = warehouseStorageOrderDetail.getTemporaryQualifiedNum(); + if (temporaryQualifiedNum < storageNumDetail){ + throw new BusinessException("入库数量不能大于暂收合格数"); + } + + Integer hasStorageNum = warehouseStorageOrderDetail.getHasStorageNum(); + if (hasStorageNum == null || hasStorageNum == 0){ + //更新已入库数 + warehouseStorageOrderDetail.setHasStorageNum(storageNumDetail); + }else{ + warehouseStorageOrderDetail.setHasStorageNum(hasStorageNum + storageNumDetail); + } + + if (temporaryQualifiedNum < hasStorageNum){ + throw new BusinessException("已入库数量不能大于暂收合格数"); + } + int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(warehouseStorageOrderDetail); if (updateWarehouseStorageOrderDetailResult <= 0){ throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); @@ -675,6 +675,12 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS } } + //更新生产单数据 + int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder, warehouseStorageOrderDetailList); + if (updateMakeOrderResult <= 0){ + throw new BusinessException("更新生产订单失败,未影响任何行"); + } + //更新开发修改单数据 String relatedOrderCode = warehouseStorageOrder.getRelatedOrderCode(); ErpDevelopModifyorder erpDevelopModifyorder = developModifyorderMapper.selectErpDevelopModifyorderByCode(relatedOrderCode); @@ -684,6 +690,22 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS } + if (warehouseStorageOrder.getStorageNum().equals(warehouseStorageOrder.getTemporaryQualifiedNum())){ + warehouseStorageOrder.setWarehouseStorageStatus("4");//全部入库 + purchaseOrder.setWarehouseStorageStatus("4"); + }else { + warehouseStorageOrder.setWarehouseStorageStatus("3");//部分入库 + purchaseOrder.setWarehouseStorageStatus("3"); + } + + purchaseOrder.setUpdateBy(loginName); + purchaseOrder.setUpdateTime(DateUtils.getNowDate()); + int updatePurchaseOrderResult = purchaseOrderMapper.updatePurchaseOrder(purchaseOrder); + if (updatePurchaseOrderResult <= 0){ + log.warn("更新采购订单失败,未影响任何行"); + throw new BusinessException("更新采购订单失败,未影响任何行"); + } + //更新入库单的数据 int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); diff --git a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml index 22d39026..de53e021 100644 --- a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml @@ -81,6 +81,18 @@ + + + + + insert into purchase_order diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml index 34651cb9..8d3aa0cf 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml @@ -282,6 +282,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderMapper.xml index 0f709516..ab7ebaab 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderMapper.xml @@ -76,11 +76,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where warehouse_storage_id = #{warehouseStorageId} + + + + + + + - + insert into warehouse_storage_order diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchase.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchase.html index 9e60d089..ad9847a6 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchase.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchase.html @@ -287,7 +287,7 @@ }, { - title: '暂收数量', + title: '暂收合格数', field: 'temporaryQualifiedNum' }, { diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseDetail.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseDetail.html index 1a8abc57..4ee5f345 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseDetail.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseDetail.html @@ -284,7 +284,7 @@ }, { - title: '暂收数量', + title: '暂收合格数', field: 'temporaryQualifiedNum' }, { diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseWarehouse.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseWarehouse.html index f0f8ec16..e3c4c21d 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseWarehouse.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseWarehouse.html @@ -284,7 +284,7 @@ }, { - title: '暂收数量', + title: '暂收合格数', field: 'temporaryQualifiedNum' }, { diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseWarehouseDetail.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseWarehouseDetail.html index 952315a4..549512b6 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseWarehouseDetail.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storagePurchaseWarehouseDetail.html @@ -283,7 +283,7 @@ }, { - title: '暂收数量', + title: '暂收合格数', field: 'temporaryQualifiedNum' }, {