|
@@ -62,6 +62,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
private ReportService reportService;
|
|
private ReportService reportService;
|
|
@Resource
|
|
@Resource
|
|
private UserService userService;
|
|
private UserService userService;
|
|
|
|
+ @Resource
|
|
|
|
+ private FinanceTblcuscolMapper financeTblcuscolMapper;
|
|
|
|
+
|
|
@Resource
|
|
@Resource
|
|
private ProjectMapper projectMapper;
|
|
private ProjectMapper projectMapper;
|
|
@Value(value = "${upload.path}")
|
|
@Value(value = "${upload.path}")
|
|
@@ -124,6 +127,8 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
userTimeList = reportMapper.getUserWorkingTimeByRange(companyId, startStr, endStr);
|
|
userTimeList = reportMapper.getUserWorkingTimeByRange(companyId, startStr, endStr);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ List<FinanceTblcuscol> cusColList = financeTblcuscolMapper.selectList(new QueryWrapper<FinanceTblcuscol>().eq("company_id", companyId));
|
|
|
|
+
|
|
//由于第一行需要指明列对应的标题
|
|
//由于第一行需要指明列对应的标题
|
|
int rowNum = sheet.getLastRowNum();
|
|
int rowNum = sheet.getLastRowNum();
|
|
for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
|
|
for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
|
|
@@ -135,7 +140,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
if (ExcelUtil.isRowEmpty(row)) {
|
|
if (ExcelUtil.isRowEmpty(row)) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- //姓名 工资 奖金 津贴 养老保险 医疗保险 失业保险 住房公积金 其他
|
|
|
|
|
|
+ //姓名 工资 奖金 津贴 养老保险 医疗保险 失业保险 住房公积金 其他; 可能有自定义的项
|
|
XSSFCell nameCell = row.getCell(0);
|
|
XSSFCell nameCell = row.getCell(0);
|
|
XSSFCell salaryCell = row.getCell(1);
|
|
XSSFCell salaryCell = row.getCell(1);
|
|
XSSFCell bonusCell = row.getCell(2);
|
|
XSSFCell bonusCell = row.getCell(2);
|
|
@@ -145,6 +150,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
XSSFCell inJobCell = row.getCell(6);
|
|
XSSFCell inJobCell = row.getCell(6);
|
|
XSSFCell houseFundCell = row.getCell(7);
|
|
XSSFCell houseFundCell = row.getCell(7);
|
|
XSSFCell otherCell = row.getCell(8);
|
|
XSSFCell otherCell = row.getCell(8);
|
|
|
|
+ XSSFCell field1 = cusColList.size() > 0?row.getCell(9):null;
|
|
|
|
+ XSSFCell field2 = cusColList.size() > 1?row.getCell(10):null;
|
|
|
|
+ XSSFCell field3 = cusColList.size() > 2?row.getCell(11):null;
|
|
|
|
|
|
|
|
|
|
nameCell.setCellType(CellType.STRING);
|
|
nameCell.setCellType(CellType.STRING);
|
|
@@ -156,6 +164,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
inJobCell.setCellType(CellType.STRING);
|
|
inJobCell.setCellType(CellType.STRING);
|
|
houseFundCell.setCellType(CellType.STRING);
|
|
houseFundCell.setCellType(CellType.STRING);
|
|
if (otherCell != null)otherCell.setCellType(CellType.STRING);
|
|
if (otherCell != null)otherCell.setCellType(CellType.STRING);
|
|
|
|
+ if (field1 != null)field1.setCellType(CellType.STRING);
|
|
|
|
+ if (field2 != null)field2.setCellType(CellType.STRING);
|
|
|
|
+ if (field3 != null)field3.setCellType(CellType.STRING);
|
|
|
|
|
|
String name = nameCell.getStringCellValue().trim().replaceAll("\\u00a0", "");
|
|
String name = nameCell.getStringCellValue().trim().replaceAll("\\u00a0", "");
|
|
Finance finance = new Finance();
|
|
Finance finance = new Finance();
|
|
@@ -234,6 +245,27 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
finance.setOthers(value);
|
|
finance.setOthers(value);
|
|
total = total.add(value);
|
|
total = total.add(value);
|
|
}
|
|
}
|
|
|
|
+ if (field1 != null) {
|
|
|
|
+ field1.setCellType(CellType.STRING);
|
|
|
|
+ String item = field1.getStringCellValue();
|
|
|
|
+ BigDecimal value = item != null ? new BigDecimal(item.trim().replaceAll("\\u00a0", "")) : BigDecimal.valueOf(0);
|
|
|
|
+ finance.setCustomField1(value);
|
|
|
|
+ total = total.add(value);
|
|
|
|
+ }
|
|
|
|
+ if (field2 != null) {
|
|
|
|
+ field2.setCellType(CellType.STRING);
|
|
|
|
+ String item = field2.getStringCellValue();
|
|
|
|
+ BigDecimal value = item != null ? new BigDecimal(item.trim().replaceAll("\\u00a0", "")) : BigDecimal.valueOf(0);
|
|
|
|
+ finance.setCustomField2(value);
|
|
|
|
+ total = total.add(value);
|
|
|
|
+ }
|
|
|
|
+ if (field3 != null) {
|
|
|
|
+ field3.setCellType(CellType.STRING);
|
|
|
|
+ String item = field3.getStringCellValue();
|
|
|
|
+ BigDecimal value = item != null ? new BigDecimal(item.trim().replaceAll("\\u00a0", "")) : BigDecimal.valueOf(0);
|
|
|
|
+ finance.setCustomField3(value);
|
|
|
|
+ total = total.add(value);
|
|
|
|
+ }
|
|
finance.setTotalCost(total);
|
|
finance.setTotalCost(total);
|
|
|
|
|
|
//如果需要更新员工成本
|
|
//如果需要更新员工成本
|
|
@@ -339,6 +371,8 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
try {
|
|
try {
|
|
Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
|
|
Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
|
|
|
|
+ final List<FinanceTblcuscol> cusColList = financeTblcuscolMapper.selectList(new QueryWrapper<FinanceTblcuscol>().eq("company_id", companyId));
|
|
|
|
+
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
double totalCostTime = 0;
|
|
double totalCostTime = 0;
|
|
BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
|
|
BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
|
|
@@ -350,6 +384,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
BigDecimal totalLoseJob = BigDecimal.valueOf(0);
|
|
BigDecimal totalLoseJob = BigDecimal.valueOf(0);
|
|
BigDecimal totalHouse = BigDecimal.valueOf(0);
|
|
BigDecimal totalHouse = BigDecimal.valueOf(0);
|
|
BigDecimal totalOther = BigDecimal.valueOf(0);
|
|
BigDecimal totalOther = BigDecimal.valueOf(0);
|
|
|
|
+ BigDecimal totalField1 = cusColList.size() > 0?BigDecimal.valueOf(0):null;
|
|
|
|
+ BigDecimal totalField2 = cusColList.size() > 1?BigDecimal.valueOf(0):null;
|
|
|
|
+ BigDecimal totalField3 = cusColList.size() > 2?BigDecimal.valueOf(0):null;
|
|
|
|
|
|
List<String> headList = new ArrayList<String>();
|
|
List<String> headList = new ArrayList<String>();
|
|
headList.add("项目");
|
|
headList.add("项目");
|
|
@@ -363,6 +400,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
headList.add("失业保险(元)");
|
|
headList.add("失业保险(元)");
|
|
headList.add("住房公积金(元)");
|
|
headList.add("住房公积金(元)");
|
|
headList.add("其他(元)");
|
|
headList.add("其他(元)");
|
|
|
|
+ for (FinanceTblcuscol col : cusColList) {
|
|
|
|
+ headList.add(col.getFieldName());
|
|
|
|
+ }
|
|
headList.add("总成本(元)");
|
|
headList.add("总成本(元)");
|
|
List<List<String>> allList = new ArrayList<List<String>>();
|
|
List<List<String>> allList = new ArrayList<List<String>>();
|
|
allList.add(headList);
|
|
allList.add(headList);
|
|
@@ -413,6 +453,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
BigDecimal loseJob = new BigDecimal(0);
|
|
BigDecimal loseJob = new BigDecimal(0);
|
|
BigDecimal house = new BigDecimal(0);
|
|
BigDecimal house = new BigDecimal(0);
|
|
BigDecimal other = new BigDecimal(0);
|
|
BigDecimal other = new BigDecimal(0);
|
|
|
|
+ BigDecimal field1Item = new BigDecimal(0);
|
|
|
|
+ BigDecimal field2Item = new BigDecimal(0);
|
|
|
|
+ BigDecimal field3Item = new BigDecimal(0);
|
|
if (first.isPresent()) {
|
|
if (first.isPresent()) {
|
|
Finance userFinance = first.get();
|
|
Finance userFinance = first.get();
|
|
cost = userFinance.getTotalCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
cost = userFinance.getTotalCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
@@ -428,6 +471,15 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
} else {
|
|
} else {
|
|
other = userFinance.getOthers().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
other = userFinance.getOthers().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
|
|
+ if (userFinance.getCustomField1() != null) {
|
|
|
|
+ field1Item = userFinance.getCustomField1().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
|
|
+ if (userFinance.getCustomField2() != null) {
|
|
|
|
+ field2Item = userFinance.getCustomField2().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
|
|
+ if (userFinance.getCustomField3() != null) {
|
|
|
|
+ field3Item = userFinance.getCustomField3().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
System.out.println("财务数据中未找到用户:"+creatorId);
|
|
System.out.println("财务数据中未找到用户:"+creatorId);
|
|
|
|
|
|
@@ -444,6 +496,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
item.loseJob = item.loseJob.add(loseJob);
|
|
item.loseJob = item.loseJob.add(loseJob);
|
|
item.house = item.house.add(house);
|
|
item.house = item.house.add(house);
|
|
item.other = item.other.add(other);
|
|
item.other = item.other.add(other);
|
|
|
|
+ item.field1 = item.field1.add(field1Item);
|
|
|
|
+ item.field2 = item.field2.add(field2Item);
|
|
|
|
+ item.field3 = item.field3.add(field3Item);
|
|
} else {
|
|
} else {
|
|
item = new ProjectSumItem();
|
|
item = new ProjectSumItem();
|
|
pList.add(item);
|
|
pList.add(item);
|
|
@@ -458,6 +513,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
item.loseJob = loseJob;
|
|
item.loseJob = loseJob;
|
|
item.house = house;
|
|
item.house = house;
|
|
item.other = other;
|
|
item.other = other;
|
|
|
|
+ item.field1 = field1Item;
|
|
|
|
+ item.field2 = field2Item;
|
|
|
|
+ item.field3 = field3Item;
|
|
}
|
|
}
|
|
totalMoneyCost = totalMoneyCost.add(cost);
|
|
totalMoneyCost = totalMoneyCost.add(cost);
|
|
totalSalary = totalSalary.add(salary);
|
|
totalSalary = totalSalary.add(salary);
|
|
@@ -468,6 +526,15 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
totalLoseJob = totalLoseJob.add(loseJob);
|
|
totalLoseJob = totalLoseJob.add(loseJob);
|
|
totalHouse = totalHouse.add(house);
|
|
totalHouse = totalHouse.add(house);
|
|
totalOther = totalOther.add(other);
|
|
totalOther = totalOther.add(other);
|
|
|
|
+ if (totalField1 != null) {
|
|
|
|
+ totalField1 = totalField1.add(field1Item);
|
|
|
|
+ }
|
|
|
|
+ if (totalField2 != null) {
|
|
|
|
+ totalField2 = totalField2.add(field2Item);
|
|
|
|
+ }
|
|
|
|
+ if (totalField3 != null) {
|
|
|
|
+ totalField3 = totalField3.add(field3Item);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -481,7 +548,15 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
totalLoseJob = totalLoseJob.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
totalLoseJob = totalLoseJob.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
totalHouse = totalHouse.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
totalHouse = totalHouse.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
totalOther = totalOther.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
totalOther = totalOther.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
-
|
|
|
|
|
|
+ if (totalField1 != null) {
|
|
|
|
+ totalField1 = totalField1.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
|
|
+ if (totalField2 != null) {
|
|
|
|
+ totalField2 = totalField2.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
|
|
+ if (totalField3 != null) {
|
|
|
|
+ totalField3 = totalField3.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
pList.forEach(p->{
|
|
pList.forEach(p->{
|
|
p.cost = p.cost.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
p.cost = p.cost.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
p.salary = p.salary.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
p.salary = p.salary.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
@@ -492,6 +567,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
p.loseJob = p.loseJob.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
p.loseJob = p.loseJob.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
p.house = p.house.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
p.house = p.house.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
p.other = p.other.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
p.other = p.other.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.field1 = p.field1.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.field2 = p.field2.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.field3 = p.field3.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
//组装写入excel文件的数据,从项目开始,项目下面挂成员
|
|
//组装写入excel文件的数据,从项目开始,项目下面挂成员
|
|
List<String> rowData = new ArrayList<String>();
|
|
List<String> rowData = new ArrayList<String>();
|
|
@@ -506,6 +584,15 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
rowData.add(p.loseJob.toPlainString());
|
|
rowData.add(p.loseJob.toPlainString());
|
|
rowData.add(p.house.toPlainString());
|
|
rowData.add(p.house.toPlainString());
|
|
rowData.add(p.other.toPlainString());
|
|
rowData.add(p.other.toPlainString());
|
|
|
|
+ if (cusColList.size() > 0) {
|
|
|
|
+ rowData.add(p.field1.toPlainString());
|
|
|
|
+ }
|
|
|
|
+ if (cusColList.size() > 1) {
|
|
|
|
+ rowData.add(p.field2.toPlainString());
|
|
|
|
+ }
|
|
|
|
+ if (cusColList.size() > 2) {
|
|
|
|
+ rowData.add(p.field3.toPlainString());
|
|
|
|
+ }
|
|
rowData.add(p.cost.toPlainString());
|
|
rowData.add(p.cost.toPlainString());
|
|
allList.add(rowData);
|
|
allList.add(rowData);
|
|
|
|
|
|
@@ -534,7 +621,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
BigDecimal loseJob = userFinance.getInsuranceLosejob().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal loseJob = userFinance.getInsuranceLosejob().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal house = userFinance.getHouseFund().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal house = userFinance.getHouseFund().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal other = userFinance.getOthers() == null?new BigDecimal(0):userFinance.getOthers().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal other = userFinance.getOthers() == null?new BigDecimal(0):userFinance.getOthers().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
-
|
|
|
|
|
|
+ BigDecimal field1 = userFinance.getCustomField1() == null? new BigDecimal(0):userFinance.getCustomField1().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal field2 = userFinance.getCustomField2() == null? new BigDecimal(0):userFinance.getCustomField2().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal field3 = userFinance.getCustomField3() == null? new BigDecimal(0):userFinance.getCustomField3().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
membRowData.add(us.getName());
|
|
membRowData.add(us.getName());
|
|
membRowData.add(workingTime+"");
|
|
membRowData.add(workingTime+"");
|
|
membRowData.add(salary.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
membRowData.add(salary.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
@@ -545,6 +634,16 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
membRowData.add(loseJob.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
membRowData.add(loseJob.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
membRowData.add(house.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
membRowData.add(house.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
membRowData.add(other.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
membRowData.add(other.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ //自定义字段
|
|
|
|
+ if (cusColList.size() > 0) {
|
|
|
|
+ membRowData.add(field1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ }
|
|
|
|
+ if (cusColList.size() > 1) {
|
|
|
|
+ membRowData.add(field2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ }
|
|
|
|
+ if (cusColList.size() > 2) {
|
|
|
|
+ membRowData.add(field3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ }
|
|
membRowData.add(cost.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
membRowData.add(cost.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
allList.add(membRowData);
|
|
allList.add(membRowData);
|
|
}
|
|
}
|
|
@@ -566,7 +665,9 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
sumRow.add(totalHouse.toString());
|
|
sumRow.add(totalHouse.toString());
|
|
sumRow.add(totalOther.toString());
|
|
sumRow.add(totalOther.toString());
|
|
sumRow.add(totalMoneyCost.toString());
|
|
sumRow.add(totalMoneyCost.toString());
|
|
-
|
|
|
|
|
|
+ if (cusColList.size() > 0) sumRow.add(totalField1.toString());
|
|
|
|
+ if (cusColList.size() > 1) sumRow.add(totalField2.toString());
|
|
|
|
+ if (cusColList.size() > 2) sumRow.add(totalField3.toString());
|
|
allList.add(sumRow);
|
|
allList.add(sumRow);
|
|
//生成excel文件导出
|
|
//生成excel文件导出
|
|
String fileName = "财务人员成本_"+System.currentTimeMillis();
|
|
String fileName = "财务人员成本_"+System.currentTimeMillis();
|