新增补偿首页机制

master
linjj 5 months ago
parent d21a140e82
commit eaa6609732

@ -9,7 +9,7 @@
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>collector-gm</artifactId>
<artifactId>collector_czry</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootDemo</name>
<description>springbootDemo</description>
@ -35,6 +35,11 @@
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
@ -69,6 +74,13 @@
<artifactId>druid-spring-boot-starter</artifactId>
<version>${alibabadruid.version}</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
<!-- swaggerui相关依赖 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>

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

@ -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;
}

@ -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<medicalCompensateVo> medicalCompensate(@Param("statusFlag")int statusFlag);
}

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

@ -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<ArchiveMasterVo> 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<medicalCompensateVo> 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));
}
}

@ -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);

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

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

@ -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
savePath: D:\reload
#首页补偿v
medicalCompensate: 0 0 0 * * ?

@ -75,6 +75,17 @@
<select id="getOtherByMidAndFlag" resultType="com.example.duplicate.controller.vo.ArchiveOtherExtVo">
select * from archive_other_ext where MID=#{mid} and sysFlag=#{sysFlag}
</select>
<select id="medicalCompensate" resultType="com.example.duplicate.controller.vo.medicalCompensateVo">
SELECT
a.*,other.ID as otherId,other.sysFlag
FROM
archive_other_ext other
LEFT JOIN archive_master a ON a.id = other.MID
WHERE
statusFlag = #{statusFlag}
AND a.discharge_date_time >= DATEADD(DAY, -1, GETDATE()) -- 24小时前
AND a.discharge_date_time &lt; GETDATE() -- 不包含未来
</select>
<update id="updateByMid">

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

Loading…
Cancel
Save