|
@@ -199,6 +199,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
WxCorpInfoService wxCorpInfoService;
|
|
|
@Resource
|
|
|
private LeaveSheetService leaveSheetService;
|
|
|
+ @Resource
|
|
|
+ private ExpenseMainTypeMapper expenseMainTypeMapper;
|
|
|
+ @Resource
|
|
|
+ private ExpenseSheetMapper expenseSheetMapper;
|
|
|
+ @Resource
|
|
|
+ private ExpenseTypeMapper expenseTypeMapper;
|
|
|
|
|
|
@Resource
|
|
|
private HttpServletResponse response;
|
|
@@ -2132,6 +2138,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
public HttpRespMsg getAllProjectCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
|
|
|
User user = userMapper.selectById(request.getHeader("Token"));
|
|
|
Integer companyId = user.getCompanyId();
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
|
|
|
List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目成本报表");
|
|
|
List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目成本报表");
|
|
@@ -2158,11 +2165,39 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
int total = projectMapper.selectCount(queryWrapper);
|
|
|
int pageStart = (pageIndex -1) * pageSize;
|
|
|
System.out.println("companyId="+companyId+", pageStart="+pageStart+", pageSize="+pageSize);
|
|
|
- List projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId,inchagerIds);
|
|
|
+ List<Map<String, Object>> projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId, inchagerIds);
|
|
|
+ List<Integer> projectIdCollect = projectTask.stream().map(pt -> Integer.valueOf(String.valueOf(pt.get("id")))).distinct().collect(Collectors.toList());
|
|
|
+ projectIdCollect.add(-1);
|
|
|
+ List<ExpenseMainType> expenseMainTypes = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
|
|
|
+ List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", companyId).eq("status", 0));
|
|
|
+ List<ExpenseItem> expenseItemList = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIdCollect));
|
|
|
+ for (Map<String, Object> map : projectTask) {
|
|
|
+ BigDecimal bigDecimal=new BigDecimal(0);
|
|
|
+ List<Map<String,Object>> itemList=new ArrayList<>();
|
|
|
+ for (ExpenseMainType expenseMainType : expenseMainTypes) {
|
|
|
+ Map<String,Object> item=new HashMap<>();
|
|
|
+ item.put("type",expenseMainType.getId());
|
|
|
+ List<ExpenseSheet> sheetList = expenseSheetList.stream().filter(es -> es.getType().equals(expenseMainType.getId())).collect(Collectors.toList());
|
|
|
+ List<Integer> collect = sheetList.stream().map(ExpenseSheet::getId).distinct().collect(Collectors.toList());
|
|
|
+ collect.add(-1);
|
|
|
+ double sum = expenseItemList.stream().filter(el -> collect.contains(el.getExpenseId())&&el.getProjectId()!=null&&el.getProjectId().equals(map.get("id"))).mapToDouble(el -> el.getAmount()==null?0:el.getAmount()).sum();
|
|
|
+ item.put("amount",sum);
|
|
|
+ itemList.add(item);
|
|
|
+ map.put(expenseMainType.getName(),sum);
|
|
|
+ bigDecimal=bigDecimal.add(new BigDecimal(sum));
|
|
|
+ }
|
|
|
+ map.put("costDetail",itemList);
|
|
|
+ double totalFee = bigDecimal.doubleValue();
|
|
|
+ //totalFee保留小数点后两位
|
|
|
+ totalFee = Double.parseDouble(df.format(totalFee));
|
|
|
+ map.put("allCost",totalFee);
|
|
|
+ }
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("records", projectTask);
|
|
|
map.put("total", total);
|
|
|
+ String[] split = expenseMainTypes.stream().map(ExpenseMainType::getName).collect(Collectors.joining(",")).split(",");
|
|
|
+ map.put("expenseMainTypeList",split);
|
|
|
httpRespMsg.data = map;
|
|
|
return httpRespMsg;
|
|
|
}
|
|
@@ -2192,21 +2227,41 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
}
|
|
|
QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
|
|
|
- List<Project> projectList = projectMapper.getAllProjectCost(companyId, null, null, null,inchagerIds);
|
|
|
+ List<Map<String, Object>> projectList = projectMapper.getAllProjectCost(companyId, null, null, null, inchagerIds);
|
|
|
+ List<Integer> projectIdCollect = projectList.stream().map(pt -> Integer.valueOf(String.valueOf(pt.get("id")))).distinct().collect(Collectors.toList());
|
|
|
+ projectIdCollect.add(-1);
|
|
|
+ List<ExpenseMainType> expenseMainTypes = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
|
|
|
+ List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", companyId).eq("status", 0));
|
|
|
+ List<ExpenseItem> expenseItemList = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIdCollect));
|
|
|
List<List<String>> exportList = new ArrayList<>();
|
|
|
- //String[] titles = {"项目编号", "项目名称", "人工成本", "一般费用", "差旅费用","外包费用", "总费用"};
|
|
|
- String[] titles = {MessageUtils.message("entry.projectId"), MessageUtils.message("entry.projectName"), MessageUtils.message("entry.laborCost"), MessageUtils.message("excel.genExp"), MessageUtils.message("excel.traExp"),MessageUtils.message("excel.OutExp"), MessageUtils.message("excel.totalExp")};
|
|
|
- exportList.add(Lists.list(titles));
|
|
|
+ List<String> titles=new ArrayList<>();
|
|
|
+ titles.add("项目编号");
|
|
|
+ titles.add("项目名称");
|
|
|
+ titles.add("人工成本");
|
|
|
+ for (ExpenseMainType expenseMainType : expenseMainTypes) {
|
|
|
+ titles.add(expenseMainType.getName());
|
|
|
+ }
|
|
|
+ titles.add("总费用");
|
|
|
+ exportList.add(titles);
|
|
|
DecimalFormat df = new DecimalFormat("#.00");
|
|
|
- for (Project project : projectList) {
|
|
|
+ for (Map<String,Object> item : projectList) {
|
|
|
List<String> data = new ArrayList<>();
|
|
|
- data.add(project.getProjectCode());
|
|
|
- data.add(project.getProjectName());
|
|
|
- data.add(project.getFeeMan().toString());
|
|
|
- data.add(project.getFeeNormal().toString());
|
|
|
- data.add(project.getFeeTravel().toString());
|
|
|
- data.add(project.getFeeOutsourcing().toString());
|
|
|
- double totalFee = project.getFeeMan() + project.getFeeNormal()+ project.getFeeTravel()+ project.getFeeOutsourcing();
|
|
|
+ data.add(String.valueOf(item.get("projectCode")));
|
|
|
+ data.add(String.valueOf(item.get("projectName")));
|
|
|
+ data.add(String.valueOf(item.get("feeMan")));
|
|
|
+ BigDecimal bigDecimal=new BigDecimal(0);
|
|
|
+ for (ExpenseMainType expenseMainType : expenseMainTypes) {
|
|
|
+ Map<String,Object> it=new HashMap<>();
|
|
|
+ it.put("type",expenseMainType.getId());
|
|
|
+ List<ExpenseSheet> sheetList = expenseSheetList.stream().filter(es -> es.getType().equals(expenseMainType.getId())).collect(Collectors.toList());
|
|
|
+ List<Integer> collect = sheetList.stream().map(ExpenseSheet::getId).distinct().collect(Collectors.toList());
|
|
|
+ collect.add(-1);
|
|
|
+ double sum = expenseItemList.stream().filter(el -> collect.contains(el.getExpenseId())&&el.getProjectId()!=null&&el.getProjectId().equals(item.get("id"))).mapToDouble(el -> el.getAmount()==null?0:el.getAmount()).sum();
|
|
|
+ it.put("amount",sum);
|
|
|
+ data.add(String.valueOf(sum));
|
|
|
+ bigDecimal=bigDecimal.add(new BigDecimal(sum));
|
|
|
+ }
|
|
|
+ double totalFee = bigDecimal.doubleValue();
|
|
|
//totalFee保留小数点后两位
|
|
|
totalFee = Double.parseDouble(df.format(totalFee));
|
|
|
data.add(totalFee+"");
|