From 2b30c5d86d2fcb1c8c5f8f4c90b5a46668760493 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期一, 30 六月 2025 14:12:10 +0800
Subject: [PATCH] 在制品报表查询优化

---
 north-glass-erp/northglass-erp/src/lang/en.js                               |    1 
 north-glass-erp/northglass-erp/src/lang/ar.js                               |    1 
 north-glass-erp/northglass-erp/src/lang/ru.js                               |    1 
 north-glass-erp/src/main/resources/mapper/pp/Report.xml                     |  221 +++++++++++++++++++++++++++---------
 north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue       |   34 +---
 north-glass-erp/northglass-erp/src/lang/zh.js                               |    1 
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java |   56 ++++++++
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java   |    8 +
 north-glass-erp/northglass-erp/src/lang/kr.js                               |    1 
 9 files changed, 236 insertions(+), 88 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/lang/ar.js b/north-glass-erp/northglass-erp/src/lang/ar.js
index 7eac612..719ba03 100644
--- a/north-glass-erp/northglass-erp/src/lang/ar.js
+++ b/north-glass-erp/northglass-erp/src/lang/ar.js
@@ -995,6 +995,7 @@
             finishedProductReport :'鬲賯乇賷乇 丕賱賲賳鬲噩丕鬲 丕賱賳賴丕卅賷丞',
             orderWorkReportForm :'璁㈠崟鎶ュ伐鎶ヨ〃',
         },
+        teamsGroupsName:'涓婂伐搴忔姤宸�',
         productionReport:'鬲賯乇賷乇 丕賱廿賳鬲丕噩',
         workInProgressReport:'鬲賯乇賷乇 爻賷乇 丕賱毓賲賱',
         processToBeCompleted:'鬲賯乇賷乇 丕賱毓賲賱賷丞 丕賱賲毓賱賯丞',
diff --git a/north-glass-erp/northglass-erp/src/lang/en.js b/north-glass-erp/northglass-erp/src/lang/en.js
index 5dbcacb..58b2db4 100644
--- a/north-glass-erp/northglass-erp/src/lang/en.js
+++ b/north-glass-erp/northglass-erp/src/lang/en.js
@@ -997,6 +997,7 @@
             finishedProductReport :'Finished product report',
             orderWorkReportForm :'璁㈠崟鎶ュ伐鎶ヨ〃',
         },
+        teamsGroupsName:'涓婂伐搴忔姤宸�',
         productionReport:'Production report',
         workInProgressReport:'Product in process report',
         processToBeCompleted:'Process to be completed report',
diff --git a/north-glass-erp/northglass-erp/src/lang/kr.js b/north-glass-erp/northglass-erp/src/lang/kr.js
index 3af0051..5f389f8 100644
--- a/north-glass-erp/northglass-erp/src/lang/kr.js
+++ b/north-glass-erp/northglass-erp/src/lang/kr.js
@@ -1006,6 +1006,7 @@
             finishedProductReport :'鞕勳牅頀� 氤搓碃靹�',
             orderWorkReportForm :'璁㈠崟鎶ュ伐鎶ヨ〃',
         },
+        teamsGroupsName:'涓婂伐搴忔姤宸�',
         productionReport:'靸濎偘 氤搓碃靹�',
         workInProgressReport:'歆勴枆 欷戩澑 鞝滍拡 氤搓碃靹�',
         processToBeCompleted:'鞕勲頃挫暭 頃� 頂勲靹胳姢 氤搓碃靹�',
diff --git a/north-glass-erp/northglass-erp/src/lang/ru.js b/north-glass-erp/northglass-erp/src/lang/ru.js
index 060e35f..7342f8b 100644
--- a/north-glass-erp/northglass-erp/src/lang/ru.js
+++ b/north-glass-erp/northglass-erp/src/lang/ru.js
@@ -995,6 +995,7 @@
             finishedProductReport :'袨褌褔械褌 芯 谐芯褌芯胁芯泄 锌褉芯写褍泻褑懈懈',
             orderWorkReportForm :'璁㈠崟鎶ュ伐鎶ヨ〃',
         },
