From 2a3d4e4c082403aeb31d4c1c499a6107ffa835af Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期六, 13 九月 2025 14:22:55 +0800
Subject: [PATCH] 同步数据接口和随访率改成只有已完成

---
 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml |  363 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 313 insertions(+), 50 deletions(-)

diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index 1282926..272f207 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -47,7 +47,9 @@
         <result property="patname" column="patname"/>
         <result property="patno" column="patno"/>
         <result property="inhospstate" column="inhospstate"/>
-        <result property="checkFlag" column="check_flag"/>
+        <result property="deptcheckFlag" column="deptcheck_flag"/>
+        <result property="wardcheckFlag" column="wardcheck_flag"/>
+        <result property="diagcheckFlag" column="diagcheck_flag"/>
         <result property="age" column="age"/>
         <result property="sex" column="sex"/>
         <result property="telcode" column="telcode"/>
@@ -60,11 +62,30 @@
         <result property="operator" column="operator"/>
         <result property="operatorId" column="operator_id"/>
         <result property="remark" column="remark"/>
+        <result property="tagname" column="tagname"/>
+        <result property="fuflag" column="fuflag"/>
+        <result property="fudate" column="fudate"/>
+        <result property="fuperiod" column="fuperiod"/>
+        <result property="futypecode" column="futypecode"/>
+        <result property="futypedesc" column="futypedesc"/>
+        <result property="fuadvice" column="fuadvice"/>
+        <result property="fuspecialadvice" column="fuspecialadvice"/>
+        <result property="managementDoctor" column="management_doctor"/>
+        <result property="managementDoctorCode" column="management_doctor_code"/>
     </resultMap>
 
     <sql id="selectPatMedInhospVo">
         select inhospid,
                patname,
+               fuflag,
+               management_doctor,
+               management_doctor_code,
+               fudate,
+               fuperiod,
+               futypecode,
+               futypedesc,
+               fuadvice,
+               fuspecialadvice,
                remark,
                guid,
                operator,
@@ -73,7 +94,9 @@
                out_way_name,
                nurse_id,
                nurse_name,
-               check_flag,
+               deptcheck_flag,
+               wardcheck_flag,
+               diagcheck_flag,
                inhospstate,
                patno,
                long_task_reason,
@@ -122,17 +145,17 @@
         select CONCAT( a.age, a.age_unit ) AS age,
         a.telcode as telcode,
         a.sex,
-        b.guid,
-        b.operator,
-        b.remark,
-        b.operator_id,
         b.inhospid,
         b.nurse_id,
         b.nurse_name,
         b.patname,
+        b.management_doctor,
+        b.management_doctor_code,
         b.out_way_id,
         b.out_way_name,
-        b.check_flag,
+        b.deptcheck_flag,
+        b.wardcheck_flag,
+        b.diagcheck_flag,
         b.inhospstate,
         b.patno,
         b.inhospno,
@@ -173,28 +196,36 @@
         b.deptid,
         b.leaveldeptid,
         b.long_task_reason,
-        b.schemetime
+        b.schemetime,
+        b.fuflag,
+        b.fudate,
+        b.fuperiod,
+        b.futypecode,
+        b.futypedesc,
+        b.fuadvice,
+        b.fuspecialadvice,
+        a.idcardno
         FROM
-        pat_med_inhosp b,
-        pat_archive a
+        pat_med_inhosp b
+        JOIN
+        pat_archive a ON a.id = b.patid
+        LEFT JOIN
+        pat_archivetag c ON c.patid = a.id AND (c.del_flag = 0 OR c.del_flag IS NULL)
         <where>
