liusheng
3 天以前 c462811cd33e81a80bc089e3677975c069d9cda5
代码提交
已修改28个文件
已添加1个文件
660 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/AesUtils.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskTemplateVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceTaskdiag.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyLibTemplateReq.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/SvyLibTemplateMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/SvyLibTemplateTargetoptionMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceTaskService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/ISvyLibTemplateService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateServiceImpl.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/SvyLibTemplateMapper.xml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/SvyLibTemplateTargetoptionMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -408,6 +408,14 @@
        return toAjax(serviceSubtaskService.updateServiceSubtask(serviceSubtask));
    }
    @ApiOperation("修改子任务模板")
    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
    @PostMapping("/updateTemplate")
    public AjaxResult updateTemplate(@RequestBody ServiceSubtaskTemplateVO serviceSubtaskTemplateVO) {
        serviceSubtaskTemplateVO.setUpdateBy(getLoginUser().getUser().getNickName());
        return toAjax(serviceSubtaskService.updateTemplate(serviceSubtaskTemplateVO));
    }
    @ApiOperation("新增子任务")
    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
    @PostMapping("/addSubTask")
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
@@ -228,7 +228,7 @@
        log.info("tid和pid的值为:{},{}", tid, pid);
        if (StringUtils.isEmpty(serviceTaskScriptQues.getPatfrom())) serviceTaskScriptQues.setPatfrom("0");
        return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom()));
        return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom(),null));
    }
@@ -252,7 +252,7 @@
        log.info("tid和pid的值为:{},{}", tid, pid);
        if (StringUtils.isEmpty(serviceTaskScriptQues.getPatfrom())) serviceTaskScriptQues.setPatfrom("0");
        return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom()));
        return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom(),null));
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateController.java
@@ -13,10 +13,7 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.PageUtils;
import com.smartor.domain.SvyLibScriptTag;
import com.smartor.domain.SvyLibTemplate;
import com.smartor.domain.SvyLibTemplateReq;
import com.smartor.domain.SvyLibTemplateVO;
import com.smartor.domain.*;
import com.smartor.service.ISvyLibTemplateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -52,6 +49,20 @@
        return getDataTable(sviLibTemplate);
    }
    @ApiOperation("查询问卷列表通过部门病区代码")
    @PostMapping("/getSviLibTemplateByDeptCode")
    public Map<String, Object> getSviLibTemplateByDeptCode(@RequestBody TemplateDeptVO templateDeptVO) {
        templateDeptVO.setPageNum(PageUtils.getOffset(templateDeptVO.getPageNum(), templateDeptVO.getPageSize()));
        List<SvyLibTemplate> sviLibTemplate = svyLibTemplateService.getSviLibTemplateByDeptCode(templateDeptVO);
        //获取total
        templateDeptVO.setPageNum(null);
        templateDeptVO.setPageSize(null);
        List<SvyLibTemplate> total = svyLibTemplateService.getSviLibTemplateByDeptCode(templateDeptVO);
        return getDataTable3(CollectionUtils.isNotEmpty(total) ? total.size() : 0L, sviLibTemplate);
    }
    /**
     * æŸ¥è¯¢é—®å·åˆ—表
     */
ruoyi-common/src/main/java/com/ruoyi/common/utils/AesUtils.java
@@ -16,7 +16,7 @@
    /** ç®—法/模式/填充 */
    private static final String ALGORITHM = "AES/CBC/PKCS5Padding";
    /** é»˜è®¤ Key(HEX,32字节→256位密钥) */
    /** é»˜è®¤ Key(HEX,16字节→128位密钥) */
    private static final String DEFAULT_KEY = "0F471C56362408AF8DB929C38EDFD23C";
    /** é»˜è®¤ IV(HEX,16字节→128位偏移量) */
@@ -101,7 +101,7 @@
    // -------------------------------------------------------------------------
    /**
     * HEX å­—符串转字节数组(大小写均可)
     * HEX å­—符串转字节数组(大小写均可),不足 16 å­—节自动补 0
     */
    private static byte[] hexToBytes(String hex) {
        if (hex == null || hex.length() % 2 != 0) {
@@ -113,6 +113,12 @@
            data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
                    + Character.digit(hex.charAt(i + 1), 16));
        }
        // IV ä¸è¶³ 16 å­—节时补 0(兼容第三方 8 å­—节 IV)
        if (data.length < 16) {
            byte[] padded = new byte[16];
            System.arraycopy(data, 0, padded, 0, data.length);
            data = padded;
        }
        return data;
    }
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
@@ -49,8 +49,6 @@
            log.info("登录用户:{} ä¸æ˜¯æœ¬åŒ»é™¢å¸å·ï¼š{}", username, split[1]);
            throw new ServiceException("对不起,您的账号:" + split[0] + " ä¸æ˜¯æœ¬åŒ»é™¢çš„");
        }
