|
|
@@ -667,7 +667,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg exportData(Integer groupByCategory,Integer onlyTotal, String yearMonth, Boolean assignNoProUser, Integer deptId, Integer salaryType, HttpServletRequest request) {
|
|
|
+ public HttpRespMsg exportData(Integer groupByCategory,Integer onlyTotal, String yearMonth, Boolean assignNoProUser, Integer deptId, Integer salaryType,Integer scale, HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
try {
|
|
|
Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
|
|
|
@@ -1051,21 +1051,21 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
accumulate = accumulate.add(assignAmount);
|
|
|
System.out.println("增加项目成本==="+assignAmount);
|
|
|
p.cost = p.cost.add(assignAmount);
|
|
|
- p.salary = p.salary.add(user.getMonthCost().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- p.bonus = p.bonus.add(user.getBonus().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- p.allowance = p.allowance.add(user.getAllowance().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- p.old = p.old.add(user.getInsuranceOld().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- p.medical = p.medical.add(user.getInsuranceMedical().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- p.loseJob = p.loseJob.add(user.getInsuranceLosejob().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- p.injury = p.injury.add(user.getInsuranceInjury().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- p.house = p.house.add(user.getHouseFund().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (user.getCustomField1() != null) p.field1 = p.field1.add(user.getCustomField1().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (user.getCustomField2() != null) p.field2 = p.field2.add(user.getCustomField2().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (user.getCustomField3() != null) p.field3 = p.field3.add(user.getCustomField3().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (user.getCustomField4() != null) p.field4 = p.field4.add(user.getCustomField4().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (user.getCustomField5() != null) p.field5 = p.field5.add(user.getCustomField5().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (user.getCustomField6() != null) p.field6 = p.field6.add(user.getCustomField6().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (user.getCustomField7() != null) p.field7 = p.field7.add(user.getCustomField7().multiply(new BigDecimal(p.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ p.salary = p.salary.add(user.getMonthCost().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ p.bonus = p.bonus.add(user.getBonus().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ p.allowance = p.allowance.add(user.getAllowance().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ p.old = p.old.add(user.getInsuranceOld().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ p.medical = p.medical.add(user.getInsuranceMedical().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ p.loseJob = p.loseJob.add(user.getInsuranceLosejob().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ p.injury = p.injury.add(user.getInsuranceInjury().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ p.house = p.house.add(user.getHouseFund().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (user.getCustomField1() != null) p.field1 = p.field1.add(user.getCustomField1().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (user.getCustomField2() != null) p.field2 = p.field2.add(user.getCustomField2().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (user.getCustomField3() != null) p.field3 = p.field3.add(user.getCustomField3().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (user.getCustomField4() != null) p.field4 = p.field4.add(user.getCustomField4().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (user.getCustomField5() != null) p.field5 = p.field5.add(user.getCustomField5().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (user.getCustomField6() != null) p.field6 = p.field6.add(user.getCustomField6().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (user.getCustomField7() != null) p.field7 = p.field7.add(user.getCustomField7().multiply(new BigDecimal(p.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
if (p.secondCost == null) {
|
|
|
p.secondCost = new BigDecimal(0);
|
|
|
}
|
|
|
@@ -1286,25 +1286,25 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
System.out.println("+p.getWorkingtime="+pItem.workingTime+", project="+pItem.project);
|
|
|
//避免偏差
|
|
|
BigDecimal assignAmount = i < filteredList.size() -1 ?publicProjectCost.multiply(new BigDecimal(pItem.workingTime / sum)):publicProjectCost.subtract(accumulate);
|
|
|
- assignAmount = assignAmount.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ assignAmount = assignAmount.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
accumulate = accumulate.add(assignAmount);
|
|
|
System.out.println(category + "分摊出来的成本到["+pItem.getProject()+"]==="+assignAmount);
|
|
|
pItem.cost = pItem.cost.add(assignAmount);
|
|
|
- pItem.salary = pItem.salary.add(publicProjectSalary.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- pItem.bonus = pItem.bonus.add(publicProjectBonus.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- pItem.allowance = pItem.allowance.add(publicProjectAllowance.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- pItem.old = pItem.old.add(publicProjectOld.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- pItem.medical = pItem.medical.add(publicProjectMedical.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- pItem.loseJob = pItem.loseJob.add(publicProjectLoseJob.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- pItem.injury = pItem.injury.add(publicProjectInjury.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- pItem.house = pItem.house.add(publicProjectHouse.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (publicProjectField1 != null) pItem.field1 = pItem.field1.add(publicProjectField1.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (publicProjectField2 != null) pItem.field2 = pItem.field2.add(publicProjectField2.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (publicProjectField3 != null) pItem.field3 = pItem.field3.add(publicProjectField3.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (publicProjectField4 != null) pItem.field4 = pItem.field4.add(publicProjectField4.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (publicProjectField5 != null) pItem.field5 = pItem.field5.add(publicProjectField5.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (publicProjectField6 != null) pItem.field6 = pItem.field6.add(publicProjectField6.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- if (publicProjectField7 != null) pItem.field7 = pItem.field7.add(publicProjectField7.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ pItem.salary = pItem.salary.add(publicProjectSalary.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ pItem.bonus = pItem.bonus.add(publicProjectBonus.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ pItem.allowance = pItem.allowance.add(publicProjectAllowance.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ pItem.old = pItem.old.add(publicProjectOld.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ pItem.medical = pItem.medical.add(publicProjectMedical.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ pItem.loseJob = pItem.loseJob.add(publicProjectLoseJob.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ pItem.injury = pItem.injury.add(publicProjectInjury.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ pItem.house = pItem.house.add(publicProjectHouse.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (publicProjectField1 != null) pItem.field1 = pItem.field1.add(publicProjectField1.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (publicProjectField2 != null) pItem.field2 = pItem.field2.add(publicProjectField2.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (publicProjectField3 != null) pItem.field3 = pItem.field3.add(publicProjectField3.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (publicProjectField4 != null) pItem.field4 = pItem.field4.add(publicProjectField4.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (publicProjectField5 != null) pItem.field5 = pItem.field5.add(publicProjectField5.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (publicProjectField6 != null) pItem.field6 = pItem.field6.add(publicProjectField6.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (publicProjectField7 != null) pItem.field7 = pItem.field7.add(publicProjectField7.multiply(new BigDecimal(pItem.workingTime / sum)).setScale(scale, BigDecimal.ROUND_HALF_UP));
|
|
|
if (pItem.thirdCost == null) {
|
|
|
pItem.thirdCost = new BigDecimal(0);
|
|
|
}
|
|
|
@@ -1337,36 +1337,36 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
}
|
|
|
|
|
|
//整体四舍五入处理
|
|
|
- totalMoneyCost = totalMoneyCost.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- totalSalary = totalSalary.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- totalBonus = totalBonus.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- totalAllowance = totalAllowance.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- totalOld = totalOld.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- totalMedical = totalMedical.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- totalLoseJob = totalLoseJob.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- totalInjury = totalInjury.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- totalHouse = totalHouse.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalMoneyCost = totalMoneyCost.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalSalary = totalSalary.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalBonus = totalBonus.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalAllowance = totalAllowance.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalOld = totalOld.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalMedical = totalMedical.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalLoseJob = totalLoseJob.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalInjury = totalInjury.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalHouse = totalHouse.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
// totalOther = totalOther.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
if (totalField1 != null) {
|
|
|
- totalField1 = totalField1.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalField1 = totalField1.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
if (totalField2 != null) {
|
|
|
- totalField2 = totalField2.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalField2 = totalField2.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
if (totalField3 != null) {
|
|
|
- totalField3 = totalField3.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalField3 = totalField3.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
if (totalField4 != null) {
|
|
|
- totalField4 = totalField4.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalField4 = totalField4.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
if (totalField5 != null) {
|
|
|
- totalField5 = totalField5.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalField5 = totalField5.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
if (totalField6 != null) {
|
|
|
- totalField6 = totalField6.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalField6 = totalField6.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
if (totalField7 != null) {
|
|
|
- totalField7 = totalField7.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalField7 = totalField7.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
//查找所有部门
|
|
|
List<Department> allDepartments = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
@@ -1377,22 +1377,22 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
// if (p.getCost().compareTo(new BigDecimal(0)) == 0) {
|
|
|
// continue;//合计为0的,跳过; 实现排除生产其他和研发其他这两个项目
|
|
|
// }
|
|
|
- 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);
|
|
|
- p.field4 = p.field4.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- p.field5 = p.field5.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- p.field6 = p.field6.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- p.field7 = p.field7.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.cost = p.cost.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.salary = p.salary.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.bonus = p.bonus.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.allowance = p.allowance.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.old = p.old.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.medical = p.medical.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.loseJob = p.loseJob.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.injury = p.injury.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.house = p.house.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.field1 = p.field1.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.field2 = p.field2.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.field3 = p.field3.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.field4 = p.field4.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.field5 = p.field5.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.field6 = p.field6.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.field7 = p.field7.setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
//组装写入excel文件的数据,从项目开始,项目下面挂成员
|
|
|
List<String> rowData = new ArrayList<String>();
|
|
|
@@ -1821,7 +1821,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
//用排序后的列表来赋值
|
|
|
pList.clear();
|
|
|
pList.addAll(orderedList);
|
|
|
- final int scaleSize = 2;
|
|
|
+ final int scaleSize = scale;
|
|
|
pList.forEach(p->{
|
|
|
p.cost = p.cost.setScale(scaleSize, BigDecimal.ROUND_HALF_UP);
|
|
|
p.salary = p.salary.setScale(scaleSize, BigDecimal.ROUND_HALF_UP);
|