src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -32,26 +32,60 @@ @Override public List<ProductTreeDto> selectProductList(ProductDto productDto) { // æ¥è¯¢æ ¹èç¹ï¼parentId 为 nullï¼ // 䏿¬¡æ§æ¥è¯¢æææ°æ® LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.isNull(Product::getParentId); // 妿æäº§ååç§°æ¡ä»¶ï¼æ·»å å°æ¥è¯¢ä¸ if (productDto.getProductName() != null && !productDto.getProductName().isEmpty()) { queryWrapper.like(Product::getProductName, productDto.getProductName()); } List<Product> allProducts = productMapper.selectList(queryWrapper); // æ¥è¯¢æ ¹èç¹å表 List<Product> rootProducts = productMapper.selectList(queryWrapper); // å¨å åä¸æå»ºæ ç»æ return buildTree(allProducts); } // 转æ¢ä¸ºæ èç¹å¹¶éå½æå»ºåæ /** * æå»ºæ ç»æ * @param allProducts ææäº§åæ°æ® * @return æ å½¢ç»æå表 */ private List<ProductTreeDto> buildTree(List<Product> allProducts) { // æ parentId åç» java.util.Map<Long, List<Product>> parentMap = new java.util.HashMap<>(); List<Product> rootList = new ArrayList<>(); for (Product product : allProducts) { if (product.getParentId() == null) { rootList.add(product); } else { parentMap.computeIfAbsent(product.getParentId(), k -> new ArrayList<>()).add(product); } } // éå½æå»ºåèç¹ List<ProductTreeDto> tree = new ArrayList<>(); for (Product product : rootProducts) { ProductTreeDto node = convertToTreeDto(product); node.setChildren(buildChildrenNodes(product.getId())); tree.add(node); for (Product root : rootList) { tree.add(buildNode(root, parentMap)); } return tree; } /** * éå½æå»ºèç¹åå ¶åèç¹ * @param product 产åå®ä½ * @param parentMap æparentIdåç»çmap * @return æ èç¹ */ private ProductTreeDto buildNode(Product product, java.util.Map<Long, List<Product>> parentMap) { ProductTreeDto node = convertToTreeDto(product); List<Product> children = parentMap.get(product.getId()); if (children != null && !children.isEmpty()) { List<ProductTreeDto> childNodes = new ArrayList<>(); for (Product child : children) { childNodes.add(buildNode(child, parentMap)); } node.setChildren(childNodes); } return node; } @Override @@ -60,23 +94,6 @@ } // éå½æå»ºåèç¹ private List<ProductTreeDto> buildChildrenNodes(Long parentId) { // æ¥è¯¢å½åç¶èç¹çåèç¹ LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Product::getParentId, parentId); List<Product> childProducts = productMapper.selectList(queryWrapper); // 转æ¢åèç¹å¹¶éå½æå»ºå®ä»¬çåæ List<ProductTreeDto> children = new ArrayList<>(); for (Product child : childProducts) { ProductTreeDto childNode = convertToTreeDto(child); childNode.setChildren(buildChildrenNodes(child.getId())); children.add(childNode); } return children; } // å° Product 转æ¢ä¸º ProductTreeDto private ProductTreeDto convertToTreeDto(Product product) { src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -215,7 +215,11 @@ ProductProcessRouteItem item = new ProductProcessRouteItem(); item.setProductRouteId(productRouteId); item.setProcessId(dto.getProcessId()); if (num >= dtos.size()-1) { item.setProductModelId(productModelId); }else { item.setProductModelId(dto.getProductModelId()); } item.setProcessRouteName(dto.getProcessRouteName()); item.setProcessRouteOpenNum(dto.getProcessRouteOpenNum()); item.setProcessRouteNum(dto.getProcessRouteNum()); src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -8,6 +8,7 @@ import com.ruoyi.procurementrecord.service.ProcurementRecordService; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.quality.dto.QualityInspectDto; import com.ruoyi.quality.dto.QualityInspectExportDTO; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectFile; import com.ruoyi.quality.pojo.QualityInspectParam; @@ -112,7 +113,7 @@ } /** * å¯¼åº * 导åºï¼æ§æ¥å£ï¼ä¿çå ¼å®¹ï¼ * @param response * @param qualityInspect */ @@ -122,6 +123,16 @@ } /** * 导åºï¼æ°æ¥å£ï¼æ¯æéä¸å¯¼åºåæ£éªåæ°ï¼ * @param response * @param exportDTO */ @PostMapping("/exportNew") public void qualityInspectExportNew(HttpServletResponse response, @RequestBody QualityInspectExportDTO exportDTO) { qualityInspectService.qualityInspectExportNew(response, exportDTO); } /** * æäº¤ * @param qualityInspect * @return src/main/java/com/ruoyi/quality/dto/QualityInspectExportDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package com.ruoyi.quality.dto; import lombok.Data; import java.io.Serializable; import java.util.List; /** * è´¨éæ£éªå¯¼åºè¯·æ±åæ° */ @Data public class QualityInspectExportDTO implements Serializable { private static final long serialVersionUID = 1L; /** * æ£éªç±»å(0:åæææ£éª;1:è¿ç¨æ£éª;2:åºåæ£éª) */ private Integer inspectType; /** * éä¸çIDå表ï¼ä¸ºç©ºåå ¨é¨å¯¼åºï¼ */ private List<Long> ids; /** * ä¾åºåï¼åæææ£éªçéï¼ */ private String supplier; /** * å·¥åºï¼è¿ç¨æ£éªçéï¼ */ private String process; /** * 产ååç§°ï¼åºåæ£éªçéï¼ */ private String productName; /** * æ£æµæ¥æå¼å§ */ private String entryDateStart; /** * æ£æµæ¥æç»æ */ private String entryDateEnd; } src/main/java/com/ruoyi/quality/dto/QualityInspectExportVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,90 @@ package com.ruoyi.quality.dto; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * è´¨éæ£éªå¯¼åºæ°æ®VOï¼æ¯ä¸ªæ£éªåæ°ä¸è¡ï¼ */ @Data public class QualityInspectExportVO implements Serializable { private static final long serialVersionUID = 1L; /** * æ£æµæ¥æ */ private Date checkTime; /** * éè´è®¢åå·/ç产工åå· */ private String orderNo; /** * ä¾åºå/å·¥åº */ private String supplierOrProcess; /** * æ£éªå */ private String checkName; /** * 产ååç§° */ private String productName; /** * è§æ ¼åå· */ private String model; /** * åä½ */ private String unit; /** * æ°é */ private BigDecimal quantity; /** * æ£æµåä½ */ private String checkCompany; /** * æ£æµç»æ */ private String checkResult; /** * ææ */ private String parameterItem; /** * ææ åä½ */ private String paramUnit; /** * æ åå¼ */ private String standardValue; /** * å æ§å¼ */ private String controlValue; /** * æ£éªå¼ */ private String testValue; } src/main/java/com/ruoyi/quality/mapper/QualityInspectMapper.java
@@ -19,6 +19,11 @@ List<QualityInspect> qualityInspectExport(@Param("qualityInspect") QualityInspect qualityInspect); /** * æ ¹æ®IDå表æ¥è¯¢æ£éªè®°å½ï¼ç¨äºå¯¼åºï¼ */ List<QualityInspect> qualityInspectExportByIds(@Param("ids") List<Long> ids, @Param("qualityInspect") QualityInspect qualityInspect); /** * æ ¹æ®ç产主表IDæ¹éå é¤è¿ç¨æ£éª */ int deleteByProductMainIds(@Param("productMainIds") List<Long> productMainIds); src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.quality.dto.QualityInspectDto; import com.ruoyi.quality.dto.QualityInspectExportDTO; import com.ruoyi.quality.pojo.QualityInspect; import javax.servlet.http.HttpServletResponse; @@ -19,6 +20,13 @@ void qualityInspectExport(HttpServletResponse response, QualityInspect qualityInspect); /** * å¯¼åºæ£éªè®°å½ï¼æ¯æéä¸å¯¼åºåå ¨é¨å¯¼åºï¼å 嫿£éªåæ°ï¼ * @param response ååº * @param exportDTO 导åºåæ° */ void qualityInspectExportNew(HttpServletResponse response, QualityInspectExportDTO exportDTO); QualityInspectDto getDetailById(Integer id); int submit(QualityInspect qualityInspect); src/main/java/com/ruoyi/quality/service/impl/QualityInspectExportHandle.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,277 @@ package com.ruoyi.quality.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.quality.dto.QualityInspectExportDTO; import com.ruoyi.quality.dto.QualityInspectExportVO; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.service.IQualityInspectParamService; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * è´¨éæ£éªå¯¼åºå¤çç±» */ @Component public class QualityInspectExportHandle { @Resource private QualityInspectMapper qualityInspectMapper; @Resource private IQualityInspectParamService qualityInspectParamService; /** * æ¥è¯¢æ£éªè®°å½ï¼æ¯æéä¸å¯¼åºåå ¨é¨å¯¼åºï¼ * @param exportDTO 导åºåæ° * @return æ£éªè®°å½å表 */ public List<QualityInspect> queryInspectList(QualityInspectExportDTO exportDTO) { QualityInspect qualityInspect = new QualityInspect(); qualityInspect.setInspectType(exportDTO.getInspectType()); qualityInspect.setSupplier(exportDTO.getSupplier()); qualityInspect.setProcess(exportDTO.getProcess()); qualityInspect.setProductName(exportDTO.getProductName()); qualityInspect.setEntryDateStart(exportDTO.getEntryDateStart()); qualityInspect.setEntryDateEnd(exportDTO.getEntryDateEnd()); if (!CollectionUtils.isEmpty(exportDTO.getIds())) { return qualityInspectMapper.qualityInspectExportByIds(exportDTO.getIds(), qualityInspect); } else { return qualityInspectMapper.qualityInspectExportByIds(null, qualityInspect); } } /** * æå»ºå¯¼åºæ°æ®ï¼æ¯ä¸ªæ£éªåæ°ä¸è¡ï¼ * å䏿£éªè®°å½çå¤ä¸ªåæ°è¡ï¼åªå¨ç¬¬ä¸è¡æ¾ç¤ºå·¦ä¾§åºç¡ä¿¡æ¯ï¼åç»è¡ç空 * @param qualityInspects æ£éªè®°å½å表 * @param inspectType æ£éªç±»å * @return å¯¼åºæ°æ®å表 */ public List<QualityInspectExportVO> buildExportData(List<QualityInspect> qualityInspects, Integer inspectType) { if (CollectionUtils.isEmpty(qualityInspects)) { return new ArrayList<>(); } // è·åæææ£éªè®°å½çIDï¼æ¹éæ¥è¯¢æ£éªåæ° List<Long> inspectIds = qualityInspects.stream().map(QualityInspect::getId).collect(Collectors.toList()); List<QualityInspectParam> allParams = qualityInspectParamService.list( Wrappers.<QualityInspectParam>lambdaQuery().in(QualityInspectParam::getInspectId, inspectIds) ); // æinspectIdåç» Map<Long, List<QualityInspectParam>> paramMap = allParams.stream() .collect(Collectors.groupingBy(QualityInspectParam::getInspectId)); // æå»ºå¯¼åºæ°æ®ï¼æ¯ä¸ªæ£éªåæ°ä¸è¡ List<QualityInspectExportVO> exportList = new ArrayList<>(); for (QualityInspect inspect : qualityInspects) { List<QualityInspectParam> params = paramMap.getOrDefault(inspect.getId(), new ArrayList<>()); if (params.isEmpty()) { // æ²¡ææ£éªåæ°ï¼ä¹è¾åºä¸è¡ QualityInspectExportVO vo = buildVO(inspect, null, inspectType, true); exportList.add(vo); } else { // ææ£éªåæ°ï¼æ¯ä¸ªåæ°ä¸è¡ï¼ç¬¬ä¸è¡æ¾ç¤ºåºç¡ä¿¡æ¯ï¼åç»è¡å·¦ä¾§ç空 boolean isFirst = true; for (QualityInspectParam param : params) { QualityInspectExportVO vo = buildVO(inspect, param, inspectType, isFirst); exportList.add(vo); isFirst = false; } } } return exportList; } /** * æå»ºåè¡å¯¼åºæ°æ® * @param inspect æ£éªè®°å½ * @param param æ£éªåæ°ï¼å¯ä¸ºnullï¼ * @param inspectType æ£éªç±»å * @param showBaseInfo æ¯å¦æ¾ç¤ºå·¦ä¾§åºç¡ä¿¡æ¯ï¼å䏿£éªè®°å½çå¤è¡ï¼åªå¨ç¬¬ä¸è¡æ¾ç¤ºï¼ */ private QualityInspectExportVO buildVO(QualityInspect inspect, QualityInspectParam param, Integer inspectType, boolean showBaseInfo) { QualityInspectExportVO vo = new QualityInspectExportVO(); // åªæç¬¬ä¸è¡æ¾ç¤ºå·¦ä¾§åºç¡ä¿¡æ¯ï¼åç»è¡ç空 if (showBaseInfo) { vo.setCheckTime(inspect.getCheckTime()); vo.setCheckName(inspect.getCheckName()); vo.setProductName(inspect.getProductName()); vo.setModel(inspect.getModel()); vo.setUnit(inspect.getUnit()); vo.setQuantity(inspect.getQuantity()); vo.setCheckCompany(inspect.getCheckCompany()); vo.setCheckResult(inspect.getCheckResult()); // 设置订åå·åä¾åºå/å·¥åº if (inspectType == 0) { vo.setOrderNo(inspect.getPurchaseContractNo()); vo.setSupplierOrProcess(inspect.getSupplier()); } else if (inspectType == 1) { vo.setOrderNo(inspect.getWorkOrderNo()); vo.setSupplierOrProcess(inspect.getProcess()); } else { vo.setOrderNo(inspect.getWorkOrderNo()); vo.setSupplierOrProcess(""); } } // 设置æ£éªåæ°ï¼æ¯è¡é½è¦æ¾ç¤ºï¼ if (param != null) { vo.setParameterItem(param.getParameterItem()); vo.setParamUnit(param.getUnit()); vo.setStandardValue(param.getStandardValue()); vo.setControlValue(param.getControlValue()); vo.setTestValue(param.getTestValue()); } return vo; } /** * 导åºExcel * @param response ååº * @param exportList å¯¼åºæ°æ® * @param inspectType æ£éªç±»å */ public void exportExcel(HttpServletResponse response, List<QualityInspectExportVO> exportList, Integer inspectType) { try { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet(); // åå»ºæ ·å¼ CellStyle headerStyle = createHeaderStyle(workbook); CellStyle dataStyle = createDataStyle(workbook); // æå»ºè¡¨å¤´ Row headerRow = sheet.createRow(0); String[] headers = {"æ£æµæ¥æ", "订åå·", "ä¾åºå/å·¥åº", "æ£éªå", "产ååç§°", "è§æ ¼åå·", "åä½", "æ°é", "æ£æµåä½", "æ£æµç»æ", "ææ ", "ææ åä½", "æ åå¼", "å æ§å¼", "æ£éªå¼"}; for (int i = 0; i < headers.length; i++) { Cell cell = headerRow.createCell(i); cell.setCellValue(headers[i]); cell.setCellStyle(headerStyle); } // å¡«å æ°æ® SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); int rowIndex = 1; for (QualityInspectExportVO vo : exportList) { Row dataRow = sheet.createRow(rowIndex++); createCell(dataRow, 0, vo.getCheckTime() != null ? sdf.format(vo.getCheckTime()) : "", dataStyle); createCell(dataRow, 1, vo.getOrderNo() != null ? vo.getOrderNo() : "", dataStyle); createCell(dataRow, 2, vo.getSupplierOrProcess() != null ? vo.getSupplierOrProcess() : "", dataStyle); createCell(dataRow, 3, vo.getCheckName() != null ? vo.getCheckName() : "", dataStyle); createCell(dataRow, 4, vo.getProductName() != null ? vo.getProductName() : "", dataStyle); createCell(dataRow, 5, vo.getModel() != null ? vo.getModel() : "", dataStyle); createCell(dataRow, 6, vo.getUnit() != null ? vo.getUnit() : "", dataStyle); createCell(dataRow, 7, vo.getQuantity() != null ? vo.getQuantity().toString() : "", dataStyle); createCell(dataRow, 8, vo.getCheckCompany() != null ? vo.getCheckCompany() : "", dataStyle); createCell(dataRow, 9, vo.getCheckResult() != null ? vo.getCheckResult() : "", dataStyle); createCell(dataRow, 10, vo.getParameterItem() != null ? vo.getParameterItem() : "", dataStyle); createCell(dataRow, 11, vo.getParamUnit() != null ? vo.getParamUnit() : "", dataStyle); createCell(dataRow, 12, vo.getStandardValue() != null ? vo.getStandardValue() : "", dataStyle); createCell(dataRow, 13, vo.getControlValue() != null ? vo.getControlValue() : "", dataStyle); createCell(dataRow, 14, vo.getTestValue() != null ? vo.getTestValue() : "", dataStyle); } // 设置å宽 for (int i = 0; i < headers.length; i++) { sheet.setColumnWidth(i, 15 * 256); } // å¯¼åºæä»¶å String fileName = getFileName(inspectType); // è¾åº response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8")); OutputStream os = response.getOutputStream(); workbook.write(os); os.flush(); os.close(); workbook.close(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("导åºå¤±è´¥: " + e.getMessage()); } } /** * åå»ºè¡¨å¤´æ ·å¼ */ private CellStyle createHeaderStyle(Workbook workbook) { CellStyle style = workbook.createCellStyle(); style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); style.setAlignment(HorizontalAlignment.CENTER); style.setBorderBottom(BorderStyle.THIN); style.setBorderTop(BorderStyle.THIN); style.setBorderLeft(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN); Font font = workbook.createFont(); font.setBold(true); style.setFont(font); return style; } /** * åå»ºæ°æ®æ ·å¼ */ private CellStyle createDataStyle(Workbook workbook) { CellStyle style = workbook.createCellStyle(); style.setAlignment(HorizontalAlignment.CENTER); style.setBorderBottom(BorderStyle.THIN); style.setBorderTop(BorderStyle.THIN); style.setBorderLeft(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN); return style; } /** * å建åå æ ¼å¹¶è®¾ç½®å¼ */ private void createCell(Row row, int colIndex, String value, CellStyle style) { Cell cell = row.createCell(colIndex); cell.setCellValue(value); cell.setCellStyle(style); } /** * è·åå¯¼åºæä»¶å */ private String getFileName(Integer inspectType) { if (inspectType == null) { return "æ£éªå¯¼åº"; } switch (inspectType) { case 0: return "åæææ£éªå¯¼åº"; case 1: return "è¿ç¨æ£éªå¯¼åº"; case 2: return "åºåæ£éªå¯¼åº"; default: return "æ£éªå¯¼åº"; } } } src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -9,25 +9,24 @@ import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.HackLoopTableRenderPolicy; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.procurementrecord.service.ProcurementRecordService; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.quality.dto.QualityInspectDto; import com.ruoyi.quality.dto.QualityInspectExportDTO; import com.ruoyi.quality.dto.QualityInspectExportVO; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.mapper.QualityTestStandardMapper; import com.ruoyi.quality.mapper.QualityUnqualifiedMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.pojo.QualityUnqualified; import com.ruoyi.quality.service.IQualityInspectParamService; import com.ruoyi.quality.service.IQualityInspectService; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; @@ -47,13 +46,9 @@ private IQualityInspectParamService qualityInspectParamService; private QualityTestStandardMapper qualityTestStandardMapper; private QualityUnqualifiedMapper qualityUnqualifiedMapper; private SalesLedgerProductMapper salesLedgerProductMapper; private ProcurementRecordService procurementRecordService; private QualityInspectExportHandle qualityInspectExportHandle; @Override public int add(QualityInspectDto qualityInspectDto) { @@ -78,15 +73,12 @@ return qualityInspectDto; } //æäº¤ @Override public int submit(QualityInspect inspect) { QualityInspect qualityInspect = qualityInspectMapper.selectById(inspect.getId()); //æäº¤åå¿ é¡»å¤ææ¯å¦åæ ¼ if (ObjectUtils.isNull(qualityInspect.getCheckResult())) { throw new RuntimeException("请å 夿æ¯å¦åæ ¼"); } /*夿ä¸åæ ¼*/ if (qualityInspect.getCheckResult().equals("ä¸åæ ¼")) { QualityUnqualified qualityUnqualified = new QualityUnqualified(); BeanUtils.copyProperties(qualityInspect, qualityUnqualified); @@ -104,7 +96,6 @@ return qualityInspectMapper.updateById(qualityInspect); } /*çææ£éªæ¥å*/ @Override public void down(HttpServletResponse response, QualityInspect qualityInspect) { QualityInspect inspect = qualityInspectMapper.selectById(qualityInspect.getId()); @@ -140,11 +131,9 @@ try { response.setContentType("application/msword"); String fileName = URLEncoder.encode( "æ£éªæ¥å", "UTF-8"); String fileName = URLEncoder.encode("æ£éªæ¥å", "UTF-8"); response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx"); OutputStream os = response.getOutputStream(); template.write(os); os.flush(); @@ -190,8 +179,25 @@ util.exportExcel(response, qualityInspects, "åºåæ£éªå¯¼åº"); break; } } /** * å¯¼åºæ£éªè®°å½ï¼æ¯æéä¸å¯¼åºåå ¨é¨å¯¼åºï¼å 嫿£éªåæ°ï¼ * æ¯ä¸ªæ£éªåæ°ä¸è¡ï¼ä¸ä¸ªæ£éªè®°å½å±å¼æå¤è¡ï¼ */ @Override public void qualityInspectExportNew(HttpServletResponse response, QualityInspectExportDTO exportDTO) { // 1. æ¥è¯¢æ£éªè®°å½ List<QualityInspect> qualityInspects = qualityInspectExportHandle.queryInspectList(exportDTO); if (CollectionUtils.isEmpty(qualityInspects)) { throw new RuntimeException("没æå¯å¯¼åºçæ°æ®"); } // 2. æå»ºå¯¼åºæ°æ®ï¼æ¯ä¸ªæ£éªåæ°ä¸è¡ï¼ List<QualityInspectExportVO> exportList = qualityInspectExportHandle.buildExportData(qualityInspects, exportDTO.getInspectType()); // 3. 导åºExcel qualityInspectExportHandle.exportExcel(response, exportList, exportDTO.getInspectType()); } } src/main/resources/mapper/quality/QualityInspectMapper.xml
@@ -66,6 +66,52 @@ </if> </select> <select id="qualityInspectExportByIds" resultType="com.ruoyi.quality.pojo.QualityInspect"> SELECT qi.*, <choose> <when test="qualityInspect.inspectType == 0"> pl.purchase_contract_number as purchase_contract_no </when> <otherwise> pwo.work_order_no </otherwise> </choose> FROM quality_inspect qi <choose> <when test="qualityInspect.inspectType == 0"> LEFT JOIN purchase_ledger pl ON pl.id = qi.purchase_ledger_id </when> <otherwise> LEFT JOIN production_product_main ppm ON qi.product_main_id = ppm.id LEFT JOIN product_work_order pwo ON ppm.work_order_id = pwo.id </otherwise> </choose> WHERE qi.inspect_type=#{qualityInspect.inspectType} <if test="ids != null and ids.size() > 0"> AND qi.id IN <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> </if> <if test="qualityInspect.supplier != null and qualityInspect.supplier != '' "> AND qi.supplier like concat('%',#{qualityInspect.supplier},'%') </if> <if test="qualityInspect.process != null and qualityInspect.process != '' "> AND qi.process like concat('%',#{qualityInspect.process},'%') </if> <if test="qualityInspect.productName != null and qualityInspect.productName != '' "> AND qi.product_name like concat('%',#{qualityInspect.productName},'%') </if> <if test="qualityInspect.entryDateStart != null and qualityInspect.entryDateStart != '' "> AND qi.check_time >= DATE_FORMAT(#{qualityInspect.entryDateStart},'%Y-%m-d') </if> <if test="qualityInspect.entryDateEnd != null and qualityInspect.entryDateEnd != '' "> AND qi.check_time <= DATE_FORMAT(#{qualityInspect.entryDateEnd},'%Y-%m-d') </if> ORDER BY qi.check_time DESC </select> <delete id="deleteByProductMainIds"> DELETE FROM quality_inspect WHERE product_main_id IN