09-20-巡检-试验计划,任务,纪录
This commit is contained in:
@ -0,0 +1,106 @@
|
|||||||
|
package org.dromara.inspection.controller;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestPlanVo;
|
||||||
|
import org.dromara.inspection.domain.bo.OpsInspectionTestPlanBo;
|
||||||
|
import org.dromara.inspection.service.IOpsInspectionTestPlanService;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验计划
|
||||||
|
* 前端访问路由地址为:/inspection/testPlan
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/testPlan")
|
||||||
|
public class OpsInspectionTestPlanController extends BaseController {
|
||||||
|
|
||||||
|
private final IOpsInspectionTestPlanService opsInspectionTestPlanService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运维-巡检-试验计划列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testPlan:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<OpsInspectionTestPlanVo> list(OpsInspectionTestPlanBo bo, PageQuery pageQuery) {
|
||||||
|
return opsInspectionTestPlanService.queryPageList(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出运维-巡检-试验计划列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testPlan:export")
|
||||||
|
@Log(title = "运维-巡检-试验计划", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(OpsInspectionTestPlanBo bo, HttpServletResponse response) {
|
||||||
|
List<OpsInspectionTestPlanVo> list = opsInspectionTestPlanService.queryList(bo);
|
||||||
|
ExcelUtil.exportExcel(list, "运维-巡检-试验计划", OpsInspectionTestPlanVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取运维-巡检-试验计划详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testPlan:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<OpsInspectionTestPlanVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("id") Long id) {
|
||||||
|
return R.ok(opsInspectionTestPlanService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增运维-巡检-试验计划
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testPlan:add")
|
||||||
|
@Log(title = "运维-巡检-试验计划", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionTestPlanBo bo) {
|
||||||
|
return toAjax(opsInspectionTestPlanService.insertByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改运维-巡检-试验计划
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testPlan:edit")
|
||||||
|
@Log(title = "运维-巡检-试验计划", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionTestPlanBo bo) {
|
||||||
|
return toAjax(opsInspectionTestPlanService.updateByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除运维-巡检-试验计划
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testPlan:remove")
|
||||||
|
@Log(title = "运维-巡检-试验计划", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable("ids") Long[] ids) {
|
||||||
|
return toAjax(opsInspectionTestPlanService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,116 @@
|
|||||||
|
package org.dromara.inspection.controller;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import org.dromara.inspection.service.impl.OpsInspectionTestTaskServiceImpl;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskVo;
|
||||||
|
import org.dromara.inspection.domain.bo.OpsInspectionTestTaskBo;
|
||||||
|
import org.dromara.inspection.service.IOpsInspectionTestTaskService;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验任务
|
||||||
|
* 前端访问路由地址为:/inspection/testTask
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/testTask")
|
||||||
|
public class OpsInspectionTestTaskController extends BaseController {
|
||||||
|
|
||||||
|
private final OpsInspectionTestTaskServiceImpl opsInspectionTestTaskService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运维-巡检-试验任务列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testTask:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<OpsInspectionTestTaskVo> list(OpsInspectionTestTaskBo bo, PageQuery pageQuery) {
|
||||||
|
return opsInspectionTestTaskService.queryPageList(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出运维-巡检-试验任务列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testTask:export")
|
||||||
|
@Log(title = "运维-巡检-试验任务", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(OpsInspectionTestTaskBo bo, HttpServletResponse response) {
|
||||||
|
List<OpsInspectionTestTaskVo> list = opsInspectionTestTaskService.queryList(bo);
|
||||||
|
ExcelUtil.exportExcel(list, "运维-巡检-试验任务", OpsInspectionTestTaskVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取运维-巡检-试验任务详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testTask:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<OpsInspectionTestTaskVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("id") Long id) {
|
||||||
|
return R.ok(opsInspectionTestTaskService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增运维-巡检-试验任务
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testTask:add")
|
||||||
|
@Log(title = "运维-巡检-试验任务", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionTestTaskBo bo) {
|
||||||
|
return toAjax(opsInspectionTestTaskService.insertByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改运维-巡检-试验任务
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testTask:edit")
|
||||||
|
@Log(title = "运维-巡检-试验任务", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionTestTaskBo bo) {
|
||||||
|
return toAjax(opsInspectionTestTaskService.updateByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除运维-巡检-试验任务
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("inspection:testTask:remove")
|
||||||
|
@Log(title = "运维-巡检-试验任务", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable("ids") Long[] ids) {
|
||||||
|
return toAjax(opsInspectionTestTaskService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SaCheckPermission("inspection:testTask:record")
|
||||||
|
@GetMapping("/record")
|
||||||
|
public R<Object> record(@RequestParam Long projectId){
|
||||||
|
return opsInspectionTestTaskService.record(projectId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,109 @@
|
|||||||
|
package org.dromara.inspection.domain;
|
||||||
|
|
||||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验计划对象 ops_inspection_test_plan
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("ops_inspection_test_plan")
|
||||||
|
public class OpsInspectionTestPlan extends BaseEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电站ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划名称
|
||||||
|
*/
|
||||||
|
private String planName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划编号
|
||||||
|
*/
|
||||||
|
private String planCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验对象类型,1安全试验2网络实验3性能试验4
|
||||||
|
*/
|
||||||
|
private String testObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Date beginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验目的与预期结果
|
||||||
|
*/
|
||||||
|
private String testInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验环境
|
||||||
|
*/
|
||||||
|
private String testSetting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人ID
|
||||||
|
*/
|
||||||
|
private Long personCharge;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参与人员IDS
|
||||||
|
*/
|
||||||
|
private String personIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义检查项
|
||||||
|
*/
|
||||||
|
private String inspectionItems;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验步骤
|
||||||
|
*/
|
||||||
|
private String testStep;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所需资源与设备
|
||||||
|
*/
|
||||||
|
private String testDevice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 风险评估与应对措施
|
||||||
|
*/
|
||||||
|
private String testSolutions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 申请状态 1已批准2进行中3已完成4草稿5未通过
|
||||||
|
*/
|
||||||
|
private String testStatus;
|
||||||
|
|
||||||
|
//1启动2停止
|
||||||
|
private String testPlanType;
|
||||||
|
}
|
||||||
@ -0,0 +1,147 @@
|
|||||||
|
package org.dromara.inspection.domain;
|
||||||
|
|
||||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验任务对象 ops_inspection_test_task
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("ops_inspection_test_task")
|
||||||
|
public class OpsInspectionTestTask extends BaseEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID(电站ID)
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务名称
|
||||||
|
*/
|
||||||
|
private String taskName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试对象
|
||||||
|
*/
|
||||||
|
private String testObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Date beginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private String timeInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行人员
|
||||||
|
*/
|
||||||
|
private Long person;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态,1待执行2暂停3失败4执行中5已完成
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联测试计划ID
|
||||||
|
*/
|
||||||
|
private Long testPlanId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验环境
|
||||||
|
*/
|
||||||
|
private String testSetting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始时间
|
||||||
|
*/
|
||||||
|
private Date planBeginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进度
|
||||||
|
*/
|
||||||
|
private Long progress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败原因
|
||||||
|
*/
|
||||||
|
private String failReason;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败时间
|
||||||
|
*/
|
||||||
|
private Date failTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败阶段
|
||||||
|
*/
|
||||||
|
private Long failPhase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败原因分析
|
||||||
|
*/
|
||||||
|
private String faileAnalyze;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 改进建议
|
||||||
|
*/
|
||||||
|
private String faileTips;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验时长(分钟)
|
||||||
|
*/
|
||||||
|
private Long testLongTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结果
|
||||||
|
*/
|
||||||
|
private String testFinal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结果详情
|
||||||
|
*/
|
||||||
|
private String finalInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 暂停原因
|
||||||
|
*/
|
||||||
|
private String pauseFor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 暂停时间
|
||||||
|
*/
|
||||||
|
private Date pauseTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划完成时间
|
||||||
|
*/
|
||||||
|
private Date planFinishTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,121 @@
|
|||||||
|
package org.dromara.inspection.domain.bo;
|
||||||
|
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestPlan;
|
||||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验计划业务对象 ops_inspection_test_plan
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@AutoMapper(target = OpsInspectionTestPlan.class, reverseConvertGenerate = false)
|
||||||
|
public class OpsInspectionTestPlanBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电站ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "电站ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划名称
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "计划名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String planName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划编号
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "计划编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String planCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验对象类型,1安全试验2网络实验3性能试验4
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "实验对象类型,1安全试验2网络实验3性能试验4不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String testObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Date beginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验目的与预期结果
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "试验目的与预期结果不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String testInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验环境
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "实验环境不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String testSetting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "负责人ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long personCharge;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参与人员IDS
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "参与人员IDS不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String personIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义检查项
|
||||||
|
*/
|
||||||
|
// @NotBlank(message = "自定义检查项不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String inspectionItems;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验步骤
|
||||||
|
*/
|
||||||
|
private String testStep;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所需资源与设备
|
||||||
|
*/
|
||||||
|
private String testDevice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 风险评估与应对措施
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "风险评估与应对措施不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String testSolutions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 申请状态 1已批准2进行中3已完成4草稿5未通过
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String testStatus;
|
||||||
|
|
||||||
|
//1启动2停止
|
||||||
|
private String testPlanType;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,154 @@
|
|||||||
|
package org.dromara.inspection.domain.bo;
|
||||||
|
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestTask;
|
||||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验任务业务对象 ops_inspection_test_task
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@AutoMapper(target = OpsInspectionTestTask.class, reverseConvertGenerate = false)
|
||||||
|
public class OpsInspectionTestTaskBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID(电站ID)
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目ID(电站ID)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务名称
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "任务名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String taskName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试对象
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "测试对象不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String testObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Date beginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String timeInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行人员
|
||||||
|
*/
|
||||||
|
@NotNull(message = "执行人员不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long person;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态,1待执行2暂停3失败4执行中5已完成
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "状态,1待执行2暂停3失败4执行中5已完成不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联测试计划ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "关联测试计划ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long testPlanId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验环境
|
||||||
|
*/
|
||||||
|
private String testSetting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始时间
|
||||||
|
*/
|
||||||
|
private Date planBeginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进度
|
||||||
|
*/
|
||||||
|
private Long progress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败原因
|
||||||
|
*/
|
||||||
|
private String failReason;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败时间
|
||||||
|
*/
|
||||||
|
private Date failTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败阶段
|
||||||
|
*/
|
||||||
|
private Long failPhase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败原因分析
|
||||||
|
*/
|
||||||
|
private String faileAnalyze;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 改进建议
|
||||||
|
*/
|
||||||
|
private String faileTips;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验时长(分钟)
|
||||||
|
*/
|
||||||
|
private Long testLongTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结果
|
||||||
|
*/
|
||||||
|
private String testFinal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结果详情
|
||||||
|
*/
|
||||||
|
private String finalInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 暂停原因
|
||||||
|
*/
|
||||||
|
private String pauseFor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 暂停时间
|
||||||
|
*/
|
||||||
|
private Date pauseTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划完成时间
|
||||||
|
*/
|
||||||
|
private Date planFinishTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,141 @@
|
|||||||
|
package org.dromara.inspection.domain.vo;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionItem;
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestPlan;
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.personnel.domain.OpsUser;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验计划视图对象 ops_inspection_test_plan
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = OpsInspectionTestPlan.class)
|
||||||
|
public class OpsInspectionTestPlanVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电站ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "电站ID")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划名称
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "计划名称")
|
||||||
|
private String planName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划编号
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "计划编号")
|
||||||
|
private String planCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验对象类型,1安全试验2网络实验3性能试验4
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "实验对象类型,1安全试验2网络实验3性能试验4")
|
||||||
|
private String testObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Date beginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验目的与预期结果
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "试验目的与预期结果")
|
||||||
|
private String testInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验环境
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "实验环境")
|
||||||
|
private String testSetting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 负责人ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "负责人ID")
|
||||||
|
private Long personCharge;
|
||||||
|
|
||||||
|
private OpsUserVo person;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参与人员IDS
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "参与人员IDS")
|
||||||
|
private String personIds;
|
||||||
|
|
||||||
|
private List<OpsUserVo> persons;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义检查项
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "自定义检查项")
|
||||||
|
private String inspectionItems;
|
||||||
|
|
||||||
|
private List<OpsInspectionItem> inspectionItemList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实验步骤
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "实验步骤")
|
||||||
|
private String testStep;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所需资源与设备
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "所需资源与设备")
|
||||||
|
private String testDevice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 风险评估与应对措施
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "风险评估与应对措施")
|
||||||
|
private String testSolutions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 申请状态 1已批准2进行中3已完成4草稿5未通过
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "状态")
|
||||||
|
private String testStatus;
|
||||||
|
|
||||||
|
//1启动2停止
|
||||||
|
private String testPlanType;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package org.dromara.inspection.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class OpsInspectionTestTaskRecord {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本月完成数
|
||||||
|
*/
|
||||||
|
private Long finishCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上月增加数
|
||||||
|
*/
|
||||||
|
private BigDecimal finishCountAdd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本月通过率
|
||||||
|
*/
|
||||||
|
private BigDecimal passValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过增长率
|
||||||
|
*/
|
||||||
|
private BigDecimal passValueAdd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待分析数
|
||||||
|
*/
|
||||||
|
private Long failCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平均测试时间
|
||||||
|
*/
|
||||||
|
private Long averageTestTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平均测试时间数增长率
|
||||||
|
*/
|
||||||
|
private BigDecimal averageTestTimeAdd;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,181 @@
|
|||||||
|
package org.dromara.inspection.domain.vo;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestTask;
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验任务视图对象 ops_inspection_test_task
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = OpsInspectionTestTask.class)
|
||||||
|
public class OpsInspectionTestTaskVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID(电站ID)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目ID(电站ID)")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务名称
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "任务名称")
|
||||||
|
private String taskName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试对象
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "测试对象")
|
||||||
|
private String testObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "开始时间")
|
||||||
|
private Date beginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "结束时间")
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "时间段")
|
||||||
|
private String timeInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行人员
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "执行人员")
|
||||||
|
private Long person;
|
||||||
|
|
||||||
|
private OpsUserVo personInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态,1待执行2暂停3失败4执行中5已完成
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "状态,1待执行2暂停3失败4执行中5已完成")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联测试计划ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "关联测试计划ID")
|
||||||
|
private Long testPlanId;
|
||||||
|
|
||||||
|
private OpsInspectionTestPlanVo testPlan;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验环境
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "试验环境")
|
||||||
|
private String testSetting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "开始时间")
|
||||||
|
private Date planBeginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进度
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "进度")
|
||||||
|
private Long progress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败原因
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "失败原因")
|
||||||
|
private String failReason;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "失败时间")
|
||||||
|
private Date failTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败阶段
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "失败阶段")
|
||||||
|
private Long failPhase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失败原因分析
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "失败原因分析")
|
||||||
|
private String faileAnalyze;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 改进建议
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "改进建议")
|
||||||
|
private String faileTips;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试验时长(分钟)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "试验时长(分钟)")
|
||||||
|
private Long testLongTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结果
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "结果")
|
||||||
|
private String testFinal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结果详情
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "结果详情")
|
||||||
|
private String finalInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 暂停原因
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "暂停原因")
|
||||||
|
private String pauseFor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 暂停时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "暂停时间")
|
||||||
|
private Date pauseTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计划完成时间
|
||||||
|
*/
|
||||||
|
private Date planFinishTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.inspection.mapper;
|
||||||
|
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestPlan;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestPlanVo;
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验计划Mapper接口
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
public interface OpsInspectionTestPlanMapper extends BaseMapperPlus<OpsInspectionTestPlan, OpsInspectionTestPlanVo> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.inspection.mapper;
|
||||||
|
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestTask;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskVo;
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验任务Mapper接口
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
public interface OpsInspectionTestTaskMapper extends BaseMapperPlus<OpsInspectionTestTask, OpsInspectionTestTaskVo> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,69 @@
|
|||||||
|
package org.dromara.inspection.service;
|
||||||
|
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestPlan;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestPlanVo;
|
||||||
|
import org.dromara.inspection.domain.bo.OpsInspectionTestPlanBo;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验计划Service接口
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
public interface IOpsInspectionTestPlanService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运维-巡检-试验计划
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 运维-巡检-试验计划
|
||||||
|
*/
|
||||||
|
OpsInspectionTestPlanVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询运维-巡检-试验计划列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 运维-巡检-试验计划分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<OpsInspectionTestPlanVo> queryPageList(OpsInspectionTestPlanBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的运维-巡检-试验计划列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 运维-巡检-试验计划列表
|
||||||
|
*/
|
||||||
|
List<OpsInspectionTestPlanVo> queryList(OpsInspectionTestPlanBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增运维-巡检-试验计划
|
||||||
|
*
|
||||||
|
* @param bo 运维-巡检-试验计划
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(OpsInspectionTestPlanBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改运维-巡检-试验计划
|
||||||
|
*
|
||||||
|
* @param bo 运维-巡检-试验计划
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(OpsInspectionTestPlanBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除运维-巡检-试验计划信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
}
|
||||||
@ -0,0 +1,69 @@
|
|||||||
|
package org.dromara.inspection.service;
|
||||||
|
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestTask;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskVo;
|
||||||
|
import org.dromara.inspection.domain.bo.OpsInspectionTestTaskBo;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验任务Service接口
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
public interface IOpsInspectionTestTaskService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运维-巡检-试验任务
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 运维-巡检-试验任务
|
||||||
|
*/
|
||||||
|
OpsInspectionTestTaskVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询运维-巡检-试验任务列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 运维-巡检-试验任务分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<OpsInspectionTestTaskVo> queryPageList(OpsInspectionTestTaskBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的运维-巡检-试验任务列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 运维-巡检-试验任务列表
|
||||||
|
*/
|
||||||
|
List<OpsInspectionTestTaskVo> queryList(OpsInspectionTestTaskBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增运维-巡检-试验任务
|
||||||
|
*
|
||||||
|
* @param bo 运维-巡检-试验任务
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(OpsInspectionTestTaskBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改运维-巡检-试验任务
|
||||||
|
*
|
||||||
|
* @param bo 运维-巡检-试验任务
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(OpsInspectionTestTaskBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除运维-巡检-试验任务信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
}
|
||||||
@ -240,14 +240,21 @@ public class OpsInspectionTaskServiceImpl implements IOpsInspectionTaskService {
|
|||||||
durationMillis += opsInspectionTaskVo.getFinishTime().getTime() - opsInspectionTaskVo.getCreateTime().getTime();
|
durationMillis += opsInspectionTaskVo.getFinishTime().getTime() - opsInspectionTaskVo.getCreateTime().getTime();
|
||||||
}
|
}
|
||||||
//赋值分钟
|
//赋值分钟
|
||||||
|
if (list.isEmpty()){
|
||||||
|
recordVo.setAverageCompletionTime(0L);
|
||||||
|
}else {
|
||||||
recordVo.setAverageCompletionTime(TimeUnit.MILLISECONDS.toMinutes(durationMillis) / list.size());
|
recordVo.setAverageCompletionTime(TimeUnit.MILLISECONDS.toMinutes(durationMillis) / list.size());
|
||||||
|
}
|
||||||
|
|
||||||
//解决效率 总共问题 / 已解决数 * 100
|
//解决效率 已解决数 / 总共数量 * 100
|
||||||
BigDecimal problemCountBigDecimal = BigDecimal.valueOf(recordVo.getProblemCount());
|
BigDecimal problemCountBigDecimal = BigDecimal.valueOf(recordVo.getProblemCount());
|
||||||
BigDecimal solvedProblemCountBigDecimal = BigDecimal.valueOf(recordVo.getSolvedProblemCount());
|
BigDecimal solvedProblemCountBigDecimal = BigDecimal.valueOf(recordVo.getSolvedProblemCount());
|
||||||
BigDecimal bigDecimal = problemCountBigDecimal.divide(solvedProblemCountBigDecimal, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP);
|
if (solvedProblemCountBigDecimal.compareTo(BigDecimal.ZERO) == 0 || problemCountBigDecimal.compareTo(BigDecimal.ZERO) == 0){
|
||||||
|
recordVo.setSolveEfficiency(BigDecimal.valueOf(0));
|
||||||
|
}else {
|
||||||
|
BigDecimal bigDecimal = solvedProblemCountBigDecimal.divide(problemCountBigDecimal, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP);
|
||||||
recordVo.setSolveEfficiency(bigDecimal);
|
recordVo.setSolveEfficiency(bigDecimal);
|
||||||
|
}
|
||||||
for (OpsInspectionTaskVo opsInspectionTaskVo : opsInspectionTaskVos) {
|
for (OpsInspectionTaskVo opsInspectionTaskVo : opsInspectionTaskVos) {
|
||||||
if (opsInspectionTaskVo.getCreateTime().after(startDate) && opsInspectionTaskVo.getCreateTime().before(endDate)){
|
if (opsInspectionTaskVo.getCreateTime().after(startDate) && opsInspectionTaskVo.getCreateTime().before(endDate)){
|
||||||
switch (opsInspectionTaskVo.getProblemType()){
|
switch (opsInspectionTaskVo.getProblemType()){
|
||||||
|
|||||||
@ -0,0 +1,201 @@
|
|||||||
|
package org.dromara.inspection.service.impl;
|
||||||
|
|
||||||
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionItemVo;
|
||||||
|
import org.dromara.personnel.domain.OpsUser;
|
||||||
|
import org.dromara.personnel.domain.bo.OpsUserBo;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||||
|
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.dromara.inspection.domain.bo.OpsInspectionTestPlanBo;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestPlanVo;
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestPlan;
|
||||||
|
import org.dromara.inspection.mapper.OpsInspectionTestPlanMapper;
|
||||||
|
import org.dromara.inspection.service.IOpsInspectionTestPlanService;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验计划Service业务层处理
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class OpsInspectionTestPlanServiceImpl implements IOpsInspectionTestPlanService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OpsUserServiceImpl opsUserService;
|
||||||
|
@Autowired
|
||||||
|
private OpsInspectionItemServiceImpl inspectionItemService;
|
||||||
|
|
||||||
|
private final OpsInspectionTestPlanMapper baseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运维-巡检-试验计划
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 运维-巡检-试验计划
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public OpsInspectionTestPlanVo queryById(Long id){
|
||||||
|
OpsInspectionTestPlanVo opsInspectionTestPlanVo = baseMapper.selectVoById(id);
|
||||||
|
List<OpsInspectionTestPlanVo> opsInspectionTestPlanVo1 = List.of(opsInspectionTestPlanVo);
|
||||||
|
setValue(opsInspectionTestPlanVo1);
|
||||||
|
return opsInspectionTestPlanVo1.getFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询运维-巡检-试验计划列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 运维-巡检-试验计划分页列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<OpsInspectionTestPlanVo> queryPageList(OpsInspectionTestPlanBo bo, PageQuery pageQuery) {
|
||||||
|
LambdaQueryWrapper<OpsInspectionTestPlan> lqw = buildQueryWrapper(bo);
|
||||||
|
Page<OpsInspectionTestPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
setValue(result.getRecords());
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的运维-巡检-试验计划列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 运维-巡检-试验计划列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<OpsInspectionTestPlanVo> queryList(OpsInspectionTestPlanBo bo) {
|
||||||
|
LambdaQueryWrapper<OpsInspectionTestPlan> lqw = buildQueryWrapper(bo);
|
||||||
|
return baseMapper.selectVoList(lqw);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LambdaQueryWrapper<OpsInspectionTestPlan> buildQueryWrapper(OpsInspectionTestPlanBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
LambdaQueryWrapper<OpsInspectionTestPlan> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.orderByAsc(OpsInspectionTestPlan::getId);
|
||||||
|
lqw.eq(bo.getProjectId() != null, OpsInspectionTestPlan::getProjectId, bo.getProjectId());
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getPlanName()), OpsInspectionTestPlan::getPlanName, bo.getPlanName());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getPlanCode()), OpsInspectionTestPlan::getPlanCode, bo.getPlanCode());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestObject()), OpsInspectionTestPlan::getTestObject, bo.getTestObject());
|
||||||
|
lqw.eq(bo.getBeginTime() != null, OpsInspectionTestPlan::getBeginTime, bo.getBeginTime());
|
||||||
|
lqw.eq(bo.getEndTime() != null, OpsInspectionTestPlan::getEndTime, bo.getEndTime());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestInfo()), OpsInspectionTestPlan::getTestInfo, bo.getTestInfo());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestSetting()), OpsInspectionTestPlan::getTestSetting, bo.getTestSetting());
|
||||||
|
lqw.eq(bo.getPersonCharge() != null, OpsInspectionTestPlan::getPersonCharge, bo.getPersonCharge());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getPersonIds()), OpsInspectionTestPlan::getPersonIds, bo.getPersonIds());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getInspectionItems()), OpsInspectionTestPlan::getInspectionItems, bo.getInspectionItems());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestStep()), OpsInspectionTestPlan::getTestStep, bo.getTestStep());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestDevice()), OpsInspectionTestPlan::getTestDevice, bo.getTestDevice());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestSolutions()), OpsInspectionTestPlan::getTestSolutions, bo.getTestSolutions());
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增运维-巡检-试验计划
|
||||||
|
*
|
||||||
|
* @param bo 运维-巡检-试验计划
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean insertByBo(OpsInspectionTestPlanBo bo) {
|
||||||
|
OpsInspectionTestPlan add = MapstructUtils.convert(bo, OpsInspectionTestPlan.class);
|
||||||
|
validEntityBeforeSave(add);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (flag) {
|
||||||
|
bo.setId(add.getId());
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改运维-巡检-试验计划
|
||||||
|
*
|
||||||
|
* @param bo 运维-巡检-试验计划
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean updateByBo(OpsInspectionTestPlanBo bo) {
|
||||||
|
OpsInspectionTestPlan update = MapstructUtils.convert(bo, OpsInspectionTestPlan.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
return baseMapper.updateById(update) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存前的数据校验
|
||||||
|
*/
|
||||||
|
private void validEntityBeforeSave(OpsInspectionTestPlan entity){
|
||||||
|
//TODO 做一些数据校验,如唯一约束
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除运维-巡检-试验计划信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
|
if(isValid){
|
||||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
|
}
|
||||||
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理回显数据
|
||||||
|
*/
|
||||||
|
public void setValue(List<OpsInspectionTestPlanVo> list){
|
||||||
|
for (OpsInspectionTestPlanVo opsInspectionTestPlanVo : list) {
|
||||||
|
|
||||||
|
if(opsInspectionTestPlanVo.getPersonCharge()!=null) {
|
||||||
|
OpsUserVo byId = opsUserService.queryById(opsInspectionTestPlanVo.getPersonCharge());
|
||||||
|
if (byId != null) {
|
||||||
|
opsInspectionTestPlanVo.setPerson(byId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opsInspectionTestPlanVo.getPersonIds() != null){
|
||||||
|
String[] split = opsInspectionTestPlanVo.getPersonIds().split(",");
|
||||||
|
List<OpsUserVo> opsUserVos = new ArrayList<>();
|
||||||
|
for (String s : split) {
|
||||||
|
OpsUserVo opsUserVo = opsUserService.queryById(Long.parseLong(s));
|
||||||
|
if (opsUserVo != null){
|
||||||
|
opsUserVos.add(opsUserVo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
opsInspectionTestPlanVo.setPersons(opsUserVos);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (opsInspectionTestPlanVo.getInspectionItems()!=null){
|
||||||
|
// String[] split = opsInspectionTestPlanVo.getInspectionItems().split(",");
|
||||||
|
// List<OpsInspectionItemVo> opsInspectionItemVos = new ArrayList<>();
|
||||||
|
// for (String s : split) {
|
||||||
|
// OpsInspectionItemVo opsInspectionItemVo = inspectionItemService.queryById(Long.parseLong(s));
|
||||||
|
// if (opsInspectionItemVo != null){
|
||||||
|
// opsInspectionItemVos.add(opsInspectionItemVo);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,276 @@
|
|||||||
|
package org.dromara.inspection.service.impl;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestPlanVo;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskRecord;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||||
|
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.dromara.inspection.domain.bo.OpsInspectionTestTaskBo;
|
||||||
|
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskVo;
|
||||||
|
import org.dromara.inspection.domain.OpsInspectionTestTask;
|
||||||
|
import org.dromara.inspection.mapper.OpsInspectionTestTaskMapper;
|
||||||
|
import org.dromara.inspection.service.IOpsInspectionTestTaskService;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-巡检-试验任务Service业务层处理
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-20
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class OpsInspectionTestTaskServiceImpl implements IOpsInspectionTestTaskService {
|
||||||
|
|
||||||
|
private final OpsInspectionTestTaskMapper baseMapper;
|
||||||
|
@Autowired
|
||||||
|
private OpsUserServiceImpl opsUserService;
|
||||||
|
@Autowired
|
||||||
|
private OpsInspectionTestPlanServiceImpl opsInspectionTestPlanService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运维-巡检-试验任务
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 运维-巡检-试验任务
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public OpsInspectionTestTaskVo queryById(Long id){
|
||||||
|
OpsInspectionTestTaskVo opsInspectionTestTaskVo = baseMapper.selectVoById(id);
|
||||||
|
List<OpsInspectionTestTaskVo> opsInspectionTestTaskVo1 = List.of(opsInspectionTestTaskVo);
|
||||||
|
setValue(opsInspectionTestTaskVo1);
|
||||||
|
return opsInspectionTestTaskVo1.getFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询运维-巡检-试验任务列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 运维-巡检-试验任务分页列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<OpsInspectionTestTaskVo> queryPageList(OpsInspectionTestTaskBo bo, PageQuery pageQuery) {
|
||||||
|
LambdaQueryWrapper<OpsInspectionTestTask> lqw = buildQueryWrapper(bo);
|
||||||
|
Page<OpsInspectionTestTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
setValue(result.getRecords());
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的运维-巡检-试验任务列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 运维-巡检-试验任务列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<OpsInspectionTestTaskVo> queryList(OpsInspectionTestTaskBo bo) {
|
||||||
|
LambdaQueryWrapper<OpsInspectionTestTask> lqw = buildQueryWrapper(bo);
|
||||||
|
return baseMapper.selectVoList(lqw);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LambdaQueryWrapper<OpsInspectionTestTask> buildQueryWrapper(OpsInspectionTestTaskBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
LambdaQueryWrapper<OpsInspectionTestTask> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.orderByAsc(OpsInspectionTestTask::getId);
|
||||||
|
lqw.eq(bo.getProjectId() != null, OpsInspectionTestTask::getProjectId, bo.getProjectId());
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getTaskName()), OpsInspectionTestTask::getTaskName, bo.getTaskName());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestObject()), OpsInspectionTestTask::getTestObject, bo.getTestObject());
|
||||||
|
lqw.eq(bo.getBeginTime() != null, OpsInspectionTestTask::getBeginTime, bo.getBeginTime());
|
||||||
|
lqw.eq(bo.getEndTime() != null, OpsInspectionTestTask::getEndTime, bo.getEndTime());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTimeInfo()), OpsInspectionTestTask::getTimeInfo, bo.getTimeInfo());
|
||||||
|
lqw.eq(bo.getPerson() != null, OpsInspectionTestTask::getPerson, bo.getPerson());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), OpsInspectionTestTask::getStatus, bo.getStatus());
|
||||||
|
lqw.eq(bo.getTestPlanId() != null, OpsInspectionTestTask::getTestPlanId, bo.getTestPlanId());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestSetting()), OpsInspectionTestTask::getTestSetting, bo.getTestSetting());
|
||||||
|
lqw.eq(bo.getPlanBeginTime() != null, OpsInspectionTestTask::getPlanBeginTime, bo.getPlanBeginTime());
|
||||||
|
lqw.eq(bo.getProgress() != null, OpsInspectionTestTask::getProgress, bo.getProgress());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getFailReason()), OpsInspectionTestTask::getFailReason, bo.getFailReason());
|
||||||
|
lqw.eq(bo.getFailTime() != null, OpsInspectionTestTask::getFailTime, bo.getFailTime());
|
||||||
|
lqw.eq(bo.getFailPhase() != null, OpsInspectionTestTask::getFailPhase, bo.getFailPhase());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getFaileAnalyze()), OpsInspectionTestTask::getFaileAnalyze, bo.getFaileAnalyze());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getFaileTips()), OpsInspectionTestTask::getFaileTips, bo.getFaileTips());
|
||||||
|
lqw.eq(bo.getTestLongTime() != null, OpsInspectionTestTask::getTestLongTime, bo.getTestLongTime());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getTestFinal()), OpsInspectionTestTask::getTestFinal, bo.getTestFinal());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getFinalInfo()), OpsInspectionTestTask::getFinalInfo, bo.getFinalInfo());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getPauseFor()), OpsInspectionTestTask::getPauseFor, bo.getPauseFor());
|
||||||
|
lqw.eq(bo.getPauseTime() != null, OpsInspectionTestTask::getPauseTime, bo.getPauseTime());
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增运维-巡检-试验任务
|
||||||
|
*
|
||||||
|
* @param bo 运维-巡检-试验任务
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean insertByBo(OpsInspectionTestTaskBo bo) {
|
||||||
|
OpsInspectionTestTask add = MapstructUtils.convert(bo, OpsInspectionTestTask.class);
|
||||||
|
validEntityBeforeSave(add);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (flag) {
|
||||||
|
bo.setId(add.getId());
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改运维-巡检-试验任务
|
||||||
|
*
|
||||||
|
* @param bo 运维-巡检-试验任务
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean updateByBo(OpsInspectionTestTaskBo bo) {
|
||||||
|
OpsInspectionTestTask update = MapstructUtils.convert(bo, OpsInspectionTestTask.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
return baseMapper.updateById(update) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存前的数据校验
|
||||||
|
*/
|
||||||
|
private void validEntityBeforeSave(OpsInspectionTestTask entity){
|
||||||
|
//TODO 做一些数据校验,如唯一约束
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除运维-巡检-试验任务信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
|
if(isValid){
|
||||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
|
}
|
||||||
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理回显信息
|
||||||
|
*/
|
||||||
|
private void setValue(List<OpsInspectionTestTaskVo> list){
|
||||||
|
for (OpsInspectionTestTaskVo opsInspectionTestTaskVo : list) {
|
||||||
|
if(opsInspectionTestTaskVo.getPerson()!= null){
|
||||||
|
OpsUserVo opsUserVo = opsUserService.queryById(opsInspectionTestTaskVo.getPerson());
|
||||||
|
if (opsUserVo != null){
|
||||||
|
opsInspectionTestTaskVo.setPersonInfo(opsUserVo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (opsInspectionTestTaskVo.getTestPlanId() != null){
|
||||||
|
OpsInspectionTestPlanVo opsInspectionTestPlanVo = opsInspectionTestPlanService.queryById(opsInspectionTestTaskVo.getTestPlanId());
|
||||||
|
if (opsInspectionTestPlanVo != null){
|
||||||
|
opsInspectionTestTaskVo.setTestPlan(opsInspectionTestPlanVo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统计记录
|
||||||
|
*/
|
||||||
|
public R<Object> record(Long projectId){
|
||||||
|
|
||||||
|
LocalDate firstDay = LocalDate.now().withDayOfMonth(1);
|
||||||
|
LocalDate lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||||
|
Date startDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||||
|
Date endDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||||
|
|
||||||
|
LambdaQueryWrapper<OpsInspectionTestTask> lqw = new LambdaQueryWrapper<>();
|
||||||
|
lqw.eq(OpsInspectionTestTask::getProjectId,projectId);
|
||||||
|
|
||||||
|
OpsInspectionTestTaskBo opsInspectionTestTaskBo = new OpsInspectionTestTaskBo();
|
||||||
|
opsInspectionTestTaskBo.setProjectId(projectId);
|
||||||
|
|
||||||
|
List<OpsInspectionTestTaskVo> list = queryList(opsInspectionTestTaskBo);
|
||||||
|
if (list==null || list.isEmpty()){
|
||||||
|
return R.fail("没有数据");
|
||||||
|
}
|
||||||
|
OpsInspectionTestTaskRecord record = new OpsInspectionTestTaskRecord();
|
||||||
|
|
||||||
|
//完成实验数
|
||||||
|
Long finishCount = 0L;
|
||||||
|
//待分析记录
|
||||||
|
Long failCount = 0L;
|
||||||
|
//总共完成时间
|
||||||
|
Long totalTestTime = 0L;
|
||||||
|
|
||||||
|
for (OpsInspectionTestTaskVo opsInspectionTestTaskVo : list) {
|
||||||
|
if (opsInspectionTestTaskVo.getPlanFinishTime().after(startDate) && opsInspectionTestTaskVo.getPlanFinishTime().before(endDate) && opsInspectionTestTaskVo.getStatus().equals("5")){
|
||||||
|
finishCount++;
|
||||||
|
totalTestTime += opsInspectionTestTaskVo.getPlanFinishTime().getTime() - opsInspectionTestTaskVo.getPlanBeginTime().getTime();
|
||||||
|
}
|
||||||
|
if (opsInspectionTestTaskVo.getPlanFinishTime().after(startDate) && opsInspectionTestTaskVo.getPlanFinishTime().before(endDate) && opsInspectionTestTaskVo.getStatus().equals("3")){
|
||||||
|
failCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
record.setFinishCount(finishCount);
|
||||||
|
record.setFailCount(failCount);
|
||||||
|
record.setPassValue(BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(list.size()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
|
||||||
|
record.setAverageTestTime(totalTestTime/finishCount);
|
||||||
|
|
||||||
|
//统计上一月的数据
|
||||||
|
firstDay = LocalDate.now().minusMonths(1).withDayOfMonth(1);
|
||||||
|
lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||||
|
Date finalEndDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||||
|
Date finalStartDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||||
|
|
||||||
|
List<OpsInspectionTestTaskVo> lastMounth = list.stream().filter(testTaskVo -> testTaskVo.getPlanBeginTime().before(finalEndDate) && testTaskVo.getPlanFinishTime().after(finalStartDate))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
//完成实验数
|
||||||
|
finishCount = 0L;
|
||||||
|
//待分析记录
|
||||||
|
failCount = 0L;
|
||||||
|
//总共完成时间
|
||||||
|
totalTestTime = 0L;
|
||||||
|
|
||||||
|
|
||||||
|
for (OpsInspectionTestTaskVo opsInspectionTestTaskVo : lastMounth) {
|
||||||
|
if (opsInspectionTestTaskVo.getPlanFinishTime().after(startDate) && opsInspectionTestTaskVo.getPlanFinishTime().before(endDate) && opsInspectionTestTaskVo.getStatus().equals("5")){
|
||||||
|
finishCount++;
|
||||||
|
totalTestTime += opsInspectionTestTaskVo.getPlanFinishTime().getTime() - opsInspectionTestTaskVo.getPlanBeginTime().getTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Long finishCount1 = totalTestTime/ finishCount;
|
||||||
|
//完成数增长率
|
||||||
|
record.setFinishCountAdd(BigDecimal.valueOf(finishCount / record.getFinishCount()).multiply(new BigDecimal("100")));
|
||||||
|
//通过率
|
||||||
|
record.setPassValueAdd(BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(lastMounth.size()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).divide(record.getPassValue(),2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
|
||||||
|
//时长增长率
|
||||||
|
record.setAverageTestTimeAdd(BigDecimal.valueOf((totalTestTime/finishCount) / record.getAverageTestTime()));
|
||||||
|
|
||||||
|
return R.ok(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user