platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/MaxSizeContant.java
@@ -42,7 +42,10 @@ * 设备采购计划编号 */ String DEVICE_PURCHASE_CODE = "DEVICE_PURCHASE_CODE"; /** * 工单编号 */ String WORK_ORDER_CODE = "WORK_ORDER_CODE"; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/InspectionPlanQueryDTO.java
New file @@ -0,0 +1,10 @@ package com.by4cloud.platformx.device.dto; import lombok.Data; @Data public class InspectionPlanQueryDTO { private String planName; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/InspectionTaskQueryDTO.java
New file @@ -0,0 +1,10 @@ package com.by4cloud.platformx.device.dto; import lombok.Data; @Data public class InspectionTaskQueryDTO { private String taskName; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceRepair.java
@@ -50,4 +50,12 @@ @Schema(description = "维修结束日期") @Column(columnDefinition = "datetime comment '维修结束日期'") private Date repairEndDate; @Schema(description = "问题描述") @Column(columnDefinition="VARCHAR(256) comment '问题描述'") private String repairDesc; @Schema(description = "生成工单标识") @Column(columnDefinition="int comment '生成工单标识 0 未生成 1 已生成'") private Integer woFlag; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InspectionPlan.java
New file @@ -0,0 +1,50 @@ package com.by4cloud.platformx.device.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.annotations.Table; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Transient; import java.util.Date; import java.util.List; @Data @Entity @TableName("inspection_plan") @javax.persistence.Table(name = "inspection_plan") @Table(appliesTo = "inspection_plan", comment = "巡检计划") public class InspectionPlan extends BaseModel<InspectionPlan> { @Schema(description = "巡检计划名称") @Column(columnDefinition="VARCHAR(128) comment '巡检计划名称'") private String planName; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "巡检计划开始时间") @Column(columnDefinition="datetime comment '巡检计划开始时间'") private Date startTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "巡检计划结束时间") @Column(columnDefinition="datetime comment '巡检计划结束时间'") private Date endTime; @Schema(description = "巡检人员") @Column(columnDefinition="bigint comment '巡检人员'") private Long inspectionUserId; @Schema(description = "是否已生成巡检任务") @Column(columnDefinition="int comment '是否已生成巡检任务 0 未生成 1 已生成'") private Integer taskFlag; @Transient @TableField(exist = false) private List<InspectionPlanDevice> deviceList; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InspectionPlanDevice.java
New file @@ -0,0 +1,37 @@ package com.by4cloud.platformx.device.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.annotations.Table; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Transient; import java.util.List; @Data @Entity @TableName("inspection_plan_device") @javax.persistence.Table(name = "inspection_plan_device") @Table(appliesTo = "inspection_plan_device", comment = "巡检计划关联设备") public class InspectionPlanDevice extends BaseModel<InspectionPlanDevice> { @Schema(description = "巡检计划") @Column(columnDefinition="bigint comment '巡检计划'") private Long planId; @Schema(description = "设备ID") @Column(columnDefinition="bigint comment '设备ID'") private Long deviceId; @Transient @TableField(exist = false) private List<String> serialList; @Transient @TableField(exist = false) private List<Long> standardsList; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InspectionPlanDeviceSerial.java
New file @@ -0,0 +1,30 @@ package com.by4cloud.platformx.device.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.annotations.Table; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Transient; import java.util.List; @Data @Entity @TableName("inspection_plan_device_serial") @javax.persistence.Table(name = "inspection_plan_device_serial") @Table(appliesTo = "inspection_plan_device_serial", comment = "巡检计划关联设备序列号") public class InspectionPlanDeviceSerial extends BaseModel<InspectionPlanDeviceSerial> { @Schema(description = "巡检计划绑定设备Id") @Column(columnDefinition="bigint comment '巡检计划绑定设备Id'") private Long planDeviceId; @Schema(description = "设备序列号") @Column(columnDefinition="VARCHAR(128) comment '设备序列号'") private String serialNo; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InspectionPlanDeviceStandards.java
New file @@ -0,0 +1,27 @@ package com.by4cloud.platformx.device.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.annotations.Table; import javax.persistence.Column; import javax.persistence.Entity; @Data @Entity @TableName("inspection_plan_device_standard") @javax.persistence.Table(name = "inspection_plan_device_standard") @Table(appliesTo = "inspection_plan_device_standard", comment = "巡检计划关联巡检标准") public class InspectionPlanDeviceStandards extends BaseModel<InspectionPlanDeviceStandards> { @Schema(description = "计划关联设备ID") @Column(columnDefinition="bigint comment '计划关联设备ID'") private Long planDeviceId; @Schema(description = "巡检标准") @Column(columnDefinition="bigint comment '巡检标准'") private Long standardId; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InspectionStandards.java
New file @@ -0,0 +1,30 @@ package com.by4cloud.platformx.device.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.annotations.Table; import javax.persistence.Column; import javax.persistence.Entity; @Data @Entity @TableName("inspection_standards") @javax.persistence.Table(name = "inspection_standards") @Table(appliesTo = "inspection_standards", comment = "巡检标准") public class InspectionStandards extends BaseModel<InspectionStandards> { @Schema(description = "巡检标准名称") @Column(columnDefinition="VARCHAR(128) comment '巡检标准名称'") private String standardsName; @Schema(description = "巡检标准内容") @Column(columnDefinition="text comment '巡检标准内容'") private String standardsContent; @Schema(description = "是否启用") @Column(columnDefinition="int comment '是否启用 0 否 1 是'") private Integer status; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InspectionTask.java
New file @@ -0,0 +1,53 @@ package com.by4cloud.platformx.device.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.annotations.Table; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Transient; import java.util.Date; import java.util.List; @Data @Entity @TableName("inspection_task") @javax.persistence.Table(name = "inspection_task") @Table(appliesTo = "inspection_task", comment = "巡检任务") public class InspectionTask extends BaseModel<InspectionTask> { @Schema(description = "巡检任务名称") @Column(columnDefinition="VARCHAR(128) comment '巡检计划名称'") private String taskName; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "巡检任务开始时间") @Column(columnDefinition="datetime comment '巡检任务开始时间'") private Date startTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "巡检任务结束时间") @Column(columnDefinition="datetime comment '巡检任务结束时间'") private Date endTime; @Schema(description = "巡检人员") @Column(columnDefinition="bigint comment '巡检人员'") private Long inspectionUserId; @Schema(description = "巡检任务状态") @Column(columnDefinition="int comment '巡检任务状态 0 未开始 1 巡检中 2 已完成'") private Integer taskStatus; @Schema(description = "巡检计划") @Column(columnDefinition="bigint comment '巡检计划'") private Long planId; @Transient @TableField(exist = false) private List<InspectionTaskItem> itemList; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/InspectionTaskItem.java
New file @@ -0,0 +1,39 @@ package com.by4cloud.platformx.device.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.annotations.Table; import javax.persistence.Column; import javax.persistence.Entity; @Data @Entity @TableName("inspection_task_item") @javax.persistence.Table(name = "inspection_task_item") @Table(appliesTo = "inspection_task_item", comment = "巡检任务明细") public class InspectionTaskItem extends BaseModel<InspectionTaskItem> { @Schema(description = "任务ID") @Column(columnDefinition="bigint comment '任务ID'") private Long taskId; @Schema(description = "设备ID") @Column(columnDefinition="bigint comment '设备ID'") private Long deviceId; @Schema(description = "设备序列号") @Column(columnDefinition="VARCHAR(128) comment '设备序列号'") private String serialNo; @Schema(description = "巡检标准") @Column(columnDefinition="bigint comment '巡检标准'") private Long standardId; @Schema(description = "巡检结果") @Column(columnDefinition="VARCHAR(256) comment '巡检结果'") private String inspectionResults; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/WorkOrder.java
New file @@ -0,0 +1,59 @@ package com.by4cloud.platformx.device.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.annotations.Table; import javax.persistence.Column; import javax.persistence.Entity; import java.util.Date; @Data @Entity @TableName("work_order") @javax.persistence.Table(name = "work_order") @Table(appliesTo = "work_order", comment = "工单") public class WorkOrder extends BaseModel<WorkOrder> { @Schema(description = "工单编号") @Column(columnDefinition="VARCHAR(64) comment '工单编号'") private String woCode; @Schema(description = "工单描述") @Column(columnDefinition="VARCHAR(256) comment '工单描述'") private String woDesc; @Schema(description = "工单类型") @Column(columnDefinition="int comment '工单类型 1 报修 2 其他'") private Integer woType; @Schema(description = "工单状态") @Column(columnDefinition="int comment '工单状态 1 待分配 2 处理中 3 已关闭'") private Integer woStatus; @Schema(description = "处理人") @Column(columnDefinition="bigint comment '处理人'") private Long handleUserId; @Schema(description = "处理人") @Column(columnDefinition="VARCHAR(64) comment '处理人'") private String handleUserName; @Schema(description = "处理时间") @Column(columnDefinition="datetime comment '处理时间'") private Date handleTime; @Schema(description = "处理说明") @Column(columnDefinition="VARCHAR(256) comment '处理说明'") private String handleDesc; @Schema(description = "处理后照片") @Column(columnDefinition="VARCHAR(256) comment '处理后照片'") private String handlePic; @Schema(description = "关联维修ID") @Column(columnDefinition="bigint comment '关联维修ID'") private Long repairId; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DeviceRepairPageVo.java
@@ -25,4 +25,6 @@ private String status; private Integer woFlag; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InspectionPlanPageVo.java
New file @@ -0,0 +1,34 @@ package com.by4cloud.platformx.device.entity.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.Date; @Data public class InspectionPlanPageVo { private Long id; @Schema(description = "巡检计划名称") private String planName; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "巡检计划开始时间") private Date startTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "巡检计划结束时间") private Date endTime; @Schema(description = "巡检人员") private Long inspectionUserId; @Schema(description = "巡检人员") private String inspectionUserName; @Schema(description = "是否已生成巡检任务") private Integer taskFlag; } platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InspectionTaskPageVo.java
New file @@ -0,0 +1,34 @@ package com.by4cloud.platformx.device.entity.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.Date; @Data public class InspectionTaskPageVo { private Long id; @Schema(description = "巡检任务名称") private String taskName; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "巡检任务开始时间") private Date startTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "巡检任务结束时间") private Date endTime; @Schema(description = "巡检人员") private Long inspectionUserId; @Schema(description = "巡检人员") private String inspectionUserName; @Schema(description = "是否已生成巡检任务") private Integer taskStatus; } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceRepairController.java
@@ -75,6 +75,7 @@ @PreAuthorize("@pms.hasPermission('device_deviceRepair_add')" ) public R save(@RequestBody DeviceRepair deviceRepair) { deviceRepair.setStatus(1); deviceRepair.setWoFlag(0); return R.ok(deviceRepairService.save(deviceRepair)); } @@ -137,4 +138,13 @@ public R complete(@PathVariable("id")Long id) { return deviceRepairService.complete(id); } /** * 设备维修完成 * @return */ @GetMapping("/genWorkOrder/{id}" ) public R genWorkOrder(@PathVariable("id")Long id) { return deviceRepairService.genWorkOrder(id); } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InspectionPlanController.java
New file @@ -0,0 +1,131 @@ package com.by4cloud.platformx.device.controller; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.common.log.annotation.SysLog; import com.by4cloud.platformx.device.dto.InspectionPlanQueryDTO; import com.by4cloud.platformx.device.entity.InspectionPlan; import com.by4cloud.platformx.device.service.InspectionPlanService; import org.springframework.security.access.prepost.PreAuthorize; import com.by4cloud.platformx.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import org.springdoc.api.annotations.ParameterObject; import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; /** * 巡检计划 * * @author syt * @date 2025-04-22 09:06:43 */ @RestController @RequiredArgsConstructor @RequestMapping("/inspectionPlan" ) @Tag(description = "inspectionPlan" , name = "巡检计划管理" ) @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class InspectionPlanController { private final InspectionPlanService inspectionPlanService; /** * 分页查询 * @param page 分页对象 * @param queryDTO 巡检计划 * @return */ @Operation(summary = "分页查询" , description = "分页查询" ) @GetMapping("/page" ) @PreAuthorize("@pms.hasPermission('device_inspectionPlan_view')" ) public R getInspectionPlanPage(@ParameterObject Page page, @ParameterObject InspectionPlanQueryDTO queryDTO) { return R.ok(inspectionPlanService.pageNew(page, queryDTO)); } /** * 通过id查询巡检计划 * @param id id * @return R */ @Operation(summary = "通过id查询" , description = "通过id查询" ) @GetMapping("/{id}" ) @PreAuthorize("@pms.hasPermission('device_inspectionPlan_view')" ) public R getById(@PathVariable("id" ) Long id) { return R.ok(inspectionPlanService.getByIdNew(id)); } /** * 新增巡检计划 * @param inspectionPlan 巡检计划 * @return R */ @Operation(summary = "新增巡检计划" , description = "新增巡检计划" ) @SysLog("新增巡检计划" ) @PostMapping @PreAuthorize("@pms.hasPermission('device_inspectionPlan_add')" ) public R save(@RequestBody InspectionPlan inspectionPlan) { return R.ok(inspectionPlanService.saveDeep(inspectionPlan)); } /** * 修改巡检计划 * @param inspectionPlan 巡检计划 * @return R */ @Operation(summary = "修改巡检计划" , description = "修改巡检计划" ) @SysLog("修改巡检计划" ) @PutMapping @PreAuthorize("@pms.hasPermission('device_inspectionPlan_edit')" ) public R updateById(@RequestBody InspectionPlan inspectionPlan) { return R.ok(inspectionPlanService.updateByIdNew(inspectionPlan)); } /** * 通过id删除巡检计划 * @param ids id列表 * @return R */ @Operation(summary = "通过id删除巡检计划" , description = "通过id删除巡检计划" ) @SysLog("通过id删除巡检计划" ) @DeleteMapping @PreAuthorize("@pms.hasPermission('device_inspectionPlan_del')" ) public R removeById(@RequestBody Long[] ids) { return R.ok(inspectionPlanService.removeBatchByIds(CollUtil.toList(ids))); } /** * 导出excel 表格 * @param inspectionPlan 查询条件 * @param ids 导出指定ID * @return excel 文件流 */ @ResponseExcel @GetMapping("/export") @PreAuthorize("@pms.hasPermission('device_inspectionPlan_export')" ) public List<InspectionPlan> export(InspectionPlan inspectionPlan,Long[] ids) { return inspectionPlanService.list(Wrappers.lambdaQuery(inspectionPlan).in(ArrayUtil.isNotEmpty(ids), InspectionPlan::getId, ids)); } /** * 通过id生成巡检任务 * @param id id * @return R */ @Operation(summary = "通过id生成巡检任务" , description = "通过id生成巡检任务" ) @GetMapping("/genTask/{id}" ) public R gentTask(@PathVariable("id" ) Long id) { return inspectionPlanService.gentTask(id); } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InspectionStandardsController.java
New file @@ -0,0 +1,151 @@ package com.by4cloud.platformx.device.controller; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.common.log.annotation.SysLog; import com.by4cloud.platformx.device.entity.InspectionStandards; import com.by4cloud.platformx.device.service.InspectionStandardsService; import org.springframework.security.access.prepost.PreAuthorize; import com.by4cloud.platformx.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import org.springdoc.api.annotations.ParameterObject; import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; /** * 巡检标准 * * @author syt * @date 2025-04-22 09:13:46 */ @RestController @RequiredArgsConstructor @RequestMapping("/inspectionStandards" ) @Tag(description = "inspectionStandards" , name = "巡检标准管理" ) @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class InspectionStandardsController { private final InspectionStandardsService inspectionStandardsService; /** * 分页查询 * @param page 分页对象 * @param inspectionStandards 巡检标准 * @return */ @Operation(summary = "分页查询" , description = "分页查询" ) @GetMapping("/page" ) @PreAuthorize("@pms.hasPermission('device_inspectionStandards_view')" ) public R getInspectionStandardsPage(@ParameterObject Page page, @ParameterObject InspectionStandards inspectionStandards) { LambdaQueryWrapper<InspectionStandards> wrapper = Wrappers.lambdaQuery(); wrapper.like(StrUtil.isNotBlank(inspectionStandards.getStandardsContent()),InspectionStandards::getStandardsContent,inspectionStandards.getStandardsContent()); wrapper.like(StrUtil.isNotBlank(inspectionStandards.getStandardsName()),InspectionStandards::getStandardsName,inspectionStandards.getStandardsName()); wrapper.orderByDesc(InspectionStandards::getCreateTime); return R.ok(inspectionStandardsService.page(page, wrapper)); } /** * 通过id查询巡检标准 * @param id id * @return R */ @Operation(summary = "通过id查询" , description = "通过id查询" ) @GetMapping("/{id}" ) @PreAuthorize("@pms.hasPermission('device_inspectionStandards_view')" ) public R getById(@PathVariable("id" ) Long id) { return R.ok(inspectionStandardsService.getById(id)); } /** * 新增巡检标准 * @param inspectionStandards 巡检标准 * @return R */ @Operation(summary = "新增巡检标准" , description = "新增巡检标准" ) @SysLog("新增巡检标准" ) @PostMapping @PreAuthorize("@pms.hasPermission('device_inspectionStandards_add')" ) public R save(@RequestBody InspectionStandards inspectionStandards) { inspectionStandards.setStatus(0); return R.ok(inspectionStandardsService.save(inspectionStandards)); } /** * 修改巡检标准 * @param inspectionStandards 巡检标准 * @return R */ @Operation(summary = "修改巡检标准" , description = "修改巡检标准" ) @SysLog("修改巡检标准" ) @PutMapping @PreAuthorize("@pms.hasPermission('device_inspectionStandards_edit')" ) public R updateById(@RequestBody InspectionStandards inspectionStandards) { return R.ok(inspectionStandardsService.updateById(inspectionStandards)); } /** * 通过id删除巡检标准 * @param ids id列表 * @return R */ @Operation(summary = "通过id删除巡检标准" , description = "通过id删除巡检标准" ) @SysLog("通过id删除巡检标准" ) @DeleteMapping @PreAuthorize("@pms.hasPermission('device_inspectionStandards_del')" ) public R removeById(@RequestBody Long[] ids) { return R.ok(inspectionStandardsService.removeBatchByIds(CollUtil.toList(ids))); } /** * 导出excel 表格 * @param inspectionStandards 查询条件 * @param ids 导出指定ID * @return excel 文件流 */ @ResponseExcel @GetMapping("/export") @PreAuthorize("@pms.hasPermission('device_inspectionStandards_export')" ) public List<InspectionStandards> export(InspectionStandards inspectionStandards,Long[] ids) { return inspectionStandardsService.list(Wrappers.lambdaQuery(inspectionStandards).in(ArrayUtil.isNotEmpty(ids), InspectionStandards::getId, ids)); } /** * 通过id启用/停用巡检标准 * @param id id * @return R */ @Operation(summary = "通过id启用/停用巡检标准" , description = "通过id启用/停用巡检标准" ) @GetMapping("/{id}/{status}" ) public R openOrOffById(@PathVariable("id" ) Long id,@PathVariable("status")Integer status) { return inspectionStandardsService.openOrOffById(id,status); } /** * 通过id启用/停用巡检标准 * @param id id * @return R */ @Operation(summary = "下拉所有数据" , description = "通过id启用/停用巡检标准" ) @GetMapping("/dropdownnList" ) public R dropdownnList() { QueryWrapper<InspectionStandards> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("status",1); List<InspectionStandards> list = inspectionStandardsService.list(queryWrapper); return R.ok(list); } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InspectionTaskController.java
New file @@ -0,0 +1,132 @@ package com.by4cloud.platformx.device.controller; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.common.log.annotation.SysLog; import com.by4cloud.platformx.device.dto.InspectionTaskQueryDTO; import com.by4cloud.platformx.device.entity.InspectionTask; import com.by4cloud.platformx.device.service.InspectionTaskService; import org.springframework.security.access.prepost.PreAuthorize; import com.by4cloud.platformx.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import org.springdoc.api.annotations.ParameterObject; import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; /** * 巡检任务 * * @author syt * @date 2025-04-22 09:15:32 */ @RestController @RequiredArgsConstructor @RequestMapping("/inspectionTask" ) @Tag(description = "inspectionTask" , name = "巡检任务管理" ) @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class InspectionTaskController { private final InspectionTaskService inspectionTaskService; /** * 分页查询 * @param page 分页对象 * @param queryDTO 巡检任务 * @return */ @Operation(summary = "分页查询" , description = "分页查询" ) @GetMapping("/page" ) @PreAuthorize("@pms.hasPermission('device_inspectionTask_view')" ) public R getInspectionTaskPage(@ParameterObject Page page, @ParameterObject InspectionTaskQueryDTO queryDTO) { return R.ok(inspectionTaskService.pageNew(page, queryDTO)); } /** * 通过id查询巡检任务 * @param id id * @return R */ @Operation(summary = "通过id查询" , description = "通过id查询" ) @GetMapping("/{id}" ) @PreAuthorize("@pms.hasPermission('device_inspectionTask_view')" ) public R getById(@PathVariable("id" ) Long id) { return R.ok(inspectionTaskService.getByIdNew(id)); } /** * 新增巡检任务 * @param inspectionTask 巡检任务 * @return R */ @Operation(summary = "新增巡检任务" , description = "新增巡检任务" ) @SysLog("新增巡检任务" ) @PostMapping @PreAuthorize("@pms.hasPermission('device_inspectionTask_add')" ) public R save(@RequestBody InspectionTask inspectionTask) { return R.ok(inspectionTaskService.save(inspectionTask)); } /** * 修改巡检任务 * @param inspectionTask 巡检任务 * @return R */ @Operation(summary = "修改巡检任务" , description = "修改巡检任务" ) @SysLog("修改巡检任务" ) @PutMapping @PreAuthorize("@pms.hasPermission('device_inspectionTask_edit')" ) public R updateById(@RequestBody InspectionTask inspectionTask) { return R.ok(inspectionTaskService.updateByIdNew(inspectionTask)); } /** * 通过id删除巡检任务 * @param ids id列表 * @return R */ @Operation(summary = "通过id删除巡检任务" , description = "通过id删除巡检任务" ) @SysLog("通过id删除巡检任务" ) @DeleteMapping @PreAuthorize("@pms.hasPermission('device_inspectionTask_del')" ) public R removeById(@RequestBody Long[] ids) { return R.ok(inspectionTaskService.removeBatchByIds(CollUtil.toList(ids))); } /** * 导出excel 表格 * @param inspectionTask 查询条件 * @param ids 导出指定ID * @return excel 文件流 */ @ResponseExcel @GetMapping("/export") @PreAuthorize("@pms.hasPermission('device_inspectionTask_export')" ) public List<InspectionTask> export(InspectionTask inspectionTask,Long[] ids) { return inspectionTaskService.list(Wrappers.lambdaQuery(inspectionTask).in(ArrayUtil.isNotEmpty(ids), InspectionTask::getId, ids)); } /** * 通过id开始巡检任务 * @param id id * @return R */ @Operation(summary = "通过id开始巡检任务" , description = "通过id开始巡检任务" ) @GetMapping("/taskStartById/{id}" ) public R taskStartById(@PathVariable("id" ) Long id) { return R.ok(inspectionTaskService.taskStartById(id)); } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/WorkOrderController.java
New file @@ -0,0 +1,123 @@ package com.by4cloud.platformx.device.controller; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.common.log.annotation.SysLog; import com.by4cloud.platformx.device.entity.WorkOrder; import com.by4cloud.platformx.device.service.WorkOrderService; import org.springframework.security.access.prepost.PreAuthorize; import com.by4cloud.platformx.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import org.springdoc.api.annotations.ParameterObject; import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; /** * 工单 * * @author syt * @date 2025-04-22 16:01:37 */ @RestController @RequiredArgsConstructor @RequestMapping("/workOrder" ) @Tag(description = "workOrder" , name = "工单管理" ) @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class WorkOrderController { private final WorkOrderService workOrderService; /** * 分页查询 * @param page 分页对象 * @param workOrder 工单 * @return */ @Operation(summary = "分页查询" , description = "分页查询" ) @GetMapping("/page" ) @PreAuthorize("@pms.hasPermission('device_workOrder_view')" ) public R getWorkOrderPage(@ParameterObject Page page, @ParameterObject WorkOrder workOrder) { LambdaQueryWrapper<WorkOrder> wrapper = Wrappers.lambdaQuery(); wrapper.like(StrUtil.isNotBlank(workOrder.getWoCode()),WorkOrder::getWoCode,workOrder.getWoCode()); wrapper.like(StrUtil.isNotBlank(workOrder.getWoDesc()),WorkOrder::getWoDesc,workOrder.getWoDesc()); wrapper.eq(Objects.nonNull(workOrder.getWoStatus()),WorkOrder::getWoStatus,workOrder.getWoStatus()); return R.ok(workOrderService.page(page, wrapper)); } /** * 通过id查询工单 * @param id id * @return R */ @Operation(summary = "通过id查询" , description = "通过id查询" ) @GetMapping("/{id}" ) @PreAuthorize("@pms.hasPermission('device_workOrder_view')" ) public R getById(@PathVariable("id" ) Long id) { return R.ok(workOrderService.getById(id)); } /** * 新增工单 * @param workOrder 工单 * @return R */ @Operation(summary = "新增工单" , description = "新增工单" ) @SysLog("新增工单" ) @PostMapping @PreAuthorize("@pms.hasPermission('device_workOrder_add')" ) public R save(@RequestBody WorkOrder workOrder) { return R.ok(workOrderService.save(workOrder)); } /** * 修改工单 * @param workOrder 工单 * @return R */ @Operation(summary = "修改工单" , description = "修改工单" ) @SysLog("修改工单" ) @PutMapping @PreAuthorize("@pms.hasPermission('device_workOrder_edit')" ) public R updateById(@RequestBody WorkOrder workOrder) { return R.ok(workOrderService.updateById(workOrder)); } /** * 通过id删除工单 * @param ids id列表 * @return R */ @Operation(summary = "通过id删除工单" , description = "通过id删除工单" ) @SysLog("通过id删除工单" ) @DeleteMapping @PreAuthorize("@pms.hasPermission('device_workOrder_del')" ) public R removeById(@RequestBody Long[] ids) { return R.ok(workOrderService.removeBatchByIds(CollUtil.toList(ids))); } /** * 导出excel 表格 * @param workOrder 查询条件 * @param ids 导出指定ID * @return excel 文件流 */ @ResponseExcel @GetMapping("/export") @PreAuthorize("@pms.hasPermission('device_workOrder_export')" ) public List<WorkOrder> export(WorkOrder workOrder,Long[] ids) { return workOrderService.list(Wrappers.lambdaQuery(workOrder).in(ArrayUtil.isNotEmpty(ids), WorkOrder::getId, ids)); } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InspectionPlanDeviceMapper.java
New file @@ -0,0 +1,11 @@ package com.by4cloud.platformx.device.mapper; import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.entity.InspectionPlanDevice; import org.apache.ibatis.annotations.Mapper; @Mapper public interface InspectionPlanDeviceMapper extends PlatformxBaseMapper<InspectionPlanDevice> { } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InspectionPlanDeviceSerialMapper.java
New file @@ -0,0 +1,15 @@ package com.by4cloud.platformx.device.mapper; import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.entity.InspectionPlanDeviceSerial; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface InspectionPlanDeviceSerialMapper extends PlatformxBaseMapper<InspectionPlanDeviceSerial> { List<String> selectSerialList(@Param("id") Long id); } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InspectionPlanDeviceStandardMapper.java
New file @@ -0,0 +1,15 @@ package com.by4cloud.platformx.device.mapper; import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.entity.InspectionPlanDeviceStandards; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface InspectionPlanDeviceStandardMapper extends PlatformxBaseMapper<InspectionPlanDeviceStandards> { List<Long> selectStandardIdList(@Param("id")Long id); } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InspectionPlanMapper.java
New file @@ -0,0 +1,17 @@ package com.by4cloud.platformx.device.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.dto.InspectionPlanQueryDTO; import com.by4cloud.platformx.device.entity.InspectionPlan; import com.by4cloud.platformx.device.entity.vo.InspectionPlanPageVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface InspectionPlanMapper extends PlatformxBaseMapper<InspectionPlan> { IPage<InspectionPlanPageVo> page(Page page, @Param("queryDTO") InspectionPlanQueryDTO queryDTO); } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InspectionStandardsMapper.java
New file @@ -0,0 +1,11 @@ package com.by4cloud.platformx.device.mapper; import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.entity.InspectionStandards; import org.apache.ibatis.annotations.Mapper; @Mapper public interface InspectionStandardsMapper extends PlatformxBaseMapper<InspectionStandards> { } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InspectionTaskItemMapper.java
New file @@ -0,0 +1,11 @@ package com.by4cloud.platformx.device.mapper; import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.entity.InspectionTaskItem; import org.apache.ibatis.annotations.Mapper; @Mapper public interface InspectionTaskItemMapper extends PlatformxBaseMapper<InspectionTaskItem> { } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InspectionTaskMapper.java
New file @@ -0,0 +1,17 @@ package com.by4cloud.platformx.device.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.dto.InspectionTaskQueryDTO; import com.by4cloud.platformx.device.entity.InspectionTask; import com.by4cloud.platformx.device.entity.vo.InspectionTaskPageVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface InspectionTaskMapper extends PlatformxBaseMapper<InspectionTask> { IPage<InspectionTaskPageVo> page(Page page, @Param("queryDTO") InspectionTaskQueryDTO queryDTO); } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/WorkOrderMapper.java
New file @@ -0,0 +1,11 @@ package com.by4cloud.platformx.device.mapper; import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper; import com.by4cloud.platformx.device.entity.WorkOrder; import org.apache.ibatis.annotations.Mapper; @Mapper public interface WorkOrderMapper extends PlatformxBaseMapper<WorkOrder> { } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceRepairService.java
@@ -14,4 +14,6 @@ R complete(Long id); IPage pageNew(Page page, DeviceRepairQueryDTO queryDTO); R genWorkOrder(Long id); } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InspectionPlanService.java
New file @@ -0,0 +1,21 @@ package com.by4cloud.platformx.device.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.device.dto.InspectionPlanQueryDTO; import com.by4cloud.platformx.device.entity.InspectionPlan; public interface InspectionPlanService extends IService<InspectionPlan> { boolean saveDeep(InspectionPlan inspectionPlan); IPage pageNew(Page page, InspectionPlanQueryDTO queryDTO); InspectionPlan getByIdNew(Long id); boolean updateByIdNew(InspectionPlan inspectionPlan); R gentTask(Long id); } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InspectionStandardsService.java
New file @@ -0,0 +1,10 @@ package com.by4cloud.platformx.device.service; import com.baomidou.mybatisplus.extension.service.IService; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.device.entity.InspectionStandards; public interface InspectionStandardsService extends IService<InspectionStandards> { R openOrOffById(Long id, Integer status); } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InspectionTaskService.java
New file @@ -0,0 +1,18 @@ package com.by4cloud.platformx.device.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.by4cloud.platformx.device.dto.InspectionTaskQueryDTO; import com.by4cloud.platformx.device.entity.InspectionTask; public interface InspectionTaskService extends IService<InspectionTask> { IPage pageNew(Page page, InspectionTaskQueryDTO queryDTO); InspectionTask getByIdNew(Long id); boolean updateByIdNew(InspectionTask inspectionTask); boolean taskStartById(Long id); } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/WorkOrderService.java
New file @@ -0,0 +1,8 @@ package com.by4cloud.platformx.device.service; import com.baomidou.mybatisplus.extension.service.IService; import com.by4cloud.platformx.device.entity.WorkOrder; public interface WorkOrderService extends IService<WorkOrder> { } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceRepairServiceImpl.java
@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.device.constant.MaxSizeContant; import com.by4cloud.platformx.device.dto.DeviceRepairQueryDTO; import com.by4cloud.platformx.device.entity.DeviceInventory; import com.by4cloud.platformx.device.entity.DeviceRepair; import com.by4cloud.platformx.device.entity.WorkOrder; import com.by4cloud.platformx.device.mapper.DeviceInventoryMapper; import com.by4cloud.platformx.device.mapper.DeviceRepairMapper; import com.by4cloud.platformx.device.mapper.WorkOrderMapper; import com.by4cloud.platformx.device.service.DeviceRepairService; import com.by4cloud.platformx.device.service.JcMaxSizeService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; /** @@ -23,6 +27,8 @@ public class DeviceRepairServiceImpl extends ServiceImpl<DeviceRepairMapper, DeviceRepair> implements DeviceRepairService { private final DeviceInventoryMapper inventoryMapper; private final JcMaxSizeService maxSizeService; private final WorkOrderMapper workOrderMapper; @Override public R approved(Long id) { @@ -50,4 +56,19 @@ public IPage pageNew(Page page, DeviceRepairQueryDTO queryDTO) { return baseMapper.pageNew(page,queryDTO); } @Override public R genWorkOrder(Long id) { DeviceRepair repair = baseMapper.selectById(id); WorkOrder workOrder = new WorkOrder(); workOrder.setRepairId(id); workOrder.setWoCode(maxSizeService.nextNo(MaxSizeContant.DEVICE_PURCHASE_CODE)); workOrder.setWoDesc(repair.getRepairDesc()); workOrder.setWoType(1); workOrder.setWoStatus(1); workOrderMapper.insert(workOrder); repair.setWoFlag(1); baseMapper.updateById(repair); return R.ok(); } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionPlanServiceImpl.java
New file @@ -0,0 +1,252 @@ package com.by4cloud.platformx.device.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.device.dto.InspectionPlanQueryDTO; import com.by4cloud.platformx.device.entity.*; import com.by4cloud.platformx.device.mapper.*; import com.by4cloud.platformx.device.service.InspectionPlanService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; /** * 巡检计划 * * @author syt * @date 2025-04-22 09:06:43 */ @Service @AllArgsConstructor public class InspectionPlanServiceImpl extends ServiceImpl<InspectionPlanMapper, InspectionPlan> implements InspectionPlanService { private final InspectionPlanDeviceMapper planDeviceMapper; private final InspectionPlanDeviceSerialMapper planDeviceSerialMapper; private final InspectionPlanDeviceStandardMapper planDeviceStandardMapper; private final InspectionTaskMapper taskMapper; private final InspectionTaskItemMapper taskItemMapper; @Override public boolean saveDeep(InspectionPlan inspectionPlan) { baseMapper.insert(inspectionPlan); //计划与设备关联 if (inspectionPlan.getDeviceList()!=null&&inspectionPlan.getDeviceList().size()>0){ for (InspectionPlanDevice planDevice:inspectionPlan.getDeviceList() ) { planDevice.setPlanId(inspectionPlan.getId()); planDeviceMapper.insert(planDevice); //巡检计划设备具体序列号 if (planDevice.getSerialList()!=null&&planDevice.getSerialList().size()>0){ planDevice.getSerialList().stream().forEach(item->{ InspectionPlanDeviceSerial serial = new InspectionPlanDeviceSerial(); serial.setSerialNo(item); serial.setPlanDeviceId(planDevice.getId()); planDeviceSerialMapper.insert(serial); }); } //巡检计划巡检标准 if (planDevice.getStandardsList()!=null&&planDevice.getStandardsList().size()>0){ planDevice.getStandardsList().stream().forEach(item->{ InspectionPlanDeviceStandards standards = new InspectionPlanDeviceStandards(); standards.setStandardId(item); standards.setPlanDeviceId(planDevice.getId()); planDeviceStandardMapper.insert(standards); }); } } } //根据是否生成任务标识生成任务 if (inspectionPlan.getTaskFlag()==1){ InspectionTask task = BeanUtil.copyProperties(inspectionPlan, InspectionTask.class); task.setId(null); task.setTaskStatus(0); task.setTaskName(inspectionPlan.getPlanName()+"的任务"); task.setPlanId(inspectionPlan.getId()); taskMapper.insert(task); //任务明细 if (inspectionPlan.getDeviceList()!=null&&inspectionPlan.getDeviceList().size()>0){ for (InspectionPlanDevice planDevice:inspectionPlan.getDeviceList() ) { //巡检计划设备具体序列号 if (planDevice.getSerialList()!=null&&planDevice.getSerialList().size()>0){ for (String serial:planDevice.getSerialList() ) { //巡检计划巡检标准 if (planDevice.getStandardsList()!=null&&planDevice.getStandardsList().size()>0){ for (Long standardId:planDevice.getStandardsList() ) { InspectionTaskItem item = new InspectionTaskItem(); item.setDeviceId(planDevice.getDeviceId()); item.setTaskId(task.getId()); item.setStandardId(standardId); item.setSerialNo(serial); taskItemMapper.insert(item); } } } } } } } return true; } @Override public IPage pageNew(Page page, InspectionPlanQueryDTO queryDTO) { return baseMapper.page(page,queryDTO); } @Override public InspectionPlan getByIdNew(Long id) { InspectionPlan plan = baseMapper.selectById(id); QueryWrapper<InspectionPlanDevice> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("plan_id",id); List<InspectionPlanDevice> planDeviceList = planDeviceMapper.selectList(queryWrapper); if (planDeviceList.size()>0){ planDeviceList.stream().forEach(device->{ List<String> serials = planDeviceSerialMapper.selectSerialList(device.getId()); if (serials.size()>0) { device.setSerialList(serials); } List<Long> standardIdList = planDeviceStandardMapper.selectStandardIdList(device.getId()); if (standardIdList.size()>0) { device.setStandardsList(standardIdList); } }); } plan.setDeviceList(planDeviceList); return plan; } @Override public boolean updateByIdNew(InspectionPlan inspectionPlan) { baseMapper.updateById(inspectionPlan); //计划与设备关联 if (inspectionPlan.getDeviceList()!=null&&inspectionPlan.getDeviceList().size()>0){ for (InspectionPlanDevice planDevice:inspectionPlan.getDeviceList() ) { planDevice.setPlanId(inspectionPlan.getId()); if (planDevice.getId()!=null){ planDeviceMapper.updateById(planDevice); }else { planDeviceMapper.insert(planDevice); } //巡检计划设备具体序列号 if (planDevice.getSerialList()!=null&&planDevice.getSerialList().size()>0){ QueryWrapper<InspectionPlanDeviceSerial> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("plan_device_id",planDevice.getId()); planDeviceSerialMapper.delete(queryWrapper); planDevice.getSerialList().stream().forEach(item->{ InspectionPlanDeviceSerial serial = new InspectionPlanDeviceSerial(); serial.setSerialNo(item); serial.setPlanDeviceId(planDevice.getId()); planDeviceSerialMapper.insert(serial); }); } //巡检计划巡检标准 if (planDevice.getStandardsList()!=null&&planDevice.getStandardsList().size()>0){ QueryWrapper<InspectionPlanDeviceStandards> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("plan_device_id",planDevice.getId()); planDeviceStandardMapper.delete(queryWrapper); planDevice.getStandardsList().stream().forEach(item->{ InspectionPlanDeviceStandards standards = new InspectionPlanDeviceStandards(); standards.setStandardId(item); standards.setPlanDeviceId(planDevice.getId()); planDeviceStandardMapper.insert(standards); }); } } } //根据是否生成任务标识生成任务 if (inspectionPlan.getTaskFlag()==1){ InspectionTask task = BeanUtil.copyProperties(inspectionPlan, InspectionTask.class); task.setId(null); task.setTaskStatus(0); task.setTaskName(inspectionPlan.getPlanName()+"的任务"); task.setPlanId(inspectionPlan.getId()); taskMapper.insert(task); //任务明细 if (inspectionPlan.getDeviceList()!=null&&inspectionPlan.getDeviceList().size()>0){ for (InspectionPlanDevice planDevice:inspectionPlan.getDeviceList() ) { //巡检计划设备具体序列号 if (planDevice.getSerialList()!=null&&planDevice.getSerialList().size()>0){ for (String serial:planDevice.getSerialList() ) { //巡检计划巡检标准 if (planDevice.getStandardsList()!=null&&planDevice.getStandardsList().size()>0){ for (Long standardId:planDevice.getStandardsList() ) { InspectionTaskItem item = new InspectionTaskItem(); item.setDeviceId(planDevice.getDeviceId()); item.setTaskId(task.getId()); item.setStandardId(standardId); item.setSerialNo(serial); taskItemMapper.insert(item); } } } } } } } return true; } @Override public R gentTask(Long id) { InspectionPlan plan = getByIdNew(id); InspectionTask task = BeanUtil.copyProperties(plan, InspectionTask.class); task.setId(null); task.setTaskStatus(0); task.setTaskName(plan.getPlanName()+"的任务"); task.setPlanId(plan.getId()); taskMapper.insert(task); //任务明细 if (plan.getDeviceList()!=null&&plan.getDeviceList().size()>0){ for (InspectionPlanDevice planDevice:plan.getDeviceList() ) { //巡检计划设备具体序列号 if (planDevice.getSerialList()!=null&&planDevice.getSerialList().size()>0){ for (String serial:planDevice.getSerialList() ) { //巡检计划巡检标准 if (planDevice.getStandardsList()!=null&&planDevice.getStandardsList().size()>0){ for (Long standardId:planDevice.getStandardsList() ) { InspectionTaskItem item = new InspectionTaskItem(); item.setDeviceId(planDevice.getDeviceId()); item.setTaskId(task.getId()); item.setStandardId(standardId); item.setSerialNo(serial); taskItemMapper.insert(item); } } } } } } //跟新计划标识 plan.setTaskFlag(1); baseMapper.updateById(plan); return R.ok(); } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionStandardsServiceImpl.java
New file @@ -0,0 +1,24 @@ package com.by4cloud.platformx.device.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.device.entity.InspectionStandards; import com.by4cloud.platformx.device.mapper.InspectionStandardsMapper; import com.by4cloud.platformx.device.service.InspectionStandardsService; import org.springframework.stereotype.Service; /** * 巡检标准 * * @author syt * @date 2025-04-22 09:13:46 */ @Service public class InspectionStandardsServiceImpl extends ServiceImpl<InspectionStandardsMapper, InspectionStandards> implements InspectionStandardsService { @Override public R openOrOffById(Long id, Integer status) { InspectionStandards standards = baseMapper.selectById(id); standards.setStatus(status); baseMapper.updateById(standards); return R.ok(); } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InspectionTaskServiceImpl.java
New file @@ -0,0 +1,64 @@ package com.by4cloud.platformx.device.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.by4cloud.platformx.admin.api.entity.SysUser; import com.by4cloud.platformx.device.dto.InspectionTaskQueryDTO; import com.by4cloud.platformx.device.entity.InspectionTask; import com.by4cloud.platformx.device.entity.InspectionTaskItem; import com.by4cloud.platformx.device.mapper.InspectionTaskItemMapper; import com.by4cloud.platformx.device.mapper.InspectionTaskMapper; import com.by4cloud.platformx.device.service.InspectionTaskService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; /** * 巡检任务 * * @author syt * @date 2025-04-22 09:15:32 */ @Service @AllArgsConstructor public class InspectionTaskServiceImpl extends ServiceImpl<InspectionTaskMapper, InspectionTask> implements InspectionTaskService { private final InspectionTaskItemMapper itemMapper; @Override public IPage pageNew(Page page, InspectionTaskQueryDTO queryDTO) { return baseMapper.page(page,queryDTO); } @Override public InspectionTask getByIdNew(Long id) { InspectionTask task = baseMapper.selectById(id); QueryWrapper<InspectionTaskItem> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("task_id",id); List<InspectionTaskItem> taskItemList = itemMapper.selectList(queryWrapper); task.setItemList(taskItemList); return task; } @Override public boolean updateByIdNew(InspectionTask inspectionTask) { inspectionTask.getItemList().stream().forEach(item->{ itemMapper.updateById(item); }); inspectionTask.setTaskStatus(2); baseMapper.updateById(inspectionTask); return true; } @Override public boolean taskStartById(Long id) { InspectionTask task = baseMapper.selectById(id); task.setTaskStatus(1); baseMapper.updateById(task); return true; } } platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/WorkOrderServiceImpl.java
New file @@ -0,0 +1,16 @@ package com.by4cloud.platformx.device.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.by4cloud.platformx.device.entity.WorkOrder; import com.by4cloud.platformx.device.mapper.WorkOrderMapper; import com.by4cloud.platformx.device.service.WorkOrderService; import org.springframework.stereotype.Service; /** * 工单 * * @author syt * @date 2025-04-22 16:01:37 */ @Service public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService { } platformx-device-biz/src/main/resources/mapper/DeviceRepairMapper.xml
@@ -27,7 +27,8 @@ dr.serial_no, dr.repair_start_date, dr.repair_end_date, dr.status dr.status, dr.wo_flag from device_repair dr join device d on platformx-device-biz/src/main/resources/mapper/InspectionPlanDeviceMapper.xml
New file @@ -0,0 +1,17 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.by4cloud.platformx.device.mapper.InspectionPlanDeviceMapper"> <resultMap id="inspectionPlanDeviceMap" type="com.by4cloud.platformx.device.entity.InspectionPlanDevice"> <id property="id" column="id"/> <result property="compId" column="comp_id"/> <result property="deviceId" column="device_id"/> <result property="planId" column="plan_id"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> </mapper> platformx-device-biz/src/main/resources/mapper/InspectionPlanDeviceSerialMapper.xml
New file @@ -0,0 +1,26 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.by4cloud.platformx.device.mapper.InspectionPlanDeviceSerialMapper"> <resultMap id="inspectionPlanDeviceSerialMap" type="com.by4cloud.platformx.device.entity.InspectionPlanDeviceSerial"> <id property="id" column="id"/> <result property="compId" column="comp_id"/> <result property="planDeviceId" column="plan_device_id"/> <result property="serialNo" column="serial_no"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> <select id="selectSerialList" resultType="java.lang.String"> select serial_no from inspection_plan_device_serial where del_flag = '0' and plan_device_id = #{id} </select> </mapper> platformx-device-biz/src/main/resources/mapper/InspectionPlanDeviceStandardMapper.xml
New file @@ -0,0 +1,25 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.by4cloud.platformx.device.mapper.InspectionPlanDeviceStandardMapper"> <resultMap id="inspectionPlanDeviceStandardMap" type="com.by4cloud.platformx.device.entity.InspectionPlanDeviceStandards"> <id property="id" column="id"/> <result property="compId" column="comp_id"/> <result property="standardId" column="standard_id"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> <select id="selectStandardIdList" resultType="java.lang.Long"> select standard_id from inspection_plan_device_standard where del_flag = '0' and plan_device_id = #{id} </select> </mapper> platformx-device-biz/src/main/resources/mapper/InspectionPlanMapper.xml
New file @@ -0,0 +1,40 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.by4cloud.platformx.device.mapper.InspectionPlanMapper"> <resultMap id="inspectionPlanMap" type="com.by4cloud.platformx.device.entity.InspectionPlan"> <id property="id" column="id"/> <result property="compId" column="comp_id"/> <result property="endTime" column="end_time"/> <result property="inspectionUserId" column="inspection_user_id"/> <result property="planName" column="plan_name"/> <result property="startTime" column="start_time"/> <result property="taskFlag" column="task_flag"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> <select id="page" resultType="com.by4cloud.platformx.device.entity.vo.InspectionPlanPageVo"> select ip.id, ip.plan_name, ip.inspection_user_id, ip.start_time, ip.end_time, ip.task_flag, su.name inspectionUserName from inspection_plan ip join platformxx_boot.sys_user su on su.user_id = ip.inspection_user_id where ip.del_flag = '0' <if test="queryDTO.planName != null and queryDTO.planName != ''"> and ip.plan_name like CONCAT('%', #{queryDTO.planName}, '%') </if> order by ip.create_time desc </select> </mapper> platformx-device-biz/src/main/resources/mapper/InspectionStandardsMapper.xml
New file @@ -0,0 +1,17 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.by4cloud.platformx.device.mapper.InspectionStandardsMapper"> <resultMap id="inspectionStandardsMap" type="com.by4cloud.platformx.device.entity.InspectionStandards"> <id property="id" column="id"/> <result property="compId" column="comp_id"/> <result property="standardsContent" column="standards_content"/> <result property="standardsName" column="standards_name"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> </mapper> platformx-device-biz/src/main/resources/mapper/InspectionTaskItemMapper.xml
New file @@ -0,0 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.by4cloud.platformx.device.mapper.InspectionTaskItemMapper"> <resultMap id="inspectionTaskItemMap" type="com.by4cloud.platformx.device.entity.InspectionTaskItem"> <id property="id" column="id"/> <result property="compId" column="comp_id"/> <result property="deviceId" column="device_id"/> <result property="inspectionResults" column="inspection_results"/> <result property="serialNo" column="serial_no"/> <result property="standardId" column="standard_id"/> <result property="taskId" column="task_id"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> </mapper> platformx-device-biz/src/main/resources/mapper/InspectionTaskMapper.xml
New file @@ -0,0 +1,40 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.by4cloud.platformx.device.mapper.InspectionTaskMapper"> <resultMap id="inspectionTaskMap" type="com.by4cloud.platformx.device.entity.InspectionTask"> <id property="id" column="id"/> <result property="compId" column="comp_id"/> <result property="endTime" column="end_time"/> <result property="inspectionUserId" column="inspection_user_id"/> <result property="startTime" column="start_time"/> <result property="taskName" column="task_name"/> <result property="taskStatus" column="task_status"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> <select id="page" resultType="com.by4cloud.platformx.device.entity.vo.InspectionTaskPageVo"> select it.id, it.task_name , it.inspection_user_id, it.start_time, it.end_time, it.task_status , su.name inspectionUserName from inspection_task it join platformxx_boot.sys_user su on su.user_id = it.inspection_user_id where it.del_flag = '0' <if test="queryDTO.taskName != null and queryDTO.taskName != ''"> and ip.task_name like CONCAT('%', #{queryDTO.taskName}, '%') </if> order by it.create_time desc </select> </mapper> platformx-device-biz/src/main/resources/mapper/WorkOrderMapper.xml
New file @@ -0,0 +1,25 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.by4cloud.platformx.device.mapper.WorkOrderMapper"> <resultMap id="workOrderMap" type="com.by4cloud.platformx.device.entity.WorkOrder"> <id property="id" column="id"/> <result property="compId" column="comp_id"/> <result property="handleDesc" column="handle_desc"/> <result property="handlePic" column="handle_pic"/> <result property="handleTime" column="handle_time"/> <result property="handleUserId" column="handle_user_id"/> <result property="handleUserName" column="handle_user_name"/> <result property="woType" column="wo_type"/> <result property="repairId" column="repair_id"/> <result property="woCode" column="wo_code"/> <result property="woDesc" column="wo_desc"/> <result property="woStatus" column="wo_status"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="delFlag" column="del_flag"/> </resultMap> </mapper>