diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/scriptInfo/ScriptInfo.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/scriptInfo/ScriptInfo.java index ae4a3c94..b672cfef 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/scriptInfo/ScriptInfo.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/scriptInfo/ScriptInfo.java @@ -135,6 +135,11 @@ public class ScriptInfo extends BaseEntity { private String flowScheme; + /** + * 公共库模板id + */ + private Long sourceTemplateId; + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signroutetriggercondition/SignRouteTriggerCondition.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signroutetriggercondition/SignRouteTriggerCondition.java index 7b1f60a1..9aa7495a 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signroutetriggercondition/SignRouteTriggerCondition.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signroutetriggercondition/SignRouteTriggerCondition.java @@ -62,6 +62,13 @@ public class SignRouteTriggerCondition extends BaseEntity { @Excel(name = "排序") private Integer triggerConditionSort; + /** + * and、or,说明:如果为or,则根据排序同前面条件或运算 + */ + @ApiModelProperty(value = "and、or,说明:如果为or,则根据排序同前面条件或运算") + @Excel(name = "and、or,说明:如果为or,则根据排序同前面条件或运算") + private String triggerLogic; + /** 备注信息 */ @ApiModelProperty(value = "备注信息") @Excel(name = "备注信息") diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/textmessage/TextMessage.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/textmessage/TextMessage.java index 607a38a8..18daf796 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/textmessage/TextMessage.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/textmessage/TextMessage.java @@ -107,6 +107,11 @@ public class TextMessage extends BaseEntity { @Excel(name = "短信备注") private String textMessageRemark; + /** + * 公共模板库id + */ + private Long sourceTemplateId; + @Override public String toString() { diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/wechattemplate/WechatTemplate.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/wechattemplate/WechatTemplate.java index 272b2b8c..b22a5d0b 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/wechattemplate/WechatTemplate.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/wechattemplate/WechatTemplate.java @@ -100,6 +100,8 @@ public class WechatTemplate extends BaseEntity { @Excel(name = "模板备注") private String templateRemark; + private Long sourceTemplateId; + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/knowledgebase/KnowledgeBaseSaveDto.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/knowledgebase/KnowledgeBaseSaveDto.java index 03c2a712..bd4a6906 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/knowledgebase/KnowledgeBaseSaveDto.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/knowledgebase/KnowledgeBaseSaveDto.java @@ -1,6 +1,7 @@ package com.xinelu.manage.dto.knowledgebase; import io.swagger.annotations.ApiModelProperty; +import java.util.List; import lombok.Data; /** @@ -14,7 +15,7 @@ public class KnowledgeBaseSaveDto { * 模板id */ @ApiModelProperty(value = "公共库模板id") - private Long sourceTemplateId; + private List sourceTemplateIds; /** * 知识库类型 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/operationinfo/BaseInfoQueryDto.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/operationinfo/BaseInfoQueryDto.java index 1d0c5a21..ed0c61ff 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/operationinfo/BaseInfoQueryDto.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/operationinfo/BaseInfoQueryDto.java @@ -56,4 +56,13 @@ public class BaseInfoQueryDto { */ @ApiModelProperty(value = "微信模板名称") private String wechatTemplateName; + + /** + * 短信模板名称 + */ + @ApiModelProperty(value = "短信模板名称") + private String textMessageName; + + @ApiModelProperty(value = "短信状态,上架:GROUNDING,下架:OFF_SHELF") + private String textMessageStatus; } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/textmessage/TextMessageTaskDTO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/textmessage/TextMessageTaskDTO.java index 82ed8fbd..1f0b4ea1 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/textmessage/TextMessageTaskDTO.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/textmessage/TextMessageTaskDTO.java @@ -113,6 +113,11 @@ public class TextMessageTaskDTO extends BaseEntity { @Excel(name = "短信备注") private String textMessageRemark; + /** + * 公共模板库id + */ + private Long sourceTemplateId; + @ApiModelProperty(value = "适用任务类型字典表ids") private Long[] suitTaskTypeIds; } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/wechattemplate/WechatTemplateTaskDTO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/wechattemplate/WechatTemplateTaskDTO.java index cfd15816..b7fb0d7a 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/wechattemplate/WechatTemplateTaskDTO.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/wechattemplate/WechatTemplateTaskDTO.java @@ -108,6 +108,11 @@ public class WechatTemplateTaskDTO extends BaseEntity { @Excel(name = "模板备注") private String templateRemark; + /** + * 公共知识库模板id + */ + private Long sourceTemplateId; + @ApiModelProperty(value = "适用任务类型字典表ids") private Long[] suitTaskTypeIds; } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/textmessage/TextMessageMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/textmessage/TextMessageMapper.java index d881bb27..55cc0c28 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/textmessage/TextMessageMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/textmessage/TextMessageMapper.java @@ -79,6 +79,8 @@ public interface TextMessageMapper { */ int insertTextMessageSuitTasks(List tasks); + List selectSuitTaskList(TextMessageSuitTask textMessageSuitTask); + /** * 批量删除短信模板适用任务类型 */ diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/wechattemplatesuittask/WechatTemplateSuitTaskMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/wechattemplatesuittask/WechatTemplateSuitTaskMapper.java new file mode 100644 index 00000000..dc852ec8 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/wechattemplatesuittask/WechatTemplateSuitTaskMapper.java @@ -0,0 +1,61 @@ +package com.xinelu.manage.mapper.wechattemplatesuittask; + +import com.xinelu.manage.domain.wechattemplatesuittask.WechatTemplateSuitTask; +import java.util.List; + + +/** + * 微信模板与适用任务类型关系Mapper接口 + * + * @author xinelu + * @date 2024-07-09 + */ +public interface WechatTemplateSuitTaskMapper { + /** + * 查询微信模板与适用任务类型关系 + * + * @param id 微信模板与适用任务类型关系主键 + * @return 微信模板与适用任务类型关系 + */ + WechatTemplateSuitTask selectWechatTemplateSuitTaskById(Long id); + + /** + * 查询微信模板与适用任务类型关系列表 + * + * @param wechatTemplateSuitTask 微信模板与适用任务类型关系 + * @return 微信模板与适用任务类型关系集合 + */ + List selectWechatTemplateSuitTaskList(WechatTemplateSuitTask wechatTemplateSuitTask); + + /** + * 新增微信模板与适用任务类型关系 + * + * @param wechatTemplateSuitTask 微信模板与适用任务类型关系 + * @return 结果 + */ + int insertWechatTemplateSuitTask(WechatTemplateSuitTask wechatTemplateSuitTask); + + /** + * 修改微信模板与适用任务类型关系 + * + * @param wechatTemplateSuitTask 微信模板与适用任务类型关系 + * @return 结果 + */ + int updateWechatTemplateSuitTask(WechatTemplateSuitTask wechatTemplateSuitTask); + + /** + * 删除微信模板与适用任务类型关系 + * + * @param id 微信模板与适用任务类型关系主键 + * @return 结果 + */ + int deleteWechatTemplateSuitTaskById(Long id); + + /** + * 批量删除微信模板与适用任务类型关系 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteWechatTemplateSuitTaskByIds(Long[] ids); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/knowledgebase/impl/KnowledgeBaseServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/knowledgebase/impl/KnowledgeBaseServiceImpl.java index 9172dc54..d7c55653 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/knowledgebase/impl/KnowledgeBaseServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/knowledgebase/impl/KnowledgeBaseServiceImpl.java @@ -8,24 +8,38 @@ import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.PageUtils; import com.xinelu.common.utils.StringUtils; import com.xinelu.common.utils.bean.BeanUtils; +import com.xinelu.manage.domain.departmentdiseasetype.DepartmentDiseaseType; import com.xinelu.manage.domain.operationInfo.OperationInfo; import com.xinelu.manage.domain.scriptInfo.ScriptInfo; +import com.xinelu.manage.domain.textmessage.TextMessage; +import com.xinelu.manage.domain.textmessagesuittask.TextMessageSuitTask; +import com.xinelu.manage.domain.wechattemplate.WechatTemplate; +import com.xinelu.manage.domain.wechattemplatesuittask.WechatTemplateSuitTask; import com.xinelu.manage.dto.knowledgebase.KnowledgeBaseSaveDto; import com.xinelu.manage.dto.operationinfo.BaseInfoQueryDto; import com.xinelu.manage.dto.operationinfo.OperationInfoDto; import com.xinelu.manage.dto.script.ScriptInfoDto; import com.xinelu.manage.dto.textmessage.TextMessageDTO; +import com.xinelu.manage.dto.textmessage.TextMessageTaskDTO; import com.xinelu.manage.dto.wechattemplate.WechatTemplateDTO; +import com.xinelu.manage.dto.wechattemplate.WechatTemplateTaskDTO; import com.xinelu.manage.mapper.operationInfo.OperationInfoMapper; import com.xinelu.manage.mapper.scriptInfo.ScriptInfoMapper; import com.xinelu.manage.mapper.textmessage.TextMessageMapper; import com.xinelu.manage.mapper.wechattemplate.WechatTemplateMapper; +import com.xinelu.manage.mapper.wechattemplatesuittask.WechatTemplateSuitTaskMapper; +import com.xinelu.manage.service.departmentdiseasetype.IDepartmentDiseaseTypeService; import com.xinelu.manage.service.knowledgebase.IKnowledgeBaseService; import com.xinelu.manage.service.operationInfo.IOperationInfoService; +import com.xinelu.manage.service.scriptInfo.IScriptInfoService; +import com.xinelu.manage.service.textmessage.ITextMessageService; +import com.xinelu.manage.service.wechattemplate.IWechatTemplateService; import com.xinelu.manage.vo.textmessage.TextMessageVO; import com.xinelu.manage.vo.wechattemplate.WechatTemplateTaskVO; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; @@ -44,9 +58,19 @@ public class KnowledgeBaseServiceImpl implements IKnowledgeBaseService { @Resource private ScriptInfoMapper scriptInfoMapper; @Resource + private IScriptInfoService scriptInfoService; + @Resource private WechatTemplateMapper wechatTemplateMapper; @Resource + private IWechatTemplateService wechatTemplateService; + @Resource + private WechatTemplateSuitTaskMapper wechatTemplateSuitTaskMapper; + @Resource private TextMessageMapper textMessageMapper; + @Resource + private ITextMessageService textMessageService; + @Resource + private IDepartmentDiseaseTypeService departmentDiseaseTypeService; @Override public TableDataInfo getBaseInfoList(BaseInfoQueryDto baseInfoQueryDto) { @@ -112,15 +136,144 @@ public class KnowledgeBaseServiceImpl implements IKnowledgeBaseService { if (ObjectUtils.isEmpty(knowledgeBaseSaveDto.getDepartmentId())) { throw new ServiceException("请选择科室"); } + if (CollectionUtils.isEmpty(knowledgeBaseSaveDto.getSourceTemplateIds())) { + throw new ServiceException("请选择知识库信息"); + } switch(knowledgeBaseSaveDto.getType()) { case KnowledgeBaseConstants.OPERATOR: - OperationInfo operationInfo = operationInfoMapper.selectOperationInfoById(knowledgeBaseSaveDto.getSourceTemplateId()); - operationInfo.setId(null); - operationInfo.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); - operationInfo.setDepartmentName(knowledgeBaseSaveDto.getDepartmentName()); - operationInfo.setSourceTemplateId(knowledgeBaseSaveDto.getSourceTemplateId()); - operationInfoService.insertOperationInfo(operationInfo); + saveOperator(knowledgeBaseSaveDto); + break; + case KnowledgeBaseConstants.SCRIPT: + saveScript(knowledgeBaseSaveDto); + break; + case KnowledgeBaseConstants.WECHAT: + saveWechat(knowledgeBaseSaveDto); + break; + case KnowledgeBaseConstants.MESSAGE: + saveMessage(knowledgeBaseSaveDto); break; } } + + private void saveOperator(KnowledgeBaseSaveDto knowledgeBaseSaveDto) { + knowledgeBaseSaveDto.getSourceTemplateIds().forEach(sourceId -> { + OperationInfo operationInfo = operationInfoMapper.selectOperationInfoById(sourceId); + operationInfo.setId(null); + operationInfo.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + operationInfo.setDepartmentName(knowledgeBaseSaveDto.getDepartmentName()); + operationInfo.setSourceTemplateId(sourceId); + operationInfoService.insertOperationInfo(operationInfo); + }); + } + + private void saveScript(KnowledgeBaseSaveDto knowledgeBaseSaveDto) { + knowledgeBaseSaveDto.getSourceTemplateIds().forEach(sourceId -> { + ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(sourceId); + scriptInfo.setId(null); + scriptInfo.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + scriptInfo.setDepartmentName(knowledgeBaseSaveDto.getDepartmentName()); + scriptInfo.setSourceTemplateId(sourceId); + // 判断病种是否存在,不存在则要先增加病种 + if (scriptInfo.getDiseaseTypeId() != null) { + DepartmentDiseaseType departmentDiseaseType = new DepartmentDiseaseType(); + departmentDiseaseType.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + departmentDiseaseType.setDiseaseTypeName(scriptInfo.getDiseaseTypeName()); + List diseaseTypeList = departmentDiseaseTypeService.selectDepartmentDiseaseTypeList(departmentDiseaseType); + if (CollectionUtils.isEmpty(diseaseTypeList)) { + // 新增病种 + DepartmentDiseaseType diseaseTypeSaveObj = new DepartmentDiseaseType(); + diseaseTypeSaveObj.setDiseaseTypeName(scriptInfo.getDiseaseTypeName()); + diseaseTypeSaveObj.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + diseaseTypeSaveObj.setDepartmentName(knowledgeBaseSaveDto.getDepartmentName()); + departmentDiseaseTypeService.insertDepartmentDiseaseType(diseaseTypeSaveObj); + } else { + scriptInfo.setDiseaseTypeId(diseaseTypeList.get(0).getId()); + scriptInfo.setDiseaseTypeName(diseaseTypeList.get(0).getDiseaseTypeName()); + } + } + scriptInfoService.insertScriptInfo(scriptInfo); + }); + } + + private void saveWechat(KnowledgeBaseSaveDto knowledgeBaseSaveDto) { + knowledgeBaseSaveDto.getSourceTemplateIds().forEach(sourceId -> { + WechatTemplate wechatTemplate = wechatTemplateMapper.selectWechatTemplateById(sourceId); + WechatTemplateTaskDTO wechatTemplateTaskDTO = new WechatTemplateTaskDTO(); + BeanUtils.copyBeanProp(wechatTemplateTaskDTO, wechatTemplate); + wechatTemplateTaskDTO.setId(null); + wechatTemplateTaskDTO.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + wechatTemplateTaskDTO.setDepartmentName(knowledgeBaseSaveDto.getDepartmentName()); + wechatTemplateTaskDTO.setSourceTemplateId(sourceId); + // 判断病种是否存在,不存在则要先增加病种 + if (wechatTemplate.getDiseaseTypeId() != null) { + DepartmentDiseaseType departmentDiseaseType = new DepartmentDiseaseType(); + departmentDiseaseType.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + departmentDiseaseType.setDiseaseTypeName(wechatTemplate.getDiseaseTypeName()); + List diseaseTypeList = departmentDiseaseTypeService.selectDepartmentDiseaseTypeList(departmentDiseaseType); + if (CollectionUtils.isEmpty(diseaseTypeList)) { + // 新增病种 + DepartmentDiseaseType diseaseTypeSaveObj = new DepartmentDiseaseType(); + diseaseTypeSaveObj.setDiseaseTypeName(wechatTemplate.getDiseaseTypeName()); + diseaseTypeSaveObj.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + diseaseTypeSaveObj.setDepartmentName(knowledgeBaseSaveDto.getDepartmentName()); + departmentDiseaseTypeService.insertDepartmentDiseaseType(diseaseTypeSaveObj); + wechatTemplateTaskDTO.setDiseaseTypeId(diseaseTypeSaveObj.getId()); + wechatTemplateTaskDTO.setDiseaseTypeName(diseaseTypeSaveObj.getDiseaseTypeName()); + } else { + wechatTemplateTaskDTO.setDiseaseTypeId(diseaseTypeList.get(0).getId()); + wechatTemplateTaskDTO.setDiseaseTypeName(diseaseTypeList.get(0).getDiseaseTypeName()); + } + } + // 根据微信库模板id查询适用任务类型 + WechatTemplateSuitTask wechatTemplateSuitTaskQuery = new WechatTemplateSuitTask(); + wechatTemplateSuitTaskQuery.setWechatTemplateId(wechatTemplate.getId()); + List wechatTemplateSuitTasks = wechatTemplateSuitTaskMapper.selectWechatTemplateSuitTaskList(wechatTemplateSuitTaskQuery); + if (CollectionUtils.isNotEmpty(wechatTemplateSuitTasks)) { + List suitTaskIds = wechatTemplateSuitTasks.stream().map(WechatTemplateSuitTask::getSuitTaskTypeId).collect(Collectors.toList()); + wechatTemplateTaskDTO.setSuitTaskTypeIds(suitTaskIds.toArray(new Long[0])); + } + wechatTemplateService.insertWechatTemplate(wechatTemplateTaskDTO); + }); + } + + private void saveMessage(KnowledgeBaseSaveDto knowledgeBaseSaveDto) { + knowledgeBaseSaveDto.getSourceTemplateIds().forEach(sourceId -> { + TextMessage textMessage = textMessageMapper.selectTextMessageById(sourceId); + TextMessageTaskDTO textMessageTaskDTO = new TextMessageTaskDTO(); + BeanUtils.copyBeanProp(textMessageTaskDTO, textMessage); + textMessageTaskDTO.setId(null); + textMessageTaskDTO.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + textMessageTaskDTO.setDepartmentName(knowledgeBaseSaveDto.getDepartmentName()); + textMessageTaskDTO.setSourceTemplateId(sourceId); + // 判断病种是否存在,不存在则要先增加病种 + if (textMessage.getDiseaseTypeId() != null) { + DepartmentDiseaseType departmentDiseaseType = new DepartmentDiseaseType(); + departmentDiseaseType.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + departmentDiseaseType.setDiseaseTypeName(textMessage.getDiseaseTypeName()); + List diseaseTypeList = departmentDiseaseTypeService.selectDepartmentDiseaseTypeList(departmentDiseaseType); + if (CollectionUtils.isEmpty(diseaseTypeList)) { + // 新增病种 + DepartmentDiseaseType diseaseTypeSaveObj = new DepartmentDiseaseType(); + diseaseTypeSaveObj.setDiseaseTypeName(textMessage.getDiseaseTypeName()); + diseaseTypeSaveObj.setDepartmentId(knowledgeBaseSaveDto.getDepartmentId()); + diseaseTypeSaveObj.setDepartmentName(knowledgeBaseSaveDto.getDepartmentName()); + departmentDiseaseTypeService.insertDepartmentDiseaseType(diseaseTypeSaveObj); + textMessageTaskDTO.setDiseaseTypeId(diseaseTypeSaveObj.getId()); + textMessageTaskDTO.setDiseaseTypeName(diseaseTypeSaveObj.getDiseaseTypeName()); + } else { + textMessageTaskDTO.setDiseaseTypeId(diseaseTypeList.get(0).getId()); + textMessageTaskDTO.setDiseaseTypeName(diseaseTypeList.get(0).getDiseaseTypeName()); + } + } + // 根据短信库模板id查询适用任务类型 + TextMessageSuitTask textMessageSuitTask = new TextMessageSuitTask(); + textMessageSuitTask.setMessageId(textMessage.getId()); + List textMessageSuitTasks = textMessageMapper.selectSuitTaskList(textMessageSuitTask); + if (CollectionUtils.isNotEmpty(textMessageSuitTasks)) { + List suitTaskIds = textMessageSuitTasks.stream().map(TextMessageSuitTask::getSuitTaskTypeId).collect(Collectors.toList()); + textMessageTaskDTO.setSuitTaskTypeIds(suitTaskIds.toArray(new Long[0])); + } + textMessageService.insertTextMessage(textMessageTaskDTO); + }); + } } 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 be3e674c..e1b50fd7 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 @@ -409,6 +409,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout } // 计算主路径节点执行时间 specialDiseaseRouteAuditVo.getNodeList().forEach(node -> { + node.setRouteNodeNameCN(RouteNodeNameEnum.getNameByInfo(node.getRouteNodeName()).getName()); node.setExecuteTime(iSignPatientManageRouteNodeService.getExecuteTime(node.getExecutionTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord)); }); // 计算子路径节点执行时间 @@ -425,8 +426,8 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout // 查询节点 List nodeList = signPatientManageRouteNodeMapper.selectByRouteId(route.getId()); nodeList.forEach(node-> { - node.setExecuteTime( - iSignPatientManageRouteNodeService.getExecuteTime(node.getExecutionTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord)); + node.setRouteNodeNameCN(RouteNodeNameEnum.getNameByInfo(node.getRouteNodeName()).getName()); + node.setExecuteTime(iSignPatientManageRouteNodeService.getExecuteTime(node.getExecutionTime(), node.getRouteNodeName(), node.getRouteNodeDay(), patientVisitRecord)); }); specialDiseaseRouteAuditVo.getChildRouteList().add( SpecialDiseaseChildRouteAuditVo.builder().diseaseTypeName(route.getDiseaseTypeName()) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/ISignPatientManageRouteNodeService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/ISignPatientManageRouteNodeService.java index 09aef512..91d07dd6 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/ISignPatientManageRouteNodeService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/ISignPatientManageRouteNodeService.java @@ -196,10 +196,18 @@ public interface ISignPatientManageRouteNodeService { String replaceMessageInfo(Long messageTemplateId, List labelFieldContentList); /** - * 查询触发条件是否满足 + * 查询专病路径触发条件是否满足 * @param specialDiseaseRouteId 专病管理路径主键 * @param patientId 患者主键 * @return 是否满足触发条件,true:满足,false:不满足 */ Boolean getTriggerConditon(Long specialDiseaseRouteId, Long patientId); + + /** + * 查询手动船舰路径触发条件是否满足 + * @param signPatientManageRouteId 专病管理路径主键 + * @param patientId 患者主键 + * @return 是否满足触发条件,true:满足,false:不满足 + */ + Boolean getSignTriggerConditon(Long signPatientManageRouteId, Long patientId); } 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 53facb3b..a837c483 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.scriptInfo.ScriptInfo; import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute; import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode; import com.xinelu.manage.domain.signpatientrecord.SignPatientRecord; +import com.xinelu.manage.domain.signroutetriggercondition.SignRouteTriggerCondition; import com.xinelu.manage.domain.specialdiseasenode.SpecialDiseaseNode; import com.xinelu.manage.domain.specialdiseaseroute.SpecialDiseaseRoute; import com.xinelu.manage.domain.specialdiseasetriggercondition.SpecialDiseaseTriggerCondition; @@ -42,6 +43,7 @@ import com.xinelu.manage.mapper.scriptInfo.ScriptInfoMapper; import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper; 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.mapper.specialdiseasenode.SpecialDiseaseNodeMapper; import com.xinelu.manage.mapper.specialdiseaseroute.SpecialDiseaseRouteMapper; import com.xinelu.manage.mapper.specialdiseasetriggercondition.SpecialDiseaseTriggerConditionMapper; @@ -127,6 +129,8 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage private PatientAllInfoViewMapper patientAllInfoViewMapper; @Resource private SpecialDiseaseRouteMapper specialDiseaseRouteMapper; + @Resource + private SignRouteTriggerConditionMapper signRouteTriggerConditionMapper; /** * 查询签约患者管理任务路径节点 @@ -867,6 +871,7 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage * @param patientId 患者主键 * @return 是否满足触发条件,true:满足,false:不满足 */ + @Override public Boolean getTriggerConditon(Long specialDiseaseRouteId, Long patientId) { boolean generateTask = false; // 查询患者信息 @@ -914,6 +919,62 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage return generateTask; } + /** + * 查询手动船舰路径触发条件是否满足 + * @param signPatientManageRouteId 专病管理路径主键 + * @param patientId 患者主键 + * @return 是否满足触发条件,true:满足,false:不满足 + */ + @Override public Boolean getSignTriggerConditon(Long signPatientManageRouteId, Long patientId) { + // 查询患者信息 + PatientAllInfoViewUppercase patientAllInfo = null; + List patientAllInfoViewList = patientAllInfoViewMapper.selectPatientAllInfoListViewByPatientId(patientId); + if (CollectionUtils.isNotEmpty(patientAllInfoViewList)) { + patientAllInfo = patientAllInfoViewList.get(0); + } + // 查询画像信息 + List labelFieldContentList = labelFieldContentMapper.selectByPatientId(patientId); + + boolean generateTask = false; + SignRouteTriggerCondition signRouteTriggerCondition = new SignRouteTriggerCondition(); + signRouteTriggerCondition.setPatientManageRouteId(signPatientManageRouteId); + List signRouteTriggerConditions = signRouteTriggerConditionMapper.selectSignRouteTriggerConditionList(signRouteTriggerCondition); + if (CollectionUtils.isNotEmpty(signRouteTriggerConditions)) { + // 判断条件是否成立 + SpecialDiseaseTriggerCondition triggerCondition = new SpecialDiseaseTriggerCondition(); + BeanUtils.copyBeanProp(triggerCondition, signRouteTriggerConditions.get(0)); + boolean condition1 = judgeTriggerCondition(triggerCondition, patientAllInfo, labelFieldContentList); + if (condition1) { + // 条件1成立,继续判断条件2,3 + if (signRouteTriggerConditions.size() > 1) { + BeanUtils.copyBeanProp(triggerCondition, signRouteTriggerConditions.get(1)); + boolean condition2 = judgeTriggerCondition(triggerCondition, patientAllInfo, labelFieldContentList); + if (signRouteTriggerConditions.size() > 2) { // 有3个条件 + BeanUtils.copyBeanProp(triggerCondition, signRouteTriggerConditions.get(2)); + boolean condition3 = judgeTriggerCondition(triggerCondition, patientAllInfo, labelFieldContentList); + switch (signRouteTriggerConditions.get(2).getTriggerLogic()) { + case TriggerLogicConstants.AND: + generateTask = condition2 && condition3; + break; + case TriggerLogicConstants.OR: + generateTask = condition2 || condition3; + break; + default: + generateTask = condition2 && condition3; + break; + } + } else { // 有两个条件 + generateTask = condition2; + } + } else { + // 只有1个条件且成立,生成任务 + generateTask = true; + } + } + } + return generateTask; + } + /** * 根据管理路径生成任务 * @param signPatientManageRoute 签约管理路径 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/specialdiseasenode/SpecialDiseaseNodeAuditVo.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/specialdiseasenode/SpecialDiseaseNodeAuditVo.java index 63570630..6b8a2f72 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/specialdiseasenode/SpecialDiseaseNodeAuditVo.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/specialdiseasenode/SpecialDiseaseNodeAuditVo.java @@ -19,6 +19,12 @@ public class SpecialDiseaseNodeAuditVo { @ApiModelProperty(value = "节点名称,出院后:AFTER_DISCHARGE,入院后:AFTER_ADMISSION,就诊后:AFTER_CONSULTATION,就诊/出院后:AFTER_VISIT_DISCHARGE,术前:PREOPERATIVE,术后:POSTOPERATIVE") private String routeNodeName; + /** + * 节点名称中文 + */ + @ApiModelProperty("节点名称中文") + private String routeNodeNameCN; + /** * 节点天数,单位:天 */ diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/textmessage/TextMessageVO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/textmessage/TextMessageVO.java index 20dcbb15..f5c0ca61 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/textmessage/TextMessageVO.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/textmessage/TextMessageVO.java @@ -107,6 +107,11 @@ public class TextMessageVO extends BaseEntity { @Excel(name = "短信备注") private String textMessageRemark; + /** + * 公共知识库id + */ + private Long sourceTemplateId; + /** * 短信模板适用任务类型列表 */ diff --git a/postdischarge-manage/src/main/resources/mapper/manage/propagandainfo/PropagandaInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/propagandainfo/PropagandaInfoMapper.xml index 75699998..8929860b 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/propagandainfo/PropagandaInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/propagandainfo/PropagandaInfoMapper.xml @@ -255,6 +255,27 @@ (select id, department_id, propaganda_status from propaganda_info del_flag = 0 + + and propaganda_status = #{propagandaStatus} + + + and hospital_agency_id = #{hospitalAgencyId} + + + and department_id = #{departmentId} + + + and propaganda_type = #{propagandaType} + + + and propaganda_status = #{propagandaStatus} + + + and date_format(create_time, '%y%m%d') >= date_format(#{createTimeStart}, '%y%m%d') + + + and date_format(create_time, '%y%m%d') <= date_format(#{createTimeEnd}, '%y%m%d') + ) as p on d.id = p.department_id diff --git a/postdischarge-manage/src/main/resources/mapper/manage/scriptInfo/ScriptInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/scriptInfo/ScriptInfoMapper.xml index 01bb3380..8f024043 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/scriptInfo/ScriptInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/scriptInfo/ScriptInfoMapper.xml @@ -20,6 +20,7 @@ + @@ -48,6 +49,7 @@ script_remark, script_file_path, flow_scheme, + source_template_id, create_by, create_time, update_by, @@ -70,7 +72,7 @@ si.script_sort, si.script_remark, si.script_file_path, - si.flow_scheme, + si.flow_scheme,si.source_template_id, si.create_by, si.create_time, si.update_by, @@ -182,6 +184,8 @@ flow_scheme, + source_template_id, + create_by, create_time, @@ -220,6 +224,8 @@ #{flowScheme}, + #{sourceTemplateId}, + #{createBy}, #{createTime}, @@ -272,6 +278,9 @@ flow_scheme = #{flowScheme}, + source_template_id = + #{sourceTemplateId}, + create_by = #{createBy}, diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signroutetriggercondition/SignRouteTriggerConditionMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signroutetriggercondition/SignRouteTriggerConditionMapper.xml index d8faab8f..7aff5e2d 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signroutetriggercondition/SignRouteTriggerConditionMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signroutetriggercondition/SignRouteTriggerConditionMapper.xml @@ -13,6 +13,7 @@ + @@ -21,36 +22,36 @@ - select id, patient_manage_route_id, route_name, trigger_condition_code, trigger_condition_name, trigger_condition_operator, trigger_condition_value, trigger_condition_sort, trigger_condition_remark, create_by, create_time, update_by, update_time from sign_route_trigger_condition + select id, patient_manage_route_id, route_name, trigger_condition_code, trigger_condition_name, trigger_condition_operator, trigger_condition_value, trigger_condition_sort, trigger_logic, trigger_condition_remark, create_by, create_time, update_by, update_time from sign_route_trigger_condition @@ -78,6 +79,8 @@ trigger_condition_sort, + trigger_logic, + trigger_condition_remark, create_by, @@ -104,6 +107,8 @@ #{triggerConditionSort}, + #{triggerLogic}, + #{triggerConditionRemark}, #{createBy}, @@ -144,6 +149,9 @@ trigger_condition_remark = #{triggerConditionRemark}, + trigger_logic = + #{triggerLogic}, + create_by = #{createBy}, @@ -173,14 +181,14 @@ insert into sign_route_trigger_condition(id,patient_manage_route_id,route_name, trigger_condition_code,trigger_condition_name,trigger_condition_operator, - trigger_condition_value,trigger_condition_sort,trigger_condition_remark, + trigger_condition_value,trigger_condition_sort,trigger_logic, trigger_condition_remark, create_by,create_time, update_by,update_time) values (#{item.id,jdbcType=NUMERIC},#{item.patientManageRouteId,jdbcType=NUMERIC},#{item.routeName,jdbcType=VARCHAR}, #{item.triggerConditionCode,jdbcType=VARCHAR},#{item.triggerConditionName,jdbcType=VARCHAR},#{item.triggerConditionOperator,jdbcType=VARCHAR}, - #{item.triggerConditionValue,jdbcType=VARCHAR},#{item.triggerConditionSort,jdbcType=NUMERIC},#{item.triggerConditionRemark,jdbcType=VARCHAR}, + #{item.triggerConditionValue,jdbcType=VARCHAR},#{item.triggerConditionSort,jdbcType=NUMERIC},#{item.triggerLogic,jdbcType=VARCHAR},#{item.triggerConditionRemark,jdbcType=VARCHAR}, #{item.createBy,jdbcType=VARCHAR},#{item.createTime}, #{item.updateBy,jdbcType=VARCHAR},#{item.updateTime}) 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 53dd5cbe..5366271e 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/specialdiseaseroute/SpecialDiseaseRouteMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/specialdiseaseroute/SpecialDiseaseRouteMapper.xml @@ -452,6 +452,7 @@ dt.department_code, ( SELECT COUNT(1) FROM special_disease_route a WHERE a.department_id = dt.id and (a.parent_route_id = 0 or a.parent_route_id is null)) 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 and dt.hospital_agency_id = #{hospitalAgencyId} @@ -462,6 +463,9 @@ AND sdr.release_status= #{releaseStatus} + + AND sdrp.service_package_id= #{servicePackageId} + AND (sdr.parent_route_id = 0 or sdr.parent_route_id is null) diff --git a/postdischarge-manage/src/main/resources/mapper/manage/textmessage/TextMessageMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/textmessage/TextMessageMapper.xml index ee18df9f..4335df35 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/textmessage/TextMessageMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/textmessage/TextMessageMapper.xml @@ -17,6 +17,7 @@ + @@ -36,6 +37,7 @@ + @@ -57,6 +59,7 @@ text_message_status, text_message_sort, text_message_remark, + source_template_id, create_by, create_time, update_by, @@ -108,6 +111,7 @@ tm.text_message_status, tm.text_message_sort, tm.text_message_remark, + tm.source_template_id, tmst.id AS taskId, tmst.message_id, tmst.suit_task_type_id, @@ -188,6 +192,8 @@ text_message_remark, + source_template_id, + create_by, create_time, @@ -220,6 +226,8 @@ #{textMessageRemark}, + #{sourceTemplateId}, + #{createBy}, #{createTime}, @@ -241,6 +249,15 @@ + update text_message @@ -274,6 +291,9 @@ text_message_remark = #{textMessageRemark}, + source_template_id = + #{sourceTemplateId}, + create_by = #{createBy}, diff --git a/postdischarge-manage/src/main/resources/mapper/manage/wechattemplate/WechatTemplateMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/wechattemplate/WechatTemplateMapper.xml index 743a29b2..297cbb92 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/wechattemplate/WechatTemplateMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/wechattemplate/WechatTemplateMapper.xml @@ -15,6 +15,7 @@ + @@ -53,6 +54,7 @@ template_source, template_sort, template_remark, + source_template_id, create_by, create_time, update_by, @@ -221,6 +223,8 @@ template_remark, + source_template_id, + create_by, create_time, @@ -251,6 +255,8 @@ #{templateRemark}, + #{sourceTemplateId}, + #{createBy}, #{createTime}, @@ -264,7 +270,7 @@ INSERT INTO wechat_template_suit_task - (wechat_template_id, suit_task_type_id, suit_task_type_name, create_by, create_time) + (wechat_template_id, suit_task_type_id, suit_task_type_name,create_by, create_time) VALUES (#{task.wechatTemplateId}, #{task.suitTaskTypeId}, #{task.suitTaskTypeName}, #{task.createBy}, @@ -301,6 +307,9 @@ template_remark = #{templateRemark}, + source_template_id = + #{sourceTemplateId}, + create_by = #{createBy}, diff --git a/postdischarge-manage/src/main/resources/mapper/manage/wechattemplatesuittask/WechatTemplateSuitTaskMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/wechattemplatesuittask/WechatTemplateSuitTaskMapper.xml new file mode 100644 index 00000000..88e1a077 --- /dev/null +++ b/postdischarge-manage/src/main/resources/mapper/manage/wechattemplatesuittask/WechatTemplateSuitTaskMapper.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + select id, wechat_template_id, suit_task_type_id, suit_task_type_name, create_by, create_time, update_by, update_time from wechat_template_suit_task + + + + + + + + insert into wechat_template_suit_task + + wechat_template_id, + + suit_task_type_id, + + suit_task_type_name, + + create_by, + + create_time, + + update_by, + + update_time, + + + + #{wechatTemplateId}, + + #{suitTaskTypeId}, + + #{suitTaskTypeName}, + + #{createBy}, + + #{createTime}, + + #{updateBy}, + + #{updateTime}, + + + + + + update wechat_template_suit_task + + wechat_template_id = + #{wechatTemplateId}, + + suit_task_type_id = + #{suitTaskTypeId}, + + suit_task_type_name = + #{suitTaskTypeName}, + + create_by = + #{createBy}, + + create_time = + #{createTime}, + + update_by = + #{updateBy}, + + update_time = + #{updateTime}, + + + where id = #{id} + + + + delete from wechat_template_suit_task where id = #{id} + + + + delete from wechat_template_suit_task where id in + + #{id} + + + \ No newline at end of file