liusheng
2024-12-11 10aaa035f5be0312304d20f022bdb714a8f4900a
代码提交
已添加2个文件
已修改10个文件
798 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchivecontactController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/PatArchivecontact.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskExportVO.java 528 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchivecontactController.java
@@ -5,6 +5,7 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.domain.PatArchivecontact;
@@ -37,10 +38,13 @@
    @ApiOperation("查询患者联系方式列表")
    //@PreAuthorize("@ss.hasPermi('system:archivecontact:list')")
    @PostMapping("/selectPatArchivecontactList")
    public TableDataInfo selectPatArchivecontactlist(@RequestBody PatArchivecontact patArchivecontact) {
    public AjaxResult selectPatArchivecontactlist(@RequestBody PatArchivecontact patArchivecontact) {
        PageUtils.startPageByPost(patArchivecontact.getPageNum(), patArchivecontact.getPageSize());
        if (patArchivecontact.getPatid() == null) {
            return error("患者ID不能为空");
        }
        List<PatArchivecontact> list = patArchivecontactService.selectPatArchivecontactList(patArchivecontact);
        return getDataTable(list);
        return success(list);
    }
    /**
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -8,6 +8,7 @@
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -17,6 +18,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -83,11 +85,13 @@
    //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
    @Log(title = "单一任务(随访宣教)", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ServiceSubtask serviceSubtask) {
        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);
        List<ServiceSubtask> list = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);
        ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);
        util.exportExcel(response, list, "单一任务(随访)数据");
    public void export(HttpServletResponse response, ServiceSubtaskVO serviceSubtaskVO) {
        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);
        if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
            List<ServiceSubtaskExportVO> serviceSubtaskExportVOS = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExportVO.class);
            ExcelUtil<ServiceSubtaskExportVO> util = new ExcelUtil<ServiceSubtaskExportVO>(ServiceSubtaskExportVO.class);
            util.exportExcel(response, serviceSubtaskExportVOS, "随访导出数据");
        }
    }
    /**
@@ -118,6 +122,12 @@
    @PostMapping("/update")
    public AjaxResult update(@RequestBody ServiceSubtask serviceSubtask) {
        return toAjax(serviceSubtaskService.updateServiceSubtask(serviceSubtask));
    }
    @ApiOperation("新增子任务")
    @PostMapping("/addSubTask")
    public AjaxResult addSubTask(@RequestBody ServiceSubtask serviceSubtask) {
        return toAjax(serviceSubtaskService.insertServiceSubtask(serviceSubtask));
    }
    /**
@@ -201,4 +211,17 @@
        return getDataTable(serviceSubtaskService.getSfFzInfoEveryMonth(serviceSubtaskCountReq));
    }
    /**
     * èŽ·å–éšè®¿ç»Ÿè®¡æ¯”ä¾‹
     */
    @ApiOperation("获取随访统计比例")
    @PostMapping("/getSfStatistics")
    public AjaxResult getSfStatistics(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
        if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
            return error("服务类型不能为空");
        }
        return success(serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq));
    }
}
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -608,7 +608,7 @@
                        patArchive.setNotrequiredreason(thiedInhospInfo.getOutWayName());
                    }
                    if (cry.equals("1") && StringUtils.isEmpty(thiedInhospInfo.getOutWayId())) {
                        //如果为4就是死亡
                        //出院方式为空
                        patArchive.setNotrequiredFlag("1");
                        patArchive.setNotrequiredreason("出院方式为空");
                    }
@@ -636,7 +636,9 @@
                    patArchive.setName(thiedInhospInfo.getPatiRecordName());
                    patArchiveService.insertPatArchive(patArchive);
                } else {
                    patArchive = patArchives.get(0);
                    patArchive.setId(patArchives.get(0).getId());
                    patArchiveService.update(patArchive);
//                    patArchive = patArchives.get(0);
                }
                log.error("入参的patArchive:{}", patArchive);
