|
@@ -11,9 +11,9 @@ import com.management.platform.service.*;
|
|
|
import com.management.platform.util.ExcelUtil;
|
|
|
import com.management.platform.util.HttpRespMsg;
|
|
|
import com.management.platform.util.MessageUtils;
|
|
|
-import com.taobao.api.internal.util.StringUtils;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.log4j.LogManager;
|
|
|
import org.apache.log4j.Logger;
|
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
@@ -184,8 +184,12 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
//获取人员该月份填写的日报的总时长
|
|
|
List<Map<String, Object>> userTimeList = null;
|
|
|
if (syncUserCost || syncHistoryReport) {
|
|
|
-// userTimeList = reportMapper.getUserWorkingTimeByRange(companyId, startStr, endStr);
|
|
|
userTimeList = reportMapper.getUserWorkingTimeByRangeWithExclude(companyId, yearMonth,startStr, endStr);
|
|
|
+ if (userTimeList.size() == 0) {
|
|
|
+ msg.setError("当月没有相关项目的日报数据,请检查是否设置了不参与项目");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//设置财务核算薪资模板配置
|
|
@@ -384,6 +388,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
}
|
|
|
|
|
|
if (first != null && first.isPresent()) {
|
|
|
+ System.out.println("匹配到的人员:"+first.get().getName());
|
|
|
finance.setUserId(first.get().getId());
|
|
|
BigDecimal total = new BigDecimal(0);
|
|
|
if (salaryCell != null) {
|
|
@@ -512,14 +517,22 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
BigDecimal db = timeType.getMonthDays().multiply(new BigDecimal(timeType.getAllday()));
|
|
|
localUser.setCost(total.divide(db, 6, BigDecimal.ROUND_HALF_UP));
|
|
|
} else {
|
|
|
+ boolean find = false;
|
|
|
for (int i=0;i<userTimeList.size(); i++) {
|
|
|
Map<String, Object> map = userTimeList.get(i);
|
|
|
if (map.get("creatorId").equals(finance.getUserId())) {
|
|
|
+ find = true;
|
|
|
double time = (Double)map.get("workingTime");
|
|
|
localUser.setCost(total.divide(new BigDecimal(time), 6, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ if (!find) {
|
|
|
+ //没有找到对应的工时,按标准工时来
|
|
|
+ System.out.println("没有找到对应的工时,按标准工时来, userId="+finance.getUserId()+", jobNumber="+finance.getJobNumber());
|
|
|
+ BigDecimal db = timeType.getMonthDays().multiply(new BigDecimal(timeType.getAllday()));
|
|
|
+ localUser.setCost(total.divide(db, 6, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
updateUserList.add(localUser);
|
|
@@ -696,22 +709,45 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
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()+"分摊表");
|
|
|
+ if(StringUtils.isNotBlank(fixedItem.getMonthCost())){
|
|
|
+ headList.add(fixedItem.getMonthCost()+"(元)");
|
|
|
+ sheetNameList.add(fixedItem.getMonthCost()+"分摊表");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(fixedItem.getBonus())){
|
|
|
+ headList.add(fixedItem.getBonus()+"(元)");
|
|
|
+ sheetNameList.add(fixedItem.getBonus()+"分摊表");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(fixedItem.getAllowance())){
|
|
|
+ headList.add(fixedItem.getAllowance()+"(元)");
|
|
|
+ sheetNameList.add(fixedItem.getAllowance()+"分摊表");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(fixedItem.getInsuranceOld())){
|
|
|
+ headList.add(fixedItem.getInsuranceOld()+"(元)");
|
|
|
+ sheetNameList.add(fixedItem.getInsuranceOld()+"分摊表");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(fixedItem.getInsuranceMedical())){
|
|
|
+ headList.add(fixedItem.getInsuranceMedical()+"(元)");
|
|
|
+ sheetNameList.add(fixedItem.getInsuranceMedical()+"分摊表");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(fixedItem.getInsuranceLosejob())){
|
|
|
+ headList.add(fixedItem.getInsuranceLosejob()+"(元)");
|
|
|
+ sheetNameList.add(fixedItem.getInsuranceLosejob()+"分摊表");
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(fixedItem.getInsuranceInjury())){
|
|
|
+ headList.add(fixedItem.getInsuranceInjury()+"(元)");
|
|
|
+ sheetNameList.add(fixedItem.getInsuranceInjury()+"分摊表");
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(fixedItem.getHouseFund())){
|
|
|
+ headList.add(fixedItem.getHouseFund()+"(元)");
|
|
|
+ sheetNameList.add(fixedItem.getHouseFund()+"分摊表");
|
|
|
+ }
|
|
|
+
|
|
|
// headList.add("其他(元)");
|
|
|
for (FinanceTblcuscol col : cusColList) {
|
|
|
headList.add(col.getFieldName());
|
|
@@ -1185,229 +1221,231 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
rowData.add(p.cost.toPlainString());
|
|
|
allList.add(rowData);
|
|
|
|
|
|
- //获取成员
|
|
|
- for (Map<String, Object> membMap : projectTimeList) {
|
|
|
+ if(0 != onlyTotal){
|
|
|
+ //获取成员
|
|
|
+ for (Map<String, Object> membMap : projectTimeList) {
|
|
|
// if (membMap.get("project").equals(p.project)) {
|
|
|
- Integer projectId = ((Long) membMap.get("projectId")).intValue();
|
|
|
- //修改为按照projectId匹配
|
|
|
- if (projectId.equals(p.projectId)) {
|
|
|
- //匹配到项目了
|
|
|
- List<String> membRowData = new ArrayList<String>();
|
|
|
- membRowData.add(p.projectCode);
|
|
|
- membRowData.add(p.project);
|
|
|
- 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()+"]在财务报表中不存在,请重新导入");
|
|
|
- logger.info(MessageUtils.message("report.userNull",us.getName()));
|
|
|
- continue;
|
|
|
- }
|
|
|
- Finance userFinance = first.get();
|
|
|
-
|
|
|
- BigDecimal cost = userFinance.getTotalCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal salary = userFinance.getMonthCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal bonus = userFinance.getBonus().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal allowance = userFinance.getAllowance().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal old = userFinance.getInsuranceOld().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal medical = userFinance.getInsuranceMedical().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal loseJob = userFinance.getInsuranceLosejob().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal injury = userFinance.getInsuranceInjury().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal house = userFinance.getHouseFund().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal field1 = userFinance.getCustomField1() == null? new BigDecimal(0):userFinance.getCustomField1().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal field2 = userFinance.getCustomField2() == null? new BigDecimal(0):userFinance.getCustomField2().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal field3 = userFinance.getCustomField3() == null? new BigDecimal(0):userFinance.getCustomField3().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal field4 = userFinance.getCustomField4() == null? new BigDecimal(0):userFinance.getCustomField4().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal field5 = userFinance.getCustomField5() == null? new BigDecimal(0):userFinance.getCustomField5().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal field6 = userFinance.getCustomField6() == null? new BigDecimal(0):userFinance.getCustomField6().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal field7 = userFinance.getCustomField7() == null? new BigDecimal(0):userFinance.getCustomField6().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
- //增加部门
|
|
|
- Optional<Department> findDept = allDepartments.stream().filter(dp -> dp.getDepartmentId().equals(us.getDepartmentId())).findFirst();
|
|
|
- if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
- membRowData.add("$userName="+(us.getCorpwxUserid()==null?"":us.getCorpwxUserid())+"$");
|
|
|
- if (findDept.isPresent()) {
|
|
|
- membRowData.add("$departmentName="+findDept.get().getDepartmentName()+"$");
|
|
|
- } else {
|
|
|
- membRowData.add("");
|
|
|
+ Integer projectId = ((Long) membMap.get("projectId")).intValue();
|
|
|
+ //修改为按照projectId匹配
|
|
|
+ if (projectId.equals(p.projectId)) {
|
|
|
+ //匹配到项目了
|
|
|
+ List<String> membRowData = new ArrayList<String>();
|
|
|
+ membRowData.add(p.projectCode);
|
|
|
+ membRowData.add(p.project);
|
|
|
+ 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()+"]在财务报表中不存在,请重新导入");
|
|
|
+ logger.info(MessageUtils.message("report.userNull",us.getName()));
|
|
|
+ continue;
|
|
|
}
|
|
|
- }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
|
|
|
- membRowData.add("$userName="+us.getName()+"$");
|
|
|
- if (findDept.isPresent()) {
|
|
|
- membRowData.add("$departmentName="+findDept.get().getDepartmentName()+"$");
|
|
|
- } else {
|
|
|
- membRowData.add("");
|
|
|
+ Finance userFinance = first.get();
|
|
|
+
|
|
|
+ BigDecimal cost = userFinance.getTotalCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal salary = userFinance.getMonthCost().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal bonus = userFinance.getBonus().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal allowance = userFinance.getAllowance().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal old = userFinance.getInsuranceOld().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal medical = userFinance.getInsuranceMedical().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal loseJob = userFinance.getInsuranceLosejob().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal injury = userFinance.getInsuranceInjury().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal house = userFinance.getHouseFund().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal field1 = userFinance.getCustomField1() == null? new BigDecimal(0):userFinance.getCustomField1().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal field2 = userFinance.getCustomField2() == null? new BigDecimal(0):userFinance.getCustomField2().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal field3 = userFinance.getCustomField3() == null? new BigDecimal(0):userFinance.getCustomField3().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal field4 = userFinance.getCustomField4() == null? new BigDecimal(0):userFinance.getCustomField4().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal field5 = userFinance.getCustomField5() == null? new BigDecimal(0):userFinance.getCustomField5().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal field6 = userFinance.getCustomField6() == null? new BigDecimal(0):userFinance.getCustomField6().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal field7 = userFinance.getCustomField7() == null? new BigDecimal(0):userFinance.getCustomField6().multiply(new BigDecimal(workingTime)).divide(userTime.get(creatorId).workingTime, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //增加部门
|
|
|
+ Optional<Department> findDept = allDepartments.stream().filter(dp -> dp.getDepartmentId().equals(us.getDepartmentId())).findFirst();
|
|
|
+ if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+ membRowData.add("$userName="+(us.getCorpwxUserid()==null?"":us.getCorpwxUserid())+"$");
|
|
|
+ if (findDept.isPresent()) {
|
|
|
+ membRowData.add("$departmentName="+findDept.get().getDepartmentName()+"$");
|
|
|
+ } else {
|
|
|
+ membRowData.add("");
|
|
|
+ }
|
|
|
+ }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
|
|
|
+ membRowData.add("$userName="+us.getName()+"$");
|
|
|
+ if (findDept.isPresent()) {
|
|
|
+ membRowData.add("$departmentName="+findDept.get().getDepartmentName()+"$");
|
|
|
+ } else {
|
|
|
+ membRowData.add("");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ membRowData.add(us.getName());
|
|
|
+ if (findDept.isPresent()) {
|
|
|
+ membRowData.add(findDept.get().getDepartmentName());
|
|
|
+ } else {
|
|
|
+ membRowData.add("");
|
|
|
+ }
|
|
|
}
|
|
|
- }else {
|
|
|
- membRowData.add(us.getName());
|
|
|
- if (findDept.isPresent()) {
|
|
|
- membRowData.add(findDept.get().getDepartmentName());
|
|
|
- } else {
|
|
|
- membRowData.add("");
|
|
|
+ for (int i = 0; i < userCustoms.size(); i++) {
|
|
|
+ switch (i){
|
|
|
+ case 0:
|
|
|
+ membRowData.add(us.getPlate1()==null?"":us.getPlate1());
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ membRowData.add(us.getPlate2()==null?"":us.getPlate2());
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ membRowData.add(us.getPlate3()==null?"":us.getPlate3());
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ membRowData.add(us.getPlate4()==null?"":us.getPlate4());
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ membRowData.add(us.getPlate5()==null?"":us.getPlate5());
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- for (int i = 0; i < userCustoms.size(); i++) {
|
|
|
- switch (i){
|
|
|
- case 0:
|
|
|
- membRowData.add(us.getPlate1()==null?"":us.getPlate1());
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- membRowData.add(us.getPlate2()==null?"":us.getPlate2());
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- membRowData.add(us.getPlate3()==null?"":us.getPlate3());
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- membRowData.add(us.getPlate4()==null?"":us.getPlate4());
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- membRowData.add(us.getPlate5()==null?"":us.getPlate5());
|
|
|
- break;
|
|
|
+ membRowData.add(workTimeFormatter.format(workingTime));
|
|
|
+ membRowData.add(salary.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(bonus.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(allowance.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(old.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(medical.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(loseJob.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(injury.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(house.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ //自定义字段
|
|
|
+ if (cusColList.size() > 0) {
|
|
|
+ membRowData.add(field1.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
}
|
|
|
+ if (cusColList.size() > 1) {
|
|
|
+ membRowData.add(field2.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 2) {
|
|
|
+ membRowData.add(field3.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 3) {
|
|
|
+ membRowData.add(field4.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 4) {
|
|
|
+ membRowData.add(field5.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 5) {
|
|
|
+ membRowData.add(field6.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 6) {
|
|
|
+ membRowData.add(field7.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ membRowData.add(cost.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ allList.add(membRowData);
|
|
|
}
|
|
|
- membRowData.add(workTimeFormatter.format(workingTime));
|
|
|
- membRowData.add(salary.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(bonus.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(allowance.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(old.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(medical.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(loseJob.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(injury.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(house.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- //自定义字段
|
|
|
- if (cusColList.size() > 0) {
|
|
|
- membRowData.add(field1.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 1) {
|
|
|
- membRowData.add(field2.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 2) {
|
|
|
- membRowData.add(field3.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 3) {
|
|
|
- membRowData.add(field4.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 4) {
|
|
|
- membRowData.add(field5.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 5) {
|
|
|
- membRowData.add(field6.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 6) {
|
|
|
- membRowData.add(field7.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- membRowData.add(cost.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- allList.add(membRowData);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- //无项目人员成本
|
|
|
- if (assignNoProUser != null && assignNoProUser) {
|
|
|
- for (Finance npu : noProjectUser) {
|
|
|
- List<String> membRowData = new ArrayList<String>();
|
|
|
- membRowData.add(p.projectCode);
|
|
|
- membRowData.add(p.project);
|
|
|
- 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();
|
|
|
- BigDecimal field4 = newFinance.getCustomField4() == null? new BigDecimal(0):newFinance.getCustomField4();
|
|
|
- BigDecimal field5 = newFinance.getCustomField5() == null? new BigDecimal(0):newFinance.getCustomField5();
|
|
|
- BigDecimal field6 = newFinance.getCustomField6() == null? new BigDecimal(0):newFinance.getCustomField6();
|
|
|
- BigDecimal field7 = newFinance.getCustomField7() == null? new BigDecimal(0):newFinance.getCustomField7();
|
|
|
- User us = userList.stream().filter(u->u.getId().equals(npu.getUserId())).findFirst().get();
|
|
|
- if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
- membRowData.add("$userName="+(us.getCorpwxUserid()==null?"":us.getCorpwxUserid())+"$");
|
|
|
- }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
|
|
|
- membRowData.add("$userName="+us.getDingdingUserid()+"$");
|
|
|
- }else {
|
|
|
- membRowData.add(npu.getName());
|
|
|
- }
|
|
|
-
|
|
|
- //增加部门
|
|
|
- Optional<Department> first = allDepartments.stream().filter(dp -> dp.getDepartmentId().equals(us.getDepartmentId())).findFirst();
|
|
|
- if (first.isPresent()) {
|
|
|
+ //无项目人员成本
|
|
|
+ if (assignNoProUser != null && assignNoProUser) {
|
|
|
+ for (Finance npu : noProjectUser) {
|
|
|
+ List<String> membRowData = new ArrayList<String>();
|
|
|
+ membRowData.add(p.projectCode);
|
|
|
+ membRowData.add(p.project);
|
|
|
+ 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();
|
|
|
+ BigDecimal field4 = newFinance.getCustomField4() == null? new BigDecimal(0):newFinance.getCustomField4();
|
|
|
+ BigDecimal field5 = newFinance.getCustomField5() == null? new BigDecimal(0):newFinance.getCustomField5();
|
|
|
+ BigDecimal field6 = newFinance.getCustomField6() == null? new BigDecimal(0):newFinance.getCustomField6();
|
|
|
+ BigDecimal field7 = newFinance.getCustomField7() == null? new BigDecimal(0):newFinance.getCustomField7();
|
|
|
+ User us = userList.stream().filter(u->u.getId().equals(npu.getUserId())).findFirst().get();
|
|
|
if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
- membRowData.add("$departmentName="+(first.get().getCorpwxDeptid()==null?"":first.get().getCorpwxDeptid())+"$");
|
|
|
+ membRowData.add("$userName="+(us.getCorpwxUserid()==null?"":us.getCorpwxUserid())+"$");
|
|
|
}else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
|
|
|
- membRowData.add("$departmentName="+(first.get().getDdDeptid()==null?"":first.get().getDdDeptid())+"$");
|
|
|
+ membRowData.add("$userName="+us.getDingdingUserid()+"$");
|
|
|
}else {
|
|
|
- membRowData.add(first.get().getDepartmentName());
|
|
|
+ membRowData.add(npu.getName());
|
|
|
}
|
|
|
- } else {
|
|
|
- membRowData.add("");
|
|
|
- }
|
|
|
- //自定义字段的显示
|
|
|
- for (int i = 0; i < userCustoms.size(); i++) {
|
|
|
- switch (i){
|
|
|
- case 0:
|
|
|
- membRowData.add(us.getPlate1()==null?"":us.getPlate1());
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- membRowData.add(us.getPlate2()==null?"":us.getPlate2());
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- membRowData.add(us.getPlate3()==null?"":us.getPlate3());
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- membRowData.add(us.getPlate4()==null?"":us.getPlate4());
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- membRowData.add(us.getPlate5()==null?"":us.getPlate5());
|
|
|
- break;
|
|
|
+
|
|
|
+ //增加部门
|
|
|
+ Optional<Department> first = allDepartments.stream().filter(dp -> dp.getDepartmentId().equals(us.getDepartmentId())).findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+ membRowData.add("$departmentName="+(first.get().getCorpwxDeptid()==null?"":first.get().getCorpwxDeptid())+"$");
|
|
|
+ }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
|
|
|
+ membRowData.add("$departmentName="+(first.get().getDdDeptid()==null?"":first.get().getDdDeptid())+"$");
|
|
|
+ }else {
|
|
|
+ membRowData.add(first.get().getDepartmentName());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ membRowData.add("");
|
|
|
}
|
|
|
+ //自定义字段的显示
|
|
|
+ for (int i = 0; i < userCustoms.size(); i++) {
|
|
|
+ switch (i){
|
|
|
+ case 0:
|
|
|
+ membRowData.add(us.getPlate1()==null?"":us.getPlate1());
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ membRowData.add(us.getPlate2()==null?"":us.getPlate2());
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ membRowData.add(us.getPlate3()==null?"":us.getPlate3());
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ membRowData.add(us.getPlate4()==null?"":us.getPlate4());
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ membRowData.add(us.getPlate5()==null?"":us.getPlate5());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ membRowData.add(workTimeFormatter.format(workingTime));
|
|
|
+ membRowData.add(salary.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(bonus.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(allowance.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(old.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(medical.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(loseJob.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(injury.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ membRowData.add(house.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ //自定义字段
|
|
|
+ if (cusColList.size() > 0) {
|
|
|
+ membRowData.add(field1.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 1) {
|
|
|
+ membRowData.add(field2.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 2) {
|
|
|
+ membRowData.add(field3.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 3) {
|
|
|
+ membRowData.add(field4.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 4) {
|
|
|
+ membRowData.add(field5.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 5) {
|
|
|
+ membRowData.add(field6.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ if (cusColList.size() > 6) {
|
|
|
+ membRowData.add(field7.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ membRowData.add(cost.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ allList.add(membRowData);
|
|
|
}
|
|
|
- membRowData.add(workTimeFormatter.format(workingTime));
|
|
|
- membRowData.add(salary.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(bonus.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(allowance.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(old.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(medical.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(loseJob.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(injury.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- membRowData.add(house.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- //自定义字段
|
|
|
- if (cusColList.size() > 0) {
|
|
|
- membRowData.add(field1.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 1) {
|
|
|
- membRowData.add(field2.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 2) {
|
|
|
- membRowData.add(field3.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 3) {
|
|
|
- membRowData.add(field4.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 4) {
|
|
|
- membRowData.add(field5.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 5) {
|
|
|
- membRowData.add(field6.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- if (cusColList.size() > 6) {
|
|
|
- membRowData.add(field7.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- }
|
|
|
- membRowData.add(cost.setScale(6, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
- allList.add(membRowData);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1565,18 +1603,20 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
|
|
|
multiSheetDataList[i].add(newRow);
|
|
|
}
|
|
|
}
|
|
|
- if(0 == onlyTotal){
|
|
|
- return excelExportService.exportMultiSheetGeneralExcelTotal(wxCorpInfo,dingding,fileName , multiSheetDataList, path, sheetNameList.toArray(new String[0]));
|
|
|
-
|
|
|
- }else{
|
|
|
- return excelExportService.exportMultiSheetGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , multiSheetDataList, path, sheetNameList.toArray(new String[0]));
|
|
|
- }
|
|
|
+ return excelExportService.exportMultiSheetGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , multiSheetDataList, path, sheetNameList.toArray(new String[0]));
|
|
|
+// if(0 == onlyTotal){
|
|
|
+// return excelExportService.exportMultiSheetGeneralExcelTotal(wxCorpInfo,dingding,fileName , multiSheetDataList, path, sheetNameList.toArray(new String[0]));
|
|
|
+//
|
|
|
+// }else{
|
|
|
+// return excelExportService.exportMultiSheetGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , multiSheetDataList, path, sheetNameList.toArray(new String[0]));
|
|
|
+// }
|
|
|
} else {
|
|
|
- if(0 == onlyTotal){
|
|
|
- return excelExportService.exportGeneralExcelTotal(wxCorpInfo,dingding,fileName , allList, path);
|
|
|
- }else{
|
|
|
- return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , allList, path);
|
|
|
- }
|
|
|
+ return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , allList, path);
|
|
|
+// if(0 == onlyTotal){
|
|
|
+// return excelExportService.exportGeneralExcelTotal(wxCorpInfo,dingding,fileName , allList, path);
|
|
|
+// }else{
|
|
|
+// return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , allList, path);
|
|
|
+// }
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|