From cf0b45ae7fae95a4ebcff0dfcb10f1c81312ec23 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Sat, 14 Sep 2024 21:30:42 +0800 Subject: [PATCH] TASK:mixi; --- .../common/tasks/MiTuExportScheduledTask.java | 229 +++++++++--------- 1 file changed, 119 insertions(+), 110 deletions(-) diff --git a/src/main/java/com/mixi/common/tasks/MiTuExportScheduledTask.java b/src/main/java/com/mixi/common/tasks/MiTuExportScheduledTask.java index 3625f32..1767cae 100644 --- a/src/main/java/com/mixi/common/tasks/MiTuExportScheduledTask.java +++ b/src/main/java/com/mixi/common/tasks/MiTuExportScheduledTask.java @@ -76,9 +76,9 @@ public class MiTuExportScheduledTask { public void executeWeeklyHeavyStockReport() { // customerPurchaseReport(); // NewJoinVIPReport(); -// weeklySellThrReport(); -// WeeklyHeavyStockReport(); -// QuarterlyProductGroupingReport(); + weeklySellThrReport(); + WeeklyHeavyStockReport(); + QuarterlyProductGroupingReport(); // customerTypeAnalysis(); // getBestSell30Days(); // getData(); @@ -655,8 +655,10 @@ public class MiTuExportScheduledTask { } // 处理最后一个PLU_CODE的数据 if (startRow < rowNum) { - mergeCells(sheet, startRow, rowNum - 1); - linkImageToCell(workbook, sheet, startRow, rowNum - 1, headers.length - 1, imagePath, channelSftp); + String currentPluCode = transactionSummaryList.get(transactionSummaryList.size() - 1).getPLU_CODE(); + imagePath = getImagePath(currentPluCode); + mergeCells(sheet, startRow, rowNum); + linkImageToCell(workbook, sheet, startRow, rowNum, headers.length - 1, imagePath, channelSftp); } } @@ -719,7 +721,6 @@ public class MiTuExportScheduledTask { int rowNum = 1; int startRow = rowNum; - String previousPluCode = ""; String imagePath = ""; // 创建并配置SFTP连接 @@ -737,53 +738,60 @@ public class MiTuExportScheduledTask { channelSftp = (ChannelSftp) session.openChannel("sftp"); channelSftp.connect(); - for (WeeklyHeavyStock weeklyHeavyStock : weeklyHeavyStockList) { - String currentPluCode = weeklyHeavyStock.getPLU_CODE(); - if (!currentPluCode.equals(previousPluCode)) { - imagePath = getImagePath(currentPluCode); - if (startRow < rowNum - 1) { - mergeCells(sheet, startRow, rowNum - 1); - if (imagePath != null && !imagePath.isEmpty()) { + if (weeklyHeavyStockList.size() > 0) { + String previousPluCode = weeklyHeavyStockList.get(0).getPLU_CODE(); + for (WeeklyHeavyStock weeklyHeavyStock : weeklyHeavyStockList) { + String currentPluCode = weeklyHeavyStock.getPLU_CODE(); + + // 当 PLU_CODE 改变时处理图片和单元格合并 + if (!currentPluCode.equals(previousPluCode)) { + imagePath = getImagePath(previousPluCode); + + // 合并单元格并插入图片 + if (startRow < rowNum - 1) { + mergeCells(sheet, startRow, rowNum - 1); linkImageToCell(workbook, sheet, startRow, rowNum - 1, headers.length - 1, imagePath, channelSftp); } + + startRow = rowNum; + previousPluCode = currentPluCode; } - startRow = rowNum; - previousPluCode = currentPluCode; + + Row row = sheet.createRow(rowNum); + row.createCell(0).setCellValue(weeklyHeavyStock.getPLU_CODE()); + // 填充其他列的数据 + row.createCell(1).setCellValue(weeklyHeavyStock.getItem_name()); + row.createCell(2).setCellValue(weeklyHeavyStock.getItem_barcode()); + row.createCell(3).setCellValue(weeklyHeavyStock.getCat()); + row.createCell(4).setCellValue(weeklyHeavyStock.getSub_cat()); + row.createCell(5).setCellValue(weeklyHeavyStock.getCol()); + row.createCell(6).setCellValue(weeklyHeavyStock.getPrice_sales()); + row.createCell(7).setCellValue(weeklyHeavyStock.getMAS()); + row.createCell(8).setCellValue(weeklyHeavyStock.getMEL()); + row.createCell(9).setCellValue(weeklyHeavyStock.getMPC()); + row.createCell(10).setCellValue(weeklyHeavyStock.getMPS()); + row.createCell(11).setCellValue(weeklyHeavyStock.getMTF()); + row.createCell(12).setCellValue(weeklyHeavyStock.getMWP()); + row.createCell(13).setCellValue(weeklyHeavyStock.getMYO()); + row.createCell(14).setCellValue(weeklyHeavyStock.getMHZ()); + row.createCell(15).setCellValue(weeklyHeavyStock.getMRT()); + row.createCell(16).setCellValue(weeklyHeavyStock.getMBZ()); + row.createCell(17).setCellValue(weeklyHeavyStock.getTLT()); + row.createCell(18).setCellValue(weeklyHeavyStock.getSubtotal()); + row.createCell(19).setCellValue(weeklyHeavyStock.getG_TLT()); + + rowNum++; } - Row row = sheet.createRow(rowNum); - row.createCell(0).setCellValue(weeklyHeavyStock.getPLU_CODE()); - // 填充其他列的数据 - row.createCell(1).setCellValue(weeklyHeavyStock.getItem_name()); - row.createCell(2).setCellValue(weeklyHeavyStock.getItem_barcode()); - row.createCell(3).setCellValue(weeklyHeavyStock.getCat()); - row.createCell(4).setCellValue(weeklyHeavyStock.getSub_cat()); - row.createCell(5).setCellValue(weeklyHeavyStock.getCol()); - row.createCell(6).setCellValue(weeklyHeavyStock.getPrice_sales()); - row.createCell(7).setCellValue(weeklyHeavyStock.getMAS()); - row.createCell(8).setCellValue(weeklyHeavyStock.getMEL()); - row.createCell(9).setCellValue(weeklyHeavyStock.getMPC()); - row.createCell(10).setCellValue(weeklyHeavyStock.getMPS()); - row.createCell(11).setCellValue(weeklyHeavyStock.getMTF()); - row.createCell(12).setCellValue(weeklyHeavyStock.getMWP()); - row.createCell(13).setCellValue(weeklyHeavyStock.getMYO()); - row.createCell(14).setCellValue(weeklyHeavyStock.getMHZ()); - row.createCell(15).setCellValue(weeklyHeavyStock.getMRT()); - row.createCell(16).setCellValue(weeklyHeavyStock.getMBZ()); - row.createCell(17).setCellValue(weeklyHeavyStock.getTLT()); - row.createCell(18).setCellValue(weeklyHeavyStock.getSubtotal()); - row.createCell(19).setCellValue(weeklyHeavyStock.getG_TLT()); - - rowNum++; - } - - if (startRow < rowNum - 1) { - mergeCells(sheet, startRow, rowNum - 1); - if (imagePath != null && !imagePath.isEmpty()) { - linkImageToCell(workbook, sheet, startRow, rowNum - 1, headers.length - 1, imagePath, channelSftp); + if (startRow < rowNum) { + String currentPluCode = weeklyHeavyStockList.get(weeklyHeavyStockList.size() - 1).getPLU_CODE(); + imagePath = getImagePath(currentPluCode); + mergeCells(sheet, startRow, rowNum); + if (imagePath != null && !imagePath.isEmpty()) { + linkImageToCell(workbook, sheet, startRow, rowNum, headers.length - 1, imagePath, channelSftp); + } } } - } catch (Exception e) { log.info(imagePath); throw new RuntimeException("Error while processing the report", e); @@ -898,7 +906,6 @@ public class MiTuExportScheduledTask { int rowNum = 3; // 数据从第四行开始 int startRow = rowNum; - String previousPluCode = ""; String imagePath = ""; // 创建并配置SFTP连接 @@ -916,75 +923,77 @@ public class MiTuExportScheduledTask { channelSftp = (ChannelSftp) session.openChannel("sftp"); channelSftp.connect(); - for (WeeklyHeavyStock weeklyHeavyStock : weeklyHeavyStockList) { - if (!weeklyHeavyStock.getPLU_CODE().equals(previousPluCode)) { - imagePath = getImagePath(weeklyHeavyStock.getPLU_CODE()); - // 新的PLU_CODE,合并之前的单元格,并插入图片 - if (startRow < rowNum - 1) { - mergeCells(sheet, startRow, rowNum - 1); - if (imagePath != null && !imagePath.isEmpty()) { - linkImageToCell(workbook, sheet, startRow, rowNum - 1, 0, imagePath, channelSftp); // 插入图片到合并单元格 + if (weeklyHeavyStockList.size() > 0) { + String previousPluCode = weeklyHeavyStockList.get(0).getPLU_CODE(); + for (WeeklyHeavyStock weeklyHeavyStock : weeklyHeavyStockList) { + String currentPluCode = weeklyHeavyStock.getPLU_CODE(); + if (!currentPluCode.equals(previousPluCode)) { + imagePath = getImagePath(previousPluCode); + // 新的PLU_CODE,合并之前的单元格,并插入图片 + if (startRow < rowNum - 1) { + mergeCells(sheet, startRow, rowNum - 1); + linkImageToCell(workbook, sheet, startRow, rowNum - 1, 0, imagePath, channelSftp); } + startRow = rowNum; + previousPluCode = weeklyHeavyStock.getPLU_CODE(); } - startRow = rowNum; - previousPluCode = weeklyHeavyStock.getPLU_CODE(); + + // 计算“Shop total Sold” + int shopTotalSold = weeklyHeavyStock.getMASSOLD() + weeklyHeavyStock.getMELSOLD() + + weeklyHeavyStock.getMPCSOLD() + weeklyHeavyStock.getMPSSOLD() + + weeklyHeavyStock.getMTFSOLD() + weeklyHeavyStock.getMWPSOLD() + + weeklyHeavyStock.getMYOSOLD(); + + // 计算“HK Sell-thru” + int stockOnHand = weeklyHeavyStock.getMAS() + weeklyHeavyStock.getMEL() + + weeklyHeavyStock.getMPC() + weeklyHeavyStock.getMPS() + + weeklyHeavyStock.getMTF() + weeklyHeavyStock.getMWP() + + weeklyHeavyStock.getMYO() + weeklyHeavyStock.getMRT() + + weeklyHeavyStock.getMBZ() + weeklyHeavyStock.getMHZ(); + + String hkSellThru = stockOnHand > 0 ? String.format("%.0f%%", (double) shopTotalSold / stockOnHand * 100) : "0%"; + + Row row = sheet.createRow(rowNum); + row.createCell(1).setCellValue(weeklyHeavyStock.getPLU_CODE()); + row.createCell(2).setCellValue(weeklyHeavyStock.getCol()); + row.createCell(3).setCellValue(weeklyHeavyStock.getSize()); + row.createCell(4).setCellValue(weeklyHeavyStock.getItem_barcode()); + row.createCell(5).setCellValue(weeklyHeavyStock.getItem_name()); + row.createCell(6).setCellValue(weeklyHeavyStock.getCat()); + row.createCell(7).setCellValue(weeklyHeavyStock.getSub_cat()); + row.createCell(8).setCellValue(weeklyHeavyStock.getPrice_sales()); + row.createCell(9).setCellValue(hkSellThru); // 填入计算的HK Sell-thru + row.createCell(10).setCellValue(shopTotalSold); // 填入计算的Shop total Sold + row.createCell(11).setCellValue(weeklyHeavyStock.getMASSOLD()); + row.createCell(12).setCellValue(weeklyHeavyStock.getMELSOLD()); + row.createCell(13).setCellValue(weeklyHeavyStock.getMPCSOLD()); + row.createCell(14).setCellValue(weeklyHeavyStock.getMPSSOLD()); + row.createCell(15).setCellValue(weeklyHeavyStock.getMTFSOLD()); + row.createCell(16).setCellValue(weeklyHeavyStock.getMWPSOLD()); + row.createCell(17).setCellValue(weeklyHeavyStock.getMYOSOLD()); + row.createCell(18).setCellValue(weeklyHeavyStock.getMAS()); + row.createCell(19).setCellValue(weeklyHeavyStock.getMEL()); + row.createCell(20).setCellValue(weeklyHeavyStock.getMPC()); + row.createCell(21).setCellValue(weeklyHeavyStock.getMPS()); + row.createCell(22).setCellValue(weeklyHeavyStock.getMTF()); + row.createCell(23).setCellValue(weeklyHeavyStock.getMWP()); + row.createCell(24).setCellValue(weeklyHeavyStock.getMYO()); + row.createCell(25).setCellValue(weeklyHeavyStock.getMRT()); + row.createCell(26).setCellValue(weeklyHeavyStock.getMBZ()); + row.createCell(27).setCellValue(weeklyHeavyStock.getMHZ()); + + rowNum++; } - // 计算“Shop total Sold” - int shopTotalSold = weeklyHeavyStock.getMASSOLD() + weeklyHeavyStock.getMELSOLD() + - weeklyHeavyStock.getMPCSOLD() + weeklyHeavyStock.getMPSSOLD() + - weeklyHeavyStock.getMTFSOLD() + weeklyHeavyStock.getMWPSOLD() + - weeklyHeavyStock.getMYOSOLD(); - - // 计算“HK Sell-thru” - int stockOnHand = weeklyHeavyStock.getMAS() + weeklyHeavyStock.getMEL() + - weeklyHeavyStock.getMPC() + weeklyHeavyStock.getMPS() + - weeklyHeavyStock.getMTF() + weeklyHeavyStock.getMWP() + - weeklyHeavyStock.getMYO() + weeklyHeavyStock.getMRT() + - weeklyHeavyStock.getMBZ() + weeklyHeavyStock.getMHZ(); - - String hkSellThru = stockOnHand > 0 ? String.format("%.0f%%", (double) shopTotalSold / stockOnHand * 100) : "0%"; - - Row row = sheet.createRow(rowNum); - row.createCell(1).setCellValue(weeklyHeavyStock.getPLU_CODE()); - row.createCell(2).setCellValue(weeklyHeavyStock.getCol()); - row.createCell(3).setCellValue(weeklyHeavyStock.getSize()); - row.createCell(4).setCellValue(weeklyHeavyStock.getItem_barcode()); - row.createCell(5).setCellValue(weeklyHeavyStock.getItem_name()); - row.createCell(6).setCellValue(weeklyHeavyStock.getCat()); - row.createCell(7).setCellValue(weeklyHeavyStock.getSub_cat()); - row.createCell(8).setCellValue(weeklyHeavyStock.getPrice_sales()); - row.createCell(9).setCellValue(hkSellThru); // 填入计算的HK Sell-thru - row.createCell(10).setCellValue(shopTotalSold); // 填入计算的Shop total Sold - row.createCell(11).setCellValue(weeklyHeavyStock.getMASSOLD()); - row.createCell(12).setCellValue(weeklyHeavyStock.getMELSOLD()); - row.createCell(13).setCellValue(weeklyHeavyStock.getMPCSOLD()); - row.createCell(14).setCellValue(weeklyHeavyStock.getMPSSOLD()); - row.createCell(15).setCellValue(weeklyHeavyStock.getMTFSOLD()); - row.createCell(16).setCellValue(weeklyHeavyStock.getMWPSOLD()); - row.createCell(17).setCellValue(weeklyHeavyStock.getMYOSOLD()); - row.createCell(18).setCellValue(weeklyHeavyStock.getMAS()); - row.createCell(19).setCellValue(weeklyHeavyStock.getMEL()); - row.createCell(20).setCellValue(weeklyHeavyStock.getMPC()); - row.createCell(21).setCellValue(weeklyHeavyStock.getMPS()); - row.createCell(22).setCellValue(weeklyHeavyStock.getMTF()); - row.createCell(23).setCellValue(weeklyHeavyStock.getMWP()); - row.createCell(24).setCellValue(weeklyHeavyStock.getMYO()); - row.createCell(25).setCellValue(weeklyHeavyStock.getMRT()); - row.createCell(26).setCellValue(weeklyHeavyStock.getMBZ()); - row.createCell(27).setCellValue(weeklyHeavyStock.getMHZ()); - - rowNum++; - } - - // 确保处理最后一个Plu Code - if (startRow < rowNum - 1 || previousPluCode != null) { - mergeCells(sheet, startRow, rowNum - 1); - if (imagePath != null && !imagePath.isEmpty()) { - linkImageToCell(workbook, sheet, startRow, rowNum - 1, 0, imagePath, channelSftp); // 插入图片到合并单元格 + // 确保处理最后一个Plu Code + if (startRow < rowNum) { + String currentPluCode = weeklyHeavyStockList.get(weeklyHeavyStockList.size() - 1).getPLU_CODE(); + imagePath = getImagePath(currentPluCode); + mergeCells(sheet, startRow, rowNum); + linkImageToCell(workbook, sheet, startRow, rowNum, 0, imagePath, channelSftp); } - } + } } catch (Exception e) { throw new RuntimeException("Error while processing the report", e); } finally {