From b287b8f9b1b12beb5129bc1201a24665ce367bec Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Tue, 8 Apr 2025 17:39:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86-=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=9C=8D=E5=8A=A1=E7=9B=AE=E5=BD=95=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=B7=A1=E6=A3=80=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ContractInfoController.java | 11 +++ .../InspectionPlanInfoController.java | 12 ++++ .../platform/domain/InspectionPlanInfo.java | 2 +- .../domain/bo/InspectionPlanInfoBo.java | 2 +- .../platform/domain/dto/AgreementInfoDto.java | 10 +++ .../domain/vo/InspectionPlanInfoVo.java | 2 +- .../mapper/ServiceCatalogCategoryMapper.java | 25 +++++++ .../service/IContractInfoService.java | 9 +++ .../service/IInspectionPlanInfoService.java | 2 + .../platform/service/IProjectInfoService.java | 9 +++ .../IServiceCatalogCategoryService.java | 4 ++ .../service/impl/ContractInfoServiceImpl.java | 21 ++++++ .../impl/InspectionPlanInfoServiceImpl.java | 70 ++++++++++++++++++- .../ServiceCatalogCategoryServiceImpl.java | 7 ++ 14 files changed, 180 insertions(+), 6 deletions(-) create mode 100644 ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/AgreementInfoDto.java diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ContractInfoController.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ContractInfoController.java index a01e2d9..1dc7b8b 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ContractInfoController.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ContractInfoController.java @@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.apache.ibatis.annotations.Param; +import org.dromara.platform.domain.ContractInfo; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -102,4 +104,13 @@ public class ContractInfoController extends BaseController { @PathVariable String[] ids) { return toAjax(contractInfoService.deleteWithValidByIds(List.of(ids), true)); } + + + + @SaCheckPermission("platform:contractInfo:queryContractInfoByProjectId") + @GetMapping("/queryContractInfoByProjectId") + public R queryContractInfoByProjectId(@NotNull(message = "项目id不能为空") + @Param("projectId") String projectId) { + return R.ok(contractInfoService.queryContractInfoByProjectId(projectId)); + } } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/InspectionPlanInfoController.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/InspectionPlanInfoController.java index d6e0854..d6519d4 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/InspectionPlanInfoController.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/InspectionPlanInfoController.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.apache.ibatis.annotations.Param; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -102,4 +103,15 @@ public class InspectionPlanInfoController extends BaseController { @PathVariable String[] ids) { return toAjax(inspectionPlanInfoService.deleteWithValidByIds(List.of(ids), true)); } + + + @SaCheckPermission("platform:inspectPlanInfo:createPlans") + @GetMapping("/createPlans") + public R createPlans(@NotNull(message = "主键不能为空") + @Param("contractId") String contractId, + @Param("categoryId") String categoryId) { + inspectionPlanInfoService.createPlans(contractId,categoryId); + return R.ok("创建巡检计划成功!"); + } + } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/InspectionPlanInfo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/InspectionPlanInfo.java index d784f88..a750582 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/InspectionPlanInfo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/InspectionPlanInfo.java @@ -57,7 +57,7 @@ public class InspectionPlanInfo extends TenantEntity { /** * 频次 */ - private Long frequency; + private String frequency; /** * 当前状态 diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/InspectionPlanInfoBo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/InspectionPlanInfoBo.java index 66bc38d..b1aa8e8 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/InspectionPlanInfoBo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/InspectionPlanInfoBo.java @@ -62,7 +62,7 @@ public class InspectionPlanInfoBo extends BaseEntity { * 频次 */ @NotNull(message = "频次不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long frequency; + private String frequency; /** * 当前状态 diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/AgreementInfoDto.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/AgreementInfoDto.java new file mode 100644 index 0000000..fd6a0eb --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/AgreementInfoDto.java @@ -0,0 +1,10 @@ +package org.dromara.platform.domain.dto; + +import lombok.Data; +import org.dromara.common.tenant.core.TenantEntity; + +@Data +public class AgreementInfoDto extends TenantEntity { + private String id; + +} diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/InspectionPlanInfoVo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/InspectionPlanInfoVo.java index 04ff353..51dbd07 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/InspectionPlanInfoVo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/InspectionPlanInfoVo.java @@ -70,7 +70,7 @@ public class InspectionPlanInfoVo implements Serializable { * 频次 */ @ExcelProperty(value = "频次") - private Long frequency; + private String frequency; /** * 当前状态 diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/ServiceCatalogCategoryMapper.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/ServiceCatalogCategoryMapper.java index b62a26f..2630684 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/ServiceCatalogCategoryMapper.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/ServiceCatalogCategoryMapper.java @@ -1,7 +1,9 @@ package org.dromara.platform.mapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.dromara.platform.domain.ServiceCatalogCategory; +import org.dromara.platform.domain.dto.AgreementInfoDto; import org.dromara.platform.domain.vo.ServiceCatalogCategoryVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.platform.domain.vo.ServiceCatalogSelectVo; @@ -17,4 +19,27 @@ import java.util.List; public interface ServiceCatalogCategoryMapper extends BaseMapperPlus { @Select("select id,category_name as categoryName from service_catalog_category") List getServiceCatalogSelectVo(); + + + /** + * 通过最外层id 查询所有叶子节点id + * @param rootId + * @return + */ + @Select({ + "WITH RECURSIVE category_tree AS (", + "SELECT id,tenant_id FROM service_catalog_category WHERE id = #{rootId}", + "UNION ALL", + "SELECT t.id ,t.tenant_id FROM service_catalog_category t", + "INNER JOIN category_tree ct ON t.owner_id = ct.id", + ")", + "SELECT id FROM category_tree", + "WHERE id NOT IN (SELECT DISTINCT owner_id FROM service_catalog_category WHERE owner_id IS NOT NULL)", + "AND id != #{rootId}" + }) + List findLeafNodeIds(@Param("rootId") String rootId); + + + + } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java index f89db64..592c522 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java @@ -1,5 +1,6 @@ package org.dromara.platform.service; +import org.dromara.platform.domain.ContractInfo; import org.dromara.platform.domain.vo.ContractInfoVo; import org.dromara.platform.domain.bo.ContractInfoBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -65,4 +66,12 @@ public interface IContractInfoService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 根据项目id查询合同信息 + * @param projectId + * @return + */ + ContractInfo queryContractInfoByProjectId(String projectId); + } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IInspectionPlanInfoService.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IInspectionPlanInfoService.java index ee082b5..a708311 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IInspectionPlanInfoService.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IInspectionPlanInfoService.java @@ -65,4 +65,6 @@ public interface IInspectionPlanInfoService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + void createPlans(String contractId, String categoryId); } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IProjectInfoService.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IProjectInfoService.java index 68e6cb5..c5d8da6 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IProjectInfoService.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IProjectInfoService.java @@ -1,5 +1,7 @@ package org.dromara.platform.service; +import org.dromara.platform.domain.ContractInfo; +import org.dromara.platform.domain.ProjectInfo; import org.dromara.platform.domain.vo.ProjectInfoVo; import org.dromara.platform.domain.bo.ProjectInfoBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -73,4 +75,11 @@ public interface IProjectInfoService { * @return 项目信息名称列表 */ List getNames(); + + /** + * 根据项目名称查询项目信息 + * @param projectName + * @return + */ +// ProjectInfo getProjectInfoByName(String projectName); } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IServiceCatalogCategoryService.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IServiceCatalogCategoryService.java index 424e443..2cd1b87 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IServiceCatalogCategoryService.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IServiceCatalogCategoryService.java @@ -1,6 +1,7 @@ package org.dromara.platform.service; import org.dromara.platform.domain.ServiceCatalogCategory; +import org.dromara.platform.domain.dto.AgreementInfoDto; import org.dromara.platform.domain.vo.ServiceCatalogSelectVo; import org.dromara.platform.domain.vo.ServiceCatalogCategoryVo; import org.dromara.platform.domain.bo.ServiceCatalogCategoryBo; @@ -84,4 +85,7 @@ public interface IServiceCatalogCategoryService { List queryAllCatalogName(); boolean saveByBo(ServiceCatalogCategoryBo bo); + + + List findLeafNodeIds(String rootId); } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java index ba0fb79..718d1fd 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.platform.service.impl; +import jakarta.annotation.Resource; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -8,6 +9,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.platform.domain.vo.ProjectInfoVo; +import org.dromara.platform.service.IProjectInfoService; import org.springframework.stereotype.Service; import org.dromara.platform.domain.bo.ContractInfoBo; import org.dromara.platform.domain.vo.ContractInfoVo; @@ -31,6 +34,9 @@ public class ContractInfoServiceImpl implements IContractInfoService { private final ContractInfoMapper baseMapper; + @Resource + private IProjectInfoService projectInfoService; + /** * 查询合同信息 * @@ -143,4 +149,19 @@ public class ContractInfoServiceImpl implements IContractInfoService { } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public ContractInfo queryContractInfoByProjectId(String projectId) { + ProjectInfoVo projectInfoVo = projectInfoService.queryById(projectId); + if (projectInfoVo != null) { + String projectName = projectInfoVo.getProjectName(); + if (StringUtils.isNotBlank(projectName)) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(ContractInfo::getProjectName, projectName); + ContractInfo contractInfo = baseMapper.selectOne(lqw); + return contractInfo; + } + } + return null; + } } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/InspectionPlanInfoServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/InspectionPlanInfoServiceImpl.java index e51cb3b..446e609 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/InspectionPlanInfoServiceImpl.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/InspectionPlanInfoServiceImpl.java @@ -1,5 +1,7 @@ package org.dromara.platform.service.impl; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -8,6 +10,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.platform.domain.AgreementInfo; +import org.dromara.platform.domain.dto.AgreementInfoDto; +import org.dromara.platform.domain.vo.AgreementInfoVo; +import org.dromara.platform.domain.vo.ContractInfoVo; +import org.dromara.platform.mapper.AgreementInfoMapper; +import org.dromara.platform.service.IAgreementInfoService; +import org.dromara.platform.service.IContractInfoService; +import org.dromara.platform.service.IServiceCatalogCategoryService; import org.springframework.stereotype.Service; import org.dromara.platform.domain.bo.InspectionPlanInfoBo; import org.dromara.platform.domain.vo.InspectionPlanInfoVo; @@ -15,9 +25,8 @@ import org.dromara.platform.domain.InspectionPlanInfo; import org.dromara.platform.mapper.InspectionPlanInfoMapper; import org.dromara.platform.service.IInspectionPlanInfoService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; /** * 巡检计划Service业务层处理 @@ -27,10 +36,22 @@ import java.util.Collection; */ @RequiredArgsConstructor @Service +@Slf4j public class InspectionPlanInfoServiceImpl implements IInspectionPlanInfoService { private final InspectionPlanInfoMapper baseMapper; + @Resource + private IContractInfoService contractInfoService; + + @Resource + private IServiceCatalogCategoryService serviceCatalogCategoryService; + + @Resource + private IAgreementInfoService agreementInfoService; + + @Resource + private AgreementInfoMapper agreementInfoMapper; /** * 查询巡检计划 * @@ -136,4 +157,47 @@ public class InspectionPlanInfoServiceImpl implements IInspectionPlanInfoService } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public void createPlans(String contractId, String categoryId) { + ContractInfoVo contractInfoVo = contractInfoService.queryById(contractId); + // 获取到通用数据 + String contractName = contractInfoVo.getContractName(); + String projectName = contractInfoVo.getProjectName(); + Date startDate = contractInfoVo.getStartDate(); + Date endDate = contractInfoVo.getEndDate(); + + // 初始化待新增的协议信息集合 + List agreementInfos = new ArrayList<>(); + // 根据服务目录最外层id获取到所有服务最里层id + List agreementInfoDtoList = serviceCatalogCategoryService.findLeafNodeIds(categoryId); + // 将id收集放入新的集合 + List leafNodeIds =agreementInfoDtoList.stream() + .map(AgreementInfoDto::getId) + .collect(Collectors.toList()); + + for (String leafNodeId : leafNodeIds) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AgreementInfo::getServiceCategoryId, leafNodeId); + List infoList = agreementInfoMapper.selectList(queryWrapper); + agreementInfos.addAll(infoList); + + } + agreementInfos.forEach(item -> log.info("agreementInfo:{}", item.getServiceContent())); + for (AgreementInfo agreementInfo : agreementInfos) { + InspectionPlanInfo inspectionPlanInfo = new InspectionPlanInfo(); + inspectionPlanInfo.setProjectName(projectName); + inspectionPlanInfo.setContractName(contractName); + inspectionPlanInfo.setStartDate(startDate); + inspectionPlanInfo.setEndDate(endDate); + inspectionPlanInfo.setDescription(agreementInfo.getServiceContent()); + inspectionPlanInfo.setFrequency(agreementInfo.getFrequency()); + inspectionPlanInfo.setIoCompany("测试运维单位1"); + // 0未开始 1进行中 2已完成 + inspectionPlanInfo.setStatus(0L); + baseMapper.insert(inspectionPlanInfo); + log.info("开始新增巡检计划!"); + } + + } } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ServiceCatalogCategoryServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ServiceCatalogCategoryServiceImpl.java index 4db4147..a57333d 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ServiceCatalogCategoryServiceImpl.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ServiceCatalogCategoryServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.platform.domain.dto.AgreementInfoDto; import org.dromara.platform.domain.vo.ServiceCatalogSelectVo; import org.springframework.stereotype.Service; import org.dromara.platform.domain.bo.ServiceCatalogCategoryBo; @@ -257,4 +258,10 @@ public class ServiceCatalogCategoryServiceImpl implements IServiceCatalogCategor return false; } + + @Override + public List findLeafNodeIds(String rootId) { + List leafNodeIds = baseMapper.findLeafNodeIds(rootId); + return leafNodeIds; + } }