已重命名1个文件
已修改6个文件
146 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -14,6 +14,7 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.PreachFormEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.StringUtils;
@@ -36,14 +37,12 @@
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -58,6 +57,11 @@
@RestController
@RequestMapping("/smartor/serviceSubtask")
public class ServiceSubtaskController extends BaseController {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.setAutoGrowCollectionLimit(1024); // æˆ– 2048、4096 ç­‰
    }
    @Autowired
    private IServiceSubtaskService serviceSubtaskService;
@@ -213,24 +217,31 @@
    //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
    @Log(title = "单一任务(随访宣教)", businessType = BusinessType.EXPORT)
    @PostMapping("/patItemExport")
    public void patItemExport(HttpServletResponse response, @RequestBody ServiceSubtaskEntity serviceSubtaskVO) {
    public void patItemExport(HttpServletResponse response, ServiceSubtaskEntity serviceSubtaskVO) {
        LoginUser loginUser = getLoginUser();
        SysUser user = loginUser.getUser();
        serviceSubtaskVO.setOrgid(user.getOrgid());
        List<ServiceSubtaskRes> serviceSubtaskList = null;
        if (serviceSubtaskVO != null) {
            if (serviceSubtaskVO.getPageNum() != null && serviceSubtaskVO.getPageSize() != null)
                PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);
        }
        List<ServiceSubtaskExprot> serviceSubtaskExprots = null;
        List<ServiceSubtaskExport> serviceSubtaskExports = null;
        if (!CollectionUtils.isEmpty(serviceSubtaskList)) {
            serviceSubtaskExprots = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExprot.class);
            for (ServiceSubtaskExprot serviceSubtaskExprot : serviceSubtaskExprots) {
                String pf = PreachFormEnum.getDescByCode(serviceSubtaskExprot.getPreachform());
                serviceSubtaskExprot.setPreachform(pf);
            serviceSubtaskExports = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExport.class);
            for (ServiceSubtaskExport serviceSubtaskExport : serviceSubtaskExports) {
                String pf = PreachFormEnum.getDescByCode(serviceSubtaskExport.getPreachform());
                serviceSubtaskExport.setPreachform(pf);
                //计算出院天数
                if (!Objects.isNull(serviceSubtaskExport.getEndtime())) {
                    Integer endDay = DateUtils.differentDaysByMillisecond(serviceSubtaskExport.getEndtime(), new Date());
                    serviceSubtaskExport.setEndDay(endDay);
                }
            }
        }
        ExcelUtil<ServiceSubtaskExprot> util = new ExcelUtil<ServiceSubtaskExprot>(ServiceSubtaskExprot.class);
        util.exportExcel(response, serviceSubtaskExprots, "患者随访信息表单");
        ExcelUtil<ServiceSubtaskExport> util = new ExcelUtil<ServiceSubtaskExport>(ServiceSubtaskExport.class);
        util.exportExcel(response, serviceSubtaskExports, "患者随访信息表单");
    }
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -319,7 +319,6 @@
                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
                    List<String> list = new ArrayList<>();
//                    list.add("FH0108.02");
                    list.add("FH0109.22");
                    list.add("FH0109.23");
                    list.add("FH0109.53");
smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/domain/ServiceSubtaskExprot.java ÐÞ¸Ä
@@ -8,8 +8,6 @@
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * å•一任务(随访)对象 ivr_taskcall
@@ -17,9 +15,9 @@
 * @author ruoyi
 * @date 2024-02-02
 */
