陈昶聿
9 小时以前 5dcd6447f315e821727508cd26bf05f8220b39c8
Merge branch 'master' into master-手术随访
已修改14个文件
已添加1个文件
248 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailTraceController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailTrace.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/VO/DetailTraceDealVO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskDetailTraceVO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/PatMedOuthospMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailTraceMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailTraceService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailTraceServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailTraceMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailTraceController.java
@@ -12,6 +12,7 @@
import com.smartor.domain.ServiceSubtaskDetailTrace;
import com.smartor.domain.VO.DetailTraceDealVO;
import com.smartor.domain.VO.SatisfactionExceptConfigQuestionReqVO;
import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO;
import com.smartor.service.IServiceSubtaskDetailTraceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -45,14 +46,14 @@
    //@PreAuthorize("@ss.hasPermi('smartor:ltrace:list')")
    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
    @PostMapping("/list")
    public Map<String, Object> list(@RequestBody ServiceSubtaskDetailTrace serviceSubtaskDetailTrace) {
        Integer offset = PageUtils.getOffset(serviceSubtaskDetailTrace.getPageNum(), serviceSubtaskDetailTrace.getPageSize());
        serviceSubtaskDetailTrace.setPageNum(offset);
        List<ServiceSubtaskDetailTrace> list = serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(serviceSubtaskDetailTrace);
    public Map<String, Object> list(@RequestBody ServiceSubtaskDetailTraceVO serviceSubtaskDetailTraceVO) {
        Integer offset = PageUtils.getOffset(serviceSubtaskDetailTraceVO.getPageNum(), serviceSubtaskDetailTraceVO.getPageSize());
        serviceSubtaskDetailTraceVO.setPageNum(offset);
        List<ServiceSubtaskDetailTrace> list = serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(serviceSubtaskDetailTraceVO);
        serviceSubtaskDetailTrace.setPageNum(null);
        serviceSubtaskDetailTrace.setPageSize(null);
        List<ServiceSubtaskDetailTrace> total = serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(serviceSubtaskDetailTrace);
        serviceSubtaskDetailTraceVO.setPageNum(null);
        serviceSubtaskDetailTraceVO.setPageSize(null);
        List<ServiceSubtaskDetailTrace> total = serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(serviceSubtaskDetailTraceVO);
        return getDataTable3(CollectionUtils.isNotEmpty(total) ? total.size() : 0, list);
    }
@@ -71,7 +72,7 @@
        detailTraceDealVO.setPageNum(null);
        detailTraceDealVO.setPageSize(null);
        Map<String, Object> totalResult = serviceSubtaskDetailTraceService.tracedeallist(detailTraceDealVO);
        List<?> totalRows = (List<?>) totalResult.get("rows");
        List<?> totalRows = (List<?>) totalResult.get("detailTraceDealDTOList");
        //将总数信息添加到结果中
        result.put("totalException", totalResult.get("totalException"));
@@ -99,8 +100,8 @@
    //@PreAuthorize("@ss.hasPermi('smartor:ltrace:export')")
    @Log(title = "随访任务异常记录跟踪", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ServiceSubtaskDetailTrace serviceSubtaskDetailTrace) {
        List<ServiceSubtaskDetailTrace> list = serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(serviceSubtaskDetailTrace);
    public void export(HttpServletResponse response, ServiceSubtaskDetailTraceVO serviceSubtaskDetailTraceVO) {
        List<ServiceSubtaskDetailTrace> list = serviceSubtaskDetailTraceService.selectServiceSubtaskDetailTtraceList(serviceSubtaskDetailTraceVO);
        ExcelUtil<ServiceSubtaskDetailTrace> util = new ExcelUtil<ServiceSubtaskDetailTrace>(ServiceSubtaskDetailTrace.class);
        util.exportExcel(response, list, "随访任务异常记录跟踪数据");
    }
@@ -136,6 +137,7 @@
    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
    @PostMapping("/edit")
    public AjaxResult edit(@RequestBody ServiceSubtaskDetailTrace serviceSubtaskDetailTrace) {
        if (serviceSubtaskDetailTrace.getPatdescJson() != null) serviceSubtaskDetailTrace.setPatdesc(serviceSubtaskDetailTrace.getPatdescJson().toJSONString());
        return toAjax(serviceSubtaskDetailTraceService.updateServiceSubtaskDetailTtrace(serviceSubtaskDetailTrace));
    }
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -342,19 +342,38 @@
                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                    log.debug("【dealHisData】省立同德“入院”結束采集数据,院区:{}", cid);
//                    log.debug("【dealHisData】省立同德“门急诊”开始采集数据,院区:{}", cid);
//                    serviceSLTDInhospReqVO.setStartHeadTime(null);
//                    serviceSLTDInhospReqVO.setStartTailTime(null);
//                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
//                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
//                    serviceSLTDInhospReqVO.setStatusList(null);
//                    List<String> list1 = new ArrayList<>();
//                    list1.add("FH0108.01");
//                    list1.add("FH0108.03");
//                    serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
//                    log.debug("【dealHisData】省立同德“门急诊”采集数据入参:{}", serviceSLTDInhospReqVO);
//                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
//                    log.debug("【dealHisData】省立同德“门急诊”束采集数据,院区:{}", cid);
                    // é—¨æ€¥è¯Šåˆ†é¡µé‡‡é›†ï¼šæ¯é¡µ1000条,直到无数据为止
                    log.debug("【dealHisData】省立同德“门急诊”开始分页采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setStartHeadTime(null);
                    serviceSLTDInhospReqVO.setStartTailTime(null);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
                    serviceSLTDInhospReqVO.setStatusList(null);
                    List<String> list1 = new ArrayList<>();
                    list1.add("FH0108.01");
                    list1.add("FH0108.03");
                    serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
                    long outpPage = 1L;
                    final long OUTP_PAGE_SIZE = 1000L;
                    while (true) {
                        serviceSLTDInhospReqVO.setCurrent(outpPage);
                        serviceSLTDInhospReqVO.setSize(OUTP_PAGE_SIZE);
                        log.debug("【dealHisData】省立同德“门急诊”采集第{}页数据,院区:{}", outpPage, cid);
                        List<ServiceSLTDInhospResDTO> outpResult = serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                        if (CollectionUtils.isEmpty(outpResult)) {
                            log.debug("【dealHisData】省立同德“门急诊”第{}页无数据,采集结束,院区:{}", outpPage, cid);
                            break;
                        }
                        log.debug("【dealHisData】省立同德“门急诊”第{}页采集{}条,院区:{}", outpPage, outpResult.size(), cid);
                        if (outpResult.size() < OUTP_PAGE_SIZE) {
                            break;
                        }
                        outpPage++;
                    }
                    // æ¸…除分页参数,避免影响后续出入院查询
                    serviceSLTDInhospReqVO.setCurrent(null);
                    serviceSLTDInhospReqVO.setSize(null);
                    log.debug("【dealHisData】省立同德“门急诊”分页采集完成,院区:{}", cid);
                    log.debug("【dealHisData】省立同德“出院”开始采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setStartHeadTime(null);
smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailTrace.java
@@ -2,6 +2,7 @@
import java.util.Date;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
@@ -205,6 +206,12 @@
     */
    @ApiModelProperty("包含患者姓名、患者电话、就诊科室等")
    @Excel(name = "包含患者姓名、患者电话、就诊科室等")
    private JSONObject patdescJson;
    /**
     * åŒ…含患者姓名、患者电话、就诊科室等
     */
    @ApiModelProperty("包含患者姓名、患者电话、就诊科室等")
    @Excel(name = "包含患者姓名、患者电话、就诊科室等")
    private String patdesc;
    /**
smartor/src/main/java/com/smartor/domain/VO/DetailTraceDealVO.java
@@ -34,6 +34,13 @@
    @ApiModelProperty("处理科室名称")
    @Excel(name = "处理科室名称")
    private String todeptname;
    /**
     * é—®é¢˜ç±»åž‹:语音、问卷
     */
    @ApiModelProperty("问题类型:语音、问卷")
    @Excel(name = "模板类型:1.语音 2.问卷")
    private Integer templateType;
    /**
smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskDetailTraceVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.smartor.domain.VO;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.smartor.domain.ServiceSubtaskDetailTrace;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ªå¯¹è±¡ service_subtask_detail_trace
 *
 * @author lihu
 * @date 2026-03-24
 */
@Data
@ApiModel("随访任务异常记录跟踪")
public class ServiceSubtaskDetailTraceVO extends ServiceSubtaskDetailTrace {
    private static final long serialVersionUID = -6807897351219920003L;
    /**
     * é—®é¢˜ID集合
     */
    @ApiModelProperty("问题ID")
    @Excel(name = "问题ID集合")
    private List<Long> scriptids;
}
smartor/src/main/java/com/smartor/mapper/PatMedOuthospMapper.java
@@ -40,6 +40,11 @@
    int existsInTable(@Param("tableName") String tableName, @Param("id") Long id);
    /**
     * æŒ‰ serialnum æŸ¥è¯¢æŒ‡å®šåˆ†è¡¨ä¸­æ˜¯å¦å·²å­˜åœ¨è¯¥è®°å½•,用于插入前去重
     */
    int countBySerialnum(@Param("tableName") String tableName, @Param("serialnum") String serialnum);
    /**
     * æ›´æ–°åˆ°æŒ‡å®šåˆ†è¡¨ï¼ˆç”¨äºŽè·¯ç”±åˆ°æ­£ç¡®åˆ†è¡¨ï¼‰
     */
    int updateInTable(@Param("tableName") String tableName, @Param("record") PatMedOuthosp record);
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailTraceMapper.java
@@ -3,6 +3,7 @@
import java.util.List;
import com.smartor.domain.VO.DetailTraceDealVO;
import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO;
import org.apache.ibatis.annotations.Mapper;
import com.smartor.domain.ServiceSubtaskDetailTrace;
@@ -28,7 +29,7 @@
     * @param ServiceSubtaskDetailTtrace éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ª
     * @return éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ªé›†åˆ
     */
    public List<ServiceSubtaskDetailTrace> selectServiceSubtaskDetailTtraceList(ServiceSubtaskDetailTrace ServiceSubtaskDetailTtrace);
    public List<ServiceSubtaskDetailTrace> selectServiceSubtaskDetailTtraceList(ServiceSubtaskDetailTraceVO ServiceSubtaskDetailTtrace);
    public List<ServiceSubtaskDetailTrace> tracedeallist(DetailTraceDealVO detailTraceDealVO);
smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailTraceService.java
@@ -7,6 +7,7 @@
import com.smartor.domain.ServiceSubtaskDetailTrace;
import com.smartor.domain.VO.DetailTraceDealVO;
import com.smartor.domain.VO.SatisfactionExceptConfigQuestionReqVO;
import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO;
import org.springframework.web.bind.annotation.RequestBody;
/**
@@ -28,10 +29,10 @@
    /**
     * æŸ¥è¯¢éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ªåˆ—è¡¨
     *
     * @param serviceSubtaskDetailTtrace éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ª
     * @param subtaskDetailTraceVO éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ª
     * @return éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ªé›†åˆ
     */
    public List<ServiceSubtaskDetailTrace> selectServiceSubtaskDetailTtraceList(ServiceSubtaskDetailTrace serviceSubtaskDetailTtrace);
    public List<ServiceSubtaskDetailTrace> selectServiceSubtaskDetailTtraceList(ServiceSubtaskDetailTraceVO subtaskDetailTraceVO);
    /**
     * å¼‚常问题处理情况查询
smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -172,16 +172,24 @@
            log.error("门急就诊时间不能为空");
            return 0;
        }
        // éœ€è¦æ’入到哪个表,根据就诊时间的日期来定,如果根据就诊时间来确定的表不存在,则存在pat_med_outhosp表中
        String targetTable = resolveTargetTable(patMedOuthosp.getAdmitdate());
        if (targetTable == null) {
            return 0;
        }
        // æ’入前按 serialnum æŸ¥é‡ï¼Œé˜²æ­¢é‡å¤é‡‡é›†å¯¼è‡´é‡å¤å…¥åº“
        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);
                return 0;
            }
        }
        patMedOuthosp.setCreateTime(DateUtils.getNowDate());
        patMedOuthosp.setUpdateTime(DateUtils.getNowDate());
        patMedOuthosp.setGuid(UUID.randomUUID().toString());
        //需要插入到哪个表,根据就诊时间的日期来定,如果根据就诊时间来确定的表不存在,则存在pat_med_outhosp表中
        String targetTable = resolveTargetTable(patMedOuthosp.getAdmitdate());
        if (targetTable != null) {
            log.info("[insert] è·¯ç”±åˆ°åˆ†è¡¨: {}", targetTable);
            return patMedOuthospMapper.insertIntoTable(targetTable, patMedOuthosp);
        }
        return 0;
        log.info("[insert] è·¯ç”±åˆ°åˆ†è¡¨: {}", targetTable);
        return patMedOuthospMapper.insertIntoTable(targetTable, patMedOuthosp);
    }
    /**
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -393,6 +393,13 @@
        params.put("inpatientArea", null);
//        params.put("status", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList().get(0) : null);
        params.put("status", null);
        // åˆ†é¡µå‚数(门急诊分页采集时使用)
        if (reqVO.getCurrent() != null) {
            params.put("current", reqVO.getCurrent());
        }
        if (reqVO.getSize() != null) {
            params.put("size", reqVO.getSize());
        }
        return params;
    }
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -1,6 +1,7 @@
package com.smartor.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.redis.RedisCache;
@@ -10,6 +11,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.*;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.IServiceSubtaskAnswerService;
@@ -898,7 +900,12 @@
            subtaskDetailTrace.setAsrtext(stt.getOptioncontent());
            subtaskDetailTrace.setRecordpath(null);
            subtaskDetailTrace.setPatid(selectServiceSubtaskList.get(0).getPatid());
            subtaskDetailTrace.setPatdesc(selectServiceSubtaskList.get(0).getSendname() + "," + selectServiceSubtaskList.get(0).getPhone() + "," + selectServiceSubtaskList.get(0).getDeptname());
            JSONObject patdescJson1 = new JSONObject();
            patdescJson1.put("sendname", selectServiceSubtaskList.get(0).getSendname());
            patdescJson1.put("phone", selectServiceSubtaskList.get(0).getPhone());
            patdescJson1.put("sex", selectServiceSubtaskList.get(0).getSex() == null ? selectServiceSubtaskList.get(0).getSex() == 1 ? "男" : "女" : null);
            patdescJson1.put("age", selectServiceSubtaskList.get(0).getAge());
            subtaskDetailTrace.setPatdesc(patdescJson1.toJSONString());
            subtaskDetailTrace.setTodeptcode(svyTaskTemplateScriptVO.getDutyDeptCode());
            subtaskDetailTrace.setTodeptname(svyTaskTemplateScriptVO.getDutyDeptName());
            subtaskDetailTrace.setOrgid(selectServiceSubtaskList.get(0).getOrgid());
@@ -909,10 +916,10 @@
            traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
        } else if (ObjectUtils.isNotEmpty(stt) && stt.getIsabnormal() == 1L) {
            //这里主要是怕医护人员把异常选项改成了非异常的,这里就需要查一下这条数据是不是在满意度异常表,如果在,则要删除
            ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
            subtaskDetailTrace.setSubId(serviceSubtaskDetailVO.getSubId());
            subtaskDetailTrace.setScriptid(svyTaskTemplateScriptVO.getId());
            List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = traceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTrace);
            ServiceSubtaskDetailTraceVO subtaskDetailTraceVO = new ServiceSubtaskDetailTraceVO();
            subtaskDetailTraceVO.setSubId(serviceSubtaskDetailVO.getSubId());
            subtaskDetailTraceVO.setScriptid(svyTaskTemplateScriptVO.getId());
            List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = traceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTraceVO);
            if (CollectionUtils.isNotEmpty(serviceSubtaskDetailTraces)) {
                traceService.deleteServiceSubtaskDetailTtraceById(serviceSubtaskDetailTraces.get(0).getId());
            }
@@ -1103,7 +1110,7 @@
            subtaskDetailTrace.setDetailId(serviceSubtaskDetail.getId());
            subtaskDetailTrace.setSubId(serviceSubtaskDetailVO.getSubId());
            subtaskDetailTrace.setTaskid(serviceSubtaskDetailVO.getTaskid());
            subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getTemplateID()!=null ? Long.valueOf(ivrTaskTemplateScriptVO.getTemplateID()) : null);
            subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getTemplateID() != null ? Long.valueOf(ivrTaskTemplateScriptVO.getTemplateID()) : null);
            subtaskDetailTrace.setTemplatequestionnum(ivrTaskTemplateScriptVO.getSort() == null ? null : Long.valueOf(ivrTaskTemplateScriptVO.getSort()));
            //获取分类信息
@@ -1131,7 +1138,12 @@
            subtaskDetailTrace.setAsrtext(ivrTaskTemplateScriptVO.getIvrtext());
            subtaskDetailTrace.setRecordpath(null);
            subtaskDetailTrace.setPatid(selectServiceSubtaskList.get(0).getPatid());
            subtaskDetailTrace.setPatdesc(selectServiceSubtaskList.get(0).getSendname() + "," + selectServiceSubtaskList.get(0).getPhone() + "," + selectServiceSubtaskList.get(0).getDeptname());
            JSONObject patdescJson2 = new JSONObject();
            patdescJson2.put("sendname", selectServiceSubtaskList.get(0).getSendname());
            patdescJson2.put("phone", selectServiceSubtaskList.get(0).getPhone());
            patdescJson2.put("sex", selectServiceSubtaskList.get(0).getSex() == null ? selectServiceSubtaskList.get(0).getSex() == 1 ? "男" : "女" : null);
            patdescJson2.put("age", selectServiceSubtaskList.get(0).getAge());
            subtaskDetailTrace.setPatdesc(patdescJson2.toJSONString());
            subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode());
            subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName());
            subtaskDetailTrace.setOrgid(selectServiceSubtaskList.get(0).getOrgid());
@@ -1142,10 +1154,10 @@
            traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
        } else if (stt.getIsabnormal() != null && stt.getIsabnormal() != 1L) {
            //这里主要是怕医护人员把异常选项改成了非异常的,这里就需要查一下这条数据是不是在满意度异常表,如果在,则要删除
            ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
            subtaskDetailTrace.setSubId(serviceSubtaskDetailVO.getSubId());
            subtaskDetailTrace.setScriptid(ivrTaskTemplateScriptVO.getScriptID() == null ? ivrTaskTemplateScriptVO.getId() : ivrTaskTemplateScriptVO.getScriptID());
            List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = traceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTrace);
            ServiceSubtaskDetailTraceVO subtaskDetailTraceVO = new ServiceSubtaskDetailTraceVO();
            subtaskDetailTraceVO.setSubId(serviceSubtaskDetailVO.getSubId());
            subtaskDetailTraceVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID() == null ? ivrTaskTemplateScriptVO.getId() : ivrTaskTemplateScriptVO.getScriptID());
            List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = traceService.selectServiceSubtaskDetailTtraceList(subtaskDetailTraceVO);
            if (CollectionUtils.isNotEmpty(serviceSubtaskDetailTraces)) {
                traceService.deleteServiceSubtaskDetailTtraceById(serviceSubtaskDetailTraces.get(0).getId());
            }
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailTraceServiceImpl.java
@@ -3,6 +3,7 @@
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson2.JSON;
import com.github.pagehelper.util.StringUtil;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
@@ -10,6 +11,7 @@
import com.smartor.domain.DTO.DetailTraceDealDTO;
import com.smartor.domain.VO.DetailTraceDealVO;
import com.smartor.domain.VO.SatisfactionExceptConfigQuestionReqVO;
import com.smartor.domain.VO.ServiceSubtaskDetailTraceVO;
import com.smartor.mapper.ServiceSubtaskDetailMapper;
import com.smartor.mapper.ServiceSubtaskDetailTraceMapper;
import com.smartor.mapper.SvyLibScriptCategoryMapper;
@@ -62,12 +64,18 @@
    /**
     * æŸ¥è¯¢éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ªåˆ—è¡¨
     *
     * @param serviceSubtaskDetailTrace éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ª
     * @param serviceSubtaskDetailTraceVO éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ª
     * @return éšè®¿ä»»åŠ¡å¼‚å¸¸è®°å½•è·Ÿè¸ª
     */
    @Override
    public List<ServiceSubtaskDetailTrace> selectServiceSubtaskDetailTtraceList(ServiceSubtaskDetailTrace serviceSubtaskDetailTrace) {
        return serviceSubtaskDetailTraceMapper.selectServiceSubtaskDetailTtraceList(serviceSubtaskDetailTrace);
    public List<ServiceSubtaskDetailTrace> selectServiceSubtaskDetailTtraceList(ServiceSubtaskDetailTraceVO serviceSubtaskDetailTraceVO) {
        List<ServiceSubtaskDetailTrace> serviceSubtaskDetailTraces = serviceSubtaskDetailTraceMapper.selectServiceSubtaskDetailTtraceList(serviceSubtaskDetailTraceVO);
        for (ServiceSubtaskDetailTrace serviceSubtaskDetailTrace : serviceSubtaskDetailTraces) {
            if (StringUtils.isNotEmpty(serviceSubtaskDetailTrace.getPatdesc())) {
                serviceSubtaskDetailTrace.setPatdescJson(JSON.parseObject(serviceSubtaskDetailTrace.getPatdesc()));
            }
        }
        return serviceSubtaskDetailTraces;
    }
    @Override
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -1,6 +1,7 @@
package com.smartor.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -576,14 +577,14 @@
            if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) {
                serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid());
                serviceTask.setLibtemplatename(serviceTaskVO.getLibtemplatename());
            }else {
            } else {
                if (ObjectUtils.isNotEmpty(serviceTaskVO.getSvyTaskTemplateVO())) {
                    serviceTask.setLibtemplateid(""+serviceTaskVO.getSvyTaskTemplateVO().getTemplateid());
                    serviceTask.setLibtemplatename(""+serviceTaskVO.getLibtemplatename());
                    serviceTask.setLibtemplateid("" + serviceTaskVO.getSvyTaskTemplateVO().getTemplateid());
                    serviceTask.setLibtemplatename("" + serviceTaskVO.getLibtemplatename());
                }
                if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
                    serviceTask.setLibtemplateid(""+serviceTaskVO.getIvrTaskTemplateVO().getLibtemplateid());
                    serviceTask.setLibtemplatename(""+serviceTaskVO.getIvrTaskTemplateVO().getLibtemplatename());
                    serviceTask.setLibtemplateid("" + serviceTaskVO.getIvrTaskTemplateVO().getLibtemplateid());
                    serviceTask.setLibtemplatename("" + serviceTaskVO.getIvrTaskTemplateVO().getLibtemplatename());
                }
            }
            if (serviceTaskVO.getTemplateid() != null) {
@@ -1591,7 +1592,12 @@
                            subtaskDetailTrace.setAsrtext(phoneCallReqYQVO.getAsrtext());
                            subtaskDetailTrace.setRecordpath(phoneCallReqYQVO.getRecordpath());
                            subtaskDetailTrace.setPatid(serviceSubtask.getPatid());
                            subtaskDetailTrace.setPatdesc(serviceSubtask.getSendname() + "," + serviceSubtask.getPhone() + "," + serviceSubtask.getDeptname());
                            JSONObject patdescJson = new JSONObject();
                            patdescJson.put("sendname", serviceSubtask.getSendname());
                            patdescJson.put("phone", serviceSubtask.getPhone());
                            patdescJson.put("age", serviceSubtask.getAge());
                            patdescJson.put("sex", serviceSubtask.getSex() != null ? serviceSubtask.getSex() == 1 ? "男" : "女" : null);
                            subtaskDetailTrace.setPatdesc(patdescJson.toJSONString());
                            subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode());
                            subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName());
                            subtaskDetailTrace.setOrgid(serviceSubtask.getOrgid());
@@ -2659,9 +2665,9 @@
        if (visitCount != null && visitCount > 1) {
            serviceSubtaskStatistic = getStatisticAgain(serviceSubtaskList, followUpCountStyle);
        }else if(visitCount != null && visitCount == 1){
        } else if (visitCount != null && visitCount == 1) {
            serviceSubtaskStatistic = getStatisticFirst(serviceSubtaskList, followUpCountStyle);
        }else {
        } else {
            //格式化为两位小数的百分比
            DecimalFormat percentFormat = new DecimalFormat("##.##%");
            serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
@@ -2921,6 +2927,7 @@
    /**
     * é¦–次随访统计
     *
     * @param serviceSubtaskList
     * @param followUpCountStyle
     * @return
@@ -3082,6 +3089,7 @@
    /**
     * å†æ¬¡éšè®¿ç»Ÿè®¡
     *
     * @param serviceSubtaskList
     * @param followUpCountStyle
     * @return
smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
@@ -447,6 +447,13 @@
        WHERE id = #{id}
    </select>
    <!-- æŒ‰ serialnum æŸ¥è¯¢æŒ‡å®šåˆ†è¡¨ä¸­æ˜¯å¦å·²å­˜åœ¨è¯¥è®°å½•,用于插入前去重 -->
    <select id="countBySerialnum" resultType="int">
        SELECT COUNT(*)
        FROM ${tableName}
        WHERE serialnum = #{serialnum}
    </select>
    <update id="updateInTable" parameterType="map">
        update ${tableName}
        <trim prefix="SET" suffixOverrides=",">
smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailTraceMapper.xml
@@ -108,7 +108,7 @@
        from service_subtask_detail_trace
    </sql>
    <select id="selectServiceSubtaskDetailTtraceList" parameterType="com.smartor.domain.ServiceSubtaskDetailTrace"
    <select id="selectServiceSubtaskDetailTtraceList" parameterType="com.smartor.domain.VO.ServiceSubtaskDetailTraceVO"
            resultMap="ServiceSubtaskDetailTtraceResult">
        <include refid="selectServiceSubtaskDetailTtraceVo"/>
        where del_flag=0
@@ -160,8 +160,11 @@
        <if test="valueType != null  and valueType != ''">
            and value_type = #{valueType}
        </if>
        <if test="scriptid != null ">
            and scriptid = #{scriptid}
        <if test="scriptids != null ">
            and scriptid in
            <foreach item="scriptid" collection="scriptids" open="(" separator="," close=")">
                #{scriptid}
            </foreach>
        </if>
        <if test="answerps != null  and answerps != ''">
            and answerps = #{answerps}
@@ -268,6 +271,9 @@
        <if test="type != null  and type != ''">
            and type = #{type}
        </if>
        <if test="templateType != null">
            and template_type = #{templateType}
        </if>
    </select>