shc před 5 měsíci
rodič
revize
49d99323b1

+ 57 - 78
hnqz-common/hnqz-common-core/src/main/java/com/qunzhixinxi/hnqz/common/core/constant/CacheConstants.java

@@ -3,86 +3,65 @@ package com.qunzhixinxi.hnqz.common.core.constant;
 /**
  * @author hnqz
  * @date 2019-04-28
- * <p>
- * 缓存的key 常量
+ *     <p>缓存的key 常量
  */
 public interface CacheConstants {
 
-    /**
-     * 全局缓存,在缓存名称上加上该前缀表示该缓存不区分租户,比如:
-     * <p/>
-     * {@code @Cacheable(value = CacheConstants.GLOBALLY+CacheConstants.MENU_DETAILS, key = "#roleId  + '_menu'", unless = "#result == null")}
-     */
-    String GLOBALLY = "gl:";
-
-    /**
-     * 验证码前缀
-     */
-    String DEFAULT_CODE_KEY = "DEFAULT_CODE_KEY:";
-
-    /**
-     * 菜单信息缓存
-     */
-    String MENU_DETAILS = "menu_details";
-
-    /**
-     * 用户信息缓存
-     */
-    String USER_DETAILS = "user_details";
-
-    /**
-     * 字典信息缓存
-     */
-    String DICT_DETAILS = "dict_details";
-
-    /**
-     * oauth 客户端信息
-     */
-    String CLIENT_DETAILS_KEY = "hnqz_oauth:client:details";
-
-    /**
-     * spring boot admin 事件key
-     */
-    String EVENT_KEY = "event_key";
-
-    /**
-     * 路由存放
-     */
-    String ROUTE_KEY = "gateway_route_key";
-
-    /**
-     * 医院地理位置
-     */
-    String HOSPITAL_GEO_KEY = "hospital_geo_key";
-
-    /**
-     * redis reload 事件
-     */
-    String ROUTE_REDIS_RELOAD_TOPIC = "gateway_redis_route_reload_topic";
-
-    /**
-     * 内存reload 时间
-     */
-    String ROUTE_JVM_RELOAD_TOPIC = "gateway_jvm_route_reload_topic";
-
-    /**
-     * 公众号 reload
-     */
-    String MP_REDIS_RELOAD_TOPIC = "mp_redis_reload_topic";
-
-    /**
-     * 支付 reload 事件
-     */
-    String PAY_REDIS_RELOAD_TOPIC = "pay_redis_reload_topic";
-
-    /**
-     * 参数缓存
-     */
-    String PARAMS_DETAILS = "params_details";
-
-    /**
-     * 租户缓存 (不区分租户)
-     */
-    String TENANT_DETAILS = GLOBALLY + "tenant_details";
+  /**
+   * 全局缓存,在缓存名称上加上该前缀表示该缓存不区分租户,比如:
+   *
+   * <p>{@code @Cacheable(value = CacheConstants.GLOBALLY+CacheConstants.MENU_DETAILS, key =
+   * "#roleId + '_menu'", unless = "#result == null")}
+   */
+  String GLOBALLY = "gl:";
 
+  /** 验证码前缀 */
+  String DEFAULT_CODE_KEY = "DEFAULT_CODE_KEY:";
+
+  /** 菜单信息缓存 */
+  String MENU_DETAILS = "menu_details";
+
+  /** 用户信息缓存 */
+  String USER_DETAILS = "user_details";
+
+  /** 字典信息缓存 */
+  String DICT_DETAILS = "dict_details";
+
+  /** oauth 客户端信息 */
+  String CLIENT_DETAILS_KEY = "hnqz_oauth:client:details";
+
+  /** spring boot admin 事件key */
+  String EVENT_KEY = "event_key";
+
+  /** 路由存放 */
+  String ROUTE_KEY = "gateway_route_key";
+
+  /** 医院地理位置 */
+  String HOSPITAL_GEO_KEY = "hospital_geo_key";
+
+  String DEPT_KEY = "dept_key";
+
+  String TASK_TYPE_KEY = "task_type_key";
+
+  String DRUG_KEY = "drug_key";
+
+  String USER_KEY = "user_key";
+
+  /** redis reload 事件 */
+  String ROUTE_REDIS_RELOAD_TOPIC = "gateway_redis_route_reload_topic";
+
+  /** 内存reload 时间 */
+  String ROUTE_JVM_RELOAD_TOPIC = "gateway_jvm_route_reload_topic";
+
+  /** 公众号 reload */
+  String MP_REDIS_RELOAD_TOPIC = "mp_redis_reload_topic";
+
+  /** 支付 reload 事件 */
+  String PAY_REDIS_RELOAD_TOPIC = "pay_redis_reload_topic";
+
+  /** 参数缓存 */
+  String PARAMS_DETAILS = "params_details";
+
+  /** 租户缓存 (不区分租户) */
+  String TENANT_DETAILS = GLOBALLY + "tenant_details";
 }