//-0/-85#4-
        passwordService.validate(user);
        return createLoginUser(user);
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -230,11 +230,16 @@
    /**
     * HIS数据采集
     * å®šæ—¶ä»»åŠ¡ï¼šé‡‡é›†æ‚£è€…ä¿¡æ¯ã€å‡ºé™¢ã€é—¨è¯Šæ•°æ®
     * todayZeroStr  å½“前的时间   ä¾‹å¦‚:2026-05-06 00:00:00
     */
    public void dealHisData() {
    public void dealHisData(String todayZeroStr) {
        log.info("【dealHisData】开始执行HIS数据采集任务");
        // èŽ·å–æ˜¨å¤©0点到今天0点的时间范围
        LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN);
        if (StringUtils.isNotBlank(todayZeroStr)) {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            todayZero = LocalDateTime.parse(todayZeroStr, formatter);
        }
        LocalDateTime yesterdayZero = todayZero.minusDays(1);
        log.info("【dealHisData】采集时间范围:{} ~ {}", yesterdayZero, todayZero);
@@ -253,8 +258,7 @@
            } catch (Exception e) {
                log.error("【dealHisData】新华数据采集异常", e);
            }
        }
        else if (active.trim().equals("hn")) {
        } else if (active.trim().equals("hn")) {
            try {
                // æ²³å—数据采集
                HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
@@ -269,8 +273,7 @@
            } catch (Exception e) {
                log.error("【dealHisData】河南数据采集异常", e);
            }
        }
        else if (active.trim().equals("sltd") || active.trim().equals("nhfy")) {
        } else if (active.trim().equals("sltd") || active.trim().equals("nhfy")) {
            //省立同德与华南附一用同一套采集方法(都是来未来提供)
            try {
@@ -322,7 +325,7 @@
                // çœç«‹åŒå¾·æ•°æ®é‡‡é›†
                for (Long cid : campusidList) {
                    log.debug("【dealHisData】省立同德“预入院”开始采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“预入院”开始采集数据,院区:{}", cid);
                    String nowTime = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                    ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
                    serviceSLTDInhospReqVO.setOrgId("20001001");
@@ -338,11 +341,11 @@
                    list.add("FH0109.23");
                    list.add("FH0109.53");
                    serviceSLTDInhospReqVO.setStatusList(list);
                    log.debug("【dealHisData】省立同德“预入院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    log.info("【dealHisData】省立同德“预入院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                    log.debug("【dealHisData】省立同德“预入院”結束采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“预入院”結束采集数据,院区:{}", cid);
                    log.debug("【dealHisData】省立同德“入院”开始采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“入院”开始采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setOrgId("20001001");
                    serviceSLTDInhospReqVO.setCampusId(cid);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(null);
@@ -356,12 +359,13 @@
                    List<String> listStr = new ArrayList<>();
                    listStr.add("FH0109.26");
                    serviceSLTDInhospReqVO.setStatusList(listStr);
                    log.debug("【dealHisData】省立同德“入院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    log.info("【dealHisData】省立同德“入院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                    log.debug("【dealHisData】省立同德“入院”結束采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“入院”結束采集数据,院区:{}", cid);
                    // é—¨æ€¥è¯Šåˆ†é¡µé‡‡é›†ï¼šæ¯é¡µ1000条,直到无数据为止
                    log.debug("【dealHisData】省立同德“门急诊”开始分页采集数据,院区:{}", cid);
                    // é—¨æ€¥è¯Šåˆ†é¡µé‡‡é›†ï¼šæ¯é¡µ1000条,直到无数据为止(南华附一的先不采门急诊数据)
                    if (active.trim().equals("sltd")) {
                        log.info("【dealHisData】省立同德“门急诊”开始分页采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setStartHeadTime(null);
                    serviceSLTDInhospReqVO.setStartTailTime(null);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
@@ -380,13 +384,13 @@
                    while (true) {
                        serviceSLTDInhospReqVO.setCurrent(outpPage);
                        serviceSLTDInhospReqVO.setSize(OUTP_PAGE_SIZE);
                        log.debug("【dealHisData】省立同德“门急诊”采集第{}页数据,院区:{}", outpPage, cid);
                            log.info("【dealHisData】省立同德“门急诊”采集第{}页数据,院区:{}", outpPage, cid);
                        List<ServiceSLTDInhospResDTO> outpResult = serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                        if (CollectionUtils.isEmpty(outpResult)) {
                            log.debug("【dealHisData】省立同德“门急诊”第{}页无数据,采集结束,院区:{}", outpPage, cid);
                                log.info("【dealHisData】省立同德“门急诊”第{}页无数据,采集结束,院区:{}", outpPage, cid);
                            break;
                        }
                        log.debug("【dealHisData】省立同德“门急诊”第{}页采集{}条,院区:{}", outpPage, outpResult.size(), cid);
                            log.info("【dealHisData】省立同德“门急诊”第{}页采集{}条,院区:{}", outpPage, outpResult.size(), cid);
                        if (outpResult.size() < OUTP_PAGE_SIZE) {
                            break;
                        }
@@ -395,9 +399,10 @@
                    // æ¸…除分页参数,避免影响后续出入院查询
                    serviceSLTDInhospReqVO.setCurrent(null);
                    serviceSLTDInhospReqVO.setSize(null);
                    log.debug("【dealHisData】省立同德“门急诊”分页采集完成,院区:{}", cid);
                        log.info("【dealHisData】省立同德“门急诊”分页采集完成,院区:{}", cid);
                    }
                    log.debug("【dealHisData】省立同德“出院”开始采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“出院”开始采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setStartHeadTime(null);
                    serviceSLTDInhospReqVO.setStartTailTime(null);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(null);
@@ -413,9 +418,9 @@
//                    list2.add("FH0108.02");
                    list2.add("FH0109.27");
                    serviceSLTDInhospReqVO.setStatusList(list2);
                    log.debug("【dealHisData】省立同德“出院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    log.info("【dealHisData】省立同德“出院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                    log.debug("【dealHisData】省立同德“出院”束采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“出院”束采集数据,院区:{}", cid);
                }
            } catch (Exception e) {
@@ -438,7 +443,7 @@
                ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
                serviceSLTDInhospReqVO.setOrgId("20001001");
                serviceSLTDInhospReqVO.setCampusId(30001002L);
                log.debug("【dealHisData】省立同德“门急诊”开始采集数据,院区:{}", "30001002");
                log.info("【dealHisData】省立同德“门急诊”开始采集数据,院区:{}", "30001002");
                serviceSLTDInhospReqVO.setStartHeadTime(null);
                serviceSLTDInhospReqVO.setStartTailTime(null);
                serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
@@ -448,15 +453,17 @@
                list1.add("FH0108.01");
                list1.add("FH0108.03");
                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
                log.debug("【dealHisData】省立同德“门急诊”采集数据入参:{}", serviceSLTDInhospReqVO);
                log.info("【dealHisData】省立同德“门急诊”采集数据入参:{}", serviceSLTDInhospReqVO);
                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                log.debug("【dealHisData】省立同德“门急诊”束采集数据,院区:{}", "30001002");
                log.info("【dealHisData】省立同德“门急诊”束采集数据,院区:{}", "30001002");
            }
        } catch (Exception e) {
            log.error("【dealHisData】省立同德数据采集异常", e);
        }
    }    /**
    }
    /**
     * è¿™ä¸ªåªæ˜¯æ–°åŽä¸´æ—¶ä½¿ç”¨ï¼Œå¹³æ—¶ç”¨ä¸åˆ°
     */
    public void dealHisData2() {
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -176,7 +176,7 @@
     * æ¨¡æ¿å
     */
    @Excel(name = " æ¨¡æ¿å ")
    @ApiModelProperty(value = "拉取时间")
    @ApiModelProperty(value = "模板名")
    private String templatename;
    /**
smartor/src/main/java/com/smartor/domain/ServiceSubtaskTemplateVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.smartor.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * å­ä»»åŠ¡é—®å·æ¨¡æ¿
 *
 * @author ruoyi
 * @date 2024-02-02
 */
@ApiModel(value = "ServiceSubtaskTemplateVO", description = "子任务问卷模板")
@Data
public class ServiceSubtaskTemplateVO {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®
     */
    @ApiModelProperty(value = "主键")
    private Long subId;
    /**
     * ä¿®æ”¹äºº
     */
    @ApiModelProperty(value = "修改人")
    private String updateBy;
    @ApiModelProperty(value = "问卷模板")
    private SvyTaskTemplateVO svyTaskTemplateVO;
}
smartor/src/main/java/com/smartor/domain/ServiceTask.java
@@ -377,7 +377,7 @@
    private List<String> leavehospitaldistrictcodes;
    /**
     * å‡ºé™¢ç—…区编号
     * å‡ºé™¢ç§‘室编号
     */
    @ApiModelProperty(value = "出院部门编号集合")
    private List<String> leaveldeptcodes;
smartor/src/main/java/com/smartor/domain/ServiceTaskdiag.java
@@ -69,8 +69,8 @@
    /**
     * éƒ¨é—¨åç§°
     */
    @ApiModelProperty("部门名称")
    @Excel(name = "部门名称")
    @ApiModelProperty("疾病名称")
    @Excel(name = "疾病名称")
    private String icd10name;
    /**
smartor/src/main/java/com/smartor/domain/SvyLibTemplateReq.java
@@ -45,6 +45,12 @@
    private String svyname;
    /**
     * ç§‘室名称集合(以“,”分割)
     */
    @ApiModelProperty(value = "科室名称集合(以“,”分割)")
    private String deptNames;
    /**
     * é€‚用疾病
     */
    @ApiModelProperty(value = "适用疾病")
smartor/src/main/java/com/smartor/mapper/SvyLibTemplateMapper.java
@@ -4,6 +4,8 @@
import com.smartor.domain.SvyLibTemplate;
import com.smartor.domain.SvyLibTemplateReq;
import com.smartor.domain.TemplateDept;
import com.smartor.domain.TemplateDeptVO;
import org.apache.ibatis.annotations.Mapper;
/**
@@ -30,6 +32,8 @@
     */
    public List<SvyLibTemplate> selectSvyLibTemplateList(SvyLibTemplateReq svyLibTemplateReq);
    public List<SvyLibTemplate> selectSvyLibTemplateListByDeptCode(TemplateDeptVO templateDeptVO);
    /**
     * æ–°å¢žé—®å·
     *
smartor/src/main/java/com/smartor/mapper/SvyLibTemplateTargetoptionMapper.java
@@ -2,6 +2,7 @@
import com.smartor.domain.SvyLibTemplateTargetoption;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -60,4 +61,13 @@
     * @return ç»“æžœ
     */
    public int deleteSvyLibTemplateTargetoptionByIds(Long[] ids);
    /**
     * æ ¹æ®è¯æœ¯ID列表和机构ID批量查询选项
     *
     * @param scriptIds è¯æœ¯ID列表
     * @param orgid     æœºæž„ID
     * @return é€‰é¡¹é›†åˆ
     */
    public List<SvyLibTemplateTargetoption> selectByScriptIds(@Param("scriptIds") List<Long> scriptIds, @Param("orgid") String orgid);
}
smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java
@@ -40,6 +40,8 @@
    public SysDept selectDeptByCode(@Param("deptCode")String deptCode,@Param("orgid")String orgid);
    public SysDept selectDeptByCodeAndCampus(@Param("deptCode")String deptCode,@Param("orgid")String orgid,@Param("campusid")String campusid);
    /**
     * æ ¹æ®ID查询所有子部门
     *
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -80,6 +80,13 @@
    public Boolean updateServiceSubtask(ServiceSubtask ServiceSubtask);
    /**
     * å­ä»»åŠ¡æ¨¡æ¿ä¿®æ”¹
     * @param serviceSubtaskTemplateVO
     * @return
     */
    public Boolean updateTemplate(ServiceSubtaskTemplateVO serviceSubtaskTemplateVO);
    /**
     * æ‰¹é‡åˆ é™¤å•一任务(随访)
     *
     * @param ids éœ€è¦åˆ é™¤çš„单一任务(随访)主键集合
smartor/src/main/java/com/smartor/service/IServiceTaskService.java
@@ -75,7 +75,7 @@
     * @param patid
     * @return
     */
    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom);
    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom,Long subId);
    public Map<String, Object> getScriptByCondition(Long taskid, String zyserialnum, String mzserialnum, String tsserialnum);
smartor/src/main/java/com/smartor/service/ISvyLibTemplateService.java
@@ -3,9 +3,7 @@
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
import com.smartor.domain.SvyLibTemplate;
import com.smartor.domain.SvyLibTemplateReq;
import com.smartor.domain.SvyLibTemplateVO;
import com.smartor.domain.*;
import org.springframework.web.bind.annotation.RequestBody;
/**
@@ -25,6 +23,8 @@
    public List<SvyLibTemplate> getSviLibTemplate(SvyLibTemplate svyLibTemplate);
    public List<SvyLibTemplate> getSviLibTemplateByDeptCode(TemplateDeptVO templateDeptVO);
    /**
     * æŸ¥è¯¢é—®å·åˆ—表
     *
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -479,7 +479,7 @@
                        pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd);
                        patMedInhospMapper.updatePatMedInhosp(pmiJB);
                    } else if (CollectionUtils.isEmpty(serviceTaskdiags)) {
                        errorIcd = "该患者所在病区未配置长期任务;";
                        errorIcd = "该患者所患疾病未配置长期任务;";
                        PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());
                        pmiJB.setDiagcheckFlag("2");
                        pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd);
@@ -856,7 +856,7 @@
     * @param check         æ˜¯å¦éœ€è¦æ ¡éªŒ
     * @param patMedInhosp1 ç—…人出入院信息
     * @param patArchive    ç—…人信息
     * @param type          éšè®¿ç±»åž‹(1-科室,2-病区,3-疾病)
     * @param type          éšè®¿ç±»åž‹(1-科室,2-病区,3-疾病 4-入院科室 5-入院病区)
     * @param config        é…ç½®ä¿¡æ¯ visit.early.day
     */
    //将患者放到subtask中
@@ -886,22 +886,41 @@
                patMedInhosp1.setLongTaskReason(longTaskReason + " & è¯¥æ‚£è€…疾病长期任务不存在,任务ID为:" + taskid);
                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                return;
            } else if (type == 4) {
                patMedInhosp1.setInDeptcheckFlag("2");
                patMedInhosp1.setLongTaskReason(longTaskReason + " & è¯¥æ‚£è€…入院科室长期任务不存在,任务ID为:" + taskid);
                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                return;
            } else if (type == 5) {
                patMedInhosp1.setInWardcheckFlag("2");
                patMedInhosp1.setLongTaskReason(longTaskReason + " & è¯¥æ‚£è€…入院病区长期任务不存在,任务ID为:" + taskid);
                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                return;
            }
        } else {
            serviceTask = serviceTasks.get(0);
        }
        if (Objects.isNull(patMedInhosp1.getEndtime())) {
        if (patMedInhosp1.getInhospstate().equals("1") && Objects.isNull(patMedInhosp1.getEndtime())) {
            return;
        }
        //封装serviceSubtask
        ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp1, patArchive, config);
        ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp1, patArchive, config, type);
        if (ObjectUtils.isEmpty(serviceSubtask)) {
            return;
        }
        if (type != 2) {
            //科室和疾病 éƒ½ç”¨ ç§‘室填充
            if (patMedInhosp1.getInhospstate().equals("1")) {
            serviceSubtask.setVisitDeptCode(patMedInhosp1.getLeaveldeptcode());
            serviceSubtask.setVisitDeptName(patMedInhosp1.getLeaveldeptname());
            } else if (patMedInhosp1.getInhospstate().equals("0")) {
                serviceSubtask.setVisitDeptCode(patMedInhosp1.getDeptcode());
                serviceSubtask.setVisitDeptName(patMedInhosp1.getDeptname());
                if(type==5){
                    serviceSubtask.setVisitDeptCode(patMedInhosp1.getHospitaldistrictcode());
                    serviceSubtask.setVisitDeptName(patMedInhosp1.getHospitaldistrictname());
                }
            }
        } else if (type == 2) {
            serviceSubtask.setVisitDeptCode(patMedInhosp1.getLeavehospitaldistrictcode());
            serviceSubtask.setVisitDeptName(patMedInhosp1.getLeavehospitaldistrictname());
@@ -1035,6 +1054,8 @@
                if (type == 1) patMedInhosp2.setDeptcheckFlag("1");
                if (type == 2) patMedInhosp2.setWardcheckFlag("1");
                if (type == 3) patMedInhosp2.setDiagcheckFlag("1");
                if (type == 4) patMedInhosp2.setInDeptcheckFlag("1");
                if (type == 5) patMedInhosp2.setInWardcheckFlag("1");
                patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
            } else {
                //生成子任务失败,
@@ -1044,6 +1065,8 @@
                if (type == 1) patMedInhosp2.setDeptcheckFlag("2");
                if (type == 2) patMedInhosp2.setWardcheckFlag("2");
                if (type == 3) patMedInhosp2.setDiagcheckFlag("2");
                if (type == 4) patMedInhosp2.setInDeptcheckFlag("2");
                if (type == 5) patMedInhosp2.setInWardcheckFlag("2");
                patMedInhosp2.setRemark("生成子任务失败 " + type);
                patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
            }
@@ -1235,7 +1258,7 @@
    //封装serviceSubtask
    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config) {
    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, Integer type) {
        //增加serviceTask判空
//        if(Objects.isNull(serviceTask)){
//            return null;
@@ -1251,6 +1274,15 @@
        serviceSubtask.setDrname(patMedInhosp1.getDrname());
        serviceSubtask.setDeptcode(patMedInhosp1.getLeaveldeptcode());
        serviceSubtask.setDeptname(patMedInhosp1.getLeaveldeptname());
        serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
        if (type == 4 || type == 5) {
            //设置入院的
            serviceSubtask.setDeptcode(patMedInhosp1.getDeptcode());
            serviceSubtask.setDeptname(patMedInhosp1.getDeptname());
            serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getHospitaldistrictcode());
            serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getHospitaldistrictname());
        }
        serviceSubtask.setLeaveicd10code(patMedInhosp1.getLeaveicd10code());
        serviceSubtask.setLeavediagname(patMedInhosp1.getDiagname());
        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
