From 257830f5cae6a7a897c1ed62c83b451f6e009d74 Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Mon, 12 Aug 2024 14:30:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=8B=E9=9A=86=E5=8F=8A=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=BB=A3=E5=8A=9E=E5=88=97=E8=A1=A8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SpecialDiseaseRouteServiceImpl.java | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) 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 c3ae81f3..a9e6a695 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 @@ -402,4 +402,127 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi }); return manageNodeAuditList; } + + /** + * 克隆节点路径 + * + * @param id 路径id + * @return AjaxResult + */ + @Transactional(rollbackFor = Exception.class) + @Override + public AjaxResult cloneRoute(Long id) { + //主路径 + SpecialDiseaseRoute specialDiseaseRoute = specialDiseaseRouteMapper.selectSpecialDiseaseRouteById(id); + specialDiseaseRoute.setId(null); + specialDiseaseRoute.setRouteCode(Constants.ROUTE_CODE + generateSystemCodeUtil.generateSystemCode(Constants.ROUTE_CODE)); + specialDiseaseRoute.setRouteName(specialDiseaseRoute.getRouteName() + "-副本"); + specialDiseaseRoute.setCreateBy(SecurityUtils.getUsername()); + specialDiseaseRoute.setReleaseStatus(ReleaseStatusEnum.UNPUBLISHED.getInfo()); + specialDiseaseRoute.setCreateTime(LocalDateTime.now()); + //判断名称重复 + extracted(specialDiseaseRoute); + int routeCount = specialDiseaseRouteMapper.insertSpecialDiseaseRoute(specialDiseaseRoute); + if (routeCount <= 0) { + log.info("新增主路径失败!"); + throw new ServiceException("克隆失败!"); + } + //子路径查询新增 + List specialDiseaseRouteIds = new ArrayList<>(); + List childSpecialDiseaseRoute = specialDiseaseRouteMapper.getChildSpecialDiseaseRoute(id); + if (CollectionUtils.isNotEmpty(childSpecialDiseaseRoute)) { + specialDiseaseRouteIds = childSpecialDiseaseRoute.stream().filter(Objects::nonNull).map(SpecialDiseaseRoute::getId).filter(Objects::nonNull).collect(Collectors.toList()); + childSpecialDiseaseRoute.forEach(item -> { + item.setParentRouteId(specialDiseaseRoute.getId()); + item.setRouteCode(Constants.ROUTE_CODE + generateSystemCodeUtil.generateSystemCode(Constants.ROUTE_CODE)); + item.setReleaseStatus(ReleaseStatusEnum.UNPUBLISHED.getInfo()); + item.setCreateBy(SecurityUtils.getUsername()); + item.setCreateTime(LocalDateTime.now()); + }); + int childCount = specialDiseaseRouteMapper.insertSpecialDiseaseRouteList(childSpecialDiseaseRoute); + if (childCount <= 0) { + log.info("新增子路径失败!"); + throw new ServiceException("克隆失败!"); + } + } + //主路径节点 + List specialDiseaseNodeList = new ArrayList<>(); + specialDiseaseRouteIds.add(id); + List specialDiseaseNodes = specialDiseaseNodeMapper.selectSpecialDiseaseNodes(specialDiseaseRouteIds); + if (CollectionUtils.isNotEmpty(specialDiseaseNodes)) { + for (SpecialDiseaseNode specialDiseaseNode : specialDiseaseNodes) { + SpecialDiseaseNodeVO specialDiseaseNodeVO = new SpecialDiseaseNodeVO(); + BeanUtils.copyProperties(specialDiseaseNode, specialDiseaseNodeVO); + if (specialDiseaseNode.getRouteId().equals(id)) { + specialDiseaseNode.setRouteId(specialDiseaseRoute.getId()); + } else { + OriginalSpecialDiseaseRoute originalSpecialDiseaseRoute = childSpecialDiseaseRoute.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getOriginalSpecialDiseaseRouteId()) && specialDiseaseNode.getRouteId().equals(item.getOriginalSpecialDiseaseRouteId())).findFirst().orElse(new OriginalSpecialDiseaseRoute()); + specialDiseaseNode.setRouteId(originalSpecialDiseaseRoute.getId()); + } + specialDiseaseNodeVO.setId(null); + specialDiseaseNodeVO.setRouteId(specialDiseaseRoute.getId()); + specialDiseaseNodeVO.setRouteCheckStatus(null); + specialDiseaseNodeVO.setRouteCheckPerson(null); + specialDiseaseNodeVO.setRouteCheckDate(null); + specialDiseaseNodeVO.setRouteCheckRemark(null); + specialDiseaseNodeVO.setCreateBy(SecurityUtils.getUsername()); + specialDiseaseNodeVO.setCreateTime(LocalDateTime.now()); + specialDiseaseNodes.add(specialDiseaseNodeVO); + } + int nodeCount = specialDiseaseNodeMapper.insertSpecialDiseaseNodeList(specialDiseaseNodeList); + if (nodeCount < 0) { + log.info("新增主路径节点失败!"); + throw new ServiceException("克隆失败!"); + } + } + SpecialDiseaseRoutePackage specialDiseaseRoutePackage = new SpecialDiseaseRoutePackage(); + specialDiseaseRoutePackage.setRouteId(id); + List specialDiseaseRoutePackages = specialDiseaseRoutePackageMapper.selectSpecialDiseaseRoutePackageList(specialDiseaseRoutePackage); + if (CollectionUtils.isNotEmpty(specialDiseaseRoutePackages)) { + specialDiseaseRoutePackages.forEach(item -> { + item.setId(null); + item.setRouteId(specialDiseaseRoute.getId()); + item.setCreateBy(SecurityUtils.getUsername()); + item.setCreateTime(LocalDateTime.now()); + }); + int packageCount = specialDiseaseRoutePackageMapper.insertSpecialDiseaseRoutePackageList(specialDiseaseRoutePackages); + if (packageCount < 0) { + log.info("新增服务包失败!"); + throw new ServiceException("克隆失败!"); + } + SpecialDiseaseTriggerCondition specialDiseaseTriggerCondition = new SpecialDiseaseTriggerCondition(); + specialDiseaseTriggerCondition.setRouteId(id); + List specialDiseaseTriggerConditions = specialDiseaseTriggerConditionMapper.selectSpecialDiseaseTriggerConditionList(specialDiseaseTriggerCondition); + if (CollectionUtils.isNotEmpty(specialDiseaseTriggerConditions)) { + specialDiseaseTriggerConditions.forEach(item -> { + item.setId(null); + item.setRouteId(specialDiseaseRoute.getId()); + item.setCreateBy(SecurityUtils.getUsername()); + item.setCreateTime(LocalDateTime.now()); + }); + int conditionCount = specialDiseaseTriggerConditionMapper.insertTriggerConditionList(specialDiseaseTriggerConditions); + if (conditionCount < 0) { + log.info("新增触发条件失败!"); + throw new ServiceException("克隆失败!"); + } + } + } + return AjaxResult.success(); + } + + /** + * 数据组装 + * + * @param specialDiseaseRoute 路径信息 + */ + private void extracted(SpecialDiseaseRoute specialDiseaseRoute) { + List specialDiseaseRoutes = specialDiseaseRouteMapper.selectCountByName(specialDiseaseRoute.getDepartmentId(), specialDiseaseRoute.getRouteName()); + if (CollectionUtils.isNotEmpty(specialDiseaseRoutes)) { + List collect = specialDiseaseRoutes.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId()) && !specialDiseaseRoute.getId().equals(item.getId())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(collect)) { + specialDiseaseRoute.setRouteName(specialDiseaseRoute.getRouteName() + "-副本"); + extracted(specialDiseaseRoute); + } + } + } }