|
@@ -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));
|
|
|
}
|