zhuo
2025-02-22 1476af7e6be42a25946288a9e34b4bce5bc97f1b
移植1量值溯源计划
已添加13个文件
798 ■■■■■ 文件已修改
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDetailsDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementDetailsMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagement.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagementDetails.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementDetailsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}
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;
}
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;
}
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);
}
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);
}
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("设备量值溯源计划id")
    @TableId(value = "traceability_management_id", type = IdType.AUTO)
    private Integer traceabilityManagementId;
    @ApiModelProperty("文件名称")
    private String fileName;
    @ApiModelProperty("计划名称")
    private String planName;
    @ApiModelProperty("计划年份")
    private String planYear;
    @ApiModelProperty("编制人id")
    private Integer compilerId;
    @ApiModelProperty("编制人")
    private String compiler;
    @ApiModelProperty("编制时间")
    private LocalDateTime datePreparation;
    @ApiModelProperty("审核状态,0未审核,1审核")
    private Integer status;
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("审核人id")
    private Integer auditId;
    @ApiModelProperty("审核人")
    private String audit;
    @ApiModelProperty("审核日期")
    private LocalDateTime auditDate;
    @ApiModelProperty("审核信息")
    private String auditRemark;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
}
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("设备量值溯源计划详情id")
    @TableId(value = "traceability_management_detail_id", type = IdType.AUTO)
    private Integer traceabilityManagementDetailId;
    @ApiModelProperty("设备量值溯源计划id")
    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("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
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> {
}
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);
}
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 {
}
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());
        // æŸ¥è¯¢å®¡æ ¸äººid
        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()); // é‡å€¼æº¯æºè®¡åˆ’ID
                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) {
        // æŸ¥è¯¢å®¡æ ¸äººid
        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()); // é‡å€¼æº¯æºè®¡åˆ’ID
                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 è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’id
     */
    @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 è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’id
     */
    @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();
    }
}
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>
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>