zss
2025-04-18 ec1f20c31d64ddbc5242c3942902bc5233a8a140
Merge remote-tracking branch 'origin/dev_ztzb' into dev_ztzb
已修改7个文件
已添加1个文件
236 ■■■■■ 文件已修改
cnas-device/src/main/resources/mapper/DeviceImpowerDetailsMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsReportExport.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsReportMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsReportMapper.xml 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>