cnas-device/src/main/resources/mapper/DeviceImpowerDetailsMapper.xml
@@ -7,11 +7,10 @@ select did.*, d.device_name, d.device_name, d.specification_model, d.management_number from device_impower_details did left join device d on did.device_id = d.id where did.traceability_management_id = #{traceabilityManagementId} where did.impower_id = #{impowerId} </select> </mapper> cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml
@@ -7,7 +7,6 @@ select dtmd.*, d.device_name, d.device_name, d.specification_model, d.management_number from device_traceability_management_details dtmd inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java
@@ -167,4 +167,18 @@ Integer id = (Integer) param.get("id"); return Result.success(insReportService.sendBackTask(id)); } /** * æ¥åå¯¼åº * @param dto * @param response * @throws Exception */ @ApiOperation(value = "æ¥å导åº") @GetMapping("/reportAllExport") @PreAuthorize("@ss.hasPermi('business:reportPreparation')") @PersonalScope(permsName = "business:reportPreparation", objectName = ReportPageDto.class, paramName = "createOrderUser") public void reportAllExport(ReportPageDto dto, HttpServletResponse response) throws Exception { insReportService.reportAllExport(dto,response); } } inspect-server/src/main/java/com/ruoyi/inspect/dto/InsReportExport.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,75 @@ package com.ruoyi.inspect.dto; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @Author zhuo * @Date 2025/4/18 */ @Data @ExcelIgnoreUnannotated public class InsReportExport { @ExcelProperty(value = "æ¥åç¼å·") @ApiModelProperty("å§æç¼å·") private String code; @ExcelProperty(value = "ä¸åç±»å") @ApiModelProperty("ä¸åç±»å") private String typeSource; @ExcelProperty(value = "æ£éªç±»å") @ApiModelProperty("æ£éªç±»å") private String orderType; @ExcelProperty(value = "å建æ¶é´") @ApiModelProperty("å建æ¶é´") private String createTime; @ExcelProperty(value = "æäº¤äºº") @ApiModelProperty("æäº¤äºº") private String writeUserName; @ExcelProperty(value = "æäº¤æ¶é´") @ApiModelProperty("æäº¤æ¶é´") private String writeTime; @ExcelProperty(value = "æäº¤ç¶æ") @ApiModelProperty("æäº¤ç¶æ") private String state; @ExcelProperty(value = "å®¡æ ¸äºº") @ApiModelProperty("å®¡æ ¸äºº") private String examineUser; @ExcelProperty(value = "å®¡æ ¸æ¶é´") @ApiModelProperty("å®¡æ ¸æ¶é´") private String examineTime; @ExcelProperty(value = "å®¡æ ¸ç¶æ") @ApiModelProperty("å®¡æ ¸ç¶æ") private String isExamine; @ExcelProperty(value = "å®¡æ ¸å¤æ³¨") @ApiModelProperty("å®¡æ ¸å¤æ³¨") private String examineTell; @ExcelProperty(value = "æ¹å人") @ApiModelProperty("æ¹å人") private String ratifyUser; @ExcelProperty(value = "æ¹åæ¶é´") @ApiModelProperty("æ¹åæ¶é´") private String ratifyTime; @ExcelProperty(value = "æ¹åç¶æ") @ApiModelProperty("æ¹åç¶æ") private String isRatify; @ExcelProperty(value = "æ¹å夿³¨") @ApiModelProperty("æ¹å夿³¨") private String ratifyTell; } inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsReportMapper.java
@@ -3,9 +3,12 @@ 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.inspect.dto.InsReportExport; import com.ruoyi.inspect.dto.ReportPageDto; import com.ruoyi.inspect.pojo.InsReport; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @author Administrator @@ -31,6 +34,14 @@ String getLaboratoryByName(@Param("name") String name, @Param("type") String type); /** * æ¥åæ¥è¡¨å¯¼åº * @return */ List<InsReportExport> reportAllExport(@Param("ew") QueryWrapper<ReportPageDto> ew, @Param("userId") Integer userId, @Param("queryStatus") String queryStatus, @Param("createOrderUser") Integer createOrderUser); } inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportService.java
@@ -8,7 +8,9 @@ import com.ruoyi.inspect.pojo.InsReport; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Map; /** @@ -58,4 +60,11 @@ * @return */ boolean sendBackTask(Integer id); /** * æ¥åå¯¼åº * @param dto * @param response */ void reportAllExport(ReportPageDto dto, HttpServletResponse response) throws UnsupportedEncodingException; } inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -1,11 +1,17 @@ package com.ruoyi.inspect.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.aspose.words.License; import com.aspose.words.SaveFormat; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; @@ -19,6 +25,7 @@ import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfStamper; import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto; import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper; import com.ruoyi.basic.pojo.IfsInventoryQuantity; import com.ruoyi.common.constant.InsOrderTypeConstants; @@ -29,6 +36,7 @@ import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.api.IfsApiUtils; import com.ruoyi.framework.exception.ErrorException; import com.ruoyi.inspect.dto.InsReportExport; import com.ruoyi.inspect.dto.ReportPageDto; import com.ruoyi.inspect.mapper.*; import com.ruoyi.inspect.pojo.*; @@ -48,8 +56,10 @@ import javax.annotation.Resource; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.*; import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -988,6 +998,49 @@ return false; } /** * æ¥åæ¥è¡¨å¯¼åº * @param dto * @param response */ @Override public void reportAllExport(ReportPageDto dto, HttpServletResponse response) throws UnsupportedEncodingException { //æ¥è¯¢å¯¼åºçè´¹ç¨ç»è®¡æ°æ® //è·åå½å人æå±å®éªå®¤id Integer createOrderUser = dto.getCreateOrderUser(); String queryStatus = dto.getQueryStatus(); dto.setQueryStatus(null); dto.setCreateOrderUser(null); List<InsReportExport> insReportExports = insReportMapper.reportAllExport(QueryWrappers.queryWrappers(dto), SecurityUtils.getUserId().intValue(), queryStatus, createOrderUser); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); // è¿éURLEncoder.encodeå¯ä»¥é²æ¢ä¸æä¹±ç å½ç¶åeasyexcel没æå ³ç³» String fileName = URLEncoder.encode("æ¥åæ¥è¡¨å¯¼åº", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); try { //æ°å»ºExcelWriter ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); //è·åsheet0对象 WriteSheet mainSheet = EasyExcel.writerSheet(0, "æ¥åæ¥è¡¨å¯¼åº").head(InsReportExport.class).build(); //åsheet0åå ¥æ°æ® ä¼ å ¥ç©ºlistè¿æ ·åªå¯¼åºè¡¨å¤´ excelWriter.write(insReportExports, mainSheet); //å ³éæµ excelWriter.finish(); } catch (IOException e) { throw new RuntimeException("导åºå¤±è´¥"); } } /** * å ä¿®æ¹éè´è®¢åæ¹æ¬¡å·, åè¿è¡ç§»åºæä½ inspect-server/src/main/resources/mapper/InsReportMapper.xml
@@ -64,4 +64,74 @@ order by s.create_time desc limit 1 </select> <!-- æ¥åæ¥è¡¨å¯¼åº --> <select id="reportAllExport" resultType="com.ruoyi.inspect.dto.InsReportExport"> select code, case when type_source = 0 then 'æåä¸å' else 'åææä¸å' end type_source, case when order_type = 'æ½æ£' then 'æ½æ£' when order_type = 'Customer-ordered test' then 'å§ææ£éª' when order_type = 'è¿åæ£éª' then 'è¿åæ£éª' when order_type = 'Quarterly inspection' then 'å£åº¦æ£éª' else '' end order_type, DATE_FORMAT(create_Time, '%Y-%m-%d %H:%i:%s') create_Time, write_user_name, DATE_FORMAT(write_time, '%Y-%m-%d %H:%i:%s') write_time, case when state = 0 then 'å¾ æäº¤' when state = 1 then 'å·²æäº¤' else '' end state, examine_user, DATE_FORMAT(examine_time, '%Y-%m-%d %H:%i:%s') examine_time, case when is_examine = 0 then 'ä¸éè¿' when is_examine = 1 then 'éè¿' else '' end is_examine, examine_tell, ratify_user, DATE_FORMAT(ratify_time, '%Y-%m-%d %H:%i:%s') ratify_time, case when is_ratify = 0 then '䏿¹å' when is_ratify = 1 then 'æ¹å' else '' end is_ratify, ratify_tell from ( select ir.*, io.entrust_code, u.name write_user_name, u1.name ratify_user, u2.name examine_user, io.type_source, io.order_type, io.laboratory, io.ifs_inventory_id, iiq.is_copper, ip.son_laboratory from ins_report ir left join ins_order io on io.id = ir.ins_order_id LEFT JOIN ifs_inventory_quantity iiq ON iiq.id = io.ifs_inventory_id left join user u on u.id = ir.write_user_id left join user u1 on u1.id = ir.ratify_user_id left join user u2 on u2.id = ir.examine_user_id left join ins_sample is2 on is2.ins_order_id = io.id left join ins_product ip on ip.ins_sample_id = is2.id where 1=1 and ir.is_pass = 1 <if test="createOrderUser != null and createOrderUser != ''"> and (ir.write_user_id = #{createOrderUser} or ir.examine_user_id = #{createOrderUser} or ir.ratify_user_id = #{createOrderUser}) </if> <if test="queryStatus != null and queryStatus != ''"> <!-- å¾ æäº¤--> <if test='queryStatus == 0'> and ir.state = 0 </if> <!-- å¾ å®¡æ¹--> <if test='queryStatus == 1'> and ir.state = 1 and (ir.is_examine != 1 or ir.is_examine is null) </if> <!-- å¾ æ¹å--> <if test='queryStatus == 2'> and ir.state = 1 and ir.is_examine = 1 and (ir.is_ratify != 1 or ir.is_ratify is null) </if> </if> group by ir.id ) a <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> ORDER BY a.create_time DESC </select> </mapper>