ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -6,6 +6,7 @@ import com.google.gson.Gson; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.ServiceFromEnum; import com.ruoyi.common.enums.WxGZHEnum; import com.ruoyi.common.utils.HttpUtil; import com.ruoyi.common.utils.RSAPublicKeyExample; import com.ruoyi.common.utils.StringUtils; @@ -30,12 +31,15 @@ import org.springframework.stereotype.Component; import java.net.URLEncoder; 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; import java.util.concurrent.TimeUnit; import static cn.hutool.core.convert.Convert.toHex; @Slf4j @Component//ç嬿¤éå @@ -53,9 +57,6 @@ @Value("${req_path}") private String req_path; @Value("${thirdWXUrl}") private String thirdWXUrl; @Autowired private IServiceOutPathService iServiceOutPathService; @@ -72,16 +73,10 @@ private RedisCache redisCache; @Autowired private RobotPhoneUtils robotPhoneUtils; @Autowired private ServiceTaskMapper svyTaskMapper; @Autowired private ServiceSubtaskMapper serviceSubtaskMapper; @Autowired private ISvyTaskTemplateService iSvyTaskTemplateService; @Autowired private IServiceSubtaskRecordService serviceSubtaskRecordService; @@ -91,9 +86,6 @@ @Value("${xhsmsPath}") private String xhsmsPath; @Value("${appid}") private String appid; // å建åºå®å¤§å°ççº¿ç¨æ± private static final ExecutorService executorService = Executors.newFixedThreadPool(10); @@ -489,7 +481,32 @@ url = ip + ":" + req_path + "/xj?p=" + format; } PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid()); String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatientno()); if (StringUtils.isEmpty(patArchive.getPatidHis())) { ServiceSubtask ss = new ServiceSubtask(); ss.setResult("error"); ss.setRemark("å ¬ä¼å·åé失败,hisç³»ç»çæ£è id为空"); ss.setSendstate(5L); ss.setId(serviceSubtask.getId()); ss.setFinishtime(new Date()); serviceSubtaskMapper.updateServiceSubtask(ss); continue; } //è·åå¾®ä¿¡å ¬ä¼å·è¯·æ±ä¿¡æ¯æ ¹æ®æºæID 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; } String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(),wxqqxx); Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class); if (!map.isEmpty()) { serviceSubtask.setResult("success"); @@ -633,22 +650,42 @@ return key; } private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String setPatientname, String setPatientid) { 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); xinHuaWXReq.setUrl(url); xinHuaWXReq.setPatientid(setPatientid); xinHuaWXReq.setPatientname(setPatientname); xinHuaWXReq.setPatientname(patientname); xinHuaWXReq.setMobile(phone); xinHuaWXReq.setMedcardno(null); xinHuaWXReq.setTitlename(taskName); xinHuaWXReq.setContent(taskDesc); xinHuaWXReq.setAppid(appid); xinHuaWXReq.setAppid(wxqqxx.get(1)); log.error("-----å¾®ä¿¡å ¬ä¼å·çåºå·®ä¸º----ï¼{}", xinHuaWXReq); String result = HttpUtils.sendPost(thirdWXUrl, new Gson().toJson(xinHuaWXReq)); String body = new Gson().toJson(xinHuaWXReq); String encode = encode(wxqqxx.get(2).concat(body)); log.error("--------encodeçå¼ä¸ºï¼{}-----", encode); Map<String, String> headerMap = new HashMap<>(); headerMap.put("sign", encode); String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap); log.error("--------resultçå¼ä¸ºï¼{}-----", result); JSONObject jsonObject = JSONObject.parseObject(result); String code = (String) jsonObject.toString(); return code; } public String encode(String arg) { if (arg == null) { arg = ""; } MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); md5.update(arg.getBytes("UTF-8")); } catch (Exception e) { e.printStackTrace(); } return toHex(md5.digest()); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java
@@ -12,6 +12,7 @@ import com.smartor.domain.PatMedInhosp; import com.smartor.domain.PatMedInhospVO; import com.smartor.domain.PatMedReq; import com.smartor.domain.PatServiceCount; import com.smartor.service.IPatMedInhospService; import com.smartor.service.IPatMedOuthospService; import io.swagger.annotations.Api; @@ -63,6 +64,17 @@ } /** * åºé¢ãé¨è¯äººæ°åé访éç»è®¡ï¼å¨ï¼æï¼å¹´ï¼ */ @ApiOperation("åºé¢ãé¨è¯äººæ°åé访éç»è®¡ï¼å¨ï¼æï¼å¹´ï¼") //@PreAuthorize("@ss.hasPermi('smartor:patinhosp:list')") @PostMapping("/queryPersonCount") public TableDataInfo queryPersonCount(@RequestBody PatServiceCount patServiceCount) { return null; } /** * æ¥è¯¢å½åç»é人èªå·±ï¼ç åºãé¨é¨ï¼çæ£è ä½é¢è®°å½å表 */ @ApiOperation("æ¥è¯¢å½åç»é人èªå·±ï¼ç åºãé¨é¨ï¼çæ£è ä½é¢è®°å½å表") ruoyi-admin/src/main/resources/application-druid.yml
@@ -13,10 +13,10 @@ # å ¬å¸ # url: jdbc:mysql://192.168.2.9:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # 丽水 url: jdbc:mysql://127.0.0.1:3308/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: smartor password: Smartor.2023 driverClassName: com.mysql.cj.jdbc.Driver # url: jdbc:mysql://127.0.0.1:3308/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: smartor # password: Smartor.2023 # driverClassName: com.mysql.cj.jdbc.Driver # # æ°å # url: jdbc:mysql://192.168.191.181:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: smartor @@ -24,10 +24,10 @@ # driverClassName: com.mysql.cj.jdbc.Driver # å ¬å¸äº # url: jdbc:mysql://116.62.18.175:6002/smartor_lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: hxsoft # password: Hxerp2000 # driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://116.62.18.175:6002/smartor_lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: hxsoft password: Hxerp2000 driverClassName: com.mysql.cj.jdbc.Driver # ä»åºæ°æ®æº slave: @@ -100,12 +100,6 @@ page: page default-page: 1 default-size: 10 #å¾®ä¿¡å ¬ä¼å·çå¯é¥ï¼ä¸½æ°´ï¼ appid: "3311000002" appSecret: MzMxMTAwMDAwMg== #ç¬¬ä¸æ¹å¾®ä¿¡å ¬ä¼å·åéå°åï¼ä¸½æ°´ï¼ thirdWXUrl: http://192.168.10.170:18001/frontend/medical/api #ééçå¯é¥ dingAppid: dingn8iip5ubj7clrrsv ruoyi-admin/src/main/resources/application.yml
@@ -131,7 +131,7 @@ # Swaggeré ç½® swagger: # æ¯å¦å¼å¯swagger enabled: false enabled: true # 请æ±åç¼ pathMapping: /dev-api ruoyi-common/src/main/java/com/ruoyi/common/enums/WxGZHEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,74 @@ package com.ruoyi.common.enums; import com.ruoyi.common.utils.StringUtils; import java.util.ArrayList; import java.util.List; /** * ä¸½æ°´å ¬ä¼å· */ public enum WxGZHEnum { ZYY("47231022633110211A2101", "3311000002", "MzMxMTAwMDAwMg==", "http://192.168.10.170:18001/frontend/medical/api"), JN("47255004333112711A1001", null, null, null); private String orgid; private String appid; private String appSecret; private String address; WxGZHEnum(String orgid, String appid, String appSecret, String address) { this.orgid = orgid; this.appid = appid; this.appSecret = appSecret; this.address = address; } public static List<String> getDescByCode(String orgid) { WxGZHEnum[] organEnums = values(); for (int i = 0; i < organEnums.length; i++) { WxGZHEnum organEnum = organEnums[i]; if (organEnum.getOrgid().equals(orgid)) { List<String> list = new ArrayList<>(); if (StringUtils.isEmpty(organEnum.getOrgid())) list.add(organEnum.getOrgid()); if (StringUtils.isEmpty(organEnum.getAppid())) list.add(organEnum.getAppid()); if (StringUtils.isEmpty(organEnum.getAppSecret())) list.add(organEnum.getAppSecret()); if (StringUtils.isEmpty(organEnum.getAddress())) list.add(organEnum.getAddress()); return list; } } return null; } public String getOrgid() { return orgid; } public void setOrgid(String orgid) { this.orgid = orgid; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getAppid() { return appid; } public void setAppid(String appid) { this.appid = appid; } public String getAppSecret() { return appSecret; } public void setAppSecret(String appSecret) { this.appSecret = appSecret; } } ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -11,6 +11,7 @@ import com.google.gson.JsonObject; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.ServiceFromEnum; import com.ruoyi.common.enums.WxGZHEnum; import com.ruoyi.common.utils.DtoConversionUtils; import com.ruoyi.common.utils.HttpUtil; import com.ruoyi.common.utils.RSAPublicKeyExample; @@ -41,6 +42,7 @@ 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; @@ -50,6 +52,8 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; import static cn.hutool.core.convert.Convert.toHex; /** * 宿¶ä»»å¡è°åº¦æµè¯ @@ -97,9 +101,6 @@ @Value("${pub_key}") private String pub_key; @Value("${thirdWXUrl}") private String thirdWXUrl; @Value("${req_path}") private String req_path; @@ -542,10 +543,32 @@ url = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "¶m2=" + patid + "¶m3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "¶m5=false"; // String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), "æ "); String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatientno()); //è·åå¾®ä¿¡å ¬ä¼å·è¯·æ±ä¿¡æ¯æ ¹æ®æºæID 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; } if (StringUtils.isEmpty(patArchive.getPatidHis())) { ServiceSubtask ss = new ServiceSubtask(); ss.setResult("error"); ss.setRemark("å ¬ä¼å·åé失败,hisç³»ç»çæ£è id为空"); ss.setSendstate(5L); ss.setId(serviceSubtask.getId()); ss.setFinishtime(new Date()); 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()); @@ -799,7 +822,7 @@ return key; } private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String setPatientname, String setPatientid) { private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String setPatientname, String setPatientid, List<String> wxqqxx) { XinHuaWXReq xinHuaWXReq = new XinHuaWXReq(); xinHuaWXReq.setIdcard(idcard); xinHuaWXReq.setUrl(url); @@ -809,17 +832,31 @@ xinHuaWXReq.setMedcardno(null); xinHuaWXReq.setTitlename(taskName); xinHuaWXReq.setContent(taskDesc); xinHuaWXReq.setAppid(appid); xinHuaWXReq.setAppid(wxqqxx.get(1)); log.error("----getWXCode---xinHuaWXReqçåºå为ï¼{}", xinHuaWXReq); String result = HttpUtils.sendPost(thirdWXUrl, new Gson().toJson(xinHuaWXReq)); String body = new Gson().toJson(xinHuaWXReq); String encode = encode(wxqqxx.get(2).concat(body)); Map<String, String> headerMap = new HashMap<>(); headerMap.put("sign", encode); String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap); JSONObject jsonObject = JSONObject.parseObject(result); String code = (String) jsonObject.toString(); return code; } // public static void main(String[] args) { // LocalDateTime originalDateTime = LocalDateTime.now(); // LocalDateTime startOfDay = originalDateTime.with(LocalTime.MIN); // System.out.println("Original DateTime: " + originalDateTime); // System.out.println("Start of Day: " + startOfDay); // } public String encode(String arg) { if (arg == null) { arg = ""; } MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); md5.update(arg.getBytes("UTF-8")); } catch (Exception e) { e.printStackTrace(); } return toHex(md5.digest()); } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -492,6 +492,7 @@ sysUserDept.setUserId(user.getUserId()); sysUserDept.setDeptCode(wardCode); sysUserDept.setDeptId(sysDept.getDeptId()); sysUserDept.setOrgid(user.getOrgid()); List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); sysUserDept.setDelFlag(0L); sysUserDept.setDeptType("2"); smartor/src/main/java/com/smartor/domain/PatServiceCount.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ package com.smartor.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; import java.util.List; /** * åºé¢ãé¨è¯äººæ°åé访éç»è®¡ï¼å¨ï¼æï¼å¹´ï¼ PatServiceCount * * @author smartor * @date 2023-03-04 */ @ApiModel(value = "PatServiceCount", description = "åºé¢ãé¨è¯äººæ°åé访éç»è®¡ï¼å¨ï¼æï¼å¹´ï¼") @Data public class PatServiceCount extends BaseEntity { private static final long serialVersionUID = 1L; /** * èªå¢ID */ @ApiModelProperty(value = "åºé¢è¿æ¯é¨è¯ï¼1ï¼åºé¢ 2é¨è¯ï¼") private Integer cymz; /** * é´éï¼ 1å¨ 2æ 3å¹´ */ @ApiModelProperty(value = "é´éï¼ 1å¨ 2æ 3å¹´") private Integer interval; /** * å¼å§æ¶é´ */ @ApiModelProperty(value = "å¼å§æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = " å ¥é¢æ¶é´ ", width = 30, dateFormat = "yyyy-MM-dd") private Date starttime; /** * åºé¢æ¶é´ */ @ApiModelProperty(value = "ç»ææ¶é´") @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = " åºé¢æ¶é´ ", width = 30, dateFormat = "yyyy-MM-dd") private Date endtime; } smartor/src/main/java/com/smartor/service/IPatMedInhospService.java
@@ -2,10 +2,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.smartor.domain.PatMedInhosp; import com.smartor.domain.PatMedInhospVO; import com.smartor.domain.PatMedReq; import com.smartor.domain.PatMedRes; import com.smartor.domain.*; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -35,6 +32,11 @@ public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp); /** * åºé¢ãé¨è¯äººæ°åé访éç»è®¡ï¼å¨ï¼æï¼å¹´ï¼ */ public Map<String,Integer> queryPersonCount(PatServiceCount patServiceCount); /** * æ¥è¯¢å½åç»é人èªå·±ï¼ç åºãé¨é¨ï¼çæ£è ä½é¢è®°å½å表 * * @param patMedInhospVO smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -76,6 +76,19 @@ return patMedInhospList; } @Override public Map<String, Integer> queryPersonCount(PatServiceCount patServiceCount) { if (patServiceCount.getInterval() == 1) { //å¨ } else if (patServiceCount.getInterval() == 2) { //æ } else if (patServiceCount.getInterval() == 3) { //å¹´ } return null; } /** * æ¥è¯¢å½åç»é人èªå·±ï¼ç åºãé¨é¨ï¼çæ£è ä½é¢è®°å½å表 *