cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java
@@ -81,7 +81,7 @@ /** * æäº¤æ¹å */ @ApiOperation("æäº¤æ¹å") @ApiOperation("æäº¤æ¹åéç¥") @PostMapping("/submitReviewImpowerStatus") public Result submitReviewImpowerStatus(@RequestBody DeviceImpowerDto deviceImpowerDto) { return deviceImpowerService.submitReviewImpowerStatus(deviceImpowerDto); @@ -90,7 +90,7 @@ /** * ä½¿ç¨æææ¹å */ @ApiOperation("ä½¿ç¨æææ¹å") @ApiOperation("æææ¹å") @PostMapping("/reviewImpowerStatus") public Result reviewImpowerStatus(@RequestBody DeviceImpowerDto deviceImpowerDto) { return deviceImpowerService.reviewImpowerStatus(deviceImpowerDto); @@ -101,7 +101,7 @@ */ @ApiOperation("导åºä½¿ç¨ææ") @GetMapping("/exportDeviceImpower") public Result exportDeviceImpower(@RequestParam("ImpowerId") Integer impowerId, HttpServletResponse response) { public Result exportDeviceImpower(@RequestParam("impowerId") Integer impowerId, HttpServletResponse response) { return deviceImpowerService.exportDeviceImpowerDto(impowerId, response); } cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
@@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; /** * todo: åæ²³æ»¨ */ @@ -67,5 +69,13 @@ return Result.success(deviceMaintenanceService.removeById(id)); } /** * 导åºè®¾å¤ç»´æ¤ä¿å » */ @ApiOperation("导åºè®¾å¤ç»´æ¤ä¿å »") @GetMapping("/exportDeviceMaintenance") public void exportDeviceMaintenance(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) { deviceMaintenanceService.exportDeviceMaintenance(deviceId, response); } } cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java
@@ -13,7 +13,12 @@ @Data public class DeviceImpowerDto extends DeviceImpower { @ApiModelProperty("详æ ") private List<DeviceImpowerDetailsDto> deviceImpowerDetails; @ApiModelProperty("æææ¥æä¸æ") private String auditDateCH; @ApiModelProperty("æææ¥æè±æ") private String auditDateEN; } cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java
@@ -14,7 +14,7 @@ /** * <p> * 设å¤é弿º¯æºè®¡å表 * 设å¤ä½¿ç¨ææè¡¨ * </p> * * @author @@ -23,7 +23,7 @@ @Getter @Setter @TableName("device_impower") @ApiModel(value = "DeviceImpower对象", description = "设å¤é弿º¯æºè®¡å表") @ApiModel(value = "DeviceImpower对象", description = "设å¤ä½¿ç¨ææè¡¨") public class DeviceImpower implements Serializable { @ApiModelProperty("ææid") cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
@@ -5,6 +5,7 @@ import java.util.Date; import com.baomidou.mybatisplus.annotation.*; import com.deepoove.poi.data.PictureRenderData; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -55,5 +56,10 @@ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @TableField(select = false, exist = false) @ApiModelProperty("ç»´æ¤äººå¾ç") private PictureRenderData maintenanceUserUrlRender; } cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
@@ -3,8 +3,11 @@ 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.common.core.domain.Result; import com.ruoyi.device.dto.DeviceMaintenanceDto; import com.ruoyi.device.pojo.DeviceMaintenance; import javax.servlet.http.HttpServletResponse; /** * 设å¤ç»´æ¤ä¿å » @@ -16,4 +19,12 @@ * @return */ IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance); /** * 导åºè®¾å¤ç»´æ¤ä¿å » * @param deviceId * @param response * @return */ void exportDeviceMaintenance(Integer deviceId, HttpServletResponse response); } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
@@ -39,6 +39,7 @@ import java.io.OutputStream; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -182,17 +183,17 @@ */ @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()); // 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); @@ -226,9 +227,9 @@ } /** * å®¡æ ¸è®¾å¤ä½¿ç¨ * * @param deviceImpowerDto 设å¤ä½¿ç¨ * * @param deviceImpowerDto */ @Override public Result reviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) { @@ -245,50 +246,54 @@ /** * 导åºè®¾å¤ä½¿ç¨ * * @param ImpowerId 设å¤ä½¿ç¨id * @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("导åºå¤±è´¥"); // } public Result exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response) { // æ¥è¯¢è®¾å¤ä½¿ç¨ææè®¡å DeviceImpower deviceImpower = baseMapper.selectById(impowerId); DeviceImpowerDto deviceImpowerDto = new DeviceImpowerDto(); BeanUtils.copyProperties(deviceImpower, deviceImpowerDto); // æ ¼å¼åæ¥æä¸è±æ DateTimeFormatter formatterCH = DateTimeFormatter.ofPattern("yyyy å¹´ MM æ dd æ¥"); DateTimeFormatter formatterEN = DateTimeFormatter.ofPattern("yyyy 'Year' MM 'Month' dd 'Day'"); deviceImpowerDto.setAuditDateCH(deviceImpower.getAuditDate() == null ? null : deviceImpower.getAuditDate().format(formatterCH)); deviceImpowerDto.setAuditDateEN(deviceImpower.getAuditDate() == null ? null : deviceImpower.getAuditDate().format(formatterEN)); // æ¥è¯¢è®¾å¤ä¿å »è®¡å详æ List<DeviceImpowerDetailsDto> deviceImpowerDetailsDtoList = deviceImpowerDetailsMapper.deviceImpowerDetailsList(impowerId); // 设置åºå· deviceImpowerDetailsDtoList.forEach(deviceImpowerDetails -> { deviceImpowerDetails.setIndex(deviceImpowerDetailsDtoList.indexOf(deviceImpowerDetails) + 1); }); // è·åè·¯å¾ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-impower.docx"); Configure configure = Configure.builder() .bind("deviceImpowerDetailsDtoList", new HackLoopTableRenderPolicy()) .build(); XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( new HashMap<String, Object>() {{ put("deviceImpower", deviceImpowerDto); put("deviceImpowerDetailsDtoList", deviceImpowerDetailsDtoList); // ææäººå°å put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.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(); } } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
@@ -1,21 +1,58 @@ package com.ruoyi.device.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; 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.deepoove.poi.data.Pictures; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.device.dto.DeviceImpowerDetailsDto; import com.ruoyi.device.dto.DeviceImpowerDto; import com.ruoyi.device.dto.DeviceMaintenanceDto; import com.ruoyi.device.mapper.DeviceMaintenanceMapper; import com.ruoyi.device.mapper.DeviceMapper; import com.ruoyi.device.pojo.Device; import com.ruoyi.device.pojo.DeviceImpower; import com.ruoyi.device.pojo.DeviceMaintenance; import com.ruoyi.device.service.DeviceMaintenanceService; import com.ruoyi.device.service.DeviceService; import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; import com.ruoyi.inspect.util.UserUtils; import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictTypeService; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; 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; /** * 设å¤ç»´æ¤ä¿å » */ @Service public class DeviceMaintenanceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements DeviceMaintenanceService { @Resource private DeviceService deviceService; @Resource private ISysDictTypeService iSysDictTypeService; @Value("${file.path}") private String imgUrl; /** * 设å¤ç»´æ¤å页æ¥è¯¢ @@ -28,4 +65,132 @@ } return baseMapper.selectDeviceMaintenancePage(page, QueryWrappers.queryWrappers(deviceMaintenance)); } /** * 导åºè®¾å¤ç»´æ¤ä¿å » * @param deviceId * @param response */ @Override public void exportDeviceMaintenance(Integer deviceId, HttpServletResponse response) { // æ¥è¯¢è®¾å¤ç»´æ¤ä¿å » List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery() .eq(DeviceMaintenance::getDeviceId, deviceId)); // è·åå°ç¬¬ä¸ä¸ªè®¾å¤ä½¿ç¨ææ DeviceMaintenanceDto deviceMaintenanceDto = new DeviceMaintenanceDto(); List<SysDictData> sysDictDataList = null; if (CollectionUtils.isNotEmpty(deviceMaintenanceList)) { BeanUtils.copyProperties(deviceMaintenanceList.get(0), deviceMaintenanceDto); // æ¥è¯¢è®¾å¤ä¿¡æ¯ Device device = deviceService.getById(deviceId); deviceMaintenanceDto.setDeviceName(device.getDeviceName()); deviceMaintenanceDto.setManagementNumber(device.getManagementNumber()); //æ¥è¯¢ç»´æ¤ä¿å »å¯¼åºåå ¸å¼ sysDictDataList = getDeviceMaintenanceDict(device); } // æ·»å åå ¸æä¸¾å¼ for (DeviceMaintenance deviceMaintenance : deviceMaintenanceList) { StringBuilder maintenanceContent = new StringBuilder(deviceMaintenance.getMaintenanceContent()); if (CollectionUtils.isNotEmpty(sysDictDataList) && StringUtils.isNotBlank(deviceMaintenance.getMaintenanceContent())) { maintenanceContent = new StringBuilder(); List<String> splitList = StrUtil.split(deviceMaintenance.getMaintenanceContent(), ','); // 循ç¯å¤ææ¯å¦æä¸æ ·key for (SysDictData sysDictData : sysDictDataList) { if (splitList.contains(sysDictData.getDictLabel())) { maintenanceContent.append("â").append(sysDictData.getDictLabel()).append(" "); } else { maintenanceContent.append("â¡").append(sysDictData.getDictLabel()).append(" "); } } } deviceMaintenance.setMaintenanceContent(maintenanceContent.toString()); // æ·»å ç»´æ¤äººå¾ç deviceMaintenance.setMaintenanceUserUrlRender(UserUtils.getFinalUserSignatureUrl(deviceMaintenance.getMaintenanceUserId())); } // è·åè·¯å¾ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-maintenance.docx"); Configure configure = Configure.builder() .bind("deviceMaintenances", new HackLoopTableRenderPolicy()) .build(); XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( new HashMap<String, Object>() {{ put("device", deviceMaintenanceDto); put("deviceMaintenances", deviceMaintenanceList); }}); 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("导åºå¤±è´¥"); } } /** * ****æ¥è¯¢ç»´æ¤ä¿å »å¯¼åºåå ¸å¼*** * @param device */ private List<SysDictData> getDeviceMaintenanceDict(Device device) { List<SysDictData> sysDictDataList = new ArrayList<>(); // æ¥è¯¢ç»´æ¤ä¿å »å¯¼åºåå ¸å¼ if (StringUtils.isNotBlank(device.getStoragePoint())) { String dictType = null; switch (device.getStoragePoint()) { case "èå室": dictType = "aging_maintenance_content"; break; case "èåå®éªå®¤": dictType = "aging_maintenance_content"; break; case "çµæ§è½å®éªå®¤": dictType = "electrical_maintenance_content"; break; case "ç¯å¢å®éªå®¤": dictType = "environmental_maintenance_content"; break; case "çç§å®éªå®¤": dictType = "burn_maintenance_content"; break; case "æ··ç¼å®éªå®¤": dictType = "mixing_maintenance_content"; break; case "æ£æµä¸å¿çµæ§è½å®éªå®¤": dictType = "center_electrical_maintenance_content"; break; case "ææ¸©äº": dictType = "temperature2_maintenance_content"; break; case "ææ¸©ä¸": dictType = "temperature1_maintenance_content"; break; case "åå¦å®éªå®¤": dictType = "chemistry_maintenance_content"; break; case "å¶æ ·å®¤": dictType = "sample_maintenance_content"; break; case "使¸©å®éªå®¤": dictType = "hypothermia_maintenance_content"; break; } sysDictDataList = iSysDictTypeService.selectDictDataByType(dictType); } return sysDictDataList; } } cnas-device/src/main/resources/static/word/device-impower.docxBinary files differ
cnas-device/src/main/resources/static/word/device-maintenance.docxBinary files differ
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -1005,9 +1005,6 @@ */ @Override public void reportAllExport(ReportPageDto dto, HttpServletResponse response) throws UnsupportedEncodingException { //æ¥è¯¢å¯¼åºçè´¹ç¨ç»è®¡æ°æ® //è·åå½å人æå±å®éªå®¤id Integer createOrderUser = dto.getCreateOrderUser(); String queryStatus = dto.getQueryStatus(); ruoyi-common/src/main/java/com/ruoyi/common/constant/DeviceImpowerConstants.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,65 @@ package com.ruoyi.common.constant; /** * @Author zhuo * @Date 2025/4/18 */ public class DeviceImpowerConstants { /** * èå室维æ¤å 容 */ public static final String AGING_MAINTENANCE_CONTENT = "aging_maintenance_content"; /** * çµæ§è½å®éªå®¤ç»´æ¤å 容 */ public static final String ELECTRICAL_MAINTENANCE_CONTENT = "electrical_maintenance_content"; /** * ç¯å¢å®éªå®¤ç»´æ¤å 容 */ public static final String ENVIRONMENTAL_MAINTENANCE_CONTENT = "environmental_maintenance_content"; /** * çç§å®éªå®¤ç»´æ¤å 容 */ public static final String BURN_MAINTENANCE_CONTENT = "burn_maintenance_content"; /** * æ··ç¼å®éªå®¤ç»´æ¤å 容 */ public static final String MIXING_MAINTENANCE_CONTENT = "mixing_maintenance_content"; /** * æ£æµä¸å¿çµæ§è½å®éªå®¤ç»´æ¤å 容 */ public static final String CENTER_ELECTRICAL_MAINTENANCE_CONTENT = "center_electrical_maintenance_content"; /** * ææ¸©äºç»´æ¤å 容 */ public static final String TEMPERATURE2_MAINTENANCE_CONTENT = "temperature2_maintenance_content"; /** * ææ¸©ä¸ç»´æ¤å 容 */ public static final String TEMPERATURE1_MAINTENANCE_CONTENT = "temperature1_maintenance_content"; /** * åå¦å®éªå®¤ç»´æ¤å 容 */ public static final String CHEMISTRY_MAINTENANCE_CONTENT = "chemistry_maintenance_content"; /** * å¶æ ·å®¤ç»´æ¤å 容 */ public static final String SAMPLE_MAINTENANCE_CONTENT = "sample_maintenance_content"; /** * 使¸©å®éªå®¤ç»´æ¤å 容 */ public static final String HYPOTHERMIA_MAINTENANCE_CONTENT = "hypothermia_maintenance_content"; } ruoyi-system/src/main/resources/mapper/system/UserMapper.xml
@@ -91,7 +91,9 @@ name_en, status from user u where depart_lims_id = (select u2.depart_lims_id where depart_lims_id is not null and depart_lims_id != '' and depart_lims_id = (select u2.depart_lims_id from user u2 where u2.id = #{userId}) </select>