+ 39 - 0
hnqz-common/hnqz-common-core/src/main/java/com/qunzhixinxi/hnqz/common/core/entity/PageParam.java

@@ -0,0 +1,39 @@
+package com.qunzhixinxi.hnqz.common.core.entity;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 分页实体
+ *
+ * @author jimmy
+ * @date 2025-01-10 10:45
+ */
+@Data
+public abstract class PageParam implements Serializable {
+
+  // 默认页码
+  private static final Integer CURR_PAGE = 1;
+  // 默认每页记录数
+  private static final Integer PAGE_SIZE = 20;
+
+  /**
+   * 每页条数 - 不分页
+   *
+   * <p>例如说,导出接口,可以设置 {@link #size} 为 -1 不分页,查询所有数据。
+   */
+  public static final Integer PAGE_SIZE_NONE = -1;
+
+  @NotNull(message = "页码不能为空")
+  @Min(value = 1, message = "页码最小值为 {value}")
+  private Integer current = CURR_PAGE;
+
+  @NotNull(message = "每页条数不能为空")
+  @Min(value = 1, message = "每页条数最小值为 {value}")
+  @Max(value = 100, message = "每页条数最大值为 {value}")
+  private Integer size = PAGE_SIZE;
+}

+ 2 - 2
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysRouteConf.java

