Min 1 年之前
父节点
当前提交
a0f4c8da13

+ 50 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5049,6 +5049,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             Map<Object, List<Map<String, Object>>> listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("deptId")))));
             BigDecimal planNum=new BigDecimal(0);
             BigDecimal nowNum=new BigDecimal(0);
+            BigDecimal planCost=new BigDecimal(0);
+            BigDecimal nowCost=new BigDecimal(0);
+            BigDecimal planHour=new BigDecimal(0);
+            BigDecimal nowHour=new BigDecimal(0);
             for (Integer dept : deptIdList) {
                 Map<String,Object> item=new HashMap<>();
                 item.put("startDate",date.replaceAll("-",""));
@@ -5058,10 +5062,24 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 for (Map<String, Object> map : list) {
                     planNum=planNum.add(new BigDecimal((String.valueOf(map.get("planNum")))));
                     nowNum=nowNum.add(new BigDecimal((String.valueOf(map.get("nowNum")))));
+                    planCost=planCost.add(new BigDecimal((String.valueOf(map.get("planCost")))));
+                    nowCost=nowCost.add(new BigDecimal((String.valueOf(map.get("nowCost")))));
+                    planHour=planHour.add(new BigDecimal((String.valueOf(map.get("planHour")))));
+                    nowHour=nowHour.add(new BigDecimal((String.valueOf(map.get("nowHour")))));
                 }
+                planNum=planNum.setScale(2,BigDecimal.ROUND_HALF_UP);
+                nowNum=nowNum.setScale(2,BigDecimal.ROUND_HALF_UP);
+                planCost=planCost.setScale(2,BigDecimal.ROUND_HALF_UP);
+                nowCost=nowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
+                planHour=planHour.setScale(2,BigDecimal.ROUND_HALF_UP);
+                nowHour=nowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
                 item.put("planNum",planNum.doubleValue());
                 item.put("nowNum",nowNum.doubleValue());
-                BigDecimal progress = nowNum.divide(planNum, RoundingMode.HALF_UP);
+                item.put("planCost",planCost.doubleValue());
+                item.put("nowCost",nowCost.doubleValue());
+                item.put("planHour",planHour.doubleValue());
+                item.put("nowHour",nowHour.doubleValue());
+                BigDecimal progress = nowNum.divide(planNum,2, BigDecimal.ROUND_HALF_UP);
                 item.put("progress",format.format(progress.doubleValue()));
                 resultList.add(item);
             }
@@ -5071,7 +5089,37 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         for (String dept : deptIdList) {
             Map<String,Object> map=new HashMap<>();
             map.put("departmentCascade",convertDepartmentIdToCascade(Integer.valueOf(dept),departmentList));
-            map.put("deptList",resultList.stream().filter(r->String.valueOf(r.get("deptId")).equals(dept)).collect(Collectors.toList()));
+            List<Map<String, Object>> maps = resultList.stream().filter(r -> String.valueOf(r.get("deptId")).equals(dept)).collect(Collectors.toList());
+            map.put("deptList",maps);
+            map.put("deptId",dept);
+            BigDecimal totalPlanNum = new BigDecimal(0);
+            BigDecimal totalNowNum = new BigDecimal(0);
+            BigDecimal totalPlanHour = new BigDecimal(0);
+            BigDecimal totalNowHour = new BigDecimal(0);
+            BigDecimal totalPlanCost = new BigDecimal(0);
+            BigDecimal totalNowCost= new BigDecimal(0);
+            for (Map<String, Object> stringObjectMap : maps) {
+                totalPlanNum=totalPlanNum.add(new BigDecimal((String.valueOf(stringObjectMap.get("planNum")))));
+                totalNowNum=totalNowNum.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowNum")))));
+                totalPlanHour=totalPlanHour.add(new BigDecimal((String.valueOf(stringObjectMap.get("planHour")))));
+                totalNowHour=totalNowHour.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowHour")))));
+                totalPlanCost=totalPlanCost.add(new BigDecimal((String.valueOf(stringObjectMap.get("planCost")))));
+                totalNowCost=totalNowCost.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowCost")))));
+            }
+            totalPlanNum=totalPlanNum.setScale(2,BigDecimal.ROUND_HALF_UP);
+            totalNowNum=totalNowNum.setScale(2,BigDecimal.ROUND_HALF_UP);
+            totalPlanHour=totalPlanHour.setScale(2,BigDecimal.ROUND_HALF_UP);
+            totalNowHour=totalNowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
+            totalPlanCost=totalPlanCost.setScale(2,BigDecimal.ROUND_HALF_UP);
+            totalNowCost=totalNowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
+            map.put("totalPlanNum",totalPlanNum.doubleValue());
+            map.put("totalNowNum",totalNowNum.doubleValue());
+            map.put("totalPlanHour",totalPlanHour.doubleValue());
+            map.put("totalNowHour",totalNowHour.doubleValue());
+            map.put("totalPlanCost",totalPlanCost.doubleValue());
+            map.put("totalNowCost",totalNowCost.doubleValue());
+            BigDecimal totalProgress = totalNowNum.divide(totalPlanNum, 2, BigDecimal.ROUND_HALF_UP);
+            map.put("totalProgress",format.format(totalProgress.doubleValue()));
             lastList.add(map);
         }
         //得到的数据再根据部门过滤一下

+ 5 - 5
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml

@@ -457,11 +457,11 @@
     </select>
 
     <select id="getPlanDataWithStation" resultType="java.util.Map">
-        select p.id, p.num as planNum,
-        ROUND(IFNULL(ROUND(SUM(ppt.total_fill_time)/SUM(ppt.total_working_hours), 2),0)*p.num,2) as nowNum,d.department_id as deptId,p.start_date as startDate
-         from plan p
-        left join plan_procedure_total ppt on ppt.plan_id=p.id
-        left join department d on p.station_id=d.department_id
+        SELECT p.id, p.num AS planNum,SUM(ppt.`total_working_hours`) AS  planHour ,IFNULL(SUM(ppt.`total_fill_time`),0) AS nowHour,SUM(ppt.`total_wages`) AS planCost,IFNULL(SUM(ppt.`total_wages`*ppt.`total_progress`/100),0) AS nowCost,
+        IFNULL(ROUND(IFNULL(ROUND(SUM(ppt.total_fill_time)/SUM(ppt.total_working_hours), 2),0)*p.num,2),0) AS nowNum,d.department_id AS deptId,p.start_date AS startDate
+        FROM plan p
+        LEFT JOIN plan_procedure_total ppt ON ppt.plan_id=p.id
+        LEFT JOIN department d ON p.station_id=d.department_id
         <where>
             p.company_id=#{companyId}
             <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">