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>