@@ -1270,6 +1302,7 @@
        serviceSubtask.setServiceType(serviceTask.getServiceType());
        serviceSubtask.setPreachform(serviceTask.getPreachform());
        serviceSubtask.setHospType("2");
        if (type == 4 || type == 5) serviceSubtask.setHospType("6");
        serviceSubtask.setCreateTime(new Date());
        serviceSubtask.setUpdateTime(new Date());
        serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());
@@ -1277,18 +1310,25 @@
        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
        serviceSubtask.setUpdateTime(new Date());
        //如果是宣教就设置为7
        if (serviceTask.getServiceType().equals("17")) serviceSubtask.setTaskSituation(7);
        //设置发送时间
        if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);
        Date newDate = null;
        if (!Objects.isNull(patMedInhosp1.getEndtime())) {
            newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());
        } else {
            //如果等于4,说明是入院宣教,入院不可能有endTime
            if (type != 4 && type != 5) {
            patMedInhosp1.setDeptcheckFlag("2");
            patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& è¯¥æ‚£è€…疾病出院时间为空,出院记录ID为:" + patMedInhosp1.getInhospid());
            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
            //如果出院时间为空,则返回一个新对象
            return new ServiceSubtask();
        }
            //入院宣教,基本当天或隔天就要发出
            newDate = addDays(new Date(), serviceTask.getSendDay().intValue());
        }
        serviceSubtask.setLongSendTime(newDate);
        serviceSubtask.setVisitTime(newDate);
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -1,7 +1,10 @@
package com.smartor.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.SysUserDept;
@@ -11,12 +14,14 @@
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.smartor.domain.*;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.IPatMedOuthospService;
import com.smartor.service.IServiceExternalService;
import lombok.extern.slf4j.Slf4j;
import netscape.javascript.JSObject;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -1860,40 +1865,18 @@
    @Override
    public Map<String, Object> query360PatInfolwl(Long patid, SysUser sysUser) {
        Map<String, Object> result = new HashMap<>();
        PatArchive pa = patArchiveMapper.selectPatArchiveByPatid(patid);
        if (pa.getPatientno() == null) {
            result.put("url", null);
            result.put("error", "患者编号为空");
            return result;
        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
        Map<String, String> headers = buildRequestHeaders();
        Map<String, Object> requestParams = buildRequestParams(sysUser,patArchive);
        String result = HttpUtils.sendPostByHeader("http://cfdata.nhyfy.cn/kapi/hbos-h360/open/getNoLoginUrl", new Gson().toJson(requestParams), headers);
        log.info("============result的值为:{}",result);
        Gson gson = new Gson();
        Map<String, Object> map = null;
        if (result != null) {
            map = gson.fromJson(result, new TypeToken<Map<String, Object>>() {
            }.getType());
        }
        StringBuffer sbf = new StringBuffer("http://cfdata.nhyfy.cn/cfdata/h360/patient-summary?");
        sbf.append("referer=thirdparty");
        sbf.append("&encode=1");
        sbf.append("&patientMainIndexNum=" + AesUtils.encrypt(pa.getPatientno()));
        sbf.append("&workId=" + AesUtils.encrypt(sysUser.getUserName()));
        sbf.append("&workName=" + AesUtils.encrypt(sysUser.getNickName()));
        sbf.append("&hisOrgCode=" + AesUtils.encrypt("20001001"));
        sbf.append("&hisOrgName=" + AesUtils.encrypt("南华大学附属第一医院"));
        sbf.append("&hisHosCode=" + AesUtils.encrypt("30001002"));
        sbf.append("&hisHosName=" + AesUtils.encrypt("南华大学附属第一医院"));
        String url360 = null;
        try {
            url360 = URLEncoder.encode(sbf.toString(), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
        StringBuffer stringBuffer = new StringBuffer("http://cfdata.nhyfy.cn/cfdata/login/nologin?");
        //accountNo对接人不给,先空着---------------------------------------------------------------
        stringBuffer.append("accountNo=");
        stringBuffer.append("&source=third");
        stringBuffer.append("&redirectUrl=" + url360);
        result.put("url", stringBuffer.toString());
        result.put("error", null);
        return result;
        return map;
    }
    private Boolean getType(String type, Map dataMap) {
@@ -2072,4 +2055,35 @@
        return ageMap;
    }
    private Map<String, String> buildRequestHeaders() {
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        headers.put("app-key", "ak-0p5Qi0J1I4AL67ztEYQL1j9v");
        return headers;
    }
    private Map<String, Object> buildRequestParams(SysUser sysUser,PatArchive patArchive) {
        Map<String, Object> requestParams = new HashMap<>();
        requestParams.put("key",  sysUser.getUserName());
        requestParams.put("windowOpen", false);
        requestParams.put("isShowHeader", false);
        requestParams.put("encode", 1);
        Map<String, Object> params = new HashMap<>();
        //病历号
        params.put("patientMainIndexNum", patArchive.getPatientno());
        params.put("sourceSystem", "pacs");
        params.put("workId", sysUser.getUserName());
        params.put("workName", sysUser.getNickName());
        params.put("hisDepName", sysUser.getDeptName());
        params.put("hisDepCode", sysUser.getDeptCode());
        params.put("hisOrgName", "南华大学附属第一医院");
        params.put("hisOrgCode", "20001001");
        params.put("hisHosName", "南华大学附属第一医院");
        params.put("hisHosCode", "30001002");
        requestParams.put("params", params);
        return requestParams;
    }
}
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -167,10 +167,15 @@
                sysDept.setUpdateTime(new Date());
                sysDept.setUpdateBy(null);
                SysDept sysDept1 = sysDeptMapper.selectDeptByCode(sysDept.getDeptCode(), sysDept.getOrgid());
                // æŒ‰ deptCode + orgid + campusid æŸ¥é‡ï¼Œé¿å…è·¨é™¢åŒºç§‘室重复
                SysDept sysDept1 = sysDeptMapper.selectDeptByCodeAndCampus(sysDept.getDeptCode(), sysDept.getOrgid(), sysDept.getCampusid());
                if (Objects.isNull(sysDept1)) {
                    try {
                    int i = sysDeptMapper.insertDept(sysDept);
                    log.info("ServiceExternalServiceImpl---addDeptInfo是否新增成功:{}", i);
                    } catch (org.springframework.dao.DuplicateKeyException e) {
                        log.warn("【queryDeptWardAreaInfoList】科室已存在(并发插入),跳过:deptCode={}, orgid={}, campusid={}", sysDept.getDeptCode(), sysDept.getOrgid(), sysDept.getCampusid());
                    }
                } else {
                    sysDept.setDeptId(sysDept1.getDeptId());
                    int i = sysDeptMapper.updateDept(sysDept);
@@ -248,19 +253,29 @@
            sysUser.setUpdateTime(new Date());
            sysUser.setUpdateBy("admin");
            sysUser.setCreateBy("admin");
            sysUser.setCreateBy("admin");
            sysUser.setOrgid("" + getLongValue(dataItem, "orgId"));
            BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
            sysUser.setPassword(passwordEncoder.encode(userPwd));
            SysUser sysUser1 = sysUser2Mapper.selectUserByUserName(sysUser.getUserName());
            if (ObjectUtils.isNotEmpty(sysUser1)) {
                //由人工维护的字段是不需要更新的
                //已存在:由人工维护的字段是不需要更新的,orgid/campusid保留原值不覆盖
                sysUser.setSearchscope(null);
                sysUser.setPassword(null);
                sysUser.setUserId(sysUser1.getUserId());
                sysUser.setOrgid(null);
                sysUser.setCampusid(null);
                sysUser2Mapper.updateUser(sysUser);
            } else {
                try {
                sysUser2Mapper.insertUser(sysUser);
                } catch (org.springframework.dao.DuplicateKeyException e) {
                    //并发插入场景:重新查询获取已存在记录,避免重复
                    log.warn("【queryHospUserInfoList】用户已存在(并发插入),跳过:userName={}", sysUser.getUserName());
                    SysUser existingUser = sysUser2Mapper.selectUserByUserName(sysUser.getUserName());
                    if (ObjectUtils.isNotEmpty(existingUser)) {
                        sysUser.setUserId(existingUser.getUserId());
                    }
                }
            }
            // å¤„理用户与部门的关系
@@ -275,8 +290,8 @@
                        log.info("------businessDeptMap是否有值:{}", businessDeptMap);
                        String hisDeptId = getStringValue(businessDeptMap, "deptId");
                        log.info("------hisDeptId是否有值:{}, reqVO.getOrgId()的值为:{}", hisDeptId, reqVO.getCampusId());
                        //在这里,hisDeptId就是deptCode
                        SysDept sysDept = sysDeptMapper.selectDeptByCode(hisDeptId, reqVO.getOrgId());
                        //在这里,hisDeptId就是deptCode,按院区+机构查科室,避免跨院区查错
                        SysDept sysDept = sysDeptMapper.selectDeptByCodeAndCampus(hisDeptId, reqVO.getOrgId(), reqVO.getCampusId() != null ? reqVO.getCampusId().toString() : null);
                        log.info("------hisDeptId是否有值:{}, reqVO.getCampusId()的值为:{}", hisDeptId, reqVO.getCampusId());
                        if (Objects.isNull(sysDept)) continue;
                        SysUserDept sysUserDept = new SysUserDept();
@@ -585,7 +600,6 @@
        queryInhosp.setSerialnum(StringUtils.trim(patMedInhosp.getSerialnum()));
        queryInhosp.setOrgid(StringUtils.trim(dto.getOrgId()));
        queryInhosp.setInhospstate(cry);
        queryInhosp.setSchemestatus(0L);
        log.info("----------------这里的入参为:{},{}", queryInhosp.getPatno(), queryInhosp.getSerialnum());
        List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
@@ -596,8 +610,10 @@
                queryInhosp.setInhospstate("3");
                List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
                if (CollectionUtils.isNotEmpty(patMedInhospList)) {
                    //如果预入院不为空,则进行修改
                    //如果预入院不为空,则进行修改(预入院→入院)
                    patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                    patMedInhospService.updatePatMedInhosp(patMedInhosp);
                    log.info("由预入院更新为入院:serialnum={}", patMedInhosp.getSerialnum());
                } else {
                    //如果出院不为空,则不进行处理
                    queryInhosp.setInhospstate("1");
@@ -674,6 +690,8 @@
            if (locked == null || Boolean.TRUE.equals(locked)) {
                try {
                    queryInhosp.setInhospstate(null);
                    queryInhosp.setSchemestatus(null);
                    queryInhosp.setPatno(null);
                    List<PatMedInhosp> patMedInhospList3 = patMedInhospService.selectPatMedInhosp(queryInhosp);
                    if (CollectionUtils.isEmpty(patMedInhospList3)) {
                        try {
@@ -726,12 +744,12 @@
        }
        if ("1".equals(cry)) {
            patMedInhosp.setInhospstate("1");
            if (CollectionUtils.isNotEmpty(dto.getDiagnosisList()) && dto.getDiagnosisList().size() > 0) {
                for (ServiceSLTDDiagnosisResDTO diagnosis : dto.getDiagnosisList()) {
                    if (diagnosis.getIsMainDiagnosis() == 1) {
                        patMedInhosp.setLeavediagname(diagnosis.getDiagnosisDictName() == null ? "" : diagnosis.getDiagnosisDictName());
                        patMedInhosp.setLeaveicd10code(diagnosis.getDiagnosisDictCode() == null ? "" : diagnosis.getDiagnosisDictCode());
                    }
            ServiceSLTDDiagnosisResDTO mainDischargeDiagnosis = dto.getMainDischargeDiagnosis();
            log.info("-----------mainDischargeDiagnosis的值有了吗?{}", mainDischargeDiagnosis);
            if (!Objects.isNull(mainDischargeDiagnosis)) {
                if (mainDischargeDiagnosis.getIsMainDiagnosis() == 1) {
                    patMedInhosp.setLeavediagname(StringUtils.defaultString(mainDischargeDiagnosis.getDiagnosisDictName(), ""));
                    patMedInhosp.setLeaveicd10code(StringUtils.defaultString(mainDischargeDiagnosis.getDiagnosisDictCode(), ""));
                }
            }
        }
@@ -792,18 +810,46 @@
    private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {
        List<PatArchive> existingArchives = null;
        // ä¼˜å…ˆæŒ‰ patientno ç²¾ç¡®æŸ¥é‡ï¼ŒæŸ¥ä¸åˆ°å†æŒ‰ idcardno æŸ¥é‡ï¼ˆAND条件会漏查同一人不同patientno的情况)
        if (dto.getPatientId() != null) {
        // ç¬¬ä¸€æ­¥ï¼šæŒ‰ patientno ç²¾ç¡®æŸ¥é‡ï¼ˆä¸Žæ’入时使用的 medicalRecordNo ä¸€è‡´ï¼‰
        String patientno = dto.getMedicalRecordNo() == null ? null : String.valueOf(dto.getMedicalRecordNo());
        if (StringUtils.isNotEmpty(patientno)) {
            PatArchive queryByPatientNo = new PatArchive();
            queryByPatientNo.setPatientno(String.valueOf(dto.getPatientId()));
            queryByPatientNo.setIdcardno(StringUtils.isNotEmpty(dto.getIdCardNo()) ? dto.getIdCardNo().trim() : null);
            queryByPatientNo.setPatientno(patientno);
            existingArchives = patArchiveService.selectPatArchiveList(queryByPatientNo);
        }
        // ç¬¬äºŒæ­¥ï¼šæŒ‰ patientno æŸ¥ä¸åˆ°æ—¶ï¼ŒæŒ‰ idcardno æŸ¥é‡ï¼ˆåˆ†æ­¥OR,避免AND条件漏查)
        if (CollectionUtils.isEmpty(existingArchives) && StringUtils.isNotEmpty(dto.getIdCardNo())) {
            PatArchive queryByIdCard = new PatArchive();
            queryByIdCard.setIdcardno(dto.getIdCardNo().trim());
            existingArchives = patArchiveService.selectPatArchiveList(queryByIdCard);
        }
        // ç¬¬ä¸‰æ­¥ï¼šæŒ‰ patidHis æŸ¥é‡ï¼ˆå…¼å®¹æ—§æ•°æ®ï¼Œæ—§æ•°æ®å¯èƒ½ä»¥ patientId å­˜ä¸º patientno)
        if (CollectionUtils.isEmpty(existingArchives) && dto.getPatientId() != null) {
            PatArchive queryByPatidHis = new PatArchive();
            queryByPatidHis.setPatientno(String.valueOf(dto.getPatientId()));
            existingArchives = patArchiveService.selectPatArchiveList(queryByPatidHis);
        }
        PatArchive patArchive = buildPatientArchive(dto);
        if (CollectionUtils.isEmpty(existingArchives)) {
            try {
            patArchiveService.insertPatArchive(patArchive);
            log.debug("【processPatientArchive】新增患者档案,患者编号:{}", patArchive.getPatientno());
            } catch (org.springframework.dao.DuplicateKeyException e) {
                log.warn("【processPatientArchive】患者档案已存在(并发插入),跳过:patientno={}, idcardno={}", patArchive.getPatientno(), patArchive.getIdcardno());
                // å¹¶å‘插入场景,重新查询获取已存在的记录
                PatArchive queryRetry = new PatArchive();
                queryRetry.setPatientno(patArchive.getPatientno());
                existingArchives = patArchiveService.selectPatArchiveList(queryRetry);
                if (CollectionUtils.isNotEmpty(existingArchives)) {
                    patArchive.setId(existingArchives.get(0).getId());
                    patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag());
                    patArchive.setNotrequiredreason(existingArchives.get(0).getNotrequiredreason());
                }
            }
        } else {
            patArchive.setId(existingArchives.get(0).getId());
            patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag());
@@ -897,7 +943,17 @@
        dto.setCostNatureName(getStringValue(dataItem, "costNatureName"));
        dto.setCostNatureCode(getStringValue(dataItem, "costNatureCode"));
        dto.setFurtherConsultationStatus(getIntegerValue(dataItem, "furtherConsultationStatus"));
        Object mainDiagObj = dataItem.get("mainDischargeDiagnosis");
        if (mainDiagObj instanceof Map) {
            Map<String, Object> mainDiagMap = (Map<String, Object>) mainDiagObj;
            ServiceSLTDDiagnosisResDTO mainDiag = new ServiceSLTDDiagnosisResDTO();
            mainDiag.setDiagnosisDictCode(getStringValue(mainDiagMap, "diagnosisDictCode"));
            mainDiag.setDiagnosisDictName(getStringValue(mainDiagMap, "diagnosisDictName"));
            mainDiag.setDiagnosisCategory(getStringValue(mainDiagMap, "diagnosisCategory"));
            mainDiag.setRecordType(getIntegerValue(mainDiagMap, "recordType"));
            mainDiag.setIsMainDiagnosis(getIntegerValue(mainDiagMap, "isMainDiagnosis"));
            dto.setMainDischargeDiagnosis(mainDiag);
        }
        Object contactsObj = dataItem.get("residentContactInfos");
        if (contactsObj instanceof List) {
            dto.setResidentContactInfos(parseContacts((List<?>) contactsObj));
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -734,19 +734,20 @@
    @Override
    public Map<String, Object> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq) {
        log.error("selectPatQuesTionResult的入参为:{}", serviceSubTaskQueryReq);
        log.info("selectPatQuesTionResult的入参为:{}", serviceSubTaskQueryReq);
        Map<String, Object> map = new HashMap<>();
        //获取本次的问答结果
        Map<String, Object> scriptInfoByCondition = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom());
        Map<String, Object> scriptInfoByCondition = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom(), serviceSubTaskQueryReq.getSubId());
        map = getMap(scriptInfoByCondition, serviceSubTaskQueryReq.getSubId(), serviceSubTaskQueryReq.getPatid());
        //获取上次的问答结果
        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubTaskQueryReq.getSubId());
        map.put("upScriptResult", null);
        map.put("templateName", serviceSubtask.getTemplatename());
        map.put("upTaskName", null);
        if (ObjectUtils.isNotEmpty(serviceSubtask) && serviceSubtask.getUpid() != null) {
            Map<String, Object> scriptInfoByCondition2 = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom());
            Map<String, Object> scriptInfoByCondition2 = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom(),serviceSubTaskQueryReq.getSubId());
            Map<String, Object> map1 = getMap(scriptInfoByCondition2, Long.valueOf(serviceSubtask.getUpid()), serviceSubTaskQueryReq.getPatid());
            if (!map1.isEmpty()) {
                map.put("upScriptResult", map1.get("scriptResult"));
@@ -761,10 +762,8 @@
    private Map<String, Object> getMap(Map<String, Object> scriptInfoByCondition, Long subid, Long patid) {
        Map<String, Object> map = new HashMap<>();
        if (ObjectUtils.isNotEmpty(scriptInfoByCondition) && ObjectUtils.isNotEmpty(scriptInfoByCondition.get("script"))) {
//            log.error("-----------scriptInfoByCondition的值为:{}", scriptInfoByCondition);
            if (scriptInfoByCondition.get("type").equals("1")) {
                List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOS = (List<IvrTaskTemplateScriptVO>) scriptInfoByCondition.get("script");
//                List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScriptVOS, IvrLibaTemplateScriptVO.class);
                for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVOS) {
                    Map<String, String> scriptResult = getScriptResult(subid, patid, ivrTaskTemplateScriptVO.getId());
                    if (ObjectUtils.isNotEmpty(scriptResult)) {
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -521,6 +521,23 @@
        return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
    }
    @Override
    public Boolean updateTemplate(ServiceSubtaskTemplateVO serviceSubtaskTemplateVO) {
        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskTemplateVO.getSubId());
        if (serviceSubtask == null || serviceSubtask.getSendstate() != 2L)
            throw new BaseException("该任务已发送给患者,不能再进行修改模板");
        Integer taskTempid = svyTaskTemplateService.saveOrUpdateTemplate(serviceSubtaskTemplateVO.getSvyTaskTemplateVO());
        if (taskTempid == null) return false;
        String tempName = svyTaskTemplateService.selectSvyTaskTemplateBySvyid(Long.valueOf(taskTempid)).getSvyname();
        serviceSubtask.setTemplateid(taskTempid.longValue());
        serviceSubtask.setTemplatename(tempName);
        serviceSubtask.setUpdateBy(serviceSubtaskTemplateVO.getUpdateBy());
        serviceSubtask.setLibtemplateid(serviceSubtaskTemplateVO.getSvyTaskTemplateVO().getTemplateid());
        return updateServiceSubtask(serviceSubtask);
    }
    /**
     * æ‰¹é‡åˆ é™¤å•一任务(随访)
     *
@@ -657,12 +674,6 @@
                    serviceTaskoper.setOrgid(serviceTask.getOrgid());
                    serviceTaskoper.setCreateTime(new Date());
                    if (StringUtils.isNotEmpty(serviceTaskVO.getOplevelcode())) {
//                        String[] opcodes = serviceTaskVO.getOpcode().split(",");
//                        for (String opcode : opcodes) {
//                            serviceTaskoper.setOpcode(opcode);
//                            log.info("----serviceTaskoper的值为:{}", serviceTaskoper);
//                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
//                        }
                        log.info("----serviceTaskoper的值为:{}", serviceTaskoper);
                        serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
                    }
@@ -771,8 +782,7 @@
                }
            }
        }
        else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {
        } else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {
            //任务修改
            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
@@ -870,13 +880,19 @@
                    serviceTaskdiag.setUpdateTime(new Date());
                    if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
                        String[] icd10codes = serviceTaskVO.getIcd10code().split(",");
                        for (String icdcode : icd10codes) {
                        String[] icd10names = serviceTaskVO.getIcd10name().split(",");
                        if (icd10codes.length != icd10names.length) {
                            throw new BaseException("疾病编码和疾病名称数量不一致");
                        }
                        for (int i = 0; i < icd10codes.length; i++) {
                            //先查询一下是否存在
                            ServiceTaskdiag serviceTaskdiag2 = new ServiceTaskdiag();
                            serviceTaskdiag2.setTaskId(serviceTaskVO.getTaskid());
                            serviceTaskdiag2.setIcd10code(icdcode);
                            serviceTaskdiag2.setIcd10code(icd10codes[i]);
                            serviceTaskdiag2.setIcd10name(icd10names[i]);
                            List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagService.selectServiceTaskdiagList(serviceTaskdiag2);
                            serviceTaskdiag.setIcd10code(icdcode);
                            serviceTaskdiag.setIcd10code(icd10codes[i]);
                            serviceTaskdiag.setIcd10name(icd10names[i]);
                            log.info("----serviceTaskdiag更新的值为:{}", serviceTaskdiag);
                            if (CollectionUtils.isNotEmpty(serviceTaskdiags)) {
                                serviceTaskdiag.setId(serviceTaskdiags.get(0).getId());
smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
@@ -173,7 +173,7 @@
        ServiceSubtaskEntity serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskEntity.class);
        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
        for (ServiceSubtask ss : serviceSubtaskList) {
            log.error("sfSend需要移除的subId为:{}", ss.getId().toString());
            log.info("sfSend需要移除的subId为:{}", ss.getId().toString());
            redisCache.removeElementFromList("cache-exist", ss.getId().toString());
            redisCache.removeElementFromList("cache-0", ss.getId().toString());
            redisCache.removeElementFromList("cache-1", ss.getId().toString());
@@ -230,21 +230,18 @@
    }
    @Override
    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom) {
    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom, Long subId) {
        Map<String, Object> map = new HashMap<>();
        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
        if (subId != null) {
            serviceSubtaskVO.setSubId(subId);
        } else {
        serviceSubtaskVO.setPatid(patid);
        serviceSubtaskVO.setTaskid(taskid);
        serviceSubtaskVO.setSendstate(3L);
        }
        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
//        //查询患者是否重覆做题
//        if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {
//            Long submit = selectServiceSubtaskList.get(0).getSubmit();
//            if (submit == 1L) {
//                map.put("submit", "1");
//                return map;
//            }
//        }
        //通过任务ID获取模板ID
        ServiceTask serviceTask = selectServiceTaskByTaskid(taskid);
        if (serviceTask == null) {
@@ -253,12 +250,12 @@
        List info = new ArrayList();
        if (serviceTask.getType().equals("1")) {
            //随访
            log.error("文本随访问题");
            log.info("文本随访问题");
            info = sfInfo(serviceTask, patid, patfrom);
        } else if (serviceTask.getType().equals("2")) {
            //问卷
            log.error("文本问卷问题");
            info = wjInfo(serviceTask, patid, isFinish, patfrom);
            log.info("文本问卷问题");
            info = wjInfo(serviceTask, patid, isFinish, patfrom, subId);
        } else {
            //宣教
            info = xjInfo(Long.valueOf(serviceTask.getLibtemplateid()), taskid, patid, isFinish);
@@ -373,7 +370,7 @@
                    }
                }
                //替换患者个人信息数据
                log.error("问题id:{},   é—®é¢˜å†…容:{}", svyTaskTemplateScriptVO.getId(), svyTaskTemplateScriptVO.getScriptContent());
                log.info("问题id:{},   é—®é¢˜å†…容:{}", svyTaskTemplateScriptVO.getId(), svyTaskTemplateScriptVO.getScriptContent());
                if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptContent()) && ObjectUtils.isNotEmpty(patArchive)) {
                    svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
                    svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
@@ -466,12 +463,16 @@
     * @param patid
     * @return
     */
    private List wjInfo(ServiceTask serviceTask, Long patid, Boolean isFinish, String patfrom) {
    private List wjInfo(ServiceTask serviceTask, Long patid, Boolean isFinish, String patfrom, Long subId) {
        //用户点击了外链,就算他领取了
        //这样做会有一个问题,如果固定任务,会出现一个任务里,有多个该患者
        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
        if (subId != null) {
            serviceSubtaskVO.setSubId(subId);
        } else {
        serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
        serviceSubtaskVO.setPatid(patid);
        }
        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
        if (CollectionUtils.isNotEmpty(serviceSubtaskList) && serviceSubtaskList.size() == 1) {
            if (serviceSubtaskList.get(0).getSendstate() == 3 && isFinish == true) {
@@ -485,6 +486,8 @@
        //通过模板ID获取问题信息
        SvyTaskTemplateScript svyTaskTemplateScript = new SvyTaskTemplateScript();
        svyTaskTemplateScript.setTemplateID(Long.valueOf(serviceTask.getTemplateid()));
        if (CollectionUtils.isNotEmpty(serviceSubtaskList) && serviceSubtaskList.get(0).getTemplateid() != null)
            svyTaskTemplateScript.setTemplateID(serviceSubtaskList.get(0).getTemplateid());
        svyTaskTemplateScript.setDelFlag("0");
        List<SvyTaskTemplateScript> svyTaskTemplateScripts = svyTaskTemplateScriptMapper.selectSvyTaskTemplateScriptList(svyTaskTemplateScript);
        if (CollectionUtils.isEmpty(svyTaskTemplateScripts) || svyTaskTemplateScripts.size() == 0) {
@@ -529,7 +532,7 @@
                    }
                }
                //替换患者个人信息数据
                log.error("问题id:{},   é—®é¢˜å†…容:{}", svyTaskTemplateScriptVO.getId(), svyTaskTemplateScriptVO.getScriptContent());
                log.info("问题id:{},   é—®é¢˜å†…容:{}", svyTaskTemplateScriptVO.getId(), svyTaskTemplateScriptVO.getScriptContent());
                if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptContent()) && ObjectUtils.isNotEmpty(patArchive)) {
                    svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
                    svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateServiceImpl.java
@@ -59,23 +59,16 @@
        svyLibTemplateReq.setSvyname(svyLibTemplate.getSvyname());
        svyLibTemplateReq.setOrgid(svyLibTemplate.getOrgid());
        List<SvyLibTemplate> svyLibTemplates = svyLibTemplateMapper.selectSvyLibTemplateList(svyLibTemplateReq);
        for (SvyLibTemplate svyLibTemplate1 : svyLibTemplates) {
            SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
            svyLibTemplateScript.setSvyid(svyLibTemplate1.getSvyid());
            svyLibTemplateScript.setOrgid(svyLibTemplate1.getOrgid());
            List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
            for (SvyLibTemplateScript svyLibTemplateScript1 : svyLibTemplateScripts) {
                if (svyLibTemplateScript1.getScriptType().equals("1") || svyLibTemplateScript1.getScriptType().equals("2")) {
                    SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
                    svyLibTemplateTargetoption.setScriptid(svyLibTemplateScript1.getId());
                    svyLibTemplateTargetoption.setOrgid(svyLibTemplateScript1.getOrgid());
                    List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
                    svyLibTemplateScript1.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
                }
            }
            svyLibTemplate1.setSvyTemplateLibScripts(svyLibTemplateScripts);
        svyLibTemplatesCycle(svyLibTemplates);
        return svyLibTemplates;
        }
    @Override
    public List<SvyLibTemplate> getSviLibTemplateByDeptCode(TemplateDeptVO templateDeptVO) {
        if (templateDeptVO.getType() == null) templateDeptVO.setType(1L);
        if (templateDeptVO.getDeptType() == null) templateDeptVO.setDeptType("1");
        List<SvyLibTemplate> svyLibTemplates = svyLibTemplateMapper.selectSvyLibTemplateListByDeptCode(templateDeptVO);
        svyLibTemplatesCycle(svyLibTemplates);
        return svyLibTemplates;
    }
@@ -317,4 +310,34 @@
            svyLibTemplateTargetoptionMapper.deleteSvyLibTemplateTargetoptionById(svyLibTemplateTargetoption.getId());
        }
    }
    private void svyLibTemplatesCycle(List<SvyLibTemplate> svyLibTemplates) {
        for (SvyLibTemplate svyLibTemplate1 : svyLibTemplates) {
            SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
            svyLibTemplateScript.setSvyid(svyLibTemplate1.getSvyid());
            svyLibTemplateScript.setOrgid(svyLibTemplate1.getOrgid());
            List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
            // æ”¶é›†æ‰€æœ‰éœ€è¦æŸ¥è¯¢é€‰é¡¹çš„scriptId(scriptType为1或2的题目才需要选项)
            List<Long> scriptIds = svyLibTemplateScripts.stream().filter(s -> "1".equals(s.getScriptType()) || "2".equals(s.getScriptType())).map(SvyLibTemplateScript::getId).filter(Objects::nonNull).collect(Collectors.toList());
            // æ‰¹é‡æŸ¥è¯¢æ‰€æœ‰é€‰é¡¹ï¼ŒæŒ‰scriptId分组
            Map<Long, List<SvyLibTemplateTargetoption>> optionMap;
            if (CollectionUtils.isNotEmpty(scriptIds)) {
                List<SvyLibTemplateTargetoption> allOptions = svyLibTemplateTargetoptionMapper.selectByScriptIds(scriptIds, svyLibTemplate1.getOrgid());
                optionMap = allOptions.stream().collect(Collectors.groupingBy(SvyLibTemplateTargetoption::getScriptid));
            } else {
                optionMap = new HashMap<>();
            }
            // å°†é€‰é¡¹åˆ†é…åˆ°å¯¹åº”题目
            for (SvyLibTemplateScript svyLibTemplateScript1 : svyLibTemplateScripts) {
                if ("1".equals(svyLibTemplateScript1.getScriptType()) || "2".equals(svyLibTemplateScript1.getScriptType())) {
                    svyLibTemplateScript1.setSvyLibTemplateTargetoptions(optionMap.getOrDefault(svyLibTemplateScript1.getId(), new ArrayList<>()));
                }
            }
            svyLibTemplate1.setSvyTemplateLibScripts(svyLibTemplateScripts);
        }
    }
}
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -266,6 +266,7 @@
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        where del_flag = 0
        <if test="subId != null ">and id = #{subId}</if>
        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml
@@ -255,17 +255,6 @@
        service_task.orgid from service_task
        where 1=1
            and service_task.del_flag = 0
            <!--            and taskid in (-->
            <!--            select task_id from service_taskdept-->
            <!--            where 1=1-->
            <!--                <if test="leaveldeptcodes != null and leaveldeptcodes.size()>0">-->
            <!--                    and dept_code in-->
            <!--                    <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","-->
            <!--                             close=")">-->
            <!--                        #{leaveldeptcode}-->
            <!--                    </foreach>-->
            <!--                </if>-->
            <!--            )-->
            <if test="taskName != null  and taskName != ''">and service_task.task_name like concat('%', #{taskName},
                '%')
            </if>
@@ -326,6 +315,20 @@
            <if test="leavehospitaldistrictname != null  ">and service_task.leavehospitaldistrictname =
                #{leavehospitaldistrictname}
            </if>
        <if test="leavehospitaldistrictcodes!=null and leavehospitaldistrictcodes.size()>0">
            AND service_task.leavehospitaldistrictcode IN
            <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                     close=")">
                #{leavehospitaldistrictcode}
            </foreach>
        </if>
        <if test="leaveldeptcodes!=null and leaveldeptcodes.size()>0">
            AND service_task.deptcode IN
            <foreach collection="leaveldeptcodes" item="deptcode" open="(" separator=","
                     close=")">
                #{deptcode}
            </foreach>
        </if>
            <if test="leavehospitaldistrictcode != null  ">and service_task.leavehospitaldistrictcode =
                #{leavehospitaldistrictcode}
            </if>
smartor/src/main/resources/mapper/smartor/SvyLibTemplateMapper.xml
@@ -133,6 +133,58 @@
            <if test="description != null  and description != ''">and b.icd10name like concat('%', #{description}, '%')
            </if>
        order by a.create_time desc
    </select>
    <select id="selectSvyLibTemplateListByDeptCode" parameterType="com.smartor.domain.TemplateDeptVO"
            resultMap="SvyLibTemplateResult">
        SELECT
        a.svyid,
        a.long_temp,
        a.conclusion,
        a.instruction,
        a.prologue,
        a.categoryid,
        a.svycode,
        a.svyname,
        a.description,
        a.introduce,
        a.submitprompt,
        a.templateid,
        a.version,
        a.centerlibrarycode,
        a.centerlibraryid,
        a.islocal,
        a.isenable,
        a.orgid,
        a.del_flag,
        a.create_by,
        a.create_time,
        a.update_by,
        a.update_time,
        a.isupload,
        a.upload_time,
        a.dept_names,
        a.value_type,
        a.reply,
        a.campus,
        a.suitway,
        a.script_score,
        a.score_type,
        a.otherdata,
        a.guid
        FROM
        svy_lib_template a
        LEFT JOIN template_dept b ON a.del_flag = 0
        AND a.svyid = b.tempid
        where a.del_flag=0
          and b.del_flag=0
        <if test="deptCode != null ">and b.dept_code = #{deptCode}</if>
        <if test="deptType != null ">and b.dept_type = #{deptType}</if>
        <if test="type != null">and b.type=#{type}</if>
        <if test="tempid != null">and a.svyid=#{tempid}</if>
        order by a.create_time desc
        <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
    </select>
    <select id="selectSvyLibTemplateBySvyid" parameterType="Long" resultMap="SvyLibTemplateResult">
smartor/src/main/resources/mapper/smartor/SvyLibTemplateTargetoptionMapper.xml
@@ -268,4 +268,14 @@
            #{id}
        </foreach>
    </delete>
    <select id="selectByScriptIds" resultMap="SvyLibTemplateTargetoptionResult">
        <include refid="selectSvyLibTemplateTargetoptionVo"/>
        where del_flag = 0
        and scriptid in
        <foreach item="scriptId" collection="scriptIds" open="(" separator="," close=")">
            #{scriptId}
        </foreach>
        <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if>
    </select>
</mapper>
smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml
@@ -154,6 +154,36 @@
        </if>
    </select>
    <select id="selectDeptByCodeAndCampus" parameterType="string" resultMap="SysDeptResult">
        select d.dept_id,
        d.parent_id,
        d.type,
        d.campusid,
        d.dept_code,
        d.dept_type,
        d.ancestors,
        d.dept_name,
        d.order_num,
        d.leader,
        d.phone,
        d.email,
        d.orgid,
        d.his_dept_id,
        d.his_parent_id,
        d.status
        from sys_dept d
        where del_flag = 0
        <if test="deptCode != null and deptCode != ''">
            AND dept_code = #{deptCode}
        </if>
        <if test="orgid != null and orgid != ''">
            AND orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            AND campusid = #{campusid}
        </if>
    </select>
    <select id="checkDeptExistUser" parameterType="Long" resultType="int">
        select count(1)
        from sys_user