From f2cc333b963cb0de81aebc5ae3a8c247e99243d8 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 02 六月 2026 18:21:27 +0800
Subject: [PATCH] 【市一】同步手术视图
---
ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml | 225 +++++++++++++++++++++++++++++++++++++
smartor/src/main/java/com/smartor/domain/PatMedOperation.java | 6 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 5
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java | 81 +++++++++++++
ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java | 17 ++
smartor/src/main/java/com/smartor/domain/PatMedOperationItem.java | 6 +
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ICollectHISService.java | 5
7 files changed, 345 insertions(+), 0 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
index 9382fd6..d458f35 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -829,4 +829,9 @@
public void syncMedInhospForShiyi(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
collectHISService.syncMedInhosp(startTime, endTime);
}
+
+ @PostMapping("/syncMedOperForShiyi")
+ public void syncMedOperForShiyi(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
+ collectHISService.syncOper(startTime, endTime);
+ }
}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java
index c687dcc..754af48 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java
@@ -110,6 +110,23 @@
public List<SysDept> selectDeptList(SysDept dept);
/**
+ * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鎵嬫湳淇℃伅
+ *
+ * @param patMedOperation 鎵嬫湳淇℃伅
+ * @return 鎵嬫湳淇℃伅闆嗗悎淇℃伅
+ */
+ public List<PatMedOperation> selectOperList(PatMedOperation patMedOperation);
+
+ /**
+ * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鎵嬫湳璇︽儏淇℃伅
+ *
+ * @param patMedOperationItem 鎵嬫湳璇︽儏淇℃伅
+ * @return 鎵嬫湳璇︽儏淇℃伅闆嗗悎淇℃伅
+ */
+ public List<PatMedOperationItem> selectOperItemList(PatMedOperationItem patMedOperationItem);
+
+
+ /**
* 鏌ヨ杩斿洖strign sql
* @param sql
* @return
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ICollectHISService.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ICollectHISService.java
index b8b6e1b..f5b2c05 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ICollectHISService.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ICollectHISService.java
@@ -78,4 +78,9 @@
* 甯備竴鍚屾
*/
public Integer syncMedInhosp(String startTime, String endTime);
+
+ /**
+ * 甯備竴鍚屾
+ */
+ public Integer syncOper(String startTime, String endTime);
}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
index d639291..5569719 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -74,7 +74,11 @@
@Value("${spring.profiles.active}")
private String active;
+ @Autowired
+ private PatMedOperationMapper patMedOperationMapper;
+ @Autowired
+ private PatMedOperationItemMapper patMedOperationItemMapper;
@Override
public List<PatArchive> selectPatArchiveList(PatArchive patArchive) {
@@ -127,6 +131,12 @@
utilsMapper.updateSql("update sys_sync_time set startTime='" + endTime + "' where syncName='pat_med_outhosp' ");
}
+ //鍚屾鎵嬫湳淇℃伅
+ syncTemp = syncList.stream().filter(row -> row.get("syncName").equals("pat_med_operation")).collect(Collectors.toList());
+ if (syncTemp.size() > 0) {
+ count += syncOper(syncTemp.get(0).get("startTime") + "", endTime);
+ utilsMapper.updateSql("update sys_sync_time set startTime='" + endTime + "' where syncName='pat_med_operation' ");
+ }
} else {
log.info("鍚屾浠诲姟鏃堕棿sys_sync_time琛ㄤ腑娌℃湁闇�瑕佸悓姝ョ殑浠诲姟");
@@ -311,6 +321,77 @@
return count;
}
+ /**
+ * 鍚屾鎵嬫湳淇℃伅
+ *
+ * @param
+ * @return
+ */
+ @Override
+ public Integer syncOper(String startTime, String endTime) {
+ Integer count = 0;
+ PatMedOperation patMedOperation = new PatMedOperation();
+ patMedOperation.setLastStartTime(startTime);
+ patMedOperation.setLastEndTime(endTime);
+ List<PatMedOperation> patMedOperations = chMapper.selectOperList(patMedOperation);
+ log.info("鍚屾鎵嬫湳淇℃伅鏁伴噺" + patMedOperations.size());
+ for (PatMedOperation operation : patMedOperations) {
+ try {
+ PatMedOperation oper = new PatMedOperation();
+ oper.setOpid(operation.getOpid());
+ List<PatMedOperation> patMedOperations1 = patMedOperationMapper.selectPatMedOperationList(oper);
+ if (CollectionUtils.isNotEmpty(patMedOperations1)) {
+ operation.setId(patMedOperations1.get(0).getId());
+ operation.setUpdateTime(new Date());
+ count += patMedOperationMapper.updatePatMedOperation(patMedOperations1.get(0));
+ syncOperItem(operation);
+ } else {
+ operation.setCreateTime(new Date());
+ count += patMedOperationMapper.insertPatMedOperation(operation);
+ syncOperItem(operation);
+ }
+ } catch (Exception ex) {
+ log.info("鍚屾鎵嬫湳淇℃伅:" + ex.getMessage());
+ }
+ }
+ return count;
+ }
+
+ /**
+ * 鍚屾鎵嬫湳淇℃伅
+ *
+ * @param
+ * @return
+ */
+ private Integer syncOperItem(PatMedOperation operation) {
+ Integer count = 0;
+ PatMedOperationItem patMedOperationItem = new PatMedOperationItem();
+ patMedOperationItem.setOrgid(operation.getOrgid());
+ if(StringUtils.isNotEmpty(operation.getOpid())){
+ patMedOperationItem.setOpid(Long.valueOf(operation.getOpid()));
+ List<PatMedOperationItem> patMedOperationItems = chMapper.selectOperItemList(patMedOperationItem);
+ log.info("鍚屾鎵嬫湳璇︽儏淇℃伅鏁伴噺" + patMedOperationItems.size());
+ for (PatMedOperationItem operationItem : patMedOperationItems) {
+ try {
+ PatMedOperationItem operItem = new PatMedOperationItem();
+ operItem.setOpid(operationItem.getOpid());
+ operItem.setOperationid(operationItem.getOperationid());
+ List<PatMedOperationItem> patMedOperationItems1 = patMedOperationItemMapper.selectPatMedOperationItemList(operItem);
+ if (CollectionUtils.isNotEmpty(patMedOperationItems1)) {
+ operationItem.setId(patMedOperationItems1.get(0).getId());
+ operationItem.setUpdateTime(new Date());
+ count += patMedOperationItemMapper.updatePatMedOperationItem(operationItem);
+ } else {
+ operation.setCreateTime(new Date());
+ count += patMedOperationItemMapper.insertPatMedOperationItem(operationItem);
+ }
+ } catch (Exception ex) {
+ log.info("鍚屾鎵嬫湳璇︽儏淇℃伅:" + ex.getMessage());
+ }
+ }
+ }
+ return count;
+ }
@Override
public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {
List<PatMedInhosp> patMedInhospList = chMapper.selectPatMedInhospList(patMedInhosp);
diff --git a/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml b/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
index bfda1d8..4767c80 100644
--- a/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
+++ b/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
@@ -336,6 +336,107 @@
<result property="guid" column="guid"/>
</resultMap>
+ <resultMap type="com.smartor.domain.PatMedOperation" id="PatMedOperationResult">
+ <result property="id" column="id"/>
+ <result property="patid" column="patid"/>
+ <result property="patcode" column="patcode"/>
+ <result property="paname" column="paname"/>
+ <result property="opreqid" column="opreqid"/>
+ <result property="opreqcode" column="opreqcode"/>
+ <result property="opsstatus" column="opsstatus"/>
+ <result property="optypecode" column="optypecode"/>
+ <result property="optypename" column="optypename"/>
+ <result property="operatortime" column="operatortime"/>
+ <result property="opreqtime" column="opreqtime"/>
+ <result property="reqdoccode" column="reqdoccode"/>
+ <result property="reqdocname" column="reqdocname"/>
+ <result property="reqdeptcode" column="reqdeptcode"/>
+ <result property="reqdeptname" column="reqdeptname"/>
+ <result property="reqloccode" column="reqloccode"/>
+ <result property="reqlocname" column="reqlocname"/>
+ <result property="remark" column="remark"/>
+ <result property="surgeoncode" column="surgeoncode"/>
+ <result property="surgeonname" column="surgeonname"/>
+ <result property="firasscode" column="firasscode"/>
+ <result property="firassname" column="firassname"/>
+ <result property="secasscode" column="secasscode"/>
+ <result property="secassname" column="secassname"/>
+ <result property="thrasscode" column="thrasscode"/>
+ <result property="thrassname" column="thrassname"/>
+ <result property="canceltime" column="canceltime"/>
+ <result property="cancelreason" column="cancelreason"/>
+ <result property="cancelcode" column="cancelcode"/>
+ <result property="cancelname" column="cancelname"/>
+ <result property="visittype" column="visittype"/>
+ <result property="status" column="status"/>
+ <result property="schemetime" column="schemetime"/>
+ <result property="schemestatus" column="schemestatus"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="isupload" column="isupload"/>
+ <result property="uploadTime" column="upload_time"/>
+ <result property="orgid" column="orgid"/>
+ <result property="guid" column="guid"/>
+ <result property="pguid" column="pguid"/>
+ <result property="pid" column="pid"/>
+ <result property="inhospstate" column="inhospstate"/>
+ <result property="patno" column="patno"/>
+ <result property="patname" column="patname"/>
+ <result property="visitid" column="visitid"/>
+ <result property="serialnum" column="serialnum"/>
+ <result property="inhospno" column="inhospno"/>
+ <result property="hospitalname" column="hospitalname"/>
+ <result property="hospitalcode" column="hospitalcode"/>
+ <result property="deptid" column="deptid"/>
+ <result property="deptcode" column="deptcode"/>
+ <result property="deptname" column="deptname"/>
+ <result property="hospitaldistrictcode" column="hospitaldistrictcode"/>
+ <result property="hospitaldistrictname" column="hospitaldistrictname"/>
+ <result property="roomno" column="roomno"/>
+ <result property="bedNo" column="bed_no"/>
+ <result property="drcode" column="drcode"/>
+ <result property="drname" column="drname"/>
+ <result property="nurseId" column="nurse_id"/>
+ <result property="nurseName" column="nurse_name"/>
+ <result property="checkFlag" column="check_flag"/>
+ <result property="longTaskReason" column="long_task_reason"/>
+ <result property="opid" column="opid"/>
+ <result property="opcode" column="opcode"/>
+ <result property="opdesc" column="opdesc"/>
+ <result property="oplevelcode" column="oplevelcode"/>
+ <result property="opleveldesc" column="opleveldesc"/>
+ </resultMap>
+
+ <resultMap type="com.smartor.domain.PatMedOperationItem" id="PatMedOperationItemResult">
+ <result property="id" column="id"/>
+ <result property="operationid" column="operationid"/>
+ <result property="opid" column="opid"/>
+ <result property="opcode" column="opcode"/>
+ <result property="opdesc" column="opdesc"/>
+ <result property="mainFlag" column="main_flag"/>
+ <result property="incitypecode" column="incitypecode"/>
+ <result property="incitypedesc" column="incitypedesc"/>
+ <result property="oplevelcode" column="oplevelcode"/>
+ <result property="opleveldesc" column="opleveldesc"/>
+ <result property="opposition" column="opposition"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="isupload" column="isupload"/>
+ <result property="uploadTime" column="upload_time"/>
+ <result property="orgid" column="orgid"/>
+ <result property="pguid" column="pguid"/>
+ <result property="guid" column="guid"/>
+ <result property="pid" column="pid"/>
+ <result property="opercheckFlag" column="opercheck_flag"/>
+ <result property="longTaskReason" column="long_task_reason"/>
+ </resultMap>
+
<sql id="selectPatArchiveVo">
select notrequired_flag,
notrequiredreason,
@@ -714,4 +815,128 @@
</select>
+ <select id="selectOperList" parameterType="com.smartor.domain.PatMedOperation"
+ resultMap="PatMedOperationResult">
+ select
+ o.patid,
+ o.patcode,
+ o.paname,
+ o.opreqid,
+ o.opreqcode,
+ o.opsstatus,
+ o.optypecode,
+ o.optypename,
+ o.operatortime,
+ o.opreqtime,
+ o.reqdoccode,
+ o.reqdocname,
+ o.reqdeptcode,
+ o.reqdeptname,
+ o.reqloccode,
+ o.reqlocname,
+ o.remark,
+ o.surgeoncode,
+ o.surgeonname,
+ o.firasscode ,
+ o.firassname,
+ o.secasscode,
+ o.secassname ,
+ o.thrasscode,
+ o.thrassname,
+ o.endcancelname,
+ o.visittype,
+ o.status,
+ o.schemetime,
+ o.schemestatus,
+ o.del_flag,
+ o.update_by,
+ o.update_time,
+ o.create_by,
+ o.create_time,
+ o.isupload,
+ o.upload_time,
+ o.orgid ,
+ o.guid,
+ o.pguid,
+ o.pid ,
+ o.inhospstate,
+ o.patno,
+ o.patname,
+ o.visitid,
+ o.serialnum,
+ o.inhospno ,
+ o.hospitalname,
+ o.hospitalcode,
+ o.deptid ,
+ o.deptcode ,
+ o.deptname ,
+ o.hospitaldistrictcode,
+ o.hospitaldistrictname ,
+ o.roomno ,
+ o.bed_no ,
+ o.drcode ,
+ o.drname ,
+ o.nurse_id,
+ o.nurse_name ,
+ o.check_flag ,
+ o.long_task_reason,
+ o.opid ,
+ o.vopcode ,
+ o.opdesc,
+ o.oplevelcode ,
+ o.opleveldesc
+ from PAT_MED_OPERATION o
+ where 1=1
+ <if test="orgid != null and orgid != ''">
+ AND o.orgid = #{orgid}
+ </if>
+ <if test="lastStartTime != null and lastStartTime != ''">
+ and to_char(o.last_Update_Time, 'YYYY-MM-DD HH24:MI:SS') >= #{lastStartTime}
+ </if>
+ <if test="lastEndTime != null and lastEndTime != ''">
+ and to_char(o.last_Update_Time, 'YYYY-MM-DD HH24:MI:SS') <= #{lastEndTime}
+ </if>
+ </select>
+
+ <select id="selectOperItemList" parameterType="com.smartor.domain.PatMedOperationItem"
+ resultMap="PatMedOperationItemResult">
+ select
+ oi.operationid,
+ oi.opid,
+ oi.opcode,
+ oi.opdesc,
+ oi.main_flag,
+ oi.incitypecode,
+ oi.incitypedesc,
+ oi.oplevelcode,
+ oi.opleveldesc,
+ oi.opposition,
+ oi.del_flag,
+ oi.update_by,
+ oi.update_time,
+ oi.create_by,
+ oi.create_time,
+ oi.isupload,
+ oi.upload_time,
+ oi.orgid,
+ oi.pguid,
+ oi.guid,
+ oi.pid,
+ oi.opercheck_flag,
+ oi.long_task_reason
+ from PAT_MED_OPERATION_ITEM oi
+ where 1=1
+ <if test="orgid != null and orgid != ''">
+ AND oi.orgid = #{orgid}
+ </if>
+ <if test="opid != null and opid != ''">
+ AND oi.opid = #{opid}
+ </if>
+ <if test="lastStartTime != null and lastStartTime != ''">
+ and to_char(oi.last_Update_Time, 'YYYY-MM-DD HH24:MI:SS') >= #{lastStartTime}
+ </if>
+ <if test="lastEndTime != null and lastEndTime != ''">
+ and to_char(oi.last_Update_Time, 'YYYY-MM-DD HH24:MI:SS') <= #{lastEndTime}
+ </if>
+ </select>
</mapper>
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedOperation.java b/smartor/src/main/java/com/smartor/domain/PatMedOperation.java
index ba4c151..3aa232f 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedOperation.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedOperation.java
@@ -498,6 +498,12 @@
@ApiModelProperty(value = "缁撴潫鎵嬫湳鏃堕棿")
private Date endTime;
+ @ApiModelProperty(value = "鏈�鍚庡紑濮嬫椂闂�")
+ private String lastStartTime;
+
+ @ApiModelProperty(value = "鏈�鍚庣粨鏉熸椂闂�")
+ private String lastEndTime;
+
/**
* pageNum
*/
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedOperationItem.java b/smartor/src/main/java/com/smartor/domain/PatMedOperationItem.java
index 4f916cc..d58c53f 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedOperationItem.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedOperationItem.java
@@ -146,6 +146,12 @@
@Excel(name = "鐖禝D")
private Long pid;
+ @ApiModelProperty(value = "鏈�鍚庡紑濮嬫椂闂�")
+ private String lastStartTime;
+
+ @ApiModelProperty(value = "鏈�鍚庣粨鏉熸椂闂�")
+ private String lastEndTime;
+
/**
* 鎵嬫湳闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞� 1澶勭悊
*/
--
Gitblit v1.9.3