Browse Source

合同管理-配置服务目录生成巡检计划

ops-management-platform-backend-dev
gjh 4 weeks ago
parent
commit
b287b8f9b1
  1. 11
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ContractInfoController.java
  2. 12
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/InspectionPlanInfoController.java
  3. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/InspectionPlanInfo.java
  4. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/InspectionPlanInfoBo.java
  5. 10
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/AgreementInfoDto.java
  6. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/InspectionPlanInfoVo.java
  7. 25
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/ServiceCatalogCategoryMapper.java
  8. 9
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java
  9. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IInspectionPlanInfoService.java
  10. 9
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IProjectInfoService.java
  11. 4
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IServiceCatalogCategoryService.java
  12. 21
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java
  13. 70
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/InspectionPlanInfoServiceImpl.java
  14. 7
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ServiceCatalogCategoryServiceImpl.java

11
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<ContractInfo> queryContractInfoByProjectId(@NotNull(message = "项目id不能为空")
@Param("projectId") String projectId) {
return R.ok(contractInfoService.queryContractInfoByProjectId(projectId));
}
}

12
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<Void> createPlans(@NotNull(message = "主键不能为空")
@Param("contractId") String contractId,
@Param("categoryId") String categoryId) {
inspectionPlanInfoService.createPlans(contractId,categoryId);
return R.ok("创建巡检计划成功!");
}
}

2
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;
/**
* 当前状态

2
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;
/**
* 当前状态

10
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;
}

2
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;
/**
* 当前状态

25
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<ServiceCatalogCategory, ServiceCatalogCategoryVo> {
@Select("select id,category_name as categoryName from service_catalog_category")
List<ServiceCatalogSelectVo> 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<AgreementInfoDto> findLeafNodeIds(@Param("rootId") String rootId);
}

9
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<String> ids, Boolean isValid);
/**
* 根据项目id查询合同信息
* @param projectId
* @return
*/
ContractInfo queryContractInfoByProjectId(String projectId);
}

2
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IInspectionPlanInfoService.java

@ -65,4 +65,6 @@ public interface IInspectionPlanInfoService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
void createPlans(String contractId, String categoryId);
}

9
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<ProjectSelectVo> getNames();
/**
* 根据项目名称查询项目信息
* @param projectName
* @return
*/
// ProjectInfo getProjectInfoByName(String projectName);
}

4
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<ServiceCatalogSelectVo> queryAllCatalogName();
boolean saveByBo(ServiceCatalogCategoryBo bo);
List<AgreementInfoDto> findLeafNodeIds(String rootId);
}

21
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<ContractInfo> lqw = Wrappers.lambdaQuery();
lqw.eq(ContractInfo::getProjectName, projectName);
ContractInfo contractInfo = baseMapper.selectOne(lqw);
return contractInfo;
}
}
return null;
}
}

70
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<AgreementInfo> agreementInfos = new ArrayList<>();
// 根据服务目录最外层id获取到所有服务最里层id
List<AgreementInfoDto> agreementInfoDtoList = serviceCatalogCategoryService.findLeafNodeIds(categoryId);
// 将id收集放入新的集合
List<String> leafNodeIds =agreementInfoDtoList.stream()
.map(AgreementInfoDto::getId)
.collect(Collectors.toList());
for (String leafNodeId : leafNodeIds) {
LambdaQueryWrapper<AgreementInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AgreementInfo::getServiceCategoryId, leafNodeId);
List<AgreementInfo> 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("开始新增巡检计划!");
}
}
}

7
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<AgreementInfoDto> findLeafNodeIds(String rootId) {
List<AgreementInfoDto> leafNodeIds = baseMapper.findLeafNodeIds(rootId);
return leafNodeIds;
}
}

Loading…
Cancel
Save