From c3510da29a7974c6af7ff3de1ade3db429d6f848 Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期三, 18 八月 2021 14:27:59 +0800
Subject: [PATCH] 申购管理申请履历显示所有历史单据,提交时如有无效试剂耗材报错

---
 src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml |  232 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 196 insertions(+), 36 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
index 3fe1302..2a9627d 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
@@ -16,7 +16,7 @@
     <result property="updateTime" column="update_time"></result>
     <result property="validFlag" column="valid_flag" typeHandler="com.nanometer.smartlab.entity.handler.ValidFlagHandler"></result>
     <result property="approveUserId" column="approve_user_id"></result>
-      <result property="beforeApproveUserId" column="before_approve_user_id"></result>
+    <result property="beforeApproveUserId" column="before_approve_user_id"></result>
     <result property="memo" column="memo"></result>
     <result property="applyUserName" column="applyUserName"></result>
     <result property="approveUserName" column="approveUserName"></result>
@@ -50,8 +50,10 @@
       <result property="productSn" column="reagentProductSn"></result>
       <result property="controlProducts" column="controlProducts"></result>
       <result property="dangerousFlag" column="reagentDangerousFlag" typeHandler="com.nanometer.smartlab.entity.handler.DangerousFlagHandler"></result>
-        <result property="productHome" column="productHome"></result>
-        <result property="productHomeName" column="productHomeName"></result>
+      <result property="productHome" column="productHome"></result>
+      <result property="productHomeName" column="productHomeName"></result>
+      <result property="type" column="type"></result>
+      <result property="supplierFlag" column="supplierFlag"></result>
     </association>
   </resultMap>
 
@@ -63,7 +65,11 @@
     <result property="arrivalNum" column="arrival_num"></result>
     <result property="status" column="status" typeHandler="com.nanometer.smartlab.entity.handler.ApplyStatusHandler"></result>
     <result property="applyUserId" column="apply_user_id"></result>
+    <result property="applyUser" column="apply_user"></result>
     <result property="arrivalTime" column="arrival_time"></result>
+    <result property="articleNumber" column="articleNumber"></result>
+    <result property="projectManage" column="projectManage"/>
+    <result property="project" column="project"/>
     <association property="reagent" javaType="com.nanometer.smartlab.entity.SysReagent">
       <id property="id" column="reagent_id"></id>
       <result property="name" column="reagentName"></result>
@@ -112,12 +118,9 @@
             and (oa.approve_user_id = #{searchApproval} or oa.before_approve_user_id = #{searchApproval})
         </if>
 
-        <if test="applyUserName != null and applyUserName != ''">
-            and su.name like #{applyUserName}
-        </if>
-
         <if test="approvaUserName != null and approvaUserName != ''">
-            and (suApprove.name like #{approvaUserName} or sys.name like #{approvaUserName})
+            and (suApprove.name like concat('%',#{approvaUserName},'%')
+            or sys.name like concat('%',#{approvaUserName},'%') )
         </if>
 
 		<if test="editId != null and editId != ''">
@@ -142,7 +145,9 @@
     ss.name as supplierName,
     su.name as applyUserName,
     suApprove.name as approveUserName,
-    bm.meta_value as productHomeName
+    bm.meta_value as productHomeName,
+    ss.valid_flag  as supplierFlag,
+    sr.type as type
     from ope_apply as oa
     left join sys_reagent sr on oa.reagent_id = sr.id
     left join sys_supplier as ss on sr.supplier_id = ss.id
@@ -163,16 +168,21 @@
     su.name as applyUserName,
     suApprove.name as approveUserName,
     bm.meta_value as productHomeName,
-    fir.name as firName
+    fir.name as firName,
+    ss.valid_flag  as supplierFlag,
+    sr.type as type
     from ope_apply as oa
     left join sys_reagent sr on oa.reagent_id = sr.id
     left join sys_supplier as ss on sr.supplier_id = ss.id
     left join sys_user as su on oa.apply_user_id = su.id
     left join sys_user as suApprove on oa.approve_user_id = suApprove.id
-      left join sys_user as sys on sys.id=oa.before_approve_user_id
-      left join sys_user as fir on fir.id=oa.first_user
+    left join sys_user as sys on sys.id=oa.before_approve_user_id
+    left join sys_user as fir on fir.id=oa.first_user
     left join base_meta as bm on sr.product_home = bm.id
     where oa.valid_flag = 1
+    <if test="isShow != null and isShow ==0">
+        and (ss.valid_flag = 1 or sr.type = 0)
+    </if>
     <include refid="queryWhereSql"/>
     order by oa.create_time desc
     <if test="first != null and pageSize != null">
@@ -191,6 +201,9 @@
       left join sys_user as fir on fir.id=oa.first_user
       left join base_meta as bm on sr.product_home = bm.id
       where oa.valid_flag = 1
+      <if test="isShow != null and isShow ==0">
+          and (ss.valid_flag = 1 or sr.type = 0)
+      </if>
     <include refid="queryWhereSql"/>
   </select>
 
@@ -200,14 +213,23 @@
   </insert>
 
   <insert id="insertOpeApplyList" parameterType="java.util.List">
-    insert into ope_apply
-    	(id, apply_code, reagent_id, num, deadline, apply_user_id, objective, status, approve_user_id, memo, valid_flag, create_time, update_time,apply_goal,apply_price,first_user)
-    values
-	    <foreach collection="list" item="opeApply" separator=",">
-	    	(#{opeApply.id}, #{opeApply.applyCode}, #{opeApply.reagent.id}, #{opeApply.num}, #{opeApply.deadline},
-	    	#{opeApply.applyUserId}, #{opeApply.objective}, #{opeApply.status}, #{opeApply.approveUserId}, #{opeApply.memo}, 1, now(), now(),#{opeApply.applyGoal},#{opeApply.reagent.price},#{opeApply.approveUserId})
-	    </foreach>
+      insert into ope_apply
+      (id, apply_code, reagent_id, num, deadline, apply_user_id, objective, status, approve_user_id, memo, valid_flag, create_time, update_time,apply_goal,apply_price,first_user)
+      values
+      <foreach collection="list" item="opeApply" separator=",">
+          (#{opeApply.id}, #{opeApply.applyCode}, #{opeApply.reagent.id}, #{opeApply.num}, #{opeApply.deadline},
+          #{opeApply.applyUserId}, #{opeApply.objective}, #{opeApply.status}, #{opeApply.approveUserId}, #{opeApply.memo}, 1, now(), now(),#{opeApply.applyGoal},#{opeApply.reagent.price},#{opeApply.approveUserId})
+      </foreach>
   </insert>
+    <insert id="insertList">
+        insert into ope_apply
+        (id, apply_code, reagent_id, num, deadline, apply_user_id, objective, status, approve_user_id, memo, valid_flag, create_time, update_time,apply_goal,apply_price,first_user)
+        values
+        <foreach collection="list" item="opeApply" separator=",">
+            (#{opeApply.id}, #{opeApply.applyCode}, #{opeApply.reagent.id}, #{opeApply.num}, #{opeApply.deadline},
+            #{opeApply.applyUserId}, #{opeApply.objective}, #{opeApply.status}, #{opeApply.approveUserId}, #{opeApply.memo}, 1, #{opeApply.createTime}, #{opeApply.updateTime},#{opeApply.applyGoal},#{opeApply.reagent.price},#{opeApply.approveUserId})
+        </foreach>
+    </insert>
 
     <update id="updateFirst" parameterType="java.util.Map">
         update ope_apply set first_user=approve_user_id where id=#{id}
@@ -227,7 +249,11 @@
   </update>
 
   <update id="updateOpeApplyStatus" parameterType="java.util.Map" >
-    update ope_apply set status=#{status}, memo=#{memo}, update_time=now()
+    update ope_apply set status=#{status},
+     <if test="memo !=null and memo != ''">
+         memo=#{memo},
+     </if>
+      update_time=now()
     where id in
     <foreach collection="applyIds" item="item" index="index" open="(" separator="," close=")">
       #{item}
@@ -296,9 +322,7 @@
 		sr.dangerous_flag,
 		oa.num,
 		oa.used,
-		oa.arrival_num,
-		su.`name` apply_user_id,
-		oa.arrival_time
+		su.`name` apply_user_id
 	</sql>
 
 	<sql id="getOpeApplyReserveList_queryJoins1">
@@ -326,6 +350,12 @@
         <if test="status != null and status != ''">
             and oa.status =#{status}
         </if>
+        <if test="productSn != null and productSn != ''">
+            and sr.product_sn like concat('%',#{productSn},'%')
+        </if>
+        <if test="applyCode != null and applyCode != ''">
+            and oa.apply_code = #{applyCode}
+        </if>
 	</sql>
 
 	<select id="getOpeApplyReserveTotalCount" parameterType="java.util.Map"
@@ -340,10 +370,31 @@
     <select id="getOpeApplyReserveTotalCountFor" parameterType="java.util.Map"
             resultType="int">
         select count(1)
+        from
+        (select count(1)
         from ope_apply as oa
-        <include refid="getOpeApplyReserveList_queryJoins1" />
-        where oa.valid_flag = 1 and (oa.status=4 or oa.status=6)
+        LEFT JOIN sys_reagent sr ON sr.id = oa.reagent_id
+        LEFT JOIN sys_user su ON su.id = oa.apply_user_id
+        LEFT JOIN base_meta AS bm2 ON sr.control_products = bm2.id
+        LEFT JOIN base_meta AS bm3 ON sr.reagent_format = bm3.id
+        LEFT JOIN base_meta AS bm4 ON sr.reagent_character = bm4.id
+        LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
+        LEFT JOIN sys_project as project on project.project = su.project
+        LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
+        where oa.valid_flag = 1 and (oa.status=4 or oa.status=6 or oa.status = 10)
         <include refid="getOpeApplyReserveList_queryWhereSql" />
+        <if test="isAllApply != null">
+            <choose>
+                <when test="isAllApply == 1">
+                    and oa.used = oa.num
+                </when>
+                <otherwise>
+                    and oa.used != oa.num
+                </otherwise>
+            </choose>
+        </if>
+        GROUP BY oa.id
+        )as oaa
     </select>
 
 	<select id="getOpeApplyReserveList" parameterType="java.util.Map"
@@ -354,7 +405,7 @@
 		<include refid="getOpeApplyReserveList_queryJoins2" />
 		where oa.valid_flag = 1
 		<include refid="getOpeApplyReserveList_queryWhereSql" />
-
+        GROUP BY oa.id
 		order by oa.update_time desc
 		<if test="first != null and pageSize != null">
 			limit #{first}, #{pageSize}
@@ -363,13 +414,78 @@
 
     <select id="getOpeApplyReserveListFor" parameterType="java.util.Map"
             resultMap="OpeApplyReserve">
-        <include refid="getOpeApplyReserveList_queryColumns" />
-        from ope_apply as oa
-        <include refid="getOpeApplyReserveList_queryJoins1" />
-        <include refid="getOpeApplyReserveList_queryJoins2" />
-        where oa.valid_flag = 1 and (oa.status=4 or oa.status=6)
-        <include refid="getOpeApplyReserveList_queryWhereSql" />
-
+        SELECT
+        oa.id,
+        oa.apply_code,
+        sr.id reagent_id,
+        oa. STATUS,
+        sr.product_sn reagentProductSn,
+        sr.`name` reagentName,
+        bm2.meta_value controlProducts,
+        bm3.meta_value reagentFormat,
+        sr.main_metering reagentMainMetering,
+        sr.price reagentPrice,
+        sr.cas reagentCas,
+        oa.article_number articleNumber,
+        bm4.meta_value reagentCharacter,
+        bm1.meta_value productHome,
+        sr.dangerous_flag,
+        oa.num,
+        oa.apply_user_id apply_user,
+        oa.used,
+        su.`name` apply_user_id,
+        su.project,
+        su1.`name` as projectManage,
+        oa.arrival_time
+        FROM
+        ope_apply AS oa
+        LEFT JOIN sys_reagent sr ON sr.id = oa.reagent_id
+        LEFT JOIN sys_user su ON su.id = oa.apply_user_id
+        LEFT JOIN base_meta AS bm2 ON sr.control_products = bm2.id
+        LEFT JOIN base_meta AS bm3 ON sr.reagent_format = bm3.id
+        LEFT JOIN base_meta AS bm4 ON sr.reagent_character = bm4.id
+        LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
+        LEFT JOIN sys_project as project on project.project = su.project
+        LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
+        where oa.valid_flag = 1 and (
+        <choose>
+            <when test="status == @com.nanometer.smartlab.entity.enumtype.ApplyStatus@EXPIRED">
+                oa.status = 10
+            </when>
+            <otherwise>
+                oa.status=4 or oa.status=6
+            </otherwise>
+        </choose>
+        )
+        <if test="reagentName != null and reagentName != ''">
+            and sr.name like concat('%',#{reagentName},'%')
+        </if>
+        <if test="personName != null and personName != ''">
+            and su.name like concat('%',#{personName},'%')
+        </if>
+        <if test="userId != null and userId != ''">
+            and oa.apply_user_id =#{userId}
+        </if>
+        <if test="status != null and status != ''">
+            and oa.status =#{status}
+        </if>
+        <if test="productSn != null and productSn != ''">
+            and sr.product_sn like concat('%',#{productSn},'%')
+        </if>
+        <if test="applyCode != null and applyCode != ''">
+            and oa.apply_code = #{applyCode}
+        </if>
+        <if test="isAllApply != null">
+            <choose>
+                <when test="isAllApply == 1">
+                    and oa.used = oa.num
+                </when>
+                <otherwise>
+                    and oa.used != oa.num
+                </otherwise>
+            </choose>
+        </if>
+        GROUP BY oa.id
         order by oa.update_time desc
         <if test="first != null and pageSize != null">
             limit #{first}, #{pageSize}
@@ -416,17 +532,61 @@
         where oa.valid_flag = 1
         and oa.id = #{0}
     </select>
+    <select id="getOpeApplyReserveListByNameForRowData"
+            resultMap="OpeApplyReserve">
+         SELECT
+        oa.id,
+        oa.apply_code,
+        sr.id reagent_id,
+        oa. STATUS,
+        sr.product_sn reagentProductSn,
+        sr.`name` reagentName,
+        bm2.meta_value controlProducts,
+        bm3.meta_value reagentFormat,
+        sr.main_metering reagentMainMetering,
+        sr.price reagentPrice,
+        sr.cas reagentCas,
+        oa.article_number articleNumber,
+        bm4.meta_value reagentCharacter,
+        bm1.meta_value productHome,
+        sr.dangerous_flag,
+        oa.num,
+        oa.apply_user_id apply_user,
+        oa.used,
+        su.`name` apply_user_id,
+        su.project,
+        su1.`name` as projectManage,
+        oa.arrival_time
+        FROM
+        ope_apply AS oa
+        LEFT JOIN sys_reagent sr ON sr.id = oa.reagent_id
+        LEFT JOIN sys_user su ON su.id = oa.apply_user_id
+        LEFT JOIN base_meta AS bm2 ON sr.control_products = bm2.id
+        LEFT JOIN base_meta AS bm3 ON sr.reagent_format = bm3.id
+        LEFT JOIN base_meta AS bm4 ON sr.reagent_character = bm4.id
+        LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
+        LEFT JOIN sys_project as project on project.project = su.project
+        LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
+        where oa.id = #{id}
+
+
+    </select>
 
 
     <update id="updateByReId" parameterType="java.util.Map">
         update ope_apply set reagent_id=#{newReId} where reagent_id=#{oldReId}
     </update>
+
     <update id="updateOpeApplyInfo" parameterType="java.util.Map">
         update
         ope_apply
-        set status = #{status},
-        arrival_time = #{arrivalTime},
-        consignee_id = #{consigneeId}
+        set status = #{status}
+        <if test="arrivalTime!=null" >
+            ,arrival_time = #{arrivalTime}
+        </if>
+        <if test="consigneeId!=null" >
+            ,consignee_id = #{consigneeId}
+        </if>
         where valid_flag = 1
         and id = #{applyId}
     </update>

--
Gitblit v1.9.2