Browse Source

财务核算分摊导出增加分项表单sheet

seyason 1 year ago
parent
commit
1e6d6be047

+ 42 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java

@@ -593,6 +593,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
             BigDecimal totalField3 = cusColList.size() > 2?BigDecimal.valueOf(0):null;
 
             List<String> headList = new ArrayList<String>();
+            List<String> sheetNameList = new ArrayList<String>();
+            sheetNameList.add("财务数据分摊总表");
+            int fixedColCount = 4;
             if (groupByCategory == 0) {
                 //headList.add("项目编号");
                 headList.add(MessageUtils.message("entry.projectId"));
@@ -600,28 +603,39 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                 headList.add(MessageUtils.message("entry.projectName"));
                 //headList.add("人员");
                 headList.add(MessageUtils.message("entry.personnel"));
-                headList.add("部门");
+                headList.add(MessageUtils.message("entry.dept"));
                 for (UserCustom userCustom : userCustoms) {
                     headList.add(userCustom.getName());
+                    fixedColCount++;
                 }
                 //headList.add("工时(h)");
                 headList.add(MessageUtils.message("entry.workHours")+"(h)");
+                fixedColCount++;
             } else {
                 //headList.add("项目分类");
                 headList.add(MessageUtils.message("entry.projectType"));
             }
             FinanceFixedcolname fixedItem = financeFixedcolnameService.getFixed(companyId);
             headList.add(fixedItem.getMonthCost()+"(元)");
+            sheetNameList.add(fixedItem.getMonthCost()+"分摊表");
             headList.add(fixedItem.getBonus()+"(元)");
+            sheetNameList.add(fixedItem.getBonus()+"分摊表");
             headList.add(fixedItem.getAllowance()+"(元)");
+            sheetNameList.add(fixedItem.getAllowance()+"分摊表");
             headList.add(fixedItem.getInsuranceOld()+"(元)");
+            sheetNameList.add(fixedItem.getInsuranceOld()+"分摊表");
             headList.add(fixedItem.getInsuranceMedical()+"(元)");
+            sheetNameList.add(fixedItem.getInsuranceMedical()+"分摊表");
             headList.add(fixedItem.getInsuranceLosejob()+"(元)");
+            sheetNameList.add(fixedItem.getInsuranceLosejob()+"分摊表");
             headList.add(fixedItem.getInsuranceInjury()+"(元)");
+            sheetNameList.add(fixedItem.getInsuranceInjury()+"分摊表");
             headList.add(fixedItem.getHouseFund()+"(元)");
+            sheetNameList.add(fixedItem.getHouseFund()+"分摊表");
 //            headList.add("其他(元)");
             for (FinanceTblcuscol col : cusColList) {
                 headList.add(col.getFieldName());
+                sheetNameList.add(col.getFieldName()+"分摊表");
             }
             //headList.add("总成本(元)");
             headList.add(MessageUtils.message("entry.totalCost")+"(元)");
@@ -1265,11 +1279,36 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
             if (cusColList.size() > 2) sumRow.add(totalField3.toString());
             sumRow.add(totalMoneyCost.toString());
             allList.add(sumRow);
+            System.out.println("fixedColCount:"+fixedColCount+", allList col size:"+allList.get(0).size());
+            System.out.println("第一行:");
+            allList.get(0).forEach(System.out::println);
+            System.out.println("第二行:");
+            allList.get(1).forEach(System.out::println);
             //生成excel文件导出
             //String fileName = yearMonth+(groupByCategory==0?"财务人员成本_":"财务项目分类成本_")+System.currentTimeMillis();
-            String fileName = yearMonth+(groupByCategory==0?MessageUtils.message("fileName.costFinancialPersonnel"):MessageUtils.message("fileName.proClassCost"))+System.currentTimeMillis();
+            String fileName = yearMonth+(groupByCategory == 0?MessageUtils.message("fileName.costFinancialPersonnel"):MessageUtils.message("fileName.proClassCost"))+System.currentTimeMillis();
             try {
-                return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName , allList, path);
+                if (groupByCategory == 0) {
+                    //一个总表和自定义字段多个sheet
+                    List[] multiSheetDataList = new ArrayList[sheetNameList.size()];
+                    multiSheetDataList[0] = allList;
+                    for (int i = 1; i < sheetNameList.size(); i++) {
+                        multiSheetDataList[i] = new ArrayList();
+                        for (List<String> rowData : allList) {
+                            List<String> newRow = new ArrayList<String>();
+                            //取前面固定的列
+//                            System.out.println("before: "+rowData.size());
+                            rowData.subList(0, fixedColCount).forEach(newRow::add);
+//                            System.out.println("after: "+rowData.size());
+                            //按当前表单的顺序,取数据部分
+                            newRow.add(rowData.get(fixedColCount + i - 1));
+                            multiSheetDataList[i].add(newRow);
+                        }
+                    }
+                    excelExportService.exportMultiSheetGeneralExcelByTitleAndList(wxCorpInfo,fileName , multiSheetDataList, path, sheetNameList.toArray(new String[0]));
+                } else {
+                    return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName , allList, path);
+                }
             } catch (Exception e) {
                 e.printStackTrace();
             }

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -415,6 +415,7 @@ entry.Participants=参与人
 entry.projectManager=项目经理
 entry.level=级别
 entry.department=所属部门
+entry.dept=部门
 entry.customer=客户
 entry.startData=开始日期
 entry.endDate=截止日期

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -415,6 +415,7 @@ entry.Participants=Participants
 entry.projectManager=project manager
 entry.level=level
 entry.department=Department
+entry.dept=Department
 entry.customer=customer
 entry.startData=Start Date
 entry.endDate=end date