From eaa6609732ea8e873857584e4c327199168b4757 Mon Sep 17 00:00:00 2001
From: linjj <850658129@qq.com>
Date: Fri, 25 Jul 2025 14:57:05 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=A1=A5=E5=81=BF=E9=A6=96?=
=?UTF-8?q?=E9=A1=B5=E6=9C=BA=E5=88=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 14 ++++++-
.../duplicate/controller/TaskController.java | 3 +-
.../controller/vo/medicalCompensateVo.java | 34 +++++++++++++++
.../dao/ArchiveOtherExtMapper.java | 3 +-
.../service/MedicalAdviceService.java | 9 +++-
.../impl/MedicalAdviceServiceImpl.java | 42 +++++++++++++++----
.../service/impl/TaskServiceImpl.java | 6 ---
.../com/example/quartz/CollectorConfig.java | 21 +++++++++-
.../com/example/quartz/DailyTaskQuartz.java | 31 ++++++++++++++
src/main/resources/application.yml | 14 ++++---
.../mapper/ArchiveOtherExtMapper.xml | 11 +++++
.../com/example/DemoApplicationTests.java | 37 +++++++++-------
12 files changed, 185 insertions(+), 40 deletions(-)
create mode 100644 src/main/java/com/example/duplicate/controller/vo/medicalCompensateVo.java
create mode 100644 src/main/java/com/example/quartz/DailyTaskQuartz.java
diff --git a/pom.xml b/pom.xml
index 72f231f..5852ff2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
com.example
- collector-gm
+ collector_czry
0.0.1-SNAPSHOT
springbootDemo
springbootDemo
@@ -35,6 +35,11 @@
runtime
true
+
+ com.oracle.database.jdbc
+ ojdbc8
+ 19.3.0.0
+
org.springframework.boot
spring-boot-starter-test
@@ -69,6 +74,13 @@
druid-spring-boot-starter
${alibabadruid.version}
+
+
+ org.apache.pdfbox
+ pdfbox
+ 2.0.27
+
+
com.github.xiaoymin
diff --git a/src/main/java/com/example/duplicate/controller/TaskController.java b/src/main/java/com/example/duplicate/controller/TaskController.java
index 2dd66bb..fe2ad05 100644
--- a/src/main/java/com/example/duplicate/controller/TaskController.java
+++ b/src/main/java/com/example/duplicate/controller/TaskController.java
@@ -225,8 +225,7 @@ public class TaskController {
public CommonResult> compensate(@RequestParam @ApiParam(required = true, name = "startTime", value = "补偿开始时间") String startTime,
@RequestParam @ApiParam(required = true, name = "entTime", value = "补偿开始时间") String entTime,
@RequestParam @ApiParam(required = true, name = "collectId", value = "采集器id") String collectId) {
- taskService.compensate(startTime,entTime,collectId);
- return CommonResult.success("补偿完成");
+ return taskService.compensate(startTime,entTime,collectId);
}
}
diff --git a/src/main/java/com/example/duplicate/controller/vo/medicalCompensateVo.java b/src/main/java/com/example/duplicate/controller/vo/medicalCompensateVo.java
new file mode 100644
index 0000000..2567a03
--- /dev/null
+++ b/src/main/java/com/example/duplicate/controller/vo/medicalCompensateVo.java
@@ -0,0 +1,34 @@
+package com.example.duplicate.controller.vo;
+
+import lombok.Data;
+
+/**
+ * @ClassName medicalCompensateVo
+ * @Description 补偿返回
+ * @Author linjj
+ * @Date 2025/7/25 14:48
+ * @Version 1.0
+ */
+@Data
+public class medicalCompensateVo {
+ //采集器id
+ private String sysFlag;
+ //任务id
+ private String otherId;
+ private String id;
+ //住院号
+ private String inpNo;
+ //住院次数
+ private String visitId;
+ //记帐号
+ private String patientId;
+ //出院科室
+ private String deptName;
+ //出院时间
+ private String dischargeDateTime;
+ //患者姓名
+ private String name;
+ //住院时间
+ private String admissionDateTime;
+
+}
diff --git a/src/main/java/com/example/duplicate/infrastructure/dao/ArchiveOtherExtMapper.java b/src/main/java/com/example/duplicate/infrastructure/dao/ArchiveOtherExtMapper.java
index 6d263ca..8f1d8ce 100644
--- a/src/main/java/com/example/duplicate/infrastructure/dao/ArchiveOtherExtMapper.java
+++ b/src/main/java/com/example/duplicate/infrastructure/dao/ArchiveOtherExtMapper.java
@@ -3,6 +3,7 @@ package com.example.duplicate.infrastructure.dao;
import com.example.duplicate.controller.param.ArchiveOtherExtDto;
import com.example.duplicate.controller.param.updateTaskDto;
import com.example.duplicate.controller.vo.ArchiveOtherExtVo;
+import com.example.duplicate.controller.vo.medicalCompensateVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -26,5 +27,5 @@ public interface ArchiveOtherExtMapper {
Boolean updateStatic(@Param("mid")String mid, @Param("sysFlag")String sysFlag);
-
+ List medicalCompensate(@Param("statusFlag")int statusFlag);
}
diff --git a/src/main/java/com/example/duplicate/service/MedicalAdviceService.java b/src/main/java/com/example/duplicate/service/MedicalAdviceService.java
index a777213..2935dac 100644
--- a/src/main/java/com/example/duplicate/service/MedicalAdviceService.java
+++ b/src/main/java/com/example/duplicate/service/MedicalAdviceService.java
@@ -17,5 +17,12 @@ public interface MedicalAdviceService {
* @date: 2024/8/2 15:52
*/
CommonResult> pollingAddTask();
-
+ /**
+ * @Author: linjj
+ * @Description: 补偿机制
+ * @DateTime: 2025/7/25 14:25
+ * @Params: []
+ * @Return com.example.utils.CommonResult>
+ */
+ CommonResult> medicalCompensate();
}
diff --git a/src/main/java/com/example/duplicate/service/impl/MedicalAdviceServiceImpl.java b/src/main/java/com/example/duplicate/service/impl/MedicalAdviceServiceImpl.java
index a77e32e..c52e0eb 100644
--- a/src/main/java/com/example/duplicate/service/impl/MedicalAdviceServiceImpl.java
+++ b/src/main/java/com/example/duplicate/service/impl/MedicalAdviceServiceImpl.java
@@ -6,6 +6,7 @@ import com.example.duplicate.controller.param.ArchiveOtherExtDto;
import com.example.duplicate.controller.param.PrintParam;
import com.example.duplicate.controller.vo.ArchiveMasterVo;
import com.example.duplicate.controller.vo.ArchiveOtherExtVo;
+import com.example.duplicate.controller.vo.medicalCompensateVo;
import com.example.duplicate.infrastructure.dao.ArchiveMasterMapper;
import com.example.duplicate.infrastructure.dao.ArchiveOtherExtMapper;
import com.example.duplicate.service.MedicalAdviceService;
@@ -49,7 +50,7 @@ public class MedicalAdviceServiceImpl implements MedicalAdviceService {
@Override
public CommonResult> pollingAddTask() {
- //获取当前30分钟前出院病历生成医嘱任务
+ //获取当前30分钟前出院病历生成任务
List medicalAdviceTask = ArchiveMasterMapper.getMedicalAdviceTask();
if (CollectionUtils.isEmpty(medicalAdviceTask)) {
log.info("当前没有需要生成任务的病历");
@@ -81,12 +82,6 @@ public class MedicalAdviceServiceImpl implements MedicalAdviceService {
dto.setZyh(tasks.getInpNo());
dto.setStatusFlag(0);
dto.setMID(tasks.getId());
- if (collectId.equals("8")){
- dto.setC1("长临医嘱");
- }
- if (collectId.equals("1")){
- dto.setC1("护理记录");
- }
//任务表新增任务
if (archiveOtherExtMapper.addOther(dto)) {
//存放队列消息
@@ -108,6 +103,23 @@ public class MedicalAdviceServiceImpl implements MedicalAdviceService {
return CommonResult.success("轮询完成已经增加任务");
}
+ @Override
+ public CommonResult> medicalCompensate() {
+ //查询未完成的首页任务
+ List medicalCompensateVos = archiveOtherExtMapper.medicalCompensate(9);
+ if (CollectionUtils.isEmpty(medicalCompensateVos)) {
+ log.info("当前没有需要生成的首页任务");
+ return CommonResult.failed("当前没有需要生成的首页任务");
+ }
+ PrintParam printParam = new PrintParam();
+ //补偿任务
+ for (medicalCompensateVo tasks : medicalCompensateVos){
+ //存放队列消息
+ GenerateQueueCompensate(tasks, printParam, 1, tasks.getSysFlag());
+ }
+ return CommonResult.success("补偿任务完成");
+ }
+
//生成队列消息
private void GenerateQueue(ArchiveMasterVo task, PrintParam data, Integer ispriority, String collectid) {
@@ -122,4 +134,20 @@ public class MedicalAdviceServiceImpl implements MedicalAdviceService {
String key = String.format(redisKey, collectid, ispriority);
redisMq.push(key, JSON.toJSONString(data, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue));
}
+
+
+
+ //生成队列消息
+ private void GenerateQueueCompensate(medicalCompensateVo task, PrintParam data, Integer ispriority, String collectid) {
+ data.setId(task.getId());
+ data.setInpNo(task.getInpNo());
+ data.setVisitId(task.getVisitId());
+ data.setJzh(task.getPatientId());
+ data.setDeptName(task.getDeptName());
+ data.setDischargeDateTime(task.getDischargeDateTime());
+ data.setName(task.getName());
+ data.setAdmissionDateTime(task.getAdmissionDateTime());
+ String key = String.format(redisKey, collectid, ispriority);
+ redisMq.push(key, JSON.toJSONString(data, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue));
+ }
}
diff --git a/src/main/java/com/example/duplicate/service/impl/TaskServiceImpl.java b/src/main/java/com/example/duplicate/service/impl/TaskServiceImpl.java
index 1fcac37..89e3759 100644
--- a/src/main/java/com/example/duplicate/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/example/duplicate/service/impl/TaskServiceImpl.java
@@ -107,12 +107,6 @@ public class TaskServiceImpl implements TaskService {
dto.setZyh(archiveMasters.get(0).getInpNo());
dto.setStatusFlag(0);
dto.setMID(archiveMasters.get(0).getId());
- if (collectId.equals("8")) {
- dto.setC1("长临医嘱");
- }
- if (collectId.equals("1")) {
- dto.setC1("护理记录");
- }
archiveOtherExtMapper.addOther(dto);
}
archiveOtherExtMapper.updateStatic(masterId, collectId);
diff --git a/src/main/java/com/example/quartz/CollectorConfig.java b/src/main/java/com/example/quartz/CollectorConfig.java
index b2b4e97..ebeafa8 100644
--- a/src/main/java/com/example/quartz/CollectorConfig.java
+++ b/src/main/java/com/example/quartz/CollectorConfig.java
@@ -26,12 +26,29 @@ public class CollectorConfig {
@Bean
public Trigger pacsPushTrigger() {
-
return TriggerBuilder.newTrigger().forJob(MedicalAdvice())
-
.withIdentity("MedicalAdviceQuartz")
.withSchedule(CronScheduleBuilder.cronSchedule(medicalAdviceTime))
.build();
}
+
+
+ /* ------------------ 每天凌晨 0 点 ------------------ */
+ @Bean
+ public JobDetail dailyJob() {
+ return JobBuilder.newJob(DailyTaskQuartz.class)
+ .withIdentity("DailyTaskQuartz")
+ .storeDurably()
+ .build();
+ }
+
+ @Bean
+ public Trigger dailyTrigger() {
+ return TriggerBuilder.newTrigger()
+ .forJob(dailyJob())
+ .withIdentity("DailyTaskQuartzTrigger")
+ .withSchedule(CronScheduleBuilder.cronSchedule("0 0 0 * * ?")) // 每天 00:00:00
+ .build();
+ }
}
diff --git a/src/main/java/com/example/quartz/DailyTaskQuartz.java b/src/main/java/com/example/quartz/DailyTaskQuartz.java
new file mode 100644
index 0000000..d90160b
--- /dev/null
+++ b/src/main/java/com/example/quartz/DailyTaskQuartz.java
@@ -0,0 +1,31 @@
+package com.example.quartz;
+
+import com.example.duplicate.service.MedicalAdviceService;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+import javax.annotation.Resource;
+
+/**
+ * @ClassName DailyTaskQuartz
+ * @Description 补偿首页数据
+ * @Author linjj
+ * @Date 2025/7/25 14:24
+ * @Version 1.0
+ */
+public class DailyTaskQuartz extends QuartzJobBean {
+
+ @Resource
+ private MedicalAdviceService medicalAdviceService;
+
+ /**
+ * 每天补偿首页未完成的任务
+ * @param jobExecutionContext
+ * @throws JobExecutionException
+ */
+ @Override
+ protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+ medicalAdviceService.medicalCompensate();
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 8eec33f..3021b4d 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,14 +1,14 @@
server:
- port: 8003
+ port: 8004
spring:
datasource:
- url: jdbc:sqlserver://db.docus.cn:1433;DatabaseName=emr_record
+ url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=emr_record
username: sa
password: docus@702
- # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=gm_record
- # username: sa
- # password: admin123
+# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=gm_record
+# username: sa
+# password: admin123
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
type: com.alibaba.druid.pool.DruidDataSource
#加快springboot初始化,延缓初始化加载
@@ -62,4 +62,6 @@ collectIdList: 1,8
#补偿时,需要补偿的采集器标识,可以支持多个使用逗号','隔开
repairCollectIds: 1,8
#文件保存地址
-savePath: D:\reload
\ No newline at end of file
+savePath: D:\reload
+#首页补偿v
+medicalCompensate: 0 0 0 * * ?
diff --git a/src/main/resources/mapper/ArchiveOtherExtMapper.xml b/src/main/resources/mapper/ArchiveOtherExtMapper.xml
index 7a82227..e93a964 100644
--- a/src/main/resources/mapper/ArchiveOtherExtMapper.xml
+++ b/src/main/resources/mapper/ArchiveOtherExtMapper.xml
@@ -75,6 +75,17 @@
+
diff --git a/src/test/java/com/example/DemoApplicationTests.java b/src/test/java/com/example/DemoApplicationTests.java
index e3d9ac9..92b8302 100644
--- a/src/test/java/com/example/DemoApplicationTests.java
+++ b/src/test/java/com/example/DemoApplicationTests.java
@@ -1,12 +1,18 @@
package com.example;
import com.example.utils.Md5Util;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.common.PDRectangle;
+import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
+import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
@@ -19,20 +25,23 @@ public class DemoApplicationTests {
@Test
public void contextLoads() {
- Timer timer = new Timer();
- Date date = new Date();
- int a = 2;
- for (int i = 0; i < a; i++) {
- TimerTask task = new TimerTask() {
- public void run() {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSSS");
- Long id = Long.valueOf(sdf.format(System.currentTimeMillis()));
- SimpleDateFormat SycTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- System.out.println("id" + id);
- System.out.println("SycTime" + SycTime.format(date));
- }
- };
- timer.schedule(task, 2000);//延迟2秒执行
+ String jpgPath = "E:\\pdf\\1\\2.jpg";
+ // 输出 PDF 文件路径
+ String pdfPath = "E:\\pdf\\2\\2.pdf";
+
+ try (PDDocument document = new PDDocument()) {
+ PDPage page = new PDPage(PDRectangle.A4);
+ document.addPage(page);
+
+ PDImageXObject pdImage = PDImageXObject.createFromFile(jpgPath, document);
+
+ try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
+ // 设置图片的位置和大小
+ contentStream.drawImage(pdImage, 0, 0, pdImage.getWidth(), pdImage.getHeight());
+ }
+ document.save(pdfPath);
+ } catch (IOException e) {
+ e.printStackTrace();
}
}
}