smartor/src/main/java/com/smartor/domain/PatArchivecontact.java
@@ -30,8 +30,8 @@
    /**
     * è”系方式ID
     */
    @Excel(name = " è”系方式ID ")
    @ApiModelProperty(value = "联系方式ID")
    @Excel(name = " æ‚£è€…ID ")
    @ApiModelProperty(value = "患者ID")
    private Long patid;
    /**
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -216,7 +216,7 @@
     * å‘送状态
     */
    @Excel(name = " å‘送状态 ")
    @ApiModelProperty(value = "发送状态 1 è¢«é¢†å–  2 å¾…发送  3 å·²å‘送  4 ä¸æ‰§è¡Œ  5 å‘送失败 6 å·²å®Œæˆ")
    @ApiModelProperty(value = "发送状态 1 æ–°å»º  2 å¾…发送  3 å·²å‘送  4 ä¸æ‰§è¡Œ  5 å‘送失败 6 å·²å®Œæˆ")
    private Long sendstate;
    /**
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
@@ -1,5 +1,6 @@
package com.smartor.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -21,13 +22,18 @@
    @ApiModelProperty(value = "用户ID")
    private Long userId;
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "开始时间")
    private Date startTime;
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "结束时间")
    private Date endTime;
    @ApiModelProperty(value = "服务类型")
    private List<Long> serviceType;
    @ApiModelProperty(value = "病区Code集合")
    private List<String> leavehospitaldistrictcodes;
}
smartor/src/main/java/com/smartor/domain/ServiceSubtaskExportVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,528 @@
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;
/**
 * å•一任务(随访)对象 ivr_tasksingle
 *
 * @author ruoyi
 * @date 2024-02-02
 */
