From 1476af7e6be42a25946288a9e34b4bce5bc97f1b Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期六, 22 二月 2025 12:00:03 +0800
Subject: [PATCH] 移植1量值溯源计划
---
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java | 34 ++
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementDetailsMapper.java | 26 +
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java | 20 +
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagementDetails.java | 68 ++++
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml | 18 +
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java | 105 +++++++
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDetailsDto.java | 25 +
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDto.java | 28 ++
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementDetailsService.java | 16 +
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java | 69 ++++
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagement.java | 77 +++++
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml | 23 +
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java | 289 ++++++++++++++++++++
13 files changed, 798 insertions(+), 0 deletions(-)
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java
new file mode 100644
index 0000000..d1036ac
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java
@@ -0,0 +1,105 @@
+package com.ruoyi.device.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
+import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
+import com.ruoyi.device.service.DeviceTraceabilityManagementService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+@Api(tags = "璁惧閲忓�兼函婧愯鍒�")
+@RestController
+@RequestMapping("/deviceTraceabilityManagement")
+public class DeviceTraceabilityManagementController {
+ @Resource
+ private DeviceTraceabilityManagementService deviceTraceabilityManagementService;
+
+ /**
+ * 鍒嗛〉鏌ヨ閲忓�兼函婧愯鍒�
+ * @return
+ */
+ @ApiOperation("鍒嗛〉鏌ヨ閲忓�兼函婧愯鍒�")
+ @GetMapping("selectDeviceTraceabilityManagementByPage")
+ public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto itemParameter){
+ return deviceTraceabilityManagementService.selectDeviceTraceabilityManagementByPage(page, itemParameter);
+ }
+
+ /**
+ * 鏂板閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ @ApiOperation("鏂板閲忓�兼函婧愯鍒�")
+ @PostMapping("/addTraceabilityManagement")
+ public Result addTraceabilityManagement(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.addTraceabilityManagement(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 淇敼閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ @ApiOperation("淇敼閲忓�兼函婧愯鍒�")
+ @PostMapping("/updateTraceabilityManagement")
+ public Result updateTraceabilityManagement(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.updateTraceabilityManagement(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 鍒犻櫎閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ @ApiOperation("鍒犻櫎閲忓�兼函婧愯鍒�")
+ @GetMapping("/deleteTraceabilityManagement")
+ public Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.deleteTraceabilityManagement(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 鏌ヨ閲忓�兼函婧愯鍒掕鎯�
+ */
+ @ApiOperation("鏌ヨ閲忓�兼函婧愯鍒掕鎯�")
+ @GetMapping("/getTraceabilityManagementDetail")
+ public Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId) {
+ return deviceTraceabilityManagementService.getTraceabilityManagementDetail(traceabilityManagementId);
+ }
+
+ /**
+ * 鎻愪氦鎵瑰噯
+ */
+ @ApiOperation("鎻愪氦鎵瑰噯")
+ @PostMapping("/submitReviewTraceabilityManagementStatus")
+ public Result submitReviewTraceabilityManagementStatus(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.submitReviewTraceabilityManagementStatus(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 閲忓�兼函婧愯鍒掓壒鍑�
+ */
+ @ApiOperation("閲忓�兼函婧愯鍒掓壒鍑�")
+ @PostMapping("/reviewTraceabilityManagementStatus")
+ public Result reviewTraceabilityManagementStatus(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.reviewTraceabilityManagementStatus(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 瀵煎嚭閲忓�兼函婧愯鍒�
+ */
+ @ApiOperation("瀵煎嚭閲忓�兼函婧愯鍒�")
+ @GetMapping("/exportDeviceTraceabilityManagement")
+ public Result exportDeviceTraceabilityManagement(@RequestParam("traceabilityManagementId") Integer traceabilityManagementId, HttpServletResponse response) {
+ return deviceTraceabilityManagementService.exportDeviceTraceabilityManagementDto(traceabilityManagementId, response);
+ }
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDetailsDto.java b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDetailsDto.java
new file mode 100644
index 0000000..60663f4
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDetailsDto.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dto;
+
+import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-20 鏄熸湡浜� 15:05:02
+ * Description:
+ */
+@Data
+public class DeviceTraceabilityManagementDetailsDto extends DeviceTraceabilityManagementDetails {
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+
+ @ApiModelProperty("浠櫒璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("浠櫒璁惧鍨嬪彿")
+ private String specificationModel;
+
+ @ApiModelProperty("浠櫒缂栧彿")
+ private String managementNumber;
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDto.java b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDto.java
new file mode 100644
index 0000000..6e9c65f
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDto.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dto;
+
+import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-20 鏄熸湡浜� 14:30:45
+ * Description:
+ */
+@Data
+public class DeviceTraceabilityManagementDto extends DeviceTraceabilityManagement {
+
+ @ApiModelProperty("璁惧閲忓�兼函婧愯鍒掕鎯�")
+ private List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails;
+
+ @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/DeviceTraceabilityManagementDetailsMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementDetailsMapper.java
new file mode 100644
index 0000000..6834f74
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementDetailsMapper.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.device.dto.DeviceTraceabilityManagementDetailsDto;
+import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕鎯呰〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:58
+ */
+public interface DeviceTraceabilityManagementDetailsMapper extends BaseMapper<DeviceTraceabilityManagementDetails> {
+
+ /**
+ * 鏍规嵁婧簮璁″垝id鏌ヨ婧簮璁″垝璇︽儏
+ * @param traceabilityManagementId 婧簮璁″垝id
+ * @return 婧簮璁″垝璇︽儏
+ */
+ List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetailsList(@Param("traceabilityManagementId") Integer traceabilityManagementId);
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java
new file mode 100644
index 0000000..6153899
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.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.DeviceTraceabilityManagementDto;
+import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+public interface DeviceTraceabilityManagementMapper extends BaseMapper<DeviceTraceabilityManagement> {
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧閲忓�兼函婧愯鍒�
+ * @param page
+ * @param queryWrappers
+ * @return
+ */
+ IPage<DeviceTraceabilityManagement> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceTraceabilityManagementDto> queryWrappers);
+
+ /**
+ * 鏍规嵁id鏌ヨ璁惧閲忓�兼函婧愯鍒�
+ * @param traceabilityManagementId
+ * @return
+ */
+ DeviceTraceabilityManagementDto selectDeviceTraceabilityManagementById(@Param("traceabilityManagementId") Integer traceabilityManagementId);
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagement.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagement.java
new file mode 100644
index 0000000..ba6aeb0
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagement.java
@@ -0,0 +1,77 @@
+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.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+@Getter
+@Setter
+@TableName("device_traceability_management")
+@ApiModel(value = "DeviceTraceabilityManagement瀵硅薄", description = "璁惧閲忓�兼函婧愯鍒掕〃")
+public class DeviceTraceabilityManagement{
+
+ @ApiModelProperty("璁惧閲忓�兼函婧愯鍒抜d")
+ @TableId(value = "traceability_management_id", type = IdType.AUTO)
+ private Integer traceabilityManagementId;
+
+ @ApiModelProperty("鏂囦欢鍚嶇О")
+ private String fileName;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String planName;
+
+ @ApiModelProperty("璁″垝骞翠唤")
+ private String planYear;
+
+ @ApiModelProperty("缂栧埗浜篿d")
+ private Integer compilerId;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String compiler;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ private LocalDateTime datePreparation;
+
+ @ApiModelProperty("瀹℃牳鐘舵�侊紝0鏈鏍革紝1瀹℃牳")
+ private Integer status;
+
+ @ApiModelProperty("淇敼浜篿d")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("瀹℃牳浜篿d")
+ private Integer auditId;
+
+ @ApiModelProperty("瀹℃牳浜�")
+ private String audit;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private LocalDateTime auditDate;
+
+ @ApiModelProperty("瀹℃牳淇℃伅")
+ private String auditRemark;
+
+ @ApiModelProperty("鍒涘缓浜篿d")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagementDetails.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagementDetails.java
new file mode 100644
index 0000000..4c1f6e9
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagementDetails.java
@@ -0,0 +1,68 @@
+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-20 02:27:58
+ */
+@Getter
+@Setter
+@TableName("device_traceability_management_details")
+@ApiModel(value = "DeviceTraceabilityManagementDetails瀵硅薄", description = "璁惧閲忓�兼函婧愯鍒掕鎯呰〃")
+public class DeviceTraceabilityManagementDetails implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("璁惧閲忓�兼函婧愯鍒掕鎯卛d")
+ @TableId(value = "traceability_management_detail_id", type = IdType.AUTO)
+ private Integer traceabilityManagementDetailId;
+
+ @ApiModelProperty("璁惧閲忓�兼函婧愯鍒抜d")
+ private Integer traceabilityManagementId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("鎶�鏈寚鏍囧弬鏁�")
+ private String technicalIndexParameters;
+
+ @ApiModelProperty("鎶�鏈寚鏍囪姹�")
+ private String technicalRequirements;
+
+ @ApiModelProperty("妫�瀹氬懆鏈�")
+ private String verificationCycle;
+
+ @ApiModelProperty("妫�瀹氬崟浣�")
+ private String verificationUnit;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("鍒涘缓浜篿d")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜篿d")
+ @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/DeviceTraceabilityManagementDetailsService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementDetailsService.java
new file mode 100644
index 0000000..d990e19
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementDetailsService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕鎯呰〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:58
+ */
+public interface DeviceTraceabilityManagementDetailsService extends IService<DeviceTraceabilityManagementDetails> {
+
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java
new file mode 100644
index 0000000..e05bb92
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java
@@ -0,0 +1,69 @@
+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.DeviceTraceabilityManagementDto;
+import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+public interface DeviceTraceabilityManagementService extends IService<DeviceTraceabilityManagement> {
+
+ /**
+ * 鍒嗛〉鏌ヨ閲忓�兼函婧愯鍒�
+ * @param page 鍒嗛〉鍙傛暟
+ * @param itemParameter 閲忓�兼函婧愯鍒�
+ * @return
+ */
+ Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto itemParameter);
+
+ /**
+ * 鏂板閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ Result addTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 淇敼閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ Result updateTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 鍒犻櫎閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 鏌ヨ閲忓�兼函婧愯鍒掕鎯�
+ */
+ Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId);
+
+ /**
+ * 鎻愪氦鎵瑰噯
+ * @param deviceTraceabilityManagementDto
+ * @return
+ */
+ Result submitReviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 閲忓�兼函婧愯鍒掑鏍�
+ */
+ Result reviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 閲忓�兼函婧愯鍒掑鍑�
+ */
+ Result exportDeviceTraceabilityManagementDto(Integer traceabilityManagementId, HttpServletResponse response);
+
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java
new file mode 100644
index 0000000..8e7763b
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.device.mapper.DeviceTraceabilityManagementDetailsMapper;
+import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
+import com.ruoyi.device.service.DeviceTraceabilityManagementDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕鎯呰〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:58
+ */
+@Service
+public class DeviceTraceabilityManagementDetailsServiceImpl extends ServiceImpl<DeviceTraceabilityManagementDetailsMapper, DeviceTraceabilityManagementDetails> implements DeviceTraceabilityManagementDetailsService {
+
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java
new file mode 100644
index 0000000..e9cd9d9
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.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.DeviceTraceabilityManagementDetailsDto;
+import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
+import com.ruoyi.device.mapper.DeviceTraceabilityManagementDetailsMapper;
+import com.ruoyi.device.mapper.DeviceTraceabilityManagementMapper;
+import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
+import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
+import com.ruoyi.device.service.DeviceTraceabilityManagementDetailsService;
+import com.ruoyi.device.service.DeviceTraceabilityManagementService;
+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-20 02:27:44
+ */
+@Service
+public class DeviceTraceabilityManagementServiceImpl extends ServiceImpl<DeviceTraceabilityManagementMapper, DeviceTraceabilityManagement> implements DeviceTraceabilityManagementService {
+
+ @Resource
+ private DeviceTraceabilityManagementDetailsService deviceTraceabilityManagementDetailsService;
+
+ @Resource
+ private DeviceTraceabilityManagementDetailsMapper deviceTraceabilityManagementDetailsMapper;
+ @Resource
+ private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+ @Resource
+ private InformationNotificationService informationNotificationService;
+
+ @Resource
+ private UserMapper userMapper;
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param page
+ * @return
+ */
+ @Override
+ public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ IPage<DeviceTraceabilityManagement> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceTraceabilityManagementDto));
+ return Result.success(iPage);
+ }
+
+
+ /**
+ * 鏂板璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param deviceTraceabilityManagementDto 璁惧閲忓�兼函婧愯鍒�
+ */
+ @Override
+ public Result addTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ Integer userId = SecurityUtils.getUserId().intValue();
+ User user = userMapper.selectById(userId);
+ deviceTraceabilityManagementDto.setCompilerId(userId);
+ deviceTraceabilityManagementDto.setCompiler(user.getName());
+ deviceTraceabilityManagementDto.setDatePreparation(LocalDateTime.now());
+
+ // 鏌ヨ瀹℃牳浜篿d
+ if (deviceTraceabilityManagementDto.getAuditId() != null) {
+ User auditUser = userMapper.selectById(deviceTraceabilityManagementDto.getAuditId());
+ deviceTraceabilityManagementDto.setAudit(auditUser.getName());
+ }
+ this.saveOrUpdate(deviceTraceabilityManagementDto);
+
+ // 璇︽儏璧嬪�煎苟淇濆瓨
+ List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails = deviceTraceabilityManagementDto.getDeviceTraceabilityManagementDetails();
+ if (CollectionUtils.isNotEmpty(deviceTraceabilityManagementDetails)) { // 璇︽儏涓嶄负绌�
+ List<DeviceTraceabilityManagementDetails> collect = deviceTraceabilityManagementDetails.stream().map(detailsDto -> {
+ detailsDto.setTraceabilityManagementId(deviceTraceabilityManagementDto.getTraceabilityManagementId()); // 閲忓�兼函婧愯鍒扞D
+ DeviceTraceabilityManagementDetails details = new DeviceTraceabilityManagementDetails();
+ BeanUtils.copyProperties(detailsDto, details);
+ return details;
+ }).collect(Collectors.toList());
+ deviceTraceabilityManagementDetailsService.saveBatch(collect);
+ }
+
+ return Result.success();
+ }
+
+ /**
+ * 淇敼璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param deviceTraceabilityManagementDto 璁惧閲忓�兼函婧愯鍒�
+ */
+ @Override
+ public Result updateTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ // 鏌ヨ瀹℃牳浜篿d
+ if (deviceTraceabilityManagementDto.getAuditId() != null) {
+ User auditUser = userMapper.selectById(deviceTraceabilityManagementDto.getAuditId());
+ deviceTraceabilityManagementDto.setAudit(auditUser.getName());
+ }
+ this.saveOrUpdate(deviceTraceabilityManagementDto);
+
+ // 鍒犻櫎鍘熸湰鐨勮鎯�
+ deviceTraceabilityManagementDetailsService.remove(Wrappers.<DeviceTraceabilityManagementDetails>lambdaQuery().eq(DeviceTraceabilityManagementDetails::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId()));
+ // 璇︽儏璧嬪�煎苟淇濆瓨
+ List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails = deviceTraceabilityManagementDto.getDeviceTraceabilityManagementDetails();
+ if (CollectionUtils.isNotEmpty(deviceTraceabilityManagementDetails)) { // 璇︽儏涓嶄负绌�
+ List<DeviceTraceabilityManagementDetails> collect = deviceTraceabilityManagementDetails.stream().map(detailsDto -> {
+ detailsDto.setTraceabilityManagementId(deviceTraceabilityManagementDto.getTraceabilityManagementId()); // 閲忓�兼函婧愯鍒扞D
+ DeviceTraceabilityManagementDetails details = new DeviceTraceabilityManagementDetails();
+ BeanUtils.copyProperties(detailsDto, details);
+ return details;
+ }).collect(Collectors.toList());
+ deviceTraceabilityManagementDetailsService.saveBatch(collect);
+ }
+ return Result.success();
+ }
+
+ /**
+ * 鍒犻櫎璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param deviceTraceabilityManagementDto 璁惧閲忓�兼函婧愯鍒�
+ */
+ @Override
+ public Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ this.removeById(deviceTraceabilityManagementDto);
+ deviceTraceabilityManagementDetailsService.remove(Wrappers.<DeviceTraceabilityManagementDetails>lambdaQuery().eq(DeviceTraceabilityManagementDetails::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId()));
+ return Result.success();
+ }
+
+ /**
+ * 鏌ヨ璁惧閲忓�兼函婧愯鍒掕鎯�
+ *
+ * @param traceabilityManagementId 璁惧閲忓�兼函婧愯鍒抜d
+ */
+ @Override
+ public Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId) {
+ // 鏌ヨ璁惧閲忓�兼函婧愯鍒�
+ DeviceTraceabilityManagement deviceTraceabilityManagement = baseMapper.selectById(traceabilityManagementId);
+ // 鏌ヨ璇︽儏
+ DeviceTraceabilityManagementDto deviceTraceabilityManagementDto = new DeviceTraceabilityManagementDto();
+ BeanUtils.copyProperties(deviceTraceabilityManagement, deviceTraceabilityManagementDto);
+ deviceTraceabilityManagementDto.setDeviceTraceabilityManagementDetails(deviceTraceabilityManagementDetailsMapper.deviceTraceabilityManagementDetailsList(traceabilityManagementId));
+ return Result.success(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 鎻愪氦鎵瑰噯
+ * @param deviceTraceabilityManagementDto
+ * @return
+ */
+ @Override
+ public Result submitReviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ User audit = userMapper.selectById(deviceTraceabilityManagementDto.getAuditId());
+ this.update(Wrappers.<DeviceTraceabilityManagement>lambdaUpdate()
+ .eq(DeviceTraceabilityManagement::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId())
+ .set(DeviceTraceabilityManagement::getAuditId, audit.getId())
+ .set(DeviceTraceabilityManagement::getAudit, audit.getName())
+ .set(DeviceTraceabilityManagement::getAuditDate, null)
+ .set(DeviceTraceabilityManagement::getStatus, null)
+ .set(DeviceTraceabilityManagement::getAuditRemark, null));
+
+ DeviceTraceabilityManagement deviceTraceabilityManagement = baseMapper.selectById(deviceTraceabilityManagementDto.getTraceabilityManagementId());
+
+ // 鍙戦�佹秷鎭�
+ 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(deviceTraceabilityManagement.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" + deviceTraceabilityManagement.getPlanYear() + "骞寸殑璁惧閲忓�兼函婧愯鍒掑緟鎵瑰噯";
+ //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
+ try {
+ WxCpUtils.inform(audit.getAccount(), message, null);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ });
+ return Result.success();
+ }
+
+ /**
+ * 瀹℃牳璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param deviceTraceabilityManagementDto 璁惧閲忓�兼函婧愯鍒�
+ */
+ @Override
+ public Result reviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ LambdaUpdateWrapper<DeviceTraceabilityManagement> wrapper = Wrappers.<DeviceTraceabilityManagement>lambdaUpdate()
+ .eq(DeviceTraceabilityManagement::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId())
+ .set(DeviceTraceabilityManagement::getAuditDate, LocalDateTime.now())
+ .set(DeviceTraceabilityManagement::getStatus, deviceTraceabilityManagementDto.getStatus()) // 瀹℃牳鐘舵��
+ .set(DeviceTraceabilityManagement::getAuditRemark, deviceTraceabilityManagementDto.getAuditRemark());// 瀹℃牳澶囨敞
+
+ this.update(wrapper); // 鏇存柊
+ return Result.success();
+ }
+
+ /**
+ * 瀵煎嚭璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param traceabilityManagementId 璁惧閲忓�兼函婧愯鍒抜d
+ */
+ @Override
+ public Result exportDeviceTraceabilityManagementDto(Integer traceabilityManagementId, HttpServletResponse response) {
+ // 鏌ヨ璁惧淇濆吇璁″垝
+ DeviceTraceabilityManagementDto deviceTraceabilityManagement = baseMapper.selectDeviceTraceabilityManagementById(traceabilityManagementId);
+
+ // 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetailsDtoList = deviceTraceabilityManagementDetailsMapper.deviceTraceabilityManagementDetailsList(traceabilityManagementId);
+ // 璁剧疆搴忓彿
+ deviceTraceabilityManagementDetailsDtoList.forEach(deviceTraceabilityManagementDetails -> {
+ deviceTraceabilityManagementDetails.setIndex(deviceTraceabilityManagementDetailsDtoList.indexOf(deviceTraceabilityManagementDetails) + 1);
+ });
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/traceability-management-details.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceTraceabilityManagementDetailsDtoList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceTraceabilityManagement", deviceTraceabilityManagement);
+ put("deviceTraceabilityManagementDetailsDtoList", deviceTraceabilityManagementDetailsDtoList);
+ // 缂栧埗浜虹鍚嶅湴鍧�
+ put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceTraceabilityManagement.getCompilerId()));
+ // 瀹℃牳浜虹鍚嶅湴鍧�
+ put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceTraceabilityManagement.getAuditId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String finalFileName = deviceTraceabilityManagement.getFileName() == null ? "" : deviceTraceabilityManagement.getFileName() + "_";
+ String fileName = URLEncoder.encode(
+ finalFileName+ "璁惧閲忓�兼函婧愯鍒�", "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();
+ }
+
+}
diff --git a/cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml b/cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml
new file mode 100644
index 0000000..e689b3b
--- /dev/null
+++ b/cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml
@@ -0,0 +1,18 @@
+<?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.yuanchu.mom.mapper.DeviceTraceabilityManagementDetailsMapper">
+
+ <select id="deviceTraceabilityManagementDetailsList"
+ resultType="com.yuanchu.mom.dto.DeviceTraceabilityManagementDetailsDto">
+ select
+ dtmd.*,
+ d.device_name,
+ d.device_name,
+ d.specification_model,
+ d.management_number
+ from device_traceability_management_details dtmd
+ left join device d on dtmd.device_id = d.id
+ where dtmd.traceability_management_id = #{traceabilityManagementId}
+ </select>
+
+</mapper>
diff --git a/cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml b/cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml
new file mode 100644
index 0000000..cf7c861
--- /dev/null
+++ b/cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementMapper.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.DeviceTraceabilityManagementMapper">
+
+ <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.DeviceTraceabilityManagement">
+ select
+ *
+ from device_traceability_management
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="selectDeviceTraceabilityManagementById"
+ resultType="com.ruoyi.device.dto.DeviceTraceabilityManagementDto">
+ select
+ dtm.*,
+ date_format(dtm.date_preparation, '%Y-%m-%d') as datePreparationStr,
+ date_format(dtm.audit_date, '%Y-%m-%d') as auditDateStr
+ from device_traceability_management dtm
+ where dtm.traceability_management_id = #{traceabilityManagementId}
+ </select>
+
+</mapper>
--
Gitblit v1.9.3