liusheng
2024-10-21 af396db5b1e6dcbb53879af52bd682b4a7e82664
代码提交
已修改19个文件
397 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java 211 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrLibScript.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrLibaScript.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskRecord.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceTask.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/PatArchiveImportServiceImpl.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -19,6 +19,7 @@
import com.smartor.mapper.SvyTaskSingleMapper;
import com.smartor.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.connection.Message;
@@ -162,22 +163,37 @@
        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {
            //如何任务发送方式不为空
            String[] split = commonTaskcallMQ.getPreachform().split(",");
            System.out.println("split的值为:" + split);
            log.error("split的值为:{}", split);
            //定义一个集合,用与存没有执行的子任务ID
            List<Long> subIds = new ArrayList<>();
            //临时存没有执行的子任务ID
            List<Long> lssubIds = new ArrayList<>();
            //是否将全部患者者发送完
            Boolean isSend = false;
            aa:
            for (String serviceFrom : split) {
                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
                //这里可以考虑用策略模式优化一下,不然太难看了
//                //通过模板ID获取模板问题
//                IvrTaskTemplateVO ivrTaskTemplateVO = new IvrTaskTemplateVO();
//                ivrTaskTemplateVO.setId(Long.valueOf(commonTaskcallMQ.getTemplateid()));
//                IvrTaskTemplateVO ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO);
                if (isSend == true) {
                    break aa;
                }
                //通过任务ID拿到患者信息
                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
                ivrTaskcall.setSendstate(1L);
                List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);
                if (descByCode.equals("电话")) {
                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
                        //先判断一下,subIds是否为空,如果不为空,只执行subIds里的患者
                        if (CollectionUtils.isNotEmpty(subIds)) {
                            boolean contains = subIds.contains(serviceSubtask.getId());
                            //如果contains不为true,说明当前的患者已经发送成功,直接循环下一个人就行
                            if (!contains) continue;
                        }
                        try {
                        ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
                            //如何任务被“暂停”或“终止”
@@ -215,19 +231,48 @@
                            }
                            redisCache.setCacheObject(key, value);
                        }
                        //任务发送记录(这个代码应该写在phoneTask中,先写在这,后面再改)
                        } catch (Exception exception) {
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                        serviceSubtaskRecord.setPreachform("3");
                            serviceSubtaskRecord.setResult("fail");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                            serviceSubtaskRecord.setRemark("电话发送失败");
                            log.error("电话发送失败:{}", exception.getMessage());
                            lssubIds.add(serviceSubtask.getId());
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
//                        //通过多线程的方式去打电话
//                        executorService.submit(new PhoneTask(serviceSubtask, ivrTaskTemplateVO1, redisCache, sendService, phonePath, robotPhoneUtils));
                            continue;
                    }
                        //在子任务表里记录一下
                        String uuid = UUID.randomUUID().toString();
                        serviceSubtask.setResult("success");
                        serviceSubtask.setRemark("电话发送成功");
                        serviceSubtask.setGuid(uuid);
                        serviceSubtask.setSendstate(6L);
                        serviceSubtask.setFinishtime(new Date());
                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                        //任务发送记录
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                        serviceSubtaskRecord.setUuid(uuid);
                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                        serviceSubtaskRecord.setPreachform("3");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                        serviceSubtaskRecord.setRemark("电话发送成功");
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                    }
                    if (CollectionUtils.isEmpty(lssubIds)) {
                        //如果“临时子任务”为空,说明全发送完了
                        isSend = true;
                    }
                    //将子任务ID清空,将“临时子任务”数据 放到 “子任务” 中
                    subIds.clear();
                    subIds.addAll(lssubIds);
                    lssubIds.clear();
                } else if (descByCode.equals("多媒体")) {
                    //多媒体
                    continue;
@@ -242,6 +287,13 @@
                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
                        //先判断一下,subIds是否为空,如果不为空,只执行subIds里的患者
                        if (CollectionUtils.isNotEmpty(subIds)) {
                            boolean contains = subIds.contains(serviceSubtask.getId());
                            //如果contains不为true,说明当前的患者已经发送成功,直接循环下一个人就行
                            if (!contains) continue;
                        }
                        try {
                            String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
                            SendMagParam sendMagParam = new SendMagParam();
@@ -255,27 +307,64 @@
                            }
                            Boolean aBoolean = sendService.sendMsg(sendMagParam);
                            //任务发送记录
                            if (!aBoolean) {
                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                            serviceSubtaskRecord.setPreachform("4");
                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                            serviceSubtaskRecord.setResult(aBoolean == true ? "success" : "error");
                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                                serviceSubtaskRecord.setRemark("短信发送失败");
                                lssubIds.add(serviceSubtask.getId());
                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                        } catch (UnsupportedEncodingException e) {
                            String guid = UUID.randomUUID().toString();
                            log.error("短信任务,发送失败原因:{},{}", e.getMessage(), guid);
                            serviceSubtask.setResult("error");
                            serviceSubtask.setRemark("系统错误(任务)");
                            serviceSubtask.setGuid(guid);
                            serviceSubtask.setSendstate(4L);
                                continue;
                            }
                        } catch (Exception e) {
                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                            serviceSubtaskRecord.setPreachform("4");
                            serviceSubtaskRecord.setResult("fail");
                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                            serviceSubtaskRecord.setRemark("短信发送失败");
                            log.error("短信发送失败:{}", e.getMessage());
                            lssubIds.add(serviceSubtask.getId());
                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                            continue;
                        }
                        //在子任务表里记录一下
                        String uuid = UUID.randomUUID().toString();
                        serviceSubtask.setResult("success");
                        serviceSubtask.setRemark("短信发送成功");
                        serviceSubtask.setGuid(uuid);
                        serviceSubtask.setSendstate(3L);
                            serviceSubtask.setFinishtime(new Date());
                            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                        //任务发送记录
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                        serviceSubtaskRecord.setUuid(uuid);
                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                        serviceSubtaskRecord.setPreachform("5");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                        serviceSubtaskRecord.setResult("success");
                        serviceSubtaskRecord.setRemark("短信发送成功");
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                        }
                    if (CollectionUtils.isEmpty(lssubIds)) {
                        //如果“临时子任务”为空,说明全发送完了
                        isSend = true;
                    }
                    //将子任务ID清空,将“临时子任务”数据 放到 “子任务” 中
                    subIds.clear();
                    subIds.addAll(lssubIds);
                    lssubIds.clear();
                } else if (descByCode.equals("公众号")) {
                    //公众号
                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
@@ -310,39 +399,79 @@
                                serviceSubtask.setResult("success");
                                serviceSubtask.setSendstate(3L);
                                if ((Boolean) map.get("succ") == false) {
                                    serviceSubtask.setResult("error");
                                    serviceSubtask.setRemark(map.get("msg").toString());
                                    serviceSubtask.setSendstate(5L);
                                }
                            }
                            //任务发送记录
                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                            serviceSubtaskRecord.setPreachform("5");
                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                            serviceSubtaskRecord.setResult("success");
                            if ((Boolean) map.get("succ") == false) {
                                serviceSubtaskRecord.setResult("error");
                            }
                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                                    serviceSubtaskRecord.setRemark(map.get("msg").toString());
                                    lssubIds.add(serviceSubtask.getId());
                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                                    continue;
                                }
                            }
                        } catch (Exception e) {
                            String guid = UUID.randomUUID().toString();
                            log.error("公众号任务,发送失败原因:{},{}", e.getMessage(), guid);
                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                            serviceSubtaskRecord.setPreachform("5");
                            serviceSubtaskRecord.setResult("fail");
                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                            serviceSubtaskRecord.setRemark("公众号发送失败");
                            log.error("公众号发送失败:{}", e.getMessage());
                            lssubIds.add(serviceSubtask.getId());
                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                            continue;
                        }
                        //在子任务表里记录一下
                        String uuid = UUID.randomUUID().toString();
                        serviceSubtask.setResult("success");
                        serviceSubtask.setRemark("公众号发送成功");
                        serviceSubtask.setGuid(uuid);
                        serviceSubtask.setSendstate(3L);
                        serviceSubtask.setFinishtime(new Date());
                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                        //任务发送记录
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                        serviceSubtaskRecord.setUuid(uuid);
                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                        serviceSubtaskRecord.setPreachform("5");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                        serviceSubtaskRecord.setResult("success");
                        serviceSubtaskRecord.setRemark("公众号发送成功");
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                    }
                    if (CollectionUtils.isEmpty(lssubIds)) {
                        //如果“临时子任务”为空,说明全发送完了
                        isSend = true;
                    }
                    //将子任务ID清空,将“临时子任务”数据 放到 “子任务” 中
                    subIds.clear();
                    subIds.addAll(lssubIds);
                    lssubIds.clear();
                }
                //通知 MQ 消息已被接收,可以ACK(从队列中删除)了   (这个需要根据业务再去处理ACK)
            }
            if (CollectionUtils.isNotEmpty(subIds)) {
                //如果全部的发送方式都发完了,还有是未发送的,需要去subTask表中,记录一下,发送失败
                for (Long id : subIds) {
                    ServiceSubtask serviceSubtask = new ServiceSubtask();
                            serviceSubtask.setResult("error");
                            serviceSubtask.setRemark("系统错误(任务)");
                            serviceSubtask.setGuid(guid);
                    serviceSubtask.setRemark("发送失败");
                            serviceSubtask.setSendstate(5L);
                    serviceSubtask.setId(id);
                            serviceSubtask.setFinishtime(new Date());
                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                        }
                    }
                }
                //通知 MQ 消息已被接收,可以ACK(从队列中删除)了   (这个需要根据业务再去处理ACK)
            }
        }
    }
    //    /**
