diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java index 1ef5a72d6335b9d4298fcef175ef87952d3fafd3..b00a7d42c731b408e01a0a877d02ae5bcddf9ec9 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java @@ -1,13 +1,18 @@ package com.mortals.xhx.module.attendance.web; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ReflectUtil; import com.alibaba.fastjson.JSONObject; import com.mortals.framework.annotation.Excel; import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.OrderCol; +import com.mortals.framework.model.PageInfo; import com.mortals.framework.service.ICacheService; +import com.mortals.framework.util.StringUtils; +import com.mortals.framework.utils.ReflectUtils; import com.mortals.framework.utils.ServletUtils; +import com.mortals.framework.utils.poi.ExcelUtil; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.upload.service.UploadService; @@ -27,6 +32,7 @@ import com.mortals.xhx.module.dept.service.DeptService; import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; import com.mortals.xhx.module.perform.model.vo.AppealInfo; import com.mortals.xhx.module.staff.service.StaffService; +import org.apache.poi.ss.formula.functions.T; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -127,7 +133,7 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle @Override public void doExportAfter(Context context, List<AttendanceRecordEntity> list) throws AppException { - ArrayList<AttendanceRecordEntity> attendanceRecordEntities = new ArrayList<>(); + /* ArrayList<AttendanceRecordEntity> attendanceRecordEntities = new ArrayList<>(); for (AttendanceRecordEntity recordEntity : list) { List<AttendanceRecordDetailEntity> attendanceRecordDetailList = recordEntity.getAttendanceRecordDetailList(); @@ -150,9 +156,93 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle if (!ObjectUtils.isEmpty(attendanceRecordEntities)) { list.clear(); list.addAll(attendanceRecordEntities); - } + }*/ } + @Override + public void exportExcel(@RequestBody AttendanceRecordEntity query) { + Context context = getContext(); + String busiDesc = "瀵煎嚭" + getModuleDesc(); + List<String> properties = new ArrayList<>(); + try { + doExportBefore(context, query, properties); + String name = StringUtils.trim(this.moduleDesc); + if (StringUtils.isEmpty(name)) { + name = System.currentTimeMillis() + ""; + } + + String fileName = name + ".xlsx"; + PageInfo pageInfo = new PageInfo(-1); + List<AttendanceRecordEntity> list = this.service.find(query, pageInfo, getContext()).getList(); + Class<AttendanceRecordEntity> tClass = ReflectUtils.getClassGenricType(getClass(), 1); + ExcelUtil<AttendanceRecordEntity, Long> util = new ExcelUtil<>(tClass); + doExportAfter(context, list); + //姹傝缁嗘渶澶ф暟閲� + final Integer colSize = list.parallelStream().map(i -> i.getAttendanceRecordDetailList().size()).max(Comparator.comparing(Integer::intValue)).orElseGet(() -> 0); + //鏋勫缓鍔ㄦ€乴ist + List<List<Map<String, Object>>> lists = list.stream().map(item -> { + List<AttendanceRecordDetailEntity> attendanceRecordDetailList = item.getAttendanceRecordDetailList(); + List<Map<String, Object>> mapList = new ArrayList<>(); + + for (int i = 0; i < colSize; i++) { + + if (attendanceRecordDetailList.size() > i) { + AttendanceRecordDetailEntity detailEntity = attendanceRecordDetailList.get(i); + //鐢熸垚涓婄彮 缁撴灉 涓嬬彮 缁撴灉 4涓猰ap + Map<String, Object> map = new HashMap<>(); + map.put("name", String.format("涓婄彮鎵撳崱鏃堕棿%d", i + 1)); + map.put("value", DateUtil.formatDateTime(detailEntity.getGoWorkDate())); + mapList.add(map); + + map = new HashMap<>(); + map.put("name", String.format("涓婄彮鎵撳崱缁撴灉%d", i + 1)); + map.put("value", GoWorkResultEnum.getByValue(detailEntity.getGoWorkResult()).getDesc()); + mapList.add(map); + + map = new HashMap<>(); + map.put("name", String.format("涓嬬彮鎵撳崱鏃堕棿%d", i + 1)); + map.put("value", DateUtil.formatDateTime(detailEntity.getOffWorkDate())); + mapList.add(map); + + map = new HashMap<>(); + map.put("name", String.format("涓嬬彮鎵撳崱缁撴灉%d", i + 1)); + map.put("value", OffWorkResultEnum.getByValue(detailEntity.getOffWorkResult()).getDesc()); + mapList.add(map); + } else { + Map<String, Object> map = new HashMap<>(); + map.put("name", String.format("涓婄彮鎵撳崱鏃堕棿%d", i + 1)); + map.put("value", "--"); + mapList.add(map); + + map = new HashMap<>(); + map.put("name", String.format("涓婄彮鎵撳崱缁撴灉%d", i + 1)); + map.put("value", "--"); + mapList.add(map); + + map = new HashMap<>(); + map.put("name", String.format("涓嬬彮鎵撳崱鏃堕棿%d", i + 1)); + map.put("value", "--"); + mapList.add(map); + + map = new HashMap<>(); + map.put("name", String.format("涓嬬彮鎵撳崱缁撴灉%d", i + 1)); + map.put("value", "--"); + mapList.add(map); + } + } + return mapList; + }).collect(Collectors.toList()); + + byte[] data = util.exportExcel(list, properties, lists, name); + + // byte[] data = util.exportExcel(list, properties, name); + doExportFileAfter(data, query, context); + this.responseStream(response, data, fileName); + recordSysLog(request, busiDesc + " 銆愭垚鍔熴€�"); + } catch (Exception e) { + this.doException(request, "瀵煎嚭寮傚父", new HashMap<>(), e); + } + } @Override public void doExportFileAfter(byte[] data, AttendanceRecordEntity query, Context context) throws AppException {