zhuo
2025-02-22 44515313ca5da49034918aa7c199c1b81477a90e
新增设备保养计划
已修改1个文件
已添加13个文件
821 ■■■■■ 文件已修改
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDetailsDto.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDto.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanDetailsMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlan.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlanDetails.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanDetailsService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
@@ -90,7 +90,7 @@
     * @return
     */
    @ApiOperation(value = "设备核查计划删除")
    @GetMapping("/delQualitySupervise")
    @DeleteMapping("/delQualitySupervise")
    public Result delQualitySupervise(Integer planId){
        return Result.success(deviceExaminePlanService.removeById(planId));
    }
@@ -122,7 +122,7 @@
     * @return
     */
    @ApiOperation(value = "设备核查计划列表")
    @PostMapping("/pageDeviceExaminePlan")
    @GetMapping("/pageDeviceExaminePlan")
    public Result<IPage<DeviceExaminePlanDto>> pageDeviceExaminePlan(Page page, DeviceExaminePlan DeviceExaminePlan) {
        return Result.success(deviceExaminePlanService.pageDeviceExaminePlan(page, DeviceExaminePlan));
    }
@@ -132,7 +132,7 @@
     * @return
     */
    @ApiOperation(value = "设备核查计划详情列表")
    @PostMapping("/pageDeviceExaminePlanDetail")
    @GetMapping("/pageDeviceExaminePlanDetail")
    public Result<IPage<DeviceExaminePlanDetails>> pageDeviceExaminePlanDetail(Page page, DeviceExaminePlanDetails deviceExaminePlanDetails) {
        return Result.success(deviceExaminePlanService.pageDeviceExaminePlanDetail(page, deviceExaminePlanDetails));
    }
