From 195190571e567602d5e4e8ae3c7c490a515719ef Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期二, 08 十月 2024 15:43:04 +0800 Subject: [PATCH] 代码提交 --- smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml | 6 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java | 4 smartor/src/main/java/com/smartor/yiwudataanalysis/ADT_A03.java | 11 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 11 smartor/src/main/resources/mapper/smartor/SvyTaskTemplateMapper.xml | 2 smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java | 24 + smartor/src/main/java/com/smartor/domain/ServiceTask.java | 13 smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml | 4 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml | 22 + ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 22 + smartor/src/main/java/com/smartor/domain/PatMedInhosp.java | 24 + smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 583 +++++++++++++++++++++++++++++++++++++++-- smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java | 17 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java | 8 smartor/src/main/java/com/smartor/service/impl/ServiceThirdDataServiceImpl.java | 9 smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java | 27 + 17 files changed, 722 insertions(+), 67 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java index 7a0b1e6..e66deca 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java @@ -25,6 +25,7 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 鍗曚竴浠诲姟锛堥殢璁匡級Controller @@ -46,19 +47,26 @@ @ApiOperation("鏌ヨ鎮h�呴殢璁夸俊鎭�") //@PreAuthorize("@ss.hasPermi('system:taskcall:list')") @PostMapping("/patItem") - public TableDataInfo patItem(@RequestBody ServiceSubtask ivrTaskcall) { - PageUtils.startPageByPost(ivrTaskcall.getPageNum(), ivrTaskcall.getPageSize()); - List<ServiceSubtask> serviceSubtaskList = serviceSubtaskService.patItem(ivrTaskcall); + public TableDataInfo patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) { + List<ServiceSubtask> serviceSubtaskList = null; + if (serviceSubtaskVO != null) { + PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()); + serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO); + } + Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO); + map.put("serviceSubtaskList", serviceSubtaskList); + List<Map<String, Object>> list = new ArrayList<>(); + list.add(map); //鑾峰彇total long total = PageUtils.count(new ISelect() { @Override public void doSelect() { - ivrTaskcall.setPageNum(null); - ivrTaskcall.setPageSize(null); - serviceSubtaskService.patItem(ivrTaskcall); + serviceSubtaskVO.setPageNum(null); + serviceSubtaskVO.setPageSize(null); + serviceSubtaskService.patItem(serviceSubtaskVO); } }); - return getDataTable2(total, serviceSubtaskList); + return getDataTable2(total, list); // return getDataTable(serviceSubtaskService.patItem(ivrTaskcall)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java index 87c4538..e117cc3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java @@ -67,9 +67,11 @@ if (CollectionUtils.isNotEmpty(serviceTaskVOS)) { for (ServiceTaskVO ServiceTaskVO : serviceTaskVOS) { - ServiceSubtaskVO ServiceTaskcall = new ServiceSubtaskVO(); - ServiceTaskcall.setTaskid(ServiceTaskVO.getTaskid()); - List<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(ServiceTaskcall); + ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); + serviceSubtaskVO.setTaskid(ServiceTaskVO.getTaskid()); + serviceSubtaskVO.setStartOutHospTime(serviceTask.getStartOutHospTime()); + serviceSubtaskVO.setEndOutHospTime(serviceTask.getEndOutHospTime()); + List<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(serviceSubtaskVO); if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) { //宸插彂閫� long yfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 3L).collect(Collectors.toList()).stream().count(); diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java index f55613d..02e8c7f 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java @@ -402,6 +402,7 @@ serviceSubtask.setResult("success"); } else { serviceSubtask.setResult("error"); + serviceSubtask.setSendstate(5L); serviceSubtask.setRemark(map.get("msg").toString()); } iServiceSubtaskService.updateServiceSubtask(serviceSubtask); @@ -615,6 +616,7 @@ String result = HttpUtils.sendPost(thirdWXUrl, new Gson().toJson(xinHuaWXReq)); JSONObject jsonObject = JSONObject.parseObject(result); + log.error("jsonObject鐨勬暟鎹负锛歿}", jsonObject.toString()); // String code = (String) jsonObject.get("code"); return jsonObject.toString(); } diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java index b3c036c..09472de 100644 --- a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java +++ b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java @@ -346,4 +346,28 @@ */ @ApiModelProperty(value = "鍑洪櫌绉戝浠g爜闆嗗悎") private List<String> leaveldeptcodes; + + /** + * 寮�濮嬪嚭闄㈡棩鏈� + */ + @ApiModelProperty(value = "寮�濮嬪嚭闄㈡棩鏈�") + private Date startOutHospTime; + + /** + * 缁撴潫鍑洪櫌鏃ユ湡 + */ + @ApiModelProperty(value = "缁撴潫鍑洪櫌鏃ユ湡") + private Date endOutHospTime; + + /** + * 寮�濮嬪叆闄㈡棩鏈� + */ + @ApiModelProperty(value = "寮�濮嬪叆闄㈡棩鏈�") + private Date startInHospTime; + + /** + * 缁撴潫鍏ラ櫌鏃ユ湡 + */ + @ApiModelProperty(value = "缁撴潫鍏ラ櫌鏃ユ湡") + private Date endInHospTime; } diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java b/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java index 746f835..539e3bf 100644 --- a/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java +++ b/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java @@ -305,4 +305,28 @@ @ApiModelProperty("pageSize") private Integer pageSize; + /** + * 寮�濮嬪嚭闄㈡棩鏈� + */ + @ApiModelProperty(value = "寮�濮嬪嚭闄㈡棩鏈�") + private Date startOutHospTime; + + /** + * 缁撴潫鍑洪櫌鏃ユ湡 + */ + @ApiModelProperty(value = "缁撴潫鍑洪櫌鏃ユ湡") + private Date endOutHospTime; + + + /** + * 寮�濮嬪叆闄㈡棩鏈� + */ + @ApiModelProperty(value = "寮�濮嬪叆闄㈡棩鏈�") + private Date startInHospTime; + + /** + * 缁撴潫鍏ラ櫌鏃ユ湡 + */ + @ApiModelProperty(value = "缁撴潫鍏ラ櫌鏃ユ湡") + private Date endInHospTime; } diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java index 41a9cc7..68b6d59 100644 --- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java +++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java @@ -566,4 +566,31 @@ private Date starttime; + /** + * pageNum + */ + @Excel(name = "pageNum") + @ApiModelProperty(value = "pageNum") + private Integer pageNum; + + /** + * pageSize + */ + @Excel(name = "pageSize") + @ApiModelProperty(value = "pageSize") + private Integer pageSize; + + /** + * 寮�濮嬪嚭闄㈡棩鏈� + */ + @ApiModelProperty(value = "寮�濮嬪嚭闄㈡棩鏈�") + private Date startOutHospTime; + + /** + * 缁撴潫鍑洪櫌鏃ユ湡 + */ + @ApiModelProperty(value = "缁撴潫鍑洪櫌鏃ユ湡") + private Date endOutHospTime; + + } diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTask.java b/smartor/src/main/java/com/smartor/domain/ServiceTask.java index 02e15b8..983608a 100644 --- a/smartor/src/main/java/com/smartor/domain/ServiceTask.java +++ b/smartor/src/main/java/com/smartor/domain/ServiceTask.java @@ -378,4 +378,17 @@ @ApiModelProperty(value = "鍑洪櫌鐥呭尯鍚嶇О") @Excel(name = " 鍑洪櫌鐥呭尯鍚嶇О ") private String leavehospitaldistrictname; + + + /** + * 寮�濮嬪嚭闄㈡棩鏈� + */ + @ApiModelProperty(value = "寮�濮嬪嚭闄㈡棩鏈�") + private Date startOutHospTime; + + /** + * 缁撴潫鍑洪櫌鏃ユ湡 + */ + @ApiModelProperty(value = "缁撴潫鍑洪櫌鏃ユ湡") + private Date endOutHospTime; } diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java index d3bc43c..a244e8d 100644 --- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java +++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java @@ -40,7 +40,9 @@ /** * 鏌ヨ鎮h�呴殢璁夸俊鎭� */ - public List<ServiceSubtask> patItem(ServiceSubtask ServiceSubtask); + public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO); + + public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO); /** * 鏂板鍗曚竴浠诲姟锛堥殢璁匡級 diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java index 2d4efa9..fa93511 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java @@ -1,5 +1,6 @@ package com.smartor.service.impl; +import afu.org.checkerframework.checker.oigj.qual.O; import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -9,6 +10,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DtoConversionUtils; import com.ruoyi.common.utils.RSAPublicKeyExample; +import com.ruoyi.common.utils.SecurityUtils; import com.smartor.config.PhoneUtils; import com.smartor.domain.*; import com.smartor.mapper.*; @@ -25,16 +27,17 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.time.LocalTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; - -import static cn.hutool.poi.excel.sax.AttributeName.r; -import static cn.hutool.poi.excel.sax.AttributeName.s; +import java.util.stream.Collectors; /** * 鍗曚竴浠诲姟锛堥殢璁匡級Service涓氬姟灞傚鐞� @@ -89,23 +92,27 @@ /** * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃 * - * @param ServiceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級 + * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級 * @return 鍗曚竴浠诲姟锛堥殢璁匡級 */ @Override - public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtask ServiceSubtask) { - return serviceSubtaskMapper.selectServiceSubtaskList(ServiceSubtask); + public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO) { + return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); } @Override - public ServiceTaskVO queryTaskByCondition(ServiceSubtask ServiceSubtask) { + public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) { //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚� List<PatTaskRelevance> patTaskRelevances = new ArrayList<>(); - List<ServiceSubtask> list = selectServiceSubtaskList(ServiceSubtask); + ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class); + List<ServiceSubtask> list = selectServiceSubtaskList(serviceSubtaskVO); + + ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); if (CollectionUtils.isEmpty(list) || list.size() == 0) { - return new ServiceTaskVO(); + return DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class); } - ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(ServiceSubtask.getTaskid()); + + //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ServiceSubtaskVO涓� ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class); serviceTaskVO.setShowDate(serviceTask.getShowDate()); @@ -138,12 +145,23 @@ //鑾峰彇鍒版偅鑰呬俊鎭紝骞舵斁鍏ュ埌闆嗗悎涓� patTaskRelevance.setName(serviceSubtask1.getSendname()); patTaskRelevance.setAge(serviceSubtask1.getAge()); + patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime()); patTaskRelevance.setSfzh(serviceSubtask1.getSfzh()); patTaskRelevance.setPhone(serviceSubtask1.getPhone()); patTaskRelevance.setAddr(serviceSubtask1.getAddr()); patTaskRelevance.setDiagname(serviceSubtask1.getDiagname()); patTaskRelevance.setPatid(serviceSubtask1.getPatid()); patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate()); + patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode()); + patTaskRelevance.setDeptName(serviceSubtask1.getDeptname()); + patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode()); + patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname()); + patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime()); + patTaskRelevance.setDrname(serviceSubtask1.getDrname()); + patTaskRelevance.setDrcode(serviceSubtask1.getDrcode()); + patTaskRelevance.setEndtime(serviceSubtask1.getEndtime()); + patTaskRelevance.setNurseId(serviceSubtask1.getNurseId()); + patTaskRelevance.setNurseName(serviceSubtask1.getNurseName()); patTaskRelevances.add(patTaskRelevance); } if (serviceSubtask1.getHospType().equals("2")) { @@ -152,12 +170,24 @@ patTaskRelevance.setAge(serviceSubtask1.getAge()); patTaskRelevance.setSfzh(serviceSubtask1.getSfzh()); patTaskRelevance.setPhone(serviceSubtask1.getPhone()); + patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime()); patTaskRelevance.setAddr(serviceSubtask1.getAddr()); patTaskRelevance.setDeptName(serviceSubtask1.getDeptname()); + patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode()); patTaskRelevance.setBedNo(serviceSubtask1.getBedNo()); patTaskRelevance.setDiagname(serviceSubtask1.getDiagname()); patTaskRelevance.setPatid(serviceSubtask1.getPatid()); patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate()); + patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode()); + patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname()); + patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime()); + patTaskRelevance.setStarttime(serviceSubtask1.getStarttime()); + patTaskRelevance.setDrname(serviceSubtask1.getDrname()); + patTaskRelevance.setDrcode(serviceSubtask1.getDrcode()); + patTaskRelevance.setEndtime(serviceSubtask1.getEndtime()); + patTaskRelevance.setStarttime(serviceSubtask1.getStarttime()); + patTaskRelevance.setNurseId(serviceSubtask1.getNurseId()); + patTaskRelevance.setNurseName(serviceSubtask1.getNurseName()); patTaskRelevances.add(patTaskRelevance); } } @@ -167,10 +197,41 @@ } @Override - public List<ServiceSubtask> patItem(ServiceSubtask serviceSubtask) { + public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) { + List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO); + //鏍规嵁鍑洪櫌 鏃堕棿鍊掑簭 + List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime).reversed()).collect(Collectors.toList()); + return sortedServiceSubtaskList; + } + @Override + public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) { + serviceSubtaskVO.setPageSize(99999999); + serviceSubtaskVO.setPageNum(1); + List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO); + Map<String, Object> map = new HashMap<>(); + Integer wzx = 0; + Integer ysf = 0; + Integer yc = 0; + Integer fssb = 0; + Integer yfs = 0; + Integer blq = 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.getExcep().equals("1")) yc = yc + 1; + } + map.put("wzx", wzx); + map.put("ysf", ysf); + map.put("yc", yc); + map.put("fssb", fssb); + map.put("yfs", yfs); + map.put("blq", blq); - return this.selectServiceSubtaskList(serviceSubtask); + return map; } /** @@ -218,22 +279,36 @@ */ @Transactional(rollbackFor = Exception.class) @Override - public int insertOrUpdateTask(ServiceTaskVO serviceTaskVO) { + public Map<String, Integer> insertOrUpdateTask(ServiceTaskVO serviceTaskVO) { if (ObjectUtils.isEmpty(serviceTaskVO)) { log.info("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�"); throw new BaseException("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�"); } - Integer integer = 1; + Integer integer = null; ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class); serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam())); if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) { //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔� if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot())) serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot())); - if (serviceTask.getSendState() == null) serviceTask.setSendState(1); - serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString()); + if (serviceTask.getSendState() == null) { + serviceTask.setSendState(1L); + serviceTaskVO.setSendState(1L); + } + if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) { + serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid()); + } serviceTask.setTemplateid(serviceTaskVO.getTemplateid()); + + serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes()); + serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode()); serviceTaskService.insertServiceTask(serviceTask); + if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) { + Map<String, Integer> map = new HashMap<>(); + map.put("subTaskId", null); + map.put("taskId", serviceTask.getTaskid().intValue()); + return map; + } //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓� ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class); @@ -245,10 +320,25 @@ //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑 serviceSubtask.setSendname(patTaskRelevance.getName()); serviceSubtask.setAge(patTaskRelevance.getAge()); - serviceSubtask.setSfzh(patTaskRelevance.getSfzh()); + serviceSubtask.setSfzh(patTaskRelevance.getIdcardno()); + serviceSubtask.setPhone(patTaskRelevance.getPhone()); + serviceSubtask.setAddr(patTaskRelevance.getAddr()); + serviceSubtask.setPatid(patTaskRelevance.getPatid()); + serviceSubtask.setCreateTime(DateUtils.getNowDate()); + serviceSubtask.setSendstate(1L); + serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode()); + serviceSubtask.setDeptname(patTaskRelevance.getDeptName()); + serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode()); + serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname()); serviceSubtask.setType(serviceTaskVO.getHospType()); serviceSubtask.setHospType(patTaskRelevance.getHospType()); serviceSubtask.setOpenid(patTaskRelevance.getOpenid()); + serviceSubtask.setDrname(patTaskRelevance.getDrname()); + serviceSubtask.setDrcode(patTaskRelevance.getDrcode()); + serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime()); + serviceSubtask.setEndtime(patTaskRelevance.getEndtime()); + serviceSubtask.setNurseId(patTaskRelevance.getNurseId()); + serviceSubtask.setNurseName(patTaskRelevance.getNurseName()); serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); integer = serviceSubtask.getId().intValue(); } @@ -260,19 +350,35 @@ serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot())); //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1 ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid()); - serviceTask.setStopState(serviceTask1.getStopState() + 1); - serviceTask.setTemplateid(serviceTaskVO.getLibtemplateid()); + long l = serviceTask1.getStopState() + 1; + serviceTask.setStopState(l); + if (serviceTaskVO.getLibtemplateid() != null) + serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString()); + serviceTask.setTemplateid(serviceTaskVO.getTemplateid()); serviceTaskService.updateServiceTask(serviceTask); if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) { for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) { ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class); serviceSubtask.setSendname(patTaskRelevance.getName()); + serviceSubtask.setAge(patTaskRelevance.getAge()); + serviceSubtask.setSfzh(patTaskRelevance.getSfzh()); + serviceSubtask.setPhone(patTaskRelevance.getPhone()); serviceSubtask.setAddr(patTaskRelevance.getAddr()); serviceSubtask.setPatid(patTaskRelevance.getPatid()); serviceSubtask.setOpenid(patTaskRelevance.getOpenid()); + serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode()); + serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname()); + serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode()); + serviceSubtask.setDeptname(patTaskRelevance.getDeptName()); serviceSubtask.setType(serviceTaskVO.getHospType()); serviceSubtask.setCreateTime(DateUtils.getNowDate()); + serviceSubtask.setDrname(patTaskRelevance.getDrname()); + serviceSubtask.setDrcode(patTaskRelevance.getDrcode()); + serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime()); serviceSubtask.setHospType(patTaskRelevance.getHospType()); + serviceSubtask.setEndtime(patTaskRelevance.getEndtime()); + serviceSubtask.setNurseId(patTaskRelevance.getNurseId()); + serviceSubtask.setNurseName(patTaskRelevance.getNurseName()); serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam())); if (patTaskRelevance.getIsoperation() != null) { if (patTaskRelevance.getIsoperation() == 2) @@ -289,7 +395,10 @@ } } } - return integer; + Map<String, Integer> map = new HashMap<>(); + map.put("subTaskId", integer); + map.put("taskId", serviceTask.getTaskid().intValue()); + return map; } @@ -337,10 +446,15 @@ if (noVoice == ivrTaskTemplateVO.getNoVoiceNum().intValue()) { //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰� if (nowQuestion.getTargetid() == IvrTaskTemplateScriptVOs.size()) { + //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻 + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES); phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid()); return; } else { //鏈変笅涓�棰� + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES); + IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion); + // 闂锛� 鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙� String date = simpleDateFormat1.format(new Date()); log.info("鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid()); phoneUtils.ttsPlayback(nowQuestion.getScriptContent(), phoneCallBackVO.getUuid()); @@ -373,6 +487,60 @@ Pattern pattern2 = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()); matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult()); } + log.error("PCB--getQuestionText闂涓猴細{},UUID锛歿}", nowQuestion.getScriptContent(), phoneCallBackVO.getUuid()); + if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) { + //璇存槑鍖归厤姝g‘浜� + //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉� + nowQuestion.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1); + serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j)); + + //灏嗛潤榛樼疆涓�0 + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES); + + //灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷 + IvrTaskVisitResult serviceTaskVisitResult = DtoConversionUtils.sourceToTarget(serviceSubtask, IvrTaskVisitResult.class); + serviceTaskVisitResult.setId(null); + serviceTaskVisitResult.setQuestion(nowQuestion.getScriptContent()); + serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult()); + serviceTaskVisitResult.setCreateTime(new Date()); + serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue()); + serviceTaskVisitResultMapper.insertIvrTaskVisitResult(serviceTaskVisitResult); + + //灏嗗尮閰嶅埌鐨勬爣璇嗘敼鎴恡rue + isppd = true; + + //鑾峰彇涓嬩竴棰� + Long nextQuestion = nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion(); + for (IvrTaskTemplateScriptVO script : IvrTaskTemplateScriptVOs) { + if (script.getTargetid() == nextQuestion) { + QuestionMessage questionMessage = new QuestionMessage(); + questionMessage.setNowQuestion(script); + questionMessage.setQuestionList(IvrTaskTemplateScriptVOs); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); + phoneUtils.ttsPlayback(script.getScriptContent(), phoneCallBackVO.getUuid()); + return; + } else if (nextQuestion > IvrTaskTemplateScriptVOs.size()) { + //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜� + String date = simpleDateFormat1.format(new Date()); + log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid()); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES); + phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid()); + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + phoneUtils.hangup("", "", ivrTaskTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid()); + return; + } + } + return; + } else { + //娌℃湁鍖归厤涓婂綋鍓峯ption + //Targetregex2 涓篺alse锛岃〃绀哄湪Targetregex2涓瓨鍦� 璇彞涓殑鍏抽敭瀛楋紝杩欎釜option灏变笉鐢ㄥ啀缁х画鍖归厤浜嗭紝鐩存帴鍖归厤涓嬩竴涓猳ption + continue; + } } if (isppd != true) { @@ -387,6 +555,8 @@ IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion); questionMessage.setQuestionList(IvrTaskTemplateScriptVOs); questionMessage.setNowQuestion(nextQuestion); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES); String date = simpleDateFormat1.format(new Date()); log.info("濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid()); phoneUtils.ttsPlayback(nextQuestion.getScriptContent(), phoneCallBackVO.getUuid()); @@ -395,6 +565,7 @@ //灏卞彲浠ユ寕鏂數璇濅簡 String date = simpleDateFormat1.format(new Date()); log.info("灏卞彲浠ユ寕鏂數璇濅簡------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid()); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES); phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid()); try { Thread.sleep(3000); @@ -421,16 +592,38 @@ } List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1); for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) { + Matcher matcher = null; if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) { Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex()); - pattern.matcher(returnQues.getContent()); + matcher = pattern.matcher(returnQues.getContent()); } + Matcher matcher2 = null; if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) { Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2()); - pattern2.matcher(returnQues.getContent()); + matcher2 = pattern2.matcher(returnQues.getContent()); } log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2()); + if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) { + QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues"); + IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = returnQues.getNowQuestion(); + ivrTaskTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText()); + ivrTaskTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav()); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); + if (ivrLibaExtemplatescript.getIsEnd() == 1) { + //灏嗛棶棰樼疆绌� + IvrTaskTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion(); + nowQuestion1.setScriptContent(null); + nowQuestion1.setScriptVoice(null); + questionMessage.setNowQuestion(nowQuestion1); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); + redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES); + } + //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖 + String date = simpleDateFormat1.format(new Date()); + log.info("璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid()); + phoneUtils.ttsPlayback(nowQuestion.getScriptContent() + ivrTaskTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid()); + } break; } String date = simpleDateFormat1.format(new Date()); @@ -447,6 +640,9 @@ */ @Override public PhoneCallBackYQVO phoneCallBackYQ(PhoneCallReqYQVO phoneCallReqYQVO) { + //瀹氫箟涓�涓垎鏁扮殑鍙橀噺 + Boolean aBoolean1 = redisCache.hasKey(phoneCallReqYQVO.getUuid() + "SCORE"); + if (!aBoolean1) redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", 0); PhoneCallBackYQVO phoneCallBackYQVO = new PhoneCallBackYQVO(); //channel_create 閫氶亾鍒涘缓鐨勬椂鍊欙紝鍙互鎵ц涓�浜涘叾瀹冩搷浣滐紝璀鍙戜釜鐭俊涔嬬被鐨�; 鎴戜滑鐨勪笟鍔″彲浠ヤ笉鐢ㄧ PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑,鏆傛椂鐢ㄤ笉鍒� End_time()= -1鎴杗ull琛ㄧず褰撳墠鐨刟srtext涓嶆槸涓�鍙ュ畬鏁寸殑璇� if (phoneCallReqYQVO.getOperate().equals("channel_create") || phoneCallReqYQVO.getOperate().equals("PlayEventCallback") || phoneCallReqYQVO.getEnd_time() == null || phoneCallReqYQVO.getEnd_time() == -1) { @@ -469,6 +665,8 @@ if (!aBoolean) { //缁欓潤榛樿缃竴涓粯璁ゆ鏁板湪redis涓� redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES); + //濡傛灉涓嶅瓨鍦紝灏辨妸褰撳墠鐨刄UID鍋氫负key锛屾斁鍒板璞′腑鍘� + redisCache.setCacheObject(phoneCallReqYQVO.getUuid(), phoneCallReqYQVO, 120, TimeUnit.MINUTES); } if ("SilentCallback".equals(phoneCallReqYQVO.getOperate())) { @@ -496,7 +694,17 @@ serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate)); serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList); saveQuestionAnswerPhone(serviceSubTaskDetailReq); + //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎 + Long id = serviceSubtask.getId(); + //鍏堟洿鏂颁竴涓嬪垎鏁� + double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + serviceSubtask.setScore(BigDecimal.valueOf(score)); + serviceSubtask.setFinishtime(new Date()); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + Map<String, String> map = delRedisValue(null, id.toString()); + redisCache.setCacheObject(map.get("cacheName"), map.get("val")); redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone()); + redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE"); } return phoneCallBackYQVO; } else if ("AsrCallback".equals(phoneCallReqYQVO.getOperate())) { @@ -540,10 +748,17 @@ Long nextQuestion = null; if (ivrTaskTemplateScriptVO.getBranchFlag().equals("1")) { nextQuestion = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion(); + //鏇存柊鍒嗘暟 + double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore()).doubleValue(); + redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score); } else { nextQuestion = ivrTaskTemplateScriptVO.getNextScriptno(); + //鏇存柊鍒嗘暟 + double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore()).doubleValue(); + redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score); } - for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) { if (script.getSort() == nextQuestion.intValue()) { @@ -561,6 +776,11 @@ if (ivrTaskTemplateScriptVO.getNextScriptno() == 0 || ivrTaskTemplateScriptVO.getNextScriptno() == null) { phoneCallBackYQVO.setType("hangup"); phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue()); + //鏇存柊涓�涓嬪垎鏁� + double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + serviceSubtask.setScore(BigDecimal.valueOf(score)); + serviceSubtask.setFinishtime(new Date()); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); //璁剧疆缁撴潫璇� phoneCallBackYQVO.setValue(ivrTaskTemplate.getRevisitAfter()); Long id = serviceSubtask.getId(); @@ -568,6 +788,7 @@ redisCache.setCacheObject(map.get("cacheName"), map.get("val")); redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone()); redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid()); + redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE"); // return phoneCallBackYQVO; } } @@ -587,11 +808,19 @@ if (StringUtils.isNotEmpty(phoneCallBackYQVO.getValue())) phoneCallBackYQVO.setValue(phoneCallBackYQVO.getValue() + ivrTaskTemplate.getRevisitAfter()); else phoneCallBackYQVO.setValue(ivrTaskTemplate.getRevisitAfter()); + + //鏇存柊涓�涓嬪垎鏁� + double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + serviceSubtask.setScore(BigDecimal.valueOf(score)); + serviceSubtask.setFinishtime(new Date()); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎 Long id = serviceSubtask.getId(); Map<String, String> map = delRedisValue(null, id.toString()); redisCache.setCacheObject(map.get("cacheName"), map.get("val")); redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone()); + redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE"); // return phoneCallBackYQVO; } else { //鏍规嵁ivrTaskTemplateScriptVO.getNextScriptno()鑾峰彇涓嬩竴棰樿繘琛屾彁闂� @@ -603,6 +832,12 @@ phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent)); //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀� redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES); + + //鏇存柊涓�涓嬪垎鏁� + double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + score = BigDecimal.valueOf(score).add(script.getScore()).doubleValue(); + + redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score); } } } @@ -624,6 +859,7 @@ serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate)); serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList); saveQuestionAnswerPhone(serviceSubTaskDetailReq); +// String xh = idSort.split("-")[1]; //濡傛灉閫夐」鍒嗘敮涓�1鐨勮瘽锛屽垯闇�瑕佹牴鎹棶棰樹笂鐨刵extScriptno杩涜璺宠浆 //闂瓟棰樻病鏈夎烦杞� @@ -635,6 +871,14 @@ String scriptContent = ivrTaskTemplateScript1.getScriptContent(); phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent)); redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid()); + redisCache.setCacheObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone(), ivrTaskTemplateScript1.getId().toString()); + + //鏇存柊涓�涓嬪垎鏁� + double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getScore()).doubleValue(); + redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score); + +// return phoneCallBackYQVO; } } } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null) { @@ -642,10 +886,19 @@ phoneCallBackYQVO.setType("hangup"); phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue()); phoneCallBackYQVO.setValue(ivrTaskTemplate.getRevisitAfter()); + + //鏇存柊涓�涓嬪垎鏁� + double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + serviceSubtask.setScore(BigDecimal.valueOf(score)); + serviceSubtask.setFinishtime(new Date()); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎 Long id = serviceSubtask.getId(); + Map<String, String> map = delRedisValue(null, id.toString()); + redisCache.setCacheObject(map.get("cacheName"), map.get("val")); redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone()); - log.error("鐢佃瘽鎸傛柇4"); + redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE"); } //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆� @@ -677,9 +930,7 @@ break; } } - } - } return phoneCallBackYQVO; } @@ -763,9 +1014,9 @@ if (!StringUtils.isEmpty(value0)) { pullTaskVOList = getPullTaskList(value0, "cache-0"); //灏哻ache-0鐨勬暟鎹紝杞Щ涓嶅鍔瞔ache-00涓� - String cache00 = redisCache.getCacheObject("cache-0"); - if (!StringUtils.isEmpty(cache00)) redisCache.setCacheObject("cache-0", cache00 + "," + value0); - else redisCache.setCacheObject("cache-0", value0); + String cache00 = redisCache.getCacheObject("cache-00"); + if (!StringUtils.isEmpty(cache00)) redisCache.setCacheObject("cache-00", cache00 + "," + value0); + else redisCache.setCacheObject("cache-00", value0); redisCache.deleteObject("cache-0"); } else { for (int i = 1; i < 6; i++) { @@ -776,6 +1027,10 @@ if (CollectionUtils.isNotEmpty(pullTaskVOList2) && pullTaskVOList2.size() > 0) { pullTaskVOList.addAll(pullTaskVOList2); } + //灏哻ache-i鐨勬暟鎹紝杞Щ涓嶅鍔瞔ache-0i涓� + String cache0i = redisCache.getCacheObject("cache-0" + i); + if (!StringUtils.isEmpty(cache0i)) redisCache.setCacheObject("cache-0" + i, cache0i + "," + value); + else redisCache.setCacheObject("cache-0" + i, value); redisCache.deleteObject("cache-" + i); } } @@ -839,6 +1094,242 @@ return pullTaskVOList; } + + //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛� +// @Override +// public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) { +// log.error("phoneCallBackVO鐨勫叆鍙傦細{},{},{},{},{},{},{}", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8()); +// //鑾峰彇鏁版嵁 +// Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid()); +// if (!aBoolean) { +// throw new BaseException("璇uid涓嶅瓨鍦�"); +// } +// Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "hangup"); +// if (hangupValue != null && hangupValue == 1) { +// //hangupValue == 1 闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽 +// PhoneUtils phoneUtils = new PhoneUtils(); +// phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null); +// +// } +// +// Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid()); +//// ObjectMapper objectMapper = new ObjectMapper(); +//// Map<String, Object> map = null; +//// try { +//// map = objectMapper.readValue(cacheObject, Map.class); +//// } catch (JsonProcessingException e) { +//// e.printStackTrace(); +//// } +// +// ServiceSubtask ServiceSubtask = (ServiceSubtask) map.get("ServiceSubtask"); +// List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO"); +// //灏唘uid鏇存柊鍒版暟鎹簱涓� +// ServiceSubtask.setSenduuid(phoneCallBackVO.getUuid()); +// ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask); +// +// //鑾峰彇妯℃澘淇℃伅 +// IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO"); +// +// +// //棣栧厛鍒ゆ柇resultType +// if (phoneCallBackVO.getResultType() == 1) { +// //鍛煎彨缁撴灉鎺ュ彛: 1 +// if (phoneCallBackVO.getUint8() == 1) { +// //鍛煎彨澶辫触锛屽幓redis涓褰曚竴涓嬪け璐ユ鏁帮紝杩涜鍐嶆鍛煎彨 +// Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "uint8"); +// if (integer != null) { +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", integer + 1, 120, TimeUnit.MINUTES); +// } else { +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", 1, 120, TimeUnit.MINUTES); +// } +// +// if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) { +// log.info("鏃犱汉鎺ュ惉锛歿}, {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid()); +// //杩炵画鎵撹瀹氭锛屽鏋滆娌′汉鎺ワ紝閭e氨缁撴潫 +// ServiceSubtask.setResult(phoneCallBackVO.getErrResult()); +// ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask); +// redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8"); +// } else if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) { +// //杩涜閲嶆嫧 +// PhoneUtils phoneUtils = new PhoneUtils(); +// phoneUtils.ob(null, null, null, null, null, null, null, ServiceSubtask.getPhone(), phoneCallBackVO.getUuid(), true); +// } +// } +// +// } else if (phoneCallBackVO.getResultType() == 2) { +// //閫氳瘽鐘舵�佹洿鏂版帴鍙�: 2 +// if (phoneCallBackVO.getEnumState() == 0) { +// // 0-鎸搩 +// Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState"); +// +// if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) { +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", integer + 1, 120, TimeUnit.MINUTES); +// } else if (integer == null) { +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES); +// } else if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) { +// ServiceSubtask.setResult("鏃犱汉鎺ュ惉"); +// ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask); +// redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState"); +// } +// } else if (phoneCallBackVO.getEnumState() == 2) { +// //鎮h�呮寕鏂數璇� +// log.info("鎮h�呮寕鏂數璇濓細{}", phoneCallBackVO.getUuid()); +// ServiceSubtask.setResult(phoneCallBackVO.getHangUpResult()); +// ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask); +// redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState"); +// } +// +// +// } else if (phoneCallBackVO.getResultType() == 3) { +// //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3 +// Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice"); +// QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues"); +// IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion(); +// PhoneUtils phoneUtils = new PhoneUtils(); +// +// if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) { +// //鏃犲洖璇� +// //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у�� +// if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) { +// //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰� +// if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) { +// //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻 +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES); +// phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid()); +// } else { +// //鏈変笅涓�棰� +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES); +// IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion); +// // 闂锛� 鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙� +// phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid()); +// } +// } else { +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES); +// //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳) +// String slienceText = nowQuestion.getSlienceText(); +// //闈欓粯璇濇湳 + 闂锛� 鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙� +// phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid()); +// return new PhoneCallBackVO(); +// } +// +// } else { +// //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛� +// for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) { +// //鍖呭惈 +// Matcher matcher = null; +// if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) { +// Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()); +// matcher = pattern.matcher(phoneCallBackVO.getTextResult()); +// } +// //涓嶅寘鍚� +// Matcher matcher2 = null; +// if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) { +// Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()); +// matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult()); +// } +// log.info("phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()); +// if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) { +// //璇存槑鍖归厤姝g‘浜� +// //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉� +// nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true); +// ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j)); +// +// +// //灏嗛潤榛樼疆涓�0 +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES); +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES); +// //鑾峰彇涓嬩竴棰� +// Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion(); +// for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) { +// if (script.getTargetid() == nextQuestion) { +// QuestionMessage questionMessage = new QuestionMessage(); +// questionMessage.setNowQuestion(script); +// questionMessage.setQuestionList(ivrLibaTemplateScriptVOs); +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); +// break; +// } +// } +// break; +// } else { +// //娌℃湁鍖归厤鍒� +// Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum"); +// //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜� +// if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) { +// //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣ +// if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) { +// QuestionMessage questionMessage = new QuestionMessage(); +// IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion); +// questionMessage.setQuestionList(ivrLibaTemplateScriptVOs); +// questionMessage.setNowQuestion(nextQuestion); +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES); +// } else { +// //灏卞彲浠ユ寕鏂數璇濅簡 +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES); +// phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid()); +// break; +// } +// } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) { +// //娌℃湁闂埌瑙勫畾娆℃暟 +// mateNum = mateNum + 1; +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES); +// } +// } +// +// } +// //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆� +// String extemplateID = ivrLibaTemplateVO.getSubmoduleID(); +// String[] split = extemplateID.split(","); +// List<String> list = Arrays.asList(split); +// List<Long> list1 = new ArrayList<>(); +// if (StringUtils.isNotEmpty(extemplateID)) { +// for (String str : list) { +// list1.add(Long.valueOf(str)); +// } +// List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1); +// for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) { +// Matcher matcher = null; +// if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) { +// Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex()); +// matcher = pattern.matcher(returnQues.getContent()); +// } +// +// Matcher matcher2 = null; +// if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) { +// Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2()); +// matcher2 = pattern2.matcher(returnQues.getContent()); +// } +// log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2()); +// if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) { +// QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues"); +// IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion(); +// ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText()); +// ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav()); +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); +// if (ivrLibaExtemplatescript.getIsEnd() == 1) { +// //灏嗛棶棰樼疆绌� +// IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion(); +// nowQuestion1.setQuestionText(null); +// nowQuestion1.setQuestionVoice(null); +// questionMessage.setNowQuestion(nowQuestion1); +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); +// +// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES); +// } +// +// //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖 +// +// +// } +// break; +// } +// } +// +// } +// } +// return phoneCallBackVO; +// } + @Override public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) { int i = 0; @@ -846,7 +1337,7 @@ RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key)); Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key)); - ServiceSubtask ivrTaskSingle = new ServiceSubtask(); + ServiceSubtaskVO ivrTaskSingle = new ServiceSubtaskVO(); ivrTaskSingle.setTaskid(tid); ivrTaskSingle.setPatid(pid); List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle); @@ -870,6 +1361,38 @@ return i; } + @Override + public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq) { + if (serviceSubtaskCountReq.getUserId() == null) { + Long userId = SecurityUtils.getUserId(); + serviceSubtaskCountReq.setUserId(userId); + } + if (serviceSubtaskCountReq.getStartTime() == null) { + LocalDate of = LocalDate.of(LocalDate.now().getYear(), 1, 1); + serviceSubtaskCountReq.setStartTime(Date.from(of.atStartOfDay(ZoneId.systemDefault()).toInstant())); + } + if (serviceSubtaskCountReq.getEndTime() == null) { + serviceSubtaskCountReq.setEndTime(new Date()); + } + List<ServiceSubtaskCount> sfFzInfoEveryMonth = serviceSubtaskMapper.getSfFzInfoEveryMonth(serviceSubtaskCountReq); + List<ServiceSubtaskCount> result = sfFzInfoEveryMonth.stream().collect(Collectors.groupingBy(ServiceSubtaskCount::getMonth, Collectors.groupingBy(ServiceSubtaskCount::getServiceType, Collectors.summingLong(ServiceSubtaskCount::getCount)))).entrySet().stream().flatMap(monthEntry -> monthEntry.getValue().entrySet().stream().map(typeEntry -> new ServiceSubtaskCount(monthEntry.getKey(), typeEntry.getKey(), typeEntry.getValue()))).collect(Collectors.toList()); + + List<ServiceSubtaskCount> result2 = new ArrayList<>(); + //鏍规嵁鏈嶅姟绫诲瀷杩涜绛涢�� + if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getServiceType())) { + for (ServiceSubtaskCount serviceSubtaskCount : result) { + for (Long type : serviceSubtaskCountReq.getServiceType()) { + if (type == serviceSubtaskCount.getServiceType()) { + result2.add(serviceSubtaskCount); + } + } + } + } else { + result2 = result; + } + return result2; + } + private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO IvrTaskTemplateScriptVO) { for (int j = 0; j < IvrTaskTemplateScriptVOList.size(); j++) { diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java index 87c043d..ce70d11 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java @@ -172,16 +172,19 @@ info = wjInfo(serviceTask, patid, isFinish); } else { //瀹f暀 - info = xjInfo(Long.valueOf(serviceTask.getLibtemplateid()), taskid, patid,isFinish); + info = xjInfo(Long.valueOf(serviceTask.getLibtemplateid()), taskid, patid, isFinish); } //鍙鎵撳紑浜嗛〉闈紝灏辩畻鎴愬姛 - ServiceSubtask ServiceTaskSingle = new ServiceSubtask(); - ServiceTaskSingle.setTaskid(taskid); - ServiceTaskSingle.setPatid(patid); - ServiceTaskSingle.setResult("success"); - ServiceTaskSingle.setFinishtime(new Date()); - serviceSubtaskMapper.updateServiceSubtaskByCondition(ServiceTaskSingle); + if (isFinish) { + ServiceSubtask ss = new ServiceSubtask(); + ss.setTaskid(taskid); + ss.setPatid(patid); + ss.setSendstate(1L); + ss.setResult("success"); + ss.setFinishtime(new Date()); + serviceSubtaskMapper.updateServiceSubtaskByCondition(ss); + } SvyTaskTemplate svyTaskTemplate = svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid()); if (StringUtils.isNotEmpty(serviceTask.getKcb())) map.put("kcb", serviceTask.getKcb()); map.put("script", info); diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceThirdDataServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceThirdDataServiceImpl.java index abd1101..d4122ac 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceThirdDataServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceThirdDataServiceImpl.java @@ -45,9 +45,9 @@ @Override public List<ServiceThirdData> queryList(ServiceThirdData serviceThirdData) { - log.info("------serviceThirdData鐨勫叆鍙傦細{}", serviceThirdData); + log.error("------serviceThirdData鐨勫叆鍙傦細{}", serviceThirdData); List<ServiceThirdData> serviceThirdDataList = serviceThirdDataMapper.selectServiceThirdDataList(serviceThirdData); - log.info("------serviceThirdDataList鑾峰彇鏁版嵁鐨勬暟閲忥細{}", serviceThirdDataList.size()); + log.error("------serviceThirdDataList鑾峰彇鏁版嵁鐨勬暟閲忥細{}", serviceThirdDataList.size()); for (ServiceThirdData std : serviceThirdDataList) { PipeParser parser = new PipeParser(); Message message = null; @@ -86,7 +86,7 @@ } HospitalRecord hospitalRecord = (HospitalRecord) objectList.get(0); - log.info("hospitalRecord鐨勫�间负锛歿}", hospitalRecord); + log.error("hospitalRecord鐨勫�间负锛歿}", hospitalRecord); //濡傛灉patientid涓虹┖锛屽啀瀛榬ecord灏辨垚鑴忔暟鎹簡 if (StringUtils.isNotBlank(hospitalUserinfo.getPatientID())) { hospitalRecord.setMessageID(std.getId().toString()); @@ -99,8 +99,9 @@ serviceThirdData2.setRemark("PatientID涓虹┖"); } serviceThirdData2.setUserInfoId(hospitalUserinfo.getID()); + log.error("serviceThirdData2鐨勫弬鏁帮細{}", serviceThirdData2); int ii = serviceThirdDataMapper.updateIsDeal(serviceThirdData2); - System.out.println("鏄惁淇敼鎴愬姛锛�" + ii); + log.error("鏄惁淇敼鎴愬姛锛歿}", ii); } catch (HL7Exception e) { e.printStackTrace(); } diff --git a/smartor/src/main/java/com/smartor/yiwudataanalysis/ADT_A03.java b/smartor/src/main/java/com/smartor/yiwudataanalysis/ADT_A03.java index 7e1505f..51d8522 100644 --- a/smartor/src/main/java/com/smartor/yiwudataanalysis/ADT_A03.java +++ b/smartor/src/main/java/com/smartor/yiwudataanalysis/ADT_A03.java @@ -13,6 +13,7 @@ import com.ruoyi.common.utils.StringUtils; import com.smartor.domain.HospitalRecord; import com.smartor.domain.HospitalUserinfo; +import org.apache.commons.lang3.ObjectUtils; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -373,7 +374,10 @@ //鍑洪櫌鏃堕棿 A03 娑堟伅蹇呭~ TS[] pv145_dischargeDateTime = pv1.getPv145_DischargeDateTime(); - TS ts = pv145_dischargeDateTime[0]; + TS ts = null; + if (pv145_dischargeDateTime != null && pv145_dischargeDateTime.length > 0) { + ts = pv145_dischargeDateTime[0]; + } // Date date2 = new Date(Long.valueOf(ts.encode())); // SimpleDateFormat sdff = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String dischargeDateTime = sdff.format(date2); @@ -381,12 +385,13 @@ SimpleDateFormat inputFormat = new SimpleDateFormat("yyyyMMddHHmmss"); // 杈撳叆鏃ユ湡鏍煎紡 Date date2 = null; // 瑙f瀽涓篋ate瀵硅薄 try { - date2 = inputFormat.parse(ts.encode()); + if (ObjectUtils.isNotEmpty(ts)) date2 = inputFormat.parse(ts.encode()); } catch (ParseException e) { e.printStackTrace(); } SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 杈撳嚭鏃ユ湡鏍煎紡 - String dischargeDateTime = outputFormat.format(date2); + String dischargeDateTime = null; + if (date2 != null) dischargeDateTime = outputFormat.format(date2); //璁块棶鏍囩ず String visitIndicator = pv1.getPv151_VisitIndicator().encode(); diff --git a/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml b/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml index ad48259..1349cf4 100644 --- a/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml +++ b/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml @@ -500,14 +500,14 @@ <if test="deptname != null and deptname != ''"> AND d.deptname LIKE concat('%',#{deptname}, '%') </if> - <if test="leavehospitaldistrictcodes != null"> + <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0"> AND d.leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> - <if test="leaveldeptcodes != null"> + <if test="leaveldeptcodes != null and leaveldeptcodes.size() > 0"> AND d.leaveldeptcode IN <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator="," close=")"> diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml index 52c1d4a..997a089 100644 --- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml +++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml @@ -170,6 +170,20 @@ and b.del_flag=0 and a.id = b.patid AND a.idcardno != '' + <if test="startOutHospTime != null"> + AND date_format(b.endtime,'%y%m%d') >= date_format(#{startOutHospTime},'%y%m%d') + </if> + <if test="endOutHospTime != null"> + AND date_format(b.endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d') + </if> + + + <if test="startInHospTime != null"> + AND date_format(b.starttime,'%y%m%d') >= date_format(#{startInHospTime},'%y%m%d') + </if> + <if test="endInHospTime != null"> + AND date_format(b.starttime,'%y%m%d') <= date_format(#{endInHospTime},'%y%m%d') + </if> <if test="hospitalname != null and hospitalname != ''">and hospitalname like concat('%', #{hospitalname}, '%') </if> @@ -204,14 +218,14 @@ b.leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%') </if> - <if test="leavehospitaldistrictcodes != null"> + <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0"> AND b.leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> - <if test="leaveldeptcodes != null"> + <if test="leaveldeptcodes != null and leaveldeptcodes.size()>0"> AND b.leaveldeptcode IN <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator="," close=")"> @@ -300,14 +314,14 @@ #{leavediagname}, '%') </if> <if test="drname != null and drname != ''">and b.drname like concat('%', #{drname}, '%')</if> - <if test="leavehospitaldistrictcodes != null "> + <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0"> AND b.leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> - <if test="leaveldeptcodes != null"> + <if test="leaveldeptcodes != null and leaveldeptcodes.size()>0"> AND b.leaveldeptcode IN <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator="," close=")"> diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml index 4084d2b..0019030 100644 --- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml +++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml @@ -178,14 +178,20 @@ <if test="templatename != null and templatename != ''">and templatename like concat('%', #{templatename}, '%') </if> - <if test="leavehospitaldistrictcodes != null"> + <if test="startOutHospTime != null"> + AND date_format(endtime,'%y%m%d') >= date_format(#{startOutHospTime},'%y%m%d') + </if> + <if test="endOutHospTime != null"> + AND date_format(endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d') + </if> + <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> - <if test=" leaveldeptcodes != null"> + <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0"> AND deptcode IN <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator="," close=")"> @@ -541,6 +547,7 @@ <if test="sendname != null">sendname = #{sendname},</if> <if test="phone != null">phone = #{phone},</if> <if test="sex != null">sex = #{sex},</if> + <if test="sendstate != null ">sendstate = #{sendstate},</if> <if test="age != null">age = #{age},</if> <if test="sfzh != null">sfzh = #{sfzh},</if> <if test="addr != null">addr = #{addr},</if> diff --git a/smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml index 167731b..f9e35c8 100644 --- a/smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml +++ b/smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml @@ -147,14 +147,14 @@ <if test="leavehospitaldistrictname != null ">and leavehospitaldistrictname = #{leavehospitaldistrictname}</if> <if test="leavehospitaldistrictcode != null ">and leavehospitaldistrictcode = #{leavehospitaldistrictcode}</if> - <if test="leavehospitaldistrictcodes != null "> + <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> - <if test="leaveldeptcodes != null"> + <if test="leaveldeptcodes != null and leaveldeptcodes.size()>0"> AND deptcode IN <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator="," close=")"> @@ -316,7 +316,7 @@ <if test="serviceType != null and serviceType != ''">service_type = #{serviceType},</if> <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 != ''">kcb = #{jsy},</if> + <if test="jsy != null and jsy != ''">jsy = #{jsy},</if> <if test="leavehospitaldistrictname != null ">leavehospitaldistrictname = #{leavehospitaldistrictname},</if> <if test="leavehospitaldistrictcode != null ">leavehospitaldistrictcode = #{leavehospitaldistrictcode},</if> </trim> diff --git a/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateMapper.xml index 6b157c5..2dfc0ba 100644 --- a/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateMapper.xml +++ b/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateMapper.xml @@ -131,7 +131,7 @@ <select id="selectSvyTaskTemplateBySvyid" parameterType="Long" resultMap="SvyTaskTemplateResult"> <include refid="selectSvyTaskTemplateVo"/> - where id = #{id} + where del_flag=0 and id = #{id} </select> <insert id="insertSvyTaskTemplate" parameterType="com.smartor.domain.SvyTaskTemplate" useGeneratedKeys="true" -- Gitblit v1.9.3