@ApiModel(value = "ServiceSubtaskExprot", description = "单一随访任务入参")
@ApiModel(value = "ServiceSubtaskExport", description = "单一随访任务入参")
@Data
public class ServiceSubtaskExprot extends BaseEntity {
public class ServiceSubtaskExport extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
@@ -32,21 +30,21 @@
    /**
     * å‘送人
     */
    @Excel(name = " å‘送人 ")
    @Excel(name = " å§“名 ")
    @ApiModelProperty(value = "发送人")
    private String sendname;
    /**
     * åˆ›å»ºè€…
     * å‘送状态
     */
    @Excel(name = "随访人")
    private String updateBy;
    @Excel(name = " ä»»åŠ¡çŠ¶æ€ ")
    @ApiModelProperty(value = "发送状态 1 è¢«é¢†å–(在任务中是新建,在服务中是被领取)  2 å¾…发送  3 å·²å‘送  4 ä¸æ‰§è¡Œ  5 å‘送失败 6 å·²å®Œæˆ 7 è¶…æ—¶(人工)")
    private Long sendstate;
    /**
     * å®Œæˆæ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " å®Œæˆæ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "完成时间")
    private Date finishtime;
@@ -54,9 +52,16 @@
     * å‡ºé™¢æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " å‡ºé™¢æ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd")
    @Excel(name = " å‡ºé™¢æ—¥æœŸ ", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "出院时间")
    private Date endtime;
    /**
     * åº”随访日期
     */
    @Excel(name = "应随访日期",dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "应随访日期")
    private Date visitTime;
    /**
@@ -66,6 +71,15 @@
    @ApiModelProperty(value = "医生姓名")
    private String drname;
    /**
     * éšè®¿äººå‘˜
     */
    @Excel(name = "随访人员")
    private String updateBy;
    @Excel(name = "出院天数", suffix = "天")
    @ApiModelProperty(value = "出院天数")
    private Integer endDay;
    /**
     * èº«ä»½è¯å·
@@ -117,8 +131,8 @@
    /**
     * å®£æ•™å½¢å¼ :文本、图片、语音、视频、混合
     */
    @Excel(name = "任务执行方式")
    @ApiModelProperty(value = "任务形式(1,人工 2,纸质  3,电话  4,短信  5.微信公众号 6.微信小程序 7.支付宝小程序  8.智能机器人  9.钉钉   10.导入)")
    @Excel(name = "任务执行方式")
    private String preachform;
smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -181,7 +181,7 @@
        if (org.apache.commons.lang3.StringUtils.isNotBlank(patMedOuthosp.getSerialnum())) {
            int exists = patMedOuthospMapper.countBySerialnum(targetTable, patMedOuthosp.getSerialnum());
            if (exists > 0) {
                log.debug("[insert] serialnum={} å·²å­˜åœ¨äºŽè¡¨ {},跳过插入", patMedOuthosp.getSerialnum(), targetTable);
                log.info("[insert] serialnum={} å·²å­˜åœ¨äºŽè¡¨ {},跳过插入", patMedOuthosp.getSerialnum(), targetTable);
                return 0;
            }
        }
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -457,11 +457,21 @@
    }
    private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, String campusId) {
        for (String type : types)
        // é—¨è¯Š(FH0108.01)和急诊(FH0108.03)在业务上是同一类数据,共用同一个 resultList。
        // è‹¥ types åŒæ—¶åŒ…含两者,outHospitalDate ä¼šè¢«è°ƒç”¨ä¸¤æ¬¡å¯¼è‡´é‡å¤å…¥åº“。
        // å› æ­¤åªè¦ types ä¸­å«æœ‰ä»»æ„ä¸€ä¸ªé—¨æ€¥è¯Šç±»åž‹ï¼Œå°±åªå¤„理一次。
        boolean outpProcessed = false;
        for (String type : types) {
            switch (type) {
                case "FH0108.01":
                    log.info("【parseResponseData】解析门诊数据");
                    outHospitalDate(resultList);
                case "FH0108.03":
                    if (!outpProcessed) {
                        log.info("【parseResponseData】解析门急诊数据,types={}", types);
                        outHospitalDate(resultList);
                        outpProcessed = true;
                    } else {
                        log.info("【parseResponseData】门急诊数据已处理,跳过 type={}", type);
                    }
                    break;
                case "FH0109.26":
                    log.info("【parseResponseData】解析住院数据");
@@ -483,14 +493,11 @@
                    log.info("【parseResponseData】解析预住院(其他)数据");
                    inHospitalDate(resultList, cry);
                    break;
//                case "FH0108.03":
//                    log.info("【parseResponseData】解析急诊数据");
//                    outHospitalDate(resultList);
//                    break;
                default:
                    log.warn("【parseResponseData】未知的数据类型:{}", type);
                    break;
            }
        }
    }
    private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
