子路径的编辑接口。

This commit is contained in:
haown 2024-06-18 18:11:00 +08:00
parent ebefc616b7
commit da19bd6784
18 changed files with 445 additions and 79 deletions

View File

@ -3,6 +3,7 @@ package com.xinelu.manage.controller.specialdiseaseroute;
import com.xinelu.common.annotation.Log;
import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.domain.R;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
@ -10,13 +11,20 @@ import com.xinelu.common.enums.BusinessType;
import com.xinelu.manage.domain.specialdiseaseroute.SpecialDiseaseRoute;
import com.xinelu.manage.dto.specialdiseaseroute.SpecialDiseaseRouteDTO;
import com.xinelu.manage.service.specialdiseaseroute.ISpecialDiseaseRouteService;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteInfoVo;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 专病路径信息Controller
@ -33,7 +41,6 @@ public class SpecialDiseaseRouteController extends BaseController {
/**
* 查询专病路径信息列表
*/
//@PreAuthorize("@ss.hasPermi('system:specialDiseaseRoute:list')")
@GetMapping("/list")
public TableDataInfo list(SpecialDiseaseRouteDTO specialDiseaseRoute) {
startPage();
@ -44,16 +51,22 @@ public class SpecialDiseaseRouteController extends BaseController {
/**
* 获取专病路径信息详细信息
*/
//@PreAuthorize("@ss.hasPermi('system:specialDiseaseRoute:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(specialDiseaseRouteService.selectSpecialDiseaseRouteById(id));
}
/**
* 获取专病管理路径及子路径信息
*/
@GetMapping(value = "/getById/{id}")
public R<SpecialDiseaseRouteInfoVo> getById(@PathVariable("id") Long id) {
return R.ok(specialDiseaseRouteService.getById(id));
}
/**
* 新增专病路径信息及服务包信息
*/
//@PreAuthorize("@ss.hasPermi('system:specialDiseaseRoute:add')")
@Log(title = "专病路径信息", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody @Validated(Insert.class) SpecialDiseaseRouteVO specialDiseaseRoute) {

View File

@ -7,16 +7,23 @@ import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.specialdiseasetriggercondition.SpecialDiseaseTriggerCondition;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionDTO;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionSaveDTO;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionUpdateDto;
import com.xinelu.manage.service.specialdiseasetriggercondition.ISpecialDiseaseTriggerConditionService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 触发条件关系Controller
@ -79,8 +86,8 @@ public class SpecialDiseaseTriggerConditionController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:triggerCondition:add')")
@Log(title = "触发条件关系", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody TriggerConditionDTO triggerConditionList) {
return toAjax(specialDiseaseTriggerConditionService.insertSpecialDiseaseTriggerCondition(triggerConditionList));
public AjaxResult add(@RequestBody TriggerConditionSaveDTO triggerConditionSaveDTO) {
return toAjax(specialDiseaseTriggerConditionService.insertSpecialDiseaseTriggerCondition(triggerConditionSaveDTO));
}
/**
@ -89,8 +96,8 @@ public class SpecialDiseaseTriggerConditionController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:triggerCondition:edit')")
@Log(title = "触发条件关系", businessType = BusinessType.UPDATE)
@PutMapping("/edit")
public AjaxResult edit(@RequestBody SpecialDiseaseTriggerCondition specialDiseaseTriggerCondition) {
return toAjax(specialDiseaseTriggerConditionService.updateSpecialDiseaseTriggerCondition(specialDiseaseTriggerCondition));
public AjaxResult edit(@RequestBody TriggerConditionUpdateDto triggerConditionUpdateDto) {
return toAjax(specialDiseaseTriggerConditionService.updateSpecialDiseaseTriggerCondition(triggerConditionUpdateDto));
}
/**

View File

@ -79,6 +79,11 @@ public class SignPatientManageRoute extends BaseEntity {
@Excel(name = "路径主键", readConverterExp = "路径主键")
private Long routeId;
/** 父路径id */
@ApiModelProperty(value = "父路径id")
@Excel(name = "父路径id", readConverterExp = "父路径id")
private Long parentRouteId;
/** 路径名称(任务名称) */
@ApiModelProperty(value = "路径名称")
@Excel(name = "路径名称", readConverterExp = "任务名称")

View File

@ -1,21 +0,0 @@
package com.xinelu.manage.dto.specialdiseasetriggercondition;
import com.xinelu.manage.domain.specialdiseasetriggercondition.SpecialDiseaseTriggerCondition;
import lombok.Data;
import java.util.List;
/**
* 触发条件关系DTO
*
* @author xinelu
* @date 2024-03-18
*/
@Data
public class TriggerConditionDTO {
/**
* 触发条件集和
*/
List<SpecialDiseaseTriggerCondition> triggerConditionList;
}

View File

@ -0,0 +1,23 @@
package com.xinelu.manage.dto.specialdiseasetriggercondition;
import com.xinelu.manage.domain.specialdiseasetriggercondition.SpecialDiseaseTriggerCondition;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description: 触发条件关系DTO
* @author: haown
* @create: 2024-06-17 16:32
**/
@Data
public class TriggerConditionDto extends SpecialDiseaseTriggerCondition {
/**
* 触发条件运算符包含CONTAIN不包含NOT_CONTAIN等于EQUAL_TO不等于NOT_EQUAL_TO
*/
@ApiModelProperty(value = "触发条件运算符名称包含CONTAIN不包含NOT_CONTAIN等于EQUAL_TO不等于NOT_EQUAL_TO")
private String triggerConditionOperatorName;
@ApiModelProperty(value = "and:且、or:或说明如果为or则根据排序同前面条件或运算")
private String triggerLogicName;
}

View File

@ -0,0 +1,36 @@
package com.xinelu.manage.dto.specialdiseasetriggercondition;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
/**
* 触发条件关系DTO
*
* @author xinelu
* @date 2024-03-18
*/
@Data
@ApiModel("触发条件关系DTO")
public class TriggerConditionSaveDTO {
/**
* 主路径主键
*/
@ApiModelProperty("主路径主键")
private Long parentRouteId;
/**
* 适用范围在院IN_THE_HOSPITAL出院DISCHARGE门诊OUTPATIENT_SERVICE门诊+出院OUTPATIENT_SERVICE_DISCHARGE
*/
@ApiModelProperty(value = "适用范围在院IN_THE_HOSPITAL出院DISCHARGE门诊OUTPATIENT_SERVICE门诊+出院OUTPATIENT_SERVICE_DISCHARGE")
private String suitRange;
/**
* 触发条件集和
*/
@ApiModelProperty("触发条件集和")
List<TriggerConditionDto> triggerConditionList;
}

View File

@ -0,0 +1,22 @@
package com.xinelu.manage.dto.specialdiseasetriggercondition;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
/**
* @description: 触发条件修改传输对象
* @author: haown
* @create: 2024-06-17 17:42
**/
@ApiModel("触发条件修改传输对象")
@Data
public class TriggerConditionUpdateDto {
@ApiModelProperty("子路径主键")
private Long routeId;
@ApiModelProperty("触发条件列表")
private List<TriggerConditionDto> triggerConditionList;
}

View File

@ -3,6 +3,7 @@ package com.xinelu.manage.mapper.specialdiseaseroute;
import com.xinelu.manage.domain.specialdiseaseroute.SpecialDiseaseRoute;
import com.xinelu.manage.dto.specialdiseaseroute.SpecialDiseaseRouteDTO;
import com.xinelu.manage.vo.department.DepartmentVO;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteInfoVo;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO;
import org.apache.ibatis.annotations.Param;
@ -87,6 +88,19 @@ public interface SpecialDiseaseRouteMapper {
*/
SpecialDiseaseRouteVO selectSpecialDiseaseRouteAndTriggerById(Long id);
/**
* 查询专病管理路径及子路径信息
* @param id 专病路径信息主键
* @return 专病管理路径及子路径信息
*/
SpecialDiseaseRouteInfoVo getRouteAndChild(@Param("id") Long id);
/**
* 查询子路径
* @param specialDiseaseRouteId 专病路径信息主键
* @return
*/
List<SpecialDiseaseRouteInfoVo> getChildList(@Param("specialDiseaseRouteId")Long specialDiseaseRouteId);
/**
* 查询未审核节点状态
*

View File

@ -166,7 +166,7 @@ public class PatientNodeParamsCurrentServiceImpl implements IPatientNodeParamsCu
paramsLogList.add(paramsLog);
});
patientNodeParamsLogMapper.insertList(paramsLogList);
// 生成任务
// 生成任务---判断是否为主路径主路径直接生成任务子路径触发条件成立则生成任务
manageRouteNodeService.updateTaskWithParam(paramsList);
}
}

View File

@ -537,6 +537,15 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
}
}
/**
* 生成子路径任务
* @param routeId 子路径id
* @param routeNodeId 节点id
*/
private void generateChildRouteTask(Long routeId, Long routeNodeId) {
}
private LocalDateTime getExecuteTime(SignPatientManageRouteNode node, PatientVisitRecord patientVisitRecord) {
LocalDateTime executeTime = null;

View File

@ -18,10 +18,8 @@ import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRout
import com.xinelu.manage.domain.signpatientpackage.SignPatientPackage;
import com.xinelu.manage.domain.signpatientpackagehardware.SignPatientPackageHardware;
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;
import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto;
import com.xinelu.manage.dto.signpatientpackage.SignPatientPackageSaveDto;
import com.xinelu.manage.dto.signpatientrecord.IntentionalSignDto;
@ -238,20 +236,20 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService {
manageRouteNodeMapper.insertBatch(manageNodeList);
}
// 保存触发条件
SpecialDiseaseTriggerCondition triggerConditionQuery = new SpecialDiseaseTriggerCondition();
triggerConditionQuery.setRouteId(signPatientManageRoute.getRouteId());
List<SpecialDiseaseTriggerCondition> triggerConditions = triggerConditionMapper.selectSpecialDiseaseTriggerConditionList(triggerConditionQuery);
if (!CollectionUtils.isEmpty(triggerConditions)) {
List<SignRouteTriggerCondition> routeTriggerConditionList = triggerConditions.stream().map(item->{
SignRouteTriggerCondition signRouteTriggerCondition = new SignRouteTriggerCondition();
BeanUtils.copyBeanProp(signRouteTriggerCondition, item);
signRouteTriggerCondition.setPatientManageRouteId(signPatientManageRoute.getId());
signRouteTriggerCondition.setRouteName(signPatientManageRoute.getRouteName());
signRouteTriggerCondition.setId(null);
return signRouteTriggerCondition;
}).collect(Collectors.toList());
signRouteTriggerConditionMapper.insertBatch(routeTriggerConditionList);
}
//SpecialDiseaseTriggerCondition triggerConditionQuery = new SpecialDiseaseTriggerCondition();
//triggerConditionQuery.setRouteId(signPatientManageRoute.getRouteId());
//List<SpecialDiseaseTriggerCondition> triggerConditions = triggerConditionMapper.selectSpecialDiseaseTriggerConditionList(triggerConditionQuery);
//if (!CollectionUtils.isEmpty(triggerConditions)) {
// List<SignRouteTriggerCondition> routeTriggerConditionList = triggerConditions.stream().map(item->{
// SignRouteTriggerCondition signRouteTriggerCondition = new SignRouteTriggerCondition();
// BeanUtils.copyBeanProp(signRouteTriggerCondition, item);
// signRouteTriggerCondition.setPatientManageRouteId(signPatientManageRoute.getId());
// signRouteTriggerCondition.setRouteName(signPatientManageRoute.getRouteName());
// signRouteTriggerCondition.setId(null);
// return signRouteTriggerCondition;
// }).collect(Collectors.toList());
// signRouteTriggerConditionMapper.insertBatch(routeTriggerConditionList);
//}
// 保存硬件
if (!CollectionUtils.isEmpty(body.getDevices())) {

View File

@ -3,8 +3,8 @@ package com.xinelu.manage.service.specialdiseaseroute;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.specialdiseaseroute.SpecialDiseaseRoute;
import com.xinelu.manage.dto.specialdiseaseroute.SpecialDiseaseRouteDTO;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteInfoVo;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO;
import java.util.List;
/**
@ -22,6 +22,13 @@ public interface ISpecialDiseaseRouteService {
*/
SpecialDiseaseRouteVO selectSpecialDiseaseRouteById(Long id);
/**
* 查询专病路径及子路径信息
* @param id 专病路径信息主键
* @return 专病路径及子路径信息
*/
SpecialDiseaseRouteInfoVo getById(Long id);
/**
* 查询专病路径信息列表
*

View File

@ -18,6 +18,7 @@ import com.xinelu.manage.mapper.specialdiseaseroutepackage.SpecialDiseaseRoutePa
import com.xinelu.manage.mapper.specialdiseasetriggercondition.SpecialDiseaseTriggerConditionMapper;
import com.xinelu.manage.service.specialdiseaseroute.ISpecialDiseaseRouteService;
import com.xinelu.manage.vo.department.DepartmentVO;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteInfoVo;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO;
import com.xinelu.manage.vo.specialdiseaseroutepackage.SpecialDiseaseRoutePackageVO;
import org.apache.commons.collections4.CollectionUtils;
@ -66,6 +67,10 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi
return specialDiseaseRouteMapper.selectSpecialDiseaseRouteAndTriggerById(id);
}
@Override public SpecialDiseaseRouteInfoVo getById(Long id) {
return specialDiseaseRouteMapper.getRouteAndChild(id);
}
/**
* 查询专病路径信息列表
*

View File

@ -1,8 +1,8 @@
package com.xinelu.manage.service.specialdiseasetriggercondition;
import com.xinelu.manage.domain.specialdiseasetriggercondition.SpecialDiseaseTriggerCondition;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionDTO;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionSaveDTO;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionUpdateDto;
import java.util.List;
/**
@ -31,18 +31,18 @@ public interface ISpecialDiseaseTriggerConditionService {
/**
* 新增触发条件关系
*
* @param triggerConditionList 触发条件关系
* @param triggerConditionSaveDTO 触发条件关系
* @return 结果
*/
int insertSpecialDiseaseTriggerCondition(TriggerConditionDTO triggerConditionList);
int insertSpecialDiseaseTriggerCondition(TriggerConditionSaveDTO triggerConditionSaveDTO);
/**
* 修改触发条件关系
*
* @param specialDiseaseTriggerCondition 触发条件关系
* @param triggerConditionUpdateDto 触发条件关系
* @return 结果
*/
int updateSpecialDiseaseTriggerCondition(SpecialDiseaseTriggerCondition specialDiseaseTriggerCondition);
int updateSpecialDiseaseTriggerCondition(TriggerConditionUpdateDto triggerConditionUpdateDto);
/**
* 批量删除触发条件关系

View File

@ -1,15 +1,25 @@
package com.xinelu.manage.service.specialdiseasetriggercondition.impl;
import com.xinelu.common.constant.Constants;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.StringUtils;
import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.common.utils.codes.GenerateSystemCodeUtil;
import com.xinelu.manage.domain.specialdiseaseroute.SpecialDiseaseRoute;
import com.xinelu.manage.domain.specialdiseasetriggercondition.SpecialDiseaseTriggerCondition;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionDTO;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionDto;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionSaveDTO;
import com.xinelu.manage.dto.specialdiseasetriggercondition.TriggerConditionUpdateDto;
import com.xinelu.manage.mapper.specialdiseaseroute.SpecialDiseaseRouteMapper;
import com.xinelu.manage.mapper.specialdiseasetriggercondition.SpecialDiseaseTriggerConditionMapper;
import com.xinelu.manage.service.specialdiseasetriggercondition.ISpecialDiseaseTriggerConditionService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
/**
@ -22,6 +32,10 @@ import java.util.List;
public class SpecialDiseaseTriggerConditionServiceImpl implements ISpecialDiseaseTriggerConditionService {
@Resource
private SpecialDiseaseTriggerConditionMapper specialDiseaseTriggerConditionMapper;
@Resource
private SpecialDiseaseRouteMapper specialDiseaseRouteMapper;
@Resource
private GenerateSystemCodeUtil generateSystemCodeUtil;
/**
* 查询触发条件关系
@ -48,27 +62,88 @@ public class SpecialDiseaseTriggerConditionServiceImpl implements ISpecialDiseas
/**
* 新增触发条件关系
*
* @param triggerConditionList 触发条件关系
* @param triggerConditionSaveDTO 触发条件关系
* @return 结果
*/
@Override
public int insertSpecialDiseaseTriggerCondition(TriggerConditionDTO triggerConditionList) {
triggerConditionList.getTriggerConditionList().forEach(item -> item.setCreateTime(LocalDateTime.now()));
triggerConditionList.getTriggerConditionList().forEach(item -> item.setCreateBy(SecurityUtils.getUsername()));
return specialDiseaseTriggerConditionMapper.insertTriggerConditionList(triggerConditionList.getTriggerConditionList());
public int insertSpecialDiseaseTriggerCondition(TriggerConditionSaveDTO triggerConditionSaveDTO) {
if (triggerConditionSaveDTO.getParentRouteId() == null) {
throw new ServiceException("请选择主路径");
}
if (CollectionUtils.isEmpty(triggerConditionSaveDTO.getTriggerConditionList())) {
throw new ServiceException("请选择触发条件");
}
if (StringUtils.isBlank(triggerConditionSaveDTO.getSuitRange())) {
throw new ServiceException("请选择适用范围");
}
// 保存子路径
SpecialDiseaseRoute specialDiseaseRoute = specialDiseaseRouteMapper.selectSpecialDiseaseRouteById(triggerConditionSaveDTO.getParentRouteId());
specialDiseaseRoute.setCreateTime(LocalDateTime.now());
specialDiseaseRoute.setCreateBy(SecurityUtils.getUsername());
specialDiseaseRoute.setRouteCode(Constants.ROUTE_CODE + generateSystemCodeUtil.generateSystemCode(Constants.ROUTE_CODE));
specialDiseaseRoute.setId(null);
// 根据触发条件拼接子路径路径名称
specialDiseaseRoute.setRouteName(getRouteName(triggerConditionSaveDTO.getTriggerConditionList()));
specialDiseaseRoute.setSuitRange(triggerConditionSaveDTO.getSuitRange());
specialDiseaseRoute.setParentRouteId(triggerConditionSaveDTO.getParentRouteId());
int flag = specialDiseaseRouteMapper.insertSpecialDiseaseRoute(specialDiseaseRoute);
if (flag > 0) {
// 保存触发条件
List<SpecialDiseaseTriggerCondition> triggerConditions = new ArrayList<>();
triggerConditionSaveDTO.getTriggerConditionList().forEach(item -> {
SpecialDiseaseTriggerCondition triggerCondition = new SpecialDiseaseTriggerCondition();
BeanUtils.copyBeanProp(triggerCondition, item);
triggerCondition.setCreateTime(LocalDateTime.now());
triggerCondition.setCreateBy(SecurityUtils.getUsername());
triggerCondition.setRouteId(specialDiseaseRoute.getId());
triggerCondition.setRouteName(specialDiseaseRoute.getRouteName());
triggerCondition.setId(null);
triggerConditions.add(triggerCondition);
});
specialDiseaseTriggerConditionMapper.insertTriggerConditionList(triggerConditions);
}
return flag;
}
/**
* 修改触发条件关系
*
* @param specialDiseaseTriggerCondition 触发条件关系
* @param triggerConditionUpdateDto 触发条件关系
* @return 结果
*/
@Override
public int updateSpecialDiseaseTriggerCondition(SpecialDiseaseTriggerCondition specialDiseaseTriggerCondition) {
public int updateSpecialDiseaseTriggerCondition(TriggerConditionUpdateDto triggerConditionUpdateDto) {
// 修改子路径路径名称
SpecialDiseaseRoute specialDiseaseRoute = new SpecialDiseaseRoute();
specialDiseaseRoute.setId(triggerConditionUpdateDto.getRouteId());
specialDiseaseRoute.setRouteName(getRouteName(triggerConditionUpdateDto.getTriggerConditionList()));
specialDiseaseRouteMapper.updateSpecialDiseaseRoute(specialDiseaseRoute);
// 修改触发条件
SpecialDiseaseTriggerCondition specialDiseaseTriggerCondition = new SpecialDiseaseTriggerCondition();
specialDiseaseTriggerCondition.setRouteId(triggerConditionUpdateDto.getRouteId());
List<SpecialDiseaseTriggerCondition> triggerConditionList = specialDiseaseTriggerConditionMapper.selectSpecialDiseaseTriggerConditionList(specialDiseaseTriggerCondition);
Long[] ids = triggerConditionList.stream().map(SpecialDiseaseTriggerCondition::getId).toArray(Long[]::new);
specialDiseaseTriggerConditionMapper.deleteSpecialDiseaseTriggerConditionByIds(ids);
List<SpecialDiseaseTriggerCondition> triggerConditions = new ArrayList<>();
triggerConditionUpdateDto.getTriggerConditionList().forEach(item -> {
SpecialDiseaseTriggerCondition triggerCondition = new SpecialDiseaseTriggerCondition();
BeanUtils.copyBeanProp(triggerCondition, item);
specialDiseaseTriggerCondition.setCreateTime(LocalDateTime.now());
specialDiseaseTriggerCondition.setCreateBy(SecurityUtils.getUsername());
specialDiseaseTriggerCondition.setUpdateTime(LocalDateTime.now());
specialDiseaseTriggerCondition.setUpdateBy(SecurityUtils.getUsername());
return specialDiseaseTriggerConditionMapper.updateSpecialDiseaseTriggerCondition(specialDiseaseTriggerCondition);
triggerCondition.setId(null);
triggerCondition.setRouteId(triggerConditionUpdateDto.getRouteId());
triggerCondition.setRouteName(specialDiseaseRoute.getRouteName());
triggerConditions.add(triggerCondition);
});
return specialDiseaseTriggerConditionMapper.insertTriggerConditionList(triggerConditions);
}
/**
@ -92,4 +167,21 @@ public class SpecialDiseaseTriggerConditionServiceImpl implements ISpecialDiseas
public int deleteSpecialDiseaseTriggerConditionById(Long id) {
return specialDiseaseTriggerConditionMapper.deleteSpecialDiseaseTriggerConditionById(id);
}
private String getRouteName(List<TriggerConditionDto> triggerConditionList) {
StringBuilder routeName = new StringBuilder();
for (int i = 0; i < triggerConditionList.size(); i++) {
TriggerConditionDto item = triggerConditionList.get(i);
if (i == 0) {
routeName.append(item.getTriggerConditionName() + item.getTriggerConditionOperatorName() + item.getTriggerConditionValue());
}
if (i == 1) {
routeName.append("|"+ item.getTriggerConditionName() + item.getTriggerConditionOperatorName() + item.getTriggerConditionValue());
}
if (i == 2) {
routeName.append("(" + item.getTriggerLogicName() + ")" + item.getTriggerConditionName() + item.getTriggerConditionOperatorName() + item.getTriggerConditionValue());
}
}
return routeName.toString();
}
}

View File

@ -0,0 +1,42 @@
package com.xinelu.manage.vo.specialdiseaseroute;
import com.xinelu.manage.domain.specialdiseaseroute.SpecialDiseaseRoute;
import com.xinelu.manage.vo.specialdiseaseroutepackage.SpecialDiseaseRoutePackageVO;
import java.util.List;
import lombok.Data;
/**
* @description: 专病管理路径信息包含子路径
* @author: haown
* @create: 2024-06-14 10:03
**/
@Data
public class SpecialDiseaseRouteInfoVo extends SpecialDiseaseRoute {
/**
* 专病路径信息
*/
private Long specialDiseaseRouteId;
/**
* 总数
*/
private Long totalNumber;
/**
* 进度
*/
private Long agreeNumber;
/**
* 发布状态
*/
private String releaseStatus;
/**
* 子路径列表
*/
List<SpecialDiseaseRouteInfoVo> childrenRouteList;
List<SpecialDiseaseRoutePackageVO> routePackageList;
}

View File

@ -16,6 +16,7 @@
<result property="diseaseTypeId" column="disease_type_id"/>
<result property="diseaseTypeName" column="disease_type_name"/>
<result property="routeId" column="route_id"/>
<result property="parentRouteId" column="parent_route_id"/>
<result property="routeName" column="route_name"/>
<result property="taskCreateType" column="task_create_type"/>
<result property="version" column="version"/>
@ -42,6 +43,7 @@
<result property="diseaseTypeId" column="disease_type_id"/>
<result property="diseaseTypeName" column="disease_type_name"/>
<result property="routeId" column="route_id"/>
<result property="parentRouteId" column="parent_route_id"/>
<result property="routeName" column="route_name"/>
<result property="taskCreateType" column="task_create_type"/>
<result property="version" column="version"/>
@ -129,7 +131,7 @@
</resultMap>
<sql id="selectSignPatientManageRouteVo">
select id, sign_patient_record_id, patient_id, patient_name, department_id, department_name, service_package_id, package_name, disease_type_id, disease_type_name, route_id, route_name, task_create_type, version, route_classify, suit_range, route_sort, route_remark, create_by, create_time, update_by, update_time from sign_patient_manage_route
select id, sign_patient_record_id, patient_id, patient_name, department_id, department_name, service_package_id, package_name, disease_type_id, disease_type_name, route_id, parent_route_id, route_name, task_create_type, version, route_classify, suit_range, route_sort, route_remark, create_by, create_time, update_by, update_time from sign_patient_manage_route
</sql>
<select id="selectSignPatientManageRouteList" parameterType="com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute" resultMap="SignPatientManageRouteResult">
@ -162,6 +164,12 @@
<if test="diseaseTypeName != null and diseaseTypeName != ''">
and disease_type_name like concat('%', #{diseaseTypeName}, '%')
</if>
<if test="parentRouteId == null">
and parent_route_id = 0
</if>
<if test="parentRouteId != null ">
and parent_route_id = #{parentRouteId}
</if>
<if test="routeName != null and routeName != ''">
and route_name like concat('%', #{routeName}, '%')
</if>
@ -468,6 +476,8 @@
</if>
<if test="routeId != null">route_id,
</if>
<if test="parentRouteId != null">parent_route_id,
</if>
<if test="routeName != null">route_name,
</if>
<if test="taskCreateType != null">task_create_type,
@ -512,6 +522,8 @@
</if>
<if test="routeId != null">#{routeId},
</if>
<if test="parentRouteId != null">#{parentRouteId},
</if>
<if test="routeName != null">#{routeName},
</if>
<if test="taskCreateType != null">#{taskCreateType},
@ -570,6 +582,9 @@
<if test="routeId != null">route_id =
#{routeId},
</if>
<if test="parentRouteId != null">parent_route_id =
#{parentRouteId},
</if>
<if test="routeName != null">route_name =
#{routeName},
</if>

View File

@ -46,6 +46,31 @@
<collection property="routePackageList" javaType="java.util.List"
resultMap="SpecialDiseaseRoutePackageResult"/>
</resultMap>
<resultMap type="com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteInfoVo" id="SpecialDiseaseRouteInfoVOResult">
<result property="specialDiseaseRouteId" column="specialDiseaseRouteId"/>
<result property="departmentId" column="department_id"/>
<result property="departmentName" column="department_name"/>
<result property="diseaseTypeId" column="disease_type_id"/>
<result property="diseaseTypeName" column="disease_type_name"/>
<result property="routeName" column="route_name"/>
<result property="routeCode" column="route_code"/>
<result property="version" column="version"/>
<result property="routeClassify" column="route_classify"/>
<result property="releaseStatus" column="release_status"/>
<result property="suitRange" column="suit_range"/>
<result property="routeSort" column="route_sort"/>
<result property="agreeNumber" column="agreeNumber"/>
<result property="totalNumber" column="totalNumber"/>
<collection
property="childrenRouteList"
ofType="com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteInfoVo"
column="specialDiseaseRouteId"
select="getChildList"
/>
<collection property="routePackageList" javaType="java.util.List"
resultMap="SpecialDiseaseRoutePackageResult"/>
</resultMap>
<resultMap type="com.xinelu.manage.vo.specialdiseasetriggercondition.TriggerConditionVO"
id="SpecialDiseaseTriggerConditionResult">
<result property="triggerConditionId" column="triggerConditionId"/>
@ -175,6 +200,12 @@
<if test="diseaseTypeName != null and diseaseTypeName != ''">
and sdr.disease_type_name like concat('%', #{diseaseTypeName}, '%')
</if>
<if test="parentRouteId == null">
and sdr.parent_route_id = 0
</if>
<if test="parentRouteId != null">
and sdr.parent_route_id = #{parentRouteId}
</if>
<if test="routeName != null and routeName != ''">
and sdr.route_name like concat('%', #{routeName}, '%')
</if>
@ -425,6 +456,74 @@
where sdr.id = #{id}
</select>
<select id="getRouteAndChild" resultType="com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteInfoVo"
resultMap="SpecialDiseaseRouteInfoVOResult">
select sdr.id,
sdr.id specialDiseaseRouteId,
sdr.parent_route_id,
sdr.department_id,
sdr.department_name,
sdr.disease_type_id,
sdr.disease_type_name,
sdr.route_name,
sdr.route_code,
sdr.version,
sdr.route_classify,
sdr.release_status,
sdr.suit_range,
sdr.route_sort,
sdr.route_remark,
sdrp.id specialDiseaseRoutePackageId,
sdrp.route_id,
sdrp.service_package_id,
sdrp.route_name,
sdrp.package_name,
(select COUNT(1)
from special_disease_node
where route_id = specialDiseaseRouteId) totalNumber,
(select COUNT(1)
from special_disease_node
where route_id = specialDiseaseRouteId
and route_check_status = 'AGREE') agreeNumber
from special_disease_route sdr
LEFT JOIN special_disease_route_package sdrp ON sdr.id = sdrp.route_id
<where>
<if test="id != null">
and sdr.id = #{id}
</if>
</where>
</select>
<select id="getChildList" resultType="com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteInfoVo" resultMap="SpecialDiseaseRouteInfoVOResult">
select
sdr.id,
sdr.id specialDiseaseRouteId,
sdr.parent_route_id,
sdr.department_id,
sdr.department_name,
sdr.disease_type_id,
sdr.disease_type_name,
sdr.route_name,
sdr.route_code,
sdr.version,
sdr.route_classify,
sdr.release_status,
sdr.suit_range,
sdr.route_sort,
sdr.route_remark,
(select COUNT(1)
from special_disease_node
where route_id = specialDiseaseRouteId) totalNumber,
(select COUNT(1)
from special_disease_node
where route_id = specialDiseaseRouteId
and route_check_status = 'AGREE') agreeNumber
from special_disease_route sdr
<where>
sdr.parent_route_id = #{specialDiseaseRouteId}
</where>
</select>
<select id="selectRouteCheckStatus" resultType="java.lang.String">
select route_check_status
from special_disease_node