路径审核返回触发条件是否满足。

This commit is contained in:
haown 2024-07-16 14:57:24 +08:00
parent 107b369de8
commit 76b34dd68f
4 changed files with 46 additions and 17 deletions

View File

@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
* @description: 路径审核传对象 * @description: 路径审核传对象
* @author: haown * @author: haown
* @create: 2024-06-26 13:41 * @create: 2024-06-26 13:41
**/ **/

View File

@ -93,10 +93,10 @@ public interface ISignPatientManageRouteService {
/** /**
* 路径审核->路径信息获取主路径及子路径信息及节点 * 路径审核->路径信息获取主路径及子路径信息及节点
* @param patientId 患者主键 * @param signRecordId 签约记录主键
* @return 主路径信息及节点子路径信息及节点 * @return 主路径信息及节点子路径信息及节点
*/ */
SpecialDiseaseRouteAuditVo getRouteAuditInfo(Long patientId); SpecialDiseaseRouteAuditVo getRouteAuditInfo(Long signRecordId);
/** /**
* 路径审核->路径审核节点详细信息 * 路径审核->路径审核节点详细信息

View File

@ -7,7 +7,13 @@ import com.xinelu.common.constant.TaskCreateTypeConstant;
import com.xinelu.common.constant.TaskNodeTypeConstants; import com.xinelu.common.constant.TaskNodeTypeConstants;
import com.xinelu.common.constant.TemplateTypeConstants; import com.xinelu.common.constant.TemplateTypeConstants;
import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.enums.*; import com.xinelu.common.enums.NodeExecuteStatusEnum;
import com.xinelu.common.enums.PhoneConnectStatusEnum;
import com.xinelu.common.enums.PhoneMessageRemindEnum;
import com.xinelu.common.enums.RouteNodeNameEnum;
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.exception.ServiceException;
import com.xinelu.common.utils.AgeUtil; import com.xinelu.common.utils.AgeUtil;
import com.xinelu.common.utils.SecurityUtils; import com.xinelu.common.utils.SecurityUtils;
@ -37,8 +43,6 @@ import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMap
import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper; import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper;
import com.xinelu.manage.mapper.signroutetriggercondition.SignRouteTriggerConditionMapper; import com.xinelu.manage.mapper.signroutetriggercondition.SignRouteTriggerConditionMapper;
import com.xinelu.manage.mapper.textmessage.TextMessageMapper;
import com.xinelu.manage.mapper.wechattemplate.WechatTemplateMapper;
import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService; import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService;
import com.xinelu.manage.service.questioninfo.IQuestionInfoService; import com.xinelu.manage.service.questioninfo.IQuestionInfoService;
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService; import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService;
@ -57,17 +61,20 @@ import com.xinelu.manage.vo.specialdiseasenode.RouteTaskAuditVo;
import com.xinelu.manage.vo.specialdiseasenode.SpecialDiseaseNodeAuditVo; import com.xinelu.manage.vo.specialdiseasenode.SpecialDiseaseNodeAuditVo;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseChildRouteAuditVo; import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseChildRouteAuditVo;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteAuditVo; import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteAuditVo;
import java.time.LocalDateTime;
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 org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* 签约患者管理任务路径Service业务层处理 * 签约患者管理任务路径Service业务层处理
@ -373,6 +380,11 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
return AjaxResult.success(signPatientManageRouteMapper.selectSignPatientManageRouteNode(manageRouteNodeId)); return AjaxResult.success(signPatientManageRouteMapper.selectSignPatientManageRouteNode(manageRouteNodeId));
} }
/**
* 路径审核->路径信息获取主路径及子路径信息及节点
* @param signRecordId 签约记录主键
* @return 主路径信息及节点子路径信息及节点
*/
@Override public SpecialDiseaseRouteAuditVo getRouteAuditInfo(Long signRecordId) { @Override public SpecialDiseaseRouteAuditVo getRouteAuditInfo(Long signRecordId) {
SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signRecordId); SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signRecordId);
if (ObjectUtils.isEmpty(signPatientRecord)) { if (ObjectUtils.isEmpty(signPatientRecord)) {
@ -402,15 +414,21 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
}); });
// 计算子路径节点执行时间 // 计算子路径节点执行时间
specialDiseaseRouteAuditVo.getChildRouteList() specialDiseaseRouteAuditVo.getChildRouteList()
.forEach(childRoute -> childRoute.getNodeList() .forEach(childRoute -> {
// 判断触发条件是否满足
boolean satisfy = signPatientManageRouteNodeService.getTriggerConditon(childRoute.getId(), signPatientRecord.getPatientId());
childRoute.setConditionSatisfyStatus(satisfy);
childRoute.getNodeList()
.forEach(childNode -> childNode.setExecuteTime( .forEach(childNode -> childNode.setExecuteTime(
iSignPatientManageRouteNodeService.getExecuteTime(childNode.getExecutionTime(), childNode.getRouteNodeName(), childNode.getRouteNodeDay(), patientVisitRecord)))); iSignPatientManageRouteNodeService.getExecuteTime(childNode.getExecutionTime(), childNode.getRouteNodeName(), childNode.getRouteNodeDay(), patientVisitRecord)));
});
// 查询手动创建的路径 // 查询手动创建的路径
manageRouteQuery.setTaskCreateType(TaskCreateTypeConstant.MANUAL_CREATE); manageRouteQuery.setTaskCreateType(TaskCreateTypeConstant.MANUAL_CREATE);
List<SignPatientManageRoute> manualRouteList = signPatientManageRouteMapper.selectSignPatientManageRouteList(manageRouteQuery); List<SignPatientManageRoute> manualRouteList = signPatientManageRouteMapper.selectSignPatientManageRouteList(manageRouteQuery);
if (CollectionUtils.isNotEmpty(manualRouteList)) { if (CollectionUtils.isNotEmpty(manualRouteList)) {
// 查询节点信息组装成返回的数据类型 // 查询节点信息组装成返回的数据类型
manualRouteList.forEach(route -> { manualRouteList.forEach(route -> {
boolean satisfy = signPatientManageRouteNodeService.getSignTriggerConditon(route.getId(), signPatientRecord.getPatientId());
// 查询节点 // 查询节点
List<SpecialDiseaseNodeAuditVo> nodeList = signPatientManageRouteNodeMapper.selectByRouteId(route.getId()); List<SpecialDiseaseNodeAuditVo> nodeList = signPatientManageRouteNodeMapper.selectByRouteId(route.getId());
nodeList.forEach(node-> { nodeList.forEach(node-> {
@ -418,9 +436,11 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
node.setExecuteTime(iSignPatientManageRouteNodeService.getExecuteTime(node.getExecutionTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord)); node.setExecuteTime(iSignPatientManageRouteNodeService.getExecuteTime(node.getExecutionTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord));
}); });
specialDiseaseRouteAuditVo.getChildRouteList().add( specialDiseaseRouteAuditVo.getChildRouteList().add(
SpecialDiseaseChildRouteAuditVo.builder().diseaseTypeName(route.getDiseaseTypeName()) SpecialDiseaseChildRouteAuditVo.builder()
.diseaseTypeName(route.getDiseaseTypeName())
.routeName(route.getRouteName()) .routeName(route.getRouteName())
.diseaseTypeId(route.getDiseaseTypeId()) .diseaseTypeId(route.getDiseaseTypeId())
.conditionSatisfyStatus(satisfy)
.nodeList(nodeList).build() .nodeList(nodeList).build()
); );
}); });
@ -454,9 +474,9 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
for (Long routeId : groupByRouteId.keySet()) { for (Long routeId : groupByRouteId.keySet()) {
if (Objects.equals(routeId, signPatientManageRoute.getRouteId())) { if (Objects.equals(routeId, signPatientManageRoute.getRouteId())) {
// 主路径不做处理 // 主路径不做处理
routeSatisfyMap.put(routeId, null); routeSatisfyMap.put(routeId, true);
} else { } else {
boolean satisfy = signPatientManageRouteNodeService.getTriggerConditon(routeId, signPatientRecord.getId()); boolean satisfy = signPatientManageRouteNodeService.getTriggerConditon(routeId, signPatientRecord.getPatientId());
routeSatisfyMap.put(routeId, satisfy); routeSatisfyMap.put(routeId, satisfy);
} }
} }
@ -543,9 +563,15 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
List<SignPatientManageRoute> createRouteList = signPatientManageRouteMapper.selectSignPatientManageRouteList(manageRouteQuery); List<SignPatientManageRoute> createRouteList = signPatientManageRouteMapper.selectSignPatientManageRouteList(manageRouteQuery);
if (CollectionUtils.isNotEmpty(createRouteList)) { if (CollectionUtils.isNotEmpty(createRouteList)) {
List<Long> manageRouteIds = createRouteList.stream().map(SignPatientManageRoute::getId).collect(Collectors.toList()); List<Long> manageRouteIds = createRouteList.stream().map(SignPatientManageRoute::getId).collect(Collectors.toList());
for (Long routeId : manageRouteIds) {
boolean satisfy = signPatientManageRouteNodeService.getSignTriggerConditon(routeId, signPatientRecord.getPatientId());
routeSatisfyMap.put(routeId, satisfy);
}
List<SignPatientManageNodeAuditVo> manageNodeList = signPatientManageRouteNodeMapper.selectAuditNodeInfo(manageRouteIds); List<SignPatientManageNodeAuditVo> manageNodeList = signPatientManageRouteNodeMapper.selectAuditNodeInfo(manageRouteIds);
// 根据node去替换模板信息 // 根据node去替换模板信息
manageNodeList.forEach(manageNode -> { manageNodeList.forEach(manageNode -> {
// 判断触发条件是否满足
manageNode.setConditionSatisfyStatus(routeSatisfyMap.get(manageNode.getManageRouteId()));
manageNode.setRouteNodeNameCN(RouteNodeNameEnum.getNameByInfo(manageNode.getRouteNodeName()).getName()); manageNode.setRouteNodeNameCN(RouteNodeNameEnum.getNameByInfo(manageNode.getRouteNodeName()).getName());
JSONObject templateDetail = new JSONObject(); JSONObject templateDetail = new JSONObject();
if (StringUtils.isNotBlank(manageNode.getTaskNodeType())) { if (StringUtils.isNotBlank(manageNode.getTaskNodeType())) {

View File

@ -37,6 +37,9 @@ public class SpecialDiseaseChildRouteAuditVo {
@ApiModelProperty(value = "病种名称") @ApiModelProperty(value = "病种名称")
private String diseaseTypeName; private String diseaseTypeName;
@ApiModelProperty("触发条件满足情况")
private Boolean conditionSatisfyStatus;
/** /**
* 节点列表 * 节点列表
*/ */