smartor/src/main/java/com/smartor/domain/IvrLibScript.java
@@ -55,6 +55,10 @@
    @Excel(name = " 上传标记 ")
    private Long isupload;
    /**  电话语音文本  */
    @Excel(name = " 电话语音文本 ")
    private String ivrtext;
    /**  上传时间  */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " 上传时间 ", width = 30, dateFormat = "yyyy-MM-dd")
smartor/src/main/java/com/smartor/domain/IvrLibaScript.java
@@ -61,7 +61,7 @@
     */
    @ApiModelProperty("话术语音")
    @Excel(name = "话术语音")
    private String scriptVoice;
    private String ivrVoice;
    /**
     * 无匹配话术
@@ -324,6 +324,13 @@
    private String tag;
    /**
     * 话术语音文本
     */
    @Excel(name = "话术语音文本")
    @ApiModelProperty(value = "话术语音文本")
    private String ivrtext;
    /**
     * pageNum
     */
    @ApiModelProperty(value = "pageNum")
smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java
@@ -69,7 +69,14 @@
     */
    @ApiModelProperty("话术语音")
    @Excel(name = "话术语音")
    private String scriptVoice;
    private String ivrVoice;
    /**
     * 话术语音文本
     */
    @ApiModelProperty("话术语音文本")
    @Excel(name = "话术语音文本")
    private String ivrtext;
    /**
     * 无匹配话术
smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
@@ -103,7 +103,14 @@
     */
    @Excel(name = "话术语音")
    @ApiModelProperty(value = "话术语音")
    private String scriptVoice;
    private String ivrVoice;
    /**
     * 话术语音文本
     */
    @Excel(name = "话术语音文本")
    @ApiModelProperty(value = "话术语音文本")
    private String ivrtext;
    /**
     * 无匹配话术
smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
@@ -81,7 +81,14 @@
     */
    @Excel(name = "话术语音")
    @ApiModelProperty(value = "话术语音")
    private String scriptVoice;
    private String ivrVoice;
    /**
     * 话术语音文本
     */
    @Excel(name = "话术语音文本")
    @ApiModelProperty(value = "话术语音文本")
    private String ivrtext;
    /**
     * 问题结果
smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java
@@ -277,6 +277,13 @@
    private String branchNextscriptno;
    /**
     * 话术语音文本
     */
    @Excel(name = "话术语音文本")
    @ApiModelProperty(value = "话术语音文本")
    private String ivrtext;
    /**
     * 选项分支的下一个话术编号
     */
    @Excel(name = "选项分支的下一个话术编号")
smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
@@ -165,6 +165,13 @@
    private String targetOptions;
    /**
     * 话术语音文本
     */
    @Excel(name = "话术语音文本")
    @ApiModelProperty(value = "话术语音文本")
    private String ivrtext;
    /**
     * 语言
     */
    @Excel(name = "语言")
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -407,7 +407,7 @@
     * 就诊类型(1门诊  2出院)
     */
    @Excel(name = "  就诊类型(1门诊  2出院)")
    @ApiModelProperty(value = "就诊类型(1门诊  2出院 3.专病)")
    @ApiModelProperty(value = "就诊类型(1门诊  2出院 3.专病 4.外部导入)")
    private String hospType;
smartor/src/main/java/com/smartor/domain/ServiceSubtaskRecord.java
@@ -29,9 +29,16 @@
    /**
     * 子任务ID
     */
    @Excel(name = "任务ID")
    @ApiModelProperty(value = "任务ID")
    private String taskid;
    /**
     * 子任务ID
     */
    @Excel(name = "子任务ID")
    @ApiModelProperty(value = "子任务ID")
    private String taskid;
    private Long subtaskId;
    /**
     * 任务UUID
@@ -124,5 +131,12 @@
    @ApiModelProperty(value = "GUID")
    private String guid;
    /**
     * 备注
     */
    @Excel(name = "备注")
    @ApiModelProperty(value = "备注")
    private String remark;
}
smartor/src/main/java/com/smartor/domain/ServiceTask.java
@@ -379,6 +379,13 @@
    @Excel(name = " 出院病区名称 ")
    private String leavehospitaldistrictname;
    /**
     * 补偿时间(未领取 ,发起补偿:从任务发送成功开始,compensate_date分钟后,患者仍未领取)单位:分钟
     */
    @ApiModelProperty(value = "补偿时间(未领取 ,发起补偿:从任务发送成功开始,compensate_date分钟后,患者仍未领取)单位:分钟 ")
    @Excel(name = " 补偿时间(未领取 ,发起补偿:从任务发送成功开始,compensate_date分钟后,患者仍未领取)单位:分钟 ")
    private String compensateDate;
    /**
     * 开始出院日期
smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
@@ -332,4 +332,11 @@
    @ApiModelProperty(value = "出院病区名称")
    @Excel(name = " 出院病区名称 ")
    private String leavehospitaldistrictname;
    /**
     * 补偿时间(未领取 ,发起补偿:从任务发送成功开始,compensate_date分钟后,患者仍未领取)单位:分钟
     */
    @ApiModelProperty(value = "补偿时间(未领取 ,发起补偿:从任务发送成功开始,compensate_date分钟后,患者仍未领取)单位:分钟 ")
    @Excel(name = " 补偿时间(未领取 ,发起补偿:从任务发送成功开始,compensate_date分钟后,患者仍未领取)单位:分钟 ")
    private String compensateDate;
}
smartor/src/main/java/com/smartor/service/impl/PatArchiveImportServiceImpl.java
@@ -6,10 +6,7 @@
import com.smartor.mapper.PatArchiveImportMapper;
import com.smartor.service.IPatArchiveImportService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -21,6 +18,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;
/**
 * Excel导入患者档案Service业务层处理
@@ -123,11 +121,28 @@
                //判断数据是否有问题
                if (ObjectUtils.isNotEmpty(row.getCell(0).toString())) {
                if (ObjectUtils.isNotEmpty(row.getCell(0))) {
                    patArchiveImport.setName(row.getCell(0).toString());
                } else {
                    continue;
                }
                if (ObjectUtils.isNotEmpty(row.getCell(1))) {
                    Cell cell = row.getCell(1);
                    if (row.getCell(1).toString().contains("X") || row.getCell(1).toString().contains("x")) {
                    patArchiveImport.setIdcardno(row.getCell(1).toString());
                    } else {
                        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
                        boolean matches = pattern.matcher(row.getCell(1).toString()).matches();
                        if (matches) {
                            patArchiveImport.setIdcardno(row.getCell(1).toString());
                        } else {
                            double numericCellValue = cell.getNumericCellValue();
                            DecimalFormat decimalFormat = new DecimalFormat("#");
                            String formattedValue = decimalFormat.format(numericCellValue);
                            patArchiveImport.setIdcardno(formattedValue);
                        }
                    }
                    boolean contains = qc.contains(row.getCell(1).toString());
                    if (contains) continue;
                }
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -27,6 +27,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalTime;
@@ -817,7 +818,7 @@
                                Object obj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
                                Double score = (obj == null ? new Double(0.00) : new Double(((Double) obj).doubleValue()));
                                score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore()).doubleValue();
                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score);
                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score,120,TimeUnit.MINUTES);
                            }
                            for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
@@ -903,7 +904,7 @@
                                    double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
                                    score = BigDecimal.valueOf(score).add(script.getScore()).doubleValue();
                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score);
                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score,120, TimeUnit.MINUTES);
                                }
                            }
                        }
@@ -942,7 +943,7 @@
                            //更新一下分数
                            double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
                            score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getScore()).doubleValue();
                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score);
                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score,120, TimeUnit.MINUTES);
//                            return phoneCallBackYQVO;
                        }
smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml
@@ -8,7 +8,8 @@
        <result property="id" column="id"/>
        <result property="scriptTopic" column="script_topic"/>
        <result property="scriptContent" column="script_content"/>
        <result property="scriptVoice" column="script_voice"/>
        <result property="ivrVoice" column="ivr_voice"/>
        <result property="ivrtext" column="ivrtext"/>
        <result property="scriptDesc" column="script_desc"/>
        <result property="noMatchText" column="nomatchtext"/>
        <result property="nomatchvoice" column="nomatchvoice"/>
@@ -66,7 +67,8 @@
               isAvailable,
               script_content,
               script_desc,
               script_voice,
               ivr_voice,
               ivrtext,
               nomatchtext,
               nomatchvoice,
               sliencetext,
@@ -101,7 +103,8 @@
            <if test="valueType != null ">and value_type = #{valueType}</if>
            <if test="scriptContent != null  and scriptContent != ''">and script_content = #{scriptContent}</if>
            <if test="scriptDesc != null  and scriptDesc != ''">and script_desc = #{scriptDesc}</if>
            <if test="scriptVoice != null  and scriptVoice != ''">and script_voice = #{scriptVoice}</if>
            <if test="ivrVoice != null  and ivrVoice != ''">and ivr_voice = #{ivrVoice}</if>
            <if test="ivrtext != null  and ivrtext != ''">and ivrtext = #{ivrtext}</if>
            <if test="noMatchText != null  and noMatchText != ''">and nomatchtext = #{noMatchText}</if>
            <if test="nomatchvoice != null  and nomatchvoice != ''">and nomatchvoice = #{nomatchvoice}</if>
            <if test="slienceText != null  and slienceText != ''">and sliencetext = #{slienceText}</if>
@@ -150,7 +153,8 @@
            <if test="reply != null">reply,</if>
            <if test="scriptContent != null">script_content,</if>
            <if test="scriptDesc != null">script_desc,</if>
            <if test="scriptVoice != null">script_voice,</if>
            <if test="ivrVoice != null">ivr_voice,</if>
            <if test="ivrtext != null">ivrtext,</if>
            <if test="noMatchText != null">nomatchtext,</if>
            <if test="nomatchvoice != null">nomatchvoice,</if>
            <if test="slienceText != null">sliencetext,</if>
@@ -198,7 +202,8 @@
            <if test="reply != null">#{reply},</if>
            <if test="scriptContent != null">#{scriptContent},</if>
            <if test="scriptDesc != null">#{scriptDesc},</if>
            <if test="scriptVoice != null">#{scriptVoice},</if>
            <if test="ivrVoice != null">#{ivrVoice},</if>
            <if test="ivrtext != null">#{ivrtext},</if>
            <if test="noMatchText != null">#{noMatchText},</if>
            <if test="nomatchvoice != null">#{nomatchvoice},</if>
            <if test="slienceText != null">#{slienceText},</if>
@@ -247,7 +252,8 @@
            <if test="reply != null">reply = #{reply},</if>
            <if test="scriptContent != null">script_content = #{scriptContent},</if>
            <if test="scriptDesc != null">script_desc = #{scriptDesc},</if>
            <if test="scriptVoice != null">script_voice = #{scriptVoice},</if>
            <if test="ivrVoice != null">ivr_voice = #{ivrVoice},</if>
            <if test="ivrtext != null">ivrtext = #{ivrtext},</if>
            <if test="noMatchText != null">nomatchtext = #{noMatchText},</if>
            <if test="nomatchvoice != null">nomatchvoice = #{nomatchvoice},</if>
            <if test="slienceText != null">sliencetext = #{slienceText},</if>
smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
@@ -12,7 +12,8 @@
        <result property="scriptPoint" column="script_point"/>
        <result property="scriptContent" column="script_content"/>
        <result property="scriptDesc" column="script_content"/>
        <result property="scriptVoice" column="script_voice"/>
        <result property="ivrVoice" column="ivr_voice"/>
        <result property="ivrtext" column="ivrtext"/>
        <result property="noMatchText" column="noMatchText"/>
        <result property="noMatchVoice" column="noMatchVoice"/>
        <result property="slienceText" column="slienceText"/>
@@ -57,10 +58,11 @@
               templateid,
               script_type,
               scriptid,
               ivrtext,
               script_point,
               script_content,
               script_desc,
               script_voice,
               ivr_voice,
               noMatchText,
               noMatchVoice,
               slienceText,
@@ -102,7 +104,8 @@
            <if test="templateid != null ">and templateid = #{templateid}</if>
            <if test="scriptPoint != null  and scriptPoint != ''">and script_point = #{scriptPoint}</if>
            <if test="scriptContent != null  and scriptContent != ''">and script_content = #{scriptContent}</if>
            <if test="scriptVoice != null  and scriptVoice != ''">and script_voice = #{scriptVoice}</if>
            <if test="ivrVoice != null  and ivrVoice != ''">and ivr_voice = #{ivrVoice}</if>
            <if test="ivrtext != null  and ivrtext != ''">and ivrtext = #{ivrtext}</if>
            <if test="noMatchText != null  and noMatchText != ''">and noMatchText = #{noMatchText}</if>
            <if test="noMatchVoice != null  and noMatchVoice != ''">and noMatchVoice = #{noMatchVoice}</if>
            <if test="slienceText != null  and slienceText != ''">and slienceText = #{slienceText}</if>
@@ -154,7 +157,7 @@
            <if test="scriptid != null">scriptid,</if>
            <if test=" scriptPoint != null and  scriptPoint != ''">script_point,</if>
            <if test="scriptContent != null">script_content,</if>
            <if test="scriptVoice != null">script_voice,</if>
            <if test="ivrVoice != null">ivr_voice,</if>
            <if test="noMatchText != null">noMatchText,</if>
            <if test="noMatchVoice != null">noMatchVoice,</if>
            <if test="slienceText != null">slienceText,</if>
@@ -188,6 +191,7 @@
            <if test="branchNextscriptno != null  and branchNextscriptno != ''">branch_nextscriptno,</if>
            <if test="sort != null ">sort,</if>
            <if test="score != null ">score,</if>
            <if test="ivrtext != null ">ivrtext,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="scriptno != null">#{scriptno},</if>
@@ -195,7 +199,7 @@
            <if test="scriptid != null">#{scriptid},</if>
            <if test="scriptPoint != null and scriptPoint != ''">#{scriptPoint},</if>
            <if test="scriptContent != null">#{scriptContent},</if>
            <if test="scriptVoice != null">#{scriptVoice},</if>
            <if test="ivrVoice != null">#{ivrVoice},</if>
            <if test="noMatchText != null">#{noMatchText},</if>
            <if test="noMatchVoice != null">#{noMatchVoice},</if>
            <if test="slienceText != null">#{slienceText},</if>
@@ -229,6 +233,7 @@
            <if test="branchNextscriptno != null  and branchNextscriptno != ''">#{branchNextscriptno},</if>
            <if test="sort != null ">#{sort},</if>
            <if test="score != null ">#{score},</if>
            <if test="ivrtext != null ">#{ivrtext},</if>
        </trim>
    </insert>
@@ -240,7 +245,7 @@
            <if test="scriptid != null">scriptid = #{scriptid},</if>
            <if test="scriptPoint != null and scriptPoint != ''">script_point = #{scriptPoint},</if>
            <if test="scriptContent != null">script_content = #{scriptContent},</if>
            <if test="scriptVoice != null">script_voice = #{scriptVoice},</if>
            <if test="ivrVoice != null">ivr_voice = #{ivrVoice},</if>
            <if test="noMatchText != null">noMatchText = #{noMatchText},</if>
            <if test="noMatchVoice != null">noMatchVoice = #{noMatchVoice},</if>
            <if test="slienceText != null">slienceText = #{slienceText},</if>
@@ -270,6 +275,7 @@
            <if test="scriptDesc != null ">script_desc = #{scriptDesc},</if>
            <if test="scriptType != null ">script_type = #{scriptType},</if>
            <if test="sort != null ">sort = #{sort},</if>
            <if test="ivrtext != null ">ivrtext = #{ivrtext},</if>
            <if test="branchFlag != null  and branchFlag != ''">branch_flag = #{branchFlag},</if>
            <if test="score != null ">score = #{score},</if>
            <if test="branchNextscriptno != null  and branchNextscriptno != ''">branch_nextscriptno =
smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml
@@ -45,12 +45,14 @@
        <result property="scriptContent" column="script_content"/>
        <result property="sort" column="sort"/>
        <result property="score" column="score"/>
        <result property="ivrtext" column="ivrtext"/>
    </resultMap>
    <sql id="selectIvrTaskTemplateScriptVo">
        select id,
               taskid,
               sort,
               ivrtext,
               script_type,
               score,
               branch_flag,
@@ -78,6 +80,7 @@
        <where>
            <if test="taskid != null ">and taskid = #{taskid}</if>
            <if test="score != null ">and score = #{score}</if>
            <if test="ivrtext != null ">and ivrtext = #{ivrtext}</if>
            <if test="sort != null ">and sort = #{sort}</if>
            <if test="templateID != null ">and templateID = #{templateID}</if>
            <if test="questionPoint != null  and questionPoint != ''">and questionPoint = #{questionPoint}</if>
@@ -165,6 +168,7 @@
            <if test="sort != null ">sort,</if>
            <if test="nextScriptno != null  and nextScriptno != ''">next_scriptno,</if>
            <if test="score != null ">score,</if>
            <if test="ivrtext != null ">ivrtext,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="taskid != null">#{taskid},</if>
@@ -206,6 +210,7 @@
            <if test="sort != null">#{sort},</if>
            <if test="nextScriptno != null  and nextScriptno != ''">#{nextScriptno},</if>
            <if test="score != null ">#{score},</if>
            <if test="ivrtext != null ">#{ivrtext},</if>
        </trim>
    </insert>
@@ -253,6 +258,7 @@
            <if test="sort != null">sort = #{sort},</if>
            <if test="nextScriptno != null  and nextScriptno != ''">next_scriptno = #{nextScriptno},</if>
            <if test="score != null">score = #{score},</if>
            <if test="ivrtext != null">ivrtext = #{ivrtext},</if>
        </trim>
        where id = #{id}
    </update>
smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml
@@ -24,6 +24,7 @@
        <result property="orgid" column="orgid"/>
        <result property="pid" column="pid"/>
        <result property="guid" column="guid"/>
        <result property="remark" column="remark"/>
    </resultMap>
    <sql id="selectServiceSubtaskRecordVo">
@@ -45,6 +46,7 @@
               upload_time,
               orgid,
               pid,
               remark,
               guid
        from service_subtask_record
    </sql>
@@ -66,6 +68,7 @@
            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
            <if test="pid != null ">and pid = #{pid}</if>
            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
            <if test="remark != null  and remark != ''">and remark = #{remark}</if>
        </where>
    </select>
@@ -96,6 +99,7 @@
            <if test="orgid != null">orgid,</if>
            <if test="pid != null">pid,</if>
            <if test="guid != null">guid,</if>
            <if test="remark != null">remark,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
@@ -117,6 +121,7 @@
            <if test="orgid != null">#{orgid},</if>
            <if test="pid != null">#{pid},</if>
            <if test="guid != null">#{guid},</if>
            <if test="remark != null">#{remark},</if>
        </trim>
    </insert>
@@ -141,6 +146,7 @@
            <if test="orgid != null">orgid = #{orgid},</if>
            <if test="pid != null">pid = #{pid},</if>
            <if test="guid != null">guid = #{guid},</if>
            <if test="remark != null">remark = #{remark},</if>
        </trim>
        where id = #{id}
    </update>
smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml
@@ -49,6 +49,7 @@
        <result property="longTask" column="long_task"/>
        <result property="kcb" column="kcb"/>
        <result property="jsy" column="jsy"/>
        <result property="compensateDate" column="compensate_date"/>
        <result property="leavehospitaldistrictcode" column="leavehospitaldistrictcode"/>
        <result property="leavehospitaldistrictname" column="leavehospitaldistrictname"/>
    </resultMap>
@@ -58,6 +59,7 @@
               task_name,
               long_task,
               show_date,
               compensate_date,
               show_time_morn,
               show_time_noon,
               show_time_night,
@@ -139,13 +141,18 @@
            <if test="isupload != null ">and isupload = #{isupload}</if>
            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
            <if test="compensateDate != null  and compensateDate != ''">and compensate_date = #{compensateDate}</if>
            <if test="hospType != null  and hospType != ''">and hosp_type = #{hospType}</if>
            <if test="libtemplateid != null ">and libtemplateid = #{libtemplateid}</if>
            <if test="libtemplatename != null  and libtemplatename != ''">and libtemplatename = #{libtemplatename}</if>
            <if test="createBy != null  and createBy != ''">and create_by = #{createBy}</if>
            <if test="sendState != null  ">and send_state = #{sendState}</if>
            <if test="leavehospitaldistrictname != null  ">and leavehospitaldistrictname = #{leavehospitaldistrictname}</if>
            <if test="leavehospitaldistrictcode != null  ">and leavehospitaldistrictcode = #{leavehospitaldistrictcode}</if>
            <if test="leavehospitaldistrictname != null  ">and leavehospitaldistrictname =
                #{leavehospitaldistrictname}
            </if>
            <if test="leavehospitaldistrictcode != null  ">and leavehospitaldistrictcode =
                #{leavehospitaldistrictcode}
            </if>
            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0">
                AND leavehospitaldistrictcode IN
@@ -221,6 +228,7 @@
            <if test="jsy != null  and jsy != ''">jsy,</if>
            <if test="leavehospitaldistrictname != null  ">leavehospitaldistrictname,</if>
            <if test="leavehospitaldistrictcode != null  ">leavehospitaldistrictcode,</if>
            <if test="compensateDate != null  and compensateDate != ''">compensate_date</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="taskName != null">#{taskName},</if>
@@ -268,6 +276,7 @@
            <if test="jsy != null  and jsy != ''">#{jsy},</if>
            <if test="leavehospitaldistrictname != null  ">#{leavehospitaldistrictname},</if>
            <if test="leavehospitaldistrictcode != null  ">#{leavehospitaldistrictcode},</if>
            <if test="compensateDate != null  and compensateDate != ''">#{compensateDate}</if>
        </trim>
    </insert>
@@ -317,8 +326,11 @@
            <if test="longTask != null  and longTask != ''">long_task = #{longTask},</if>
            <if test="kcb != null  and kcb != ''">kcb = #{kcb},</if>
            <if test="jsy != null  and jsy != ''">jsy = #{jsy},</if>
            <if test="leavehospitaldistrictname != null  ">leavehospitaldistrictname = #{leavehospitaldistrictname},</if>
            <if test="leavehospitaldistrictcode != null  ">leavehospitaldistrictcode = #{leavehospitaldistrictcode},</if>
            <if test="leavehospitaldistrictname != null  ">leavehospitaldistrictname = #{leavehospitaldistrictname},
            </if>
            <if test="leavehospitaldistrictcode != null  ">leavehospitaldistrictcode = #{leavehospitaldistrictcode},
            </if>
            <if test="compensateDate != null  and compensateDate != ''">compensate_date = #{compensateDate}</if>
        </trim>
        where taskid = #{taskid}
    </update>