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 new file mode 100644 index 00000000..fb595fc0 --- /dev/null +++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupController.java @@ -0,0 +1,87 @@ +package com.acupuncture.web.controller.web; + +import com.acupuncture.common.annotation.Anonymous; +import com.acupuncture.common.core.domain.BaseDto; +import com.acupuncture.common.core.domain.JsonResponse; +import com.acupuncture.system.domain.dto.FmsFollowupDto; +import com.acupuncture.system.domain.vo.FmsFollowupVo; +import com.acupuncture.system.service.FmsFollowupQueueService; +import com.acupuncture.system.service.FmsFollowupService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author zzc + * @Package com.acupuncture.web.controller.web + * @Date 2025/2/11 16:45 + * @description: + */ +@Slf4j +@Api(tags = "随访相关") +@RestController +@RequestMapping("/followup") +public class FmsFollowupController { + @Resource + private FmsFollowupQueueService fmsFollowupQueueService; + @Resource + private FmsFollowupService fmsFollowupService; + + @ApiOperation("查询公共队列") + @PostMapping("/commonQueue") + @Anonymous + public JsonResponse> queryCommonQueue(@RequestBody @Validated BaseDto dto) { + if (dto.getPageNum() > 0) { + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + } + return JsonResponse.ok(new PageInfo<>(fmsFollowupQueueService.queryCommonQueue(dto.getParam().getName()))); + } + + @ApiOperation("查询随访队列") + @PostMapping("/query") + public JsonResponse> queryQueue(@RequestBody @Validated BaseDto dto){ + if (dto.getPageNum() > 0) { + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + } + return JsonResponse.ok(new PageInfo<>(fmsFollowupService.queryQueue(dto.getParam()))); + } + + @ApiOperation("查询随访患者") + @PostMapping("/queryPatient") + public JsonResponse> queryPatient(@RequestBody @Validated BaseDto dto){ + if (dto.getPageNum() > 0) { + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + } + return JsonResponse.ok(new PageInfo<>(fmsFollowupService.queryPatient(dto.getParam()))); + } + + @ApiOperation("查询随访任务") + @PostMapping("/queryTask") + public JsonResponse> queryTask(@RequestBody @Validated BaseDto dto){ + return JsonResponse.ok(new PageInfo<>(fmsFollowupService.queryTask(dto.getParam()))); + } + + @ApiOperation("标记为失访") + @PostMapping("/updStatus") + public JsonResponse markAsLost(@RequestBody @Validated FmsFollowupDto.FollowupLostDTO dto){ + fmsFollowupService.markAsLost(dto); + return JsonResponse.ok(); + } + + @ApiOperation("完成随访") + @PostMapping("/followPatient") + public JsonResponse completeFollowup(@RequestBody @Validated FmsFollowupDto.FollowupCompleteDTO dto){ + fmsFollowupService.completeFollowup(dto); + return JsonResponse.ok(); + } +} diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupQueueController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupQueueController.java index 3e5a2581..97f61694 100644 --- a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupQueueController.java +++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/FmsFollowupQueueController.java @@ -30,16 +30,6 @@ import javax.annotation.Resource; @RequestMapping("/followup") public class FmsFollowupQueueController { - @Resource - private FmsFollowupQueueService fmsFollowupQueueService; - @ApiOperation("查询公共队列") - @PostMapping("/commonQueue") - public JsonResponse> queryCommonQueue(@RequestBody @Validated BaseDto dto) { - if (dto.getPageNum() > 0) { - PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); - } - return JsonResponse.ok(new PageInfo<>(fmsFollowupQueueService.queryCommonQueue(dto.getParam().getName()))); - } } diff --git a/acupuncture-admin/src/main/resources/application.yml b/acupuncture-admin/src/main/resources/application.yml index 548cd8d9..6bb95bc2 100644 --- a/acupuncture-admin/src/main/resources/application.yml +++ b/acupuncture-admin/src/main/resources/application.yml @@ -95,7 +95,7 @@ token: # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) - expireTime: 30 + expireTime: 1800 # MyBatis配置 mybatis: diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/FmsFollowupDto.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/FmsFollowupDto.java index d8fc7906..29407d72 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/FmsFollowupDto.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/FmsFollowupDto.java @@ -3,6 +3,9 @@ package com.acupuncture.system.domain.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; +import java.util.Date; + /** * @Author zzc * @Package com.acupuncture.system.domain.vo @@ -16,5 +19,44 @@ public class FmsFollowupDto { @ApiModelProperty("队列名称") private String name; } + @Data + public static class FollowupQueueQueryDTO { + private Long id; + } + + @Data + public static class FollowupPatientQueryDTO { + @NotNull(message = "队列ID不能为空") + private Long id; + } + + // FollowupTaskQueryDTO.java + @Data + public static class FollowupTaskQueryDTO { + private Long queueId; + private Integer status; + private String keywords; + private Integer startAge; + private Integer endAge; + } + // FollowupLostDTO.java + @Data + public static class FollowupLostDTO { + private Long patientId; + private Long queueId; + private Integer times; + private String reason; + } + + // FollowupCompleteDTO.java + @Data + public static class FollowupCompleteDTO { + private Long patientId; + private Long queueId; + private Integer times; + private String followuper; + private Date followupTime; + private String followupText; + } } diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/PmsTreatmentDto.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/PmsTreatmentDto.java index 7efc710b..fcf1d028 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/PmsTreatmentDto.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/PmsTreatmentDto.java @@ -46,6 +46,9 @@ public class PmsTreatmentDto { private Long organizationId; private String createBy; private String remark; + + @ApiModelProperty("随访队列ID集合") + private List queueIdList; } @Data diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/FmsFollowupVo.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/FmsFollowupVo.java index 550560b8..93483e80 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/FmsFollowupVo.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/FmsFollowupVo.java @@ -1,9 +1,12 @@ package com.acupuncture.system.domain.vo; import com.acupuncture.system.domain.po.FmsFollowupQueue; +import com.acupuncture.system.domain.po.FmsPatientQueueRelation; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + /** * @Author zzc * @Package com.acupuncture.system.domain.vo @@ -34,4 +37,76 @@ public class FmsFollowupVo { private Byte status; } + + @Data + public static class FollowupQueueVO { + private Long id; + private String name; + private Integer followupMethod; + private Integer followupType; + private String frequency; + private Integer followupMonth; + private String personInCharge; + private String personInChargeUsername; + private Integer status; + private Long organizationId; + private String createBy; + private Date createTime; + private String updateBy; + private Date updateTime; + private String remark; + } + + // FollowupTaskVO.java + @Data + public static class FollowupTaskVO { + private Long id; + private String name; + private Integer followupMethod; + private Integer followupType; + private String frequency; + private Integer followupMonth; + private String personInCharge; + private String personInChargeUsername; + private Integer status; + private Long organizationId; + private String createBy; + private Date createTime; + private String updateBy; + private Date updateTime; + private String remark; + } + + @Data + public static class FollowupPatient{ + private Long id; + + private Long queueId; + + private String name; + + private String pinyinFull; + + private String pinyinSimple; + + private Byte gender; + + private Date birthDate; + + private String ethnicity; + + private Integer educationYears; + + private String phone; + + private Byte idCardType; + + private String idCard; + + private Long tenantId; + + private String createBy; + + private Date createTime; + } } diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/FmsFollowupDao.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/FmsFollowupDao.java index 9bc81aa4..7c222473 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/FmsFollowupDao.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/FmsFollowupDao.java @@ -1,5 +1,8 @@ package com.acupuncture.system.persist.dao; +import com.acupuncture.common.annotation.DataSource; +import com.acupuncture.common.enums.DataSourceType; +import com.acupuncture.system.domain.dto.FmsFollowupDto; import com.acupuncture.system.domain.vo.FmsFollowupVo; import org.apache.ibatis.annotations.Param; @@ -13,6 +16,35 @@ import java.util.List; */ public interface FmsFollowupDao { - List queryCommonQueue(@Param("name") String name); + /** + * 查询公共队列 + * @param name + * @return + */ + @DataSource(DataSourceType.MASTER) + List queryCommonQueue(@Param("name") String name); + /** + * 查询随访队列 + * @param id + * @return + */ + List selectQueueList(@Param("id") Long id); + + List queryPatient(@Param("id") Long id); + + /** + * 查询随访任务 + * @param dto + * @return + */ + List selectTaskList(FmsFollowupDto.FollowupTaskQueryDTO dto); + /** + * 修改随访任务状态为失访 + * @param dto + * @return + */ + int updateStatusToLost(@Param("dto") FmsFollowupDto.FollowupLostDTO dto); + + int completeFollowup(@Param("dto") FmsFollowupDto.FollowupCompleteDTO dto); } diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupQueueService.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupQueueService.java index 439f3f28..5c4000c6 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupQueueService.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupQueueService.java @@ -1,5 +1,8 @@ package com.acupuncture.system.service; +import com.acupuncture.common.annotation.DataScope; +import com.acupuncture.common.annotation.DataSource; +import com.acupuncture.common.enums.DataSourceType; import com.acupuncture.system.domain.vo.FmsFollowupVo; import java.util.List; @@ -16,6 +19,7 @@ public interface FmsFollowupQueueService { * 查询公共队列 * @return */ - List queryCommonQueue(String name); + @DataSource(DataSourceType.MASTER) + List queryCommonQueue(String name); } diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupService.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupService.java new file mode 100644 index 00000000..52314790 --- /dev/null +++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/FmsFollowupService.java @@ -0,0 +1,53 @@ +package com.acupuncture.system.service; + +import com.acupuncture.system.domain.dto.FmsFollowupDto; +import com.acupuncture.system.domain.vo.FmsFollowupVo; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Author zzc + * @Package com.acupuncture.system.service + * @Date 2025/2/11 16:46 + * @description: + */ +public interface FmsFollowupService { + /** + * 查询随访队列 + * @param dto + * @return + */ + List queryQueue(FmsFollowupDto.FollowupQueueQueryDTO dto); + + /** + * 查询随访患者 + * @param dto + * @return + */ + List queryPatient(FmsFollowupDto.FollowupPatientQueryDTO dto); + + /** + * 查询随访任务 + * @param dto + * @return + */ + List queryTask(FmsFollowupDto.FollowupTaskQueryDTO dto); + /** + * 标记为失访 + * @param dto + */ + void markAsLost(FmsFollowupDto.FollowupLostDTO dto); + /** + * 完成随访 + * @param dto + */ + void completeFollowup(FmsFollowupDto.FollowupCompleteDTO dto); + + /** + * 定时任务添加随访工单 + */ + void task(); + +} diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/FmsFollowupQueueServiceImpl.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/FmsFollowupQueueServiceImpl.java index fbfe598d..93a06591 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/FmsFollowupQueueServiceImpl.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/FmsFollowupQueueServiceImpl.java @@ -1,5 +1,7 @@ package com.acupuncture.system.service.impl; +import com.acupuncture.common.annotation.DataSource; +import com.acupuncture.common.enums.DataSourceType; import com.acupuncture.system.domain.vo.FmsFollowupVo; import com.acupuncture.system.persist.dao.FmsFollowupDao; import com.acupuncture.system.service.FmsFollowupQueueService; @@ -21,7 +23,8 @@ public class FmsFollowupQueueServiceImpl implements FmsFollowupQueueService { private FmsFollowupDao fmsFollowupDao; @Override - public List queryCommonQueue(String name) { + @DataSource(DataSourceType.MASTER) + public List queryCommonQueue(String name) { return fmsFollowupDao.queryCommonQueue(name); } } diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/FmsFollowupServiceImpl.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/FmsFollowupServiceImpl.java new file mode 100644 index 00000000..feeaef2b --- /dev/null +++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/FmsFollowupServiceImpl.java @@ -0,0 +1,68 @@ +package com.acupuncture.system.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.acupuncture.system.domain.dto.FmsFollowupDto; +import com.acupuncture.system.domain.vo.FmsFollowupVo; +import com.acupuncture.system.persist.dao.FmsFollowupDao; +import com.acupuncture.system.service.FmsFollowupService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author zzc + * @Package com.acupuncture.system.service + * @Date 2025/2/11 16:46 + * @description: + */ +@Service +public class FmsFollowupServiceImpl implements FmsFollowupService { + + @Resource + private FmsFollowupDao fmsFollowupDao; + + + @Override + public List queryQueue(FmsFollowupDto.FollowupQueueQueryDTO dto) { + return fmsFollowupDao.selectQueueList(dto.getId()); + } + + @Override + public List queryPatient(FmsFollowupDto.FollowupPatientQueryDTO dto) { + return fmsFollowupDao.queryPatient(dto.getId()); + } + + @Override + public List queryTask(FmsFollowupDto.FollowupTaskQueryDTO dto) { + return fmsFollowupDao.selectTaskList(dto); + } + + @Override + public void markAsLost(FmsFollowupDto.FollowupLostDTO dto) { + fmsFollowupDao.updateStatusToLost(dto); + } + + @Override + public void completeFollowup(FmsFollowupDto.FollowupCompleteDTO dto) { + fmsFollowupDao.completeFollowup(dto); + } + + @Override + public void task() { + //获取随访患者列表,根据患者出院日时间和队列添加工单 + //1. 查询队列 + List queueList = fmsFollowupDao.selectQueueList(null); + if (CollectionUtil.isEmpty(queueList)) { + //查询公共队列 + List queueResults = fmsFollowupDao.queryCommonQueue(null); + } + //2. 查询队列随访患者列表 + List patientList = fmsFollowupDao.queryPatient(null); + //3. 判断随访类型 + //4. 根据频次和总月数添加 + + } + + +} diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/PmsTreatmentServiceImpl.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/PmsTreatmentServiceImpl.java index a1c7dd8e..d412ae62 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/PmsTreatmentServiceImpl.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/PmsTreatmentServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.pinyin.PinyinUtil; import com.acupuncture.common.exception.base.BaseException; import com.acupuncture.common.utils.SecurityUtils; import com.acupuncture.system.domain.dto.PmsPatientDto; @@ -12,6 +13,7 @@ import com.acupuncture.system.domain.dto.PmsTreatmentDto; import com.acupuncture.system.domain.po.*; import com.acupuncture.system.domain.vo.PmsTreatmentVo; import com.acupuncture.system.persist.dao.PmsTreatmentDao; +import com.acupuncture.system.persist.mapper.FmsPatientQueueRelationMapper; import com.acupuncture.system.persist.mapper.PmsPatientMapper; import com.acupuncture.system.persist.mapper.PmsTreatmentMapper; import com.acupuncture.system.persist.mapper.PmsTreatmentRecordMapper; @@ -45,6 +47,8 @@ public class PmsTreatmentServiceImpl implements PmsTreatmentService { private PmsTreatmentDao pmsTreatmentDao; @Resource private PmsTreatmentRecordMapper pmsTreatmentRecordMapper; + @Resource + private FmsPatientQueueRelationMapper fmsPatientQueueRelationMapper; @Override public void addTreatment(PmsTreatmentDto.TreatmentAdd dto) { @@ -53,19 +57,39 @@ public class PmsTreatmentServiceImpl implements PmsTreatmentService { PmsPatientExample pmsPatientExample = new PmsPatientExample(); pmsPatientExample.createCriteria().andDelFlagEqualTo((byte) 0).andIdCardEqualTo(dto.getIdCard()); List pmsPatients = pmsPatientMapper.selectByExample(pmsPatientExample); + Long patientId = null; if (CollectionUtil.isEmpty(pmsPatients)) { - Long patientId = pmsPatientService.add(BeanUtil.copyProperties(dto, PmsPatientDto.PatientAdd.class)); - pmsTreatment.setPatientId(patientId); - }else { - PmsPatient pmsPatient = pmsPatients.get(0); - pmsTreatment.setPatientId(pmsPatient.getId()); + patientId = pmsPatientService.add(BeanUtil.copyProperties(dto, PmsPatientDto.PatientAdd.class)); + } else { + patientId = pmsPatients.get(0).getId(); + //如有患者档案信息,则需要判断患者是否有随访队列,如果有,则需要删除(先删除后新增) + FmsPatientQueueRelationExample fmsPatientQueueRelationExample = new FmsPatientQueueRelationExample(); + fmsPatientQueueRelationExample.createCriteria().andPatientIdEqualTo(patientId).andDelFlagEqualTo((byte) 0); + FmsPatientQueueRelation fmsPatientQueueRelation = new FmsPatientQueueRelation(); + fmsPatientQueueRelation.setDelFlag((byte) 1); + fmsPatientQueueRelationMapper.updateByExampleSelective(fmsPatientQueueRelation, fmsPatientQueueRelationExample); } - + pmsTreatment.setPatientId(patientId); + pmsTreatment.setPinyinFull(PinyinUtil.getPinyin(pmsTreatment.getName(), "")); + pmsTreatment.setPinyinSimple(PinyinUtil.getFirstLetter(pmsTreatment.getName(), "")); pmsTreatment.setId(IdUtil.getSnowflakeNextId()); pmsTreatment.setDelFlag((byte) 0); pmsTreatment.setCreateBy(SecurityUtils.getUsername()); pmsTreatment.setCreateTime(new Date()); treatmentMapper.insertSelective(pmsTreatment); + + //新增随访队列 + if (CollectionUtil.isNotEmpty(dto.getQueueIdList())) { + for (Long queueId : dto.getQueueIdList()) { + FmsPatientQueueRelation patientQueueRelation = BeanUtil.copyProperties(dto, FmsPatientQueueRelation.class); + patientQueueRelation.setDelFlag((byte) 0); + patientQueueRelation.setCreateBy(SecurityUtils.getUsername()); + patientQueueRelation.setPatientId(patientId); + patientQueueRelation.setQueueId(queueId); + patientQueueRelation.setCreateTime(new Date()); + fmsPatientQueueRelationMapper.insertSelective(patientQueueRelation); + } + } } @Override diff --git a/acupuncture-system/src/main/resources/mapper/dao/FmsFollowupDao.xml b/acupuncture-system/src/main/resources/mapper/dao/FmsFollowupDao.xml index 187132ef..a03d84eb 100644 --- a/acupuncture-system/src/main/resources/mapper/dao/FmsFollowupDao.xml +++ b/acupuncture-system/src/main/resources/mapper/dao/FmsFollowupDao.xml @@ -2,7 +2,7 @@ - select id, name, @@ -22,4 +22,85 @@ + + + + + + + + + UPDATE fms_followup_task + SET status = 2, lost_reason = #{dto.reason} + WHERE patient_id = #{dto.patientId} AND queue_id = #{dto.queueId} + + + + UPDATE fms_followup_task + SET status = 1, followuper = #{dto.followuper}, + followup_time = #{dto.followupTime}, followup_text = #{dto.followupText} + WHERE patient_id = #{dto.patientId} AND queue_id = #{dto.queueId} +