@@ -607,37 +614,38 @@
            }
        } else if (cry.equals("1")) {
//           å‡ºé™¢æ•°æ®å¤„理
            if (CollectionUtils.isEmpty(existingInhosps)) {
                //如果为空,要先判断,预入院是否有值,有值的话则更新
            // å‡ºé™¢æ•°æ®å¤„理
            if (CollectionUtils.isNotEmpty(existingInhosps)) {
                // å·²å­˜åœ¨å‡ºé™¢è®°å½•,直接更新(保持最新数据)
                patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());
                patMedInhospService.updatePatMedInhosp(patMedInhosp);
                log.info("出院记录已存在,执行更新:serialnum={}, orgid={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid());
            } else {
                // ä¸å­˜åœ¨å‡ºé™¢è®°å½•,先查预入院(state=3),再查入院(state=0)
                queryInhosp.setInhospstate("3");
                log.info("-----patMedInhospList进来了不?入参为:{}", queryInhosp);
                log.info("-----查询预入院记录,入参为:{}", queryInhosp);
                List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
                log.info("----patMedInhospList进来了不?返参为:{}", CollectionUtils.isEmpty(patMedInhospList) ? null : patMedInhospList.get(0).getSerialnum());
                log.info("----预入院查询结果:{}", CollectionUtils.isEmpty(patMedInhospList) ? "空" : patMedInhospList.get(0).getSerialnum());
                if (CollectionUtils.isNotEmpty(patMedInhospList)) {
                    //如果预入院不为空,则进行修改
                    // å­˜åœ¨é¢„入院记录,更新为出院状态
                    patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                    patMedInhospService.updatePatMedInhosp(patMedInhosp);
                    log.info("由预入院更新为出院:serialnum={}", patMedInhosp.getSerialnum());
                } else {
                    //如果入院不为空,则进行修改
                    // å†æŸ¥å…¥é™¢è®°å½•(state=0)
                    queryInhosp.setInhospstate("0");
                    patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
                    log.debug("入院查询结果:{}", CollectionUtils.isEmpty(patMedInhospList) ? "空" : patMedInhospList.size());
                    if (CollectionUtils.isNotEmpty(patMedInhospList)) {
                        // å­˜åœ¨å…¥é™¢è®°å½•,更新为出院状态
                        patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                        patMedInhospService.updatePatMedInhosp(patMedInhosp);
                    }
                }
                //如果都为空,则进行新增
                if (CollectionUtils.isEmpty(patMedInhospList)) {
                    //如果入院不为空,则进行修改
                    queryInhosp.setInhospstate("0");
                    log.debug("出院queryInhosp入参为:{}", queryInhosp);
                    List<PatMedInhosp> patMedInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
                    log.debug("出院patMedInhospList返参为:{}", CollectionUtils.isEmpty(patMedInhosps) ? null : patMedInhosps.size());
                    if (CollectionUtils.isNotEmpty(patMedInhosps)) {
                        patMedInhospService.updatePatMedInhosp(patMedInhosp);
                        log.info("由入院更新为出院:serialnum={}", patMedInhosp.getSerialnum());
                    } else {
                        // é¢„入院和入院均不存在,直接新增出院记录
                        try {
                            patMedInhospService.insertPatMedInhosp(patMedInhosp);
                            log.info("新增出院记录:serialnum={}", patMedInhosp.getSerialnum());
                        } catch (org.springframework.dao.DuplicateKeyException e) {
                            log.warn("出院记录已存在,跳过:serialnum={}, orgid={}, state={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), patMedInhosp.getInhospstate());
                        }
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -431,6 +431,7 @@
            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ssVO);
            ServiceSubtask serviceSubtask = new ServiceSubtask();
            serviceSubtask.setId(subid);
            serviceSubtask.setTaskid(tid);
            serviceSubtask.setPatid(pid);
            serviceSubtask.setSubmit(1L);
@@ -847,7 +848,9 @@
        serviceSubtaskDetailVO.setCreateTime(new Date());
        serviceSubtaskDetailVO.setUpdateTime(new Date());
        serviceSubtaskDetailVO.setTemplateType(2);
        serviceSubtaskDetailVO.setLibTemplateid(CollectionUtils.isNotEmpty(selectServiceSubtaskList) ? selectServiceSubtaskList.get(0).getLibtemplateid().intValue() : null);
        serviceSubtaskDetailVO.setLibTemplateid(CollectionUtils.isNotEmpty(selectServiceSubtaskList) ?
                (ObjectUtils.isNotEmpty(selectServiceSubtaskList.get(0).getLibtemplateid()) ?
                        selectServiceSubtaskList.get(0).getLibtemplateid().intValue() : null): null);
        if (ObjectUtils.isNotEmpty(serviceTask)) {
            serviceSubtaskDetailVO.setGuid(serviceTask.getGuid());
            serviceSubtaskDetailVO.setOrgid(serviceTask.getOrgid());
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -1238,6 +1238,9 @@
            <if test="continueContent != null ">continue_content = #{continueContent},</if>
        </trim>
        where patid = #{patid} and taskid = #{taskid}
        <if test="id != null ">
            and id = #{id}
        </if>
    </update>
    <update id="updateServiceSubtaskByTaskGuid" parameterType="com.smartor.domain.ServiceSubtask">