From c3afd0adfaa08d0cec95945e7c62265589d1c7db Mon Sep 17 00:00:00 2001 From: wanghao <2413927716@qq.com> Date: Thu, 23 Jul 2026 17:12:41 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(emergency):=20isLiaisonUser=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=9F=A5EMP=5FCARE=5FEMP=E8=A1=A8FIRST=5FAIDER=5FINFO?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=80=A5=E6=95=91=E4=BA=BA=E5=91=98=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原逻辑硬编码返回true,现查询AYGC_YWK.EMP_CARE_EMP表中FIRST_AIDER_INFO JSON字段是否包含当前登录用户工号,有则判定为急救人员。 --- .../largeScreen/mapper/LargeScreenDataMapper.java | 9 +++++++++ .../service/impl/LargeScreenDataServiceImpl.java | 4 +--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/LargeScreenDataMapper.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/LargeScreenDataMapper.java index 07ac081..bd923e9 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/LargeScreenDataMapper.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/LargeScreenDataMapper.java @@ -44,4 +44,13 @@ public interface LargeScreenDataMapper extends MPJBaseMapper { */ List> selectEmployeeNumsByPhones(@Param("phones") List phones); + /** + * 查询 EMP_CARE_EMP 表中 FIRST_AIDER_INFO 是否包含指定工号 + * + * @param workNo 工号 + * @return 命中记录数,大于 0 表示该工号是急救人员 + */ + @Select("SELECT COUNT(1) FROM AYGC_YWK.EMP_CARE_EMP WHERE DEL_FLAG = '0' AND FIRST_AIDER_INFO LIKE CONCAT('%', #{workNo}, '%')") + int countFirstAiderByWorkNo(@Param("workNo") String workNo); + } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java index 8be886b..b8e1e81 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java @@ -936,9 +936,7 @@ public class LargeScreenDataServiceImpl extends ServiceImpl 0; - return true; + return baseMapper.countFirstAiderByWorkNo(workNo) > 0; } @Override From 05c37fd532f1fe32066f27d649346b96655bbc60 Mon Sep 17 00:00:00 2001 From: lianlonggang Date: Fri, 24 Jul 2026 14:40:04 +0800 Subject: [PATCH 2/3] =?UTF-8?q?style(system):=20kafka=E9=9B=86=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jeecg-boot-base-core/pom.xml | 33 +++++++++++++++++++++++++++++++++ pom.xml | 4 ++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/jeecg-boot-base-core/pom.xml b/jeecg-boot-base-core/pom.xml index 34c243c..19dc40b 100644 --- a/jeecg-boot-base-core/pom.xml +++ b/jeecg-boot-base-core/pom.xml @@ -43,6 +43,14 @@ true + + yixiong-tech + yixiong-tech Repository + https://maven.ops.yixiong-tech.com/repository/public/ + + false + + @@ -367,6 +375,31 @@ + + + + ptr.xjyt.iosp.starter + iosp-starter-log + 2.0.9.RELEASE + + + + com.hongyousoft + kafka-appender + 0.0.4 + + + + org.apache.skywalking + apm-toolkit-logback-1.x + 9.3.0 + + + + org.apache.kafka + kafka-clients + 2.4.0 + diff --git a/pom.xml b/pom.xml index cd274bc..9500825 100644 --- a/pom.xml +++ b/pom.xml @@ -143,7 +143,7 @@ dt-releases jeecg Repository - https://maven.icdat.cn/repository/releases/ + https://maven.ops.yixiong-tech.com/repository/releases/ false @@ -151,7 +151,7 @@ dt-snapshots jeecg-snapshots Repository - https://maven.icdat.cn/repository/shapshots/ + https://maven.ops.yixiong-tech.com/repository/shapshots/ false From ab0470c04c153c53173865b5bc423c9d00550c0c Mon Sep 17 00:00:00 2001 From: lianlonggang Date: Wed, 29 Jul 2026 11:49:16 +0800 Subject: [PATCH 3/3] =?UTF-8?q?style(system):=20=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=9B=B8=E5=85=B3=E5=91=98=E5=B7=A5=E7=94=B5?= =?UTF-8?q?=E8=AF=9D=E5=8F=B7=E7=A0=81=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=EF=BC=9B=E5=AE=89=E7=9C=BC=E5=81=A5=E5=BA=B7=E7=9B=91=E6=B5=8B?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E8=B7=B3=E8=BD=AC=E6=97=B6=EF=BC=8C=E8=8E=B7?= =?UTF-8?q?=E5=8F=96token=E6=96=B9=E5=BC=8F=E8=B0=83=E6=95=B4=E4=B8=BA?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E8=AE=A4=E8=AF=81=E7=9B=B4=E6=8E=A5=E8=8E=B7?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anyan/client/AnYanClientExecutor.java | 48 ++++++++++++++++++- .../anyan/config/RestTemplateUtil.java | 11 ++++- .../controller/SysMessageController.java | 2 +- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClientExecutor.java b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClientExecutor.java index cd717d2..f545199 100644 --- a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClientExecutor.java +++ b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/client/AnYanClientExecutor.java @@ -258,8 +258,11 @@ public class AnYanClientExecutor implements AnYanClient { return token; } - @Override - public AuthResult publicNetworkTokenNoCache() { + /** + * @description: 旧版公网获取token实现(SM4 + AnYanResult 包裹解密),保留备份 + * @author PengJ + */ + public AuthResult publicNetworkTokenNoCacheBAK() { JSONObject param = new JSONObject(); String password = anYanProperties.getPublicPassWrod(); String userName = anYanProperties.getPublicUserNmae(); @@ -289,6 +292,47 @@ public class AnYanClientExecutor implements AnYanClient { return null; } + /** + * @description: 公网获取token(密码模式,调用方式与 getAuthTokenByPassword 保持一致) + * 表单提交 + 公网 host + QUERY_AUTH_TOKEN,仅 RSA 加密密码,不写 Redis(缓存由调用方负责) + * @author PengJ + */ + @Override + public AuthResult publicNetworkTokenNoCache() { + String username = anYanProperties.getPublicUserNmae(); + String password = anYanProperties.getPublicPassWrod(); + try { + // 仅 RSA 加密密码,与 getAuthTokenByPassword 保持一致 + String encryptPassword = StringUtils.encryptByPublicKey(publicKey, password); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); + MultiValueMap formData = new LinkedMultiValueMap<>(); + formData.add("grant_type", "password"); + formData.add("username", username); + formData.add("password", encryptPassword); + formData.add("client_id", anYanProperties.getClientId()); + formData.add("client_secret", anYanProperties.getClientSecret()); + ResponseEntity authResult = RestTemplateUtil.postExchangeForGetTokenByPassword(AnYanApiEnum.QUERY_AUTH_TOKEN, formData, headers, AuthResult.class); + if (HttpStatus.OK.equals(authResult.getStatusCode()) + && ObjectUtils.isNotEmpty(authResult.getBody())) { + return authResult.getBody(); + } else { + log.error("------安眼系统获取公网token失败{}------", authResult.getBody()); + ExceptionAssertsUtil.fail("------安眼系统获取公网token失败------" + authResult.getBody()); + return null; + } + } catch (HttpClientErrorException e) { + log.error("------安眼系统获取公网token失败{}------", e.getMessage()); + String replace = Objects.requireNonNull(e.getMessage()).replace("401 Unauthorized: ", ""); + replace = replace.replace("\"", ""); + AuthResult bean = JSONUtil.toBean(replace, AuthResult.class); + ExceptionAssertsUtil.fail(bean.getMessage()); + } catch (Exception e) { + ExceptionAssertsUtil.fail(e.getMessage()); + } + return null; + } + /** * @description: 根据token获取用户信息 * @author PengJ diff --git a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/config/RestTemplateUtil.java b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/config/RestTemplateUtil.java index eca2526..dfd004a 100644 --- a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/config/RestTemplateUtil.java +++ b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/config/RestTemplateUtil.java @@ -1,5 +1,6 @@ package com.renkang.anyan.config; +import com.alibaba.fastjson.JSON; import com.renkang.anyan.enums.AnYanApiEnum; import com.renkang.anyan.model.vo.AnYanResult; import lombok.extern.slf4j.Slf4j; @@ -81,7 +82,15 @@ public class RestTemplateUtil { public static ResponseEntity postExchangeForGetToken(AnYanApiEnum api, Object requestBody, Class responseType) { String url = getProperties().getPublicHost() + api.getMethodPath() + api.getMethodParam(); HttpEntity requestEntity = new HttpEntity<>(requestBody); - return getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType); + // 打印请求入参,便于排查 + String bodyJson = JSON.toJSONString(requestBody); + log.info("安眼获取token请求入参: url={}, body={}", url, bodyJson); + // 打印等价 curl(application/json),便于本地手动调试 + log.info("安眼获取token等价curl: curl -X POST '{}' -H 'Content-Type: application/json' -d '{}'", url, bodyJson); + ResponseEntity response = getRestTemplate().exchange(url, api.getHttpMethod(), requestEntity, responseType); + // 打印返回信息(状态码 + 响应体) + log.info("安眼获取token返回信息: statusCode={}, body={}", response.getStatusCode(), JSON.toJSONString(response.getBody())); + return response; } /** diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SysMessageController.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SysMessageController.java index 33c1c7e..203acdf 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SysMessageController.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SysMessageController.java @@ -48,7 +48,7 @@ public class SysMessageController extends JeecgController page = new Page(pageNo, pageSize); IPage pageList = sysMessageService.page(page, queryWrapper);