@@ -55,8 +55,8 @@ public class SysRouteConf extends Model<SysRouteConf> {
 	/**
 	 * 排序
 	 */
-	@TableField(value = "`order`")
-	private Integer order;
+//	@TableField(value = "`order`")
+	private Integer orderSort;
 
 	/**
 	 * 创建时间

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/config/DynamicRouteInitRunner.java

@@ -52,7 +52,7 @@ public class DynamicRouteInitRunner {
 			vo.setRouteName(route.getRouteName());
 			vo.setId(route.getRouteId());
 			vo.setUri(URI.create(route.getUri()));
-			vo.setOrder(route.getOrder());
+			vo.setOrder(route.getOrderSort());
 
 			JSONArray filterObj = JSONUtil.parseArray(route.getFilters());
 			vo.setFilters(filterObj.toList(FilterDefinition.class));

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/config/GeoInitRunner.java

@@ -69,7 +69,7 @@ public class GeoInitRunner {
                 // 经度
                 double longitude = Double.parseDouble(h.getLongitude());
 
-                log.info("医院地理位置家在:ID:【{}】名称【{}】经度【{}】 纬度【{}】", h.getId(), h.getYymc(), longitude, latitude);
+//                log.info("医院地理位置家在:ID:【{}】名称【{}】经度【{}】 纬度【{}】", h.getId(), h.getYymc(), longitude, latitude);
                 redisTemplate.opsForGeo().add(CacheConstants.HOSPITAL_GEO_KEY, new Point(longitude, latitude), h.getId());
 
             });

+ 174 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/config/SysInitRunner.java

@@ -0,0 +1,174 @@
+package com.qunzhixinxi.hnqz.admin.config;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEntDrugtable;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.admin.mapper.SysDeptMapper;
+import com.qunzhixinxi.hnqz.admin.service.SysUserService;
+import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntDrugtableService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
+import com.qunzhixinxi.hnqz.common.core.constant.CacheConstants;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
+import com.qunzhixinxi.hnqz.common.gateway.support.DynamicRouteInitEvent;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.web.context.WebServerInitializedEvent;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.scheduling.annotation.Async;
+
+/**
+ * 系统信息初始化
+ *
+ * @author jimmy
+ * @date 2024-12-18 15:54
+ */
+@Slf4j
+@Configuration
+@AllArgsConstructor
+public class SysInitRunner {
+
+  private final RedisTemplate redisTemplate;
+  private final SysDeptMapper deptMapper;
+  private final SysUserService sysUserService;
+  private final WmTaskTypeService taskTypeService;
+  private final WmDaDrugEntDrugtableService drugtableService;
+
+  @Async
+  @Order
+  @EventListener({WebServerInitializedEvent.class, DynamicRouteInitEvent.class})
+  public void init() {
+
+    // 缓存企业信息
+    initDept();
+
+    // 缓存人员信息
+    initUser();
+
+    // 任务类型
+    initTaskType();
+
+    // 初始化药品名录
+    initDrug();
+  }
+
+  private void initUser() {
+    log.info("======> 初始化人员开始 <======");
+    Boolean result = redisTemplate.delete(CacheConstants.USER_KEY);
+    log.info("======> 删除人员信息:【{}】 ", result);
+
+    // 获取全部企业
+    List<SysUser> users =
+        sysUserService.list(
+            Wrappers.<SysUser>lambdaQuery()
+                .eq(SysUser::getLockFlag, CommonConstants.STATUS_NORMAL)
+                .eq(SysUser::getDelFlag, CommonConstants.STATUS_NORMAL));
+
+    log.info("======> 获取人员信息:全部【{}】", users.size());
+
+    if (CollUtil.isEmpty(users)) {
+      log.info("======> 可用人员信息为0,结束初始化");
+    } else {
+
+      users.forEach(
+          user -> {
+//            log.info("缓存人员信息:{}, {}", user.getUserId(), user);
+            redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(SysUser.class));
+            redisTemplate.opsForList().rightPush(CacheConstants.USER_KEY, user);
+          });
+    }
+    log.debug("======> 初始化人员信息结束 <======");
+  }
+
+  private void initDrug() {
+    log.info("======> 初始化产品开始 <======");
+    Boolean result = redisTemplate.delete(CacheConstants.DRUG_KEY);
+    log.info("======> 删除产品:【{}】 ", result);
+
+    // 获取全部企业
+    List<WmDaDrugEntDrugtable> drugtables =
+        drugtableService.list(
+            Wrappers.<WmDaDrugEntDrugtable>lambdaQuery()
+                .eq(WmDaDrugEntDrugtable::getEnableFlag, CommonConstants.STATUS_NORMAL)
+                .eq(WmDaDrugEntDrugtable::getDelFlag, CommonConstants.STATUS_NORMAL));
+
+    log.info("======> 获取产品:全部【{}】", drugtables.size());
+
+    if (CollUtil.isEmpty(drugtables)) {
+      log.info("======> 可用产品为0,结束初始化");
+    } else {
+
+      drugtables.forEach(
+          drugtable -> {
+//            log.info("缓存产品:{}, {}", drugtable.getId(), drugtable);
+            redisTemplate.setHashValueSerializer(
+                new Jackson2JsonRedisSerializer<>(WmDaDrugEntDrugtable.class));
+            redisTemplate.opsForList().rightPush(CacheConstants.DRUG_KEY, drugtable);
+          });
+    }
+    log.debug("======> 初始产品结束 <======");
+  }
+
+  private void initDept() {
+    log.info("======> 初始化企业信息开始 <======");
+    Boolean result = redisTemplate.delete(CacheConstants.DEPT_KEY);
+    log.info("======> 删除企业信息:【{}】 ", result);
+
+    // 获取全部企业
+    List<SysDept> deptList =
+        deptMapper.selectList(
+            Wrappers.<SysDept>lambdaQuery().eq(SysDept::getDelFlag, CommonConstants.STATUS_NORMAL));
+
+    log.info("======> 获取企业信息:全部【{}】", deptList.size());
+
+    if (CollUtil.isEmpty(deptList)) {
+      log.info("======> 可用企业信息为0,结束初始化");
+    } else {
+
+      deptList.forEach(
+          dept -> {
+//            log.info("缓存企业信息:{}, {}", dept.getDeptId(), dept);
+            redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(SysDept.class));
+            redisTemplate.opsForList().rightPush(CacheConstants.DEPT_KEY, dept);
+          });
+    }
+    log.debug("======> 初始化企业信息结束 <======");
+  }
+
+  private void initTaskType() {
+    log.info("======> 初始化任务类型信息开始 <======");
+    Boolean result = redisTemplate.delete(CacheConstants.TASK_TYPE_KEY);
+    log.info("======> 删除任务类型:【{}】 ", result);
+
+    // 获取全部企业
+    List<WmTaskType> taskTypes =
+        taskTypeService.list(
+            Wrappers.<WmTaskType>lambdaQuery()
+                .eq(WmTaskType::getEnableFlag, CommonConstants.STATUS_NORMAL)
+                .eq(WmTaskType::getDelFlag, CommonConstants.STATUS_NORMAL)
+                .le(WmTaskType::getId, "100"));
+
+    log.info("======> 获取任务类型:全部【{}】", taskTypes.size());
+
+    if (CollUtil.isEmpty(taskTypes)) {
+      log.info("======> 可用任务类型为0,结束初始化");
+    } else {
+
+      taskTypes.forEach(
+          tt -> {
+//            log.info("缓存任务类型:{}, {}", tt.getId(), tt);
+            redisTemplate.setHashValueSerializer(
+                new Jackson2JsonRedisSerializer<>(WmTaskType.class));
+            redisTemplate.opsForList().rightPush(CacheConstants.TASK_TYPE_KEY, tt);
+          });
+    }
+    log.debug("======> 初始化任务类型结束 <======");
+  }
+}

+ 7 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/InitController.java

