zhuo
2025-02-22 88b4f398111e6ca81efa7dee369112020dd38557
设备使用记录移植
已修改1个文件
已添加9个文件
513 ■■■■■ 文件已修改
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceRecordDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/excel/DeviceRecordExportWord.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceRecord.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
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.pojo.DeviceExternalApply;
import com.ruoyi.device.service.DeviceExternalApplyService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * åˆ©ç”¨å¤–部设备申请表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 10:28:43
 */
@Api(tags = "利用外部设备申请表")
@AllArgsConstructor
@RestController
@RequestMapping("/deviceExternalApply")
public class DeviceExternalApplyController {
    private DeviceExternalApplyService deviceExternalApplyService;
    /**
     * åˆ©ç”¨å¤–部设备申请列表
     * @return
     */
    @ApiOperation(value = "利用外部设备申请列表")
    @GetMapping("/pageDeviceExternalApply")
    public Result<IPage<DeviceExternalApply>> pageDeviceExternalApply(Page page, DeviceExternalApply deviceExternalApply) throws Exception {
        return Result.success(deviceExternalApplyService.pageDeviceExternalApply(page, deviceExternalApply));
    }
    /**
     * æŸ¥è¯¢åˆ©ç”¨å¤–部设备申请
     * @return
     */
    @ApiOperation(value = "查询利用外部设备申请")
    @GetMapping("/getDeviceExternalApply")
    public Result getDeviceExternalApply(Integer externalApplyId){
        return Result.success(deviceExternalApplyService.getById(externalApplyId));
    }
    /**
     * åˆ é™¤åˆ©ç”¨å¤–部设备申请
     * @return
     */
    @ApiOperation(value = "删除利用外部设备申请")
    @GetMapping("/delDeviceExternalApply")
    public Result delDeviceExternalApply(Integer externalApplyId){
        return Result.success(deviceExternalApplyService.removeById(externalApplyId));
    }
    /**
     * æ–°å¢žåˆ©ç”¨å¤–部设备申请
     * @return
     */
    @ApiOperation(value = "新增利用外部设备申请")
    @PostMapping("/addDeviceExternalApply")
    public Result addDeviceExternalApply(@RequestBody DeviceExternalApply deviceExternalApply){
        return Result.success(deviceExternalApplyService.addDeviceExternalApply(deviceExternalApply));
    }
    /**
     * å¯¼å‡ºåˆ©ç”¨å¤–部设备申请
     * @param externalApplyId å¤–部设备申请id
     * @return
     */
    @ApiOperation(value = "导出利用外部设备申请")
    @GetMapping("/exportDeviceExternalApply")
    public Result exportDeviceExternalApply(Integer externalApplyId, HttpServletResponse response){
        deviceExternalApplyService.exportDeviceExternalApply(externalApplyId, response);
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.device.controller;
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.pojo.DeviceRecord;
import com.ruoyi.device.service.DeviceRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * cnas设备使用记录表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
@Api(tags = "设备使用记录")
@RestController
@RequestMapping("/deviceRecord")
public class DeviceRecordController {
    @Autowired
    private DeviceRecordService deviceRecordService;
    @ApiOperation(value = "备使用记录查询")
    @GetMapping("/deviceRecordPage")
    public Result deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) {
        return Result.success(deviceRecordService.deviceRecordPage(deviceId, page, sampleCode, managementNumber));
    }
    @ApiOperation(value = "新增")
    @PostMapping("/saveDeviceRecord")
    public Result saveDeviceRecords(@RequestBody DeviceRecord deviceRecord) {
        return Result.success(deviceRecordService.save(deviceRecord));
    }
    /**
     * ç¼–辑设备使用记录
     * @param deviceRecord
     * @return
     */
    @ApiOperation(value = "修改")
    @PostMapping("/updateDeviceRecord")
    public Result updateDeviceRecord(@RequestBody DeviceRecord deviceRecord) {
        return Result.success(deviceRecordService.updateById(deviceRecord));
    }
    @DeleteMapping("/deleteDeviceRecord")
    public Result deleteDeviceRecords(@RequestParam("id") Integer id) {
        return Result.success(deviceRecordService.removeById(id));
    }
    @ApiOperation(value = "设备使用记录导出")
    @GetMapping("/exportUseRecord")
    public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response){
        deviceRecordService.exportUseRecord(deviceId, exportDate, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceRecordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DeviceRecordDto extends DeviceRecord {
    @ApiModelProperty("设备名称")
    private String deviceName;
    @ApiModelProperty("设备编号")
    private String managementNumber;
}
cnas-device/src/main/java/com/ruoyi/device/excel/DeviceRecordExportWord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.device.excel;
import com.ruoyi.device.pojo.DeviceRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-10 æ˜ŸæœŸäºŒ 17:19:22
 * Description:
 */
@Data
public class DeviceRecordExportWord extends DeviceRecord {
    @ApiModelProperty("使用前0代表不正常1代表正常")
    private String useBeforeString;
    @ApiModelProperty("使用后0代表不正常1代表正常")
    private String useAfterString;
    @ApiModelProperty("操作时间 String yyyy-MM-dd")
    private String operationDate;
    @ApiModelProperty("使用开始日期 String yyyy-MM-dd \n HH:mm:ss")
    private String useStartDateString;
    @ApiModelProperty("使用结束日期 String yyyy-MM-dd \n HH:mm:ss")
    private String useEndDateString;
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.DeviceRecordDto;
import com.ruoyi.device.pojo.DeviceRecord;
import java.util.List;
/**
 * <p>
 * cnas设备使用记录表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
public interface DeviceRecordMapper extends BaseMapper<DeviceRecord> {
    IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber, Integer userId);
    /**
     * æŸ¥è¯¢æœªå¡«å†™çš„设备
     * @return
     */
    List<DeviceRecordDto> selectNotFilled();
    /**
     * æŸ¥è¯¢å¯¼å‡ºè®¾å¤‡ä½¿ç”¨è®°å½•
     * @param deviceId
     * @param exportDate
     * @return
     */
    List<DeviceRecord> selectExportList(Integer deviceId, String exportDate);
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
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>
 * cnas设备使用记录表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
@Getter
@Setter
@TableName("device_record")
@ApiModel(value = "DeviceRecord对象", description = "cnas设备使用记录表")
public class DeviceRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private Integer deviceId;
    @ApiModelProperty("订单id")
    private Integer insOrderId;
    @ApiModelProperty("样品编号")
    private String sampleCode;
    @ApiModelProperty("温度")
    private String temperature;
    @ApiModelProperty("湿度")
    private String humidity;
    @ApiModelProperty("使用前0异常1良好")
    private Integer useBefore;
    @ApiModelProperty("使用后0异常1良好")
    private Integer useAfter;
    @ApiModelProperty("异常情况")
    private String abnormal;
    @ApiModelProperty("使用人id")
    private Integer usePersonId;
    @ApiModelProperty("使用人")
    private String usePerson;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("使用开始日期")
    private LocalDateTime useStartDate;
    @ApiModelProperty("使用结束日期")
    private LocalDateTime useEndDate;
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.device.service;
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.dto.DeviceRecordDto;
import com.ruoyi.device.pojo.DeviceRecord;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * cnas设备使用记录表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
public interface DeviceRecordService extends IService<DeviceRecord> {
    IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber);
    /**
     * å¯¼å‡ºè®¾å¤‡ä½¿ç”¨è®°å½•
     *
     * @param deviceId
     * @param response
     */
    void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.dto.DeviceRecordDto;
import com.ruoyi.device.excel.DeviceRecordExportWord;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.mapper.DeviceRecordMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceRecord;
import com.ruoyi.device.service.DeviceRecordService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import org.springframework.beans.BeanUtils;
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.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * cnas设备使用记录表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
@Service
public class DeviceRecordServiceImpl extends ServiceImpl<DeviceRecordMapper, DeviceRecord> implements DeviceRecordService {
    @Resource
    private DeviceMapper deviceMapper;
    @Override
    public IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) {
        // todo:仅看自己
        Integer userId = null;
        return baseMapper.deviceRecordPage(deviceId, page, sampleCode, managementNumber, userId);
    }
    @Override
    public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response) {
        // æŸ¥è¯¢cnas设备使用记录
        List<DeviceRecord> deviceList = baseMapper.selectExportList(deviceId, exportDate);
        // è®¾å¤‡ä¿¡æ¯
        Device device = deviceMapper.selectById(deviceId);
        // æŸ¥è¯¢è®¾å¤‡å±žäºŽå“ªä¸ªå®žéªŒå®¤
        String laboratoryName = "装备线缆实验室";
        // è¦æ˜ å°„到word数据
        List<DeviceRecordExportWord> deviceExportList = new ArrayList<>();
        // deviceExportList èµ‹å€¼
        for (DeviceRecord deviceRecord : deviceList) {
            // å¤„理设备 å¼€å§‹ä½¿ç”¨æ—¶é—´ å’Œ ç»“束时间
            String startTime = "";
            String endTime = "";
            String operationDate = "";
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
            if (deviceRecord.getUseStartDate() != null) {
                startTime = deviceRecord.getUseStartDate().format(formatter);
                endTime = deviceRecord.getUseEndDate().format(formatter);
                String[] startTimeSplit = startTime.split(" ");
                String[] endTimeSplit = endTime.split(" ");
                startTime = startTimeSplit[1];
                if (startTimeSplit[0].equals(endTimeSplit[0])) {
                    endTime = endTimeSplit[1];
                } else {
                    endTime = endTimeSplit[0] + '\n' + endTimeSplit[1];
                }
                DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy.M.d");
                operationDate = deviceRecord.getUseStartDate().format(formatter2);
            }
            // å¤„理使用前和使用后
            String useBeforeString = deviceRecord.getUseBefore() == 0? "异常" : "良好";
            String useAfterString = deviceRecord.getUseAfter() == 0 ? "异常" : "良好";
            DeviceRecordExportWord deviceRecordExportWord = new DeviceRecordExportWord();
            // è¿›è¡Œèµ‹å€¼
            BeanUtils.copyProperties(deviceRecord, deviceRecordExportWord);
            deviceRecordExportWord.setUseBeforeString(useBeforeString); // ä½¿ç”¨å‰
            deviceRecordExportWord.setUseAfterString(useAfterString); // ä½¿ç”¨åŽ
            deviceRecordExportWord.setOperationDate(operationDate); // è®¾å¤‡æ“ä½œæ—¥æœŸ
            deviceRecordExportWord.setUseStartDateString(startTime); // å¼€å§‹æ—¶é—´
            deviceRecordExportWord.setUseEndDateString(endTime); // ç»“束时间
            deviceExportList.add(deviceRecordExportWord);
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/use-record.docx");
        Configure configure = Configure.builder()
                .bind("useRecord", new HackLoopTableRenderPolicy())
                .build();
        String deviceName = device.getDeviceName();
        String managementNumber = device.getManagementNumber();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("useRecord", deviceExportList);
                    put("deviceName", deviceName);
                    put("managementNumber", managementNumber);
                    put("laboratory", laboratoryName);
                }});
        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/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml
@@ -1,9 +1,9 @@
<?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">
<mapper namespace="com.ruoyi.device.mapper.DeviceTraceabilityManagementDetailsMapper">
    <select id="deviceTraceabilityManagementDetailsList"
            resultType="com.yuanchu.mom.dto.DeviceTraceabilityManagementDetailsDto">
            resultType="com.ruoyi.device.dto.DeviceTraceabilityManagementDetailsDto">
        select
            dtmd.*,
            d.device_name,
cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
<?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.DeviceRecordMapper">
    <select id="deviceRecordPage" resultType="com.ruoyi.device.dto.DeviceRecordDto">
        select dr.*,
               d.device_name,
               d.management_number
        from device_record dr
                 left join device d on d.id = dr.device_id
        where 1=1
        <if test="deviceId != null">
            and dr.device_id = #{deviceId}
        </if>
        <if test="sampleCode != '' and sampleCode != null">
            and dr.sample_code like concat('%', #{sampleCode}, '%')
        </if>
        <if test="managementNumber != '' and managementNumber != null">
            and d.management_number like concat('%', #{managementNumber}, '%')
        </if>
        <if test="userId != null">
            and dr.use_person_id = #{userId}
            and dr.use_start_date is null
        </if>
        ORDER BY (dr.use_start_date IS NULL) desc , dr.use_start_date DESC
    </select>
    <select id="selectNotFilled" resultType="com.ruoyi.device.dto.DeviceRecordDto">
        select dr.*,
               d.device_name,
               d.management_number
        from device_record dr
                 left join device d on d.id = dr.device_id
        where dr.use_start_date is null
    </select>
    <!-- æŸ¥è¯¢å¯¼å‡ºè®¾å¤‡ä½¿ç”¨è®°å½• -->
    <select id="selectExportList" resultType="com.ruoyi.device.dto.DeviceRecordDto">
        select dr.*
        from device_record dr
        where dr.use_start_date is not null
        <if test="deviceId != null">
            and dr.device_id = #{deviceId}
        </if>
        <if test="exportDate != '' and exportDate != null">
            and DATE_FORMAT(dr.use_start_date, '%Y-%m') = #{exportDate};
        </if>
    </select>
</mapper>