+        teamsGroupsName:'涓婂伐搴忔姤宸�',
         productionReport:'袨褌褔械褌 芯 锌褉芯懈蟹胁芯写褋褌胁械',
         workInProgressReport:'袨褌褔械褌 芯 薪械蟹邪胁械褉褕械薪薪芯泄 锌褉芯写褍泻褑懈懈',
         processToBeCompleted:'袨褌褔械褌 芯 薪械蟹邪胁械褉褕械薪薪芯泄 芯锌械褉邪褑懈懈',
diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index 8a53693..dc69f51 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -1007,6 +1007,7 @@
             finishedProductReport :'鎴愬搧鎶ヨ〃',
             orderWorkReportForm :'璁㈠崟鎶ュ伐鎶ヨ〃',
         },
+        teamsGroupsName:'涓婂伐搴忔姤宸�',
         productionReport:'鐢熶骇鎶ヨ〃',
         workInProgressReport:'鍦ㄥ埗鍝佹姤琛�',
         processToBeCompleted:'宸ュ簭寰呭畬鎴愭姤琛�',
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue b/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
index 45a2ed5..0fcb8df 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
@@ -108,7 +108,7 @@
     produceList = produceList.value.concat(deepClone(res.data.data))
     titleSelectJson.value.processType = res.data.process
     titleSelectJson.value.processType.splice(0,1)
-    xGrid.value.reloadData(produceList)
+    //xGrid.value.reloadData(produceList)
     gridOptions.loading = false
   } else {
     ElMessage.warning(res.msg)
@@ -134,6 +134,10 @@
     if (res.code == 200) {
       total.value = res.data.total
       produceList = deepClone(res.data.data)
+      produceList.forEach(item => {
+        // 濡傛灉 shape 鍙兘鏄瓧绗︿覆灏辩敤 ==锛屽鏋滀竴瀹氭槸鏁板瓧灏辩敤 ===
+        item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape');
+      });
       xGrid.value.loadData(produceList)
       gridOptions.loading = false
     } else {
@@ -165,6 +169,10 @@
       total.pageTotal = res.data.total.pageTotal
       pageTotal.value = res.data.total
       total.value = res.data.total
+      res.data.data.forEach(item => {
+        // 濡傛灉 shape 鍙兘鏄瓧绗︿覆灏辩敤 ==锛屽鏋滀竴瀹氭槸鏁板瓧灏辩敤 ===
+        item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape');
+      });
       xGrid.value.loadData(res.data.data)
       gridOptions.loading = false
     } else {
@@ -204,26 +212,7 @@
   }
 
   getWorkOrder()
-  // let selectProcesses = value.value
-  // let optionVal=stateValue.value
-  // if (optionVal == '') {
-  //   optionVal = null
-  // }
-  // request.post(`/report/workInProgress/1/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}`, filterData.value).then((res) => {
-  //
-  //   if (res.code == 200) {
-  //     total.dataTotal = res.data.total.total*1
-  //     total.pageTotal=parseInt(res.data.total)
-  //     pageNum.value=1
-  //     produceList = deepClone(res.data.data)
-  //     console.log(res.data.data)
-  //     xGrid.value.reloadData(produceList)
-  //     gridOptions.loading=false
-  //   } else {
-  //     ElMessage.warning(res.msg)
-  //   }
-  //   //handleUpdateData(produceList)
-  // })
+
 
 }
 
@@ -309,7 +298,6 @@
     {field: 'orderNumber', width: 100, title: t('order.OrderNum'),visible: true},
     {field: 'technologyNumber', width: 120, title: t('processCard.technologyNumber'),filters: [{data: ''}],
       slots: {filter: 'num1_filter'}, showOverflow: "ellipsis",visible: true},
-    {field: 'bend_radius', width: 100, title: t('order.bendRadius'),visible: true},
     {field: 'shape', width: 100, title: t('order.shape'),visible: true},
     {field: 'process', width: 120, title: t('craft.process'),visible: true},
     {field: 'quantity', width: 120, title: t('order.quantity'),visible: true},
