inspect-server/src/main/java/com/ruoyi/inspect/controller/DataAnalysisController.java
@@ -2,7 +2,9 @@ import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.inspect.dto.DataAnalysisDto; import com.ruoyi.inspect.dto.MaterialPropTableDTO; import com.ruoyi.inspect.service.DataAnalysisService; import com.ruoyi.inspect.vo.DeviationAnalyzeVo; import io.swagger.annotations.Api; @@ -10,6 +12,9 @@ import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; /** @@ -51,7 +56,7 @@ /** * 查询物料属性合格率表格 * * @param dataAnalysisDto * @param dataAnalysisDto 查询参数 * @return */ @ApiOperation(value = "查询物料属性合格率表格") @@ -60,6 +65,50 @@ return Result.success(dataAnalysisService.getMaterialPropTable(dataAnalysisDto)); } @PostMapping("/exportSupplierExcel") public void exportSupplierExcel(HttpServletResponse response, @RequestBody List<MaterialPropTableDTO> materialProps) { if (materialProps == null || materialProps.isEmpty()) { return; } int index = 1; for (MaterialPropTableDTO dto : materialProps) { dto.setIndex(String.valueOf(index++)); } int totalBatchSum = 0; int unqualifiedBatchSum = 0; for (MaterialPropTableDTO dto : materialProps) { if (dto.getTotalBatch() != null) { totalBatchSum += dto.getTotalBatch(); } if (dto.getUnqualifiedBatch() != null) { unqualifiedBatchSum += dto.getUnqualifiedBatch(); } } BigDecimal passRateSum = BigDecimal.ZERO; if (totalBatchSum > 0) { passRateSum = BigDecimal .valueOf(totalBatchSum - unqualifiedBatchSum) .multiply(BigDecimal.valueOf(100)) .divide(BigDecimal.valueOf(totalBatchSum), 2, RoundingMode.HALF_UP); } MaterialPropTableDTO totalRow = new MaterialPropTableDTO(); totalRow.setIndex("合计"); totalRow.setSupplierName(""); totalRow.setTotalBatch(totalBatchSum); totalRow.setUnqualifiedBatch(unqualifiedBatchSum); totalRow.setPassRate(passRateSum); materialProps.add(totalRow); ExcelUtil<MaterialPropTableDTO> excelUtil = new ExcelUtil<>(MaterialPropTableDTO.class); excelUtil.exportExcel(response, materialProps, "合格率统计"); } /** * 查询原材料项 * inspect-server/src/main/java/com/ruoyi/inspect/dto/MaterialPropTableDTO.java
@@ -1,26 +1,31 @@ package com.ruoyi.inspect.dto; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; @Data public class MaterialPropTableDTO { @ApiModelProperty(value = "修改后批次号") private String updateBatchNo; @Excel(name = "序号") @ApiModelProperty(value = "序号") private String index; @ApiModelProperty(value = "抵达的采购数量") private BigDecimal qtyArrived; @Excel(name = "供应商名称") @ApiModelProperty(value = "供应商名称") private String supplierName; @ApiModelProperty(value = "零件描述") private String partDesc; @Excel(name = "到货批次") @ApiModelProperty(value = "到货批次") private Integer totalBatch; @ApiModelProperty(value = "合格状态") private Integer inspectStatus; @Excel(name = "不合格批次") @ApiModelProperty(value = "不合格批次") private Integer unqualifiedBatch; @ApiModelProperty(value = "下发时间") private Date sendTime; @Excel(name = "合格率(%)") @ApiModelProperty(value = "合格率(%)") private BigDecimal passRate; } inspect-server/src/main/java/com/ruoyi/inspect/mapper/DataAnalysisMapper.java
@@ -47,6 +47,12 @@ */ Map<String, Object> getRawPassRateByCake(@Param("dto") DataAnalysisDto dataAnalysisDto); /** * 查看物料属性明细表格 * * @param dataAnalysisDto 查找值 * @return 明细表格 */ List<MaterialPropTableDTO> getMaterialPropTable(@Param("dto") DataAnalysisDto dataAnalysisDto); inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -241,17 +241,18 @@ <select id="getMaterialPropTable" resultType="com.ruoyi.inspect.dto.MaterialPropTableDTO"> SELECT iiq.update_batch_no AS updateBatchNo, -- 修改后批次号 iiq.qty_arrived AS qtyArrived, -- 抵达的采购数量 iiq.part_desc AS partDesc, -- 零件描述 iiq.inspect_status AS inspectStatus, -- 合格状态 io1.send_time AS sendTime -- 下发时间 iiq.supplier_name AS supplierName, COUNT(*) AS totalBatch, SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unqualifiedBatch, ROUND(SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate FROM ifs_inventory_quantity iiq INNER JOIN ins_order io1 ON io1.ifs_inventory_id = iiq.id AND io1.order_type = #{dto.orderType} AND io1.state != -1 AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate} LEFT JOIN ( SELECT ins_order_id, @@ -260,6 +261,7 @@ FROM ins_sample GROUP BY ins_order_id ) ins ON ins.ins_order_id = io1.id WHERE iiq.is_finish = 1 AND iiq.inspect_status IN (1,2) @@ -280,7 +282,12 @@ AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%') </if> ORDER BY io1.send_time DESC GROUP BY iiq.supplier_name ORDER BY passRate DESC; </select> <select id="getRawProductAnalysisAllSample" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">