-            a.del_flag=0
-            and b.del_flag=0
-            and a.id = b.patid
-            AND a.idcardno != ''
-            <if test="startOutHospTime != null">
-                AND date_format(b.endtime,'%y%m%d') &gt;= date_format(#{startOutHospTime},'%y%m%d')
+            a.del_flag = 0
+            AND b.del_flag = 0
+            AND a.idcardno IS NOT NULL
+            <if test="startOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &gt;=
+                date_format(#{startOutHospTime},'%y%m%d')
             </if>
-            <if test="endOutHospTime != null">
-                AND date_format(b.endtime,'%y%m%d') &lt;= date_format(#{endOutHospTime},'%y%m%d')
+            <if test="endOutHospTime != null ">and date_format(b.endtime,'%y%m%d') &lt;=
+                date_format(#{endOutHospTime},'%y%m%d')
             </if>
-
-
-            <if test="startInHospTime != null">
-                AND date_format(b.starttime,'%y%m%d') &gt;= date_format(#{startInHospTime},'%y%m%d')
+            <if test="startInHospTime != null ">and date_format(b.starttime,'%y%m%d') &gt;=
+                date_format(#{startInHospTime},'%y%m%d')
             </if>
-            <if test="endInHospTime != null">
-                AND date_format(b.starttime,'%y%m%d') &lt;= date_format(#{endInHospTime},'%y%m%d')
+            <if test="endInHospTime != null ">and date_format(b.starttime,'%y%m%d') &lt;=
+                date_format(#{endInHospTime},'%y%m%d')
             </if>
             <if test="hospitalname != null  and hospitalname != ''">and hospitalname like concat('%', #{hospitalname},
                 '%')
@@ -204,25 +235,35 @@
                 concat('%', #{hospitaldistrictname}, '%')
             </if>
             <if test="endtime != null ">and b.endtime = #{endtime}</if>
+            <if test="managementDoctor != null ">and b.management_doctor = #{managementDoctor}</if>
+            <if test="managementDoctorCode != null ">and b.management_doctor_code = #{managementDoctorCode}</if>
             <if test="inhospno != null ">and b.inhospno = #{inhospno}</if>
+            <if test="fuflag != null ">and b.fuflag = #{fuflag}</if>
+            <if test="orgid != null ">and b.orgid = #{orgid}</if>
             <if test="serialnum != null ">and b.serialnum = #{serialnum}</if>
             <if test="endtime != null ">and b.endtime = #{endtime}</if>
             <if test="patno != null ">and b.patno = #{patno}</if>
             <if test="nurseId != null ">and b.nurse_id = #{nurseId}</if>
-            <if test="nurseName != null ">and b.nurse_name = #{nurseName}</if>
-            <if test="checkFlag != null ">and b.check_flag = #{checkFlag}</if>
+            <if test="nurseName != null and nurseName != ''">and b.nurse_name = #{nurseName}</if>
+            <if test="deptcheckFlag != null ">and b.deptcheck_flag = #{deptcheckFlag}</if>
+            <if test="wardcheckFlag != null ">and b.wardcheck_flag = #{wardcheckFlag}</if>
+            <if test="diagcheckFlag != null ">and b.diagcheck_flag = #{diagcheckFlag}</if>
             <if test="cry != null and cry == 0 ">and b.endtime is null</if>
             <if test="cry != null and cry == 1 ">and b.endtime is not null</if>
             <if test="inhospstate != null ">and b.inhospstate = #{inhospstate}</if>
             <if test="schemestatus != null ">and b.schemestatus = #{schemestatus}</if>
             <if test="outWayId != null ">and b.out_way_id = #{outWayId}</if>
             <if test="outWayName != null ">and b.out_way_name = #{outWayName}</if>
+            <if test="leaveldeptcode != null ">and b.leaveldeptcode = #{leaveldeptcode}</if>
             <if test="leavediagname != null  and leavediagname != ''">and b.leavediagname like concat('%',
                 #{leavediagname}, '%')
             </if>
             <if test="drname != null  and drname != ''">and b.drname like concat('%', #{drname}, '%')</if>
             <if test="leaveldeptname != null  and leaveldeptname != ''">and b.leaveldeptname like concat('%',
                 #{leaveldeptname}, '%')
+            </if>
+            <if test="deptname != null  and deptname != ''">and b.deptname like concat('%',
+                #{deptname}, '%')
             </if>
             <if test="patid != null  and patid != ''">and a.id =#{patid}
             </if>
@@ -245,23 +286,34 @@
                 </foreach>
             </if>
         </where>
-        order by b.inhospid desc
+        GROUP BY
+        b.inhospid,
+        a.age,
+        a.age_unit,
+        a.telcode,
+        a.id,
+        a.sex
+        <if test="cry==1">
+            order by b.endtime desc
+        </if>
+        <if test="cry==0">
+            order by b.starttime desc
+        </if>
     </select>
 
-    <select id="selectPatMedInhospListByCondition" parameterType="com.smartor.domain.PatMedInhospVO"
-            resultMap="PatMedInhospResult">
-        select CONCAT( a.age, a.age_unit ) AS age,
-        a.telcode as telcode,
+    <select id="selectPatMedInhospListBySerialnum" parameterType="com.smartor.domain.PatMedInhosp" resultMap="PatMedInhospResult">
+        select
         b.inhospid,
-        b.patname,
-        b.operator_id,
-        b.operator,
-        b.remark,
-        b.out_way_id,
-        b.out_way_name,
         b.nurse_id,
         b.nurse_name,
-        b.check_flag,
+        b.patname,
+        b.management_doctor,
+        b.management_doctor_code,
+        b.out_way_id,
+        b.out_way_name,
+        b.deptcheck_flag,
+        b.wardcheck_flag,
+        b.diagcheck_flag,
         b.inhospstate,
         b.patno,
         b.inhospno,
@@ -302,6 +354,89 @@
         b.deptid,
         b.leaveldeptid,
         b.long_task_reason,
+        b.schemetime,
+        b.fuflag,
+        b.fudate,
+        b.fuperiod,
+        b.futypecode,
+        b.futypedesc,
+        b.fuadvice,
+        b.fuspecialadvice
+        FROM
+        pat_med_inhosp b
+
+        <where>
+            <if test="serialnum != null ">and b.serialnum = #{serialnum}</if>
+
+        </where>
+        order by b.inhospid desc
+    </select>
+
+    <select id="selectPatMedInhospListByCondition" parameterType="com.smartor.domain.PatMedInhospVO"
+            resultMap="PatMedInhospResult">
+        select CONCAT( a.age, a.age_unit ) AS age,
+        a.telcode as telcode,
+        b.inhospid,
+        b.management_doctor,
+        b.management_doctor_code,
+        b.patname,
+        b.operator_id,
+        b.operator,
+        b.remark,
+        b.out_way_id,
+        b.out_way_name,
+        b.nurse_id,
+        b.nurse_name,
+        b.deptcheckFlag,
+        b.diagcheckFlag,
+        b.wardcheckFlag,
+        b.inhospstate,
+        b.patno,
+        b.inhospno,
+        b.serialnum,
+        b.hospitalname,
+        b.hospitalcode,
+        b.hospitaldistrictcode,
+        b.hospitaldistrictname,
+        b.icd10code,
+        b.diagname,
+        b.starttime,
+        b.endtime,
+        b.deptcode,
+        b.deptname,
+        b.roomno,
+        b.bed_no,
+        b.orgid,
+        b.del_flag,
+        b.update_by,
+        b.update_time,
+        b.create_by,
+        b.create_time,
+        b.isupload,
+        b.upload_time,
+        b.patid,
+        b.leavediagname,
+        b.leaveicd10code,
+        b.drcode,
+        b.drname,
+        b.schemestatus,
+        b.generalschemestatus,
+        b.leaveldeptcode,
+        b.leaveldeptname,
+        b.hospitaldistrictid,
+        b.leavehospitaldistrictcode,
+        b.leavehospitaldistrictname,
+        b.leavehospitaldistrictid,
+        b.deptid,
+        b.leaveldeptid,
+        b.long_task_reason,
+        b.fuflag,
+        b.fudate,
+        b.fuperiod,
+        b.futypecode,
+        b.futypedesc,
+        b.fuadvice,
+        b.fuspecialadvice
         b.schemetime
         FROM
         pat_med_inhosp b,
@@ -314,15 +449,20 @@
             <if test="hospitalname != null  and hospitalname != ''">and hospitalname like concat('%', #{hospitalname},
                 '%')
             </if>
+            <if test="managementDoctor != null ">and b.management_doctor = #{managementDoctor}</if>
+            <if test="managementDoctorCode != null ">and b.management_doctor_code = #{managementDoctorCode}</if>
             <if test="patname != null  and patname != ''">and patname like concat('%', #{patname}, '%')</if>
             <if test="hospitaldistrictname != null  and hospitaldistrictname != ''">and hospitaldistrictname like
                 concat('%', #{hospitaldistrictname}, '%')
             </if>
             <if test="endtime != null ">and b.endtime = #{endtime}</if>
+            <if test="fuflag != null ">and b.fuflag = #{fuflag}</if>
             <if test="nurseId != null ">and b.nurse_id = #{nurseId}</if>
             <if test="nurseName != null ">and b.nurse_name = #{nurseName}</if>
             <if test="patno != null ">and b.patno = #{patno}</if>
-            <if test="checkFlag != null ">and b.check_flag = #{checkFlag}</if>
+            <if test="diagcheckFlag != null ">and b.diagcheck_flag = #{diagcheckFlag}</if>
+            <if test="deptcheckFlag != null ">and b.deptcheck_flag = #{deptcheckFlag}</if>
+            <if test="wardcheckFlag != null ">and b.wardcheck_flag = #{wardcheckFlag}</if>
             <if test="inhospstate != null ">and b.inhospstate = #{inhospstate}</if>
             <if test="schemestatus != null ">and b.schemestatus = #{schemestatus}</if>
             <if test="leavediagname != null  and leavediagname != ''">and b.leavediagname like concat('%',
@@ -348,10 +488,19 @@
     </select>
 
 
+    <select id="getTagnameBypatid" parameterType="Long" resultType="string">
+        SELECT GROUP_CONCAT(d.tagname, ', ')
+        FROM pat_archivetag d
+        WHERE d.patid = #{patid}
+          AND d.del_flag = 0
+    </select>
+
+
     <select id="selectPatMedInhospByInhospid" parameterType="Long" resultMap="PatMedInhospResult">
         <include refid="selectPatMedInhospVo"/>
         where inhospid = #{inhospid}
     </select>
+
 
     <insert id="insertPatMedInhosp" parameterType="com.smartor.domain.PatMedInhosp" useGeneratedKeys="true"
             keyProperty="inhospid">
@@ -397,7 +546,9 @@
             <if test="patname!= null">patname,</if>
             <if test="patno != null">patno,</if>
             <if test="inhospstate != null">inhospstate,</if>
-            <if test="checkFlag != null">check_flag,</if>
+            <if test="deptcheckFlag != null">deptcheck_flag,</if>
+            <if test="wardcheckFlag != null">wardcheck_flag,</if>
+            <if test="diagcheckFlag != null">diagcheck_flag,</if>
             <if test="longTaskReason != null">long_task_reason,</if>
             <if test="nurseId != null ">nurse_id,</if>
             <if test="nurseName != null ">nurse_name,</if>
@@ -408,6 +559,15 @@
             <if test="operatorId != null ">operator_id,</if>
             <if test="inhospno != null ">inhospno,</if>
             <if test="remark != null ">remark,</if>
+            <if test="fuflag != null ">fuflag,</if>
+            <if test="fudate != null ">fudate,</if>
+            <if test="fuperiod != null ">fuperiod,</if>
+            <if test="futypecode != null ">futypecode,</if>
+            <if test="futypedesc != null ">futypedesc,</if>
+            <if test="fuadvice != null ">fuadvice,</if>
+            <if test="fuspecialadvice != null ">fuspecialadvice,</if>
+            <if test="managementDoctor != null ">management_doctor,</if>
+            <if test="managementDoctorCode != null ">management_doctor_code,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="serialnum != null">#{serialnum},</if>
@@ -450,7 +610,9 @@
             <if test="patname!= null">#{patname},</if>
             <if test="patno != null">#{patno},</if>
             <if test="inhospstate != null">#{inhospstate},</if>
-            <if test="checkFlag != null">#{checkFlag},</if>
+            <if test="deptcheckFlag != null">#{deptcheckFlag},</if>
+            <if test="wardcheckFlag != null">#{wardcheckFlag},</if>
+            <if test="diagcheckFlag != null">#{diagcheckFlag},</if>
             <if test="longTaskReason != null">#{longTaskReason},</if>
             <if test="nurseId != null ">#{nurseId},</if>
             <if test="nurseName != null ">#{nurseName},</if>
@@ -461,8 +623,60 @@
             <if test="operatorId != null ">#{operatorId},</if>
             <if test="inhospno != null ">#{inhospno},</if>
             <if test="remark != null ">#{remark},</if>
+            <if test="fuflag != null ">#{fuflag},</if>
+            <if test="fudate != null ">#{fudate},</if>
+            <if test="fuperiod != null ">#{fuperiod},</if>
+            <if test="futypecode != null ">#{futypecode},</if>
+            <if test="futypedesc != null ">#{futypedesc},</if>
+            <if test="fuadvice != null ">#{fuadvice},</if>
+            <if test="fuspecialadvice != null ">#{fuspecialadvice},</if>
+            <if test="managementDoctor != null ">#{managementDoctor},</if>
+            <if test="managementDoctorCode != null ">#{managementDoctorCode},</if>
         </trim>
     </insert>
+
+
+    <insert id="insertPatMedInhospBatch" parameterType="java.util.List" useGeneratedKeys="true"
+            keyProperty="item.inhospid">
+        insert into pat_med_inhosp (
+        serialnum, hospitalname, hospitalcode, hospitaldistrictcode, hospitaldistrictname,
+        icd10code, diagname, starttime, endtime, deptcode, deptname, roomno, bed_no,
+        orgid, del_flag, update_by, update_time, create_by, create_time, isupload,
+        upload_time, patid, leavediagname, leaveicd10code, drcode, drname,
+        schemestatus, generalschemestatus, leaveldeptcode, leaveldeptname, hospitaldistrictid,
+        leavehospitaldistrictcode, leavehospitaldistrictname, leavehospitaldistrictid,
+        deptid, leaveldeptid, schemetime, patname, patno, inhospstate,
+        deptcheck_flag, wardcheck_flag, diagcheck_flag, long_task_reason,
+        nurse_id, nurse_name, out_way_id, out_way_name, guid,
+        operator, operator_id, inhospno, remark,
+        fuflag, fudate, fuperiod, futypecode, futypedesc, fuadvice, fuspecialadvice, management_doctor,
+        management_doctor_doctor
+        )
+        values
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.serialnum}, #{item.hospitalname}, #{item.hospitalcode}, #{item.hospitaldistrictcode},
+            #{item.hospitaldistrictname},
+            #{item.icd10code}, #{item.diagname}, #{item.starttime}, #{item.endtime}, #{item.deptcode}, #{item.deptname},
+            #{item.roomno}, #{item.bedNo},
+            #{item.orgid}, #{item.delFlag}, #{item.updateBy}, #{item.updateTime}, #{item.createBy}, #{item.createTime},
+            #{item.isupload},
+            #{item.uploadTime}, #{item.patid}, #{item.leavediagname}, #{item.leaveicd10code}, #{item.drcode},
+            #{item.drname},
+            #{item.schemestatus}, #{item.generalschemestatus}, #{item.leaveldeptcode}, #{item.leaveldeptname},
+            #{item.hospitaldistrictid},
+            #{item.leavehospitaldistrictcode}, #{item.leavehospitaldistrictname}, #{item.leavehospitaldistrictid},
+            #{item.deptid}, #{item.leaveldeptid}, #{item.schemetime}, #{item.patname}, #{item.patno},
+            #{item.inhospstate},
+            #{item.deptcheckFlag}, #{item.wardcheckFlag}, #{item.diagcheckFlag}, #{item.longTaskReason},
+            #{item.nurseId}, #{item.nurseName}, #{item.outWayId}, #{item.outWayName}, #{item.guid},
+            #{item.operator}, #{item.operatorId}, #{item.inhospno}, #{item.remark},
+            #{item.fuflag}, #{item.fudate}, #{item.fuperiod}, #{item.futypecode}, #{item.futypedesc}, #{item.fuadvice},
+            #{item.fuspecialadvice}, #{item.managementDoctor}, #{item.managementDoctorCode}
+            )
+        </foreach>
+    </insert>
+
 
     <update id="updatePatMedInhosp" parameterType="com.smartor.domain.PatMedInhosp">
         update pat_med_inhosp
@@ -507,7 +721,9 @@
             <if test="patname!= null">patname = #{patname},</if>
             <if test="patno != null">patno = #{patno},</if>
             <if test="inhospstate != null">inhospstate = #{inhospstate},</if>
-            <if test="checkFlag != null">check_flag = #{checkFlag},</if>
+            <if test="deptcheckFlag != null">deptcheck_flag = #{deptcheckFlag},</if>
+            <if test="wardcheckFlag != null">wardcheck_flag = #{wardcheckFlag},</if>
+            <if test="diagcheckFlag != null">diagcheck_flag = #{diagcheckFlag},</if>
             <if test="longTaskReason != null">long_task_reason = #{longTaskReason},</if>
             <if test="nurseId != null ">nurse_id = #{nurseId},</if>
             <if test="nurseName != null ">nurse_name = #{nurseName},</if>
@@ -517,6 +733,16 @@
             <if test="operator != null ">operator = #{operator},</if>
             <if test="operatorId != null ">operator_id = #{operatorId},</if>
             <if test="remark != null ">remark = #{remark},</if>
+            <if test="fuflag != null ">fuflag = #{fuflag},</if>
+            <if test="fudate != null ">fudate = #{fudate},</if>
+            <if test="fuperiod != null ">fuperiod = #{fuperiod},</if>
+            <if test="futypecode != null ">futypecode = #{futypecode},</if>
+            <if test="futypedesc != null ">futypedesc = #{futypedesc},</if>
+            <if test="fuadvice != null ">fuadvice = #{fuadvice},</if>
+            <if test="fuspecialadvice != null ">fuspecialadvice = #{fuspecialadvice},</if>
+            <if test="managementDoctor != null ">management_doctor = #{managementDoctor},</if>
+            <if test="managementDoctorCode != null ">management_doctor_code = #{managementDoctorCode}</if>
+
         </trim>
         where inhospid = #{inhospid}
     </update>
@@ -552,7 +778,7 @@
             FROM pat_med_outhosp
             <where>
                 del_flag=0
-                <if test="deptcodeList != null">
+                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                     and deptcode in
                     <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                         #{deptcode}
@@ -569,7 +795,7 @@
             <where>
                 del_flag=0
                 and inhospstate=0
-                <if test="deptcodeList != null">
+                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                     and deptcode in
                     <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                         #{deptcode}
@@ -584,7 +810,7 @@
             <where>
                 del_flag=0
                 and inhospstate=1
-                <if test="deptcodeList != null">
+                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                     and deptcode in
                     <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                         #{deptcode}
@@ -599,7 +825,7 @@
             <where>
                 del_flag=0
                 and inhospstate=1
-                <if test="deptcodeList != null">
+                <if test="deptcodeList != null   and deptcodeList.size() > 0">
                     and deptcode in
                     <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                         #{deptcode}
@@ -609,34 +835,71 @@
         </if>
         ) AS combined
         GROUP BY deptname;
-
-
     </select>
     <select id="selectPatMedInhospCount" parameterType="com.smartor.domain.PatMedReq"
             resultType="com.smartor.domain.PatMedRes">
+        SELECT SUM( rs ) AS rs,
+        SUM( rc ) AS rc
+        FROM (
         SELECT
         COUNT(1) AS rc,
-        COUNT(DISTINCT patid) AS rs
+        0 AS rs
         FROM
         pat_med_inhosp
         <where>
             del_flag=0
+            <if test="orgid != null">
+                AND orgid = #{orgid}
+            </if>
             <if test="zy != null">
                 and inhospstate=0
                 and date_format(starttime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
                 and date_format(starttime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
+                <if test="deptcodeList != null   and deptcodeList.size() > 0">
+                    and deptcode in
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
             </if>
             <if test="cy != null">
                 and inhospstate=1
                 and date_format(endtime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
                 and date_format(endtime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
+                <if test="deptcodeList != null   and deptcodeList.size() > 0">
+                    and leaveldeptcode in
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
             </if>
-            <if test="deptcodeList != null">
+
+        </where>
+        union all
+        select
+        0 AS rc,
+        count(1) AS rs
+        FROM
+        service_subtask
+        <where>
+            del_flag = 0
+            and service_type=2
+            <if test="orgid != null">
+                AND orgid = #{orgid}
+            </if>
+            <if test="startDate != null">
+                AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
+            </if>
+            <if test="endDate != null">
+                AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
+            </if>
+            <if test="deptcodeList != null   and deptcodeList.size() > 0">
                 and deptcode in
                 <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                     #{deptcode}
                 </foreach>
             </if>
         </where>
+        ) AS combined_data
     </select>
 </mapper>

--
Gitblit v1.9.3