@ApiModel(value = "ServiceSubtask", description = "单一随访任务")
@Data
public class ServiceSubtaskExportVO {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®
     */
    @ApiModelProperty(value = "主键")
    private Long id;
    /**
     * ä»»åŠ¡ID
     */
    @ApiModelProperty(value = "任务ID")
    private Long taskid;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty(value = "备注")
    private String guid;
    /**
     * å¼‚常标识
     */
    @ApiModelProperty(value = "异常标识")
    @Excel(name = " å¼‚常标识 ")
    private String excep;
    /**
     * å‡ºé™¢æ—¶é—´
     */
    @ApiModelProperty(value = "出院时间")
    @Excel(name = " å‡ºé™¢æ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endtime;
    /**
     * å…¥é™¢æ—¶é—´
     */
    @ApiModelProperty(value = "入院时间")
    @Excel(name = " å…¥é™¢æ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date starttime;
    /**
     * æ˜¯å¦æäº¤
     */
    @ApiModelProperty(value = "是否提交:0未提交   1已提交")
    private Long submit;
    /**
     * å‘送人
     */
    @Excel(name = " å‘送人(患者) ")
    @ApiModelProperty(value = "发送人(患者)")
    private String sendname;
    /**
     * æ‰‹æœºå·
     */
    @Excel(name = " æ‰‹æœºå· ")
    @ApiModelProperty(value = "手机号")
    private String phone;
    /**
     * æ‰‹æœºå·
     */
    @Excel(name = " æ‰‹æœºå· ")
    @ApiModelProperty(value = "手机号")
    private String openid;
    /**
     * æ€§åˆ«
     */
    @Excel(name = "  æ€§åˆ«")
    @ApiModelProperty(value = "性别")
    private Long sex;
    /**
     * å¹´é¾„
     */
    @Excel(name = " å¹´é¾„ ")
    @ApiModelProperty(value = "年龄")
    private Long age;
    /**
     * èº«ä»½è¯å·
     */
    @Excel(name = " èº«ä»½è¯å· ")
    @ApiModelProperty(value = "身份证号")
    private String sfzh;
    /**
     * åœ°å€
     */
    @Excel(name = " åœ°å€ ")
    @ApiModelProperty(value = "地址")
    private String addr;
    /**
     * å‘送人详情
     */
    @Excel(name = "  å‘送人详情")
    @ApiModelProperty(value = "发送人详情")
    private String senderdetail;
    /**
     * ä»»åŠ¡ç±»åž‹(门诊,住院,复诊…)
     */
    @Excel(name = "任务类型(0通知、1宣教、2门诊、3出院、4复诊、5体检、6问卷、7医技……)")
    @ApiModelProperty(value = "任务类型(0通知、1宣教、2门诊、3出院、4复诊、5体检、6问卷、7医技……)")
    private String type;
    /**
     * æœåŠ¡ç±»åž‹(1、监测评估;2、出院随访;3、门诊随访;4、宣教关怀;5、复诊通知;6、满意度调查;7、患者报告; 8、其他通知)
     */
    @Excel(name = "服务类型(1、监测评估;2、出院随访;3、门诊随访;4、宣教关怀;5、复诊通知;6、满意度调查;7、患者报告; 8、其他通知)")
    @ApiModelProperty(value = "服务类型(1、监测评估;2、出院随访;3、门诊随访;4、宣教关怀;5、复诊通知;6、满意度调查;7、患者报告; 8、其他通知)")
    private String serviceType;
    /**
     * æ¨¡æ¿ID
     */
    @Excel(name = "  æ¨¡æ¿ID")
    @ApiModelProperty(value = "模板ID")
    private Long templateid;
    /**
     * æ¨¡æ¿å
     */
    @Excel(name = " æ¨¡æ¿å ")
    @ApiModelProperty(value = "拉取时间")
    private String templatename;
    /**
     * å‘处理意见:1暂不处理、2通知就诊、3病情稳定、4人工随访、5失访送UUID
     */
    @Excel(name = " å¤„理意见:1暂不处理、2通知就诊、3病情稳定、4人工随访、5失访 ")
    @ApiModelProperty(value = "处理意见:1暂不处理、2通知就诊、3病情稳定、4人工随访、5失访")
    private String suggest;
    /**
     * å‘送日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " å‘送日期 ", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "发送日期")
    private Date senddate;
    /**
     * ä¸Šåˆå¼€å§‹å‘送时间限制
     */
    @Excel(name = " ä¸Šåˆå¼€å§‹å‘送时间限制 ")
    @ApiModelProperty(value = "上午开始发送时间限制")
    private String sendlimitabegin;
    /**
     * ä¸Šåˆç»“束发送时间限制
     */
    @Excel(name = " ä¸Šåˆç»“束发送时间限制 ")
    @ApiModelProperty(value = "上午结束发送时间限制")
    private String sendlimitaend;
    /**
     * ä¸‹åˆå¼€å§‹å‘送时间限制
     */
    @Excel(name = " ä¸‹åˆå¼€å§‹å‘送时间限制 ")
    @ApiModelProperty(value = "下午开始发送时间限制")
    private String sendlimitpbegin;
    /**
     * ä¸‹åˆç»“束发送时间限制
     */
    @Excel(name = " ä¸‹åˆç»“束发送时间限制 ")
    @ApiModelProperty(value = "下午结束发送时间限制")
    private String sendlimitpend;
    /**
     * æ™šä¸Šå¼€å§‹å‘送时间限制
     */
    @Excel(name = " æ™šä¸Šå¼€å§‹å‘送时间限制 ")
    @ApiModelProperty(value = "晚上开始发送时间限制")
    private String sendlimitnbegin;
    /**
     * æ™šä¸Šç»“束发送时间限制
     */
    @Excel(name = " æ™šä¸Šç»“束发送时间限制 ")
    @ApiModelProperty(value = "晚上结束发送时间限制")
    private String sendlimitnend;
    /**
     * å‘送状态
     */
    @Excel(name = " å‘送状态 ")
    @ApiModelProperty(value = "发送状态 2 å¾…发送  3 å·²å‘送  4 ä¸æ‰§è¡Œ  5 å‘送失败  1 è¢«é¢†å–   6 å·²å®Œæˆ")
    private Long sendstate;
    /**
     * æš‚停状 ï¼š çŠ¶æ€å¦‚æžœå‘ç”Ÿä¿®æ”¹ï¼Œå€¼å°±åŠ 1
     */
    @Excel(name = " æš‚停状 ï¼š çŠ¶æ€å¦‚æžœå‘ç”Ÿä¿®æ”¹ï¼Œå€¼å°±åŠ 1 ")
    @ApiModelProperty(value = "暂停状 ï¼š çŠ¶æ€å¦‚æžœå‘ç”Ÿä¿®æ”¹ï¼Œå€¼å°±åŠ 1")
    private Long stopState;
    /**
     * å‘送UUID
     */
    @Excel(name = " å‘送UUID ")
    @ApiModelProperty(value = "发送UUID")
    private String senduuid;
    /**
     * ç»“æžœ
     */
    @Excel(name = " ç»“æžœ ")
    @ApiModelProperty(value = "结果")
    private String result;
    /**
     * å®Œæˆæ—¶é—´
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "完成时间")
    private Date finishtime;
    /**
     * å°±è¯Šè®°å½•编号
     */
    @Excel(name = " å°±è¯Šè®°å½•编号 ")
    @ApiModelProperty(value = "就诊记录编号")
    private Long recordid;
    /**
     * å½“前重拨次数
     */
    @Excel(name = " å½“前重拨次数 ")
    @ApiModelProperty(value = "当前重拨次数")
    private Long exrecallcount;
    /**
     * æ‹‰å–æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " æ‹‰å–æ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "拉取时间")
    private Date pulltime;
    /**
     * éƒ¨é—¨code
     */
    @Excel(name = "  éƒ¨é—¨code")
    @ApiModelProperty(value = "部门code")
    private String deptcode;
    /**
     * åŒ»ç”Ÿç¼–码
     */
    @Excel(name = "  åŒ»ç”Ÿç¼–码")
    @ApiModelProperty(value = "医生编码")
    private String drcode;
    /**
     * åŒ»ç”Ÿå§“名
     */
    @Excel(name = "  åŒ»ç”Ÿå§“名")
    @ApiModelProperty(value = "医生姓名")
    private String drname;
    /**
     * æ ‡ç­¾çŠ¶æ€
     */
    @Excel(name = "  æ ‡ç­¾çŠ¶æ€")
    @ApiModelProperty(value = "标签状态")
    private Long labelstatus;
    /**
     * åˆ é™¤æ ‡è®°
     */
    @ApiModelProperty(value = "删除标记")
    private String delFlag;
    /**
     * ä¸Šä¼ æ ‡è®°
     */
    @Excel(name = " ä¸Šä¼ æ ‡è®° ")
    @ApiModelProperty(value = "上传标记")
    private Long isupload;
    /**
     * ä¸Šä¼ æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " ä¸Šä¼ æ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "上传时间")
    private Date uploadTime;
    /**
     * æœºæž„ID
     */
    @Excel(name = " æœºæž„ID ")
    @ApiModelProperty(value = "机构ID")
    private String orgid;
    /**
     * æ–‡æœ¬å˜é‡å‚æ•°
     */
    @Excel(name = "文本变量参数")
    @ApiModelProperty(value = "文本变量参数")
    private String textParam;
    /**
     * å®£æ•™å½¢å¼ : 1,短信、2,线下、3,语音、4,视频、5,纸质  6.链接  7.钉钉   8.微信
     */
    @Excel(name = " å®£æ•™å½¢å¼ : 1,短信、2,线下、3,语音、4,视频、5,纸质  6.二维码  7.钉钉   8.微信")
    @ApiModelProperty("宣教形式 :  1,短信、2,线下、3,语音、4,视频、5,纸质  6.链接  7.钉钉  8.微信")
    private String preachform;
    /**
     * åºŠå·
     */
    @Excel(name = "床号")
    @ApiModelProperty(value = "床号")
    private String bedNo;
    /**
     * pageNum
     */
    @Excel(name = "pageNum")
    @ApiModelProperty(value = "pageNum")
    private Integer pageNum;
    /**
     * pageSize
     */
    @Excel(name = "pageSize")
    @ApiModelProperty(value = "pageSize")
    private Integer pageSize;
    /**
     * å‘送类型: 1 æ—¶é—´æ®µ   2 æ—¶é—´ç‚¹   3 å³åˆ»å‘送
     */
    @ApiModelProperty(value = "发送类型: 1 æ—¶é—´æ®µ   2 æ—¶é—´ç‚¹   3 å³åˆ»å‘送")
    private String sendType;
    /**
     * ä»»åŠ¡åç§°
     */
    @Excel(name = "任务名称")
    @ApiModelProperty(value = "任务名称")
    private String taskName;
    /**
     * ä»»åŠ¡æè¿°
     */
    @Excel(name = "任务描述")
    @ApiModelProperty(value = "任务描述")
    private String taskDesc;
    /**
     * éšè®¿äºº
     */
    @Excel(name = "  éšè®¿äºº  ")
    @ApiModelProperty(value = "随访人")
    private String operator;
    /**
     * éšè®¿äºº
     */
    @Excel(name = "  éšè®¿äººç¼–号  ")
    @ApiModelProperty(value = "随访人编号")
    private String operatorNo;
    /**
     * å°±è¯Šç¼–号(对应的outhospno、inhospno)
     */
    @Excel(name = "  å°±è¯Šç¼–号(对应的outhospno、inhospno)  ")
    @ApiModelProperty(value = "就诊编号(对应的outhospno、inhospno)")
    private String hospno;
    /**
     * å°±è¯Šç±»åž‹ï¼ˆ1门诊  2出院)
     */
    @Excel(name = "  å°±è¯Šç±»åž‹ï¼ˆ1门诊  2出院)")
    @ApiModelProperty(value = "就诊类型(1门诊  2出院 3.专病 4.外部导入)")
    private String hospType;
    /**
     * å¾®ä¿¡
     */
    @Excel(name = "  å¾®ä¿¡")
    @ApiModelProperty(value = "微信")
    private String wechat;
    /**
     * è¯Šæ–­åç§°
     */
    @Excel(name = "  è¯Šæ–­åç§°")
    @ApiModelProperty(value = "诊断名称")
    private String diagname;
    /**
     * æ‚£è€…ID
     */
    @Excel(name = "  æ‚£è€…ID")
    @ApiModelProperty(value = "患者ID")
    private Long patid;
    /**
     * ç§‘室名称
     */
    @Excel(name = "科室名称")
    @ApiModelProperty(value = "科室名称")
    private String deptname;
    /**
     * å°±è¯Šæ—¥æœŸ
     */
    @Excel(name = " å°±è¯Šæ—¥æœŸ")
    @ApiModelProperty(value = "就诊日期")
    private Date admindate;
    /**
     * ç—…房号
     */
    @Excel(name = "  ç—…房号")
    @ApiModelProperty(value = "病房号")
    private String roomno;
    /**
     * æ¨¡æ¿åº“模版ID
     */
    @Excel(name = "模板库模版ID")
    @ApiModelProperty(value = "模板库模版ID")
    private Long libtemplateid;
    /**
     * æ€»åˆ†
     */
    @Excel(name = "总分")
    @ApiModelProperty(value = "总分")
    private BigDecimal score;
    /**
     * æ¨¡æ¿åº“模版名称
     */
    @Excel(name = "模板库模版名称")
    @ApiModelProperty(value = "模板库模版名称")
    private String libtemplatename;
    /**
     * é•¿æœŸä»»åŠ¡ï¼Œç»™æ‚£è€…å‘é€çš„æ—¶é—´
     */
    @Excel(name = " é•¿æœŸä»»åŠ¡ï¼Œç»™æ‚£è€…å‘é€çš„æ—¶é—´")
    @ApiModelProperty(value = "长期任务,给患者发送的时间")
    private Date longSendTime;
    /**
     * è´£ä»»æŠ¤å£«ç¼–码
     */
    @Excel(name = "责任护士编码")
    @ApiModelProperty("责任护士编码")
    private String nurseId;
    /**
     * è´£ä»»æŠ¤å£«å§“名
     */
    @Excel(name = "责任护士姓名")
    @ApiModelProperty("责任护士姓名")
    private String nurseName;
    /**
     * å‡ºé™¢ç—…区编号
     */
    @ApiModelProperty(value = "出院病区编号")
    private String leavehospitaldistrictcode;
    /**
     * å‡ºé™¢ç—…区名称
     */
    @ApiModelProperty(value = "出院病区名称")
    @Excel(name = " å‡ºé™¢ç—…区名称 ")
    private String leavehospitaldistrictname;
    /**
     * å‡ºé™¢ç—…区编号
     */
    @ApiModelProperty(value = "出院病区编号集合")
    private List<String> leavehospitaldistrictcodes;
    /**
     * å‡ºé™¢ç—…区编号
     */
    @ApiModelProperty(value = "出院部门编号集合")
    private List<String> leaveldeptcodes;
    @ApiModelProperty(value = "发送详情")
    private List<ServiceSubtaskRecord> serviceSubtaskRecordList;
}
smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
package com.smartor.domain;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å„病区随访统计比例
 *
 * @author ruoyi
 * @date 2024-12-11
 */
@ApiModel(value = "ServiceSubtaskStatistic", description = "各病区随访统计比例")
@Data
public class ServiceSubtaskStatistic {
    private static final long serialVersionUID = 1L;
    /**
     * å‡ºé™¢ç—…区编号
     */
    @ApiModelProperty(value = "出院病区编号")
    private String leavehospitaldistrictcode;
    /**
     * å‡ºé™¢ç—…区名称
     */
    @ApiModelProperty(value = "出院病区名称")
    @Excel(name = " å‡ºé™¢ç—…区名称 ")
    private String leavehospitaldistrictname;
    @ApiModelProperty(value = "服务总量")
    private Integer serviceCount = 0;
    @ApiModelProperty(value = "患者过滤量(不执行数量)")
    private Long bzxCount = 0L;
    @ApiModelProperty(value = "应随访量")
    private Long ysfCount = 0L;
    @ApiModelProperty(value = "发送失败访量")
    private Long fssbCount = 0L;
    @ApiModelProperty(value = "待发送数量")
    private Long dfsCount = 0L;
    @ApiModelProperty(value = "已发送数量")
    private Long yfsCount = 0L;
    @ApiModelProperty(value = "已完成数量")
    private Long ywcCount = 0L;
    @ApiModelProperty(value = "随访完成率")
    private String sfwcl;
    @ApiModelProperty(value = "短信发送次数")
    private Long dxfscs = 0L;
    @ApiModelProperty(value = "短信随访完成次数")
    private Long dxsfwccs = 0L;
    @ApiModelProperty(value = "短信随访完成率")
    private Long dxsfwcl = 0L;
    @ApiModelProperty(value = "电话发送次数")
    private Long dhfscs = 0L;
    @ApiModelProperty(value = "电话随访完成次数")
    private Long dhsfwccs = 0L;
    @ApiModelProperty(value = "电话随访完成率")
    private Long dhsfwcl = 0L;
    @ApiModelProperty(value = "异常总数")
    private Long yczs = 0L;
    @ApiModelProperty(value = "回复异常数")
    private Long hfycs = 0L;
}
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -71,4 +71,6 @@
    public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq);
    public List<ServiceSubtask> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq);
}
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -115,4 +115,11 @@
     */
    public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq);
    /**
     * èŽ·å–éšè®¿ç»Ÿè®¡æ¯”ä¾‹
     * @param serviceSubtaskCountReq
     * @return
     */
    public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq);
}
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -4,6 +4,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.*;
@@ -252,13 +253,18 @@
        Integer yc = 0;
        Integer fssb = 0;
        Integer yfs = 0;
        Integer blq = 0;
        Integer xj = 0;
        Integer dfs = 0;
        Integer ywc = 0;
        Integer ywc2 = 0;
        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
            if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
            else if (serviceSubtask.getSendstate() != 4L) ysf = ysf + 1;
            if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
            if (serviceSubtask.getSendstate() == 3L) yfs = yfs + 1;
            if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
            if (serviceSubtask.getSendstate() == 1L) xj = xj + 1;
            if (serviceSubtask.getSendstate() == 2L) dfs = dfs + 1;
            if (serviceSubtask.getSendstate() == 6L) ywc = ywc + 1;
            if (serviceSubtask.getExcep().equals("1")) yc = yc + 1;
        }
        map.put("wzx", wzx);