@@ -319,7 +307,7 @@
     {field: 'stockArea', width: 120, title: t('report.inventoryArea'),visible: true},
     {field: 'productName', width: 120, title:  t('order.product'),visible: true},
     {field: 'bendRadius', width: 120, title: t('order.bendRadius'),visible: true},
-    {field: 'teamsGroupsName', width: 110,title: '涓婂伐搴忔姤宸�',showOverflow:"ellipsis",filters: [{data: ''}],
+    {field: 'teamsGroupsName', width: 110,title: t('report.teamsGroupsName'),showOverflow:"ellipsis",filters: [{data: ''}],
       slots: {filter: 'num1_filter'}},
   ],//琛ㄥご鎸夐挳
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
index b8f883a..6a19c48 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
@@ -98,9 +98,13 @@
 
     String getLaminating(String selectProcesses);
 
-    Integer workInProgressOrderTotalNew(int i, int i1, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO);
+    List<WorkInProgressDTO> workInProgressMpdataList1(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO);
 
-    List<Map<String, Object>> workInProgressOrderMpNew(int offset, int pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO);
+    List<WorkInProgressDTO> workInProgressMpdataList2(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO);
+
+    List<WorkInProgressDTO> workInProgressOrderMpList1(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO);
+
+    List<WorkInProgressDTO> workInProgressProcessMpList1(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO);
 
 
 //    Map<String, Integer> getWorkInProgressTotal(
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
index e0e4d34..62599e4 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -9,11 +9,18 @@
 import com.example.erp.mapper.pp.ProductionSchedulingMapper;
 import com.example.erp.mapper.pp.ReportMapper;
 import com.example.erp.mapper.sd.OrderProcessDetailMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.sql.Date;
 import java.time.LocalDate;
 import java.util.*;
+import java.util.concurrent.Executor;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 @Service
 @DS("pp")
@@ -22,6 +29,34 @@
 
     private final OrderProcessDetailMapper orderProcessDetailMapper;
     private final ProductionSchedulingMapper productionSchedulingMapper;
+
+
+    private void mergeTeamsGroupsName(
+            List<WorkInProgressDTO> dataList1,
+            List<WorkInProgressDTO> dataList2
+    ) {
+        Function<WorkInProgressDTO, String> keyFn = dto ->
+                dto.getProcessId() + "|" +
+                        dto.getOrderNumber() + "|" +
+                        dto.getTechnologyNumber();
+
+        Map<String, WorkInProgressDTO> map2 = dataList2.stream()
+                .collect(Collectors.toMap(
+                        keyFn,
+                        Function.identity(),
+                        (existing, replacement) -> existing
+                ));
+
+        for (WorkInProgressDTO dto1 : dataList1) {
+            WorkInProgressDTO dto2 = map2.get(keyFn.apply(dto1));
+            if (dto2 != null) {
+                String tgn = dto2.getTeamsGroupsName();
+                if (StringUtils.hasText(tgn)) {
+                    dto1.setTeamsGroupsName(tgn);
+                }
+            }
+        }
+    }
 
 
     public ReportService(ReportMapper reportMapper, OrderProcessDetailMapper orderProcessDetailMapper, ProductionSchedulingMapper productionSchedulingMapper) {
@@ -140,22 +175,33 @@
         }
 
         Map<String, Object> map = new HashMap<>();