@@ -165,7 +165,7 @@
     * @return
     */
    @ApiOperation(value = "删除设备核查计划详情")
    @GetMapping("/delDeviceExaminePlanDetail")
    @DeleteMapping("/delDeviceExaminePlanDetail")
    public Result delDeviceExaminePlanDetail(Integer planDetailsId){
        return Result.success(deviceExaminePlanDetailsService.removeById(planDetailsId));
    }
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import com.ruoyi.device.service.DeviceMaintenancePlanService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
@Api(tags = "设备保养计划")
@RestController
@RequestMapping("/deviceMaintenancePlan")
public class DeviceMaintenancePlanController {
    @Resource
    private DeviceMaintenancePlanService deviceMaintenancePlanService;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
     * @return
     */
    @ApiOperation("分页查询设备保养计划")
    @GetMapping("selectDeviceMaintenancePlanByPage")
    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto itemParameter){
        return deviceMaintenancePlanService.selectDeviceMaintenancePlanByPage(page, itemParameter);
    }
    /**
     * æ–°å¢žè®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @ApiOperation("新增设备保养计划")
    @PostMapping("/addMaintenancePlan")
    public Result addMaintenancePlan(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.addMaintenancePlan(deviceMaintenancePlanDto);
    }
    /**
     * ä¿®æ”¹è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @ApiOperation("修改设备保养计划")
    @PostMapping("/updateMaintenancePlan")
    public Result updateMaintenancePlan(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.updateMaintenancePlan(deviceMaintenancePlanDto);
    }
    /**
     * åˆ é™¤è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @ApiOperation("删除设备保养计划")
    @GetMapping("/deleteMaintenancePlan")
    public Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.deleteMaintenancePlan(deviceMaintenancePlanDto);
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
     */
    @ApiOperation("查询设备保养计划详情")
    @GetMapping("/getMaintenancePlanDetail")
    public Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId) {
        return deviceMaintenancePlanService.getMaintenancePlanDetail(maintenancePlanId);
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @ApiOperation("导出设备保养计划")
    @GetMapping("/exportDeviceMaintenancePlan")
    public Result exportDeviceMaintenancePlan(@RequestParam("maintenancePlanId") Integer maintenancePlanId, HttpServletResponse response) {
        return deviceMaintenancePlanService.exportDeviceMaintenancePlanDto(maintenancePlanId, response);
    }
    /**
     * æäº¤å®¡æ ¸
     */
    @ApiOperation("提交审核")
    @PostMapping("/submitReviewMaintenancePlanStatus")
    public Result submitReviewMaintenancePlanStatus(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.submitReviewMaintenancePlanStatus(deviceMaintenancePlanDto);
    }
    /**
     * å®¡æ ¸è®¾å¤‡ä¿å…»è®¡åˆ’状态
     */
    @ApiOperation("审核设备保养计划状态")
    @PostMapping("/reviewMaintenancePlanStatus")
    public Result reviewMaintenancePlanStatus(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.reviewMaintenancePlanStatus(deviceMaintenancePlanDto);
    }
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDetailsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-17 æ˜ŸæœŸäºŒ 9:26:48
 * Description: è®¾å¤‡ä¿å…»è®¡åˆ’详情
 */
@Data
public class DeviceMaintenancePlanDetailsDto extends DeviceMaintenancePlanDetails {
    @ApiModelProperty("序号")
    private Integer index;
    @ApiModelProperty("仪器设备名称")
    private String deviceName;
    @ApiModelProperty("仪器设备编号")
    private String deviceNumber;
    @ApiModelProperty("仪器设备型号")
    private String specificationModel;
    @ApiModelProperty("仪器编号")
    private String managementNumber;
    @ApiModelProperty("归属实验室")
    private String storagePoint;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.ruoyi.device.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * Author: yuan
 * Date: 2024-12-16 æ˜ŸæœŸä¸€ 18:26:59
 * Description:
 */
@Data
public class DeviceMaintenancePlanDto extends DeviceMaintenancePlan {
    @ApiModelProperty("设备保养计划详情")
    @TableField(exist = false)
    private List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails;
    @ApiModelProperty("编制日期")
    private String datePreparationStr;
    @ApiModelProperty("审核日期")
    private String auditDateStr;
    @ApiModelProperty("设备Id")
    private Integer deviceId;
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanDetailsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:11:46
 */
public interface DeviceMaintenancePlanDetailsMapper extends BaseMapper<DeviceMaintenancePlanDetails> {
    /**
     * æŸ¥è¯¢è®¾å¤‡ä¿å…»è¯¦æƒ…
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     */
    List<DeviceMaintenancePlanDetailsDto> deviceInspectionRecordDetailsList(@Param("maintenancePlanId") Integer maintenancePlanId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
public interface DeviceMaintenancePlanMapper extends BaseMapper<DeviceMaintenancePlan> {
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param page å½“前页
     * @param queryWrappers æŸ¥è¯¢æ¡ä»¶
     * @return
     */
    IPage<DeviceMaintenancePlan> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceMaintenancePlanDto> queryWrappers);
    /**
     * æ ¹æ®ä¿å…»è®¡åˆ’id查询设备保养计划
     * @param maintenancePlanId ä¿å…»è®¡åˆ’id
     * @return
     */
    DeviceMaintenancePlanDto selectMaintenancePlanById(@Param("maintenancePlanId") Integer maintenancePlanId);
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
@Getter
@Setter
@TableName("device_maintenance_plan")
@ApiModel(value = "DeviceMaintenancePlan对象", description = "设备保养计划表")
public class DeviceMaintenancePlan implements Serializable {
    @ApiModelProperty("设备保养计划id")
    @TableId(value = "maintenance_plan_id", type = IdType.AUTO)
    private Integer maintenancePlanId;
    @ApiModelProperty("编制人")
    private String compiler;
    @ApiModelProperty("计划名称")
    private String planName;
    @ApiModelProperty("计划年份")
    private String planYear;
    @ApiModelProperty("编制人id")
    private Integer compilerId;
    @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("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlanDetails.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’详情表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:11:46
 */
@Getter
@Setter
@TableName("device_maintenance_plan_details")
@ApiModel(value = "DeviceMaintenancePlanDetails对象", description = "设备保养计划详情表")
public class DeviceMaintenancePlanDetails implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("保养计划详情id")
    @TableId(value = "maintenance_plan_detail_id", type = IdType.AUTO)
    private Integer maintenancePlanDetailId;
    @ApiModelProperty("保养计划id")
    private Integer maintenancePlanId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("保养关键部位")
    private String maintenanceSite;
    @ApiModelProperty("保养内容")
    private String maintenanceContent;
    @ApiModelProperty("保养周期")
    private String maintenanceIntervals;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanDetailsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:11:46
 */
public interface DeviceMaintenancePlanDetailsService extends IService<DeviceMaintenancePlanDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
public interface DeviceMaintenancePlanService extends IService<DeviceMaintenancePlan> {
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param page å½“前页
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     * @return
     */
    Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * æ–°å¢žè®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    Result addMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * ä¿®æ”¹è®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    Result updateMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * åˆ é™¤è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * å¯¼å‡ºè®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     * @param response          å“åº”
     */
    Result exportDeviceMaintenancePlanDto(Integer maintenancePlanId, HttpServletResponse response);
    /**
     * æŸ¥çœ‹è®¾å¤‡ä¿å…»è®¡åˆ’详情
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     * @return
     */
    Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId);
    /**
     * æäº¤å®¡æ ¸
     * @param deviceMaintenancePlanDto
     * @return
     */
    Result submitReviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * å®¡æ ¸è®¾å¤‡ä¿å…»è®¡åˆ’状态
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     * @return
     */
    Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceMaintenancePlanDetailsMapper;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import com.ruoyi.device.service.DeviceMaintenancePlanDetailsService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:11:46
 */
@Service
public class DeviceMaintenancePlanDetailsServiceImpl extends ServiceImpl<DeviceMaintenancePlanDetailsMapper, DeviceMaintenancePlanDetails> implements DeviceMaintenancePlanDetailsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,289 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto;
import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.mapper.DeviceMaintenancePlanDetailsMapper;
import com.ruoyi.device.mapper.DeviceMaintenancePlanMapper;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import com.ruoyi.device.service.DeviceMaintenancePlanDetailsService;
import com.ruoyi.device.service.DeviceMaintenancePlanService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.InformationNotificationService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
@Service
public class DeviceMaintenancePlanServiceImpl extends ServiceImpl<DeviceMaintenancePlanMapper, DeviceMaintenancePlan> implements DeviceMaintenancePlanService {
    @Resource
    private DeviceMaintenancePlanDetailsService deviceMaintenancePlanDetailsService;
    @Resource
    private DeviceMaintenancePlanDetailsMapper deviceMaintenancePlanDetailsMapper;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InformationNotificationService informationNotificationService;
    @Resource
    private UserMapper userMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param page
     * @return
     */
    @Override
    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        IPage<DeviceMaintenancePlan> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceMaintenancePlanDto));
        return Result.success(iPage);
    }
    /**
     * æ–°å¢žè®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @Override
    public Result addMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        deviceMaintenancePlanDto.setCompilerId(userId);
        deviceMaintenancePlanDto.setCompiler(user.getName());
        deviceMaintenancePlanDto.setDatePreparation(LocalDateTime.now());
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceMaintenancePlanDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
            deviceMaintenancePlanDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceMaintenancePlanDto);
        // è¯¦æƒ…赋值并保存
        List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails = deviceMaintenancePlanDto.getDeviceMaintenancePlanDetails();
        if (CollectionUtils.isNotEmpty(deviceMaintenancePlanDetails)) { // è¯¦æƒ…不为空
            List<DeviceMaintenancePlanDetails> collect = deviceMaintenancePlanDetails.stream().map(deviceMaintenancePlanDetail -> { // éåŽ†è¯¦æƒ…
                deviceMaintenancePlanDetail.setDeviceId(deviceMaintenancePlanDetail.getDeviceId()); // è®¾å¤‡ID
                deviceMaintenancePlanDetail.setMaintenancePlanId(deviceMaintenancePlanDto.getMaintenancePlanId()); // ä¿å…»è®¡åˆ’ID
                DeviceMaintenancePlanDetails planDetails = new DeviceMaintenancePlanDetails();
                BeanUtils.copyProperties(deviceMaintenancePlanDetail, planDetails);
                return planDetails;
            }).collect(Collectors.toList());
            deviceMaintenancePlanDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * ä¿®æ”¹è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @Override
    public Result updateMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceMaintenancePlanDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
            deviceMaintenancePlanDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceMaintenancePlanDto);
        // åˆ é™¤åŽŸæœ¬çš„è¯¦æƒ…
        deviceMaintenancePlanDetailsService.remove(Wrappers.<DeviceMaintenancePlanDetails>lambdaQuery().eq(DeviceMaintenancePlanDetails::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId()));
        // è¯¦æƒ…赋值并保存
        List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails = deviceMaintenancePlanDto.getDeviceMaintenancePlanDetails();
        if (CollectionUtils.isNotEmpty(deviceMaintenancePlanDetails)) { // è¯¦æƒ…不为空
            List<DeviceMaintenancePlanDetails> collect = deviceMaintenancePlanDetails.stream().map(deviceMaintenancePlanDetail -> { // éåŽ†è¯¦æƒ…
                deviceMaintenancePlanDetail.setDeviceId(deviceMaintenancePlanDto.getDeviceId()); // è®¾å¤‡ID
                deviceMaintenancePlanDetail.setMaintenancePlanId(deviceMaintenancePlanDto.getMaintenancePlanId()); // ä¿å…»è®¡åˆ’ID
                DeviceMaintenancePlanDetails planDetails = new DeviceMaintenancePlanDetails();
                BeanUtils.copyProperties(deviceMaintenancePlanDetail, planDetails);
                return planDetails;
            }).collect(Collectors.toList());
            deviceMaintenancePlanDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * åˆ é™¤è®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @Override
    public Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        this.removeById(deviceMaintenancePlanDto);
        deviceMaintenancePlanDetailsService.remove(Wrappers.<DeviceMaintenancePlanDetails>lambdaQuery().eq(DeviceMaintenancePlanDetails::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId()));
        return Result.success();
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     * @param response          å“åº”
     */
    @Override
    public Result exportDeviceMaintenancePlanDto(Integer maintenancePlanId, HttpServletResponse response) {
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
        DeviceMaintenancePlanDto deviceMaintenancePlan = baseMapper.selectMaintenancePlanById(maintenancePlanId);
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
        List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetailsDtoList = deviceMaintenancePlanDetailsMapper.deviceInspectionRecordDetailsList(maintenancePlanId);
        // è®¾ç½®åºå·
        deviceMaintenancePlanDetailsDtoList.forEach(deviceInspectionRecordDetails -> {
            deviceInspectionRecordDetails.setIndex(deviceMaintenancePlanDetailsDtoList.indexOf(deviceInspectionRecordDetails) + 1);
        });
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/maintenance-plan.docx");
        Configure configure = Configure.builder()
                .bind("deviceMaintenancePlanDetailsDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceMaintenancePlan", deviceMaintenancePlan);
                    put("deviceMaintenancePlanDetailsDtoList", deviceMaintenancePlanDetailsDtoList);
                    // ç¼–制人签名地址
                    put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceMaintenancePlan.getCompilerId()));
                    // å®¡æ ¸äººç­¾ååœ°å€
                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceMaintenancePlan.getAuditId()));
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "设备保养计划表", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
        return Result.success();
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
     *
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     */
    @Override
    public Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId) {
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
        DeviceMaintenancePlan deviceMaintenancePlan = baseMapper.selectById(maintenancePlanId);
        // æŸ¥è¯¢è¯¦æƒ…
        DeviceMaintenancePlanDto deviceMaintenancePlanDto = new DeviceMaintenancePlanDto();
        BeanUtils.copyProperties(deviceMaintenancePlan, deviceMaintenancePlanDto);
        deviceMaintenancePlanDto.setDeviceMaintenancePlanDetails(deviceMaintenancePlanDetailsMapper.deviceInspectionRecordDetailsList(maintenancePlanId));
        return Result.success(deviceMaintenancePlanDto);
    }
    /**
     * æäº¤å®¡æ ¸
     * @param deviceMaintenancePlanDto
     * @return
     */
    @Override
    public Result submitReviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        User audit = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
        this.update(Wrappers.<DeviceMaintenancePlan>lambdaUpdate()
                .eq(DeviceMaintenancePlan::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId())
                .set(DeviceMaintenancePlan::getAuditId, audit.getId())
                .set(DeviceMaintenancePlan::getAudit, audit.getName())
                .set(DeviceMaintenancePlan::getStatus, null)
                .set(DeviceMaintenancePlan::getAuditRemark, null)
                .set(DeviceMaintenancePlan::getAuditDate, null)
        );
        DeviceMaintenancePlan deviceMaintenancePlan = baseMapper.selectById(deviceMaintenancePlanDto.getMaintenancePlanId());
        // å‘送消息
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        // æ¶ˆæ¯å‘送
        InformationNotification info = new InformationNotification();
        // å‘送人
        info.setCreateUser(user.getName());
        info.setMessageType("6");
        info.setTheme("CNAS设备保养计划审核通知");
        info.setContent(deviceMaintenancePlan.getPlanYear() + "年的设备保养计划待审核");
        info.setSenderId(userId);
        // æŽ¥æ”¶äºº
        info.setConsigneeId(audit.getId());
        info.setJumpPath("a6-device");
        informationNotificationService.addInformationNotification(info);
        // å‘送企业微信通知
        threadPoolTaskExecutor.execute(() -> {
            String message = "";
            message += "CNAS设备保养计划核通知";
            message += "\n请去资源管理-设备一层目录-设备保养计划填写";
            message += "\n" + deviceMaintenancePlan.getPlanYear() + "年的设备保养计划待核";
            //发送企业微信消息通知
            try {
                WxCpUtils.inform(audit.getAccount(), message, null);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        });
        return Result.success();
    }
    /**
     * å®¡æ ¸è®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @Override
    public Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        LambdaUpdateWrapper<DeviceMaintenancePlan> wrapper = Wrappers.<DeviceMaintenancePlan>lambdaUpdate()
                .eq(DeviceMaintenancePlan::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId())
                .set(DeviceMaintenancePlan::getStatus, deviceMaintenancePlanDto.getStatus())
                .set(DeviceMaintenancePlan::getAuditRemark, deviceMaintenancePlanDto.getAuditRemark())
                .set(DeviceMaintenancePlan::getAuditDate, LocalDateTime.now());
        this.update(wrapper); // æ›´æ–°
        return Result.success();
    }
}
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.device.mapper.DeviceMaintenancePlanDetailsMapper">
    <select id="deviceInspectionRecordDetailsList"
            resultType="com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto">
        select
            dmpd.*,
            d.device_name,
            d.management_number device_number,
            d.specification_model,
            d.management_number,
            d.storage_point
        from device_maintenance_plan_details dmpd
        left join device d on dmpd.device_id = d.id
        where dmpd.maintenance_plan_id = #{maintenancePlanId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.device.mapper.DeviceMaintenancePlanMapper">
    <!-- æ ¹æ®è®¾å¤‡id查询设备的保养计划 -->
    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.DeviceMaintenancePlan">
        select
            *
        from device_maintenance_plan
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectMaintenancePlanById" resultType="com.ruoyi.device.pojo.DeviceMaintenancePlan">
        select
            dmp.*,
            date_format(dmp.date_preparation, '%Y-%m-%d') as datePreparationStr,
            date_format(dmp.audit_date, '%Y-%m-%d') as auditDateStr
        from device_maintenance_plan dmp
        where dmp.maintenance_plan_id = #{maintenancePlanId}
    </select>
</mapper>