Explorar el Código

修改绩效日报导出,增加合计

wukai hace 5 meses
padre
commit
d3cf5a6104

+ 40 - 6
ruoyi-admin/src/main/java/com/ruoyi/biz/controller/ApiController.java

@@ -596,6 +596,16 @@ public class ApiController extends BaseController {
             percentStyle.setVerticalAlignment(VerticalAlignment.CENTER);
             CellStyle p2 = wb.createCellStyle();
             p2.setDataFormat(wb.createDataFormat().getFormat("0.00"));
+            XSSFCellStyle bk = wb.createCellStyle();
+            bk.setFillForegroundColor(IndexedColors.LIGHT_ORANGE.getIndex());
+            bk.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+
+            XSSFCellStyle bkp = wb.createCellStyle();
+            bkp.setFillForegroundColor(IndexedColors.LIGHT_ORANGE.getIndex());
+            bkp.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+            bkp.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%"));
+            bkp.setVerticalAlignment(VerticalAlignment.CENTER);
+
             List<TwinEmpCalc> list = empCalcService.selectTwinEmpCalcListByDate(DateUtils.parseDate(date));
             Sheet sheet = wb.getSheetAt(0);
             Sheet bSheet = wb.cloneSheet(0);
@@ -606,9 +616,9 @@ public class ApiController extends BaseController {
             //按姓名分组
             Map<String, List<TwinEmpCalc>> mapA = list.stream().filter(o -> "A".equals(o.getEmpTeam())).collect(Collectors.groupingBy(TwinEmpCalc::getEmpName, LinkedHashMap::new, Collectors.toList()));
             Map<String, List<TwinEmpCalc>> mapB = list.stream().filter(o -> "B".equals(o.getEmpTeam())).collect(Collectors.groupingBy(TwinEmpCalc::getEmpName, LinkedHashMap::new, Collectors.toList()));
-            processJx(sheet, mapA, percentStyle, p2);
+            processJx(sheet, mapA, percentStyle, p2, bk, bkp);
 
-            processJx(bSheet, mapB, percentStyle, p2);
+            processJx(bSheet, mapB, percentStyle, p2, bk, bkp);
             wb.setSheetName(0, "A班经编生产绩效");
             wb.setSheetName(1, "B班经编生产绩效");
 
@@ -738,12 +748,15 @@ public class ApiController extends BaseController {
         }
     }
 
-    private void processJx(Sheet sheet, Map<String, List<TwinEmpCalc>> map, CellStyle percentStyle, CellStyle p2) {
+    private void processJx(Sheet sheet, Map<String, List<TwinEmpCalc>> map, CellStyle percentStyle, CellStyle p2, XSSFCellStyle bk, XSSFCellStyle bkp) {
         int rowNum = 2;
         for (String name : map.keySet()) {
             List<TwinEmpCalc> calcList = map.get(name);
             Map<Long, List<TwinEmpCalc>> calcMap = calcList.stream().collect(Collectors.groupingBy(TwinEmpCalc::getDeviceId, LinkedHashMap::new, Collectors.toList()));
             int sr = rowNum;
+            BigDecimal len = BigDecimal.ZERO;
+            BigDecimal total = BigDecimal.ZERO;
+            BigDecimal ef = BigDecimal.ZERO;
             for (Long deviceId : calcMap.keySet()) {
                 List<TwinEmpCalc> list = calcMap.get(deviceId);
                 int ssr = rowNum;
@@ -755,16 +768,22 @@ public class ApiController extends BaseController {
                     }
                     cells[0].setCellValue(name);
                     cells[1].setCellValue(calc.getDeviceId());
-                    cells[2].setCellValue(calc.getEfficiency().setScale(2, RoundingMode.HALF_UP).doubleValue());
-                    cells[2].setCellStyle(percentStyle);
+                    if (ssr == rowNum) {
+                        cells[2].setCellValue(calc.getEfficiency().setScale(2, RoundingMode.HALF_UP).doubleValue());
+                        cells[2].setCellStyle(percentStyle);
+                        ef = ef.add(calc.getEfficiency());
+                    }
 //                    cells[3].setCellValue();
                     cells[4].setCellValue(calc.getMick());
                     cells[5].setCellValue(calc.getDensity().setScale(2, RoundingMode.HALF_UP).doubleValue());
                     cells[5].setCellStyle(p2);
                     cells[6].setCellValue(calc.getLength().doubleValue());
+                    len = len.add(calc.getLength());
                     if (calc.getPrice() != null) {
+                        BigDecimal totalPrice = calc.getTotalPrice().setScale(2, RoundingMode.HALF_UP);
+                        total = total.add(totalPrice);
                         cells[7].setCellValue(calc.getPrice().doubleValue());
-                        cells[8].setCellValue(calc.getTotalPrice().doubleValue());
+                        cells[8].setCellValue(totalPrice.doubleValue());
                     }
                     rowNum++;
                 }
@@ -774,6 +793,21 @@ public class ApiController extends BaseController {
                     sheet.addMergedRegion(new CellRangeAddress(ssr, eer, 2, 2));
                 }
             }
+            Cell[] cells = new Cell[9];
+            Row row = sheet.createRow(rowNum);
+            for (int i = 0; i < cells.length; i++) {
+                cells[i] = row.createCell(i);
+                cells[i].setCellStyle(bk);
+            }
+            BigDecimal avgEf = ef.divide(BigDecimal.valueOf(calcMap.size()), 4, RoundingMode.HALF_UP);
+            cells[0].setCellValue(name);
+            cells[1].setCellValue("合计");
+            cells[2].setCellValue(avgEf.doubleValue());
+            cells[2].setCellStyle(bkp);
+            cells[6].setCellValue(len.doubleValue());
+            cells[8].setCellValue(total.doubleValue());
+            rowNum++;
+
             int er = rowNum - 1;
             sheet.addMergedRegion(new CellRangeAddress(sr, er, 0, 0));
         }

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/biz/service/impl/TaskServiceImpl.java

@@ -196,9 +196,9 @@ public class TaskServiceImpl implements ITaskService {
                 sqlSession.commit();
             }
         }
-//        dbProcess(endTime, calcHours, stopList, alarmsList, panList);
-//        stopService.process(ldt, list);
-//        alarmsService.process(ldt, list);
+        dbProcess(endTime, calcHours, stopList, alarmsList, panList);
+        stopService.process(ldt, list);
+        alarmsService.process(ldt, list);
         Date d = new Date();
         log.info("总共消耗:{}ms", d.getTime() - s.getTime());
 

BIN
ruoyi-admin/src/main/resources/static/favicon.ico


BIN
ruoyi-admin/src/main/resources/tpl/stops.xlsx