diff --git a/acupuncture-admin/src/main/java/com/acupuncture/AcupunctureApplication.java b/acupuncture-admin/src/main/java/com/acupuncture/AcupunctureApplication.java index 27c21e0e..a4572f16 100644 --- a/acupuncture-admin/src/main/java/com/acupuncture/AcupunctureApplication.java +++ b/acupuncture-admin/src/main/java/com/acupuncture/AcupunctureApplication.java @@ -4,6 +4,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.scheduling.annotation.EnableScheduling; /** * 启动程序 @@ -12,6 +13,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; */ @MapperScan({"com.acupuncture.**.mapper", "com.acupuncture.**.dao"}) @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) +@EnableScheduling public class AcupunctureApplication { public static void main(String[] args) diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java index fa092ce5..bcb8c765 100644 --- a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java +++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java @@ -16,7 +16,6 @@ import com.acupuncture.system.persist.dao.UmsDataSourceDao; import com.acupuncture.system.persist.mapper.FmsFollowupTaskMapper; import com.acupuncture.system.service.FmsFollowupQueueService; import com.acupuncture.system.service.FmsFollowupService; -import com.acupuncture.system.service.TaskService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; @@ -72,6 +71,24 @@ public class FmsFollowupController { return JsonResponse.ok(new PageInfo<>(fmsFollowupService.queryQueue(dto.getParam()))); } + @ApiOperation("添加随访队列") + @PostMapping("/add") + public JsonResponse addQueue(@RequestBody @Validated FmsFollowupDto.Add dto){ + return JsonResponse.ok(fmsFollowupService.addQueue(dto)); + } + + @ApiOperation("更新随访队列") + @PostMapping("/upd") + public JsonResponse updQueue(@RequestBody @Validated FmsFollowupDto.Upd dto){ + return JsonResponse.ok(fmsFollowupService.updQueue(dto)); + } + + @ApiOperation("删除随访队列") + @PostMapping("/del") + public JsonResponse delQueue(@RequestBody @Validated FmsFollowupDto.Del dto){ + return JsonResponse.ok(fmsFollowupService.delQueue(dto)); + } + @ApiOperation("查询随访患者") @PostMapping("/queryPatient") public JsonResponse> queryPatient(@RequestBody @Validated BaseDto dto) { @@ -81,6 +98,12 @@ public class FmsFollowupController { return JsonResponse.ok(new PageInfo<>(fmsFollowupService.queryPatient(dto.getParam()))); } + @ApiOperation("修改随访患者") + @PostMapping("/updPatient") + public JsonResponse updPatient(@RequestBody @Validated FmsFollowupDto.UpdPatient dto){ + return JsonResponse.ok(fmsFollowupService.updPatient(dto)); + } + @ApiOperation("查询随访任务") @PostMapping("/queryTask") public JsonResponse> queryTask(@RequestBody @Validated BaseDto dto) { diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/StatisticsController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/StatisticsController.java index 1765eb48..4ba4cddc 100644 --- a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/StatisticsController.java +++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/StatisticsController.java @@ -25,7 +25,7 @@ import java.util.List; @Slf4j @Api(tags = "统计相关") @RestController -@RequestMapping("/statistic") +@RequestMapping("/statistics") public class StatisticsController { @Resource diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/TaskController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/task/TaskController.java similarity index 60% rename from acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/TaskController.java rename to acupuncture-admin/src/main/java/com/acupuncture/web/task/TaskController.java index bef53580..d9066fe4 100644 --- a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/TaskController.java +++ b/acupuncture-admin/src/main/java/com/acupuncture/web/task/TaskController.java @@ -1,20 +1,27 @@ -package com.acupuncture.web.controller.web; +package com.acupuncture.web.task; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; +import com.acupuncture.common.annotation.Anonymous; import com.acupuncture.framework.datasource.DynamicDataSourceContextHolder; import com.acupuncture.system.domain.po.FmsFollowupTask; +import com.acupuncture.system.domain.po.FmsPatientQueueRelation; import com.acupuncture.system.domain.vo.FmsFollowupVo; import com.acupuncture.system.domain.vo.UmsDataSourceVo; import com.acupuncture.system.persist.dao.FmsFollowupDao; import com.acupuncture.system.persist.dao.UmsDataSourceDao; import com.acupuncture.system.persist.mapper.FmsFollowupTaskMapper; +import com.acupuncture.system.persist.mapper.FmsPatientQueueRelationMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.quartz.TriggerUtils; import org.quartz.impl.triggers.CronTriggerImpl; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -35,6 +42,7 @@ import java.util.List; @Api(tags = "定时任务相关") @RestController @RequestMapping("/task") +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public class TaskController { @Resource @@ -43,26 +51,35 @@ public class TaskController { private FmsFollowupTaskMapper fmsFollowupTaskMapper; @Resource private UmsDataSourceDao umsDataSourceDao; - + @Resource + private FmsPatientQueueRelationMapper fmsPatientQueueRelationMapper; @ApiOperation("定时任务添加随访工单") @PostMapping("/task") + @Scheduled(fixedRate = 10000) + @Anonymous public void task() { //查询租户,根据租户循环切换数据源,定时处理所有医院的随访工单 +// UmsDataSourceVo.Result result1 = new UmsDataSourceVo.Result(); +// result1.setDataSourceKey("MASTER"); +// changeDataSource(result1); List query = umsDataSourceDao.query(); if (CollectionUtil.isEmpty(query)) { return; } + //查询公共队列 + List queueResults = fmsFollowupDao.queryCommonQueue(null); //切换数据源 for (UmsDataSourceVo.Result result : query) { + if ("MASTER".equals(result.getDataSourceKey())) { + continue; + } changeDataSource(result); { //获取随访患者列表,根据患者出院日时间和队列添加工单 //1. 查询队列 - List queueList = fmsFollowupDao.selectQueueList(null); - //查询公共队列 - changeDataSource(result); - List queueResults = fmsFollowupDao.queryCommonQueue(null); + List queueList = fmsFollowupDao.selectQueueList(null, null, null); + if (CollectionUtil.isEmpty(queueList)) { queueList = queueResults; } else { @@ -70,18 +87,17 @@ public class TaskController { } for (FmsFollowupVo.FollowupQueueVO followupQueueVO : queueList) { //2. 查询队列随访患者列表 - changeDataSource(result); - List patientList = fmsFollowupDao.queryPatient(followupQueueVO.getId()); + List patientList = fmsFollowupDao.queryPatient(followupQueueVO.getId(), (byte) 0); if (CollectionUtil.isEmpty(patientList)) { continue; } //随访总月数 - Integer followupMethod = followupQueueVO.getFollowupMethod(); + Integer followupMonth = followupQueueVO.getFollowupMonth(); for (FmsFollowupVo.FollowupPatient followupPatient : patientList) { //获取随访到期时间 出院时间+随访总月数 = 到期时间 Calendar calendar = Calendar.getInstance(); calendar.setTime(followupPatient.getDischargeTime()); - calendar.set(Calendar.MONTH, followupMethod); + calendar.set(Calendar.MONTH, followupMonth); Date time = calendar.getTime(); //获取队列信息 @@ -104,8 +120,23 @@ public class TaskController { FmsFollowupTask fmsFollowupTask = new FmsFollowupTask(); BeanUtil.copyProperties(followupQueueVO, fmsFollowupTask); fmsFollowupTask.setId(IdUtil.getSnowflakeNextId()); + fmsFollowupTask.setName(followupPatient.getName()); + fmsFollowupTask.setPinyinFull(followupPatient.getPinyinFull()); + fmsFollowupTask.setPinyinSimple(followupPatient.getPinyinSimple()); + fmsFollowupTask.setGender(followupPatient.getGender()); + if (followupPatient.getBirthDate() != null) { + fmsFollowupTask.setAge(DateUtil.age(followupPatient.getBirthDate(), new Date())); + } + fmsFollowupTask.setEthnicity(followupPatient.getEthnicity()); + fmsFollowupTask.setEducationYears(followupPatient.getEducationYears()); + fmsFollowupTask.setPhone(followupPatient.getPhone()); + fmsFollowupTask.setTenantId(followupPatient.getTenantId()); + fmsFollowupTask.setIdCardType(followupPatient.getIdCardType()); + fmsFollowupTask.setIdCard(followupPatient.getIdCard()); + fmsFollowupTask.setTimes(1); fmsFollowupTask.setQueueId(followupQueueVO.getId()); fmsFollowupTask.setPatientId(followupPatient.getId()); + fmsFollowupTask.setEducationYears(followupPatient.getEducationYears()); fmsFollowupTask.setDelFlag((byte) 0); fmsFollowupTask.setCreateTime(new Date()); fmsFollowupTask.setStatus((byte) 0); @@ -119,14 +150,32 @@ public class TaskController { } else { //周期 //4. 根据频次和总月数添加 + int i = 0; for (Date date : dateList) { + i+=1; //单次 FmsFollowupTask fmsFollowupTask = new FmsFollowupTask(); BeanUtil.copyProperties(followupQueueVO, fmsFollowupTask); fmsFollowupTask.setId(IdUtil.getSnowflakeNextId()); + fmsFollowupTask.setName(followupPatient.getName()); + fmsFollowupTask.setPinyinFull(followupPatient.getPinyinFull()); + fmsFollowupTask.setPinyinSimple(followupPatient.getPinyinSimple()); + fmsFollowupTask.setGender(followupPatient.getGender()); + if (followupPatient.getBirthDate() != null) { + fmsFollowupTask.setAge(DateUtil.age(followupPatient.getBirthDate(), new Date())); + } + fmsFollowupTask.setEthnicity(followupPatient.getEthnicity()); + fmsFollowupTask.setEducationYears(followupPatient.getEducationYears()); + fmsFollowupTask.setTimes(i); + fmsFollowupTask.setPhone(followupPatient.getPhone()); + fmsFollowupTask.setTenantId(followupPatient.getTenantId()); + fmsFollowupTask.setIdCardType(followupPatient.getIdCardType()); + fmsFollowupTask.setIdCard(followupPatient.getIdCard()); + fmsFollowupTask.setId(IdUtil.getSnowflakeNextId()); fmsFollowupTask.setQueueId(followupQueueVO.getId()); fmsFollowupTask.setDelFlag((byte) 0); fmsFollowupTask.setCreateTime(new Date()); + fmsFollowupTask.setEducationYears(followupPatient.getEducationYears()); fmsFollowupTask.setStatus((byte) 0); fmsFollowupTask.setStartTime(date); fmsFollowupTask.setEndTime(date); @@ -137,6 +186,12 @@ public class TaskController { fmsFollowupTaskMapper.insertSelective(fmsFollowupTask); } } + changeDataSource(result); + //将患者设置为已生成工单 + FmsPatientQueueRelation fmsPatientQueueRelation = BeanUtil.copyProperties(followupPatient, FmsPatientQueueRelation.class); + fmsPatientQueueRelation.setTaskFlag((byte) 1); + fmsPatientQueueRelation.setPatientId(followupPatient.getId()); + fmsPatientQueueRelationMapper.updateByPrimaryKeySelective(fmsPatientQueueRelation); } } diff --git a/acupuncture-admin/src/main/resources/application-stage.yml b/acupuncture-admin/src/main/resources/application-stage.yml index 392aafe2..846ba2a5 100644 --- a/acupuncture-admin/src/main/resources/application-stage.yml +++ b/acupuncture-admin/src/main/resources/application-stage.yml @@ -13,9 +13,9 @@ spring: slave: # 从数据源开关/默认关闭 enabled: false - url: - username: - password: + url: jdbc:mysql://localhost:3306/acupuncture_yfyy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: q7510327 # 初始连接数 initialSize: 5 # 最小连接池数量 diff --git a/acupuncture-generator/src/main/resources/mbg.xml b/acupuncture-generator/src/main/resources/mbg.xml index 3050a369..40131f6a 100644 --- a/acupuncture-generator/src/main/resources/mbg.xml +++ b/acupuncture-generator/src/main/resources/mbg.xml @@ -57,17 +57,17 @@ - -
-
-
+ + + +
-
-
-
-
-
-
+ + + + + +