From 55f5271f893a25a7be671b24938e49976936a67b Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期一, 29 九月 2025 18:30:00 +0800 Subject: [PATCH] 新增Orgid --- ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java | 1000 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 525 insertions(+), 475 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java index 21b1153..8ed8bdb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java @@ -5,6 +5,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.dx.MessageSend; import com.ruoyi.common.enums.MsgLSEnum; import com.ruoyi.common.enums.ServiceFromEnum; import com.ruoyi.common.enums.WxGZHEnum; @@ -14,11 +15,10 @@ import com.ruoyi.common.utils.RSAPublicKeyExample; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.http.HttpUtils; +import com.ruoyi.system.service.ISysConfigService; import com.smartor.common.LSHospTokenUtil; import com.smartor.domain.*; -import com.smartor.mapper.PatArchiveMapper; -import com.smartor.mapper.ServiceSubtaskMapper; -import com.smartor.mapper.ServiceTaskMapper; +import com.smartor.mapper.*; import com.smartor.service.IBaseSmsaccountService; import com.smartor.service.IServiceOutPathService; import com.smartor.service.IServiceSubtaskRecordService; @@ -34,6 +34,8 @@ import java.io.IOException; import java.security.MessageDigest; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -63,6 +65,10 @@ @Autowired private ServiceSubtaskMapper ivrTaskcallMapper; + + @Autowired + private HeLibraryMapper heLibraryMapper; + @Autowired private ServiceTaskMapper ivrTaskMapper; @@ -79,6 +85,9 @@ private ServiceSubtaskMapper serviceSubtaskMapper; @Autowired + private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper; + + @Autowired private IServiceSubtaskRecordService serviceSubtaskRecordService; @Autowired @@ -92,6 +101,9 @@ @Value("${server.port}") private String port; + + @Autowired + private ISysConfigService configService; // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜 private static final ExecutorService executorService = Executors.newFixedThreadPool(10); @@ -158,534 +170,572 @@ //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜� ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid()); -// if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) { -// //灏嗘秷鎭粠闃熷垪涓墧闄� -// return; -// } + //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭� + ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); + serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid()); + serviceSubtaskVO.setSendstate(2L); + List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtaskVO); - if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) { - //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖ - String[] split = commonTaskcallMQ.getPreachform().split(","); - log.info("split鐨勫�间负锛歿}", split); + for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { + //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦�� + PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid()); + if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") { + //涓嶉渶瑕佸彂閫� + serviceSubtask.setResult("鎮h�呬笉闇�瑕侀殢璁�"); + serviceSubtask.setRemark(patArchive.getNotrequiredreason()); + serviceSubtask.setSendstate(4L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + setFailPreachForm(serviceSubtask, "-1", "涓嶉渶瑕佹墽琛�", "6"); + continue; + } - //瀹氫箟涓�涓泦鍚堬紝鐢ㄤ笌瀛樻病鏈夋墽琛岀殑瀛愪换鍔D - List<Long> subIds = new ArrayList<>(); - //涓存椂瀛樻病鏈夋墽琛岀殑瀛愪换鍔D - List<Long> lssubIds = new ArrayList<>(); - //鏄惁灏嗗叏閮ㄦ偅鑰呰�呭彂閫佸畬 - Boolean isSend = false; + ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); + serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid()); + serviceSubtaskPreachform.setSubid(serviceSubtask.getId()); + //鑾峰彇鍙戦�佹柟寮� + String sendPreachform = getSendPreachform(serviceSubtaskPreachform, serviceSubtask); + if (sendPreachform.equals("-1") || serviceSubtask.getSendstate() == 6 || serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 4) { + //璇存槑宸茬粡鍏ㄩ儴閬嶅巻瀹屼簡锛屽綋鍓嶇殑鎵ц鏂瑰紡搴忓彿鏄渶鍚庝竴涓簡 鎴栬�� 璇ユ偅鑰呭凡缁忛殢璁跨粨鏉燂紙鎴愬姛鎴栧け璐ヤ簡鎴栦笉鎵ц锛� + continue; + } - aa: - for (String serviceFrom : split) { - String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom)); - if (isSend == true) { - break aa; - } + String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform)); + if (descByCode.equals("鐢佃瘽")) { + try { + ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); + if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) { + //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩�� + break; + } + if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) { + serviceSubtask.setCurrentPreachform(sendPreachform); + serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform())); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + setFailPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4"); + continue; + } - //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭� - ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO(); - ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid()); - ivrTaskcall.setSendstate(1L); - List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall); - if (CollectionUtils.isEmpty(selectServiceSubtaskList)) { + //鑾峰彇鍒皏alue鍊兼渶灏戠殑key + String key = getKey(); + if (commonTaskcallMQ.getSendType().equals("2")) { + //璇存槑鏄珛鍗冲彂閫� + List<String> list = new ArrayList<>(); + list.add(serviceSubtask.getId().toString()); + log.info("缂撳瓨涓璫ache-0鐨勫�间负锛歿}", list); + redisCache.setCacheListLeftAndDistinct("cache-0", list); + } else { + //闈炵珛鍗冲彂閫� + List<String> list = new ArrayList<>(); + list.add(serviceSubtask.getId().toString()); + redisCache.setCacheListLeftAndDistinct(key, list); + } + } 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()); + serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); + //灏嗙數璇濈姸鎬佽缃负澶辫触 + setFailPreachForm(serviceSubtask, sendPreachform, "闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐�", "5"); + continue; } - if (descByCode.equals("鐢佃瘽")) { - for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { - //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h�� - if (CollectionUtils.isNotEmpty(subIds)) { - boolean contains = subIds.contains(serviceSubtask.getId()); - //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫 - if (!contains) continue; + //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓� + setFailPreachForm(serviceSubtask, sendPreachform, "闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�", "2"); + + //浠诲姟鍙戦�佽褰� + 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.setStartTime(System.currentTimeMillis()); + serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�"); + serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); + + } else if (descByCode.equals("鐭俊")) { + //鐭俊 + //瀵箄rl涓袱涓弬鏁板姞瀵� + RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); + String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); + + if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) { + setFailPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4"); + continue; + } + + try { + String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); + String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key); + SendMagParam sendMagParam = new SendMagParam(); + sendMagParam.setType("4"); + if (type == 1) { + //闅忚 + ServiceOutPath serviceOutPath = new ServiceOutPath(); + serviceOutPath.setParam1(taskId); + serviceOutPath.setParam2(patid); + serviceOutPath.setParam6(subId); + serviceOutPath.setCreateTime(new Date()); + iServiceOutPathService.insertServiceOutPath(serviceOutPath); +// sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "¶m2=" + patid + "¶m5=false"); + //杞垚16杩涘埗 + String format = String.format("%03X", serviceOutPath.getId()); + serviceOutPath.setRadix(format); + serviceOutPath.setUpdateTime(new Date()); + iServiceOutPathService.updateServiceOutPath(serviceOutPath); + sendMagParam.setPhone(serviceSubtask.getPhone()); + sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format); + if (visitHosp == 2) { + sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); + } else if (visitHosp == 1) { + sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�"); } - try { - ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); - if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) { - //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩�� - break; - } - //鑾峰彇鍒皏alue鍊兼渶灏戠殑key - String key = getKey(); - if (commonTaskcallMQ.getSendType().equals("2")) { - //璇存槑鏄珛鍗冲彂閫� - ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO(); - serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid()); - log.info("缂撳瓨涓璼erviceSubtask1鐨勫�间负锛歿}", serviceSubtask1); - List<String> list = new ArrayList<>(); - List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1); - for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) { - list.add(serviceSubtask2.getId().toString()); - } - log.info("缂撳瓨涓璫ache-0鐨勫�间负锛歿}", list); -// redisCache.setCacheListLeft("cache-0", list); - redisCache.setCacheListLeftAndDistinct("cache-0", list); - } else { - //闈炵珛鍗冲彂閫� - ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO(); - serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid()); - List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1); - List<String> list = new ArrayList<>(); - for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) { - list.add(serviceSubtask2.getId().toString()); - } -// redisCache.setCacheListLeft(key, list); - redisCache.setCacheListLeftAndDistinct(key, list); - } - } 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); + } else if (type == 2) { + //闂埜锛堥棶棰橈級 + ServiceOutPath serviceOutPath = new ServiceOutPath(); + serviceOutPath.setParam1(taskId); + serviceOutPath.setParam2(patid); + serviceOutPath.setParam6(subId); +// serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString())); + serviceOutPath.setParam3(ivrTask1.getTaskName()); + serviceOutPath.setCreateTime(new Date()); + iServiceOutPathService.insertServiceOutPath(serviceOutPath); + String format = String.format("%03X", serviceOutPath.getId()); + serviceOutPath.setRadix(format); + serviceOutPath.setUpdateTime(new Date()); + iServiceOutPathService.updateServiceOutPath(serviceOutPath); +// sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false"); + sendMagParam.setPhone(serviceSubtask.getPhone()); + sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format); + //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛� + if (serviceSubtask.getType().equals("1")) + sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format); + if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) { + sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); + } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) { + sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); + } else sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�"); + } else if (type == 3) { + //瀹f暀 + ServiceOutPath serviceOutPath = new ServiceOutPath(); + serviceOutPath.setParam1(taskId); + serviceOutPath.setParam2(patid); + serviceOutPath.setParam6(subId); + serviceOutPath.setParam3(ivrTask1.getTaskName()); + serviceOutPath.setCreateTime(new Date()); + iServiceOutPathService.insertServiceOutPath(serviceOutPath); + String format = String.format("%03X", serviceOutPath.getId()); + serviceOutPath.setRadix(format); + serviceOutPath.setUpdateTime(new Date()); + iServiceOutPathService.updateServiceOutPath(serviceOutPath); + //闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡 + HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid()); + if (heLibrary.getHetype().equals("1")) { + sendMagParam.setPhone(serviceSubtask.getPhone()); + sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format); + if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) { + sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); + } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) { + sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); + } else + sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); + } else { + //閫氱煡 + sendMagParam.setPhone(serviceSubtask.getPhone()); + sendMagParam.setContent(heLibrary.getPreachcontent()); + } + } + + //鐭俊杩橀渶瑕佹ā鏉� + String s = null; + if (visitHosp == 1) { + //鏂板崕鐨勭煭淇″彂閫佹柟寮� + Map<String, String> req = new HashMap<>(); + req.put("phone", sendMagParam.getPhone()); + req.put("content", sendMagParam.getContent()); + s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req)); + } else if (visitHosp == 2) { + String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid()); + //涓芥按鐨勭煭淇″彂閫佹柟寮� + Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid()); + String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), url); + log.info("-----------token鐨勫�间负锛歿}", token); + if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) { + serviceSubtask.setCurrentPreachform(sendPreachform); + serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform())); + setFailPreachForm(serviceSubtask, descByCode, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�", "5"); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); continue; } + log.info("---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿}, sendMagParam:{}, orgid:{}-------", map.get("address"), sendMagParam, serviceSubtask.getOrgid()); + String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token); + log.info("---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------", dxCode); + ObjectMapper objectMapper = new ObjectMapper(); + Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class); + String code = textParam.get("Code").toString(); + if (code.equals("0")) { + s = "true"; + } else { + setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5"); + throw new BaseException("鐭俊鍙戦�佸け璐�"); + } + } else if (visitHosp == 3) { + //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮� + JSONObject data = MessageSend.sendMsg(sendMagParam.getContent(), "2", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + String code = data.get("code").toString(); + if (StringUtils.isNotEmpty(code) && code.equals("00000")) { + s = "true"; + } else { + setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5"); + throw new BaseException("鐭俊鍙戦�佸け璐�"); + } + } + if (s.equals("true")) { //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓� - String uuid = UUID.randomUUID().toString(); - serviceSubtask.setResult("success"); - serviceSubtask.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�"); - serviceSubtask.setGuid(uuid); - serviceSubtask.setSendstate(3L); - serviceSubtask.setFinishtime(new Date()); - serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); - + setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2"); //浠诲姟鍙戦�佽褰� ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId()); - serviceSubtaskRecord.setUuid(uuid); + serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); - serviceSubtaskRecord.setPreachform("3"); + serviceSubtaskRecord.setPreachform("5"); serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); - serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�"); + serviceSubtaskRecord.setResult("success"); + serviceSubtaskRecord.setRemark("鐭俊鍙戦�佹垚鍔�"); serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); + log.error("serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}", serviceSubtaskRecord); + } else { + //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓� + setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5"); } - if (CollectionUtils.isEmpty(lssubIds)) { - //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜� - isSend = true; - } - //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓� - subIds.clear(); - subIds.addAll(lssubIds); - lssubIds.clear(); - } - else if (descByCode.equals("澶氬獟浣�")) { - //澶氬獟浣� + } 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()); + serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); + setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5"); continue; } - else if (descByCode.equals("绾歌川")) { - //绾歌川 - continue; - } - else if (descByCode.equals("鐭俊")) { - //鐭俊 - //瀵箄rl涓袱涓弬鏁板姞瀵� - RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); - String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); - for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { - //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h�� - if (CollectionUtils.isNotEmpty(subIds)) { - boolean contains = subIds.contains(serviceSubtask.getId()); - //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫 - if (!contains) continue; - } + } else if (descByCode.equals("鍏紬鍙�")) { + //鍏紬鍙� + RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); + String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); + String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); - try { - String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); - String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key); - SendMagParam sendMagParam = new SendMagParam(); - sendMagParam.setType("4"); - if (type == 1) { - //闅忚 - ServiceOutPath serviceOutPath = new ServiceOutPath(); - serviceOutPath.setParam1(taskId); - serviceOutPath.setParam2(patid); - serviceOutPath.setParam6(subId); - serviceOutPath.setCreateTime(new Date()); - iServiceOutPathService.insertServiceOutPath(serviceOutPath); -// sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "¶m2=" + patid + "¶m5=false"); - //杞垚16杩涘埗 - String format = String.format("%03X", serviceOutPath.getId()); - serviceOutPath.setRadix(format); - serviceOutPath.setUpdateTime(new Date()); - iServiceOutPathService.updateServiceOutPath(serviceOutPath); - sendMagParam.setPhone(serviceSubtask.getPhone()); - sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format); - if (visitHosp == 2) { - sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); - } else if (visitHosp == 1) { - sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�"); - } - - } else if (type == 2) { - //闂埜锛堥棶棰橈級 - ServiceOutPath serviceOutPath = new ServiceOutPath(); - serviceOutPath.setParam1(taskId); - serviceOutPath.setParam2(patid); - serviceOutPath.setParam6(subId); -// serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString())); - serviceOutPath.setParam3(ivrTask1.getTaskName()); - serviceOutPath.setCreateTime(new Date()); - iServiceOutPathService.insertServiceOutPath(serviceOutPath); - String format = String.format("%03X", serviceOutPath.getId()); - serviceOutPath.setRadix(format); - serviceOutPath.setUpdateTime(new Date()); - iServiceOutPathService.updateServiceOutPath(serviceOutPath); -// sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false"); - sendMagParam.setPhone(serviceSubtask.getPhone()); - sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format); - if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) { - sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); - } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) { - sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); - } else - sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�"); - } else if (type == 3) { - //瀹f暀 - ServiceOutPath serviceOutPath = new ServiceOutPath(); - serviceOutPath.setParam1(taskId); - serviceOutPath.setParam2(patid); - serviceOutPath.setParam6(subId); -// serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString())); - serviceOutPath.setParam3(ivrTask1.getTaskName()); - serviceOutPath.setCreateTime(new Date()); - iServiceOutPathService.insertServiceOutPath(serviceOutPath); - String format = String.format("%03X", serviceOutPath.getId()); - serviceOutPath.setRadix(format); - serviceOutPath.setUpdateTime(new Date()); - iServiceOutPathService.updateServiceOutPath(serviceOutPath); -// sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainxj?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false"); - sendMagParam.setPhone(serviceSubtask.getPhone()); - sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format); - if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) { - sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); - } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) { - sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); - } else - sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�"); - } - //鐭俊杩橀渶瑕佹ā鏉� - String s = null; - if (visitHosp == 1) { - //鏂板崕鐨勭煭淇″彂閫佹柟寮� - Map<String, String> req = new HashMap<>(); - req.put("phone", sendMagParam.getPhone()); - req.put("content", sendMagParam.getContent()); - s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req)); - } else if (visitHosp == 2) { - //涓芥按鐨勭煭淇″彂閫佹柟寮� - Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid()); - String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid()); - log.info("-----------token鐨勫�间负锛歿}", token); - if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) { - ServiceSubtask ss = new ServiceSubtask(); - ss.setResult("error"); - ss.setRemark("鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�"); - ss.setSendstate(5L); - ss.setId(serviceSubtask.getId()); -// ss.setFinishtime(new Date()); - serviceSubtaskMapper.updateServiceSubtask(ss); - continue; - } - log.info("---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿}, sendMagParam:{}, orgid:{}-------", map.get("address"), sendMagParam, serviceSubtask.getOrgid()); - String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token); - log.info("---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------", dxCode); - ObjectMapper objectMapper = new ObjectMapper(); - Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class); - String code = textParam.get("Code").toString(); - if (code.equals("0")) { - s = "true"; - } else { - throw new BaseException(null); - } - } - if (s.equals("true")) { - //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓� - log.error("serviceSubtask淇濆瓨鎴愬姛浜嗗悧锛燂細{}", s); - 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.setSubtaskId(serviceSubtask.getId()); - serviceSubtaskRecord.setUuid(uuid); - serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); - serviceSubtaskRecord.setPreachform("5"); - serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); - serviceSubtaskRecord.setResult("success"); - serviceSubtaskRecord.setRemark("鐭俊鍙戦�佹垚鍔�"); - serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); - log.error("serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}", serviceSubtaskRecord); - } - } 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; - } - - + try { + SendMagParam sendMagParam = new SendMagParam(); + sendMagParam.setType("5"); + String url = null; + Boolean aBoolean = false; + if (type == 1) { + //闅忚 + ServiceOutPath serviceOutPath = new ServiceOutPath(); + serviceOutPath.setParam1(taskId); + serviceOutPath.setParam2(patid); + serviceOutPath.setCreateTime(new Date()); + iServiceOutPathService.insertServiceOutPath(serviceOutPath); + String format = String.format("%03X", serviceOutPath.getId()); + serviceOutPath.setRadix(format); + serviceOutPath.setUpdateTime(new Date()); + iServiceOutPathService.updateServiceOutPath(serviceOutPath); + url = ip + ":" + req_path + "/sf?p=" + format; + } else if (type == 2) { + //闂埜 + ServiceOutPath serviceOutPath = new ServiceOutPath(); + serviceOutPath.setParam1(taskId); + serviceOutPath.setParam2(patid); + serviceOutPath.setParam3(ivrTask1.getTaskName()); + serviceOutPath.setCreateTime(new Date()); + iServiceOutPathService.insertServiceOutPath(serviceOutPath); + String format = String.format("%03X", serviceOutPath.getId()); + serviceOutPath.setRadix(format); + serviceOutPath.setUpdateTime(new Date()); + iServiceOutPathService.updateServiceOutPath(serviceOutPath); + url = ip + ":" + req_path + "/wt?p=" + format; + //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛� + if (serviceSubtask.getType().equals("1")) + sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format); + } else if (type == 3) { + //瀹f暀 + ServiceOutPath serviceOutPath = new ServiceOutPath(); + serviceOutPath.setParam1(taskId); + serviceOutPath.setParam2(patid); + serviceOutPath.setParam3(ivrTask1.getTaskName()); + serviceOutPath.setCreateTime(new Date()); + iServiceOutPathService.insertServiceOutPath(serviceOutPath); + String format = String.format("%03X", serviceOutPath.getId()); + serviceOutPath.setRadix(format); + serviceOutPath.setUpdateTime(new Date()); + iServiceOutPathService.updateServiceOutPath(serviceOutPath); + url = ip + ":" + req_path + "/xj?p=" + format; } - if (CollectionUtils.isEmpty(lssubIds)) { - //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜� - isSend = true; + if (StringUtils.isEmpty(patArchive.getPatidHis())) { + serviceSubtask.setCurrentPreachform(sendPreachform); + serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform())); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + //澶辫触璁板綍 + setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", "5"); + continue; } - //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓� - subIds.clear(); - subIds.addAll(lssubIds); - lssubIds.clear(); - } - else if (descByCode.equals("鍏紬鍙�")) { - //鍏紬鍙� - RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); - String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); - for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { - String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); - try { - SendMagParam sendMagParam = new SendMagParam(); - sendMagParam.setType("5"); - String url = null; - Boolean aBoolean = false; - if (type == 1) { - //闅忚 - ServiceOutPath serviceOutPath = new ServiceOutPath(); - serviceOutPath.setParam1(taskId); - serviceOutPath.setParam2(patid); - serviceOutPath.setCreateTime(new Date()); - iServiceOutPathService.insertServiceOutPath(serviceOutPath); - String format = String.format("%03X", serviceOutPath.getId()); - serviceOutPath.setRadix(format); - serviceOutPath.setUpdateTime(new Date()); - iServiceOutPathService.updateServiceOutPath(serviceOutPath); - url = ip + ":" + req_path + "/sf?p=" + format; - } else if (type == 2) { - //闂埜 - ServiceOutPath serviceOutPath = new ServiceOutPath(); - serviceOutPath.setParam1(taskId); - serviceOutPath.setParam2(patid); -// serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString())); - serviceOutPath.setParam3(ivrTask1.getTaskName()); - serviceOutPath.setCreateTime(new Date()); - iServiceOutPathService.insertServiceOutPath(serviceOutPath); - String format = String.format("%03X", serviceOutPath.getId()); - serviceOutPath.setRadix(format); - serviceOutPath.setUpdateTime(new Date()); - iServiceOutPathService.updateServiceOutPath(serviceOutPath); - url = ip + ":" + req_path + "/wt?p=" + format; - } else if (type == 3) { - //瀹f暀 - ServiceOutPath serviceOutPath = new ServiceOutPath(); - serviceOutPath.setParam1(taskId); - serviceOutPath.setParam2(patid); - serviceOutPath.setParam3(ivrTask1.getTaskName()); - serviceOutPath.setCreateTime(new Date()); - iServiceOutPathService.insertServiceOutPath(serviceOutPath); - String format = String.format("%03X", serviceOutPath.getId()); - serviceOutPath.setRadix(format); - serviceOutPath.setUpdateTime(new Date()); - iServiceOutPathService.updateServiceOutPath(serviceOutPath); - url = ip + ":" + req_path + "/xj?p=" + format; - } - PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid()); - if (StringUtils.isEmpty(patArchive.getPatidHis())) { - ServiceSubtask ss = new ServiceSubtask(); - ss.setResult("error"); - ss.setRemark("鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖"); - ss.setSendstate(5L); - ss.setId(serviceSubtask.getId()); -// ss.setFinishtime(new Date()); - serviceSubtaskMapper.updateServiceSubtask(ss); - continue; - } - //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D - log.error("鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}", patArchive.getOrgid()); - List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid()); - if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) { - ServiceSubtask ss = new ServiceSubtask(); - ss.setResult("error"); - ss.setRemark("璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�"); - ss.setSendstate(5L); - ss.setId(serviceSubtask.getId()); -// ss.setFinishtime(new Date()); - serviceSubtaskMapper.updateServiceSubtask(ss); - continue; - } + //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D + log.error("鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}", patArchive.getOrgid()); + List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid()); + if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) { + serviceSubtask.setCurrentPreachform(sendPreachform); + serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform())); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + + //澶辫触璁板綍 + setFailPreachForm(serviceSubtask, sendPreachform, "璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�", "5"); + continue; + } - String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx); - log.error("wxCode鐨勫�间负:{}", wxCode); - Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class); - log.error("map鐨勫�间负:{}", map); - if (!map.isEmpty()) { - serviceSubtask.setResult("success"); - serviceSubtask.setSendstate(3L); - log.error("aBoolean鐨勫�间负:{}", aBoolean); - if (map.get("succ").toString().equals("true")) { - aBoolean = true; - } - if (aBoolean == false) { - 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.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null); - lssubIds.add(serviceSubtask.getId()); - serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); - continue; - } - } - } catch (Exception e) { + String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx); + log.error("wxCode鐨勫�间负:{}", wxCode); + Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class); + log.error("map鐨勫�间负:{}", map); + if (!map.isEmpty()) { + serviceSubtask.setResult("success"); + serviceSubtask.setSendstate(3L); + log.error("aBoolean鐨勫�间负:{}", aBoolean); + if (map.get("succ").toString().equals("true")) { + aBoolean = true; + } + if (aBoolean == false) { 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()); + serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null); serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); + //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓� + setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�", "5"); 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(); + } 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("5"); + serviceSubtaskRecord.setResult("fail"); + serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); + serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佸け璐�"); + log.error("鍏紬鍙峰彂閫佸け璐ワ細{}", e.getMessage()); + serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); + //澶辫触璁板綍 + setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�", "5"); + continue; } - //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜� 锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛� + //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓� + setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佹垚鍔�", "2"); + //浠诲姟鍙戦�佽褰� + ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); + serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); + serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); + serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); + serviceSubtaskRecord.setPreachform("5"); + serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); + serviceSubtaskRecord.setResult("success"); + serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佹垚鍔�"); + serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); + + } else if (descByCode.equals("浜哄伐")) { + setFailPreachForm(serviceSubtask, sendPreachform, "浜哄伐寰呮墽琛�", "2"); } - if (CollectionUtils.isNotEmpty(subIds)) { - //濡傛灉鍏ㄩ儴鐨勫彂閫佹柟寮忛兘鍙戝畬浜嗭紝杩樻湁鏄湭鍙戦�佺殑,闇�瑕佸幓subTask琛ㄤ腑锛岃褰曚竴涓嬶紝鍙戦�佸け璐� - for (Long id : subIds) { - ServiceSubtask serviceSubtask = new ServiceSubtask(); - serviceSubtask.setResult("error"); - serviceSubtask.setRemark("鍙戦�佸け璐�"); + } + + } + + private Date getNextVisitTime(Long subid, Long taskid, Date visitTime, String currentPreachform) { + ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); + serviceSubtaskPreachform.setSubid(subid); + serviceSubtaskPreachform.setTaskid(taskid); + List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); + + if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) { + Optional<String> ct = serviceSubtaskPreachforms.stream().filter(item -> currentPreachform.equals(item.getPreachform())).map(ServiceSubtaskPreachform::getCompensateTime).findFirst(); + String compensateTime = "0"; + if (ct.isPresent()) compensateTime = ct.get(); + int hoursToAdd = Integer.valueOf(compensateTime) * 24; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(visitTime); + calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd); + Date newDate = calendar.getTime(); + return newDate; + } + return visitTime; + } + + private String getSendPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform, ServiceSubtask serviceSubtask) { + List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); + + // 鎯呭喌1锛歝urrentPreachform涓虹┖锛屽彇sort涓�1鐨刾reachform + if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) { + return serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null); + } + + // 鎯呭喌2锛歝urrentPreachform涓嶄负绌猴紝鎵句笅涓�涓猻ort + Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst(); + + if (currentSort.isPresent()) { + // 妫�鏌ユ槸鍚︽墍鏈塻endstate涓嶇瓑浜�9 + boolean allSendStateNot1AndNot9 = serviceSubtaskPreachforms.stream().allMatch(item -> !item.getSendstate().equals("9")); + + // 褰搒ort绛変簬鍒楄〃size鏃讹紝骞朵笖鎵�鏈塻endstate閮戒笉绛変簬9锛屽垯杩斿洖-1 + if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) { + if (allSendStateNot1AndNot9) { + //璇存槑鍏ㄥ彂閫佸け璐ヤ簡 serviceSubtask.setSendstate(5L); - serviceSubtask.setId(id); -// serviceSubtask.setFinishtime(new Date()); serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); } + return "-1"; } + + // 褰搒ort绛変簬鍒楄〃size鏃讹紝涓嬩竴涓猻ort涓�-1 + Long nextSort = currentSort.get() + 1; + + // 鎵惧埌涓嬩竴涓猻ort瀵瑰簲鐨刾reachform + return serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null); } + return null; } - // /** -// * 鏈哄櫒浜虹涓�鍙ヨ瘽璇煶 -// * concurrency = "50" 骞跺彂鏁颁负50 -// */ -// @RabbitListener(queues = "ob_queue", concurrency = "50") -// public void obVisit(String content, Message message, Channel channel) throws IOException { -// try { -// IvrTaskcallPhoneMQ commonTaskcallMQ = null; -// ObjectMapper mapper = new ObjectMapper(); -// commonTaskcallMQ = mapper.readValue(content, IvrTaskcallPhoneMQ.class); -// //鍒ゆ柇鎮h�呮槸鍚﹀凡缁忔帴鐢佃瘽 -// String str = redisCache.getCacheObject(commonTaskcallMQ.getUuid() + "state_id"); -// System.out.println("-----------------" + str); -// if (StringUtils.isNotEmpty(str) && str.equals("0")) { -// //鎮h�呭凡缁忔帴鍚簡鐢佃瘽 -// new PhoneUtils().ttsPlayback(commonTaskcallMQ.getScript(), commonTaskcallMQ.getUuid()); -// } else if (StringUtils.isNotEmpty(str) && str.equals("-10")) { -// //杩欎釜璇存槑,宸茬粡鎵撲簡鎸囧畾閬嶆暟杩樻槸娌℃湁浜烘帴锛屽彲浠ュ皢娑堟伅浠庨槦鍒椾腑绉婚櫎浜� -// channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); -// return; -// } else { -// //杩涜闃熷垪灏鹃儴锛岃繘琛屼笅涓�娆℃牎楠� -//// channel.basicRecover(false); -// channel.basicReject(message.getMessageProperties().getDeliveryTag(), true); -// System.out.println("++++++++++++++++++++++" + str); -// return; -// } -// //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜� 锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛� -// channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); -// } catch (Exception e) { -// log.error("============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!=============="); -// log.error(e.getMessage()); -// channel.basicReject(message.getMessageProperties().getDeliveryTag(), true); -// } -// } - private String getKey() { - Map<String, String> map = new HashMap<>(); - for (int i = 0; i < 6; i++) { - Boolean aBoolean = redisCache.hasKey("cache-" + i); - if (!aBoolean) { - redisCache.setCacheObject("cache-" + i, ""); - map.put("cache-" + i, ""); - } else { - map.put("cache-" + i, redisCache.getCacheObject("cache-" + i)); - } + + /** + * @param serviceSubtask + * @param preachform + * @param remark + * @param failSendstate + * @return + */ + public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) { + if (preachform.equals("-1")) { + //璇存槑閮戒笉闇�瑕佹墽琛屼簡 + ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); + serviceSubtaskPreachform.setSubid(serviceSubtask.getId()); + serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid()); + serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid()); + serviceSubtaskPreachform.setSendstate(failSendstate); + serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform); + return true; } - String key = null; - String value = ""; - for (Map.Entry<String, String> entry : map.entrySet()) { - if (StringUtils.isEmpty(value)) { - value = entry.getValue(); - key = entry.getKey(); - } else { - if (entry.getValue().split(",").length < value.split(",").length) { - value = entry.getValue(); - key = entry.getKey(); + //灏嗙姸鎬佽缃负澶辫触 + ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); + serviceSubtaskPreachform.setSubid(serviceSubtask.getId()); + serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid()); + serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid()); + //鑾峰彇璇ユ偅鑰呯殑鍙戦�佹柟寮忔�绘暟 + List<ServiceSubtaskPreachform> spSize = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); + + serviceSubtaskPreachform.setPreachform(preachform); + //1:鏈彂閫佺姸鎬� + serviceSubtaskPreachform.setSendstate("1"); + //鐢佃瘽鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2锛屽洜涓猴紝鏁版嵁鍙兘鍗″湪闃熷垪閲屼簡 + if (preachform.equals("3")) serviceSubtaskPreachform.setSendstate("2"); + List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); + if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) { + ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0); + serviceSubtaskPreachform1.setSendstate(failSendstate); + serviceSubtaskPreachform1.setRemark(remark); + serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1); + //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡,骞朵笖鏈杩樻槸鍙戦�佸け璐ワ紝閭g洿鎺ュ皢serviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡) + if (serviceSubtaskPreachform1.getSort() == spSize.size()) { + if (serviceSubtaskPreachform1.getSort() == spSize.size()) { + if (failSendstate.equals("4") || failSendstate.equals("5")) { + serviceSubtask.setCurrentPreachform(preachform); + serviceSubtask.setSendstate(5L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + return true; + } } } + } else { + log.error("銆怣Q涓鎮h�呮病鏈夋煡璇㈠埌灞炰簬浠栫殑鍙戦�佹柟寮忥紝subid锛歿},prechform:{},orgid:{}銆�", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid()); + return false; } - return key; + + serviceSubtask.setCurrentPreachform(preachform); + serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform())); + serviceSubtask.setSendstate(3L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + return true; } + private String getKey() { + String targetKey = null; + long minSize = Long.MAX_VALUE; + + for (int i = 1; i < 6; i++) { + String key = "cache-" + i; + + // 鑾峰彇 list 鐨勯暱搴︼紙鍗� value 鐨勫厓绱犱釜鏁帮級 + Long size = redisCache.getListSize(key); + if (size == null) { + size = 0L; // 濡傛灉 key 涓嶅瓨鍦紝璁や负鏄� 0 + } + + // 鍙栨渶灏忓�� + if (size < minSize) { + minSize = size; + targetKey = key; + } + } + return targetKey; + } + +// private String getKey() { +// Map<String, List> map = new HashMap<>(); +// for (int i = 0; i < 6; i++) { +// Boolean aBoolean = redisCache.hasKey("cache-" + i); +// if (!aBoolean) { +// redisCache.setCacheList("cache-" + i, new ArrayList<String>()); +// map.put("cache-" + i, new ArrayList<String>()); +// } else { +// map.put("cache-" + i, redisCache.getCacheObject("cache-" + i)); +// } +// } +// +// String key = null; +// List<String> value = new ArrayList<String>(); +// for (Map.Entry<String, List> entry : map.entrySet()) { +// if (CollectionUtils.isEmpty(value)) { +// value = entry.getValue(); +// key = entry.getKey(); +// } else { +// value = entry.getValue(); +// key = entry.getKey(); +// } +// } +// return key; +// } + private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String patientname, String setPatientid, List<String> wxqqxx) { XinHuaWXReq xinHuaWXReq = new XinHuaWXReq(); xinHuaWXReq.setIdcard(idcard); -- Gitblit v1.9.3