From 166a62ed1f3232d3f1fd88a3cffa811850225472 Mon Sep 17 00:00:00 2001
From: wyb <1977763549@qq.com>
Date: Fri, 13 Sep 2024 16:06:42 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BD=9B=E5=B1=B1=E4=B8=89=E9=99=A2?=
=?UTF-8?q?=E9=A6=96=E9=A1=B5=E7=BC=96=E7=9B=AE=E9=98=9F=E5=88=97=E7=94=9F?=
=?UTF-8?q?=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
data-config/jobconfig/FsSyCatalogCollectTask | 7 +
.../server/archivemysql/entity/TBasic.java | 162 ++++++++++++++++++
.../archivemysql/mapper/TBasicMapper.java | 23 +++
.../entity/FsSyJswzhBmztEmrView.java | 34 ++++
.../mapper/FsSyJswzhBmztEmrViewMapper.java | 32 ++++
.../jobadmin/config/JobAdminConfig.java | 27 +++
.../jobadmin/scheduler/JobScheduler.java | 4 +-
.../thread/FsSyCatalogCollectTaskHelper.java | 131 ++++++++++++++
.../server/rpc/V3ViewTaskCollectService.java | 18 ++
.../server/rpc/dto/CompensateTaskDTO.java | 33 ++++
.../impl/V3ViewTaskCollectServiceImpl.java | 34 ++++
src/main/resources/bootstrap.yml | 28 ++-
.../mapper/FsSyJswzhBmztEmrViewMapper.xml | 19 ++
src/main/resources/mapper/TBasicMapper.xml | 30 ++++
14 files changed, 579 insertions(+), 3 deletions(-)
create mode 100644 data-config/jobconfig/FsSyCatalogCollectTask
create mode 100644 src/main/java/com/docus/server/archivemysql/entity/TBasic.java
create mode 100644 src/main/java/com/docus/server/archivemysql/mapper/TBasicMapper.java
create mode 100644 src/main/java/com/docus/server/fssyjhemr/entity/FsSyJswzhBmztEmrView.java
create mode 100644 src/main/java/com/docus/server/fssyjhemr/mapper/FsSyJswzhBmztEmrViewMapper.java
create mode 100644 src/main/java/com/docus/server/jobadmin/thread/FsSyCatalogCollectTaskHelper.java
create mode 100644 src/main/java/com/docus/server/rpc/V3ViewTaskCollectService.java
create mode 100644 src/main/java/com/docus/server/rpc/dto/CompensateTaskDTO.java
create mode 100644 src/main/java/com/docus/server/rpc/impl/V3ViewTaskCollectServiceImpl.java
create mode 100644 src/main/resources/mapper/FsSyJswzhBmztEmrViewMapper.xml
create mode 100644 src/main/resources/mapper/TBasicMapper.xml
diff --git a/data-config/jobconfig/FsSyCatalogCollectTask b/data-config/jobconfig/FsSyCatalogCollectTask
new file mode 100644
index 0000000..42e2173
--- /dev/null
+++ b/data-config/jobconfig/FsSyCatalogCollectTask
@@ -0,0 +1,7 @@
+{
+ "lastDate": "2024-08-13 00:00:00",
+ "jobIntervalSeconds": 300,
+ "sysCodes":"catalog",
+ "open": 1,
+ "where":"AND CYRQ >=TO_DATE('2024-07-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') "
+}
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/archivemysql/entity/TBasic.java b/src/main/java/com/docus/server/archivemysql/entity/TBasic.java
new file mode 100644
index 0000000..8f43431
--- /dev/null
+++ b/src/main/java/com/docus/server/archivemysql/entity/TBasic.java
@@ -0,0 +1,162 @@
+package com.docus.server.archivemysql.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 病案基本信息
+ *
+ *
+ * @author jiashi
+ * @since 2021-04-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "TBasic对象", description = "病案基本信息")
+public class TBasic implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "病案主键")
+ private String patientId;
+
+ @ApiModelProperty(value = "住院次数")
+ private Integer admissTimes;
+
+ @ApiModelProperty(value = "病案号")
+ private String inpatientNo;
+
+ @ApiModelProperty(value = "住院ID号")
+ private String admissId;
+
+ @ApiModelProperty(value = "患者姓名")
+ private String name;
+
+ @ApiModelProperty(value = "盘号")
+ private String ph;
+
+ @ApiModelProperty(value = "性别")
+ private String sex;
+
+ @ApiModelProperty(value = "年龄_岁")
+ private Integer age;
+
+ @ApiModelProperty(value = "年龄_月")
+ private Integer ageMonth;
+
+ @ApiModelProperty(value = "年龄_天")
+ private Integer ageDay;
+
+ @ApiModelProperty(value = "身份证")
+ private String idCard;
+
+ @ApiModelProperty(value = "手机号码")
+ private String telphone;
+
+ @ApiModelProperty(value = "住院日期")
+ private Date admissDate;
+
+ @ApiModelProperty(value = "住院科室")
+ private String admissDept;
+
+ @ApiModelProperty(value = "住院科室名称")
+ private String admissDeptName;
+
+ @ApiModelProperty(value = "出院日期")
+ private Date disDate;
+
+ @ApiModelProperty(value = "出院科室")
+ private String disDept;
+
+ @ApiModelProperty(value = "出院科室名称")
+ private String disDeptName;
+
+ @ApiModelProperty(value = "实际住院天数")
+ private Integer admissDays;
+
+ @ApiModelProperty(value = "主管医生")
+ private String attending;
+
+ @ApiModelProperty(value = "主管医生名称")
+ private String attendingName;
+
+ @ApiModelProperty(value = "主要诊断编码")
+ private String mainDiagCode;
+
+ @ApiModelProperty(value = "主要诊断名称")
+ private String mainDiagName;
+
+ @ApiModelProperty(value = "主要手术编码")
+ private String mainOperateCode;
+
+ @ApiModelProperty(value = "主要手术名称")
+ private String mainOperateName;
+
+ @ApiModelProperty(value = "是否死亡")
+ private Integer isDead;
+
+ @ApiModelProperty(value = "是否作废(0:否,1:是)")
+ private Integer isCancel;
+
+ @ApiModelProperty(value = "创建时间")
+ private Date createTime;
+
+ @ApiModelProperty(value = "修改时间")
+ private Date updateTime;
+
+ @ApiModelProperty(value = "是否归档 1:已归档,0:未归档")
+ private Integer isArchive;
+
+ @ApiModelProperty(value = "归档时间")
+ private Date archiveTime;
+
+ @ApiModelProperty(value = "文件来源 1:af_archive_detail,2:t_scan_assort")
+ private Integer fileSource;
+
+ @ApiModelProperty(value = "完整性描述")
+ private String integrityDesc;
+
+ private String bColumn1;
+
+ private String bColumn2;
+
+ private String bColumn3;
+
+ private String bColumn4;
+
+ private String bColumn5;
+
+ private Integer bColumn6;
+
+ private Integer bColumn7;
+
+ private Integer bColumn8;
+
+ private Integer bColumn9;
+
+ private Integer bColumn10;
+
+ @ApiModelProperty(value = "姓名缩写(内部构成)")
+ private String nameSpell;
+
+ @ApiModelProperty(value = "性别名称")
+ private String sexName;
+
+ @ApiModelProperty(value = "记账号")
+ private String jzh;
+
+ @ApiModelProperty(value = "外部id")
+ private String externalId;
+
+ @ApiModelProperty(value = "档案文件存储类型,1:pdf(默认)2:图片")
+ private Integer archiveFileStorageType;
+
+ @ApiModelProperty(value = "是否标记编码 0否,1是")
+ private Integer is_coder;
+}
diff --git a/src/main/java/com/docus/server/archivemysql/mapper/TBasicMapper.java b/src/main/java/com/docus/server/archivemysql/mapper/TBasicMapper.java
new file mode 100644
index 0000000..91d211a
--- /dev/null
+++ b/src/main/java/com/docus/server/archivemysql/mapper/TBasicMapper.java
@@ -0,0 +1,23 @@
+package com.docus.server.archivemysql.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.docus.server.archivemysql.entity.TBasic;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 患者基础信息表mapper
+ *
+ * @author wyb
+ */
+@DS("archive-mysql")
+public interface TBasicMapper {
+ /**
+ * 根据记账号查询基础病案信息
+ *
+ * @param jzhList 记账号集合
+ * @return 查询结果
+ */
+ List findTbasicByJzhs(@Param("jzhList") List jzhList);
+}
diff --git a/src/main/java/com/docus/server/fssyjhemr/entity/FsSyJswzhBmztEmrView.java b/src/main/java/com/docus/server/fssyjhemr/entity/FsSyJswzhBmztEmrView.java
new file mode 100644
index 0000000..74af082
--- /dev/null
+++ b/src/main/java/com/docus/server/fssyjhemr/entity/FsSyJswzhBmztEmrView.java
@@ -0,0 +1,34 @@
+package com.docus.server.fssyjhemr.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 佛山三院嘉时无纸化编目状态电子病历视图
+ *
+ * @author YongBin Wen
+ * @date 2024/9/13 14:52
+ */
+@ApiModel("佛山三院嘉时无纸化编目状态电子病历视图")
+@Data
+public class FsSyJswzhBmztEmrView {
+ @ApiModelProperty("记账号,和归档匹配")
+ private String jzh;
+ @ApiModelProperty("住院号")
+ private String zyh;
+ private String kh;
+ @ApiModelProperty("住院次数")
+ private Integer zycs;
+ private String bmr;
+ private String bmgh;
+ @ApiModelProperty("入院时间")
+ private Date ryrq;
+ @ApiModelProperty("出院时间")
+ private Date cyrq;
+ @ApiModelProperty("编目时间")
+ private Date bmsj;
+
+}
diff --git a/src/main/java/com/docus/server/fssyjhemr/mapper/FsSyJswzhBmztEmrViewMapper.java b/src/main/java/com/docus/server/fssyjhemr/mapper/FsSyJswzhBmztEmrViewMapper.java
new file mode 100644
index 0000000..35e974d
--- /dev/null
+++ b/src/main/java/com/docus/server/fssyjhemr/mapper/FsSyJswzhBmztEmrViewMapper.java
@@ -0,0 +1,32 @@
+package com.docus.server.fssyjhemr.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.docus.server.fssyjhemr.entity.FsSyJswzhBmztEmrView;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/8/13 16:13
+ */
+@DS("fssy-jhemr-oracle")
+public interface FsSyJswzhBmztEmrViewMapper {
+ /**
+ * 最大的编目时间
+ *
+ * @return java.util.Date
+ */
+ Date maxBmsj();
+
+ /**
+ * 根据编目时间,查询首页编目数据,startDate <= catalog_date < endDate
+ *
+ * @param startDate 开始时间 yyyy-MM-dd HH:mm:ss
+ * @param endDate 结束时间 yyyy-MM-dd HH:mm:ss
+ * @param where 其他条件
+ * @return 首页编目数据集合
+ */
+ List listByBmsjRange(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("where")String where);
+}
diff --git a/src/main/java/com/docus/server/jobadmin/config/JobAdminConfig.java b/src/main/java/com/docus/server/jobadmin/config/JobAdminConfig.java
index 48a9f35..35ccb19 100644
--- a/src/main/java/com/docus/server/jobadmin/config/JobAdminConfig.java
+++ b/src/main/java/com/docus/server/jobadmin/config/JobAdminConfig.java
@@ -1,8 +1,11 @@
package com.docus.server.jobadmin.config;
+import com.docus.server.archivemysql.mapper.TBasicMapper;
import com.docus.server.archivesqlserver.mapper.ArchiveMasterMapper;
+import com.docus.server.fssyjhemr.mapper.FsSyJswzhBmztEmrViewMapper;
import com.docus.server.jobadmin.scheduler.JobScheduler;
import com.docus.server.rpc.V2ViewTaskCollectService;
+import com.docus.server.rpc.V3ViewTaskCollectService;
import com.docus.server.zjfsjhemr.mapper.ZjFsPatIndexViewMapper;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
@@ -53,6 +56,18 @@ public class JobAdminConfig implements InitializingBean, DisposableBean {
@Resource
private V2ViewTaskCollectService v2ViewTaskCollectService;
+
+
+ @Resource
+ private FsSyJswzhBmztEmrViewMapper fsSyJswzhBmztEmrViewMapper;
+
+ @Resource
+ private TBasicMapper tBasicMapper;
+
+ @Resource
+ private V3ViewTaskCollectService v3ViewTaskCollectService;
+
+
public ZjFsPatIndexViewMapper getZjFsPatIndexViewMapper() {
return zjFsPatIndexViewMapper;
}
@@ -64,4 +79,16 @@ public class JobAdminConfig implements InitializingBean, DisposableBean {
public V2ViewTaskCollectService getV2ViewTaskCollectService() {
return v2ViewTaskCollectService;
}
+
+ public FsSyJswzhBmztEmrViewMapper getFsSyJswzhBmztEmrViewMapper() {
+ return fsSyJswzhBmztEmrViewMapper;
+ }
+
+ public TBasicMapper gettBasicMapper() {
+ return tBasicMapper;
+ }
+
+ public V3ViewTaskCollectService getV3ViewTaskCollectService() {
+ return v3ViewTaskCollectService;
+ }
}
diff --git a/src/main/java/com/docus/server/jobadmin/scheduler/JobScheduler.java b/src/main/java/com/docus/server/jobadmin/scheduler/JobScheduler.java
index 7a88493..fd79594 100644
--- a/src/main/java/com/docus/server/jobadmin/scheduler/JobScheduler.java
+++ b/src/main/java/com/docus/server/jobadmin/scheduler/JobScheduler.java
@@ -1,5 +1,6 @@
package com.docus.server.jobadmin.scheduler;
+import com.docus.server.jobadmin.thread.FsSyCatalogCollectTaskHelper;
import com.docus.server.jobadmin.thread.ZjFsCatalogCollectTaskHelper;
import com.docus.server.jobadmin.thread.ZjFsCostListCollectTaskHelper;
import org.slf4j.Logger;
@@ -17,7 +18,7 @@ public class JobScheduler {
public void init() throws Exception {
ZjFsCatalogCollectTaskHelper.getInstance().start();
ZjFsCostListCollectTaskHelper.getInstance().start();
-
+ FsSyCatalogCollectTaskHelper.getInstance().start();
logger.info(">>>>>>>>> init job admin success.");
}
@@ -25,5 +26,6 @@ public class JobScheduler {
public void destroy() {
ZjFsCatalogCollectTaskHelper.getInstance().toStop();
ZjFsCostListCollectTaskHelper.getInstance().toStop();
+ FsSyCatalogCollectTaskHelper.getInstance().toStop();
}
}
diff --git a/src/main/java/com/docus/server/jobadmin/thread/FsSyCatalogCollectTaskHelper.java b/src/main/java/com/docus/server/jobadmin/thread/FsSyCatalogCollectTaskHelper.java
new file mode 100644
index 0000000..520e85b
--- /dev/null
+++ b/src/main/java/com/docus/server/jobadmin/thread/FsSyCatalogCollectTaskHelper.java
@@ -0,0 +1,131 @@
+package com.docus.server.jobadmin.thread;
+
+import com.alibaba.fastjson.JSONObject;
+import com.docus.core.util.Func;
+import com.docus.infrastructure.core.utils.TableJsonRead;
+import com.docus.infrastructure.web.api.CommonResult;
+import com.docus.server.archivemysql.entity.TBasic;
+import com.docus.server.archivemysql.mapper.TBasicMapper;
+import com.docus.server.fssyjhemr.entity.FsSyJswzhBmztEmrView;
+import com.docus.server.fssyjhemr.mapper.FsSyJswzhBmztEmrViewMapper;
+import com.docus.server.jobadmin.config.JobAdminConfig;
+import com.docus.server.rpc.V3ViewTaskCollectService;
+import com.docus.server.rpc.dto.CompensateTaskDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * 佛山三院医院编目采集任务job
+ *
+ * @author YongBin Wen
+ * @date 2024/1/23 10:59
+ */
+
+public class FsSyCatalogCollectTaskHelper {
+ private static final Logger logger = LoggerFactory.getLogger(FsSyCatalogCollectTaskHelper.class);
+ private static final FsSyCatalogCollectTaskHelper instance = new FsSyCatalogCollectTaskHelper();
+
+ public static FsSyCatalogCollectTaskHelper getInstance() {
+ return instance;
+ }
+
+ private Thread fsSyCatalogCollectTaskThread;
+ private volatile boolean toStop = false;
+
+ public void start() {
+ fsSyCatalogCollectTaskThread = new Thread(() -> {
+ TableJsonRead tableJsonRead = new TableJsonRead();
+ FsSyJswzhBmztEmrViewMapper fsSyJswzhBmztEmrViewMapper = JobAdminConfig.getJobAdminConfig().getFsSyJswzhBmztEmrViewMapper();
+ TBasicMapper tBasicMapper = JobAdminConfig.getJobAdminConfig().gettBasicMapper();
+ V3ViewTaskCollectService v3ViewTaskCollectService = JobAdminConfig.getJobAdminConfig().getV3ViewTaskCollectService();
+ String configPath = "data-config\\jobconfig";
+ String configFileName = "FsSyCatalogCollectTask";
+ while (!toStop) {
+ try {
+ // 读取配置,实时观察配置文件状况
+ JSONObject jobConfig = tableJsonRead.Read(configPath, configFileName, JSONObject.class);
+ int jobIntervalSeconds = jobConfig.getIntValue("jobIntervalSeconds");
+ String lastDate = jobConfig.getString("lastDate");
+ String sysCodes = jobConfig.getString("sysCodes");
+ String where = jobConfig.getString("where");
+ if (where == null) {
+ where = "";
+ }
+ int open = jobConfig.getIntValue("open");
+ if (open == 0) {
+ TimeUnit.SECONDS.sleep(60);
+ continue;
+ }
+
+ Date maxBmsj = fsSyJswzhBmztEmrViewMapper.maxBmsj();
+ String maxBmsjStr = Func.formatDateTime(maxBmsj);
+ // 查询视图数据,视图数据查询患者信息id,进行任务生成
+ List fsSyJswzhBmztEmrViews = fsSyJswzhBmztEmrViewMapper.listByBmsjRange(lastDate, maxBmsjStr, where);
+ if (Func.isNotEmpty(fsSyJswzhBmztEmrViews)) {
+ logger.info("首页编目数据查询,根据最后编目时间查询(不包含截止时间),开始时间:{},截止时间:{},额外条件:{},视图数据:{} 条,数据为:{}", lastDate, maxBmsjStr, where, fsSyJswzhBmztEmrViews.size(), Func.toJson(fsSyJswzhBmztEmrViews));
+ for (FsSyJswzhBmztEmrView view : fsSyJswzhBmztEmrViews) {
+ String jzh = view.getJzh();
+ List tbasic = tBasicMapper.findTbasicByJzhs(Collections.singletonList(jzh));
+ if (Func.isEmpty(tbasic)) {
+ logger.warn("首页编目数据查询,记账号:{} 未找到患者主表数据!", jzh);
+ continue;
+ }
+ // 生成采集任务
+ List patientIds = tbasic.stream().map(TBasic::getPatientId).collect(Collectors.toList());
+ CompensateTaskDTO compensateTaskDTO = new CompensateTaskDTO();
+ compensateTaskDTO.setPatientIds(patientIds);
+ compensateTaskDTO.setCollectorIds(Arrays.asList(sysCodes.split(",")));
+ compensateTaskDTO.setPriority(3);
+ logger.info("首页编目生成队列参数:{}", Func.toJson(compensateTaskDTO));
+ CommonResult result = v3ViewTaskCollectService.compensateTask(compensateTaskDTO);
+ logger.info("首页编目生成队列返回结果:{}", Func.toJson(result));
+ }
+ // 刷新配置
+ jobConfig.put("lastDate", maxBmsjStr);
+ tableJsonRead.Save(configPath, configFileName, jobConfig.toJSONString());
+ }
+
+ TimeUnit.SECONDS.sleep(jobIntervalSeconds);
+ } catch (Exception ex) {
+ if (!toStop) {
+ logger.error(">>>>>>>>>>> fsSy Catalog CollectTask Thread error:" + ex.getMessage(), ex);
+ try {
+ TimeUnit.SECONDS.sleep(60);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ }
+ logger.info(">>>>>>>>>>> fsSy Catalog CollectTask Thread stop");
+ });
+ fsSyCatalogCollectTaskThread.setDaemon(true);
+ fsSyCatalogCollectTaskThread.setName("fsSyCatalogCollectTaskHelper");
+ fsSyCatalogCollectTaskThread.start();
+ }
+
+ public void toStop() {
+ toStop = false;
+ fsSyCatalogCollectTaskThread.interrupt();
+ try {
+ fsSyCatalogCollectTaskThread.join();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+
+ public static void main(String[] args) {
+ TableJsonRead tableJsonRead = new TableJsonRead();
+ JSONObject config = tableJsonRead.Read("data-config\\jobconfig", "fsSyCatalogCollectTask", JSONObject.class);
+ System.out.println(config);
+ }
+}
diff --git a/src/main/java/com/docus/server/rpc/V3ViewTaskCollectService.java b/src/main/java/com/docus/server/rpc/V3ViewTaskCollectService.java
new file mode 100644
index 0000000..4f698c2
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/V3ViewTaskCollectService.java
@@ -0,0 +1,18 @@
+package com.docus.server.rpc;
+
+import com.docus.infrastructure.web.api.CommonResult;
+import com.docus.server.rpc.dto.CompensateTaskDTO;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/8/13 17:40
+ */
+public interface V3ViewTaskCollectService {
+ /**
+ *
+ * 采集任务补偿
+ * @param dto 补偿参数
+ * @return 补偿结果
+ */
+ CommonResult compensateTask(CompensateTaskDTO dto);
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/CompensateTaskDTO.java b/src/main/java/com/docus/server/rpc/dto/CompensateTaskDTO.java
new file mode 100644
index 0000000..507e1e9
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/CompensateTaskDTO.java
@@ -0,0 +1,33 @@
+package com.docus.server.rpc.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 任务补偿参数
+ *
+ * @author wyb
+ */
+@Data
+@ApiModel("任务补偿下发参数")
+public class CompensateTaskDTO {
+ /**
+ * 病案主键
+ */
+ @ApiModelProperty(value = "病案主键",required = true)
+ private List patientIds;
+ /**
+ * 采集器类型标识
+ */
+ @ApiModelProperty(value = "采集器id",required = true)
+
+ private List collectorIds;
+ /**
+ * 队列优先级
+ */
+ @ApiModelProperty(value = "队列优先级",required = true)
+ private Integer priority;
+}
diff --git a/src/main/java/com/docus/server/rpc/impl/V3ViewTaskCollectServiceImpl.java b/src/main/java/com/docus/server/rpc/impl/V3ViewTaskCollectServiceImpl.java
new file mode 100644
index 0000000..b3053db
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/impl/V3ViewTaskCollectServiceImpl.java
@@ -0,0 +1,34 @@
+package com.docus.server.rpc.impl;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.docus.core.util.Func;
+import com.docus.infrastructure.web.api.CommonResult;
+import com.docus.server.rpc.V3ViewTaskCollectService;
+import com.docus.server.rpc.dto.CompensateTaskDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/8/13 17:41
+ */
+@Service
+@Slf4j
+public class V3ViewTaskCollectServiceImpl implements V3ViewTaskCollectService {
+ @Value("${docus.url.viewtask-v3:}")
+ private String v3ViewTaskServerUrl;
+
+ @Override
+ public CommonResult compensateTask(CompensateTaskDTO dto) {
+ String uri = "api/NoViewCollect/compensateTask";
+ String url = v3ViewTaskServerUrl + uri;
+ String body = Func.toJson(dto);
+ log.info("3.0任务生成,地址:{},参数:{}", url, body);
+ String result = HttpUtil.post(url, body);
+ return JSONObject.parseObject(result, new TypeReference>() {
+ });
+ }
+}
diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml
index 0cd424a..0057026 100644
--- a/src/main/resources/bootstrap.yml
+++ b/src/main/resources/bootstrap.yml
@@ -8,10 +8,10 @@ spring:
active: test
datasource:
dynamic:
- primary: master #设置默认的数据源,默认值为master
+ primary: archive-mysql #设置默认的数据源,默认值为archive-mysql
strict: false #是否用严格模式,如果启用在味匹配到指定数据源时抛出异常
datasource:
- master:
+ archive-mysql:
url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_medicalrecord?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: docus
password: docus702
@@ -77,6 +77,28 @@ spring:
test-on-borrow: false
test-on-return: false
validation-query: select 1
+ fssy-jhemr-oracle:
+ url: jdbc:oracle:thin:@//10.100.23.128:31521/jhemr
+ username: BAWZH
+ password: BAWZH@123
+ driver-class-name: oracle.jdbc.driver.OracleDriver
+ type: com.alibaba.druid.pool.DruidDataSource
+ # 初始化配置
+ initial-size: 3
+ # 最小连接数
+ min-idle: 3
+ # 最大连接数
+ max-active: 5
+ # 获取连接超 时时间
+ max-wait: 5000
+ # 连接有效性检测时间
+ time-between-eviction-runs-millis: 90000
+ # 最大空闲时间
+ min-evictable-idle-time-millis: 1800000
+ test-while-idle: true
+ test-on-borrow: false
+ test-on-return: false
+ validation-query: select 1 from dual
redis:
host: redis.docus.cn
password: JSdocus@702
@@ -85,6 +107,8 @@ docus:
url:
# 2.0视图采集服务地址
viewtask-v2: http://localhost:9295/
+ # 3.0视图采集服务地址
+ viewtask-v3: http://localhost:9295/
dbtype: mysql
diff --git a/src/main/resources/mapper/FsSyJswzhBmztEmrViewMapper.xml b/src/main/resources/mapper/FsSyJswzhBmztEmrViewMapper.xml
new file mode 100644
index 0000000..a981aeb
--- /dev/null
+++ b/src/main/resources/mapper/FsSyJswzhBmztEmrViewMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml
new file mode 100644
index 0000000..9a67745
--- /dev/null
+++ b/src/main/resources/mapper/TBasicMapper.xml
@@ -0,0 +1,30 @@
+
+
+
+
+ patient_id as patientId,
+ admiss_times as admissTimes,
+ inpatient_no as inpatientNo,
+ admiss_id as admissId,
+ admiss_date as admissDate,
+ dis_date as disDate,
+ admiss_dept_name as admissDeptName,
+ dis_dept_name as disDeptName ,
+ jzh,
+ name,
+ emp_id as empId
+
+
+