8325ad629af55b27bc5741b2c53307513a74332e..5e09cd9bc9f370058460ca56222a0c82096a8c7d
2026-09-17 陈昶聿
【市一】随访增加院区限制
5e09cd 对比 | 目录
2026-09-17 陈昶聿
【丽水】ssoGoServiceSubtaskList 调整
057325 对比 | 目录
2026-09-17 陈昶聿
【丽水】ssoGoServiceSubtaskList 调整
cc560e 对比 | 目录
已修改9个文件
247 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/sso/SSOController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SSOUserInfo.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -389,7 +389,11 @@
        ivrTaskVO.setCreateBy(user.getNickName());
        ivrTaskVO.setUpdateBy(user.getNickName());
        ivrTaskVO.setOrgid(user.getOrgid());
        ivrTaskVO.setCampusid(user.getCampusid());
        if(StringUtils.isNotEmpty(user.getCampusid())){
            ivrTaskVO.setCampusid(user.getCampusid());
        }else {
            ivrTaskVO.setCampusid("1");
        }
        return success(serviceSubtaskService.insertOrUpdateTask(ivrTaskVO));
    }
@@ -544,6 +548,7 @@
                        SysUserDept sysUserWard = new SysUserDept();
                        sysUserWard.setUserId(user.getUserId());
                        sysUserWard.setOrgid(user.getOrgid());
                        sysUserWard.setCampusid(user.getCampusid());
                        sysUserWard.setDeptType("2");
                        List<SysUserDept> wardList = sysUserDeptService.selectSysUserDeptList(sysUserWard);
                        if (CollectionUtils.isNotEmpty(wardList)) {
@@ -558,6 +563,7 @@
                        SysUserDept sysUserDept = new SysUserDept();
                        sysUserDept.setUserId(user.getUserId());
                        sysUserDept.setOrgid(user.getOrgid());
                        sysUserDept.setCampusid(user.getCampusid());
                        sysUserDept.setDeptType("1");
                        List<SysUserDept> deptList = sysUserDeptService.selectSysUserDeptList(sysUserDept);
                        if (CollectionUtils.isNotEmpty(deptList)) {
@@ -835,11 +841,13 @@
        SysUserDept sysUserDept = new SysUserDept();
        sysUserDept.setUserId(sysUser.getUserId());
        sysUserDept.setOrgid(sysUser.getOrgid());
        sysUserDept.setCampusid(sysUser.getCampusid());
        sysUserDept.setDeptType("1");
        List<SysUserDept> sysUserDepts = sysUserDeptService.selectSysUserDeptList(sysUserDept);
        SysUserDept sysUserWard = new SysUserDept();
        sysUserWard.setUserId(sysUser.getUserId());
        sysUserWard.setOrgid(sysUser.getOrgid());
        sysUserWard.setCampusid(sysUser.getCampusid());
        sysUserWard.setDeptType("2");
        List<SysUserDept> sysUserWards = sysUserDeptService.selectSysUserDeptList(sysUserWard);
        List<String> deptCodes = sysUserDepts.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
ruoyi-admin/src/main/java/com/ruoyi/web/controller/sso/SSOController.java
@@ -1,6 +1,7 @@
package com.ruoyi.web.controller.sso;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.base.BaseException;
@@ -11,6 +12,7 @@
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService;
import com.smartor.domain.SSOTokenResponse;
import com.smartor.domain.SSOUserInfo;
@@ -95,6 +97,9 @@
    @Autowired
    private ISysConfigService sysConfigService;
    @Autowired
    private ISysDeptService sysDeptService;
    private final RestTemplate restTemplate;
@@ -189,68 +194,31 @@
    /**
     * ssoGoServiceSubtaskList
     * code 是/mediinfo-lyra-authserver/connect/authorize 由his提供
     * 登录客户端ID是固定的 clientId = 1553588321874087936  clientSecret = suifangxt
     */
    @GetMapping("ssoGoServiceSubtaskList")
    public RedirectView ssoGoServiceSubtaskList(@RequestParam(value = "code", required = false) String code,
                                                @RequestParam(value = "sfzh", required = false) String sfzh) {
    @PostMapping("ssoGoServiceSubtaskList")
    public RedirectView ssoGoServiceSubtaskList(@RequestBody SSOUserInfo ssoUserInfo) {
        // 重定向地址对象(重定向地址
        RedirectView redirectView = new RedirectView();
        log.info("收到ssoGoServiceSubtaskList请求,开始重定向到授权服务器,code = {}, sfzh = {}",code, sfzh);
        String path = sysConfigService.selectConfigByKey("sys.qddz");
        String redirectUri = "https://9.208.2.190:8092/prod-api/sso/ssoLoginLyra";
        String lyraPath = "https://9.0.124.104:13021";
        String clientId = "1553588321874087936";
        String clientSecret = "suifangxt";
        String scope = "openid";
        ServiceSubtaskEntity subtask = new ServiceSubtaskEntity();
        subtask.setSfzh(sfzh);
        subtask.setSort(0);
        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskService.selectServiceSubtaskList(subtask);
        ServiceSubtask serviceSubtask = null;
        if(CollectionUtils.isNotEmpty(serviceSubtaskList)){
            serviceSubtask = serviceSubtaskList.get(0);
        }else {
            redirectView.setUrl(path + "/login?error=sso_failed");
            return redirectView;
        }
//        String authorizeUrl = lyraPath + "/mediinfo-lyra-authserver/connect/authorize";
        String accessTokenUrl = lyraPath + "/mediinfo-lyra-authserver/connect/token";
        String userInfoUrl =  lyraPath + "/mediinfo-lyra-authserver/connect/userinfo";
        String userName = ssoUserInfo.getUsername();
        String orgid = ssoUserInfo.getOrgid();
        String campusid = ssoUserInfo.getCampusid();
        String searchCondition = "";
        String deptCode = ssoUserInfo.getDeptCode();
        String wardCode = ssoUserInfo.getWardCode();
        try {
            SSOTokenResponse accessToken = getAccessTokenLyra(code, accessTokenUrl, clientId, clientSecret, redirectUri,true);
            log.info("获取到的token:" + accessToken);
            SSOUserInfo userInfo = getUserInfoLyra(accessToken.getAccess_token(), userInfoUrl,true);
            log.info("获取到的用户信息:" + userInfo);
//            createLocalSession(userInfo);
            if (StringUtils.isEmpty(path)) {
                throw new BaseException("请配置前端地址");
            }
            String userName =  userInfo.getZhiGongID();
            String orgid = userInfo.getZuZhiJGID();
            String campusid = "1";
            String deptId = null;
            String token = null;
            log.info("【SSO登录】获取用户Token参数:" + userInfo);
            String loginToken = loginService.ssoLogin(userName, orgid, deptId, campusid, token);
            if (StringUtils.isEmpty(loginToken)) {
                log.error("【SSO登录】登录失败,userName={}, orgid={}", userName, orgid);
                return buildRedirect(path + "/login");
            if(StringUtils.isNotEmpty(deptCode)){
                searchCondition = "&followUpDeptCode=" + deptCode;
            }else if(StringUtils.isNotEmpty(wardCode)){
                searchCondition = "&followUpWardCode=" + deptCode;
            }
            String voiceType = (StringUtils.isNotEmpty(serviceSubtask.getType())
                    && serviceSubtask.getType().equals("1")) ? "1" : "0";
            String loginToken  = loginService.loginByUserName(userName + "&" + orgid + "&null" + "&" + campusid);
            String redirectUrl = path + "/loginSSO?token=" + loginToken +
                    "&orgid=" + orgid + "&campusid=" + serviceSubtask.getCampusid() +
                    "&taskid=" + serviceSubtask.getTaskid() + "&patid=" + serviceSubtask.getPatid() +
                    "&id=" + serviceSubtask.getId() + "&voiceType=" + voiceType +
                    "&visitCount=" + serviceSubtask.getVisitCount() + "&sfzh=" + sfzh +
                    "&orgname=null&ZuHuID=null&deptCode=null";
                    "&orgid=" + orgid + "&campusid=" + campusid +
                    searchCondition + "&orgname=null&ZuHuID=null&deptCode=null";
            log.info("【SSO登录】重定向地址:{}", redirectUrl);
            return buildRedirect(redirectUrl);
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -12,6 +12,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.mapper.SysUserDeptMapper;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysDeptService;
@@ -208,13 +209,22 @@
    }
    /**
     * 获取用户信息
     * 获取用户信息(登录)
     *
     * @return 用户信息
     */
    @GetMapping("getInfo")
    public AjaxResult getInfo() {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        //显示所有院区权限
        String allCampus = sysConfigService.selectConfigByKey("sys.authority.campus.all");
        if(StringUtils.isNotEmpty(allCampus)){
            allCampus = "," + allCampus + ",";
            if (allCampus.contains("," + user.getUserName() + ",")) {
                user.setCampusid(null);
            }
        }
        // 角色集合
        Set<String> roles = permissionService.getRolePermission(user);
        // 权限集合
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -23,6 +23,14 @@
    public List<SysDept> selectDeptList(SysDept dept);
    /**
     * 查询部门管理数据
     *
     * @param dept 部门信息
     * @return 部门信息集合
     */
    public List<SysDept> selectSysDeptList(SysDept dept);
    /**
     * 获取所有的部门信息
     * @return
     */
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -53,6 +53,17 @@
        return deptMapper.selectDeptList(dept);
    }
    /**
     * 查询部门管理数据
     *
     * @param dept 部门信息
     * @return 部门信息集合
     */
    @Override
    public List<SysDept> selectSysDeptList(SysDept dept) {
        return deptMapper.selectDeptList(dept);
    }
    @Override
    public Map<String, String> selectDept(String orgid) {
        SysDept sysDept = new SysDept();
smartor/src/main/java/com/smartor/domain/SSOUserInfo.java
@@ -48,6 +48,31 @@
     */
    private String zhiGongID;
    /**
     * 登录人账号
     */
    private String username;
    /**
     * 机构
     */
    private String orgid;
    /**
     * 院区
     */
    private String campusid;
    /**
     * 病区
     */
    private String wardCode;
    /**
     * 科室
     */
    private String deptCode;
    @Override
    public String toString() {
        return "SSOUserInfo{" +
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -1044,6 +1044,8 @@
//        }
        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
        serviceSubtask.setTaskid(serviceTask.getTaskid());
        serviceSubtask.setOrgid(serviceTask.getOrgid());
        serviceSubtask.setCampusid(serviceTask.getCampusid());
        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
        serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
@@ -1155,6 +1157,8 @@
    private ServiceSubtask boxedServiceSubtaskForOp(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatMedOperationItem patMedOperationItem, PatArchive patArchive, String config) {
        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
        serviceSubtask.setTaskid(serviceTask.getTaskid());
        serviceSubtask.setOrgid(serviceTask.getOrgid());
        serviceSubtask.setCampusid(serviceTask.getCampusid());
        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
        serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -482,6 +482,8 @@
    public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
        serviceSubtask.setTaskid(serviceTask.getTaskid());
        serviceSubtask.setOrgid(serviceTask.getOrgid());
        serviceSubtask.setCampusid(serviceTask.getCampusid());
        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
        serviceSubtask.setDrcode(patMedOuthosp.getDrcode());
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -254,9 +254,8 @@
        <include refid="selectServiceSubtaskVo"/>
        where 1=1
        and del_flag = 0
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
        <if test="taskid != null ">and taskid = #{taskid}</if>
        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
@@ -278,16 +277,11 @@
        <include refid="selectServiceSubtaskVo"/>
        where 1=1
        and del_flag = 0
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="subId != null">
            AND id = #{subId}
        </if>
        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
        <if test="subId != null">and id = #{subId}</if>
        <if test="taskid != null ">and taskid = #{taskid}</if>
        <if test="visitTime != null">
            AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')
        </if>
        <if test="visitTime != null">and date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')</if>
        <if test="sendstate != null ">and sendstate = #{sendstate}</if>
        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
@@ -579,15 +573,10 @@
        <include refid="selectServiceSubtaskVo"/>
        where del_flag = 0
        and sendstate != 5
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="visitTime != null">
            AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')
        </if>
        <if test="subId != null">
            AND id = #{subId}
        </if>
        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
        <if test="visitTime != null">and date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d') </if>
        <if test="subId != null">and id = #{subId} </if>
        <if test="sendstate != null ">and sendstate = #{sendstate}</if>
        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
@@ -597,9 +586,8 @@
        <include refid="selectServiceSubtaskVo"/>
        where del_flag = 0
        and sendstate = 5
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
        <if test="visitTime != null">
            AND date_format(visit_time,'%y%m%d') &lt;= date_format(DATE_ADD(#{visitTime}, INTERVAL 1 DAY),'%y%m%d')
        </if>
@@ -617,9 +605,8 @@
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        where del_flag = 0
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
        <if test="createStartTime != null  and createEndTime != null">and create_time BETWEEN #{createStartTime} AND
            #{createEndTime}
        </if>
@@ -714,9 +701,8 @@
            DATE_FORMAT(b.create_time, '%Y-%m-%d') LIKE CONCAT(#{createTimeNew}, '%')
        </if>
        <if test="sendstate != null ">and b.sendstate = #{sendstate}</if>
        <if test="orgid != null and orgid != ''">
            and b.orgid = #{orgid}
        </if>
        <if test="orgid != null and orgid != ''">and b.orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and b.campusid = #{campusid}</if>
    </select>
    <select id="selectTimelyRate" parameterType="com.smartor.domain.ServiceSubtask" resultType="double">
@@ -787,6 +773,7 @@
            AND ss.visit_time &lt; DATE_ADD(#{endtime}, INTERVAL 1 DAY)
        </if>
        <if test="orgid != null and orgid != ''">AND ss.orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and ss.campusid = #{campusid}</if>
        <if test="deptcode != null  and deptcode != ''">and ss.deptcode = #{deptcode}</if>
        <if test="deptname != null  and deptname != ''">and ss.deptname = #{deptname}</if>
        <if test="isabnormal != null">and ss.isabnormal = #{isabnormal}</if>
@@ -1285,9 +1272,8 @@
        where 1=1
        <if test="patid != null ">and patid = #{patid}</if>
        <if test="taskid != null ">and taskid = #{taskid}</if>
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if>
    </update>
    <update id="updateServiceSubtaskByCondition" parameterType="com.smartor.domain.ServiceSubtask">
@@ -1558,6 +1544,9 @@
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -1646,12 +1635,9 @@
        and a.del_flag = '0'
        and b.del_flag = '0'
        and a.appltype = '3'
        <if test="orgid != null and orgid != ''">
            and a.orgid = #{orgid}
        </if>
        <if test="taskId != null">
            and a.task_id = #{taskId}
        </if>
        <if test="orgid != null and orgid != ''">and a.orgid = #{orgid}</if>
        <if test="campusid != null and campusid != ''">and b.campusid = #{campusid}</if>
        <if test="taskId != null">and a.task_id = #{taskId}</if>
        <if test="taskName != null and taskName != ''">
            and a.task_name like concat('%', #{taskName}, '%')
        </if>
@@ -1740,6 +1726,9 @@
        and del_flag = 0
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND leavehospitaldistrictcode IN
@@ -1842,6 +1831,9 @@
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -1937,6 +1929,9 @@
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -1981,6 +1976,9 @@
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -2012,6 +2010,9 @@
        and del_flag = 0
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">AND
            leavehospitaldistrictcode IN
@@ -2067,6 +2068,9 @@
        AND t.del_flag=0
        <if test="orgid != null and orgid != ''">
            and t.orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and t.campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND t.leavehospitaldistrictcode IN
@@ -2151,6 +2155,9 @@
        <if test="orgid != null and orgid != ''">
            AND ss.orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            AND ss.campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND ss.leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
@@ -2207,6 +2214,9 @@
        and ss.del_flag=0
        <if test="orgid != null and orgid != ''">
            and ss.orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and ss.campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND ss.leavehospitaldistrictcode IN
@@ -2778,6 +2788,9 @@
        <if test="orgid != null and orgid != ''">
            AND orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
@@ -2865,6 +2878,9 @@
        <if test="orgid != null and orgid != ''">
            AND orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            AND campusid = #{campusid}
        </if>
        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
            AND leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="code" open="(" separator="," close=")">
@@ -2890,6 +2906,9 @@
        AND deptcode IS NOT NULL AND deptcode != ''
        <if test="orgid != null and orgid != ''">
            AND orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            AND campusid = #{campusid}
        </if>
        <if test="deptcodes != null and deptcodes.size() > 0">
            AND deptcode IN
@@ -2922,6 +2941,9 @@
        AND service_type = 4
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="sendstate != null">
            AND sendstate = #{sendstate}
@@ -3023,6 +3045,9 @@
        <if test="orgid != null and orgid != ''">
            and orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            and campusid = #{campusid}
        </if>
        <if test="sendstate != null">
            AND sendstate = #{sendstate}
        </if>