From 18fd6957fcbcd6e798b737a08d7c62cf58dad881 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 13 八月 2024 14:34:48 +0800
Subject: [PATCH] 检验任务:任务切换sql调整

---
 inspect-server/src/main/resources/mapper/InsSampleMapper.xml |  225 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 183 insertions(+), 42 deletions(-)

diff --git a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
index ade36d6..08ee5e4 100644
--- a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -25,9 +25,75 @@
     </resultMap>
 
     <select id="findInsSampleAndOrder" resultType="com.yuanchu.mom.vo.InsOrderPlanVO">
+        <!--SELECT  *
+        FROM (
+        SELECT  *
+        FROM (
+        SELECT
+        io.id,
+        io.entrust_code,
+        io.type,
+        io.appointed,
+        io.send_time,
+        GROUP_CONCAT(DISTINCT isa.sample SEPARATOR ' ') AS sample,
+        isu.userName,
+        isu2.checkName,
+        ip.son_laboratory,
+        io.ins_time,
+        io.laboratory,
+        ios.ins_state,
+        ios.verify_tell,
+        ios.verify_user
+        FROM
+        ins_order io
+        LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
+        LEFT JOIN (
+        SELECT
+        ins_sample_id,
+        GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS userName
+        FROM
+        ins_sample_user u
+        LEFT JOIN user uu ON u.user_id = uu.id
+        WHERE
+        son_laboratory = #{sonLaboratory} AND u.state = 0
+        GROUP BY
+        ins_sample_id
+        ) isu ON isu.ins_sample_id = io.id
+        LEFT JOIN (
+        SELECT
+        ins_sample_id,
+        uu.name AS checkName
+        FROM
+        ins_sample_user u
+        LEFT JOIN user uu ON u.user_id = uu.id
+        WHERE
+        son_laboratory = #{sonLaboratory} AND u.state = 1
+        GROUP BY
+        ins_sample_id
+        ) isu2 ON isu2.ins_sample_id = io.id
+        LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id
+        LEFT JOIN ins_order_state ios ON ios.ins_order_id = io.id AND ios.laboratory = ip.son_laboratory
+        WHERE
+        io.state = 1
+        AND io.send_time IS NOT NULL
+        AND (ip.son_laboratory = #{sonLaboratory} OR isu.userName IS NULL OR isu2.checkName IS NULL)
+        <if test="userName != null and userName != ''">
+            AND (isu.userName LIKE CONCAT('%', #{userName}, '%') OR isu2.checkName LIKE CONCAT('%', #{userName}, '%'))
+        </if>
+        GROUP BY
+        io.id, ip.son_laboratory
+        ORDER BY
+        io.type DESC, io.id
+        ) a
+        WHERE
+        a.ins_state IS NOT NULL
+        <if test="laboratory != null and laboratory != ''">
+            AND a.laboratory = #{laboratory}
+        </if>
+        ) b-->
         select * from(select * from(
         SELECT
-        a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,<!--(ios.verify_user = #{userId})--> verify_user
+        a.*,ios.ins_state,ios.verify_tell,verify_user
         FROM
         (
         SELECT
@@ -37,54 +103,53 @@
         io.appointed,
         io.send_time,
         group_concat(distinct isa.sample,' ') sample,
-        isu.user_id,
-        user.name userName,
+        userName,
+        checkName,
         ip.son_laboratory,
-        io.ins_time
+        io.ins_time,
+        io.laboratory
         FROM
         ins_order io
         LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
-        LEFT JOIN ( <!--SELECT * FROM ins_sample_user GROUP BY ins_sample_id, user_id -->
-        SELECT *
-        FROM ins_sample_user u
-        WHERE son_laboratory=#{sonLaboratory} and (ins_sample_id, id) IN (
-        SELECT ins_sample_id, MAX(id)
-        FROM ins_sample_user
+        LEFT JOIN (
+        SELECT ins_sample_id,GROUP_CONCAT( DISTINCT uu.name SEPARATOR ',') AS userName
+        FROM ins_sample_user u LEFT JOIN user uu ON u.user_id = uu.id
         WHERE son_laboratory=#{sonLaboratory}
+        and u.state=0
         GROUP BY ins_sample_id
-        )
-        ORDER BY ins_sample_id, id
+        ORDER BY ins_sample_id
         ) isu ON isu.ins_sample_id = io.id
-        LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id
-        LEFT JOIN user ON isu.user_id = user.id
-        WHERE
-        io.state = 1
-        # AND io.ins_state != 5
-        and send_time is not null
-        <if test="userId !=null and userId!=''">
-            and (isu.user_id = #{userId} OR isu.user_id is NULL )
-        </if>
-        OR isu.user_id is NULL
 
+        LEFT JOIN (
+        SELECT ins_sample_id,uu.name checkName
+        FROM ins_sample_user u LEFT JOIN user uu ON u.user_id = uu.id
+        WHERE son_laboratory=#{sonLaboratory}
+        and u.state=1
+        GROUP BY ins_sample_id
+        ORDER BY ins_sample_id
+        )isu2 ON isu2.ins_sample_id = io.id
+        LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id
+        WHERE io.state = 1 and send_time is not null
+        <if test="userName !=null and userName!=''">
+            and ( (userName like CONCAT ('%', #{userName},'%') )
+            or (checkName like CONCAT ('%', #{userName},'%') ) )
+        </if>
+        and ip.son_laboratory=#{sonLaboratory}
         GROUP BY
         ip.son_laboratory,
         io.id
         ) a
         LEFT JOIN ins_order_state ios ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory
-        left join (SELECT td.user_id order_user_id, td.ins_sample_id FROM ins_sample_user td,(SELECT max(id) id FROM
-        ins_sample_user where son_laboratory=#{sonLaboratory} GROUP BY ins_sample_id) md where td.id = md.id
-        <if test="userId !=null and userId!=''">
-            and user_id = #{userId} OR user_id is NULL
-        </if>
-        OR user_id is NULL
-        ) isu2 on
-        isu2.ins_sample_id = a.id
         ORDER BY
-        <!--a.user_id DESC,-->
         a.type DESC,
         a.id
         ) b
-        where ins_state is not null)A
+        where ins_state is not null
+        and son_laboratory=#{sonLaboratory}
+        <if test="laboratory!=null and laboratory!=''">
+            and laboratory=#{laboratory}
+        </if>
+        )A
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
@@ -102,11 +167,12 @@
         io.type,
         io.appointed,
         io.send_time,
-        group_concat(distinct isa.sample,' ') sample,
+        group_concat(distinct isa.sample,' ') sampleType,
         isu.user_id,
         user.name userName,
         ip.son_laboratory,
-        io.ins_time
+        io.ins_time,
+        io.laboratory
         FROM
         ins_order io
         LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
@@ -125,13 +191,12 @@
         LEFT JOIN user ON isu.user_id = user.id
         WHERE
         io.state = 1
-        # AND io.ins_state != 5
+--         # AND io.ins_state != 5
         and send_time is not null
         <if test="userId !=null and userId!=''">
             and (isu.user_id = #{userId} OR isu.user_id is NULL )
         </if>
         OR isu.user_id is NULL
-
         GROUP BY
         ip.son_laboratory,
         io.id
@@ -145,12 +210,15 @@
         OR user_id is NULL
         ) isu2 on
         isu2.ins_sample_id = a.id
+        where ins_state is not null
+        <if test="laboratory != null and laboratory != ''">
+            and a.laboratory=#{laboratory}
+        </if>
         ORDER BY
         <!--a.user_id DESC,-->
         a.type DESC,
         a.id
         ) b
-        where ins_state is not null )A
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
@@ -206,7 +274,14 @@
           and state = 1
           and ins_fiber_id is null
           and ins_fibers_id is null
-          and isa.sample_code NOT REGEXP '/'
+          and <!--isa.sample_code NOT REGEXP '/'-->
+            isa.id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s )
+        order by case when man_hour_group is NULL then 1
+        when man_hour_group ='' then 1  else 0 end,
+        CASE
+        WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
+        WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
+        ,id asc
     </select>
     <select id="getInsOrderAndSample" resultMap="sampleDto">
         select isa.*,
@@ -261,13 +336,12 @@
         where ins_order_id = #{id}
           and state = 1
           and ip.son_laboratory = #{laboratory}
-          and ins_fiber_id is null
-          and ins_fibers_id is null
     </select>
     <select id="getSampleEn" resultType="java.lang.String">
         select name_en
         from `center-lims`.product
         where name = #{sample}
+        limit 1
     </select>
     <select id="selectSampleProductListByOrderId2" resultMap="sampleDto">
         select isa.*,
@@ -297,8 +371,8 @@
                method,
                man_day,
                bsm,
-                ask,
-               tell ,
+               ask,
+               tell,
                `last_value`,
                ip.ins_result  ip_ins_result,
                state,
@@ -318,11 +392,18 @@
         where ins_order_id = #{id}
           and ip.standard_method_list_id is not null
           and state = 1
+        order by case when man_hour_group is NULL then 1
+                      when man_hour_group ='' then 1  else 0 end,
+                 CASE
+                     WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
+                     WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
+                ,id asc
     </select>
 
     <select id="selectSampleProductListByOrderId3" resultMap="sampleDto3">
         select isa.id,
         sample_code,
+        isa.sample,
         entrust_code,
         is_leave,
         isa.model,
@@ -344,6 +425,12 @@
         <foreach collection="ids" open="(" close=")" item="id" separator=",">
             #{id}
         </foreach>
+        order by case when man_hour_group is NULL then 1
+        when man_hour_group ='' then 1  else 0 end,
+        CASE
+        WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
+        WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
+        ,id asc
     </select>
 
     <select id="getInsProduct1" resultMap="product">
@@ -501,6 +588,59 @@
           and ins_fibers_id is null
           and standard_method_list_id is not null
     </select>
+
+    <select id="getInsProduct4" resultMap="product">
+        select ip.id          ip_id,
+               inspection_item,
+               inspection_item_en,
+               inspection_item_class,
+               inspection_item_class_en,
+               inspection_item_subclass,
+               inspection_item_subclass_en,
+               ip.factory     ip_factory,
+               ip.laboratory  ip_laboratory,
+               ip.sample_type ip_sample_type,
+               ip.sample      ip_sample,
+               ip.model       ip_model,
+               ip.ins_bush_id,
+               son_laboratory,
+               ip.unit        ip_unit,
+               price,
+               man_hour,
+               man_hour_group,
+               inspection_item_type,
+               inspection_value_type,
+               device_group,
+               checkout_number,
+               section,
+               value_type,
+               method,
+               man_day,
+               bsm,
+               ask,
+               `last_value`,
+               ip.ins_result  ip_ins_result,
+               state,
+               ins_sample_id,
+               ip.create_user ip_create_user,
+               ip.update_user ip_update_user,
+               ip.create_time ip_create_time,
+               ip.update_time ip_update_time,
+               template_id,
+               ipr.ins_value,
+               ipr.com_value,
+               ipr.equip_value,
+               ipr.equip_name,
+               ip.method_s,
+               ip.tell,
+               ip.dic
+        from ins_product ip
+                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+        where ins_bush_id = #{id}
+          and state = 1
+          and ins_fibers_id is null
+          and standard_method_list_id is not null
+    </select>
     <select id="getReportModel" resultType="java.util.Map">
     </select>
 
@@ -560,6 +700,7 @@
         <result property="lastValue" column="last_value" jdbcType="VARCHAR"/>
         <result property="insResult" column="ip_ins_result" jdbcType="INTEGER"/>
         <result property="state" column="state" jdbcType="INTEGER"/>
+        <result property="insBushId" column="ins_bush_id" jdbcType="INTEGER"/>
         <result property="insSampleId" column="ins_sample_id" jdbcType="INTEGER"/>
         <result property="createUser" column="ip_create_user" jdbcType="INTEGER"/>
         <result property="updateUser" column="ip_update_user" jdbcType="INTEGER"/>

--
Gitblit v1.9.3