@@ -62,25 +62,20 @@ import java.time.Duration;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.time.Period;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import static org.bouncycastle.asn1.x500.style.RFC4519Style.o;
-
 
 /**
  * 初始化控制器
@@ -111,6 +106,13 @@ public class InitController {
     private final WmPackageTaskTypeQtyService packageTaskTypeQtyService;
     private final SysCheckChainNodeCheckHistoryService checkChainNodeCheckHistoryService;
 
+    @Inner(value = false)
+    @GetMapping(value = "/cnbg/task/check/stat")
+    public R<List<Map<String, Object>>> taskCheckStat(){
+        List<Map<String, Object>> maps = initMapper.taskCheckStat();
+        return R.ok(maps);
+    }
+
 
     @Inner(value = false)
     @GetMapping(value = "/cnbg/test")

+ 4 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/InitMapper.java

@@ -1,5 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.mapper;
 
+import java.util.List;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.Map;
@@ -13,4 +14,7 @@ public interface InitMapper {
 
 
     Map<String, Object> export();
+
+
+    List<Map<String, Object>> taskCheckStat();
 }

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysRouteConfServiceImpl.java

@@ -118,7 +118,7 @@ public class SysRouteConfServiceImpl extends ServiceImpl<SysRouteConfMapper, Sys
 				routeConf.setRouteName(vo.getRouteName());
 				routeConf.setFilters(JSONUtil.toJsonStr(vo.getFilters()));
 				routeConf.setPredicates(JSONUtil.toJsonStr(vo.getPredicates()));
-				routeConf.setOrder(vo.getOrder());
+				routeConf.setOrderSort(vo.getOrder());
 				routeConf.setUri(vo.getUri().toString());
 				return routeConf;
 			}).collect(Collectors.toList());

+ 34 - 2
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/InitMapper.xml

@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qunzhixinxi.hnqz.admin.mapper.InitMapper">
 
   <select id="export" resultType="map">
@@ -11,7 +12,38 @@
                       FROM "sys_chain_node_check_his" AS "TC"
                              LEFT JOIN (SELECT "target_id", MAX("node_id")
                                         FROM "sys_chain_node_check_his"
-                                        GROUP BY "target_id") AS "TCM" ON tcm."target_id" = tc."target_id" AND tcm."MAX(""node_id"")" = tc."node_id") AS "TC1"
+                                        GROUP BY "target_id") AS "TCM"
+                                       ON tcm."target_id" = tc."target_id" AND
+                                          tcm."MAX(""node_id"")" = tc."node_id") AS "TC1"
                      ON tc."target_id" = t."id";
   </select>
+
+  <select id="taskCheckStat" resultType='map'>
+    SELECT T.task_status,
+           TC1.node_id,
+           COUNT(1) AS tot
+    FROM wm_task AS T
+           LEFT JOIN (SELECT *
+                      FROM (SELECT TC.target_id,
+                                   TC.node_id,
+                                   TC.check_result,
+                                   TC.create_time1
+                            FROM (SELECT target_id,
+                                         IF(node_id = 5, 15, IF(node_id = 6, 16, node_id)) AS node_id,
+                                         check_result,
+                                         create_time1
+                                  FROM sys_chain_node_check_his) AS TC
+                                   INNER JOIN (SELECT target_id,
+                                                      MAX(node_id) AS node_id
+                                               FROM (SELECT target_id,
+                                                            IF(node_id = 5, 15, IF(node_id = 6, 16, node_id)) AS node_id
+                                                     FROM sys_chain_node_check_his)
+                                               GROUP BY target_id) AS TCM
+                                              ON TCM.target_id = TC.target_id AND
+                                                 TCM.node_id = TC.node_id)
+                      GROUP BY target_id) AS TC1
+                     ON TC1.target_id = T.id
+    GROUP BY T.task_status, TC1.node_id
+    ORDER BY TC1.node_id, T.task_status
+  </select>
 </mapper>

+ 15 - 0
pom.xml

@@ -336,5 +336,20 @@
         <profiles.report.port>3001</profiles.report.port>
       </properties>
     </profile>
+    <profile>
+      <id>cnbg-loc</id>
+      <properties>
+        <profiles.active>loc</profiles.active>
+        <nacos.username>nacos</nacos.username>
+        <nacos.password>nacos1</nacos.password>
+        <nacos.server-addr>nacos.freerr.cn:57260</nacos.server-addr>
+        <profiles.namespace>51f03f27-1bcc-4720-bfab-83cffa17807c</profiles.namespace>
+        <profiles.auth.port>3000</profiles.auth.port>
+        <profiles.gateway.port>9999</profiles.gateway.port>
+        <profiles.upms.biz.port>4000</profiles.upms.biz.port>
+        <profiles.quartz.port>5007</profiles.quartz.port>
+        <profiles.report.port>3001</profiles.report.port>
+      </properties>
+    </profile>
   </profiles>
 </project>