From fce30cf9f7692d49c3d408475dfb72d289b1cd4f Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期五, 25 四月 2025 17:41:50 +0800 Subject: [PATCH] 代码提交 --- smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 163 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 138 insertions(+), 25 deletions(-) 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 4e62343..6a2afc8 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java @@ -92,6 +92,12 @@ @Autowired private FtpService ftpService; + @Autowired + private PatMedInhospMapper patMedInhospMapper; + + @Autowired + private PatArchiveMapper patArchiveMapper; + @Value("${pri_key}") private String pri_key; @@ -256,9 +262,7 @@ @Override public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) { List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO); - //鏍规嵁鍑洪櫌 鏃堕棿鍊掑簭 - List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime, Comparator.nullsLast(Comparator.naturalOrder())).reversed()).collect(Collectors.toList()); - return sortedServiceSubtaskList; + return selectServiceSubtaskList; } @Override @@ -289,7 +293,7 @@ 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() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1; if (serviceSubtask.getSendstate() == 1L) blq = blq + 1; if (serviceSubtask.getExcep().equals("1")) yc = yc + 1; } @@ -316,6 +320,49 @@ } /** + * 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級 + * + * @param serviceSubtask 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級 + * @return 缁撴灉 + */ + @Override + public String addSubTaskAgain(ServiceSubtask serviceSubtask) { + ServiceSubtask serviceSubtask1 = selectServiceSubtaskById(serviceSubtask.getId()); + PatMedInhosp patMedInhosp = new PatMedInhosp(); + patMedInhosp.setPatid(serviceSubtask1.getPatid()); + patMedInhosp.setInhospstate("0"); + List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp); + PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask1.getPatid()); + + if (patMedInhospList.size() > 0) { + serviceSubtask1.setIsVisitAgain(2); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); + return "鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜�"; + } else if (serviceSubtask1.getSendstate() == 4L) { + serviceSubtask1.setIsVisitAgain(2); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); + return "鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц"; + } else if (patArchive.getNotrequiredFlag().equals("1")) { + serviceSubtask1.setIsVisitAgain(2); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); + return "鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟"; + } + //鏂板鍐嶆闅忚浠诲姟 + ServiceSubtask serviceSubtask2 = DtoConversionUtils.sourceToTarget(serviceSubtask1, ServiceSubtask.class); + serviceSubtask2.setId(null); + serviceSubtask2.setVisitCount(serviceSubtask1.getVisitCount() + 1); + serviceSubtask2.setSendstate(2L); + int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask2); + if (i == 1) { + //鏂板鎴愬姛鍚庯紝闇�瑕佸皢涔嬪墠鐨勪换鍔¤缃负涓嶈鍐嶉殢璁匡紙闃叉閲嶅鐐癸紝鐒跺悗閲嶅鐢熸垚锛� + serviceSubtask1.setIsVisitAgain(2); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); + return "鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛"; + } + return "鍐嶆闅忚浠诲姟鍒涘缓澶辫触锛屽啀璇锋閲嶈瘯"; + } + + /** * 淇敼鍗曚竴浠诲姟锛堥殢璁匡級 * * @param serviceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級 @@ -324,6 +371,8 @@ @Override public Boolean updateServiceSubtask(ServiceSubtask serviceSubtask) { serviceSubtask.setUpdateTime(DateUtils.getNowDate()); + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6) + serviceSubtask.setFinishtime(new Date()); return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); } @@ -374,16 +423,25 @@ if (serviceTask.getSendState() == null) { serviceTask.setSendState(1L); serviceTaskVO.setSendState(1L); + } else { + serviceTask.setSendState(serviceTaskVO.getSendState()); } if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) { serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid()); serviceTask.setLibtemplatename(serviceTaskVO.getLibtemplatename()); } - serviceTask.setTemplateid(tempid); - serviceTask.setTemplatename(tempName); + if (serviceTaskVO.getTemplateid() != null) { + serviceTask.setTemplateid(serviceTaskVO.getTemplateid()); + serviceTask.setTemplatename(serviceTaskVO.getTemplatename()); + } else { + serviceTask.setTemplateid(tempid); + serviceTask.setTemplatename(tempName); + } serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes()); serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode()); - serviceTask.setSendState(2L); + if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L); + serviceTask.setCreateTime(new Date()); + serviceTask.setUpdateTime(new Date()); serviceTaskService.insertServiceTask(serviceTask); log.error("----serviceTaskVO.getAppltype()鐨勫�间负锛歿}", serviceTaskVO.getAppltype()); if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) { @@ -491,6 +549,8 @@ serviceSubtask.setEndtime(patTaskRelevance.getEndtime()); serviceSubtask.setNurseId(patTaskRelevance.getNurseId()); serviceSubtask.setNurseName(patTaskRelevance.getNurseName()); + serviceSubtask.setCreateBy(serviceTask.getCreateBy()); + serviceSubtask.setUpdateBy(serviceTask.getCreateBy()); if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime()); serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); @@ -504,22 +564,51 @@ serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot())); //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1 ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid()); - long l = serviceTask1.getStopState() + 1; - serviceTask.setStopState(l); +// long l = serviceTask1.getStopState() + 1; +// serviceTask.setStopState(l); + //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎 + ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); + serviceSubtaskVO.setTaskid(serviceTask1.getTaskid()); + serviceSubtaskVO.setSendstate(2L); + List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); + serviceSubtaskVO.setSendstate(1L); + List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); + if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { + if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1); + } else { + if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1; + } + if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { + for (ServiceSubtask serviceSubtask : serviceSubtaskList) { + log.error("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString()); + serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId()); + redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString()); + redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString()); + redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString()); + redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString()); + redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString()); + redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString()); + } + } + if (serviceTaskVO.getLibtemplateid() != null) serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString()); serviceTask.setTemplateid(serviceTaskVO.getTemplateid()); serviceTask.setLongTask(serviceTaskVO.getLongTask()); + serviceTask.setUpdateTime(new Date()); serviceTaskService.updateServiceTask(serviceTask); if (serviceTaskVO.getAppltype().equals("1") || serviceTaskVO.getAppltype().equals("2")) { - ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); - serviceTaskdept.setTaskId(serviceTask.getTaskid()); - serviceTaskdept.setTaskName(serviceTask.getTaskName()); - serviceTaskdept.setLongtask(0L); - if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L); + + if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) { String[] deptcodes = serviceTaskVO.getDeptcode().split(","); for (String deptCode : deptcodes) { + ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); + serviceTaskdept.setTaskId(serviceTask.getTaskid()); + serviceTaskdept.setTaskName(serviceTask.getTaskName()); + serviceTaskdept.setLongtask(0L); + serviceTaskdept.setOrgid(serviceTaskVO.getOrgid()); + if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L); serviceTaskdept.setDeptCode(deptCode); serviceTaskdept.setDeptType("1"); serviceTaskdept.setServiceType(serviceTaskVO.getServiceType()); @@ -537,6 +626,12 @@ if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) { String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(","); for (String districtcode : leavehospitaldistrictcodes) { + ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); + serviceTaskdept.setTaskId(serviceTask.getTaskid()); + serviceTaskdept.setTaskName(serviceTask.getTaskName()); + serviceTaskdept.setLongtask(0L); + serviceTaskdept.setOrgid(serviceTaskVO.getOrgid()); + if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L); serviceTaskdept.setDeptCode(districtcode); serviceTaskdept.setDeptType("2"); serviceTaskdept.setServiceType(serviceTaskVO.getServiceType()); @@ -664,9 +759,12 @@ serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam())); if (patTaskRelevance.getIsoperation() != null) { if (patTaskRelevance.getIsoperation() == 2) - serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask); + serviceSubtask.setUpdateBy(serviceTask.getUpdateBy()); + serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask); if (patTaskRelevance.getIsoperation() == 1) { serviceSubtask.setSendstate(1L); + serviceSubtask.setUpdateBy(serviceTask.getUpdateBy()); + serviceSubtask.setCreateBy(serviceTask.getUpdateBy()); serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); } if (patTaskRelevance.getIsoperation() == 3) @@ -1608,7 +1706,7 @@ } } if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList); - log.error("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", pullTaskVOList.size()); + log.error("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null); return pullTaskVOList; } @@ -1631,6 +1729,14 @@ log.error("璇ubId鏈夐棶棰橈紝鍦ㄨ〃涓煡璇笉鍒帮細{}", subId); continue; } + if (StringUtils.isEmpty(serviceSubtask.getPhone())) { + serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�"); + serviceSubtask.setSendstate(4L); + serviceSubtask.setResult("error"); + serviceSubtask.setFinishtime(new Date()); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + continue; + } ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid()); if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue; @@ -1647,7 +1753,10 @@ } } //濡傛灉ivrTaskTemplateScript涓虹┖锛屼篃灏辨病鏈夊線涓嬫墽琛岀殑蹇呰浜� - if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) return null; + if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) { + log.error("---------杩欎釜ivrTaskTemplate.getId()鐨勯棶棰樹负绌猴細{}", ivrTaskTemplate.getId()); + continue; + } //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂 String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getIvrtext()); String kcb = serviceTask.getKcb() + "," + scrContent; @@ -1988,7 +2097,7 @@ serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid())); serviceSubtask.setFinishtime(new Date()); serviceSubtask.setUpdateTime(new Date()); - log.error("鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}",serviceSubtask); + log.error("鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}", serviceSubtask); serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); //涓嬭浇鏂囦欢 ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString()); @@ -2003,9 +2112,9 @@ serviceSubtask.setSendstate(6L); serviceSubtask.setFinishtime(new Date()); serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); - int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1; // 鍔�1鏄烦杩�/绗﹀彿 - int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/"); - String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex); +// int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1; // 鍔�1鏄烦杩�/绗﹀彿 +// int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/"); +// String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex); //涓嬭浇鏂囦欢 ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString()); redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup"); @@ -2107,12 +2216,12 @@ serviceSubtaskStatistic.setYczs(serviceSubtaskStatistic.getYczs() + 1L); } } - //闅忚瀹屾垚鐜�=宸插彂閫�/闅忚鏁� - if (serviceSubtaskStatistic.getYfsCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) { + //闅忚瀹屾垚鐜�=宸插畬鎴�/搴旈殢璁块噺 + if (serviceSubtaskStatistic.getYwcCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) { serviceSubtaskStatistic.setSfwcl("0"); } else { // BigDecimal multiply = BigDecimal.valueOf(serviceSubtaskStatistic.getYfsCount()).divide(BigDecimal.valueOf(serviceSubtaskList.size()), 2, BigDecimal.ROUND_HALF_UP); - BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYfsCount().toString()).divide(new BigDecimal(serviceSubtaskList.size() + ""), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYwcCount().toString()).divide(new BigDecimal(serviceSubtaskStatistic.getYsfCount().toString()), 2, BigDecimal.ROUND_HALF_UP); serviceSubtaskStatistic.setSfwcl(multiply.toString()); } @@ -2138,6 +2247,7 @@ serviceSubtaskDetail.setTaskid(serviceSubtask1.getTaskid()); serviceSubtaskDetail.setPatid(serviceSubtask1.getPatid()); } + serviceSubtaskDetail.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null); serviceSubtaskDetail.setUuid(phoneCallReqYQVO.getUuid()); serviceSubtaskDetail.setPhone(phoneCallReqYQVO.getPhone()); serviceSubtaskDetail.setOperate(serviceSubtask.getCreateBy()); @@ -2152,12 +2262,13 @@ serviceSubtaskDetail.setEndTime(System.currentTimeMillis()); serviceSubtaskDetail.setSentEnd(1L); serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString()); - serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId()); + serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno()); serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getIvrtext()); serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath()); serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType()); serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions()); serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText()); + serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId()); int i = 1; for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) { @@ -2180,10 +2291,12 @@ RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key); String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); + String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key); ServiceOutPath serviceOutPath = new ServiceOutPath(); serviceOutPath.setParam1(taskId); serviceOutPath.setParam2(patid); serviceOutPath.setCreateTime(new Date()); + serviceOutPath.setParam6(subId); iServiceOutPathService.insertServiceOutPath(serviceOutPath); //杞垚16杩涘埗 String format = String.format("%03X", serviceOutPath.getId()); -- Gitblit v1.9.3