zss
2025-04-17 e9bf5a0070b5fbdf9afd4475adbf51e46f579040
Merge remote-tracking branch 'origin/dev_ztzb' into dev_ztzb
已修改1个文件
已添加13个文件
786 ■■■■■ 文件已修改
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDetailsDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceImpowerDetailsMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceImpowerMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpowerDetails.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerDetailsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceImpowerDetailsMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceImpowerMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/CodeGenerator.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.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.DeviceImpowerDto;
import com.ruoyi.device.pojo.DeviceImpower;
import com.ruoyi.device.service.DeviceImpowerService;
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 2025-04-17 03:23:23
 */
@Api(tags = "设备使用授权表")
@RestController
@RequestMapping("/deviceImpower")
public class DeviceImpowerController {
    @Resource
    private DeviceImpowerService deviceImpowerService;
    /**
     * åˆ†é¡µæŸ¥è¯¢ä½¿ç”¨æŽˆæƒ
     * @return
     */
    @ApiOperation("分页查询使用授权")
    @GetMapping("selectDeviceImpowerByPage")
    public Result<IPage<DeviceImpower>> selectDeviceImpowerByPage(Page page, DeviceImpowerDto itemParameter){
        return deviceImpowerService.selectDeviceImpowerByPage(page, itemParameter);
    }
    /**
     * æ–°å¢žä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    @ApiOperation("新增使用授权")
    @PostMapping("/addImpower")
    public Result addImpower(@RequestBody DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.addImpower(deviceImpowerDto);
    }
    /**
     * ä¿®æ”¹ä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    @ApiOperation("修改使用授权")
    @PostMapping("/updateImpower")
    public Result updateImpower(@RequestBody DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.updateImpower(deviceImpowerDto);
    }
    /**
     * åˆ é™¤ä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    @ApiOperation("删除使用授权")
    @DeleteMapping("/deleteImpower")
    public Result deleteImpower(DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.deleteImpower(deviceImpowerDto);
    }
    /**
     * æŸ¥è¯¢ä½¿ç”¨æŽˆæƒè¯¦æƒ…
     */
    @ApiOperation("查询使用授权详情")
    @GetMapping("/getImpowerDetail")
    public Result<DeviceImpowerDto> getImpowerDetail(Integer impowerId) {
        return deviceImpowerService.getImpowerDetail(impowerId);
    }
    /**
     * æäº¤æ‰¹å‡†
     */
    @ApiOperation("提交批准")
    @PostMapping("/submitReviewImpowerStatus")
    public Result submitReviewImpowerStatus(@RequestBody DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.submitReviewImpowerStatus(deviceImpowerDto);
    }
    /**
     * ä½¿ç”¨æŽˆæƒæ‰¹å‡†
     */
    @ApiOperation("使用授权批准")
    @PostMapping("/reviewImpowerStatus")
    public Result reviewImpowerStatus(@RequestBody DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.reviewImpowerStatus(deviceImpowerDto);
    }
    /**
     * å¯¼å‡ºä½¿ç”¨æŽˆæƒ
     */
    @ApiOperation("导出使用授权")
    @GetMapping("/exportDeviceImpower")
    public Result exportDeviceImpower(@RequestParam("ImpowerId") Integer impowerId, HttpServletResponse response) {
        return deviceImpowerService.exportDeviceImpowerDto(impowerId, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDetailsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2025/4/17
 */
@Data
public class DeviceImpowerDetailsDto extends DeviceImpowerDetails {
    @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/DeviceImpowerDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceImpower;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2025/4/17
 */
@Data
public class DeviceImpowerDto extends DeviceImpower {
    @ApiModelProperty("详情")
    private List<DeviceImpowerDetailsDto> deviceImpowerDetails;
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceImpowerDetailsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.device.mapper;
import com.ruoyi.device.dto.DeviceImpowerDetailsDto;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:39
 */
public interface DeviceImpowerDetailsMapper extends BaseMapper<DeviceImpowerDetails> {
    /**
     * æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨è¯¦æƒ…
     * @param impowerId
     * @return
     */
    List<DeviceImpowerDetailsDto> deviceImpowerDetailsList(@Param("impowerId") Integer impowerId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceImpowerMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.DeviceImpowerDto;
import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
import com.ruoyi.device.pojo.DeviceImpower;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’表 Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:23
 */
public interface DeviceImpowerMapper extends BaseMapper<DeviceImpower> {
    /**
     * åˆ†é¡µæŸ¥è¯¢ä½¿ç”¨æŽˆæƒ
     * @param page
     * @param deviceImpowerDtoQueryWrapper
     * @return
     */
    IPage<DeviceImpower> selectDeviceParameterPage(@Param("page") Page page, @Param("ew") QueryWrapper<DeviceImpowerDto> deviceImpowerDtoQueryWrapper);
    /**
     * æ ¹æ®id查询设备使用授权
     * @param traceabilityManagementId
     * @return
     */
    DeviceTraceabilityManagementDto selectDeviceTraceabilityManagementById(@Param("traceabilityManagementId") Integer traceabilityManagementId);
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’表
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:23
 */
@Getter
@Setter
@TableName("device_impower")
@ApiModel(value = "DeviceImpower对象", description = "设备量值溯源计划表")
public class DeviceImpower implements Serializable {
    @ApiModelProperty("授权id")
    @TableId(value = "impower_id", type = IdType.AUTO)
    private Integer impowerId;
    @ApiModelProperty("计划年份")
    private String impowerYear;
    @ApiModelProperty("编制人id")
    private Integer compilerId;
    @ApiModelProperty("编制人")
    private String compiler;
    @ApiModelProperty("编制时间")
    private LocalDateTime datePreparation;
    @ApiModelProperty("审核状态,0未审核,1审核")
    private Integer status;
    @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;
    @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/pojo/DeviceImpowerDetails.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:39
 */
@Getter
@Setter
@TableName("device_impower_details")
@ApiModel(value = "DeviceImpowerDetails对象", description = "设备量值溯源计划详情表")
public class DeviceImpowerDetails implements Serializable {
    @ApiModelProperty("设备量值溯源计划详情id")
    @TableId(value = "impower_detail_id", type = IdType.AUTO)
    private Integer impowerDetailId;
    @ApiModelProperty("设备量值溯源计划id")
    private Integer impowerId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("检测项目")
    private String inspectionItem;
    @ApiModelProperty("被授权人")
    private String delegatedUser;
    @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/DeviceImpowerDetailsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:39
 */
public interface DeviceImpowerDetailsService extends IService<DeviceImpowerDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.ruoyi.device.service;
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.DeviceImpowerDto;
import com.ruoyi.device.pojo.DeviceImpower;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceImpower;
import org.apache.ibatis.annotations.Param;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡ä½¿ç”¨æŽˆæƒè¡¨ æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:23
 */
public interface DeviceImpowerService extends IService<DeviceImpower> {
    /**
     * åˆ†é¡µæŸ¥è¯¢ä½¿ç”¨æŽˆæƒ
     * @param page åˆ†é¡µå‚æ•°
     * @param itemParameter ä½¿ç”¨æŽˆæƒ
     * @return
     */
    Result<IPage<DeviceImpower>> selectDeviceImpowerByPage(@Param("page") Page page, @Param("itemParameter") DeviceImpowerDto itemParameter);
    /**
     * æ–°å¢žä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    Result addImpower(DeviceImpowerDto deviceImpowerDto);
    /**
     * ä¿®æ”¹ä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    Result updateImpower(DeviceImpowerDto deviceImpowerDto);
    /**
     * åˆ é™¤ä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    Result deleteImpower(DeviceImpowerDto deviceImpowerDto);
    /**
     * æŸ¥è¯¢ä½¿ç”¨æŽˆæƒè¯¦æƒ…
     */
    Result<DeviceImpowerDto> getImpowerDetail(Integer impowerId);
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceImpowerDto
     * @return
     */
    Result submitReviewImpowerStatus(DeviceImpowerDto deviceImpowerDto);
    /**
     * ä½¿ç”¨æŽˆæƒå®¡æ ¸
     */
    Result reviewImpowerStatus(DeviceImpowerDto deviceImpowerDto);
    /**
     * ä½¿ç”¨æŽˆæƒå¯¼å‡º
     */
    Result exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerDetailsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import com.ruoyi.device.mapper.DeviceImpowerDetailsMapper;
import com.ruoyi.device.service.DeviceImpowerDetailsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:39
 */
@Service
public class DeviceImpowerDetailsServiceImpl extends ServiceImpl<DeviceImpowerDetailsMapper, DeviceImpowerDetails> implements DeviceImpowerDetailsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,294 @@
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.plugins.pagination.Page;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.constant.MenuJumpPathConstants;
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.DeviceImpowerDetailsDto;
import com.ruoyi.device.dto.DeviceImpowerDto;
import com.ruoyi.device.mapper.DeviceImpowerDetailsMapper;
import com.ruoyi.device.pojo.DeviceImpower;
import com.ruoyi.device.mapper.DeviceImpowerMapper;
import com.ruoyi.device.pojo.DeviceImpower;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import com.ruoyi.device.service.DeviceImpowerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.service.DeviceImpowerDetailsService;
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 org.springframework.transaction.annotation.Transactional;
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 2025-04-17 03:23:23
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceImpowerServiceImpl extends ServiceImpl<DeviceImpowerMapper, DeviceImpower> implements DeviceImpowerService {
    @Resource
    private DeviceImpowerDetailsService deviceImpowerDetailsService;
    @Resource
    private DeviceImpowerDetailsMapper deviceImpowerDetailsMapper;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InformationNotificationService informationNotificationService;
    @Resource
    private UserMapper userMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä½¿ç”¨
     *
     * @param page
     * @return
     */
    @Override
    public Result<IPage<DeviceImpower>> selectDeviceImpowerByPage(Page page, DeviceImpowerDto deviceImpowerDto) {
        IPage<DeviceImpower> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceImpowerDto));
        return Result.success(iPage);
    }
    /**
     * æ–°å¢žè®¾å¤‡ä½¿ç”¨
     *
     * @param deviceImpowerDto è®¾å¤‡ä½¿ç”¨
     */
    @Override
    public Result addImpower(DeviceImpowerDto deviceImpowerDto) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        deviceImpowerDto.setCompilerId(userId);
        deviceImpowerDto.setCompiler(user.getName());
        deviceImpowerDto.setDatePreparation(LocalDateTime.now());
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceImpowerDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceImpowerDto.getAuditId());
            deviceImpowerDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceImpowerDto);
        // è¯¦æƒ…赋值并保存
        List<DeviceImpowerDetailsDto> deviceImpowerDetails = deviceImpowerDto.getDeviceImpowerDetails();
        if (CollectionUtils.isNotEmpty(deviceImpowerDetails)) { // è¯¦æƒ…不为空
            List<DeviceImpowerDetails> collect = deviceImpowerDetails.stream().map(detailsDto -> {
                detailsDto.setImpowerId(deviceImpowerDto.getImpowerId()); // ä½¿ç”¨ID
                DeviceImpowerDetails details = new DeviceImpowerDetails();
                BeanUtils.copyProperties(detailsDto, details);
                return details;
            }).collect(Collectors.toList());
            deviceImpowerDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * ä¿®æ”¹è®¾å¤‡ä½¿ç”¨
     *
     * @param deviceImpowerDto è®¾å¤‡ä½¿ç”¨
     */
    @Override
    public Result updateImpower(DeviceImpowerDto deviceImpowerDto) {
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceImpowerDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceImpowerDto.getAuditId());
            deviceImpowerDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceImpowerDto);
        // åˆ é™¤åŽŸæœ¬çš„è¯¦æƒ…
        deviceImpowerDetailsService.remove(Wrappers.<DeviceImpowerDetails>lambdaQuery().eq(DeviceImpowerDetails::getImpowerId, deviceImpowerDto.getImpowerId()));
        // è¯¦æƒ…赋值并保存
        List<DeviceImpowerDetailsDto> deviceImpowerDetails = deviceImpowerDto.getDeviceImpowerDetails();
        if (CollectionUtils.isNotEmpty(deviceImpowerDetails)) { // è¯¦æƒ…不为空
            List<DeviceImpowerDetails> collect = deviceImpowerDetails.stream().map(detailsDto -> {
                detailsDto.setImpowerId(deviceImpowerDto.getImpowerId()); // ä½¿ç”¨ID
                DeviceImpowerDetails details = new DeviceImpowerDetails();
                BeanUtils.copyProperties(detailsDto, details);
                return details;
            }).collect(Collectors.toList());
            deviceImpowerDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * åˆ é™¤è®¾å¤‡ä½¿ç”¨
     *
     * @param deviceImpowerDto è®¾å¤‡ä½¿ç”¨
     */
    @Override
    public Result deleteImpower(DeviceImpowerDto deviceImpowerDto) {
        this.removeById(deviceImpowerDto);
        deviceImpowerDetailsService.remove(Wrappers.<DeviceImpowerDetails>lambdaQuery().eq(DeviceImpowerDetails::getImpowerId, deviceImpowerDto.getImpowerId()));
        return Result.success();
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨è¯¦æƒ…
     *
     * @param impowerId è®¾å¤‡ä½¿ç”¨id
     */
    @Override
    public Result<DeviceImpowerDto> getImpowerDetail(Integer impowerId) {
        // æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨
        DeviceImpower deviceImpower = baseMapper.selectById(impowerId);
        // æŸ¥è¯¢è¯¦æƒ…
        DeviceImpowerDto deviceImpowerDto = new DeviceImpowerDto();
        BeanUtils.copyProperties(deviceImpower, deviceImpowerDto);
        deviceImpowerDto.setDeviceImpowerDetails(deviceImpowerDetailsMapper.deviceImpowerDetailsList(impowerId));
        return Result.success(deviceImpowerDto);
    }
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceImpowerDto
     * @return
     */
    @Override
    public Result submitReviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) {
//        User audit = userMapper.selectById(deviceImpowerDto.getAuditId());
//        this.update(Wrappers.<DeviceImpower>lambdaUpdate()
//                .eq(DeviceImpower::getImpowerId, deviceImpowerDto.getImpowerId())
//                .set(DeviceImpower::getAuditId, audit.getId())
//                .set(DeviceImpower::getAudit, audit.getName())
//                .set(DeviceImpower::getAuditDate, null)
//                .set(DeviceImpower::getStatus, null)
//                .set(DeviceImpower::getAuditRemark, null));
//
//        DeviceImpower deviceImpower = baseMapper.selectById(deviceImpowerDto.getImpowerId());
//
//        // å‘送消息
//        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(deviceImpower.getPlanYear() + "年的设备使用待批准");
//        info.setSenderId(userId);
//        // æŽ¥æ”¶äºº
//        info.setConsigneeId(audit.getId());
//        info.setJumpPath(MenuJumpPathConstants.DEVICE);
//        informationNotificationService.addInformationNotification(info);
//
//        // å‘送企业微信通知
//        threadPoolTaskExecutor.execute(() -> {
//            String message = "";
//            message += "CNAS设备使用核通知";
//            message += "\n请去资源管理-设备一层目录-设备使用填写";
//            message += "\n" + deviceImpower.getPlanYear() + "年的设备使用待批准";
//            //发送企业微信消息通知
//            try {
//                WxCpUtils.inform(audit.getAccount(), message, null);
//            } catch (Exception e) {
//                throw new RuntimeException(e);
//            }
//        });
        return Result.success();
    }
    /**
     * å®¡æ ¸è®¾å¤‡ä½¿ç”¨
     *
     * @param deviceImpowerDto è®¾å¤‡ä½¿ç”¨
     */
    @Override
    public Result reviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) {
        LambdaUpdateWrapper<DeviceImpower> wrapper = Wrappers.<DeviceImpower>lambdaUpdate()
                .eq(DeviceImpower::getImpowerId, deviceImpowerDto.getImpowerId())
                .set(DeviceImpower::getAuditDate, LocalDateTime.now())
                .set(DeviceImpower::getStatus, deviceImpowerDto.getStatus())        // å®¡æ ¸çŠ¶æ€
                .set(DeviceImpower::getAuditRemark, deviceImpowerDto.getAuditRemark());// å®¡æ ¸å¤‡æ³¨
        this.update(wrapper); // æ›´æ–°
        return Result.success();
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ä½¿ç”¨
     *
     * @param ImpowerId è®¾å¤‡ä½¿ç”¨id
     */
    @Override
    public Result exportDeviceImpowerDto(Integer ImpowerId, HttpServletResponse response) {
//        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
//        DeviceImpowerDto deviceImpower = baseMapper.selectDeviceImpowerById(ImpowerId);
//
//        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
//        List<DeviceImpowerDetailsDto> deviceImpowerDetailsDtoList = deviceImpowerDetailsMapper.deviceImpowerDetailsList(ImpowerId);
//        // è®¾ç½®åºå·
//        deviceImpowerDetailsDtoList.forEach(deviceImpowerDetails -> {
//            deviceImpowerDetails.setIndex(deviceImpowerDetailsDtoList.indexOf(deviceImpowerDetails) + 1);
//        });
//
//        // èŽ·å–è·¯å¾„
//        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/traceability-management-details.docx");
//        Configure configure = Configure.builder()
//                .bind("deviceImpowerDetailsDtoList", new HackLoopTableRenderPolicy())
//                .build();
//        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
//                new HashMap<String, Object>() {{
//                    put("deviceImpower", deviceImpower);
//                    put("deviceImpowerDetailsDtoList", deviceImpowerDetailsDtoList);
//                    // ç¼–制人签名地址
//                    put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getCompilerId()));
//                    // å®¡æ ¸äººç­¾ååœ°å€
//                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getAuditId()));
//                }});
//
//        try {
//            response.setContentType("application/msword");
//            String finalFileName = deviceImpower.getFileName() == null ? "" : deviceImpower.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/DeviceImpowerDetailsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.device.mapper.DeviceImpowerDetailsMapper">
    <!-- æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨è¯¦æƒ… -->
    <select id="deviceImpowerDetailsList" resultType="com.ruoyi.device.dto.DeviceImpowerDetailsDto">
        select
            did.*,
            d.device_name,
            d.device_name,
            d.specification_model,
            d.management_number
        from device_impower_details did
                 left join device d on did.device_id = d.id
        where did.traceability_management_id = #{traceabilityManagementId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceImpowerMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
<?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.DeviceImpowerMapper">
    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.DeviceImpower">
        select
        *
        from device_impower
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
ruoyi-admin/src/main/java/com/ruoyi/CodeGenerator.java
@@ -20,8 +20,8 @@
    public static String database_username = "root";
    public static String database_password= "123456";
    public static String author = "";
    public static String model_name = "/inspect-server"; // å¦‚果为分布式填子模块名称,如果不是分布式为空即可
    public static String setParent = "com.ruoyi.inspect"; // åŒ…路径
    public static String model_name = "/cnas-device"; // å¦‚果为分布式填子模块名称,如果不是分布式为空即可
    public static String setParent = "com.ruoyi.device"; // åŒ…路径
    public static String tablePrefix = ""; // è®¾ç½®è¿‡æ»¤è¡¨å‰ç¼€
    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir");