Pārlūkot izejas kodu

生产订单 添加物料结存

yzc 1 gadu atpakaļ
vecāks
revīzija
fd5bc77818

+ 7 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProduceOrderController.java

@@ -1,6 +1,7 @@
 package com.fjhx.mes.controller.production;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.MaterialBalanceBo;
 import com.fjhx.mes.entity.production.dto.ProduceOrderSelectDto;
 import com.fjhx.mes.entity.production.dto.ProductionOrderDto;
 import com.fjhx.mes.entity.production.vo.ProductionOrderVo;
@@ -95,4 +96,10 @@ public class ProduceOrderController {
     public ProductionOrderVo detail(@RequestBody BaseSelectDto dto) {
         return produceOrderService.detail(dto.getId());
     }
+
+    @PostMapping("/materialBalanceList")
+    List<MaterialBalanceBo> materialBalanceList(@RequestBody BaseSelectDto dto) {
+        return produceOrderService.materialBalanceList(dto.getId());
+    }
+
 }

+ 19 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/MaterialBalanceBo.java

@@ -0,0 +1,19 @@
+package com.fjhx.mes.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class MaterialBalanceBo {
+    private String materialCode;
+    private String materialName;
+    private Long materialId;
+    private BigDecimal quantity;
+    private BigDecimal unclaimedQuantity;
+    private BigDecimal receivedQuantity;
+    private BigDecimal workshopInventoryQuantity;
+    private BigDecimal purchaseTransitQuantity;
+}

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProduceOrderMapper.java

@@ -2,6 +2,7 @@ package com.fjhx.mes.mapper.production;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.MaterialBalanceBo;
 import com.fjhx.mes.entity.production.po.ProductionOrder;
 import com.fjhx.mes.entity.production.vo.ProductionOrderVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
@@ -30,4 +31,9 @@ public interface ProduceOrderMapper extends BaseMapper<ProductionOrder> {
      */
     List<ProductionOrderVo> getSchedulingList(@Param("ew") IWrapper<ProductionOrder> wrapper);
 
+    /**
+     * 物料结存
+     */
+    List<MaterialBalanceBo> materialBalanceList(@Param("orderID") Long orderId);
+
 }

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/ProduceOrderService.java

@@ -1,6 +1,7 @@
 package com.fjhx.mes.service.production;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.MaterialBalanceBo;
 import com.fjhx.mes.entity.production.dto.ProduceOrderSelectDto;
 import com.fjhx.mes.entity.production.dto.ProductionOrderDto;
 import com.fjhx.mes.entity.production.po.ProductionOrder;
@@ -58,4 +59,9 @@ public interface ProduceOrderService extends BaseService<ProductionOrder> {
     void editDeliveryPeriod(ProductionOrderDto dto);
 
     ProductionOrderVo detail(Long id);
+
+    /**
+     * 物料结存
+     */
+    List<MaterialBalanceBo> materialBalanceList(Long id);
 }

+ 14 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderServiceImpl.java

@@ -13,6 +13,7 @@ import com.fjhx.common.utils.Assert;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.enums.ProductAvailableRecordType;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.mes.entity.MaterialBalanceBo;
 import com.fjhx.mes.entity.material.po.MaterialPreparation;
 import com.fjhx.mes.entity.production.dto.ProduceOrderSelectDto;
 import com.fjhx.mes.entity.production.dto.ProductionOrderDto;
@@ -764,6 +765,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
         stockWait.setBusinessType(JournalType.PROD_OUT.getDetailType());//生产任务出库
         stockWait.setContractId(productionOrder.getContractId());
         stockWait.setBusinessCode(productionOrder.getCode());
+        stockWait.setProdOrderId(productionOrder.getId());
         stockWaitService.saveOrUpdate(stockWait);
 
         List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
@@ -858,4 +860,16 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
         return productionOrderVo;
     }
 
+    @Override
+    public List<MaterialBalanceBo> materialBalanceList(Long id) {
+        List<MaterialBalanceBo> materialBalanceBos = baseMapper.materialBalanceList(id);
+
+        productInfoService.attributeAssign(materialBalanceBos, MaterialBalanceBo::getMaterialId, (item, material) -> {
+            item.setMaterialCode(material.getCustomCode());
+            item.setMaterialName(material.getName());
+        });
+
+        return materialBalanceBos;
+    }
+
 }

+ 33 - 1
hx-mes/src/main/resources/mapper/production/ProduceOrderMapper.xml

@@ -24,7 +24,7 @@
                  LEFT JOIN contract c ON po.contract_id = c.id
             ${ew.customSqlSegment}
     </select>
-	<select id="getSchedulingList" resultType="com.fjhx.mes.entity.production.vo.ProductionOrderVo">
+    <select id="getSchedulingList" resultType="com.fjhx.mes.entity.production.vo.ProductionOrderVo">
         SELECT po.id,
                po.`code`,
                GROUP_CONCAT(pi.`name` SEPARATOR ',')                          AS productName,
@@ -38,5 +38,37 @@
                  LEFT JOIN product_info pi ON pod.product_id = pi.id
             ${ew.customSqlSegment}
     </select>
+    <select id="materialBalanceList" resultType="com.fjhx.mes.entity.MaterialBalanceBo">
+        SELECT t1.material_id,
+               t1.quantity,
+               (t1.quantity - t1.receiptQuantity)     AS unclaimedQuantity,
+               t1.receiptQuantity                     AS receivedQuantity,
+               (t1.receiptQuantity - t1.usedQuantity) AS workshopInventoryQuantity,
+               IFNULL(t1.purchaseTransitQuantity, 0)  AS purchaseTransitQuantity
+        FROM (SELECT cpb.product_name,
+                     cpb.material_id,
+                     sum(cpb.quantity * cp.quantity)          AS quantity,
+                     (SELECT sum(receipt_quantity)
+                      FROM stock_wait_details swd
+                               JOIN stock_wait sw ON swd.stock_wait_id = sw.id
+                      WHERE sw.business_id = po.id
+                        AND swd.product_id = cpb.material_id) AS receiptQuantity,
+                     (SELECT sum(pod.finish_quantity * cpb1.quantity)
+                      FROM production_order_detail pod
+                               JOIN contract_product_bom cpb1 ON cpb1.contract_product_id = pod.contract_detail_id
+                      WHERE cpb1.id = cpb.id
+                        AND pod.produce_order_id = po.id)     AS usedQuantity,
+                     (SELECT sum(pp.quantity) - IFNULL(sum(ad.quantity), 0)
+                      FROM subscribe_detail sd
+                               JOIN ehsd_purchase_product pp ON pp.subscribe_detail_id = sd.id
+                               LEFT JOIN arrival_detail ad ON ad.purchase_detail_id = pp.id
+                      WHERE pp.product_id = cpb.material_id
+                        AND sd.contract_id = po.contract_id)  AS purchaseTransitQuantity
+              FROM production_order po
+                       LEFT JOIN contract_product cp ON cp.contract_id = po.contract_id
+                       LEFT JOIN contract_product_bom cpb ON cpb.contract_product_id = cp.id
+              WHERE po.id = #{orderID}
+              GROUP BY cpb.material_id) t1
+    </select>
 
 </mapper>