zhuo
2025-04-17 72e683107991427de5160bab9c21401d86d377ad
设备维护保养调整
已修改9个文件
已添加1个文件
308 ■■■■ 文件已修改
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceBorrowMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
@@ -1,27 +1,16 @@
package com.ruoyi.device.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.device.excel.DeviceMaintenanceExport;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.DeviceMaintenanceService;
import com.ruoyi.system.mapper.UserMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/**
 * todo: å­™æ²³æ»¨
@@ -35,51 +24,48 @@
    private DeviceMaintenanceService deviceMaintenanceService;
    @Autowired
    private NumberGenerator<DeviceMaintenance> numberGenerator;
    private UserMapper userMapper;
    /**
     * æ–°å¢žè®¾å¤‡ç»´æŠ¤ä¿å…»
     * è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢
     * @param deviceMaintenance
     * @return
     */
    @ApiOperation(value = "新增设备维护保养")
    @PostMapping("/addDeviceMaintenance")
    public Result addDeviceMaintenance(@RequestBody DeviceMaintenance deviceMaintenance){
        String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
        String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
        String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceMaintenance::getDeviceNumber);
        deviceMaintenance.setDeviceNumber(processNumber);
        return Result.success(deviceMaintenanceService.save(deviceMaintenance));
    @ApiOperation(value = "设备维护分页查询")
    @GetMapping("/selectDeviceMaintenancePage")
    public Result selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance){
        return Result.success(deviceMaintenanceService.selectDeviceMaintenancePage(page, deviceMaintenance));
    }
    /**
     * é€šè¿‡è®¾å¤‡id查询设备维护保养信息
     * @param deviceId
     * @param page
     * @param deviceNumber
     * æ–°å¢žä¿®æ”¹è®¾å¤‡ç»´æŠ¤ä¿å…»
     * @param deviceMaintenance
     * @return
     */
    @ApiOperation(value = "通过设备id查询设备维护保养信息")
    @GetMapping("/getDeviceMaintenancePage")
    public Result getDeviceMaintenancePage(@RequestParam("deviceId") Integer deviceId, Page page, String deviceNumber){
        return Result.success(deviceMaintenanceService.getDeviceMaintenancePage(page, deviceId, deviceNumber));
    @ApiOperation(value = "新增修改设备维护保养")
    @PostMapping("/addDeviceMaintenance")
    public Result addDeviceMaintenance(@RequestBody DeviceMaintenance deviceMaintenance){
        if (deviceMaintenance.getDeviceId() == null) {
            throw new RuntimeException("缺少设备id");
        }
        User user = userMapper.selectById(deviceMaintenance.getMaintenanceUserId());
        deviceMaintenance.setMaintenanceUserName(user.getName());
        return Result.success(deviceMaintenanceService.saveOrUpdate(deviceMaintenance));
    }
    /**
     * åˆ é™¤è®¾å¤‡ç»´æŠ¤ä¿å…»
     * åˆ é™¤ä¿®æ”¹è®¾å¤‡ç»´æŠ¤ä¿å…»
     * @param id
     * @return
     */
    @ApiOperation(value = "新增设备维护保养")
    @ApiOperation(value = "删除修改设备维护保养")
    @DeleteMapping("/deleteDeviceMaintenance")
    public void deleteDeviceMaintenance( Integer id) {
        deviceMaintenanceService.removeById(id);
    public Result deleteDeviceMaintenance(Integer id){
        return Result.success(deviceMaintenanceService.removeById(id));
    }
    @ApiOperation(value = "设备维护记录导出")
    @GetMapping("/exportMaintenanceRecord")
    public void exportMaintenanceRecord(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception {
        deviceMaintenanceService.exportMaintenanceRecord(deviceId, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceMaintenance;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2025/4/17
 */
@Data
public class DeviceMaintenanceDto extends DeviceMaintenance {
    @ApiModelProperty("设备名称")
    private String deviceName;
    @ApiModelProperty("设备编号")
    private String managementNumber;
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
@@ -1,12 +1,14 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.excel.DeviceMaintenanceExport;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.pojo.DeviceMaintenance;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
 * è®¾å¤‡ç»´æŠ¤ä¿å…»
@@ -14,4 +16,11 @@
@Mapper
public interface DeviceMaintenanceMapper extends BaseMapper<DeviceMaintenance> {
    /**
     * è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @return
     */
    IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(@Param("page") Page page, @Param("ew") QueryWrapper<DeviceMaintenanceDto> ew);
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
@@ -1,44 +1,59 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * è®¾å¤‡ç»´æŠ¤ä¿å…»
 * è®¾å¤‡ç»´æŠ¤æ·»åŠ ç»´æŠ¤è®°å½•è¡¨
 *
 * @author makejava
 * @since 2025-04-17 11:28:56
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("device_maintenance")
public class DeviceMaintenance {
    //设备id
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    private String deviceName;
    //编号
    private String deviceNumber;
    //统一编号
    private String managementNumber;
    //维护内容
    private String content;
    //维护日期
    @ApiModelProperty("维护日期")
    private LocalDate maintenanceDate;
    @ApiModelProperty("维护内容")
    private String maintenanceContent;
    @ApiModelProperty("维护人id")
    private Integer maintenanceUserId;
    @ApiModelProperty("维护人")
    private String maintenanceUserName;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate date;
    //下次维护日期
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate nextDate;
    //维护类型
    private Integer maintenanceType;
    //维护人员
    private String name;
    //备注
    private String comments;
    private LocalDateTime createTime;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("更新人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
@@ -3,21 +3,17 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.excel.DeviceMaintenanceExport;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.pojo.DeviceMaintenance;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * è®¾å¤‡ç»´æŠ¤ä¿å…»
 */
public interface DeviceMaintenanceService extends IService<DeviceMaintenance> {
    IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber);
    /**
     * å¯¼å‡ºWord设备维护记录
     *
     * @param deviceId
     * @param response
     * è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢
     * @return
     */
    void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response);
    IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance);
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
@@ -1,86 +1,31 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.device.excel.DeviceMaintenanceExport;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.DeviceMaintenanceService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import org.apache.commons.lang3.ObjectUtils;
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.util.HashMap;
import java.util.List;
/**
 * è®¾å¤‡ç»´æŠ¤ä¿å…»
 */
@Service
public class DeviceMaintenanceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements DeviceMaintenanceService {
    /**
     * è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢
     * @return
     */
    @Override
    public IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber) {
        if (ObjectUtils.isEmpty(deviceNumber)){
            return baseMapper.selectPage(page, Wrappers.<DeviceMaintenance>lambdaQuery()
                    .eq(DeviceMaintenance::getDeviceId, deviceId));
    public IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance) {
        if (deviceMaintenance.getDeviceId() == null) {
            return new Page();
        }
       else return baseMapper.selectPage(page, Wrappers.<DeviceMaintenance>lambdaQuery()
                .eq(DeviceMaintenance::getDeviceId, deviceId)
                .like(DeviceMaintenance::getDeviceNumber, deviceNumber));
        return baseMapper.selectDeviceMaintenancePage(page, QueryWrappers.queryWrappers(deviceMaintenance));
    }
    @Override
    public void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response) {
        // æŸ¥è¯¢cnas设备维修记录
        List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery()
                .eq(DeviceMaintenance::getDeviceId, deviceId)
                .select(DeviceMaintenance::getDate,
                        DeviceMaintenance::getDeviceNumber,
                        DeviceMaintenance::getDeviceName,
                        DeviceMaintenance::getManagementNumber,
                        DeviceMaintenance::getContent,
                        DeviceMaintenance::getName,
                        DeviceMaintenance::getComments));
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/maintenance-records.docx");
        Configure configure = Configure.builder()
                .bind("deviceMaintenanceList", new HackLoopTableRenderPolicy())
                .build();
        // èŽ·å–è®¾å¤‡ åç§° å’Œ ç¼–号
        DeviceMaintenance deviceMaintenance = deviceMaintenanceList.get(0);
        String deviceName = deviceMaintenance.getDeviceName();
        String managementNumber = deviceMaintenance.getManagementNumber();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceMaintenanceList", deviceMaintenanceList);
                    put("deviceName", deviceName);
                    put("managementNumber", managementNumber);
                }});
        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("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -44,6 +44,7 @@
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -396,11 +397,11 @@
                DeviceMaintenance deviceMaintenance = deviceMaintenanceList.get(i);
                DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                // ç»´ä¿®æ—¥æœŸ
                deviceMetricRecordAndMaintenanceDto.setMaintenanceDateString(deviceMaintenance.getDate().format(dateTimeFormatter));
                deviceMetricRecordAndMaintenanceDto.setMaintenanceDateString(deviceMaintenance.getMaintenanceDate().format(dateTimeFormatter));
                // å¤„理方法
                deviceMetricRecordAndMaintenanceDto.setHandlingMethod(deviceMaintenance.getContent());
                deviceMetricRecordAndMaintenanceDto.setHandlingMethod(deviceMaintenance.getMaintenanceContent());
                // å¤‡æ³¨
                deviceMetricRecordAndMaintenanceDto.setComments(deviceMaintenance.getComments());
                deviceMetricRecordAndMaintenanceDto.setComments(deviceMaintenance.getRemark());
            }
            deviceMetricRecordAndMaintenanceDtoList.add(deviceMetricRecordAndMaintenanceDto);
cnas-device/src/main/resources/mapper/DeviceBorrowMapper.xml
@@ -6,7 +6,7 @@
        select * from (
        select db.*,device_name
        from device_borrow db
        left join `center-lims`.device on db.device_id=device.id
        left join device on db.device_id=device.id
        )a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
@@ -15,7 +15,7 @@
    <select id="getDeviceBorrowBydeviceId" resultType="com.ruoyi.device.pojo.DeviceBorrow">
        select db.*,device_name
        from device_borrow db
                 left join `center-lims`.device on db.device_id=device.id
                 left join device on db.device_id=device.id
        where device_id=#{deviceId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml
@@ -3,4 +3,18 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.device.mapper.DeviceMaintenanceMapper">
    <!-- è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢ -->
    <select id="selectDeviceMaintenancePage" resultType="com.ruoyi.device.dto.DeviceMaintenanceDto">
        select * from (
        select db.*,
        d.device_name,
        d.management_number
        from device_maintenance db
        left join device d on db.device_id = d.id)a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
        order by maintenance_date desc
    </select>
</mapper>
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -48,7 +48,7 @@
     */
    @Autowired
    @Qualifier("UserDetailsByOpenIdServiceImpl")
    private UserDetailsService userDetailsServiceByOpenId;
    private UserDetailsService userDetailsServiceBySSO;
    /**
     * è®¤è¯å¤±è´¥å¤„理类
@@ -91,11 +91,11 @@
        daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder());
        // sso登陆鉴权 Provider
        SsoCodeAuthenticationProvider wxCodeAuthenticationProvider = new SsoCodeAuthenticationProvider();
        wxCodeAuthenticationProvider.setUserDetailsService(userDetailsServiceByOpenId);
        SsoCodeAuthenticationProvider ssoCodeAuthenticationProvider = new SsoCodeAuthenticationProvider();
        ssoCodeAuthenticationProvider.setUserDetailsService(userDetailsServiceBySSO);
        List<AuthenticationProvider> providers = new ArrayList<>();
        providers.add(wxCodeAuthenticationProvider);
        providers.add(ssoCodeAuthenticationProvider);
        providers.add(daoAuthenticationProvider);
        return new ProviderManager(providers);