@@ -266,8 +272,10 @@
        map.put("yc", yc);
        map.put("fssb", fssb);
        map.put("yfs", yfs);
        map.put("blq", blq);
        map.put("xj", xj);
        map.put("dfs", dfs);
        map.put("ywc", ywc);
        map.put("yfs2", yfs + ywc);
        return map;
    }
@@ -391,7 +399,7 @@
                    serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
                    serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
                    serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
                    if (serviceTaskVO.getLongTask() != null &&serviceTaskVO.getLongTask() == 1)
                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                        serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
                    serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                    integer = serviceSubtask.getId().intValue();
@@ -1775,6 +1783,80 @@
        return result2;
    }
    /**
     * èŽ·å–éšè®¿ç»Ÿè®¡æ¯”ä¾‹
     *
     * @param serviceSubtaskCountReq
     * @return
     */
    @Override
    public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
        log.error("getSfStatistics的入参为:{}", serviceSubtaskCountReq);
        List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
        Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(ServiceSubtask::getLeavehospitaldistrictname));
        for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
            if (CollectionUtils.isEmpty(serviceSubtaskList)) {
                continue;
            }
            ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList);
            if (ObjectUtils.isNotEmpty(statistic)) {
                serviceSubtaskStatistics.add(statistic);
            }
        }
        return serviceSubtaskStatistics;
    }
    private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {
        ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
        serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
        serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
        serviceSubtaskStatistic.setServiceCount(serviceSubtaskList.size());
        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
            //不随访数量
            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
                serviceSubtaskStatistic.setBzxCount(serviceSubtaskStatistic.getBzxCount() + 1L);
            }
            //应随访数量
            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
                serviceSubtaskStatistic.setYsfCount(serviceSubtaskStatistic.getYsfCount() + 1L);
            }
            //发送失败数量
            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
                serviceSubtaskStatistic.setFssbCount(serviceSubtaskStatistic.getFssbCount() + 1L);
            }
            //待发送数量
            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
                serviceSubtaskStatistic.setDfsCount(serviceSubtaskStatistic.getDfsCount() + 1L);
            }
            //已发送数量
            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 3) {
                serviceSubtaskStatistic.setYfsCount(serviceSubtaskStatistic.getYfsCount() + 1L);
            }
            //已完成数量
            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6) {
                //已发送,包含已完成
                serviceSubtaskStatistic.setYfsCount(serviceSubtaskStatistic.getYfsCount() + 1L);
                serviceSubtaskStatistic.setYwcCount(serviceSubtaskStatistic.getYwcCount() + 1L);
            }
            if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && serviceSubtask.getExcep().equals("1")) {
                //异常标识
                serviceSubtaskStatistic.setYczs(serviceSubtaskStatistic.getYczs() + 1L);
            }
        }
        //随访完成率=已发送/随访数
        if (serviceSubtaskStatistic.getYfsCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) {
            serviceSubtaskStatistic.setSfwcl("0");
        } else {
            BigDecimal multiply = BigDecimal.valueOf(serviceSubtaskStatistic.getYfsCount()).divide(BigDecimal.valueOf(serviceSubtaskList.size()), 2, BigDecimal.ROUND_HALF_UP);
            serviceSubtaskStatistic.setSfwcl(multiply.toString());
        }
        return serviceSubtaskStatistic;
    }
    private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO IvrTaskTemplateScriptVO) {
        for (int j = 0; j < IvrTaskTemplateScriptVOList.size(); j++) {
@@ -1856,6 +1938,10 @@
        redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
        if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) serviceSubtask.setRemark("电话发送拒接,短信补偿发送成功");
        else serviceSubtask.setRemark("短信补偿发送成功");
        //记录一下补偿方式
        if (StringUtils.isNotEmpty(serviceSubtask.getPreachform())) {
            serviceSubtask.setPreachform(serviceSubtask.getPreachform() + ",1");
        }
        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
    }
}
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -637,6 +637,32 @@
        where patid = #{patid} and taskid = #{taskid}
    </update>
    <select id="getSfStatistics" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
            resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            del_flag=0
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
                AND leavehospitaldistrictcode IN
                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
                         close=")">
                    #{leavehospitaldistrictcode}
                </foreach>
            </if>
            <if test="serviceType != null and serviceType.size() > 0">
                AND service_type IN
                <foreach collection="serviceType" item="serviceType" open="(" separator=","
                         close=")">
                    #{serviceType}
                </foreach>
            </if>
            <if test="startTime != null and endTime!=null">
                AND endtime > #{startTime}
                AND endtime &lt;= #{endTime}
            </if>
        </where>
    </select>
    <select id="getDataByTime" resultMap="ServiceSubtaskResult">
        select id,