|
@@ -441,12 +441,12 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public HttpRespMsg exportData(String yearMonth, Boolean assignNoProUser, HttpServletRequest request) {
|
|
|
|
|
|
+ public HttpRespMsg exportData(Integer groupByCategory, String yearMonth, Boolean assignNoProUser, HttpServletRequest request) {
|
|
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));
|
|
final List<FinanceTblcuscol> cusColList = financeTblcuscolMapper.selectList(new QueryWrapper<FinanceTblcuscol>().eq("company_id", companyId));
|
|
-
|
|
|
|
|
|
+ List<Project> allProjects = projectMapper.selectList(new QueryWrapper<Project>().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);
|
|
@@ -464,18 +464,15 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
BigDecimal totalField3 = cusColList.size() > 2?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("项目名称");
|
|
|
|
- headList.add("人员");
|
|
|
|
- headList.add("工时(h)");
|
|
|
|
-// headList.add("工资(元)");
|
|
|
|
-// headList.add("奖金(元)");
|
|
|
|
-// headList.add("津贴(元)");
|
|
|
|
-// headList.add("养老保险(元)");
|
|
|
|
-// headList.add("医疗保险(元)");
|
|
|
|
-// headList.add("失业保险(元)");
|
|
|
|
-// headList.add("工伤保险(元)");
|
|
|
|
-// headList.add("住房公积金(元)");
|
|
|
|
|
|
+ if (groupByCategory == 0) {
|
|
|
|
+ headList.add("项目编号");
|
|
|
|
+ headList.add("项目名称");
|
|
|
|
+ headList.add("人员");
|
|
|
|
+ headList.add("工时(h)");
|
|
|
|
+ } else {
|
|
|
|
+ headList.add("项目分类");
|
|
|
|
+ }
|
|
|
|
+
|
|
FinanceFixedcolname fixedItem = financeFixedcolnameService.getFixed(companyId);
|
|
FinanceFixedcolname fixedItem = financeFixedcolnameService.getFixed(companyId);
|
|
headList.add(fixedItem.getMonthCost()+"(元)");
|
|
headList.add(fixedItem.getMonthCost()+"(元)");
|
|
headList.add(fixedItem.getBonus()+"(元)");
|
|
headList.add(fixedItem.getBonus()+"(元)");
|
|
@@ -541,6 +538,20 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
|
|
|
ProjectPercentage percentage = null;
|
|
ProjectPercentage percentage = null;
|
|
List<FinanceProjects> financeProjects = financeProjectsMapper.selectList(new QueryWrapper<FinanceProjects>().eq("company_id", companyId).eq("ymonth", yearMonth));
|
|
List<FinanceProjects> financeProjects = financeProjectsMapper.selectList(new QueryWrapper<FinanceProjects>().eq("company_id", companyId).eq("ymonth", yearMonth));
|
|
|
|
+ //填充项目分类
|
|
|
|
+ financeProjects.forEach(f->{
|
|
|
|
+ Optional<Project> curP = allProjects.stream().filter(p->p.getId().equals(f.getProjectId())).findFirst();
|
|
|
|
+ if (curP.isPresent()) {
|
|
|
|
+ String name = curP.get().getCategoryName();
|
|
|
|
+ if (name == null) name = "其他";
|
|
|
|
+ f.setCategoryName(name);
|
|
|
|
+ } else {
|
|
|
|
+ httpRespMsg.setError("项目["+f.getProjectName()+"]已不存在");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ if (httpRespMsg.code.equals("error")) {
|
|
|
|
+ return httpRespMsg;
|
|
|
|
+ }
|
|
//无项目工时人员的分配比例设置
|
|
//无项目工时人员的分配比例设置
|
|
List<Map> noPUserDataList = new ArrayList<>();
|
|
List<Map> noPUserDataList = new ArrayList<>();
|
|
if (assignNoProUser != null && assignNoProUser && noProjectUser.size() > 0) {
|
|
if (assignNoProUser != null && assignNoProUser && noProjectUser.size() > 0) {
|
|
@@ -571,10 +582,10 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
userCostMap.put("project", f.getProjectId());
|
|
userCostMap.put("project", f.getProjectId());
|
|
userCostMap.put("projectId", f.getProjectId());
|
|
userCostMap.put("projectId", f.getProjectId());
|
|
userCostMap.put("projectCode", f.getProjectCode());
|
|
userCostMap.put("projectCode", f.getProjectCode());
|
|
|
|
+ userCostMap.put("categoryName", f.getCategoryName());
|
|
noPUserDataList.add(userCostMap);
|
|
noPUserDataList.add(userCostMap);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
-
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -582,6 +593,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
for (Map<String, Object> map : projectTimeList) {
|
|
for (Map<String, Object> map : projectTimeList) {
|
|
Integer projectId = (Integer) map.get("projectId");
|
|
Integer projectId = (Integer) map.get("projectId");
|
|
String curProjectCode = (String) map.get("projectCode");
|
|
String curProjectCode = (String) map.get("projectCode");
|
|
|
|
+ String categoryName = (String) map.get("categoryName");
|
|
String curProject = (String) map.get("project");
|
|
String curProject = (String) map.get("project");
|
|
String creatorId = (String) map.get("creatorId");
|
|
String creatorId = (String) map.get("creatorId");
|
|
Optional<Finance> first = finances.stream().filter(f -> f.getUserId().equals(creatorId)).findFirst();
|
|
Optional<Finance> first = finances.stream().filter(f -> f.getUserId().equals(creatorId)).findFirst();
|
|
@@ -595,7 +607,6 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
BigDecimal loseJob = new BigDecimal(0);
|
|
BigDecimal loseJob = new BigDecimal(0);
|
|
BigDecimal injury = new BigDecimal(0);
|
|
BigDecimal injury = new BigDecimal(0);
|
|
BigDecimal house = new BigDecimal(0);
|
|
BigDecimal house = new BigDecimal(0);
|
|
-// BigDecimal other = new BigDecimal(0);
|
|
|
|
BigDecimal field1Item = new BigDecimal(0);
|
|
BigDecimal field1Item = new BigDecimal(0);
|
|
BigDecimal field2Item = new BigDecimal(0);
|
|
BigDecimal field2Item = new BigDecimal(0);
|
|
BigDecimal field3Item = new BigDecimal(0);
|
|
BigDecimal field3Item = new BigDecimal(0);
|
|
@@ -610,11 +621,6 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
loseJob = userFinance.getInsuranceLosejob().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
loseJob = userFinance.getInsuranceLosejob().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
injury = userFinance.getInsuranceInjury().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
injury = userFinance.getInsuranceInjury().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
house = userFinance.getHouseFund().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
house = userFinance.getHouseFund().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
-// if (userFinance.getOthers() == null) {
|
|
|
|
-// other = new BigDecimal(0);
|
|
|
|
-// } else {
|
|
|
|
-// other = userFinance.getOthers().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
-// }
|
|
|
|
if (userFinance.getCustomField1() != null) {
|
|
if (userFinance.getCustomField1() != null) {
|
|
field1Item = userFinance.getCustomField1().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
field1Item = userFinance.getCustomField1().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
@@ -650,6 +656,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
item.project = curProject;
|
|
item.project = curProject;
|
|
item.projectId = projectId;
|
|
item.projectId = projectId;
|
|
item.projectCode = curProjectCode;
|
|
item.projectCode = curProjectCode;
|
|
|
|
+ item.categoryName = categoryName;
|
|
item.workingTime = workingTime;
|
|
item.workingTime = workingTime;
|
|
item.cost = cost;
|
|
item.cost = cost;
|
|
item.salary = salary;
|
|
item.salary = salary;
|
|
@@ -660,7 +667,6 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
item.loseJob = loseJob;
|
|
item.loseJob = loseJob;
|
|
item.injury = injury;
|
|
item.injury = injury;
|
|
item.house = house;
|
|
item.house = house;
|
|
-// item.other = other;
|
|
|
|
item.field1 = field1Item;
|
|
item.field1 = field1Item;
|
|
item.field2 = field2Item;
|
|
item.field2 = field2Item;
|
|
item.field3 = field3Item;
|
|
item.field3 = field3Item;
|
|
@@ -700,6 +706,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
ProjectSumItem npItem = new ProjectSumItem();
|
|
ProjectSumItem npItem = new ProjectSumItem();
|
|
npItem.project = np.getProjectName();
|
|
npItem.project = np.getProjectName();
|
|
npItem.projectCode = np.getProjectCode();
|
|
npItem.projectCode = np.getProjectCode();
|
|
|
|
+ npItem.categoryName = np.getCategoryName();
|
|
npItem.projectId = np.getProjectId();
|
|
npItem.projectId = np.getProjectId();
|
|
//初始设置为0
|
|
//初始设置为0
|
|
npItem.cost = new BigDecimal(0);
|
|
npItem.cost = new BigDecimal(0);
|
|
@@ -735,7 +742,6 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
p.loseJob = p.loseJob.add(newFinance.getInsuranceLosejob());
|
|
p.loseJob = p.loseJob.add(newFinance.getInsuranceLosejob());
|
|
p.injury = p.injury.add(newFinance.getInsuranceInjury());
|
|
p.injury = p.injury.add(newFinance.getInsuranceInjury());
|
|
p.house = p.house.add(newFinance.getHouseFund());
|
|
p.house = p.house.add(newFinance.getHouseFund());
|
|
-// item.other = item.other.add(other);
|
|
|
|
p.field1 = p.field1.add(newFinance.getCustomField1());
|
|
p.field1 = p.field1.add(newFinance.getCustomField1());
|
|
p.field2 = p.field2.add(newFinance.getCustomField2());
|
|
p.field2 = p.field2.add(newFinance.getCustomField2());
|
|
p.field3 = p.field3.add(newFinance.getCustomField3());
|
|
p.field3 = p.field3.add(newFinance.getCustomField3());
|
|
@@ -783,216 +789,232 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
if (totalField3 != null) {
|
|
if (totalField3 != null) {
|
|
totalField3 = totalField3.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
totalField3 = totalField3.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
-// if (assignNoProUser != null && assignNoProUser) {
|
|
|
|
- //按比例分摊
|
|
|
|
-
|
|
|
|
- //均摊各项成本到项目
|
|
|
|
-// for (Finance npu : noProjectUser) {
|
|
|
|
-// pList.forEach(p->{
|
|
|
|
-// p.cost = p.cost.add(npu.getTotalCost().divide(new BigDecimal(pList.size())));
|
|
|
|
-// p.salary = p.salary.add(npu.getMonthCost().divide(new BigDecimal(pList.size())));
|
|
|
|
-// p.bonus = p.bonus.add(npu.getBonus().divide(new BigDecimal(pList.size())));
|
|
|
|
-// p.allowance = p.allowance.add(npu.getAllowance().divide(new BigDecimal(pList.size())));
|
|
|
|
-// p.old = p.old.add(npu.getInsuranceOld().divide(new BigDecimal(pList.size())));
|
|
|
|
-// p.medical = p.medical.add(npu.getInsuranceMedical().divide(new BigDecimal(pList.size())));
|
|
|
|
-// p.loseJob = p.loseJob.add(npu.getInsuranceLosejob().divide(new BigDecimal(pList.size())));
|
|
|
|
-// p.injury = p.injury.add(npu.getInsuranceInjury().divide(new BigDecimal(pList.size())));
|
|
|
|
-// p.house = p.house.add(npu.getHouseFund().divide(new BigDecimal(pList.size())));
|
|
|
|
-// //处理自定义字段的数据累加
|
|
|
|
-// if (npu.getCustomField1() != null) {
|
|
|
|
-// p.field1 = p.field1.add(npu.getCustomField1().divide(new BigDecimal(pList.size())));
|
|
|
|
-// }
|
|
|
|
-// if (npu.getCustomField2() != null) {
|
|
|
|
-// p.field2 = p.field2.add(npu.getCustomField2().divide(new BigDecimal(pList.size())));
|
|
|
|
-// }
|
|
|
|
-// if (npu.getCustomField3() != null) {
|
|
|
|
-// p.field3 = p.field3.add(npu.getCustomField3().divide(new BigDecimal(pList.size())));
|
|
|
|
-// }
|
|
|
|
-// });
|
|
|
|
-// totalMoneyCost = totalMoneyCost.add(npu.getTotalCost());
|
|
|
|
-// totalSalary = totalSalary.add(npu.getMonthCost());
|
|
|
|
-// totalBonus = totalBonus.add(npu.getBonus());
|
|
|
|
-// totalAllowance = totalAllowance.add(npu.getAllowance());
|
|
|
|
-// totalOld = totalOld.add(npu.getInsuranceOld());
|
|
|
|
-// totalMedical = totalMedical.add(npu.getInsuranceMedical());
|
|
|
|
-// totalLoseJob = totalLoseJob.add(npu.getInsuranceLosejob());
|
|
|
|
-// totalInjury = totalInjury.add(npu.getInsuranceInjury());
|
|
|
|
-// totalHouse = totalHouse.add(npu.getHouseFund());
|
|
|
|
-//// totalOther = totalOther.add(other);
|
|
|
|
-// if (totalField1 != null && npu.getCustomField1() != null) {
|
|
|
|
-// totalField1 = totalField1.add(npu.getTotalCost());
|
|
|
|
-// }
|
|
|
|
-// if (totalField2 != null && npu.getCustomField2() != null) {
|
|
|
|
-// totalField2 = totalField2.add(npu.getCustomField2());
|
|
|
|
-// }
|
|
|
|
-// if (totalField3 != null && npu.getCustomField3() != null) {
|
|
|
|
-// totalField3 = totalField3.add(npu.getCustomField3());
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
- pList.forEach(p->{
|
|
|
|
- p.cost = p.cost.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- p.salary = p.salary.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- p.bonus = p.bonus.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- p.allowance = p.allowance.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- p.old = p.old.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- p.medical = p.medical.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- p.loseJob = p.loseJob.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- p.injury = p.injury.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.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文件的数据,从项目开始,项目下面挂成员
|
|
|
|
- List<String> rowData = new ArrayList<String>();
|
|
|
|
- rowData.add(p.projectCode);
|
|
|
|
- rowData.add(p.project);
|
|
|
|
- rowData.add("");
|
|
|
|
- rowData.add(p.workingTime+"");
|
|
|
|
- rowData.add(p.salary.toPlainString());
|
|
|
|
- rowData.add(p.bonus.toPlainString());
|
|
|
|
- rowData.add(p.allowance.toPlainString());
|
|
|
|
- rowData.add(p.old.toPlainString());
|
|
|
|
- rowData.add(p.medical.toPlainString());
|
|
|
|
- rowData.add(p.loseJob.toPlainString());
|
|
|
|
- rowData.add(p.injury.toPlainString());
|
|
|
|
- rowData.add(p.house.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());
|
|
|
|
- allList.add(rowData);
|
|
|
|
-
|
|
|
|
- //获取成员
|
|
|
|
- for (Map<String, Object> membMap : projectTimeList) {
|
|
|
|
- if (membMap.get("project").equals(p.project)) {
|
|
|
|
- //匹配到项目了
|
|
|
|
- List<String> membRowData = new ArrayList<String>();
|
|
|
|
- membRowData.add("");
|
|
|
|
- membRowData.add("");
|
|
|
|
- Double workingTime = (Double) membMap.get("workingTime");
|
|
|
|
- String creatorId = (String) membMap.get("creatorId");
|
|
|
|
- User us = userList.stream().filter(u->u.getId().equals(creatorId)).findFirst().get();
|
|
|
|
- Optional<Finance> first = finances.stream().filter(f -> f.getUserId().equals(creatorId)).findFirst();
|
|
|
|
- if (!first.isPresent()) {
|
|
|
|
- logger.info("用户["+us.getName()+"]在财务报表中不存在,请重新导入");
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- Finance userFinance = first.get();
|
|
|
|
-
|
|
|
|
- BigDecimal cost = userFinance.getTotalCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- BigDecimal salary = userFinance.getMonthCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- BigDecimal bonus = userFinance.getBonus().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- BigDecimal allowance = userFinance.getAllowance().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- BigDecimal old = userFinance.getInsuranceOld().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- BigDecimal medical = userFinance.getInsuranceMedical().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 injury = userFinance.getInsuranceInjury().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 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(workingTime+"");
|
|
|
|
- membRowData.add(salary.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(bonus.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(allowance.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(old.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(medical.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(loseJob.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(injury.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());
|
|
|
|
- //自定义字段
|
|
|
|
- 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());
|
|
|
|
|
|
+ //按项目名称分组
|
|
|
|
+ if (groupByCategory == 0) {
|
|
|
|
+ pList.forEach(p->{
|
|
|
|
+ p.cost = p.cost.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.salary = p.salary.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.bonus = p.bonus.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.allowance = p.allowance.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.old = p.old.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.medical = p.medical.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.loseJob = p.loseJob.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.injury = p.injury.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.house = p.house.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文件的数据,从项目开始,项目下面挂成员
|
|
|
|
+ List<String> rowData = new ArrayList<String>();
|
|
|
|
+ rowData.add(p.projectCode);
|
|
|
|
+ rowData.add(p.project);
|
|
|
|
+ rowData.add("");
|
|
|
|
+ rowData.add(p.workingTime+"");
|
|
|
|
+ rowData.add(p.salary.toPlainString());
|
|
|
|
+ rowData.add(p.bonus.toPlainString());
|
|
|
|
+ rowData.add(p.allowance.toPlainString());
|
|
|
|
+ rowData.add(p.old.toPlainString());
|
|
|
|
+ rowData.add(p.medical.toPlainString());
|
|
|
|
+ rowData.add(p.loseJob.toPlainString());
|
|
|
|
+ rowData.add(p.injury.toPlainString());
|
|
|
|
+ rowData.add(p.house.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());
|
|
|
|
+ allList.add(rowData);
|
|
|
|
+
|
|
|
|
+ //获取成员
|
|
|
|
+ for (Map<String, Object> membMap : projectTimeList) {
|
|
|
|
+ if (membMap.get("project").equals(p.project)) {
|
|
|
|
+ //匹配到项目了
|
|
|
|
+ List<String> membRowData = new ArrayList<String>();
|
|
|
|
+ membRowData.add("");
|
|
|
|
+ membRowData.add("");
|
|
|
|
+ Double workingTime = (Double) membMap.get("workingTime");
|
|
|
|
+ String creatorId = (String) membMap.get("creatorId");
|
|
|
|
+ User us = userList.stream().filter(u->u.getId().equals(creatorId)).findFirst().get();
|
|
|
|
+ Optional<Finance> first = finances.stream().filter(f -> f.getUserId().equals(creatorId)).findFirst();
|
|
|
|
+ if (!first.isPresent()) {
|
|
|
|
+ logger.info("用户["+us.getName()+"]在财务报表中不存在,请重新导入");
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ Finance userFinance = first.get();
|
|
|
|
+
|
|
|
|
+ BigDecimal cost = userFinance.getTotalCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal salary = userFinance.getMonthCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal bonus = userFinance.getBonus().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal allowance = userFinance.getAllowance().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal old = userFinance.getInsuranceOld().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal medical = userFinance.getInsuranceMedical().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 injury = userFinance.getInsuranceInjury().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 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(workingTime+"");
|
|
|
|
+ membRowData.add(salary.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(bonus.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(allowance.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(old.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(medical.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(loseJob.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(injury.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(house.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());
|
|
|
|
+ allList.add(membRowData);
|
|
}
|
|
}
|
|
- membRowData.add(cost.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- allList.add(membRowData);
|
|
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- //无项目人员成本
|
|
|
|
- if (assignNoProUser != null && assignNoProUser) {
|
|
|
|
- for (Finance npu : noProjectUser) {
|
|
|
|
- List<String> membRowData = new ArrayList<String>();
|
|
|
|
- membRowData.add("");
|
|
|
|
- membRowData.add("");
|
|
|
|
- Double workingTime = new Double(0);
|
|
|
|
- Finance userFinance = npu;
|
|
|
|
- Optional<Map> op = noPUserDataList.stream().filter(map->((Integer)map.get("projectId")).equals(p.projectId) && ((String)map.get("creatorId")).equals(npu.getUserId())).findFirst();
|
|
|
|
- if (op.isPresent()) {
|
|
|
|
- Map percentMap = op.get();
|
|
|
|
- double percent = (double)percentMap.get("percent");
|
|
|
|
- if (percent > 0) {
|
|
|
|
- //各项收入按比例计算,累加到当前项目上
|
|
|
|
- Finance newFinance = Finance.getByPercent(npu, percent);
|
|
|
|
-
|
|
|
|
- BigDecimal cost = newFinance.getTotalCost();
|
|
|
|
- BigDecimal salary = newFinance.getMonthCost();
|
|
|
|
- BigDecimal bonus = newFinance.getBonus();
|
|
|
|
- BigDecimal allowance = newFinance.getAllowance();
|
|
|
|
- BigDecimal old = newFinance.getInsuranceOld();
|
|
|
|
- BigDecimal medical = newFinance.getInsuranceMedical();
|
|
|
|
- BigDecimal loseJob = newFinance.getInsuranceLosejob();
|
|
|
|
- BigDecimal injury = newFinance.getInsuranceInjury();
|
|
|
|
- BigDecimal house = newFinance.getHouseFund();
|
|
|
|
- BigDecimal field1 = newFinance.getCustomField1() == null? new BigDecimal(0):newFinance.getCustomField1();
|
|
|
|
- BigDecimal field2 = newFinance.getCustomField2() == null? new BigDecimal(0):newFinance.getCustomField2();
|
|
|
|
- BigDecimal field3 = newFinance.getCustomField3() == null? new BigDecimal(0):newFinance.getCustomField3();
|
|
|
|
-
|
|
|
|
- membRowData.add(npu.getName());
|
|
|
|
- membRowData.add(workingTime+"");
|
|
|
|
- membRowData.add(salary.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(bonus.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(allowance.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(old.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(medical.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(loseJob.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(injury.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- membRowData.add(house.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());
|
|
|
|
|
|
+ //无项目人员成本
|
|
|
|
+ if (assignNoProUser != null && assignNoProUser) {
|
|
|
|
+ for (Finance npu : noProjectUser) {
|
|
|
|
+ List<String> membRowData = new ArrayList<String>();
|
|
|
|
+ membRowData.add("");
|
|
|
|
+ membRowData.add("");
|
|
|
|
+ Double workingTime = new Double(0);
|
|
|
|
+ Finance userFinance = npu;
|
|
|
|
+ Optional<Map> op = noPUserDataList.stream().filter(map->((Integer)map.get("projectId")).equals(p.projectId) && ((String)map.get("creatorId")).equals(npu.getUserId())).findFirst();
|
|
|
|
+ if (op.isPresent()) {
|
|
|
|
+ Map percentMap = op.get();
|
|
|
|
+ double percent = (double)percentMap.get("percent");
|
|
|
|
+ if (percent > 0) {
|
|
|
|
+ //各项收入按比例计算,累加到当前项目上
|
|
|
|
+ Finance newFinance = Finance.getByPercent(npu, percent);
|
|
|
|
+
|
|
|
|
+ BigDecimal cost = newFinance.getTotalCost();
|
|
|
|
+ BigDecimal salary = newFinance.getMonthCost();
|
|
|
|
+ BigDecimal bonus = newFinance.getBonus();
|
|
|
|
+ BigDecimal allowance = newFinance.getAllowance();
|
|
|
|
+ BigDecimal old = newFinance.getInsuranceOld();
|
|
|
|
+ BigDecimal medical = newFinance.getInsuranceMedical();
|
|
|
|
+ BigDecimal loseJob = newFinance.getInsuranceLosejob();
|
|
|
|
+ BigDecimal injury = newFinance.getInsuranceInjury();
|
|
|
|
+ BigDecimal house = newFinance.getHouseFund();
|
|
|
|
+ BigDecimal field1 = newFinance.getCustomField1() == null? new BigDecimal(0):newFinance.getCustomField1();
|
|
|
|
+ BigDecimal field2 = newFinance.getCustomField2() == null? new BigDecimal(0):newFinance.getCustomField2();
|
|
|
|
+ BigDecimal field3 = newFinance.getCustomField3() == null? new BigDecimal(0):newFinance.getCustomField3();
|
|
|
|
+
|
|
|
|
+ membRowData.add(npu.getName());
|
|
|
|
+ membRowData.add(workingTime+"");
|
|
|
|
+ membRowData.add(salary.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(bonus.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(allowance.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(old.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(medical.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(loseJob.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(injury.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
+ membRowData.add(house.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());
|
|
|
|
+ allList.add(membRowData);
|
|
}
|
|
}
|
|
- membRowData.add(cost.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
|
- allList.add(membRowData);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ //按项目分类分组,需要重组pList为一个项目分组一条
|
|
|
|
+ Map<String, List<ProjectSumItem>> categoryMap = pList.stream().collect(Collectors.groupingBy(ProjectSumItem::getCategoryName));
|
|
|
|
+ Iterator<String> keySet = categoryMap.keySet().iterator();
|
|
|
|
+ pList.clear();
|
|
|
|
+ while (keySet.hasNext()) {
|
|
|
|
+ String cateName = keySet.next();
|
|
|
|
+ List<ProjectSumItem> curList = categoryMap.get(cateName);
|
|
|
|
+ ProjectSumItem p = curList.get(0);
|
|
|
|
+ for (int i=1; i<curList.size(); i++) {
|
|
|
|
+ ProjectSumItem nextItem = curList.get(i);
|
|
|
|
+ p.cost = p.cost.add(nextItem.cost);
|
|
|
|
+ p.salary = p.salary.add(nextItem.salary);
|
|
|
|
+ p.bonus = p.bonus.add(nextItem.bonus);
|
|
|
|
+ p.allowance = p.allowance.add(nextItem.allowance);
|
|
|
|
+ p.old = p.old.add(nextItem.old);
|
|
|
|
+ p.medical = p.medical.add(nextItem.medical);
|
|
|
|
+ p.loseJob = p.loseJob.add(nextItem.loseJob);
|
|
|
|
+ p.injury = p.injury.add(nextItem.injury);
|
|
|
|
+ p.house = p.house.add(nextItem.house);
|
|
|
|
+ p.field1 = p.field1.add(nextItem.field1);
|
|
|
|
+ p.field2 = p.field2.add(nextItem.field2);
|
|
|
|
+ p.field3 = p.field3.add(nextItem.field3);
|
|
|
|
+ }
|
|
|
|
+ //添加按分类汇总的项
|
|
|
|
+ pList.add(p);
|
|
}
|
|
}
|
|
- });
|
|
|
|
|
|
+ pList.forEach(p->{
|
|
|
|
+ p.cost = p.cost.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.salary = p.salary.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.bonus = p.bonus.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.allowance = p.allowance.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.old = p.old.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.medical = p.medical.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.loseJob = p.loseJob.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.injury = p.injury.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ p.house = p.house.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);
|
|
|
|
+
|
|
|
|
+ List<String> rowData = new ArrayList<String>();
|
|
|
|
+ rowData.add(p.categoryName);
|
|
|
|
+ rowData.add(p.salary.toPlainString());
|
|
|
|
+ rowData.add(p.bonus.toPlainString());
|
|
|
|
+ rowData.add(p.allowance.toPlainString());
|
|
|
|
+ rowData.add(p.old.toPlainString());
|
|
|
|
+ rowData.add(p.medical.toPlainString());
|
|
|
|
+ rowData.add(p.loseJob.toPlainString());
|
|
|
|
+ rowData.add(p.injury.toPlainString());
|
|
|
|
+ rowData.add(p.house.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());
|
|
|
|
+ allList.add(rowData);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
//合计
|
|
//合计
|
|
List<String> sumRow = new ArrayList<String>();
|
|
List<String> sumRow = new ArrayList<String>();
|
|
sumRow.add("合计");
|
|
sumRow.add("合计");
|
|
- sumRow.add("");
|
|
|
|
- sumRow.add("");
|
|
|
|
- sumRow.add(""+totalCostTime);
|
|
|
|
|
|
+ if (groupByCategory == 0) {
|
|
|
|
+ sumRow.add("");
|
|
|
|
+ sumRow.add("");
|
|
|
|
+ sumRow.add(""+totalCostTime);
|
|
|
|
+ }
|
|
sumRow.add(totalSalary.toString());
|
|
sumRow.add(totalSalary.toString());
|
|
sumRow.add(totalBonus.toString());
|
|
sumRow.add(totalBonus.toString());
|
|
sumRow.add(totalAllowance.toString());
|
|
sumRow.add(totalAllowance.toString());
|
|
@@ -1001,7 +1023,6 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
sumRow.add(totalLoseJob.toString());
|
|
sumRow.add(totalLoseJob.toString());
|
|
sumRow.add(totalInjury.toString());
|
|
sumRow.add(totalInjury.toString());
|
|
sumRow.add(totalHouse.toString());
|
|
sumRow.add(totalHouse.toString());
|
|
-// sumRow.add(totalOther.toString());
|
|
|
|
|
|
|
|
if (cusColList.size() > 0) sumRow.add(totalField1.toString());
|
|
if (cusColList.size() > 0) sumRow.add(totalField1.toString());
|
|
if (cusColList.size() > 1) sumRow.add(totalField2.toString());
|
|
if (cusColList.size() > 1) sumRow.add(totalField2.toString());
|
|
@@ -1009,13 +1030,13 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
sumRow.add(totalMoneyCost.toString());
|
|
sumRow.add(totalMoneyCost.toString());
|
|
allList.add(sumRow);
|
|
allList.add(sumRow);
|
|
//生成excel文件导出
|
|
//生成excel文件导出
|
|
- String fileName = "财务人员成本_"+System.currentTimeMillis();
|
|
|
|
|
|
+ String fileName = yearMonth+(groupByCategory==0?"财务人员成本_":"财务项目分类成本_")+System.currentTimeMillis();
|
|
String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , allList, path);
|
|
String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , allList, path);
|
|
|
|
|
|
httpRespMsg.data = resp;
|
|
httpRespMsg.data = resp;
|
|
} catch (NullPointerException e) {
|
|
} catch (NullPointerException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
- httpRespMsg.setError("验证失败");
|
|
|
|
|
|
+ httpRespMsg.setError("验证失败:"+e.getMessage());
|
|
return httpRespMsg;
|
|
return httpRespMsg;
|
|
}
|
|
}
|
|
return httpRespMsg;
|
|
return httpRespMsg;
|