From af1ef97f554b67140773103a3e90bc95b80c5b54 Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期一, 21 四月 2025 08:54:05 +0800 Subject: [PATCH] 原材料和成品可根据选择行导出 --- basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java | 8 ++ basic-server/src/main/resources/mapper/StandardTreeMapper.xml | 9 ++ inspect-server/src/main/resources/mapper/InsOrderMapper.xml | 121 +++++++++++++++++------------- inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java | 16 ++++ cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java | 2 cnas-device/src/main/resources/static/word/device-maintenance.docx | 0 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 23 +++-- inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleOrderDto.java | 3 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java | 20 +++- basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java | 3 10 files changed, 135 insertions(+), 70 deletions(-) diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java index 71bfddb..009b268 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java +++ b/basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java @@ -121,4 +121,7 @@ @ApiModelProperty("鍏嶆") private Integer isExemption; + + @ApiModelProperty("鍘熸潗鏂檌d(瀵煎嚭鐢�)") + private String ids; } diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java index e6fbad1..d824587 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java +++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java @@ -94,6 +94,14 @@ * @return */ List<SampleDto> getStandardTree3(@Param("sampleType") String sampleType); + + /** + * 鏍规嵁鍘熸潗鏂檌d鍒楄〃鏌ヨ鍘熸潗鏂欎俊鎭� + * @param ifsIds + * @return + */ + List<IfsInventoryQuantitySupplierDto> getIfsByIds(@Param("ifsIds") List<String> ifsIds); + } diff --git a/basic-server/src/main/resources/mapper/StandardTreeMapper.xml b/basic-server/src/main/resources/mapper/StandardTreeMapper.xml index 39c9d07..4060428 100644 --- a/basic-server/src/main/resources/mapper/StandardTreeMapper.xml +++ b/basic-server/src/main/resources/mapper/StandardTreeMapper.xml @@ -389,4 +389,13 @@ where sample_type = #{sampleType} and sample is null </select> + + <!-- 鏍规嵁鍘熸潗鏂檌d鍒楄〃鏌ヨ鍘熸潗鏂欎俊鎭� --> + <select id="getIfsByIds" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto"> + <include refid="getIfsOrder"/> + where id in + <foreach item="id" collection="ifsIds" open="(" separator="," close=")"> + #{id} + </foreach> + </select> </mapper> diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java index 02ca6cc..47ec658 100644 --- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java +++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java @@ -128,7 +128,7 @@ try { response.setContentType("application/msword"); String fileName = URLEncoder.encode( - "璁惧浣跨敤鎺堟潈", "UTF-8"); + "璁惧淇濆吇缁存姢", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx"); OutputStream os = response.getOutputStream(); diff --git a/cnas-device/src/main/resources/static/word/device-maintenance.docx b/cnas-device/src/main/resources/static/word/device-maintenance.docx index 87ad5ee..267a258 100644 --- a/cnas-device/src/main/resources/static/word/device-maintenance.docx +++ b/cnas-device/src/main/resources/static/word/device-maintenance.docx Binary files differ diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleOrderDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleOrderDto.java index 47eb3a8..bdf55f3 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleOrderDto.java +++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleOrderDto.java @@ -92,7 +92,8 @@ @ApiModelProperty("鎬讳环") private String totalPrice; - + @ApiModelProperty("璁㈠崟id(瀵煎嚭鐢�)") + private String ids; } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java index 449c56d..94a172a 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java +++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java @@ -110,6 +110,10 @@ */ List<InsOrderPrintingVo> labelOrderPrinting(@Param("ids") List<Integer> ids); + /** + * 鏌ヨ瀵煎嚭淇℃伅 + * @return + */ List<SampleOrderDto> rawAllInsOrderExport(@Param("ew") QueryWrapper<SampleOrderDto> ew, @Param("laboratory") String laboratory, @Param("isOrderAll") String isOrderAll); /** @@ -119,5 +123,17 @@ */ String selectLaboratoryByOrderId(@Param("insOrderId") Integer insOrderId); + /** + * 鏌ヨ璁㈠崟淇℃伅 + * @param insSampleId + * @return + */ InsOrder selectFirstSubmit(@Param("insSampleId") Integer insSampleId); + + /** + * 鏍规嵁璁㈠崟id鏌ヨ璁㈠崟瀵煎嚭淇℃伅 + * @param orderIds + * @return + */ + List<SampleOrderDto> getInsOrderExportByIds(@Param("orderIds") List<String> orderIds); } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java index dba348e..4d8340e 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java +++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java @@ -992,16 +992,21 @@ */ @Override public void rawAllInsOrderExport(SampleOrderDto sampleOrderDto, HttpServletResponse response) { - //鍒ゆ柇鍏ㄩ儴,涓汉,缁勭粐鐨勬潈闄� - //todo:浠呯湅鎴戣幏鍙栧綋鍓嶄汉鎵�灞炲疄楠屽id - String laboratory = null; - // 鍒ゆ柇鏄惁鏄叏閮� - String isOrderAll = null; - if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) { - isOrderAll = "1"; - sampleOrderDto.setState(null); + List<SampleOrderDto> sampleOrderDtoList = new ArrayList<>(); + if (StringUtils.isNotBlank(sampleOrderDto.getIds())) { + List<String> orderIds = StrUtil.split(sampleOrderDto.getIds(), ","); + sampleOrderDtoList = insOrderMapper.getInsOrderExportByIds(orderIds); + } else { + String laboratory = null; + // 鍒ゆ柇鏄惁鏄叏閮� + String isOrderAll = null; + if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) { + isOrderAll = "1"; + sampleOrderDto.setState(null); + } + sampleOrderDto.setIds(null); + sampleOrderDtoList = insOrderMapper.rawAllInsOrderExport(QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); } - List<SampleOrderDto> sampleOrderDtoList = insOrderMapper.rawAllInsOrderExport(QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); // 鍒ゆ柇鏄惁鏄笉鍚堟牸, 涓嶅悎鏍兼煡璇笉鍚堟牸椤� for (SampleOrderDto orderDto : sampleOrderDtoList) { diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java index 155010a..fb5bfdc 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java +++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.*; @@ -672,12 +673,19 @@ */ @Override public void rawAllExport(IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto, HttpServletResponse response) throws UnsupportedEncodingException { - //鏌ヨ瀵煎嚭鐨勮垂鐢ㄧ粺璁℃暟鎹� - String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate(); - String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate(); - ifsInventoryQuantityDto.setBeginDeclareDate(null); - ifsInventoryQuantityDto.setEndDeclareDate(null); - List<IfsInventoryQuantitySupplierDto> ifsByOverList = standardTreeMapper.getIfsByOverList(QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate); + // 鍒ゆ柇鏄惁鏄牴鎹�夋嫨鐨勫鍑� + List<IfsInventoryQuantitySupplierDto> ifsByOverList = new ArrayList<>(); + if (StringUtils.isNotBlank(ifsInventoryQuantityDto.getIds())) { + List<String> ifsIds = StrUtil.split(ifsInventoryQuantityDto.getIds(), ","); + ifsByOverList = standardTreeMapper.getIfsByIds(ifsIds); + } else { + String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate(); + String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate(); + ifsInventoryQuantityDto.setBeginDeclareDate(null); + ifsInventoryQuantityDto.setEndDeclareDate(null); + ifsInventoryQuantityDto.setIds(null); + ifsByOverList = standardTreeMapper.getIfsByOverList(QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate); + } for (IfsInventoryQuantitySupplierDto dto : ifsByOverList) { dto.setSendTimeString(dto.getSendTime() == null ? "" : dto.getSendTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml index 214e7fa..ad38e37 100644 --- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml @@ -45,6 +45,61 @@ ip.cable_tag </sql> + <sql id="selectInsOrderExport"> + SELECT + io.*, + isau.user_id assign, + ir.id report_id, + ir.url, + ir.url_s, + sample_counts.sample_num, + CONCAT(ROUND(approved_product_counts.approved_count / total_product_counts.total_count * 100, 2), '%') AS insProgress, + io.sample_view AS sample_name, + GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model, + u.name, + testing_name, + case when io.type = 0 then '鏅��' + when io.type = 1 then '浼樺厛' + when io.type = 2 then '绱ф��' + end typeString, + case when io.ins_result = 1 then '鍚堟牸' + when io.ins_result = 0 then '涓嶅悎鏍�' + else '寰呮楠�' end insResultString + FROM + ins_order io + LEFT JOIN + ins_sample isa ON io.id = isa.ins_order_id + LEFT JOIN + ins_sample_user isau ON isau.ins_sample_id = io.id + LEFT JOIN + (SELECT id, ins_order_id, is_ratify, url, url_s FROM ins_report WHERE is_ratify = 1) ir ON io.id = ir.ins_order_id + LEFT JOIN + user u ON io.create_user = u.id + LEFT JOIN + (SELECT ins_order_id, COUNT(*) AS sample_num + FROM ins_sample + WHERE id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s ) + GROUP BY ins_order_id) sample_counts ON io.id = sample_counts.ins_order_id + LEFT JOIN + (SELECT ins_sample.ins_order_id, COUNT(*) AS total_count + FROM ins_product + JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id + WHERE ins_product.state = 1 + GROUP BY ins_sample.ins_order_id) total_product_counts ON io.id = total_product_counts.ins_order_id + LEFT JOIN + (SELECT ins_sample.ins_order_id, COUNT(*) AS approved_count + FROM ins_product + JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id + WHERE ins_product.state = 1 AND ins_product.ins_result IS NOT NULL + GROUP BY ins_sample.ins_order_id) approved_product_counts ON io.id = approved_product_counts.ins_order_id + LEFT JOIN (SELECT ins_sample_id, GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS testing_name + FROM ins_sample_user u + LEFT JOIN user uu ON u.user_id = uu.id + WHERE u.state = 0 + GROUP BY ins_sample_id + ORDER BY ins_sample_id) isu ON isu.ins_sample_id = io.id + </sql> + <select id="selectInsOrderPage" resultType="com.ruoyi.inspect.dto.SampleOrderDto"> select * from ( @@ -356,59 +411,7 @@ <!-- 鏌ヨ妫�楠屽崟鏁版嵁 --> <select id="rawAllInsOrderExport" resultType="com.ruoyi.inspect.dto.SampleOrderDto"> select * - from ( - SELECT - io.*, - isau.user_id assign, - ir.id report_id, - ir.url, - ir.url_s, - sample_counts.sample_num, - CONCAT(ROUND(approved_product_counts.approved_count / total_product_counts.total_count * 100, 2), '%') AS insProgress, - io.sample_view AS sample_name, - GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model, - u.name, - testing_name, - case when io.type = 0 then '鏅��' - when io.type = 1 then '浼樺厛' - when io.type = 2 then '绱ф��' - end typeString, - case when io.ins_result = 1 then '鍚堟牸' - when io.ins_result = 0 then '涓嶅悎鏍�' - else '寰呮楠�' end insResultString - FROM - ins_order io - LEFT JOIN - ins_sample isa ON io.id = isa.ins_order_id - LEFT JOIN - ins_sample_user isau ON isau.ins_sample_id = io.id - LEFT JOIN - (SELECT id, ins_order_id, is_ratify, url, url_s FROM ins_report WHERE is_ratify = 1) ir ON io.id = ir.ins_order_id - LEFT JOIN - user u ON io.create_user = u.id - LEFT JOIN - (SELECT ins_order_id, COUNT(*) AS sample_num - FROM ins_sample - WHERE id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s ) - GROUP BY ins_order_id) sample_counts ON io.id = sample_counts.ins_order_id - LEFT JOIN - (SELECT ins_sample.ins_order_id, COUNT(*) AS total_count - FROM ins_product - JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id - WHERE ins_product.state = 1 - GROUP BY ins_sample.ins_order_id) total_product_counts ON io.id = total_product_counts.ins_order_id - LEFT JOIN - (SELECT ins_sample.ins_order_id, COUNT(*) AS approved_count - FROM ins_product - JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id - WHERE ins_product.state = 1 AND ins_product.ins_result IS NOT NULL - GROUP BY ins_sample.ins_order_id) approved_product_counts ON io.id = approved_product_counts.ins_order_id - LEFT JOIN (SELECT ins_sample_id, GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS testing_name - FROM ins_sample_user u - LEFT JOIN user uu ON u.user_id = uu.id - WHERE u.state = 0 - GROUP BY ins_sample_id - ORDER BY ins_sample_id) isu ON isu.ins_sample_id = io.id + from ( <include refid="selectInsOrderExport"/> where (io.ifs_inventory_id IS NULL OR TRIM(io.ifs_inventory_id) = '') <if test="isOrderAll != null and isOrderAll != ''"> AND io.state in (1, 4) @@ -440,4 +443,16 @@ left join ins_sample is2 on is2.ins_order_id = io.id where is2.id = #{insSampleId} </select> + + <!-- 鏍规嵁璁㈠崟id鏌ヨ璁㈠崟瀵煎嚭淇℃伅 --> + <select id="getInsOrderExportByIds" resultType="com.ruoyi.inspect.dto.SampleOrderDto"> + <include refid="selectInsOrderExport"/> + where (io.ifs_inventory_id IS NULL OR TRIM(io.ifs_inventory_id) = '') + and io.id in + <foreach item="id" collection="orderIds" open="(" separator="," close=")"> + #{id} + </foreach> + GROUP BY io.id,type + order by type desc,io.id desc + </select> </mapper> -- Gitblit v1.9.3