浏览代码

待采购问题处理

yzc 1 年之前
父节点
当前提交
759f4e49bd

+ 14 - 14
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -150,13 +150,13 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
         Map<Long, String> companyMap = companyList.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
 
         //获取合同物料数量
-        List<Long> contractIds = records.stream().
-                filter(item -> Objects.equals(item.getDataType(), 1)).map(SubscribeDetail::getContractId).collect(Collectors.toList());
-        List<SubscribeDetailVo> contractCount = new ArrayList<>();
-        if (ObjectUtil.isNotEmpty(contractIds)) {
-            contractCount = baseMapper.getContractCountByContractIds(contractIds);
-        }
-        Map<Long, List<SubscribeDetailVo>> contractCountMap = contractCount.stream().collect(Collectors.groupingBy(SubscribeDetail::getContractId));
+//        List<Long> contractIds = records.stream().
+//                filter(item -> Objects.equals(item.getDataType(), 1)).map(SubscribeDetail::getContractId).collect(Collectors.toList());
+//        List<SubscribeDetailVo> contractCount = new ArrayList<>();
+//        if (ObjectUtil.isNotEmpty(contractIds)) {
+//            contractCount = baseMapper.getContractCountByContractIds(contractIds);
+//        }
+//        Map<Long, List<SubscribeDetailVo>> contractCountMap = contractCount.stream().collect(Collectors.groupingBy(SubscribeDetail::getContractId));
 
         //获取生产公司信息
         List<Long> companyIds = records.stream().map(SubscribeDetail::getCompanyId).collect(Collectors.toList());
@@ -187,13 +187,13 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
             //赋值生产公司名称
             record.setCompanyName(companyNameMap.get(record.getCompanyId()));
 
-            //赋值生产需求量
-            List<SubscribeDetailVo> subscribeDetailList = contractCountMap.get(record.getContractId());
-            if (ObjectUtil.isNotEmpty(subscribeDetailList)) {
-                Map<Long, BigDecimal> collect = subscribeDetailList.stream().collect(Collectors.toMap(SubscribeDetail::getProductId, SubscribeDetail::getCount));
-                BigDecimal bigDecimal = collect.get(record.getProductId());
-                record.setProdNeedCount(bigDecimal);
-            }
+//            //赋值生产需求量
+//            List<SubscribeDetailVo> subscribeDetailList = contractCountMap.get(record.getContractId());
+//            if (ObjectUtil.isNotEmpty(subscribeDetailList)) {
+//                Map<Long, BigDecimal> collect = subscribeDetailList.stream().collect(Collectors.toMap(SubscribeDetail::getProductId, SubscribeDetail::getCount));
+//                BigDecimal bigDecimal = collect.get(record.getProductId());
+//                record.setProdNeedCount(bigDecimal);
+//            }
         }
 
         // 赋值采购数量

+ 23 - 13
hx-purchase/src/main/resources/mapper/subscribe/SubscribeDetailMapper.xml

@@ -15,25 +15,33 @@
                       t2.company_id            AS corporationId,
                       null                     AS prodTag,
                       NULL                     AS prodRemark,
-                      t2.is_in_stock
+                      t2.is_in_stock,
+                      null                     as prodNeedCount
                FROM subscribe_detail t1
                         LEFT JOIN subscribe t2 ON t1.subscribe_id = t2.id
                    AND t1.data_type = 0
                WHERE t1.data_type = 0)
               UNION ALL
               (SELECT t1.*,
-                      t2.`code`      AS subscribeCode,
-                      null           AS subscribeContent,
-                      t1.create_time AS subcribeTime,
-                      null           AS subcribeName,
-                      t2.id          AS subcribeId,
-                      null           AS requiredArrivalTime,
-                      null           AS putWarehouseId,
+                      t2.`code`                               AS subscribeCode,
+                      null                                    AS subscribeContent,
+                      t1.create_time                          AS subcribeTime,
+                      null                                    AS subcribeName,
+                      t2.id                                   AS subcribeId,
+                      null                                    AS requiredArrivalTime,
+                      null                                    AS putWarehouseId,
                       t2.flow_id,
-                      null           AS corporationId,
-                      t2.prod_tag    AS prodTag,
-                      t2.prod_remark AS prodRemark,
-                      null           as is_in_stock
+                      null                                    AS corporationId,
+                      t2.prod_tag                             AS prodTag,
+                      t2.prod_remark                          AS prodRemark,
+                      null                                    as is_in_stock,
+                      (SELECT sum(cpb.quantity * cp.quantity)
+                       FROM contract_product_bom cpb
+                                LEFT JOIN contract_product cp ON cpb.contract_product_id = cp.id
+                                LEFT JOIN product_info pi ON cp.product_id = pi.id
+                       WHERE cp.contract_id = t1.contract_id
+                         AND pi.company_id = t1.company_id
+                         AND cpb.material_id = t1.product_id) AS prodNeedCount
                FROM subscribe_detail t1
                         LEFT JOIN contract t2 ON t1.contract_id = t2.id
                WHERE t1.data_type = 1)) t2
@@ -92,8 +100,10 @@
         FROM
         contract_product_bom cpb
         LEFT JOIN contract_product cp ON cpb.contract_product_id = cp.id
+        LEFT JOIN product_info pi ON cp.product_id = pi.id
         <where>
-            <foreach collection="ids" item="id" open="cpb.contract_id IN (" separator="," close=")">
+            pi.company_id = #{companyId}
+            <foreach collection="ids" item="id" open="and cpb.contract_id IN (" separator="," close=")">
                 #{id}
             </foreach>
         </where>