From c7ef5f837fe90766574cee9d0eae9e89e34af263 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期四, 09 十月 2025 09:46:56 +0800 Subject: [PATCH] 代码提交 --- ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 1309 +++++++++++++++++++++++++--------------------------------- 1 files changed, 563 insertions(+), 746 deletions(-) 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 64240b7..710bae5 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 @@ -3,26 +3,23 @@ import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.reflect.TypeToken; import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; 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.VisitSendStateEnum; import com.ruoyi.common.enums.WxGZHEnum; -import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.HttpUtil; import com.ruoyi.common.utils.OkHttpExample; import com.ruoyi.common.utils.RSAPublicKeyExample; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.http.HttpUtils; +import com.ruoyi.common.utils.sms.smsUtils; +import com.ruoyi.quartz.service.ICollectHISService; +import com.ruoyi.system.service.ISysConfigService; import com.smartor.common.LSHospTokenUtil; import com.smartor.domain.*; -import com.smartor.mapper.ServiceSubtaskMapper; -import com.smartor.mapper.ServiceTaskMapper; -import com.smartor.mapper.SysUserImportMapper; +import com.smartor.mapper.*; import com.smartor.service.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -30,20 +27,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.Transactional; -import java.io.File; -import java.io.FileWriter; import java.io.IOException; -import java.lang.reflect.Type; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.security.MessageDigest; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -87,16 +77,34 @@ private IServicePatientTempService iServicePatientTempService; @Autowired - private PlatformTransactionManager transactionManager; + private IHNGatherPatArchiveService ihnGatherPatArchiveService; + + @Autowired + private IServiceSLTDHealthcareRecordService serviceSLTDHealthcareRecordService; @Autowired private SysUserImportMapper sysUserImportMapper; + + @Autowired + private HeLibraryMapper heLibraryMapper; + + @Autowired + private ICollectHISService ichService; + + @Autowired + private ISysConfigService configService; @Value("${localIP}") private String localIP; @Value("${xhsmsPath}") private String xhsmsPath; + + @Value("${xhsmsAccount}") + private String xhsmsAccount; + + @Value("${xhsmsPwd}") + private String xhsmsPwd; @Value("${pub_key}") private String pub_key; @@ -125,8 +133,6 @@ @Autowired IPatArchiveService patArchiveService; - @Autowired - IPatMedInhospService patMedInhospService; @Autowired IPatMedOuthospService patMedOuthospService; @@ -137,14 +143,25 @@ @Autowired IIvrTaskTemplateService iIvrTaskTemplateService; - @Value("${hosp_info_url}") - private String hospInfoUrl; + @Autowired + IXHGatherPatArchiveService ixhGatherPatArchiveService; + + @Autowired + ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper; + + @Autowired + ICollectHISService icollectHis; + @Value("${appid}") private String appid; @Value("${server.port}") private String port; + + + @Value("${spring.profiles.active}") + private String active; public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i)); @@ -211,34 +228,91 @@ */ public void dealHisData() { log.info("銆恉ealHisData銆戝紑濮嬫墽琛孒IS鏁版嵁閲囬泦浠诲姟"); - long startTime = System.currentTimeMillis(); + // 鑾峰彇鏄ㄥぉ0鐐瑰埌浠婂ぉ0鐐圭殑鏃堕棿鑼冨洿 + LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN); + LocalDateTime yesterdayZero = todayZero.minusDays(1); + log.info("銆恉ealHisData銆戦噰闆嗘椂闂磋寖鍥达細{} ~ {}", yesterdayZero, todayZero); - try { - // 鑾峰彇鏄ㄥぉ0鐐瑰埌浠婂ぉ0鐐圭殑鏃堕棿鑼冨洿 - LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN); - LocalDateTime yesterdayZero = todayZero.minusDays(1); + if (active.trim().equals("xh")) { + try { + // 閲囬泦鍏ラ櫌鏁版嵁 + log.info("銆恉ealHisData銆戞柊鍗庡紑濮嬮噰闆嗗叆闄㈡暟鎹�"); + ixhGatherPatArchiveService.getInHospDataGather("0", yesterdayZero, todayZero); + log.info("銆恉ealHisData銆戞柊鍗庡叆闄㈡暟鎹噰闆嗗畬鎴�"); - log.info("銆恉ealHisData銆戦噰闆嗘椂闂磋寖鍥达細{} ~ {}", yesterdayZero, todayZero); + // 閲囬泦鍑洪櫌鏁版嵁 + log.info("銆恉ealHisData銆戞柊鍗庡紑濮嬮噰闆嗗嚭闄㈡暟鎹�"); + ixhGatherPatArchiveService.getInHospDataGather("1", yesterdayZero, todayZero); + log.info("銆恉ealHisData銆戞柊鍗庡嚭闄㈡暟鎹噰闆嗗畬鎴�"); - // 閲囬泦鍏ラ櫌鏁版嵁 - log.info("銆恉ealHisData銆戝紑濮嬮噰闆嗗叆闄㈡暟鎹�"); - getInHospInfo("0", yesterdayZero, todayZero); - log.info("銆恉ealHisData銆戝叆闄㈡暟鎹噰闆嗗畬鎴�"); + } catch (Exception e) { + log.error("銆恉ealHisData銆戞柊鍗庢暟鎹噰闆嗗紓甯�", e); + } + } else if (active.trim().equals("hn")) { + try { + // 娌冲崡鏁版嵁閲囬泦 + HnDataGatherVO hnDataGatherVO = new HnDataGatherVO(); + log.info("銆恉ealHisData銆戞渤鍗楀紑濮嬮噰闆嗘暟鎹�"); + Date startTime = Date.from(yesterdayZero.atZone(ZoneId.systemDefault()).toInstant()); + Date endTime = Date.from(todayZero.atZone(ZoneId.systemDefault()).toInstant()); - // 閲囬泦鍑洪櫌鏁版嵁 - log.info("銆恉ealHisData銆戝紑濮嬮噰闆嗗嚭闄㈡暟鎹�"); - getInHospInfo("1", yesterdayZero, todayZero); - log.info("銆恉ealHisData銆戝嚭闄㈡暟鎹噰闆嗗畬鎴�"); + hnDataGatherVO.setStartTime(startTime); + hnDataGatherVO.setEndTime(endTime); + ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO); + log.info("銆恉ealHisData銆戞渤鍗楃粨鏉熼噰闆嗘暟鎹�"); + } catch (Exception e) { + log.error("銆恉ealHisData銆戞渤鍗楁暟鎹噰闆嗗紓甯�", e); + } + } else if (active.trim().equals("sltd")) { + try { + // 鐪佺珛鍚屽痉鏁版嵁閲囬泦 + log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濆紑濮嬮噰闆嗘暟鎹�"); + String yesterday = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO(); + serviceSLTDInhospReqVO.setOrgId("20001001"); + serviceSLTDInhospReqVO.setCampusId(30001002L); + serviceSLTDInhospReqVO.setStartHeadTime(yesterday); + serviceSLTDInhospReqVO.setStartTailTime(yesterday); + List<String> list = new ArrayList<>(); + list.add("FH0108.02"); + serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list); + serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO); + log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濈祼鏉熼噰闆嗘暟鎹�"); - long endTime = System.currentTimeMillis(); - log.info("銆恉ealHisData銆慔IS鏁版嵁閲囬泦浠诲姟瀹屾垚锛屾�昏�楁椂锛歿}ms", endTime - startTime); + log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濆紑濮嬮噰闆嗘暟鎹�"); + serviceSLTDInhospReqVO.setStartHeadTime(null); + serviceSLTDInhospReqVO.setStartTailTime(null); + serviceSLTDInhospReqVO.setEncounterTimeStart(yesterday); + serviceSLTDInhospReqVO.setEncounterTimeEnd(yesterday); + List<String> list1 = new ArrayList<>(); + list1.add("FH0108.01"); + list1.add("FH0108.03"); + serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1); + serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO); + log.info("銆恉ealHisData銆戞渤鍗楃粨鈥滈棬鎬ヨ瘖鈥濇潫閲囬泦鏁版嵁"); - } catch (Exception e) { - log.error("銆恉ealHisData銆慔IS鏁版嵁閲囬泦寮傚父", e); - // 杩欓噷鍙互娣诲姞鍛婅閫氱煡閫昏緫锛屾瘮濡傚彂閫侀偖浠舵垨鐭俊 + log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃嚭闄⑩�濆紑濮嬮噰闆嗘暟鎹�"); + serviceSLTDInhospReqVO.setStartHeadTime(null); + serviceSLTDInhospReqVO.setStartTailTime(null); + serviceSLTDInhospReqVO.setEncounterTimeStart(null); + serviceSLTDInhospReqVO.setEncounterTimeEnd(null); + serviceSLTDInhospReqVO.setPreOutHospitalHeadDate(yesterday); + serviceSLTDInhospReqVO.setPreOutHospitalTailDate(yesterday); + List<String> list2 = new ArrayList<>(); + list2.add("FH0108.02"); + serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list2); + serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO); + log.info("銆恉ealHisData銆戞渤鍗楃粨鈥滃嚭闄⑩�濇潫閲囬泦鏁版嵁"); + + } catch (Exception e) { + log.error("銆恉ealHisData銆戠渷绔嬪悓寰锋暟鎹噰闆嗗紓甯�", e); + } } } + /** + * 杩欎釜鍙槸鏂板崕涓存椂浣跨敤锛屽钩鏃剁敤涓嶅埌 + */ public void dealHisData2() { //灏嗘偅鑰呬俊鎭�佸嚭鍏ラ櫌鏁版嵁鍏ㄩ儴閲囬泦 // 鎸囧畾鐨勫紑濮嬫棩鏈� @@ -251,8 +325,8 @@ // 浠庡紑濮嬫棩鏈熷埌褰撳墠鏃ユ湡閫愬ぉ鎵撳嵃 for (LocalDate date = endDate; !date.isAfter(currentDate); date = date.plusDays(1)) { System.out.println(date.format(formatter)); - getInHospInfo("0", date.minusDays(1).atStartOfDay(), date.atStartOfDay()); - getInHospInfo("1", date.minusDays(1).atStartOfDay(), date.atStartOfDay()); + ixhGatherPatArchiveService.getInHospDataGather("0", date.minusDays(1).atStartOfDay(), date.atStartOfDay()); + ixhGatherPatArchiveService.getInHospDataGather("1", date.minusDays(1).atStartOfDay(), date.atStartOfDay()); } } @@ -307,9 +381,69 @@ commonTaskcallMQ.setTaskid(serviceTask.getTaskid()); commonTaskcallMQ.setPreachform(serviceTask.getPreachform()); commonTaskcallMQ.setSendType("2"); - sfHandlle(commonTaskcallMQ, localIP); + + //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨� + ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); + serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid()); + serviceSubtaskVO.setSendstate(2L); + serviceSubtaskVO.setVisitTime(new Date()); + List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.queryServiceSubtaskList(serviceSubtaskVO); + for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { + sfHandlle(serviceSubtask); + } + } } + + /** + * 澶勭悊琛ュ伩浠诲姟 + */ + public void compensateTask() { + //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓轰粖澶╃殑subtask + ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); + serviceSubtaskVO.setSendstate(3L); + serviceSubtaskVO.setVisitTime(new Date()); + List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); + for (ServiceSubtask serviceSubtask : serviceSubtaskList) { + //鏍规嵁褰撳墠鐨勬墽琛屾柟寮忥紝鑾峰彇涓嬩竴绉嶆墽琛屾柟寮� + ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); + serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid()); + serviceSubtaskPreachform.setSubid(serviceSubtask.getId()); + serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid()); + List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); + //鑾峰彇褰撳墠鎵ц鏂瑰紡鐨勫簭鍙� + Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst(); + Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst(); + if (currentSort.isPresent()) { + //1鍏堟鏌ヤ竴涓嬶紝鏄笉鏄湁鎵ц鐘舵�佹槸瀹屾垚鐨勶紙鎬曚箣鍓嶅凡缁忔湁瀹岀殑浜嗭紝娌℃湁灏唖ervuce_subtask鐨勭姸鎬佹敼鎴愬姛锛岃繖閲屽啀妫�鏌ヤ竴涓嬶級 + boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9")); + if (finishState) { + serviceSubtask.setSendstate(6L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + continue; + } + + //2鍒ゆ柇涓�涓嬶紝褰撳墠鐨剆ort鏄笉鏄瓑浜庨渶瑕佹墽琛岀殑鎬讳釜鏁帮紝濡傛灉绛変簬鐨勮瘽锛岃鏄庢槸鏈�鍚庝竴涓紝鐩存帴灏唖ervuce_subtask鐨勭姸鎬佹敼鎴�5锛屾墽琛屽け璐ュ氨琛屼簡 + Long cs = currentSort.get(); + if (cs.equals(serviceSubtaskPreachforms.size())) { + serviceSubtask.setSendstate(5L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + //淇敼鍙戦�佹柟寮忕殑鐘舵�佷负澶辫触 + serviceSubtaskPreachform.setSendstate("5"); + serviceSubtaskPreachform.setId(id.get()); + serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform); + continue; + } + + //3.涓嶆槸鏈�鍚庝竴涓紝鑾峰彇鍒颁笅涓�涓墽琛屾柟寮�(鍥犱负閮芥槸鍦ㄤ粖澶╂墽琛岋紝閭e氨鐩存帴鍙戝嚭鍘诲氨瀹屼簡) + sfHandlle(serviceSubtask); + + } + + } + + } + /** * 鍒ゆ柇鏃ユ湡鏄惁鏄粖澶� @@ -329,727 +463,342 @@ return !localDate.isAfter(today); } - public void sfHandlle(CommonTaskcallMQ commonTaskcallMQ, String ip) { - log.info("銆恠fHandlle銆戝紑濮嬪鐞嗕换鍔★紝浠诲姟ID锛歿}", commonTaskcallMQ.getTaskid()); - //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜� - ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid()); - - if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) { - //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖ - String[] split = commonTaskcallMQ.getPreachform().split(","); - log.info("銆恠fHandlle銆戜换鍔″彂閫佹柟寮忥細{}", Arrays.toString(split)); - for (String serviceFrom : split) { - String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom)); - //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭� - ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO(); - ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid()); - ivrTaskcall.setSendstate(2L); - List<ServiceSubtask> subtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall); - //涓芥按鏈夌殑鍖婚櫌杩樻病娉曞仛闀挎湡浠诲姟闅忚 - List<ServiceSubtask> subtaskList2 = new ArrayList<>(); - if (visitHosp == 2) { - for (ServiceSubtask serviceSubtask : subtaskList) { - Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid()); - if (b) subtaskList2.add(serviceSubtask); - } - subtaskList = subtaskList2; - } - - // 鎸夌収 endtime 绂诲綋鍓嶆椂闂存渶杩戠殑鎺掑簭 - List<ServiceSubtask> selectServiceSubtaskList = subtaskList.stream().sorted(Comparator.comparing(subtask -> Math.abs(subtask.getEndtime().getTime() - new Date().getTime()))).collect(Collectors.toList()); - - if (descByCode.equals("鐢佃瘽")) { - String value = ""; - List<String> list = new ArrayList<>(); - for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { - ServiceTask ivrTask = serviceTaskMapper.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.setRemark("鎵嬫満鍙蜂负绌�"); - serviceSubtask.setSendstate(4L); - serviceSubtask.setResult("error"); -// serviceSubtask.setFinishtime(new Date()); - serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); - continue; - } - boolean dateToday = isDateToday(serviceSubtask.getLongSendTime()); - //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝 displayNo涓嶇煡閬撴�庝箞閰嶇疆) - if (dateToday) { - list.add(serviceSubtask.getId().toString()); - //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓� - String uuid = UUID.randomUUID().toString(); - serviceSubtask.setResult("success"); - serviceSubtask.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�"); - serviceSubtask.setGuid(uuid); - 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("3"); - serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); - serviceSubtaskRecord.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�"); - serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); - - } - } - //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑 - if (list.size() > 0) { -// redisCache.setCacheListLeft("cache-0", list); - redisCache.setCacheListLeftAndDistinct("cache-0", list); - log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size()); - } - } else if (descByCode.equals("澶氬獟浣�")) { - //澶氬獟浣� - } else if (descByCode.equals("绾歌川")) { - //绾歌川 - } else if (descByCode.equals("寰俊灏忕▼搴�")) { - //寰俊灏忕▼搴� - log.info("銆恠fHandlle銆戝鐞嗗井淇″皬绋嬪簭浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1); - if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) { - //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨� - ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); - serviceSubtaskVO.setTaskid(ivrTask1.getTaskid()); - List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); - //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸 - List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>(); - aa: - for (ServiceSubtask serviceSubtask : serviceSubtaskList) { - for (ServiceSubtask ss : serviceSubtaskListFilter) { - if (ss.getSfzh().equals(serviceSubtask.getSfzh())) { - continue aa; - } - } - serviceSubtaskListFilter.add(serviceSubtask); - } - for (ServiceSubtask serviceSubtask : serviceSubtaskListFilter) { - //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3 - serviceSubtask.setSendstate(3L); - serviceSubtask.setId(null); - serviceSubtask.setFinishtime(null); - serviceSubtask.setCreateTime(new Date()); - serviceSubtask.setUpdateTime(new Date()); - //澶勭悊閲嶅鏂板闂锛屽厛鏌ヤ竴涓嬩粖澶╂槸涓嶆槸鏈夋柊澧炶繃锛屾柊澧炶繃灏变笉鏂板浜� - ServiceSubtaskVO ssvo = new ServiceSubtaskVO(); - LocalDate today = LocalDate.now(); - LocalTime startOfDay = LocalTime.of(0, 0, 0); - LocalTime endOfDay = LocalTime.of(23, 59, 59); - Date startOfDayDate = Date.from(today.atTime(startOfDay).atZone(ZoneId.systemDefault()).toInstant()); - Date endOfDayDate = Date.from(today.atTime(endOfDay).atZone(ZoneId.systemDefault()).toInstant()); - ssvo.setCreateStartTime(startOfDayDate); - ssvo.setCreateEndTime(endOfDayDate); - ssvo.setCreateBy(serviceSubtask.getCreateBy()); - ssvo.setSendname(serviceSubtask.getSendname()); - ssvo.setSfzh(serviceSubtask.getSfzh()); - List<ServiceSubtask> serviceSubtaskListByCreateTime = serviceSubtaskMapper.selectServiceSubtaskListByCreateTime(ssvo); - if (CollectionUtils.isEmpty(serviceSubtaskListByCreateTime)) - serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); - } - } - } else if (descByCode.equals("鐭俊")) { - RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); - String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); - for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { - log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid()); - boolean dateToday = isDateToday(serviceSubtask.getLongSendTime()); - if (dateToday) { - try { - //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦�� - PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid()); - if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") { - //涓嶉渶瑕佸彂閫� - serviceSubtask.setResult("error"); - serviceSubtask.setRemark(patArchive.getNotrequiredreason()); - serviceSubtask.setSendstate(4L); -// serviceSubtask.setFinishtime(new Date()); - iServiceSubtaskService.insertServiceSubtask(serviceSubtask); - continue; - } - 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"); - ServiceOutPath serviceOutPath = new ServiceOutPath(); - serviceOutPath.setParam1(taskId); - serviceOutPath.setParam2(patid); - serviceOutPath.setParam3(ivrTask1.getTaskName()); - serviceOutPath.setParam6(subId); - 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.setPhone(serviceSubtask.getPhone()); - sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format); - sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�"); - String isSuccess = null; - if (visitHosp == 1) { - Map<String, String> req = new HashMap<>(); - req.put("phone", sendMagParam.getPhone()); - req.put("content", sendMagParam.getContent()); - isSuccess = 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()); - 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("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", 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("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode); - ObjectMapper objectMapper = new ObjectMapper(); - Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class); - String code = textParam.get("Code").toString(); - if (code.equals("0")) { - isSuccess = "true"; - } - } - //浠诲姟鍙戦�佽褰� - ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); - serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); - serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); - serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); - serviceSubtaskRecord.setPreachform("4"); - serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); - serviceSubtaskRecord.setResult("success"); - if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true")) - serviceSubtaskRecord.setResult("error"); - serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); - - //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬� - serviceSubtask.setSendstate(3L); - if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true")) { - serviceSubtask.setResult("success"); - serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�"); - } else { - serviceSubtask.setResult("error"); - serviceSubtask.setSendstate(5L); - serviceSubtask.setRemark("鐭俊鍙戦�佸け璐�"); - } - iServiceSubtaskService.updateServiceSubtask(serviceSubtask); - } catch (Exception e) { - String guid = UUID.randomUUID().toString(); - log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid); - serviceSubtask.setResult("error"); - serviceSubtask.setRemark("绯荤粺閿欒"); - serviceSubtask.setSendstate(5L); - serviceSubtask.setGuid(guid); - iServiceSubtaskService.updateServiceSubtask(serviceSubtask); - } - } - } - } else if (descByCode.equals("鍏紬鍙�")) { - log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1); - //鍏紬鍙� - RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); - String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); - for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { - boolean dateToday = isDateToday(serviceSubtask.getLongSendTime()); - if (dateToday) { - try { - //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦�� - PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid()); - if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") { - //涓嶉渶瑕佸彂閫� - serviceSubtask.setResult("error"); - serviceSubtask.setRemark(patArchive.getNotrequiredreason()); - serviceSubtask.setSendstate(4L); - iServiceSubtaskService.insertServiceSubtask(serviceSubtask); - continue; - } - String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); - String url = null; - url = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false"; - - //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D - 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()); - serviceSubtaskMapper.updateServiceSubtask(ss); - continue; - } - - if (StringUtils.isEmpty(patArchive.getPatidHis())) { - ServiceSubtask ss = new ServiceSubtask(); - ss.setResult("error"); - ss.setRemark("鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖"); - ss.setSendstate(5L); - ss.setId(serviceSubtask.getId()); - serviceSubtaskMapper.updateServiceSubtask(ss); - continue; - } - String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx); - - Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class); - //浠诲姟鍙戦�佽褰� - ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); - serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); - serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); - serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); - serviceSubtaskRecord.setPreachform("4"); - serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); - serviceSubtaskRecord.setResult("success"); - if (!map.isEmpty() && (Boolean) map.get("succ") == false) - serviceSubtaskRecord.setResult("error"); - serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); - - //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬� - serviceSubtask.setSendstate(3L); - if ((Boolean) map.get("succ") == true) { - serviceSubtask.setResult("success"); - } else { - log.error("銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}", serviceSubtask, map.get("msg")); - serviceSubtask.setResult("error"); - serviceSubtask.setSendstate(5L); - serviceSubtask.setRemark(map.get("msg").toString()); - } - iServiceSubtaskService.updateServiceSubtask(serviceSubtask); - } catch (Exception e) { - String guid = UUID.randomUUID().toString(); - log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid); - serviceSubtask.setResult("error"); - serviceSubtask.setRemark("绯荤粺閿欒"); - serviceSubtask.setSendstate(5L); - serviceSubtask.setGuid(guid); - iServiceSubtaskService.updateServiceSubtask(serviceSubtask); - } - } - } - } - //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜� 锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛� - } + public void sfHandlle(ServiceSubtask serviceSubtask) { + //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸(缁欏井淇″皬绋嬪簭鐨勫浐瀹氫换鍔$敤鐨�) + List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>(); + ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); + 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) { + //璇存槑宸茬粡鍏ㄩ儴閬嶅巻瀹屼簡锛屽綋鍓嶇殑鎵ц鏂瑰紡搴忓彿鏄渶鍚庝竴涓簡 鎴栬�� 璇ユ偅鑰呭凡缁忛殢璁跨粨鏉燂紙鎴愬姛鎴栧け璐ヤ簡鎴栦笉鎵ц锛� + return; } - } + //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦�� + PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid()); + if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") { + //涓嶉渶瑕佸彂閫� + serviceSubtask.setResult("鎮h�呬笉闇�瑕侀殢璁�"); + serviceSubtask.setRemark(patArchive.getNotrequiredreason()); + serviceSubtask.setSendstate(4L); + iServiceSubtaskService.insertServiceSubtask(serviceSubtask); + setSuccessPreachForm(serviceSubtask, "-1", "涓嶉渶瑕佹墽琛�", "6"); + return; + } - - /** - * 鑾峰彇鎮h�呭嚭鍏ラ櫌淇℃伅 - * - * @param cry 鍑哄叆闄㈢被鍨嬶細0-鍏ラ櫌锛�1-鍑洪櫌 - * @param startTime 寮�濮嬫椂闂� - * @param endTime 缁撴潫鏃堕棿 - */ - @Transactional - public void getInHospInfo(String cry, LocalDateTime startTime, LocalDateTime endTime) { - String typeName = "0".equals(cry) ? "鍏ラ櫌" : "鍑洪櫌"; - log.info("銆恎etInHospInfo銆戝紑濮嬭幏鍙杮}鎮h�呬俊鎭紝鏃堕棿鑼冨洿锛歿} ~ {}", typeName, startTime, endTime); - long startTimeMillis = System.currentTimeMillis(); - - try { - // 绗竴姝ワ細鏋勫缓璇锋眰鍙傛暟骞惰皟鐢℉IS鎺ュ彛 - List<ThiedInhospInfo> thiedInhospInfoList = fetchHisData(cry, startTime, endTime); - - if (CollectionUtils.isEmpty(thiedInhospInfoList)) { - log.info("銆恎etInHospInfo銆憑}鎮h�呬俊鎭负绌猴紝璺宠繃澶勭悊", typeName); + String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform)); + if (descByCode.equals("鐢佃瘽")) { + List<String> list = new ArrayList<>(); + ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); + if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) { + //濡備綍浠诲姟琚�"鏆傚仠"鎴�"缁堟" return; } - log.info("銆恎etInHospInfo銆戣幏鍙栧埌{}鏉}鎮h�呬俊鎭�", thiedInhospInfoList.size(), typeName); - - // 绗簩姝ワ細淇濆瓨鍘熷鏁版嵁鍒版枃浠讹紙鐢ㄤ簬澶囦唤锛� - saveRawDataToFile(cry, thiedInhospInfoList); - - // 绗笁姝ワ細澶勭悊鎮h�呮暟鎹� - processPatientData(thiedInhospInfoList, cry); - - long endTimeMillis = System.currentTimeMillis(); - log.info("銆恎etInHospInfo銆憑}鎮h�呬俊鎭鐞嗗畬鎴愶紝鑰楁椂锛歿}ms", typeName, endTimeMillis - startTimeMillis); - - } catch (Exception e) { - log.error("銆恎etInHospInfo銆戣幏鍙杮}鎮h�呬俊鎭紓甯�", typeName, e); - throw new RuntimeException("鑾峰彇" + typeName + "鎮h�呬俊鎭け璐�", e); - } - } - - /** - * 绗竴姝ワ細璋冪敤HIS鎺ュ彛鑾峰彇鏁版嵁 - */ - private List<ThiedInhospInfo> fetchHisData(String cry, LocalDateTime startTime, LocalDateTime endTime) { - try { - // 鏋勫缓璇锋眰鍙傛暟 - Map<String, String> requestParams = buildRequestParams(cry, startTime, endTime); - - // 鏋勫缓璇锋眰澶� - Map<String, String> headers = buildRequestHeaders(startTime); - - // 鍙戦�丠TTP璇锋眰 - String result = HttpUtils.sendPostByHeader(hospInfoUrl, new Gson().toJson(requestParams), headers); - - // 瑙f瀽鍝嶅簲鏁版嵁 - return parseResponseData(result); - - } catch (Exception e) { - log.error("銆恌etchHisData銆戣皟鐢℉IS鎺ュ彛寮傚父", e); - throw e; - } - } - - /** - * 鏋勫缓璇锋眰鍙傛暟 - */ - private Map<String, String> buildRequestParams(String cry, LocalDateTime startTime, LocalDateTime endTime) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"); - Map<String, String> req = new HashMap<>(); - - if ("1".equals(cry)) { - // 鍑洪櫌鍙傛暟 - req.put("cashStartDate", startTime.format(formatter)); - req.put("cashEndDate", endTime.format(formatter)); - req.put("currStatus", "4"); - } else { - // 鍏ラ櫌鍙傛暟 - req.put("admissStartDate", startTime.format(formatter)); - req.put("admissEndDate", endTime.format(formatter)); - req.put("currStatus", "2"); - } - - return req; - } - - /** - * 鏋勫缓璇锋眰澶� - */ - private Map<String, String> buildRequestHeaders(LocalDateTime startTime) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"); - Map<String, String> header = new HashMap<>(); - header.put("x-hcsb-serviceno", "IS002347"); - header.put("x-hcsb-version", "2.0"); - header.put("x-hcsb-sourcesyscode", "14"); - header.put("x-hcsb-token", "ArGE2JnHtxG/Zx5nrnGY4eOfMUJGGJokAJHigG1BrCY="); - header.put("x-hcsb-msgdate", startTime.format(formatter)); - return header; - } - - /** - * 瑙f瀽鍝嶅簲鏁版嵁 - */ - private List<ThiedInhospInfo> parseResponseData(String result) { - try { - Gson gson = new Gson(); - JsonObject jsonObject = gson.fromJson(result, JsonObject.class); - JsonArray resultArray = jsonObject.getAsJsonObject("data").getAsJsonArray("result"); - Type resultType = new TypeToken<List<ThiedInhospInfo>>() { - }.getType(); - return gson.fromJson(resultArray, resultType); - } catch (Exception e) { - log.error("銆恜arseResponseData銆戣В鏋愬搷搴旀暟鎹紓甯革紝鍘熷鏁版嵁锛歿}", result, e); - throw e; - } - } - - /** - * 绗簩姝ワ細淇濆瓨鍘熷鏁版嵁鍒版枃浠� - */ - private void saveRawDataToFile(String cry, List<ThiedInhospInfo> dataList) { - try { - String typeName = "0".equals(cry) ? "鍏ラ櫌淇℃伅" : "鍑洪櫌淇℃伅"; - String filename = typeName + "_" + System.currentTimeMillis() + ".json"; - String filePath = "D:\\public\\HIS鏁版嵁閲囬泦\\" + filename; - - File file = new File(filePath); - File parentDir = file.getParentFile(); - if (!parentDir.exists()) { - parentDir.mkdirs(); + if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) { + setSuccessPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4"); + return; } - - if (!file.exists()) { - file.createNewFile(); + boolean dateToday = isDateToday(serviceSubtask.getVisitTime()); + //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝 displayNo涓嶇煡閬撴�庝箞閰嶇疆) + if (dateToday) { + list.add(serviceSubtask.getId().toString()); + //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓� + setSuccessPreachForm(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); } - - // 灏嗘暟鎹啓鍏ユ枃浠� - try (FileWriter writer = new FileWriter(file)) { - writer.write(new Gson().toJson(dataList)); + //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑 + if (list.size() > 0) { + redisCache.setCacheListLeftAndDistinct("cache-0", list); + log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size()); } - - log.info("銆恠aveRawDataToFile銆戝師濮嬫暟鎹凡淇濆瓨鍒版枃浠讹細{}", filePath); - - } catch (Exception e) { - log.error("銆恠aveRawDataToFile銆戜繚瀛樺師濮嬫暟鎹埌鏂囦欢寮傚父", e); - // 鏂囦欢淇濆瓨澶辫触涓嶅奖鍝嶄富娴佺▼锛屽彧璁板綍鏃ュ織 - } - } - - /** - * 绗笁姝ワ細澶勭悊鎮h�呮暟鎹� - */ - private void processPatientData(List<ThiedInhospInfo> thiedInhospInfoList, String cry) { - int successCount = 0; - int skipCount = 0; - int errorCount = 0; - - for (ThiedInhospInfo thiedInhospInfo : thiedInhospInfoList) { - try { - if (processSinglePatient(thiedInhospInfo, cry)) { - successCount++; - } else { - skipCount++; + } else if (descByCode.equals("寰俊灏忕▼搴�")) { + //寰俊灏忕▼搴� + if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) { + //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨� + //鍒ゆ柇鎮h�呰繃婊ら泦鍚堜腑锛屾槸鍚﹀瓨鍦ㄥ綋鍓嶆墽琛屾偅鑰呯殑韬唤璇� + boolean continutFlag = false; + for (ServiceSubtask ss : serviceSubtaskListFilter) { + if (ss.getSfzh().equals(serviceSubtask.getSfzh())) { + continutFlag = true; + } } - } catch (Exception e) { - errorCount++; - log.error("銆恜rocessPatientData銆戝鐞嗘偅鑰呮暟鎹紓甯革紝鎮h�匢D锛歿}", thiedInhospInfo.getPatiMediaNo(), e); + //濡傛灉瀛樺湪褰撳墠鎵ц鎮h�呯殑韬唤璇侊紝鍒欎笉鎵ц璇ユ偅鑰呬簡 + if (continutFlag) { + return; + } + + //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3锛堝惊鐜换鍔″氨鏄繖鏍凤級 + serviceSubtask.setSendstate(3L); + serviceSubtask.setId(null); + serviceSubtask.setFinishtime(null); + serviceSubtask.setCreateTime(new Date()); + serviceSubtask.setUpdateTime(new Date()); + serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); + + //灏嗗綋鍓嶈鎵ц鐨勬偅鑰呮斁鍒拌繃婊ゆ偅鑰呴泦鍚堜腑 + serviceSubtaskListFilter.add(serviceSubtask); } - } - - log.info("銆恜rocessPatientData銆戞偅鑰呮暟鎹鐞嗗畬鎴愶紝鎴愬姛锛歿}锛岃烦杩囷細{}锛屽け璐ワ細{}", successCount, skipCount, errorCount); - } - - /** - * 澶勭悊鍗曚釜鎮h�呮暟鎹� - */ - private boolean processSinglePatient(ThiedInhospInfo thiedInhospInfo, String cry) { - // 楠岃瘉韬唤璇佸彿 - if (StringUtils.isEmpty(thiedInhospInfo.getPatiIdCardNo())) { - log.warn("銆恜rocessSinglePatient銆戞偅鑰呰韩浠借瘉鍙蜂负绌猴紝璺宠繃澶勭悊锛屾偅鑰呯紪鍙凤細{}", thiedInhospInfo.getPatiMediaNo()); - return false; - } - - // 澶勭悊鎮h�呮。妗堜俊鎭� - PatArchive patArchive = processPatientArchive(thiedInhospInfo, cry); - - // 澶勭悊鎮h�呬綇闄俊鎭� - processPatientInhospInfo(thiedInhospInfo, patArchive, cry); - - return true; - } - - /** - * 澶勭悊鎮h�呮。妗堜俊鎭� - */ - private PatArchive processPatientArchive(ThiedInhospInfo thiedInhospInfo, String cry) { - // 鏌ヨ鎮h�呮槸鍚﹀凡瀛樺湪 - PatArchive queryArchive = new PatArchive(); - queryArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo().trim()); - List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive); - - // 鏋勫缓鎮h�呮。妗堜俊鎭� - PatArchive patArchive = buildPatientArchive(thiedInhospInfo, cry); - - // 淇濆瓨鎴栨洿鏂版偅鑰呮。妗� - if (CollectionUtils.isEmpty(existingArchives)) { - patArchiveService.insertPatArchive(patArchive); - log.debug("銆恜rocessPatientArchive銆戞柊澧炴偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno()); - } else { - patArchive.setId(existingArchives.get(0).getId()); - patArchiveService.updateArchive(patArchive); - log.debug("銆恜rocessPatientArchive銆戞洿鏂版偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno()); - } - - return patArchive; - } - - /** - * 鏋勫缓鎮h�呮。妗堜俊鎭� - */ - private PatArchive buildPatientArchive(ThiedInhospInfo thiedInhospInfo, String cry) { - PatArchive patArchive = new PatArchive(); - - // 鍩烘湰淇℃伅 - patArchive.setPatientno(thiedInhospInfo.getPatiMediaNo()); - patArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo().trim()); - patArchive.setName(thiedInhospInfo.getPatiRecordName()); - patArchive.setSourcefrom(2); - patArchive.setPattype("2"); - - // 鎬у埆 - patArchive.setSex("鐢�".equals(thiedInhospInfo.getPatiRecordGender()) ? 1L : 2L); - - // 姘戞棌鍜岀睄璐� - patArchive.setNation(thiedInhospInfo.getPatiNation()); - patArchive.setNativePlace(thiedInhospInfo.getPatiNationality()); - - // 灞呬綇鍦板潃 - String homeAddr = thiedInhospInfo.getPatiHomeAddr(); - patArchive.setPlaceOfResidence(StringUtils.isNotEmpty(homeAddr) ? homeAddr.replace("null", "") : ""); - - // 鍑虹敓鏃ユ湡 - if (StringUtils.isNotEmpty(thiedInhospInfo.getPatiBirthday())) { - try { - patArchive.setBirthdate(new SimpleDateFormat("yyyy-MM-dd").parse(thiedInhospInfo.getPatiBirthday())); - } catch (ParseException e) { - log.warn("銆恇uildPatientArchive銆戣В鏋愬嚭鐢熸棩鏈熷け璐ワ細{}", thiedInhospInfo.getPatiBirthday(), e); - } - } - - // 骞撮緞 - if (thiedInhospInfo.getTreateAge() != null) { - patArchive.setAge(Long.valueOf(thiedInhospInfo.getTreateAge())); - } - patArchive.setAgeUnit(thiedInhospInfo.getTreatAgeunit()); - - // 鑱旂郴鏂瑰紡 - patArchive.setTelcode(thiedInhospInfo.getCompanyTelNum()); - patArchive.setRelativetelcode(thiedInhospInfo.getContactPersonPhone()); - - // 鍑洪櫌鏂瑰紡澶勭悊锛堟浜$瓑鐗规畩鎯呭喌锛� - if (StringUtils.isNotEmpty(thiedInhospInfo.getOutWayId()) && "4".equals(thiedInhospInfo.getOutWayId())) { - patArchive.setNotrequiredFlag("1"); - patArchive.setNotrequiredreason(thiedInhospInfo.getOutWayName()); - } - if ("1".equals(cry) && StringUtils.isEmpty(thiedInhospInfo.getOutWayId())) { - patArchive.setNotrequiredFlag("1"); - patArchive.setNotrequiredreason("鍑洪櫌鏂瑰紡涓虹┖"); - } - - // 绯荤粺瀛楁 - patArchive.setDelFlag("0"); - patArchive.setCreateTime(new Date()); - patArchive.setUpdateTime(new Date()); - - return patArchive; - } - - /** - * 澶勭悊鎮h�呬綇闄俊鎭� - */ - private void processPatientInhospInfo(ThiedInhospInfo thiedInhospInfo, PatArchive patArchive, String cry) { - // 鏋勫缓浣忛櫌淇℃伅 - PatMedInhosp patMedInhosp = buildPatientInhospInfo(thiedInhospInfo, patArchive, cry); - - // 鏌ヨ鏄惁宸插瓨鍦ㄤ綇闄㈣褰� - PatMedInhosp queryInhosp = new PatMedInhosp(); - queryInhosp.setPatno(patArchive.getPatientno()); - queryInhosp.setSerialnum(patMedInhosp.getSerialnum()); - List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhospList(queryInhosp); - - // 淇濆瓨鎴栨洿鏂颁綇闄俊鎭� - if (CollectionUtils.isNotEmpty(existingInhosps)) { - patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid()); - patMedInhospService.updatePatMedInhosp(patMedInhosp); - log.debug("銆恜rocessPatientInhospInfo銆戞洿鏂颁綇闄俊鎭紝鎮h�呯紪鍙凤細{}锛屾祦姘村彿锛歿}", patArchive.getPatientno(), patMedInhosp.getSerialnum()); - } else { - patMedInhospService.insertPatMedInhosp(patMedInhosp); - log.debug("銆恜rocessPatientInhospInfo銆戞柊澧炰綇闄俊鎭紝鎮h�呯紪鍙凤細{}锛屾祦姘村彿锛歿}", patArchive.getPatientno(), patMedInhosp.getSerialnum()); - } - } - - /** - * 鏋勫缓鎮h�呬綇闄俊鎭� - */ - private PatMedInhosp buildPatientInhospInfo(ThiedInhospInfo thiedInhospInfo, PatArchive patArchive, String cry) { - PatMedInhosp patMedInhosp = new PatMedInhosp(); - - // 鎮h�呭熀鏈俊鎭� - patMedInhosp.setPatid(patArchive.getId()); - patMedInhosp.setPatno(patArchive.getPatientno()); - patMedInhosp.setPatname(patArchive.getName()); - - // 鎶ょ悊淇℃伅 - patMedInhosp.setNurseId(thiedInhospInfo.getNurseId()); - patMedInhosp.setNurseName(thiedInhospInfo.getNurseName()); - - // 浣忛櫌淇℃伅 - patMedInhosp.setSerialnum(thiedInhospInfo.getInpatientId()); - patMedInhosp.setFuflag("1"); - patMedInhosp.setInhospstate("0".equals(cry) ? "0" : "1"); - - // 鍖婚櫌鍜屽簥浣嶄俊鎭� - patMedInhosp.setHospitalcode(thiedInhospInfo.getAreaId()); - patMedInhosp.setBedNo(thiedInhospInfo.getAdmissBedNo()); + } else if (descByCode.equals("鐭俊")) { + RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); + String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); + log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid()); + boolean dateToday = isDateToday(serviceSubtask.getVisitTime()); + if (dateToday) { + 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"); + ServiceOutPath serviceOutPath = new ServiceOutPath(); + serviceOutPath.setParam1(taskId); + serviceOutPath.setParam2(patid); + serviceOutPath.setParam3(ivrTask1.getTaskName()); + serviceOutPath.setParam6(subId); + serviceOutPath.setCreateTime(new Date()); + iServiceOutPathService.insertServiceOutPath(serviceOutPath); + String format = String.format("%03X", serviceOutPath.getId()); + serviceOutPath.setRadix(format); + serviceOutPath.setUpdateTime(new Date()); + iServiceOutPathService.updateServiceOutPath(serviceOutPath); + //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀 + if (!"3".equals(serviceSubtask.getType())) { + sendMagParam.setPhone(serviceSubtask.getPhone()); + sendMagParam.setUrl(localIP + ":" + req_path + "/wt?p=" + format); + //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛� + if (serviceSubtask.getType().equals("1")) + sendMagParam.setUrl(localIP + ":" + req_path + "/sf?p=" + format); + sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�"); + } else { + HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid()); + if ("2".equals(heLibrary.getHetype())) { + sendMagParam.setPhone(serviceSubtask.getPhone()); + sendMagParam.setContent(heLibrary.getPreachcontent()); + } + } + String isSuccess = null; + if (visitHosp == 1) { + Map<String, String> req = new HashMap<>(); + req.put("phone", sendMagParam.getPhone()); + req.put("content", sendMagParam.getContent()); + isSuccess = 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); + if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) { + setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�", "5"); + return; + } + log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", 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("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode); + ObjectMapper objectMapper = new ObjectMapper(); + Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class); + String code = textParam.get("Code").toString(); + if (code.equals("0")) { + isSuccess = "true"; + } + } else if (visitHosp == 4) { + //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮� + 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")) { + isSuccess = "true"; + } + } else if (visitHosp == 3) {//甯備竴鍖婚櫌 + String content = sendMagParam.getContent().replace("銆愭柊鍗庡尰闄€��", ""); + String result = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, sendMagParam.getPhone(), content); + //杩欓噷闇�瑕佹牴鎹畆esult杩斿洖鐨勫�煎幓鍒ゆ柇锛屾槸鍚︽垚鍔燂紝鐒跺悗灏嗗�艰祴鍊肩粰isSuccess - // 鏃堕棿淇℃伅 - if (StringUtils.isNotEmpty(thiedInhospInfo.getAdmissDate())) { - try { - patMedInhosp.setStarttime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getAdmissDate())); - } catch (ParseException e) { - log.warn("銆恇uildPatientInhospInfo銆戣В鏋愬叆闄㈡椂闂村け璐ワ細{}", thiedInhospInfo.getAdmissDate(), e); - } - } + } + //浠诲姟鍙戦�佽褰� + ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); + serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); + serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); + serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); + serviceSubtaskRecord.setPreachform("4"); + serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); + serviceSubtaskRecord.setResult("success"); + if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true")) + serviceSubtaskRecord.setResult("error"); + serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); - if (StringUtils.isNotEmpty(thiedInhospInfo.getOutDate())) { - try { - patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getOutDate())); - } catch (ParseException e) { - log.warn("銆恇uildPatientInhospInfo銆戣В鏋愬嚭闄㈡椂闂村け璐ワ細{}", thiedInhospInfo.getOutDate(), e); - } - } - - // 鍑洪櫌淇℃伅 - if (cry.equals("1")) { - patMedInhosp.setLeaveldeptcode(thiedInhospInfo.getCurrDeptId()); - patMedInhosp.setLeaveldeptname(thiedInhospInfo.getCurrDeptName()); - patMedInhosp.setLeavediagname(thiedInhospInfo.getDiagName()); - patMedInhosp.setLeaveicd10code(thiedInhospInfo.getDiagIcd10()); - patMedInhosp.setOutWayId(thiedInhospInfo.getOutWayId()); - patMedInhosp.setOutWayName(thiedInhospInfo.getOutWayName()); - // 鐥呭尯淇℃伅 - patMedInhosp.setLeavehospitaldistrictid(thiedInhospInfo.getCurrWardCode()); - patMedInhosp.setLeavehospitaldistrictcode(thiedInhospInfo.getCurrWardId()); - patMedInhosp.setLeavehospitaldistrictname(thiedInhospInfo.getCurrWardName()); - patMedInhosp.setLeaveldeptid(thiedInhospInfo.getCurrDeptCode()); - } else { - //鍏ラ櫌 - patMedInhosp.setDeptcode(thiedInhospInfo.getCurrDeptId()); - patMedInhosp.setDeptname(thiedInhospInfo.getCurrDeptName()); - patMedInhosp.setDiagname(thiedInhospInfo.getDiagName()); - patMedInhosp.setIcd10code(thiedInhospInfo.getDiagIcd10()); - patMedInhosp.setHospitaldistrictid(thiedInhospInfo.getAdmissWardCode()); - patMedInhosp.setHospitaldistrictcode(thiedInhospInfo.getAdmissWardId()); - patMedInhosp.setHospitaldistrictname(thiedInhospInfo.getAdmissWardName()); - } - - // 鍖荤敓淇℃伅 - patMedInhosp.setDrname(thiedInhospInfo.getDoctName()); - patMedInhosp.setDrcode(thiedInhospInfo.getDoctId()); - - - // 鐘舵�佷俊鎭� - patMedInhosp.setSchemestatus("0".equals(cry) ? 1L : 2L); - - // 绯荤粺瀛楁 - patMedInhosp.setDelFlag("0"); - patMedInhosp.setOrgid("1"); - - return patMedInhosp; - } - - - 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)); - } - } - - 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(); + //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬� + serviceSubtask.setSendstate(3L); + if (StringUtils.isNotEmpty(isSuccess) && isSuccess.equals("true")) { + serviceSubtask.setResult("success"); + serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�"); + setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2"); + } else { + serviceSubtask.setResult("error"); + serviceSubtask.setRemark("鐭俊鍙戦�佸け璐�"); + setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5"); + } + } catch (Exception e) { + String guid = UUID.randomUUID().toString(); + log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid); + setSuccessPreachForm(serviceSubtask, sendPreachform, "闀挎湡浠诲姟鐭俊鍙戦�佸け璐�:绯荤粺閿欒", "5"); } } + + } else if (descByCode.equals("鍏紬鍙�")) { + log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1); + //鍏紬鍙� + RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); + String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); + boolean dateToday = isDateToday(serviceSubtask.getVisitTime()); + if (dateToday) { + try { + String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); + String url = null; + url = localIP + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false"; + + //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D + List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid()); + if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) { + setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戣鏈烘瀯鐨勫叕浼楀彿閰嶇疆淇℃伅涓嶅叏锛屾棤娉曢�氳繃鍏紬鍙峰彂閫�", "4"); + return; + } + + if (StringUtils.isEmpty(patArchive.getPatidHis())) { + setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", "5"); + return; + } + String wxCode = ""; + if (visitHosp == 3) {//甯備竴鍖婚櫌 + String urlTemp = "http://192.200.54.14:5003/sfjk/SendMessage?sfzh=" + serviceSubtask.getSfzh() + + "&title=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&content=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&phone=" + patArchive.getTelcode() + + "&url=" + url + "&key=ff76f8904f5f32b5ee1739e8ea46e60g"; + HttpUtils.sendGet(urlTemp); + } else { + wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx); + } + + Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class); + //浠诲姟鍙戦�佽褰� + ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); + serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); + serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); + serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); + serviceSubtaskRecord.setPreachform("4"); + serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); + serviceSubtaskRecord.setResult("success"); + if (!map.isEmpty() && (Boolean) map.get("succ") == false) serviceSubtaskRecord.setResult("error"); + serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); + + //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬� + serviceSubtask.setSendstate(3L); + if ((Boolean) map.get("succ") == true) { + serviceSubtask.setResult("success"); + setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佹垚鍔�", "2"); + } else { + log.error("銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}", serviceSubtask, map.get("msg")); + setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�", "5"); + } + } catch (Exception e) { + String guid = UUID.randomUUID().toString(); + log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid); + setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛�" + e.getMessage(), "5"); + } + } + } else if (descByCode.equals("浜哄伐")) { + setSuccessPreachForm(serviceSubtask, sendPreachform, "浜哄伐寰呮墽琛�", "2"); } - return key; + } + + + private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) { + ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); + serviceSubtaskPreachform.setSubid(subid); + serviceSubtaskPreachform.setTaskid(taskid); + List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); + if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) { + String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime(); + 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")); + if (!allSendStateNot1AndNot9) { + //璇存槑锛屽湪鏌愮鏂瑰紡鍙戦�佸け璐ュ悗锛屽張鎴愬姛浜嗭紙渚嬪鐭俊鎴栧叕浼楀彿锛屽湪瑙勫畾鏃堕棿澶栨偅鑰呭仛瀹屼簡锛岃繖涓椂鍊欙紝鐘舵�佹敼鎴愪簡9锛� + serviceSubtask.setSendstate(6L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + return "-1"; + } + + // 褰搒ort绛変簬鍒楄〃size鏃讹紝骞朵笖鎵�鏈塻endstate閮戒笉绛変簬9锛屽垯杩斿洖-1 + if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) { + if (allSendStateNot1AndNot9) { + //璇存槑鍏ㄥ彂閫佸け璐ヤ簡 + serviceSubtask.setSendstate(5L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + //淇敼鍙戦�佺姸鎬� + setFail(serviceSubtaskPreachforms, serviceSubtask); + } + return "-1"; + } + + // 褰搒ort绛変簬鍒楄〃size鏃讹紝涓嬩竴涓猻ort涓�-1 + Long nextSort = currentSort.get() + 1; + + //濡傛灉褰撳墠鐨勫彂閫佹柟寮忎笉涓虹┖锛屽苟涓斿紑濮嬪噯澶囪鐢ㄤ笅涓�绉嶆柟寮忓彂閫佷簡锛岄偅褰撳墠鐨勮偗瀹氭病鏈夊彂閫佹垚鍔燂紝闇�瑕佽缃け璐� + // (杩欓噷涓昏鏄紝浜哄伐濡傛灉娌℃湁闅忚锛岀劧鍚庡埌鍏紬鍙风殑鏃跺�欙紝灏变笉浼氬啀鍘荤浜哄伐鏄惁鎴愬姛锛屼汉宸ョ殑鐘舵�佷細涓�鐩村崱鍦�2鐨勭姸鎬佷笂) + if (StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform())) { + setFail(serviceSubtaskPreachforms, serviceSubtask); + } + + // 鎵惧埌涓嬩竴涓猻ort瀵瑰簲鐨刾reachform + return serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse("-1"); + } + + return null; + } + + private Integer setFail(List<ServiceSubtaskPreachform> serviceSubtaskPreachforms, ServiceSubtask serviceSubtask) { + Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst(); + if (id.isPresent()) { + ServiceSubtaskPreachform subtaskPreachform = new ServiceSubtaskPreachform(); + subtaskPreachform.setSendstate("5"); + subtaskPreachform.setId(id.get()); + return serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(subtaskPreachform); + } + return 0; + } + private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) { Map<String, Object> map = new LinkedHashMap<>(); @@ -1119,4 +868,72 @@ } return toHex(md5.digest()); } + + public void collectHIS() { + try { + // HIS鏁版嵁閲囬泦 + log.info("銆恉ealHisData銆慔IS寮�濮嬮噰闆嗘暟鎹�"); + ichService.sync(); + log.info("銆恉ealHisData銆慔IS缁撴潫閲囬泦鏁版嵁"); + } catch (Exception e) { + log.error("銆恉ealHisData銆慔IS鏁版嵁閲囬泦寮傚父", e); + } + } + + public Boolean setSuccessPreachForm(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; + } + + + ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); + serviceSubtaskPreachform.setSubid(serviceSubtask.getId()); + serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid()); + serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid()); + List<ServiceSubtaskPreachform> sspCount = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); + + serviceSubtaskPreachform.setPreachform(preachform); + //1:鏈彂閫佺姸鎬� + serviceSubtaskPreachform.setSendstate("1"); + //鐢佃瘽鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2锛屽洜涓猴紝鏁版嵁鍙兘鍗″湪闃熷垪閲屼簡; 锛堟病杩涢槦鍒楋紝鐢佃瘽鐘舵�佽繕鏄�1锛� + if (preachform.equals("3") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2) + serviceSubtaskPreachform.setSendstate("2"); + //浜哄伐鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2 + if (preachform.equals("1") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2) + 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宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡) + if (serviceSubtaskPreachform1.getSort() == sspCount.size()) { + if (failSendstate.equals("4") || failSendstate.equals("5")) { + serviceSubtask.setCurrentPreachform(preachform); + serviceSubtask.setSendstate(5L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + return true; + } + } + } else { + log.error("銆愬畾鏃朵换鍔′腑璇ユ偅鑰呮病鏈夋煡璇㈠埌灞炰簬浠栫殑鍙戦�佹柟寮忥紝subid锛歿},prechform:{},orgid:{}銆�", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid()); + return false; + } + //灏嗕笅涓�娆$殑闅忚鏃堕棿涓庡綋鍓嶆墽琛屾柟寮忚褰曚竴涓� + serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime())); + serviceSubtask.setCurrentPreachform(preachform); + serviceSubtask.setSendstate(3L); + serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); + return true; + } } -- Gitblit v1.9.3