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(); } } }