|
@@ -4112,15 +4112,82 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
// totalUser.setPersonWorkHoursWages(totalList);
|
|
|
personWorkHoursWagesList.addAll(totalList);
|
|
|
+ //获取所有人员在指定日期的分配数据
|
|
|
+ List<ProdProcedureTeam> prodProcedureTeamList = prodProcedureTeamMapper.selectList(new QueryWrapper<ProdProcedureTeam>().select("SUM(work_time) AS workTime,SUM(job_of_money) AS jobOfMoney,user_id as userId,distribute_date as distributeDate").between("distribute_date", startDate, endDate).groupBy("user_id,distribute_date"));
|
|
|
userList.forEach(u->{
|
|
|
List<Map<String, Object>> mapList = personWorkHoursWagesList.stream().filter(pl -> String.valueOf(pl.get("userId")).equals(u.getId())).collect(Collectors.toList());
|
|
|
+ for (String date : dataStringList) {
|
|
|
+ Optional<ProdProcedureTeam> first = prodProcedureTeamList.stream().filter(p -> p.getUserId().equals(u.getId()) && p.getDistributeDate().format(dtf1).equals(date)).findFirst();
|
|
|
+ Optional<Map<String, Object>> createDateValue = mapList.stream().filter(m -> String.valueOf(m.get("crateDate")).equals(date)).findFirst();
|
|
|
+ if(createDateValue.isPresent()){
|
|
|
+ Map<String, Object> map = createDateValue.get();
|
|
|
+ if(first.isPresent()){
|
|
|
+ map.put("planCost",first.get().getJobOfMoney());
|
|
|
+ map.put("planWorkTime",first.get().getWorkTime());
|
|
|
+ BigDecimal decimalCost = new BigDecimal(String.valueOf(first.get().getJobOfMoney()));
|
|
|
+ decimalCost=decimalCost.subtract(new BigDecimal(String.valueOf(map.get("cost")))).setScale(1,RoundingMode.HALF_UP);
|
|
|
+ if(decimalCost.doubleValue()<0){
|
|
|
+ decimalCost=new BigDecimal(0);
|
|
|
+ }
|
|
|
+ BigDecimal decimalWorkTime = new BigDecimal(String.valueOf(first.get().getWorkTime()));
|
|
|
+ decimalWorkTime=decimalWorkTime.subtract(new BigDecimal(String.valueOf(map.get("workTime")))).setScale(1,RoundingMode.HALF_UP);
|
|
|
+ if(decimalWorkTime.doubleValue()<0){
|
|
|
+ decimalWorkTime=new BigDecimal(0);
|
|
|
+ }
|
|
|
+ map.put("surplusCost",decimalCost.doubleValue());
|
|
|
+ map.put("surplusTime",decimalWorkTime.doubleValue());
|
|
|
+ }else {
|
|
|
+ map.put("planCost",0);
|
|
|
+ map.put("planWorkTime",0);
|
|
|
+ map.put("surplusCost",0);
|
|
|
+ map.put("surplusTime",0);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ Map map=new HashMap();
|
|
|
+ map.put("crateDate",date);
|
|
|
+ map.put("cost",0);
|
|
|
+ map.put("workTime",0);
|
|
|
+ map.put("departmentName",u.getDepartmentName());
|
|
|
+ if(first.isPresent()){
|
|
|
+ map.put("planCost",first.get().getJobOfMoney());
|
|
|
+ map.put("planWorkTime",first.get().getWorkTime());
|
|
|
+ BigDecimal decimalCost = new BigDecimal(String.valueOf(first.get().getJobOfMoney()));
|
|
|
+ decimalCost=decimalCost.subtract(new BigDecimal(String.valueOf(map.get("cost")))).setScale(1,RoundingMode.HALF_UP);
|
|
|
+ if(decimalCost.doubleValue()<0){
|
|
|
+ decimalCost=new BigDecimal(0);
|
|
|
+ }
|
|
|
+ BigDecimal decimalWorkTime = new BigDecimal(String.valueOf(first.get().getWorkTime()));
|
|
|
+ decimalWorkTime=decimalWorkTime.subtract(new BigDecimal(String.valueOf(map.get("workTime")))).setScale(1,RoundingMode.HALF_UP);
|
|
|
+ if(decimalWorkTime.doubleValue()<0){
|
|
|
+ decimalWorkTime=new BigDecimal(0);
|
|
|
+ }
|
|
|
+ map.put("surplusCost",decimalCost.doubleValue());
|
|
|
+ map.put("surplusTime",decimalWorkTime.doubleValue());
|
|
|
+ }else {
|
|
|
+ map.put("planCost",0);
|
|
|
+ map.put("planWorkTime",0);
|
|
|
+ map.put("surplusCost",0);
|
|
|
+ map.put("surplusTime",0);
|
|
|
+ }
|
|
|
+ map.put("userId",u.getId());
|
|
|
+ map.put("userName",u.getName());
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
u.setPersonWorkHoursWages(mapList);
|
|
|
u.setDepartmentCascade(u.getId().equals("0")?"小计":convertDepartmentIdToCascade(u.getDepartmentId(),departmentList));
|
|
|
double workTime = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("workTime")))).sum();
|
|
|
BigDecimal bigDecimal=new BigDecimal(workTime);
|
|
|
-// bigDecimal=bigDecimal.multiply(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- double cost = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("cost")))).sum();
|
|
|
+ double cost = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("cost")))).sum();
|
|
|
+ double planWorkTime = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("planWorkTime")))).sum();
|
|
|
+ BigDecimal planBigDecimal=new BigDecimal(planWorkTime);
|
|
|
+ double planCost = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("planCost")))).sum();
|
|
|
+ double surplusWorkTime = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("surplusTime")))).sum();
|
|
|
+ BigDecimal surplusBigDecimal=new BigDecimal(surplusWorkTime);
|
|
|
+ double surplusCost = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("surplusCost")))).sum();
|
|
|
u.setTotalResult(String.valueOf(bigDecimal.doubleValue())+"分钟 "+String.format("%.2f",cost)+"元");
|
|
|
+ u.setTotalPlanResult(String.valueOf(planBigDecimal.doubleValue())+"分钟 "+String.format("%.2f",planCost)+"元");
|
|
|
+ u.setTotalSurplusResult(String.valueOf(surplusBigDecimal.doubleValue())+"分钟 "+String.format("%.2f",surplusCost)+"元");
|
|
|
});
|
|
|
resultMap.put("total",userIPage.getTotal());
|
|
|
resultMap.put("records",userList);
|