+        List<WorkInProgressDTO> dataList2  =reportMapper.workInProgressMpdataList2(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
+
         if (optionVal.equals("1")){
             /* 鏍规嵁閿�鍞崟鍙锋眹鎬�*/
-            map.put("data", reportMapper.workInProgressOrderMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
-           // map.put("total", reportMapper.workInProgressOrderTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
+            //map.put("data", reportMapper.workInProgressOrderMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
+            List<WorkInProgressDTO> dataList1  =reportMapper.workInProgressOrderMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
+            mergeTeamsGroupsName(dataList1, dataList2);
+            map.put("data",dataList1);
+            // map.put("total", reportMapper.workInProgressOrderTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
             map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
         }else if(optionVal.equals("2")){
             /* 鏍规嵁娴佺▼鍗″彿姹囨��*/
-            map.put("data", reportMapper.workInProgressProcessMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
-           // map.put("total", reportMapper.workInProgressProcessTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
+            //map.put("data", reportMapper.workInProgressProcessMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
+            List<WorkInProgressDTO> dataList1  =reportMapper.workInProgressProcessMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
+            mergeTeamsGroupsName(dataList1, dataList2);
+            map.put("data",dataList1);
+            // map.put("total", reportMapper.workInProgressProcessTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
             map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
 
         } else if (optionVal.equals("3")) {
 
         } else {
             //娌℃湁閫夋嫨鍒嗙粍
-            map.put("data", reportMapper.workInProgressMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
+            //map.put("data", reportMapper.workInProgressMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
+            List<WorkInProgressDTO> dataList1  =reportMapper.workInProgressMpdataList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
+            mergeTeamsGroupsName(dataList1, dataList2);
+            map.put("data",dataList1);
             //map.put("total", reportMapper.workInProgressTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
             map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
 
diff --git a/north-glass-erp/src/main/resources/mapper/pp/Report.xml b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
index 764f561..1507f22 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/Report.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -2171,55 +2171,69 @@
         select IFNULL(nickname,'') from sd.basic_data where basic_category='process' and basic_name=#{selectProcesses}
     </select>
 
-    <select id="workInProgressOrderTotalNew" >
-        select
-        ifnull(count(distinct o.order_id),0)
+    <select id="workInProgressMpdataList1" resultMap="workInProgressMap">
+        select #{selectProcesses} as thisProcess,
+               fc.process_id,
+               o.customer_name,
+               o.project,
+               o.order_id,
+               o.batch,
+               od.shape,
+               if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius,
+               ogd.order_number,
+               ogd.technology_number,
+               ogd.process,
+               od.quantity,
+               ogd.child_width,
+               ogd.child_height,
+               odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+               odpd.broken_num as stockNum,
+               ROUND(ogd.child_width * ogd.child_height *
+                     (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+                      odpd.broken_num) / 1000000, 2) as stockArea,
+               od.product_name,
+               od.bend_radius,
+               ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber
+        -- ,
+        -- rws.teams_groups_name
 
         from sd.order_detail AS od
-        LEFT JOIN sd.order_glass_detail AS ogd
-        ON od.order_id = ogd.order_id
-        AND od.order_number = ogd.order_number
-        LEFT JOIN flow_card AS fc
-        ON fc.order_id = ogd.order_id
-        and fc.production_id = ogd.production_id
-        AND fc.order_number = ogd.order_number
-        AND fc.technology_number = ogd.technology_number
-        left join sd.order_process_detail as odpd
-        ON odpd.order_id = fc.order_id
-        AND odpd.order_number = fc.order_number
-        AND odpd.technology_number = fc.technology_number
-        and odpd.process_id = fc.process_id
-        left join sd.order_process_detail as odpds
-        ON odpds.id = odpd.id - 1
-        left join
-        (SELECT sum(rw.rework_num) as 'patchNumSum',
-        rw.process_id,
-        rw.order_sort,
-        rw.technology_number,
-        rwk.this_process
-        from rework as rw
-        LEFT JOIN
-        reporting_work as rwk
-        on rw.reporting_work_id = rwk.reporting_work_id
-        where rwk.this_process = #{selectProcesses}
-        and rw.review_status >= 0
-        GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
-        on c.process_id = fc.process_id
-        and c.order_sort = fc.order_number
-        and c.technology_number = fc.technology_number
-        left join sd.`order` as o
-        on o.order_id = od.order_id
-        left join
-        (
-        select a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number
-        from reporting_work  as a
-        left join reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id
-        GROUP BY a.process_id,a.teams_groups_name,a.next_process,b.order_number,b.technology_number
-        ) as rws on rws.process_id=fc.process_id and rws.order_number=fc.order_number
-        and  rws.technology_number=fc.technology_number and rws.next_process=#{selectProcesses}
+                 LEFT JOIN sd.order_glass_detail AS ogd
+                           ON od.order_id = ogd.order_id
+                               AND od.order_number = ogd.order_number
+                 LEFT JOIN pp.flow_card AS fc
+                           ON fc.order_id = ogd.order_id
+                               and fc.production_id = ogd.production_id
+                               AND fc.order_number = ogd.order_number
+                               AND fc.technology_number = ogd.technology_number
+                 left join sd.order_process_detail as odpd
+                           ON odpd.order_id = fc.order_id
+                               AND odpd.order_number = fc.order_number
+                               AND odpd.technology_number = fc.technology_number
+                               and odpd.process_id = fc.process_id
+                 left join sd.order_process_detail as odpds
+                           ON odpds.id = odpd.id - 1
+                 left join
+             (SELECT sum(rw.rework_num) as 'patchNumSum',
+                      rw.process_id,
+                     rw.order_sort,
+                     rw.technology_number,
+                     rwk.this_process
+              from pp.rework as rw
+                       LEFT JOIN
+                    pp.reporting_work as rwk
+                   on rw.reporting_work_id = rwk.reporting_work_id
+              where rwk.this_process = #{selectProcesses}
+                and rw.review_status >= 0
+              GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
+             on c.process_id = fc.process_id
+                 and c.order_sort = fc.order_number
+                 and c.technology_number = fc.technology_number
+                 left join sd.`order` as o
+                           on o.order_id = od.order_id
         where  o.create_order>0
-        and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
-        odpd.broken_num != 0
+          and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+              odpd.broken_num != 0
         and odpd.process = #{selectProcesses}
         and position(#{orderId} in od.order_id)
         and position(#{inputProject} in o.project)
@@ -2235,23 +2249,46 @@
         <if test="workInProgressDTO.batch != null and workInProgressDTO.batch != ''">
             and o.batch regexp #{workInProgressDTO.batch}
         </if>
+        <if test="workInProgressDTO.processId != null and workInProgressDTO.processId != ''">
+            and fc.process_id regexp #{workInProgressDTO.processId}
+        </if>
+        <if test="workInProgressDTO.orderNumber != null and workInProgressDTO.orderNumber != ''">
+            and ogd.order_number regexp #{workInProgressDTO.orderNumber}
+        </if>
+        <if test="workInProgressDTO.technologyNumber != null and workInProgressDTO.technologyNumber != ''">
+            and ogd.technology_number regexp #{workInProgressDTO.technologyNumber}
+        </if>
+        <if test="workInProgressDTO.glassNumber != null and workInProgressDTO.glassNumber != ''">
+            and ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') regexp #{workInProgressDTO.glassNumber}
+        </if>
+        group by fc.process_id, fc.order_number, fc.technology_number
+        order by fc.process_id, fc.order_number, fc.technology_number
+        limit #{offset},#{pageSize};
     </select>
 
-    <select id="workInProgressOrderMpNew" resultMap="workInProgressMap">
+    <select id="workInProgressMpdataList2" resultMap="workInProgressMap">
+        select
+            a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number
+        from pp.reporting_work  as a
+                 left join pp.reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id
+        where a.next_process=#{selectProcesses}
+        GROUP BY a.process_id,a.teams_groups_name,a.next_process,b.order_number,b.technology_number
+    </select>
+
+    <select id="workInProgressOrderMpList1" resultMap="workInProgressMap">
         select #{selectProcesses} as thisProcess,
         o.customer_name,
         o.project,
         o.order_id,
         o.batch,
-        if(od.shape='' || ISNULL(od.shape),'鏅舰',if(od.shape = 1, '鏅舰', if(od.shape = 2, '寮傚舰', ''))) as shape,
+        od.shape,
         sum(od.quantity) as quantity,
         sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
         odpd.broken_num) as stockNum,
         sum(ROUND(ogd.child_width * ogd.child_height *
         (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
         odpd.broken_num) / 1000000, 2)) as stockArea,
-        od.product_name,
-        rws.teams_groups_name
+        od.product_name
 
         from sd.order_detail AS od
         LEFT JOIN sd.order_glass_detail AS ogd
@@ -2287,14 +2324,6 @@
         and c.technology_number = fc.technology_number
         left join sd.`order` as o
         on o.order_id = od.order_id
-        left join
-        (
-        select a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number
-        from reporting_work  as a
-        left join reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id
-        GROUP BY a.process_id,a.teams_groups_name,a.next_process,b.order_number,b.technology_number
-        ) as rws on rws.process_id=fc.process_id and rws.order_number=fc.order_number
-        and  rws.technology_number=fc.technology_number and rws.next_process=#{selectProcesses}
         where  o.create_order>0
         and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
         odpd.broken_num != 0
@@ -2317,4 +2346,80 @@
         order by o.order_id
         limit #{offset},#{pageSize};
     </select>
+
+    <select id="workInProgressProcessMpList1" resultMap="workInProgressMap">
+        select #{selectProcesses} as thisProcess,
+        o.customer_name,
+        o.project,
+        o.order_id,
+        fc.process_id,
+        o.batch,
+        od.shape,
+        sum(od.quantity) as quantity,
+        sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+        odpd.broken_num) as stockNum,
+        sum(ROUND(ogd.child_width * ogd.child_height *
+        (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+        odpd.broken_num) / 1000000, 2)) as stockArea,
+        od.product_name
+
+        from sd.order_detail AS od
+        LEFT JOIN sd.order_glass_detail AS ogd
+        ON od.order_id = ogd.order_id
+        AND od.order_number = ogd.order_number
+        LEFT JOIN flow_card AS fc
+        ON fc.order_id = ogd.order_id
+        and fc.production_id = ogd.production_id
+        AND fc.order_number = ogd.order_number
+        AND fc.technology_number = ogd.technology_number
+        left join sd.order_process_detail as odpd
+        ON odpd.order_id = fc.order_id
+        AND odpd.order_number = fc.order_number
+        AND odpd.technology_number = fc.technology_number
+        and odpd.process_id = fc.process_id
+        left join sd.order_process_detail as odpds
+        ON odpds.id = odpd.id - 1
+        left join
+        (SELECT sum(rw.rework_num) as 'patchNumSum',
+        rw.process_id,
+        rw.order_sort,
+        rw.technology_number,
+        rwk.this_process
+        from rework as rw
+        LEFT JOIN
+        reporting_work as rwk
+        on rw.reporting_work_id = rwk.reporting_work_id
+        where rwk.this_process = #{selectProcesses}
+        and rw.review_status >= 0
+        GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
+        on c.process_id = fc.process_id
+        and c.order_sort = fc.order_number
+        and c.technology_number = fc.technology_number
+        left join sd.`order` as o
+        on o.order_id = od.order_id
+        where  o.create_order>0
+        and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
+        odpd.broken_num != 0
+        and odpd.process = #{selectProcesses}
+        and position(#{orderId} in od.order_id)
+        and position(#{inputProject} in o.project)
+        <if test="workInProgressDTO.customerName != null and workInProgressDTO.customerName != ''">
+            and o.customer_name regexp #{workInProgressDTO.customerName}
+        </if>
+        <if test="workInProgressDTO.project != null and workInProgressDTO.project != ''">
+            and o.project regexp #{workInProgressDTO.project}
+        </if>
+        <if test="workInProgressDTO.orderId != null and workInProgressDTO.orderId != ''">
+            and o.order_id regexp #{workInProgressDTO.orderId}
+        </if>
+        <if test="workInProgressDTO.batch != null and workInProgressDTO.batch != ''">
+            and o.batch regexp #{workInProgressDTO.batch}
+        </if>
+        <if test="workInProgressDTO.processId != null and workInProgressDTO.processId != ''">
+            and fc.process_id regexp #{workInProgressDTO.processId}
+        </if>
+        group by o.order_id, fc.process_id
+        order by o.order_id, fc.process_id
+        limit #{offset},#{pageSize};
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0