From 85cc8e9cc9d2c063b8297b99d1ef8f9b04e03b4f Mon Sep 17 00:00:00 2001 From: haown <454902499@qq.com> Date: Tue, 13 Aug 2024 09:45:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/TaskStatisticsTypeConstants.java | 24 +++ .../PatientTaskStatistics.java | 55 +++++++ .../PatientTaskStatisticsMapper.java | 60 ++++++++ .../PatientTaskExecuteRecordServiceImpl.java | 9 +- .../IPatientTaskStatisticsService.java | 89 +++++++++++ .../PatientTaskStatisticsServiceImpl.java | 145 ++++++++++++++++++ .../SignPatientManageRouteServiceImpl.java | 36 ++++- ...SignPatientManageRouteNodeServiceImpl.java | 24 +++ .../PatientTaskStatisticsMapper.xml | 125 +++++++++++++++ .../SpecialDiseaseRouteMapper.xml | 4 + .../impl/subscribeTaskServiceImpl.java | 19 ++- 11 files changed, 574 insertions(+), 16 deletions(-) create mode 100644 postdischarge-common/src/main/java/com/xinelu/common/constant/TaskStatisticsTypeConstants.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/domain/patienttaskstatistics/PatientTaskStatistics.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patienttaskstatistics/PatientTaskStatisticsMapper.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskstatistics/IPatientTaskStatisticsService.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskstatistics/impl/PatientTaskStatisticsServiceImpl.java create mode 100644 postdischarge-manage/src/main/resources/mapper/manage/patienttaskstatistics/PatientTaskStatisticsMapper.xml diff --git a/postdischarge-common/src/main/java/com/xinelu/common/constant/TaskStatisticsTypeConstants.java b/postdischarge-common/src/main/java/com/xinelu/common/constant/TaskStatisticsTypeConstants.java new file mode 100644 index 00000000..ff528c4a --- /dev/null +++ b/postdischarge-common/src/main/java/com/xinelu/common/constant/TaskStatisticsTypeConstants.java @@ -0,0 +1,24 @@ +package com.xinelu.common.constant; + +/** + * @description: 任务统计类型字段常量 + * @author: haown + * @create: 2024-08-12 16:58 + **/ +public class TaskStatisticsTypeConstants { + + /** + * 任务总数 + */ + public static final String TASK_NUM = "TASK_NUM"; + + /** + * 任务执行数 + */ + public static final String TASK_EXECUTE_NUM = "TASK_EXECUTE_NUM"; + + /** + * 任务完成 + */ + public static final String TASK_FINISH_NUM = "TASK_FINISH_NUM"; +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/patienttaskstatistics/PatientTaskStatistics.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/patienttaskstatistics/PatientTaskStatistics.java new file mode 100644 index 00000000..31fb240b --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/patienttaskstatistics/PatientTaskStatistics.java @@ -0,0 +1,55 @@ +package com.xinelu.manage.domain.patienttaskstatistics; + +import com.xinelu.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 患者任务统计对象 patient_task_statistics + * + * @author haown + * @date 2024-08-09 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "患者任务统计对象", description = "patient_task_statistics") +public class PatientTaskStatistics extends BaseEntity { + private static final long serialVersionUID=1L; + + /** 患者主键 */ + @ApiModelProperty(value = "患者主键") + private Long patientId; + + /** 患者签约记录表主键 */ + private Long signPatientRecordId; + + /** 服务状态,意向签约:INTENTIONAL_SIGNING,服务中:SERVICE_CENTER,服务结束:SERVICE_END */ + @ApiModelProperty(value = "服务状态,意向签约:INTENTIONAL_SIGNING,服务中:SERVICE_CENTER,服务结束:SERVICE_END") + private String serviceStatus; + + /** 专病路径审核状态,同意:AGREE,不同意:DISAGREE */ + @ApiModelProperty(value = "专病路径审核状态,同意:AGREE,不同意:DISAGREE") + private String routeCheckStatus; + + /** 任务数量 */ + @ApiModelProperty(value = "任务数量") + private BigDecimal taskNum; + + /** 任务执行数量 */ + @ApiModelProperty(value = "任务执行数量") + private BigDecimal taskExecuteNum; + + /** 任务完成数量 */ + @ApiModelProperty(value = "任务完成数量") + private BigDecimal taskFinishNum; + +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patienttaskstatistics/PatientTaskStatisticsMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patienttaskstatistics/PatientTaskStatisticsMapper.java new file mode 100644 index 00000000..10c4b534 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patienttaskstatistics/PatientTaskStatisticsMapper.java @@ -0,0 +1,60 @@ +package com.xinelu.manage.mapper.patienttaskstatistics; + +import com.xinelu.manage.domain.patienttaskstatistics.PatientTaskStatistics; +import java.util.List; + +/** + * 患者任务统计Mapper接口 + * + * @author haown + * @date 2024-08-09 + */ +public interface PatientTaskStatisticsMapper { + /** + * 查询患者任务统计 + * + * @param patientId 患者主键 + * @return 患者任务统计 + */ + PatientTaskStatistics selectPatientTaskStatisticsByPatientId(Long patientId); + + /** + * 查询患者任务统计列表 + * + * @param patientTaskStatistics 患者任务统计 + * @return 患者任务统计集合 + */ + List selectPatientTaskStatisticsList(PatientTaskStatistics patientTaskStatistics); + + /** + * 新增患者任务统计 + * + * @param patientTaskStatistics 患者任务统计 + * @return 结果 + */ + int insertPatientTaskStatistics(PatientTaskStatistics patientTaskStatistics); + + /** + * 修改患者任务统计 + * + * @param patientTaskStatistics 患者任务统计 + * @return 结果 + */ + int updatePatientTaskStatistics(PatientTaskStatistics patientTaskStatistics); + + /** + * 删除患者任务统计 + * + * @param patientId 患者主键 + * @return 结果 + */ + int deletePatientTaskStatisticsByPatientId(Long patientId); + + /** + * 批量删除患者任务统计 + * + * @param patientIds 需要删除的数据主键集合 + * @return 结果 + */ + int deletePatientTaskStatisticsByPatientIds(Long[] patientIds); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskexecuterecord/impl/PatientTaskExecuteRecordServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskexecuterecord/impl/PatientTaskExecuteRecordServiceImpl.java index db6398e4..76811f29 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskexecuterecord/impl/PatientTaskExecuteRecordServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskexecuterecord/impl/PatientTaskExecuteRecordServiceImpl.java @@ -1,12 +1,14 @@ package com.xinelu.manage.service.patienttaskexecuterecord.impl; import com.xinelu.common.annotation.DataScope; +import com.xinelu.common.constant.TaskStatisticsTypeConstants; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.utils.AgeUtil; import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord; import com.xinelu.manage.mapper.patientquestionsubmitresult.PatientQuestionSubmitResultMapper; import com.xinelu.manage.mapper.patienttaskexecuterecord.PatientTaskExecuteRecordMapper; import com.xinelu.manage.service.patienttaskexecuterecord.IPatientTaskExecuteRecordService; +import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService; import com.xinelu.manage.vo.patienttaskexecuterecord.PatientTaskExecuteRecordVO; import org.springframework.stereotype.Service; @@ -27,6 +29,8 @@ public class PatientTaskExecuteRecordServiceImpl implements IPatientTaskExecuteR private PatientTaskExecuteRecordMapper patientTaskExecuteRecordMapper; @Resource private PatientQuestionSubmitResultMapper submitResultMapper; + @Resource + private IPatientTaskStatisticsService patientTaskStatisticsService; /** * 查询患者管理任务执行记录 @@ -60,7 +64,10 @@ public class PatientTaskExecuteRecordServiceImpl implements IPatientTaskExecuteR @Override public int insertPatientTaskExecuteRecord(PatientTaskExecuteRecord patientTaskExecuteRecord) { patientTaskExecuteRecord.setCreateTime(LocalDateTime.now()); - return patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord); + int flag = patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord); + // 任务统计表修改 + patientTaskStatisticsService.updateNum(patientTaskExecuteRecord.getPatientId(), TaskStatisticsTypeConstants.TASK_EXECUTE_NUM, 1); + return flag; } /** diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskstatistics/IPatientTaskStatisticsService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskstatistics/IPatientTaskStatisticsService.java new file mode 100644 index 00000000..b008f30c --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskstatistics/IPatientTaskStatisticsService.java @@ -0,0 +1,89 @@ +package com.xinelu.manage.service.patienttaskstatistics; + +import com.xinelu.manage.domain.patienttaskstatistics.PatientTaskStatistics; +import java.util.List; + +/** + * 患者任务统计Service接口 + * + * @author haown + * @date 2024-08-09 + */ +public interface IPatientTaskStatisticsService { + /** + * 查询患者任务统计 + * + * @param patientId 患者任务统计主键 + * @return 患者任务统计 + */ + PatientTaskStatistics selectPatientTaskStatisticsByPatientId(Long patientId); + + /** + * 查询患者任务统计列表 + * + * @param patientTaskStatistics 患者任务统计 + * @return 患者任务统计集合 + */ + List selectPatientTaskStatisticsList(PatientTaskStatistics patientTaskStatistics); + + /** + * 新增患者任务统计 + * + * @param patientTaskStatistics 患者任务统计 + * @return 结果 + */ + int insertPatientTaskStatistics(PatientTaskStatistics patientTaskStatistics); + + /** + * 修改患者任务统计 + * + * @param patientTaskStatistics 患者任务统计 + * @return 结果 + */ + int updatePatientTaskStatistics(PatientTaskStatistics patientTaskStatistics); + + /** + * 批量删除患者任务统计 + * + * @param patientIds 需要删除的患者任务统计主键集合 + * @return 结果 + */ + int deletePatientTaskStatisticsBySignPatientRecordIds(Long[] patientIds); + + /** + * 删除患者任务统计信息 + * + * @param patientId 患者任务统计主键 + * @return 结果 + */ + int deletePatientTaskStatisticsBySignPatientRecordId(Long patientId); + + /** + * 新增或修改患者任务统计 + * + * @param patientTaskStatistics 患者任务统计 + * @return 结果 + */ + int insertOrUpdate(PatientTaskStatistics patientTaskStatistics); + + /** + * @description 修改任务总数、执行数、完成数 + * @param patientId 签约记录主键 + * @param type 字段种类,TASK_NUM:任务总数,TASK_EXECUTE_NUM: 任务执行数,TASK_FINISH_NUM:任务完成数 + * @param count 数量 + * @return 结果 + * @Author haown + * @Date 2024-08-09 17:43 + */ + int updateNum(Long patientId, String type, Integer count); + + /** + * @description 根据任务表主键列表修改任务总数、执行数、完成数 + * @param signManageRouteNodeIds 任务表主键列表 + * @param type 字段种类,TASK_NUM:任务总数,TASK_EXECUTE_NUM: 任务执行数,TASK_FINISH_NUM:任务完成数 + * @return 结果 + * @Author haown + * @Date 2024-8-12 17:19 + */ + int updateNumByManageRouteNodeIds(List signManageRouteNodeIds, String type); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskstatistics/impl/PatientTaskStatisticsServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskstatistics/impl/PatientTaskStatisticsServiceImpl.java new file mode 100644 index 00000000..b467dfa1 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patienttaskstatistics/impl/PatientTaskStatisticsServiceImpl.java @@ -0,0 +1,145 @@ +package com.xinelu.manage.service.patienttaskstatistics.impl; + +import com.xinelu.common.constant.TaskStatisticsTypeConstants; +import com.xinelu.manage.domain.patienttaskstatistics.PatientTaskStatistics; +import com.xinelu.manage.domain.signpatientrecord.SignPatientRecord; +import com.xinelu.manage.mapper.patienttaskstatistics.PatientTaskStatisticsMapper; +import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper; +import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService; +import java.math.BigDecimal; +import java.util.List; +import javax.annotation.Resource; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.stereotype.Service; + +/** + * 患者任务统计Service业务层处理 + * + * @author haown + * @date 2024-08-09 + */ +@Service +public class PatientTaskStatisticsServiceImpl implements IPatientTaskStatisticsService { + @Resource + private PatientTaskStatisticsMapper patientTaskStatisticsMapper; + @Resource + private SignPatientRecordMapper signPatientRecordMapper; + + /** + * 查询患者任务统计 + * + * @param patientId 患者任务统计主键 + * @return 患者任务统计 + */ + @Override + public PatientTaskStatistics selectPatientTaskStatisticsByPatientId(Long patientId) { + return patientTaskStatisticsMapper.selectPatientTaskStatisticsByPatientId(patientId); + } + + /** + * 查询患者任务统计列表 + * + * @param patientTaskStatistics 患者任务统计 + * @return 患者任务统计 + */ + @Override + public List selectPatientTaskStatisticsList(PatientTaskStatistics patientTaskStatistics) { + return patientTaskStatisticsMapper.selectPatientTaskStatisticsList(patientTaskStatistics); + } + + /** + * 新增患者任务统计 + * + * @param patientTaskStatistics 患者任务统计 + * @return 结果 + */ + @Override + public int insertPatientTaskStatistics(PatientTaskStatistics patientTaskStatistics) { + return patientTaskStatisticsMapper.insertPatientTaskStatistics(patientTaskStatistics); + } + + /** + * 修改患者任务统计 + * + * @param patientTaskStatistics 患者任务统计 + * @return 结果 + */ + @Override + public int updatePatientTaskStatistics(PatientTaskStatistics patientTaskStatistics) { + return patientTaskStatisticsMapper.updatePatientTaskStatistics(patientTaskStatistics); + } + + /** + * 批量删除患者任务统计 + * + * @param signPatientRecordIds 需要删除的患者任务统计主键 + * @return 结果 + */ + @Override + public int deletePatientTaskStatisticsBySignPatientRecordIds(Long[] signPatientRecordIds) { + return patientTaskStatisticsMapper.deletePatientTaskStatisticsByPatientIds(signPatientRecordIds); + } + + /** + * 删除患者任务统计信息 + * + * @param signPatientRecordId 患者任务统计主键 + * @return 结果 + */ + @Override + public int deletePatientTaskStatisticsBySignPatientRecordId(Long signPatientRecordId) { + return patientTaskStatisticsMapper.deletePatientTaskStatisticsByPatientId(signPatientRecordId); + } + + @Override public int insertOrUpdate(PatientTaskStatistics patientTaskStatistics) { + SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(patientTaskStatistics.getSignPatientRecordId()); + if (ObjectUtils.isNotEmpty(signPatientRecord)) { + PatientTaskStatistics patientTask = patientTaskStatisticsMapper.selectPatientTaskStatisticsByPatientId(patientTaskStatistics.getPatientId()); + if (ObjectUtils.isEmpty(patientTask)) { + // 插入数据 + patientTaskStatisticsMapper.insertPatientTaskStatistics(patientTaskStatistics); + } else { + // 修改数据 + patientTask.setServiceStatus(signPatientRecord.getServiceStatus()); + patientTask.setRouteCheckStatus(signPatientRecord.getRouteCheckStatus()); + patientTask.setTaskNum(patientTask.getTaskNum().add(patientTaskStatistics.getTaskNum())); + patientTask.setTaskExecuteNum(patientTask.getTaskExecuteNum().add(patientTaskStatistics.getTaskExecuteNum())); + patientTask.setTaskFinishNum(patientTask.getTaskFinishNum().add(patientTaskStatistics.getTaskFinishNum())); + patientTaskStatisticsMapper.updatePatientTaskStatistics(patientTask); + } + } + + return 0; + } + + /** + * @description 修改任务总数、执行数、完成数 + * @param patientId 签约记录主键 + * @param type 字段种类,TASK_NUM:任务总数,TASK_EXECUTE_NUM: 任务执行数,TASK_FINISH_NUM:任务完成数 + * @param count 数量 + * @return 结果 + * @Author haown + * @Date 2024-08-09 17:43 + */ + @Override + public int updateNum(Long patientId, String type, Integer count) { + PatientTaskStatistics patientTaskStatistics = patientTaskStatisticsMapper.selectPatientTaskStatisticsByPatientId(patientId); + switch (type) { + case TaskStatisticsTypeConstants.TASK_NUM: + patientTaskStatistics.setTaskNum(patientTaskStatistics.getTaskNum().add(BigDecimal.valueOf(count))); + break; + case TaskStatisticsTypeConstants.TASK_EXECUTE_NUM: + patientTaskStatistics.setTaskExecuteNum(patientTaskStatistics.getTaskExecuteNum().add(BigDecimal.valueOf(count))); + break; + case TaskStatisticsTypeConstants.TASK_FINISH_NUM: + patientTaskStatistics.setTaskFinishNum(patientTaskStatistics.getTaskFinishNum().add(BigDecimal.valueOf(count))); + break; + } + return patientTaskStatisticsMapper.updatePatientTaskStatistics(patientTaskStatistics); + } + + @Override public int updateNumByManageRouteNodeIds(List signManageRouteNodeIds, String type) { + + return 0; + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java index a712a338..b925d520 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java @@ -13,9 +13,21 @@ import com.xinelu.common.config.AliYunSmsTwoConfig; import com.xinelu.common.constant.TaskContentConstants; import com.xinelu.common.constant.TaskCreateTypeConstant; import com.xinelu.common.constant.TaskNodeTypeConstants; +import com.xinelu.common.constant.TaskStatisticsTypeConstants; import com.xinelu.common.constant.TemplateTypeConstants; import com.xinelu.common.core.domain.AjaxResult; -import com.xinelu.common.enums.*; +import com.xinelu.common.enums.ErrorStatusEnum; +import com.xinelu.common.enums.NodeExecuteResultStatusEnum; +import com.xinelu.common.enums.NodeExecuteStatusEnum; +import com.xinelu.common.enums.PhoneConnectStatusEnum; +import com.xinelu.common.enums.PhoneMessageRemindEnum; +import com.xinelu.common.enums.PhoneRedialTimesEnum; +import com.xinelu.common.enums.RouteNodeNameEnum; +import com.xinelu.common.enums.ShortMessageTypeEnum; +import com.xinelu.common.enums.SmsErrorCodeEnum; +import com.xinelu.common.enums.TaskContentEnum; +import com.xinelu.common.enums.TaskCreateTypeEnum; +import com.xinelu.common.enums.TaskNodeTypeEnum; import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.AgeUtil; import com.xinelu.common.utils.SecurityUtils; @@ -50,6 +62,7 @@ import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMap import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper; import com.xinelu.manage.mapper.signroutetriggercondition.SignRouteTriggerConditionMapper; +import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService; import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService; import com.xinelu.manage.service.questioninfo.IQuestionInfoService; import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService; @@ -71,6 +84,16 @@ import com.xinelu.manage.vo.specialdiseasenode.RouteTaskAuditVo; import com.xinelu.manage.vo.specialdiseasenode.SpecialDiseaseNodeAuditVo; import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseChildRouteAuditVo; import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteAuditVo; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; +import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -78,13 +101,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; - /** * 签约患者管理任务路径Service业务层处理 @@ -135,6 +151,8 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout private PhoneDialRecordMapper phoneDialRecordMapper; @Resource private ShortMessageSendRecordMapper shortMessageSendRecordMapper; + @Resource + private IPatientTaskStatisticsService patientTaskStatisticsService; private static final String SUCCESS = "OK"; @@ -877,6 +895,8 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout patientTaskExecuteRecord.setCreateBy(routeHandlePerson); patientTaskExecuteRecord.setCreateTime(time); if (patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord) > 0) { + // 任务统计表修改 + patientTaskStatisticsService.updateNum(dto.getPatientId(), TaskStatisticsTypeConstants.TASK_EXECUTE_NUM, 1); return patientTaskExecuteRecord.getId(); } else { throw new ServiceException("新增患者管理任务记录失败"); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/impl/SignPatientManageRouteNodeServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/impl/SignPatientManageRouteNodeServiceImpl.java index bde679d2..dcbe02c3 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/impl/SignPatientManageRouteNodeServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/impl/SignPatientManageRouteNodeServiceImpl.java @@ -24,6 +24,7 @@ import com.xinelu.manage.domain.patientinfo.PatientAllInfoViewUppercase; import com.xinelu.manage.domain.patientinfo.PatientInfo; import com.xinelu.manage.domain.patientnodeparamscurrent.PatientNodeParamsCurrent; import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord; +import com.xinelu.manage.domain.patienttaskstatistics.PatientTaskStatistics; import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord; import com.xinelu.manage.domain.propagandainfo.PropagandaInfo; import com.xinelu.manage.domain.scriptInfo.ScriptInfo; @@ -57,6 +58,7 @@ import com.xinelu.manage.mapper.specialdiseaseroute.SpecialDiseaseRouteMapper; import com.xinelu.manage.mapper.specialdiseasetriggercondition.SpecialDiseaseTriggerConditionMapper; import com.xinelu.manage.mapper.textmessage.TextMessageMapper; import com.xinelu.manage.mapper.wechattemplate.WechatTemplateMapper; +import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService; import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService; import com.xinelu.manage.service.questioninfo.IQuestionInfoService; import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService; @@ -146,6 +148,8 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage private PatientQuestionSubmitResultMapper patientQuestionSubmitResultMapper; @Resource private PatientTaskExecuteRecordMapper patientTaskExecuteRecordMapper; + @Resource + private IPatientTaskStatisticsService patientTaskStatisticsService; /** * 查询签约患者管理任务路径节点 @@ -777,6 +781,17 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage manageNode.setRouteCheckPerson(SecurityUtils.getLoginUser().getUser().getNickName()); signPatientManageRouteNodeMapper.updateSignPatientManageRouteNode(manageNode); }); + + // 任务统计表中插入数据 + if (CollectionUtils.isNotEmpty(manageNodeList)) { + patientTaskStatisticsService.insertOrUpdate(PatientTaskStatistics.builder() + .signPatientRecordId(signRecordId) + .patientId(manageRouteList.get(0).getPatientId()) + .taskNum(BigDecimal.valueOf(manageNodeList.size())) + .taskExecuteNum(BigDecimal.ZERO) + .taskFinishNum(BigDecimal.ZERO) + .build()); + } } } @@ -1158,6 +1173,15 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage // 保存 if(CollectionUtils.isNotEmpty(nodeSaveList)) { signPatientManageRouteNodeMapper.insertBatch(nodeSaveList); + + // 任务统计表中插入数据 + patientTaskStatisticsService.insertOrUpdate(PatientTaskStatistics.builder() + .signPatientRecordId(signPatientManageRoute.getSignPatientRecordId()) + .patientId(patientId) + .taskNum(BigDecimal.valueOf(nodeSaveList.size())) + .taskExecuteNum(BigDecimal.ZERO) + .taskFinishNum(BigDecimal.ZERO) + .build()); } } diff --git a/postdischarge-manage/src/main/resources/mapper/manage/patienttaskstatistics/PatientTaskStatisticsMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/patienttaskstatistics/PatientTaskStatisticsMapper.xml new file mode 100644 index 00000000..50b10fb6 --- /dev/null +++ b/postdischarge-manage/src/main/resources/mapper/manage/patienttaskstatistics/PatientTaskStatisticsMapper.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + select patient_id, sign_patient_record_id, service_status, route_check_status, task_num, task_execute_num, task_finish_num from patient_task_statistics + + + + + + + + insert into patient_task_statistics + + sign_patient_record_id, + + patient_id, + + service_status, + + route_check_status, + + task_num, + + task_execute_num, + + task_finish_num, + + + + #{signPatientRecordId}, + + #{patientId}, + + #{serviceStatus}, + + #{routeCheckStatus}, + + #{taskNum}, + + #{taskExecuteNum}, + + #{taskFinishNum}, + + + + + + update patient_task_statistics + + sign_patient_record_id = + #{signPatientRecordId}, + + service_status = + #{serviceStatus}, + + route_check_status = + #{routeCheckStatus}, + + task_num = + #{taskNum}, + + task_execute_num = + #{taskExecuteNum}, + + task_finish_num = + #{taskFinishNum}, + + + where patient_id = #{patientId} + + + + delete from patient_task_statistics where patient_id = #{patientId} + + + + delete from patient_task_statistics where patient_id in + + #{patientId} + + + \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/specialdiseaseroute/SpecialDiseaseRouteMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/specialdiseaseroute/SpecialDiseaseRouteMapper.xml index 0f0ffa07..2fc840f1 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/specialdiseaseroute/SpecialDiseaseRouteMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/specialdiseaseroute/SpecialDiseaseRouteMapper.xml @@ -452,10 +452,14 @@ dt.department_code, ( SELECT COUNT(1) FROM special_disease_route a + left join special_disease_route_package sdrp ON a.id = sdrp.route_id WHERE a.department_id = dt.id and (a.parent_route_id = 0 or a.parent_route_id is null) AND a.release_status= #{releaseStatus} + + AND sdrp.service_package_id= #{servicePackageId} + ) AS countNum from department dt left join special_disease_route sdr on dt.id = sdr.department_id left join special_disease_route_package sdrp ON sdr.id = sdrp.route_id diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java index 41e99514..82c0ee74 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java @@ -2,21 +2,20 @@ package com.xinelu.quartz.service.impl; import com.xinelu.common.config.PushMessageRestrictions; import com.xinelu.common.config.WeChatAppletChatConfig; -import com.xinelu.common.enums.*; -import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.common.enums.ErrorStatusEnum; +import com.xinelu.common.enums.NodeExecuteResultStatusEnum; +import com.xinelu.common.enums.NodeExecuteStatusEnum; +import com.xinelu.common.enums.RouteNodeNameEnum; +import com.xinelu.common.enums.SubscribeStatusEnum; import com.xinelu.manage.domain.subscribemessagesendrecord.SubscribeMessageSendRecord; import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; import com.xinelu.manage.mapper.subscribemessagesendrecord.SubscribeMessageSendRecordMapper; +import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService; import com.xinelu.manage.vo.subscribemessagesendrecord.RecordNum; import com.xinelu.mobile.mapper.homepage.HomePageMapper; import com.xinelu.mobile.utils.WeChatOfficialAccountUtils; import com.xinelu.mobile.vo.wechatofficialaccountcallback.PatientVO; import com.xinelu.quartz.service.SubscribeTaskService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; @@ -24,6 +23,10 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import javax.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; /** * @Description 消息推送定时任务业务层 @@ -46,6 +49,8 @@ public class subscribeTaskServiceImpl implements SubscribeTaskService { private PushMessageRestrictions pushMessageRestrictions; @Resource private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper; + @Resource + private IPatientTaskStatisticsService patientTaskStatisticsService; /** * 推送任务组装数据