From da19bd67840b21ee19eb0b993763b64b829d4b2d Mon Sep 17 00:00:00 2001 From: haown <454902499@qq.com> Date: Tue, 18 Jun 2024 18:11:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=90=E8=B7=AF=E5=BE=84=E7=9A=84=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SpecialDiseaseRouteController.java | 27 +++- ...cialDiseaseTriggerConditionController.java | 29 +++-- .../SignPatientManageRoute.java | 5 + .../TriggerConditionDTO.java | 21 --- .../TriggerConditionDto.java | 23 ++++ .../TriggerConditionSaveDTO.java | 36 ++++++ .../TriggerConditionUpdateDto.java | 22 ++++ .../SpecialDiseaseRouteMapper.java | 14 ++ .../PatientNodeParamsCurrentServiceImpl.java | 2 +- ...SignPatientManageRouteNodeServiceImpl.java | 9 ++ .../impl/SignPatientRecordServiceImpl.java | 30 ++--- .../ISpecialDiseaseRouteService.java | 9 +- .../impl/SpecialDiseaseRouteServiceImpl.java | 7 +- ...SpecialDiseaseTriggerConditionService.java | 12 +- ...ialDiseaseTriggerConditionServiceImpl.java | 120 ++++++++++++++++-- .../SpecialDiseaseRouteInfoVo.java | 42 ++++++ .../SignPatientManageRouteMapper.xml | 17 ++- .../SpecialDiseaseRouteMapper.xml | 99 +++++++++++++++ 18 files changed, 445 insertions(+), 79 deletions(-) delete mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionDTO.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionDto.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionSaveDTO.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionUpdateDto.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/vo/specialdiseaseroute/SpecialDiseaseRouteInfoVo.java diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/specialdiseaseroute/SpecialDiseaseRouteController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/specialdiseaseroute/SpecialDiseaseRouteController.java index 561b0e8b..a14b6f52 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/specialdiseaseroute/SpecialDiseaseRouteController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/specialdiseaseroute/SpecialDiseaseRouteController.java @@ -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 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) { diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/specialdiseasetriggercondition/SpecialDiseaseTriggerConditionController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/specialdiseasetriggercondition/SpecialDiseaseTriggerConditionController.java index 4be8d296..a198750a 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/specialdiseasetriggercondition/SpecialDiseaseTriggerConditionController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/specialdiseasetriggercondition/SpecialDiseaseTriggerConditionController.java @@ -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,18 +86,18 @@ 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)); } - /** + /** * 修改触发条件关系 */ @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)); } /** diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroute/SignPatientManageRoute.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroute/SignPatientManageRoute.java index bb8f02cb..e89a9dfb 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroute/SignPatientManageRoute.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/signpatientmanageroute/SignPatientManageRoute.java @@ -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 = "任务名称") diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionDTO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionDTO.java deleted file mode 100644 index 8aa35ae8..00000000 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionDTO.java +++ /dev/null @@ -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 triggerConditionList; -} \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionDto.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionDto.java new file mode 100644 index 00000000..768d424f --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionDto.java @@ -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; +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionSaveDTO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionSaveDTO.java new file mode 100644 index 00000000..c4dba6ef --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionSaveDTO.java @@ -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 triggerConditionList; +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionUpdateDto.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionUpdateDto.java new file mode 100644 index 00000000..cf0f8b76 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/specialdiseasetriggercondition/TriggerConditionUpdateDto.java @@ -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 triggerConditionList; +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/specialdiseaseroute/SpecialDiseaseRouteMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/specialdiseaseroute/SpecialDiseaseRouteMapper.java index f832e242..7461b076 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/specialdiseaseroute/SpecialDiseaseRouteMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/specialdiseaseroute/SpecialDiseaseRouteMapper.java @@ -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 getChildList(@Param("specialDiseaseRouteId")Long specialDiseaseRouteId); /** * 查询未审核节点状态 * diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientnodeparamscurrent/impl/PatientNodeParamsCurrentServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientnodeparamscurrent/impl/PatientNodeParamsCurrentServiceImpl.java index b63c71dd..066b5161 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientnodeparamscurrent/impl/PatientNodeParamsCurrentServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientnodeparamscurrent/impl/PatientNodeParamsCurrentServiceImpl.java @@ -166,7 +166,7 @@ public class PatientNodeParamsCurrentServiceImpl implements IPatientNodeParamsCu paramsLogList.add(paramsLog); }); patientNodeParamsLogMapper.insertList(paramsLogList); - // 生成任务 + // 生成任务---判断是否为主路径,主路径直接生成任务,子路径触发条件成立则生成任务 manageRouteNodeService.updateTaskWithParam(paramsList); } } 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 e086803e..cafcd3b4 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 @@ -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; diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientrecord/impl/SignPatientRecordServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientrecord/impl/SignPatientRecordServiceImpl.java index 7e3ef2f5..cd072c7d 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientrecord/impl/SignPatientRecordServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientrecord/impl/SignPatientRecordServiceImpl.java @@ -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 triggerConditions = triggerConditionMapper.selectSpecialDiseaseTriggerConditionList(triggerConditionQuery); - if (!CollectionUtils.isEmpty(triggerConditions)) { - List 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 triggerConditions = triggerConditionMapper.selectSpecialDiseaseTriggerConditionList(triggerConditionQuery); + //if (!CollectionUtils.isEmpty(triggerConditions)) { + // List 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())) { diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/ISpecialDiseaseRouteService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/ISpecialDiseaseRouteService.java index b2e78a39..2e554af4 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/ISpecialDiseaseRouteService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/ISpecialDiseaseRouteService.java @@ -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); + /** * 查询专病路径信息列表 * diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/impl/SpecialDiseaseRouteServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/impl/SpecialDiseaseRouteServiceImpl.java index da7f04bd..5cf68705 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/impl/SpecialDiseaseRouteServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/impl/SpecialDiseaseRouteServiceImpl.java @@ -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,7 +67,11 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi return specialDiseaseRouteMapper.selectSpecialDiseaseRouteAndTriggerById(id); } - /** + @Override public SpecialDiseaseRouteInfoVo getById(Long id) { + return specialDiseaseRouteMapper.getRouteAndChild(id); + } + + /** * 查询专病路径信息列表 * * @param specialDiseaseRoute 专病路径信息 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasetriggercondition/ISpecialDiseaseTriggerConditionService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasetriggercondition/ISpecialDiseaseTriggerConditionService.java index 5c027868..eadc07ba 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasetriggercondition/ISpecialDiseaseTriggerConditionService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasetriggercondition/ISpecialDiseaseTriggerConditionService.java @@ -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); /** * 批量删除触发条件关系 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasetriggercondition/impl/SpecialDiseaseTriggerConditionServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasetriggercondition/impl/SpecialDiseaseTriggerConditionServiceImpl.java index 992501ae..137c99ab 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasetriggercondition/impl/SpecialDiseaseTriggerConditionServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasetriggercondition/impl/SpecialDiseaseTriggerConditionServiceImpl.java @@ -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 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) { - specialDiseaseTriggerCondition.setUpdateTime(LocalDateTime.now()); - specialDiseaseTriggerCondition.setUpdateBy(SecurityUtils.getUsername()); - return specialDiseaseTriggerConditionMapper.updateSpecialDiseaseTriggerCondition(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 triggerConditionList = specialDiseaseTriggerConditionMapper.selectSpecialDiseaseTriggerConditionList(specialDiseaseTriggerCondition); + Long[] ids = triggerConditionList.stream().map(SpecialDiseaseTriggerCondition::getId).toArray(Long[]::new); + specialDiseaseTriggerConditionMapper.deleteSpecialDiseaseTriggerConditionByIds(ids); + + List 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()); + 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 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(); + } } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/specialdiseaseroute/SpecialDiseaseRouteInfoVo.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/specialdiseaseroute/SpecialDiseaseRouteInfoVo.java new file mode 100644 index 00000000..19d55a55 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/specialdiseaseroute/SpecialDiseaseRouteInfoVo.java @@ -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 childrenRouteList; + + List routePackageList; +} diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml index 75f4cf2e..def9d299 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml @@ -16,6 +16,7 @@ + @@ -42,6 +43,7 @@ + @@ -129,7 +131,7 @@ - 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 + + + +