From 44515313ca5da49034918aa7c199c1b81477a90e Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期六, 22 二月 2025 11:47:06 +0800
Subject: [PATCH] 新增设备保养计划
---
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlanDetails.java | 62 ++++
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java | 34 ++
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java | 20 +
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDetailsDto.java | 32 ++
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java | 108 +++++++
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java | 289 ++++++++++++++++++++
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanDetailsMapper.java | 25 +
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlan.java | 75 +++++
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml | 20 +
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java | 78 +++++
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml | 23 +
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java | 8
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDto.java | 30 ++
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanDetailsService.java | 17 +
14 files changed, 817 insertions(+), 4 deletions(-)
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
index 5050b64..b139e97 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
@@ -90,7 +90,7 @@
* @return
*/
@ApiOperation(value = "璁惧鏍告煡璁″垝鍒犻櫎")
- @GetMapping("/delQualitySupervise")
+ @DeleteMapping("/delQualitySupervise")
public Result delQualitySupervise(Integer planId){
return Result.success(deviceExaminePlanService.removeById(planId));
}
@@ -122,7 +122,7 @@
* @return
*/
@ApiOperation(value = "璁惧鏍告煡璁″垝鍒楄〃")
- @PostMapping("/pageDeviceExaminePlan")
+ @GetMapping("/pageDeviceExaminePlan")
public Result<IPage<DeviceExaminePlanDto>> pageDeviceExaminePlan(Page page, DeviceExaminePlan DeviceExaminePlan) {
return Result.success(deviceExaminePlanService.pageDeviceExaminePlan(page, DeviceExaminePlan));
}
@@ -132,7 +132,7 @@
* @return
*/
@ApiOperation(value = "璁惧鏍告煡璁″垝璇︽儏鍒楄〃")
- @PostMapping("/pageDeviceExaminePlanDetail")
+ @GetMapping("/pageDeviceExaminePlanDetail")
public Result<IPage<DeviceExaminePlanDetails>> pageDeviceExaminePlanDetail(Page page, DeviceExaminePlanDetails deviceExaminePlanDetails) {
return Result.success(deviceExaminePlanService.pageDeviceExaminePlanDetail(page, deviceExaminePlanDetails));
}
@@ -165,7 +165,7 @@
* @return
*/
@ApiOperation(value = "鍒犻櫎璁惧鏍告煡璁″垝璇︽儏")
- @GetMapping("/delDeviceExaminePlanDetail")
+ @DeleteMapping("/delDeviceExaminePlanDetail")
public Result delDeviceExaminePlanDetail(Integer planDetailsId){
return Result.success(deviceExaminePlanDetailsService.removeById(planDetailsId));
}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java
new file mode 100644
index 0000000..9ee8ffe
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.device.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
+import com.ruoyi.device.pojo.DeviceMaintenancePlan;
+import com.ruoyi.device.service.DeviceMaintenancePlanService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.SneakyThrows;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+@Api(tags = "璁惧淇濆吇璁″垝")
+@RestController
+@RequestMapping("/deviceMaintenancePlan")
+public class DeviceMaintenancePlanController {
+ @Resource
+ private DeviceMaintenancePlanService deviceMaintenancePlanService;
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝
+ * @return
+ */
+ @ApiOperation("鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝")
+ @GetMapping("selectDeviceMaintenancePlanByPage")
+ public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto itemParameter){
+ return deviceMaintenancePlanService.selectDeviceMaintenancePlanByPage(page, itemParameter);
+ }
+
+ /**
+ * 鏂板璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @ApiOperation("鏂板璁惧淇濆吇璁″垝")
+ @PostMapping("/addMaintenancePlan")
+ public Result addMaintenancePlan(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.addMaintenancePlan(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 淇敼璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @ApiOperation("淇敼璁惧淇濆吇璁″垝")
+ @PostMapping("/updateMaintenancePlan")
+ public Result updateMaintenancePlan(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.updateMaintenancePlan(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 鍒犻櫎璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @ApiOperation("鍒犻櫎璁惧淇濆吇璁″垝")
+ @GetMapping("/deleteMaintenancePlan")
+ public Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.deleteMaintenancePlan(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ */
+ @ApiOperation("鏌ヨ璁惧淇濆吇璁″垝璇︽儏")
+ @GetMapping("/getMaintenancePlanDetail")
+ public Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId) {
+ return deviceMaintenancePlanService.getMaintenancePlanDetail(maintenancePlanId);
+ }
+
+ /**
+ * 瀵煎嚭璁惧淇濆吇璁″垝
+ */
+ @ApiOperation("瀵煎嚭璁惧淇濆吇璁″垝")
+ @GetMapping("/exportDeviceMaintenancePlan")
+ public Result exportDeviceMaintenancePlan(@RequestParam("maintenancePlanId") Integer maintenancePlanId, HttpServletResponse response) {
+ return deviceMaintenancePlanService.exportDeviceMaintenancePlanDto(maintenancePlanId, response);
+ }
+
+ /**
+ * 鎻愪氦瀹℃牳
+ */
+ @ApiOperation("鎻愪氦瀹℃牳")
+ @PostMapping("/submitReviewMaintenancePlanStatus")
+ public Result submitReviewMaintenancePlanStatus(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.submitReviewMaintenancePlanStatus(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 瀹℃牳璁惧淇濆吇璁″垝鐘舵��
+ */
+ @ApiOperation("瀹℃牳璁惧淇濆吇璁″垝鐘舵��")
+ @PostMapping("/reviewMaintenancePlanStatus")
+ public Result reviewMaintenancePlanStatus(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.reviewMaintenancePlanStatus(deviceMaintenancePlanDto);
+ }
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDetailsDto.java b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDetailsDto.java
new file mode 100644
index 0000000..0fb4955
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDetailsDto.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dto;
+
+import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-17 鏄熸湡浜� 9:26:48
+ * Description: 璁惧淇濆吇璁″垝璇︽儏
+ */
+@Data
+public class DeviceMaintenancePlanDetailsDto extends DeviceMaintenancePlanDetails {
+
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+
+ @ApiModelProperty("浠櫒璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("浠櫒璁惧缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("浠櫒璁惧鍨嬪彿")
+ private String specificationModel;
+
+ @ApiModelProperty("浠櫒缂栧彿")
+ private String managementNumber;
+
+ @ApiModelProperty("褰掑睘瀹為獙瀹�")
+ private String storagePoint;
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDto.java b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDto.java
new file mode 100644
index 0000000..c783786
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDto.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ruoyi.device.pojo.DeviceMaintenancePlan;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-16 鏄熸湡涓� 18:26:59
+ * Description:
+ */
+@Data
+public class DeviceMaintenancePlanDto extends DeviceMaintenancePlan {
+
+ @ApiModelProperty("璁惧淇濆吇璁″垝璇︽儏")
+ @TableField(exist = false)
+ private List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails;
+
+ @ApiModelProperty("缂栧埗鏃ユ湡")
+ private String datePreparationStr;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private String auditDateStr;
+
+ @ApiModelProperty("璁惧Id")
+ private Integer deviceId;
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanDetailsMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanDetailsMapper.java
new file mode 100644
index 0000000..86760eb
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanDetailsMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto;
+import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝璇︽儏琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:11:46
+ */
+public interface DeviceMaintenancePlanDetailsMapper extends BaseMapper<DeviceMaintenancePlanDetails> {
+
+ /**
+ * 鏌ヨ璁惧淇濆吇璇︽儏
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ */
+ List<DeviceMaintenancePlanDetailsDto> deviceInspectionRecordDetailsList(@Param("maintenancePlanId") Integer maintenancePlanId);
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java
new file mode 100644
index 0000000..f790162
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
+import com.ruoyi.device.pojo.DeviceMaintenancePlan;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+public interface DeviceMaintenancePlanMapper extends BaseMapper<DeviceMaintenancePlan> {
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝
+ * @param page 褰撳墠椤�
+ * @param queryWrappers 鏌ヨ鏉′欢
+ * @return
+ */
+ IPage<DeviceMaintenancePlan> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceMaintenancePlanDto> queryWrappers);
+
+ /**
+ * 鏍规嵁淇濆吇璁″垝id鏌ヨ璁惧淇濆吇璁″垝
+ * @param maintenancePlanId 淇濆吇璁″垝id
+ * @return
+ */
+ DeviceMaintenancePlanDto selectMaintenancePlanById(@Param("maintenancePlanId") Integer maintenancePlanId);
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlan.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlan.java
new file mode 100644
index 0000000..bed26d4
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlan.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+@Getter
+@Setter
+@TableName("device_maintenance_plan")
+@ApiModel(value = "DeviceMaintenancePlan瀵硅薄", description = "璁惧淇濆吇璁″垝琛�")
+public class DeviceMaintenancePlan implements Serializable {
+
+ @ApiModelProperty("璁惧淇濆吇璁″垝id")
+ @TableId(value = "maintenance_plan_id", type = IdType.AUTO)
+ private Integer maintenancePlanId;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String compiler;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String planName;
+
+ @ApiModelProperty("璁″垝骞翠唤")
+ private String planYear;
+
+ @ApiModelProperty("缂栧埗浜篿d")
+ private Integer compilerId;
+
+ @ApiModelProperty("缂栧埗鏃ユ湡")
+ private LocalDateTime datePreparation;
+
+ @ApiModelProperty("瀹℃牳鐘舵�侊紝0鏈鏍革紝1瀹℃牳")
+ private Integer status;
+
+ @ApiModelProperty("瀹℃牳浜篿d")
+ private Integer auditId;
+
+ @ApiModelProperty("瀹℃牳浜�")
+ private String audit;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private LocalDateTime auditDate;
+
+ @ApiModelProperty("瀹℃牳淇℃伅")
+ private String auditRemark;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlanDetails.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlanDetails.java
new file mode 100644
index 0000000..d6bc30d
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlanDetails.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝璇︽儏琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:11:46
+ */
+@Getter
+@Setter
+@TableName("device_maintenance_plan_details")
+@ApiModel(value = "DeviceMaintenancePlanDetails瀵硅薄", description = "璁惧淇濆吇璁″垝璇︽儏琛�")
+public class DeviceMaintenancePlanDetails implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("淇濆吇璁″垝璇︽儏id")
+ @TableId(value = "maintenance_plan_detail_id", type = IdType.AUTO)
+ private Integer maintenancePlanDetailId;
+
+ @ApiModelProperty("淇濆吇璁″垝id")
+ private Integer maintenancePlanId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("淇濆吇鍏抽敭閮ㄤ綅")
+ private String maintenanceSite;
+
+ @ApiModelProperty("淇濆吇鍐呭")
+ private String maintenanceContent;
+
+ @ApiModelProperty("淇濆吇鍛ㄦ湡")
+ private String maintenanceIntervals;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanDetailsService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanDetailsService.java
new file mode 100644
index 0000000..04fb233
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanDetailsService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝璇︽儏琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:11:46
+ */
+public interface DeviceMaintenancePlanDetailsService extends IService<DeviceMaintenancePlanDetails> {
+
+
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
new file mode 100644
index 0000000..3c7d1f0
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
+import com.ruoyi.device.pojo.DeviceMaintenancePlan;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+public interface DeviceMaintenancePlanService extends IService<DeviceMaintenancePlan> {
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝
+ * @param page 褰撳墠椤�
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ * @return
+ */
+ Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 鏂板璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ Result addMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 淇敼璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ Result updateMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 鍒犻櫎璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 瀵煎嚭璁惧淇濆吇璁″垝
+ *
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ * @param response 鍝嶅簲
+ */
+ Result exportDeviceMaintenancePlanDto(Integer maintenancePlanId, HttpServletResponse response);
+
+ /**
+ * 鏌ョ湅璁惧淇濆吇璁″垝璇︽儏
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ * @return
+ */
+ Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId);
+
+ /**
+ * 鎻愪氦瀹℃牳
+ * @param deviceMaintenancePlanDto
+ * @return
+ */
+ Result submitReviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 瀹℃牳璁惧淇濆吇璁″垝鐘舵��
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ * @return
+ */
+ Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java
new file mode 100644
index 0000000..ae87e6e
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.device.mapper.DeviceMaintenancePlanDetailsMapper;
+import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
+import com.ruoyi.device.service.DeviceMaintenancePlanDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝璇︽儏琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:11:46
+ */
+@Service
+public class DeviceMaintenancePlanDetailsServiceImpl extends ServiceImpl<DeviceMaintenancePlanDetailsMapper, DeviceMaintenancePlanDetails> implements DeviceMaintenancePlanDetailsService {
+
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java
new file mode 100644
index 0000000..3a590a5
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java
@@ -0,0 +1,289 @@
+package com.ruoyi.device.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.core.domain.entity.InformationNotification;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.WxCpUtils;
+import com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto;
+import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
+import com.ruoyi.device.mapper.DeviceMaintenancePlanDetailsMapper;
+import com.ruoyi.device.mapper.DeviceMaintenancePlanMapper;
+import com.ruoyi.device.pojo.DeviceMaintenancePlan;
+import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
+import com.ruoyi.device.service.DeviceMaintenancePlanDetailsService;
+import com.ruoyi.device.service.DeviceMaintenancePlanService;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.inspect.util.UserUtils;
+import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.system.service.InformationNotificationService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+@Service
+public class DeviceMaintenancePlanServiceImpl extends ServiceImpl<DeviceMaintenancePlanMapper, DeviceMaintenancePlan> implements DeviceMaintenancePlanService {
+
+ @Resource
+ private DeviceMaintenancePlanDetailsService deviceMaintenancePlanDetailsService;
+ @Resource
+ private DeviceMaintenancePlanDetailsMapper deviceMaintenancePlanDetailsMapper;
+ @Resource
+ private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+ @Resource
+ private InformationNotificationService informationNotificationService;
+ @Resource
+ private UserMapper userMapper;
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝
+ *
+ * @param page
+ * @return
+ */
+ @Override
+ public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ IPage<DeviceMaintenancePlan> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceMaintenancePlanDto));
+ return Result.success(iPage);
+ }
+
+ /**
+ * 鏂板璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @Override
+ public Result addMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ Integer userId = SecurityUtils.getUserId().intValue();
+ User user = userMapper.selectById(userId);
+ deviceMaintenancePlanDto.setCompilerId(userId);
+ deviceMaintenancePlanDto.setCompiler(user.getName());
+ deviceMaintenancePlanDto.setDatePreparation(LocalDateTime.now());
+
+ // 鏌ヨ瀹℃牳浜篿d
+ if (deviceMaintenancePlanDto.getAuditId() != null) {
+ User auditUser = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
+ deviceMaintenancePlanDto.setAudit(auditUser.getName());
+ }
+ this.saveOrUpdate(deviceMaintenancePlanDto);
+
+ // 璇︽儏璧嬪�煎苟淇濆瓨
+ List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails = deviceMaintenancePlanDto.getDeviceMaintenancePlanDetails();
+ if (CollectionUtils.isNotEmpty(deviceMaintenancePlanDetails)) { // 璇︽儏涓嶄负绌�
+ List<DeviceMaintenancePlanDetails> collect = deviceMaintenancePlanDetails.stream().map(deviceMaintenancePlanDetail -> { // 閬嶅巻璇︽儏
+ deviceMaintenancePlanDetail.setDeviceId(deviceMaintenancePlanDetail.getDeviceId()); // 璁惧ID
+ deviceMaintenancePlanDetail.setMaintenancePlanId(deviceMaintenancePlanDto.getMaintenancePlanId()); // 淇濆吇璁″垝ID
+ DeviceMaintenancePlanDetails planDetails = new DeviceMaintenancePlanDetails();
+ BeanUtils.copyProperties(deviceMaintenancePlanDetail, planDetails);
+ return planDetails;
+ }).collect(Collectors.toList());
+ deviceMaintenancePlanDetailsService.saveBatch(collect);
+ }
+
+ return Result.success();
+ }
+
+ /**
+ * 淇敼璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @Override
+ public Result updateMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ // 鏌ヨ瀹℃牳浜篿d
+ if (deviceMaintenancePlanDto.getAuditId() != null) {
+ User auditUser = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
+ deviceMaintenancePlanDto.setAudit(auditUser.getName());
+ }
+ this.saveOrUpdate(deviceMaintenancePlanDto);
+
+ // 鍒犻櫎鍘熸湰鐨勮鎯�
+ deviceMaintenancePlanDetailsService.remove(Wrappers.<DeviceMaintenancePlanDetails>lambdaQuery().eq(DeviceMaintenancePlanDetails::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId()));
+ // 璇︽儏璧嬪�煎苟淇濆瓨
+ List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails = deviceMaintenancePlanDto.getDeviceMaintenancePlanDetails();
+ if (CollectionUtils.isNotEmpty(deviceMaintenancePlanDetails)) { // 璇︽儏涓嶄负绌�
+ List<DeviceMaintenancePlanDetails> collect = deviceMaintenancePlanDetails.stream().map(deviceMaintenancePlanDetail -> { // 閬嶅巻璇︽儏
+ deviceMaintenancePlanDetail.setDeviceId(deviceMaintenancePlanDto.getDeviceId()); // 璁惧ID
+ deviceMaintenancePlanDetail.setMaintenancePlanId(deviceMaintenancePlanDto.getMaintenancePlanId()); // 淇濆吇璁″垝ID
+ DeviceMaintenancePlanDetails planDetails = new DeviceMaintenancePlanDetails();
+ BeanUtils.copyProperties(deviceMaintenancePlanDetail, planDetails);
+ return planDetails;
+ }).collect(Collectors.toList());
+ deviceMaintenancePlanDetailsService.saveBatch(collect);
+ }
+ return Result.success();
+ }
+
+ /**
+ * 鍒犻櫎璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @Override
+ public Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ this.removeById(deviceMaintenancePlanDto);
+ deviceMaintenancePlanDetailsService.remove(Wrappers.<DeviceMaintenancePlanDetails>lambdaQuery().eq(DeviceMaintenancePlanDetails::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId()));
+ return Result.success();
+ }
+
+ /**
+ * 瀵煎嚭璁惧淇濆吇璁″垝
+ *
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ * @param response 鍝嶅簲
+ */
+ @Override
+ public Result exportDeviceMaintenancePlanDto(Integer maintenancePlanId, HttpServletResponse response) {
+ // 鏌ヨ璁惧淇濆吇璁″垝
+ DeviceMaintenancePlanDto deviceMaintenancePlan = baseMapper.selectMaintenancePlanById(maintenancePlanId);
+
+ // 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetailsDtoList = deviceMaintenancePlanDetailsMapper.deviceInspectionRecordDetailsList(maintenancePlanId);
+ // 璁剧疆搴忓彿
+ deviceMaintenancePlanDetailsDtoList.forEach(deviceInspectionRecordDetails -> {
+ deviceInspectionRecordDetails.setIndex(deviceMaintenancePlanDetailsDtoList.indexOf(deviceInspectionRecordDetails) + 1);
+ });
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/maintenance-plan.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceMaintenancePlanDetailsDtoList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceMaintenancePlan", deviceMaintenancePlan);
+ put("deviceMaintenancePlanDetailsDtoList", deviceMaintenancePlanDetailsDtoList);
+ // 缂栧埗浜虹鍚嶅湴鍧�
+ put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceMaintenancePlan.getCompilerId()));
+ // 瀹℃牳浜虹鍚嶅湴鍧�
+ put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceMaintenancePlan.getAuditId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "璁惧淇濆吇璁″垝琛�", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ return Result.success();
+ }
+
+ /**
+ * 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ *
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ */
+ @Override
+ public Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId) {
+ // 鏌ヨ璁惧淇濆吇璁″垝
+ DeviceMaintenancePlan deviceMaintenancePlan = baseMapper.selectById(maintenancePlanId);
+ // 鏌ヨ璇︽儏
+ DeviceMaintenancePlanDto deviceMaintenancePlanDto = new DeviceMaintenancePlanDto();
+ BeanUtils.copyProperties(deviceMaintenancePlan, deviceMaintenancePlanDto);
+ deviceMaintenancePlanDto.setDeviceMaintenancePlanDetails(deviceMaintenancePlanDetailsMapper.deviceInspectionRecordDetailsList(maintenancePlanId));
+ return Result.success(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 鎻愪氦瀹℃牳
+ * @param deviceMaintenancePlanDto
+ * @return
+ */
+ @Override
+ public Result submitReviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ User audit = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
+ this.update(Wrappers.<DeviceMaintenancePlan>lambdaUpdate()
+ .eq(DeviceMaintenancePlan::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId())
+ .set(DeviceMaintenancePlan::getAuditId, audit.getId())
+ .set(DeviceMaintenancePlan::getAudit, audit.getName())
+ .set(DeviceMaintenancePlan::getStatus, null)
+ .set(DeviceMaintenancePlan::getAuditRemark, null)
+ .set(DeviceMaintenancePlan::getAuditDate, null)
+ );
+
+ DeviceMaintenancePlan deviceMaintenancePlan = baseMapper.selectById(deviceMaintenancePlanDto.getMaintenancePlanId());
+
+ // 鍙戦�佹秷鎭�
+ Integer userId = SecurityUtils.getUserId().intValue();
+ User user = userMapper.selectById(userId);
+ // 娑堟伅鍙戦��
+ InformationNotification info = new InformationNotification();
+ // 鍙戦�佷汉
+ info.setCreateUser(user.getName());
+ info.setMessageType("6");
+ info.setTheme("CNAS璁惧淇濆吇璁″垝瀹℃牳閫氱煡");
+ info.setContent(deviceMaintenancePlan.getPlanYear() + "骞寸殑璁惧淇濆吇璁″垝寰呭鏍�");
+ info.setSenderId(userId);
+ // 鎺ユ敹浜�
+ info.setConsigneeId(audit.getId());
+ info.setJumpPath("a6-device");
+ informationNotificationService.addInformationNotification(info);
+
+ // 鍙戦�佷紒涓氬井淇¢�氱煡
+ threadPoolTaskExecutor.execute(() -> {
+ String message = "";
+ message += "CNAS璁惧淇濆吇璁″垝鏍搁�氱煡";
+ message += "\n璇峰幓璧勬簮绠$悊-璁惧涓�灞傜洰褰�-璁惧淇濆吇璁″垝濉啓";
+ message += "\n" + deviceMaintenancePlan.getPlanYear() + "骞寸殑璁惧淇濆吇璁″垝寰呮牳";
+ //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
+ try {
+ WxCpUtils.inform(audit.getAccount(), message, null);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ });
+ return Result.success();
+ }
+
+ /**
+ * 瀹℃牳璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @Override
+ public Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ LambdaUpdateWrapper<DeviceMaintenancePlan> wrapper = Wrappers.<DeviceMaintenancePlan>lambdaUpdate()
+ .eq(DeviceMaintenancePlan::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId())
+ .set(DeviceMaintenancePlan::getStatus, deviceMaintenancePlanDto.getStatus())
+ .set(DeviceMaintenancePlan::getAuditRemark, deviceMaintenancePlanDto.getAuditRemark())
+ .set(DeviceMaintenancePlan::getAuditDate, LocalDateTime.now());
+
+ this.update(wrapper); // 鏇存柊
+ return Result.success();
+ }
+
+
+}
diff --git a/cnas-device/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml b/cnas-device/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml
new file mode 100644
index 0000000..aeb49ce
--- /dev/null
+++ b/cnas-device/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml
@@ -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.ruoyi.device.mapper.DeviceMaintenancePlanDetailsMapper">
+
+
+ <select id="deviceInspectionRecordDetailsList"
+ resultType="com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto">
+ select
+ dmpd.*,
+ d.device_name,
+ d.management_number device_number,
+ d.specification_model,
+ d.management_number,
+ d.storage_point
+ from device_maintenance_plan_details dmpd
+ left join device d on dmpd.device_id = d.id
+ where dmpd.maintenance_plan_id = #{maintenancePlanId}
+ </select>
+
+</mapper>
diff --git a/cnas-device/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml b/cnas-device/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml
new file mode 100644
index 0000000..fca2d48
--- /dev/null
+++ b/cnas-device/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml
@@ -0,0 +1,23 @@
+<?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.ruoyi.device.mapper.DeviceMaintenancePlanMapper">
+
+ <!-- 鏍规嵁璁惧id鏌ヨ璁惧鐨勪繚鍏昏鍒� -->
+ <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.DeviceMaintenancePlan">
+ select
+ *
+ from device_maintenance_plan
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="selectMaintenancePlanById" resultType="com.ruoyi.device.pojo.DeviceMaintenancePlan">
+ select
+ dmp.*,
+ date_format(dmp.date_preparation, '%Y-%m-%d') as datePreparationStr,
+ date_format(dmp.audit_date, '%Y-%m-%d') as auditDateStr
+ from device_maintenance_plan dmp
+ where dmp.maintenance_plan_id = #{maintenancePlanId}
+ </select>
+
+</mapper>
--
Gitblit v1.9.3