소스 검색

按周审核日报过滤功能

zhouyy 4 달 전
부모
커밋
5675bb34b0

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -2230,6 +2230,22 @@ public class ReportController {
                 request);
     }
 
+    @RequestMapping("/listByStateNew")
+    public HttpRespMsg listByStateNew(@RequestParam Integer state,
+                                      Integer departmentId,
+                                      Integer projectId,
+                                      String date,
+                                      String startDate,
+                                      String endDate,
+                                      String userId,
+                                      String auditUserId,
+                                      HttpServletRequest request) {
+        return reportService.listByStateNew(state, departmentId,
+                projectId,
+                date, startDate, endDate, userId,auditUserId,
+                request);
+    }
+
     /**
      * 导出待审核日报列表
      * @param state

+ 11 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportBatch.java

@@ -1,21 +1,21 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.time.LocalDate;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 
@@ -88,6 +88,9 @@ public class ReportBatch extends Model<ReportBatch> {
     @TableField(exist = false)
     private String name;
 
+    @TableField(exist = false)
+    private String departmentId;
+
     @TableField(exist = false)
     private String departmentName;
 

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/WeekUserDaySummary.java

@@ -0,0 +1,17 @@
+package com.management.platform.entity;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+public class WeekUserDaySummary {
+    private LocalDate currentDate;
+    private String currentDateTxt;
+    private String weekDayTxt;
+//    private List<WeeklyProject> projectList;
+
+
+    private List<WeeklyChargeReportData> projectList;
+}

+ 19 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/WeekUserSummary.java

@@ -0,0 +1,19 @@
+package com.management.platform.entity;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+public class WeekUserSummary {
+    private String userId;
+    private String userName;
+    private LocalDate weekStart;
+    private LocalDate weekEnd;
+    private String weekStartTxt;
+    private String weekEndTxt;
+    private String departmentId;
+    private String departmentName;
+    private List<WeekUserDaySummary> daySummaryList;
+}

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/WeeklyChargeReportData.java

@@ -38,4 +38,6 @@ public class WeeklyChargeReportData {
     private Integer timeType;
     private String userId;
     private List<WeeklyChargeReportWorkTime> worktimeList;
+
+    private String weekDayTxt;
 }

+ 27 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/WeeklyDate.java

@@ -0,0 +1,27 @@
+package com.management.platform.entity;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+public class WeeklyDate {
+//    private String startDateText;
+//    private String endDateText;
+    private LocalDate startDate;
+    private LocalDate endDate;
+
+    /**仅为方便用*/
+    private LocalDate currentDate;
+    /**仅为方便用*/
+    private String currentDateText;
+    /**仅为方便用*/
+    private String weekDayTxt;
+    /**仅为方便用*/
+    private List<WeeklyDate> currentWeekDates;
+    /**仅为方便用*/
+    private List<WeeklyChargeReportData> currentDateProjectReports;
+    /**仅为方便用*/
+    private List<WeeklyProject> projects;
+}

+ 10 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/WeeklyProject.java

@@ -0,0 +1,10 @@
+package com.management.platform.entity;
+
+import lombok.Data;
+
+@Data
+public class WeeklyProject {
+    private Integer projectId;
+    private String projectName;
+    private String projectCode;
+}

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportBatchMapper.java

@@ -2,6 +2,10 @@ package com.management.platform.mapper;
 
 import com.management.platform.entity.ReportBatch;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.management.platform.entity.WeeklyDate;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ReportBatchMapper extends BaseMapper<ReportBatch> {
 
+    List<ReportBatch> getWeekData(@Param("startDate") String startDate,@Param("endDate") String endDate,@Param("companyId") Integer companyId);
+
+    List<WeeklyDate> getWeekDate(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("companyId") Integer companyId);
 }

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -12,7 +12,6 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.time.LocalDate;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -173,4 +172,7 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg getCurAuditNode(String date, String userId);
 
     HttpRespMsg getReportTimeLessThanCardTimeList(String date, Integer deptId, String userId);
+
+    HttpRespMsg listByStateNew(Integer state, Integer departmentId, Integer projectId, String date, String startDate, String endDate, String userId, String auditUserId, HttpServletRequest request);
+
 }

+ 339 - 18
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -19,6 +19,7 @@ import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.poi.EncryptedDocumentException;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -1649,7 +1650,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
     //获取待审核项目报告列表
     @Override
-    public HttpRespMsg getListByState(Integer state, Integer departmentId,
+    public HttpRespMsg listByStateNew(Integer state, Integer departmentId,
                                       Integer projectId,
                                       String date,
                                       String startDate,
@@ -1657,6 +1658,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                       String userId,String auditUserId,HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
+            long beforeStart = System.currentTimeMillis();
             User curUser = userMapper.selectById(request.getHeader("Token"));
             Integer companyId = curUser.getCompanyId();
             TimeType timeType = timeTypeMapper.selectById(companyId);
@@ -1887,39 +1889,358 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 }
             }
+            long beforeEnd = System.currentTimeMillis();
+
+            System.out.println("前置查询耗时:"+(beforeEnd-beforeStart)+"ms");
+
             if(1 == timeType.getWeeklyChargeFilter()){
-                Map<String,Object> resMap = new HashMap<>();
+//                Map<String,Object> resMap = new HashMap<>();
+                long afterStart = System.currentTimeMillis();
                 List<WeeklyChargeReports> weeklyChargeReports = JSONObject.parseArray(JSON.toJSON(nameList).toString(), WeeklyChargeReports.class);
-                System.out.println("weeklyChargeReports.size()== "+weeklyChargeReports.size());
-                List<Integer> finalProjectIdList = new ArrayList<>();
-                for (WeeklyChargeReports weeklyChargeReport : weeklyChargeReports) {
-                    List<Integer> projectIdList = weeklyChargeReport.getData().stream()
-                            .filter(t -> null != t.getProjectId())
-                            .map(WeeklyChargeReportData::getProjectId)
-                            .distinct()
-                            .collect(Collectors.toList());
-                    finalProjectIdList.addAll(projectIdList);
 
+                if(CollectionUtils.isNotEmpty(weeklyChargeReports)){
 
+                    // 人 周开始 周结束
+                    List<ReportBatch> weekData = reportBatchMapper.getWeekData(startDate, endDate, companyId);
 
-                }
-                finalProjectIdList = finalProjectIdList.stream().distinct().collect(Collectors.toList());
+                    List<WeeklyChargeReportData> allData = new ArrayList<>();
+                    for (WeeklyChargeReports weeklyChargeReport : weeklyChargeReports) {
+                        allData.addAll(weeklyChargeReport.getData());
+                    }
 
-                List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, companyId)
-                        .in(Project::getId, finalProjectIdList)
-                );
-                resMap.put("projects",projects);
+                    //按照人分组
+                    Map<String, List<WeeklyChargeReportData>> collect = allData.stream().collect(Collectors.groupingBy(WeeklyChargeReportData::getUserId));
 
+                    //日期不传
+//                    if(startDate != null && endDate != null){
+//
+//                    }
 
 
+//                    LocalDate now = LocalDate.now();
+//                    LocalDate monday = now.with(DayOfWeek.MONDAY);
+//                    LocalDate sunday = now.with(DayOfWeek.SUNDAY);
+//                    int dayIndex = now.getDayOfWeek().getValue();//当前天所处周的第几天
+                    List<WeekUserSummary> resList = new ArrayList<>();
+                    if(CollectionUtils.isNotEmpty(weekData)){
+                        for (ReportBatch weekDatum : weekData) {// 人 周开始 周结束
+                            WeekUserSummary weekUserSummary = new WeekUserSummary();
+                            weekUserSummary.setUserId(weekDatum.getCreatorId());
+                            weekUserSummary.setUserName(weekDatum.getName());
+                            weekUserSummary.setWeekStart(weekDatum.getStartDate());
+                            weekUserSummary.setWeekEnd(weekDatum.getEndDate());
+                            weekUserSummary.setDepartmentId(weekDatum.getDepartmentId());
+                            weekUserSummary.setDepartmentName(weekDatum.getDepartmentName());
+                            weekUserSummary.setWeekStartTxt(weekDatum.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                            weekUserSummary.setWeekEndTxt(weekDatum.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                            List<WeekUserDaySummary> daySummaryList = new ArrayList<>();
+                            List<WeeklyChargeReportData> userReportData = collect.get(weekDatum.getCreatorId());
+                            //当前人的所有未审核日报
+                            if(CollectionUtils.isNotEmpty(userReportData)){
+                                //若当前时间段内未填报日报为空,则跳过
+                                long count = userReportData.stream().filter(t -> {
+                                    LocalDate tmpDate = LocalDate.parse(t.getDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                                    if ((tmpDate.isEqual(weekDatum.getStartDate()) || tmpDate.isAfter(weekDatum.getStartDate()))
+                                            && (tmpDate.isEqual(weekDatum.getEndDate()) || tmpDate.isBefore(weekDatum.getEndDate()))) {
+                                        //数据在指定时间段内
+                                        return true;
+                                    } else {
+                                        return false;
+                                    }
+                                }).count();
+                                if(count <=0){
+                                    continue;
+                                }
+                                //获取当前区间内的日报
+                                for (int i = 0; i < 7; i++) {
+                                    WeekUserDaySummary weekUserDaySummary = new WeekUserDaySummary();
+                                    weekUserDaySummary.setCurrentDate(weekDatum.getStartDate().plusDays(i));
+                                    weekUserDaySummary.setCurrentDateTxt(weekUserDaySummary.getCurrentDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                                    weekUserDaySummary.setWeekDayTxt(DateTimeUtil.getWeekDayTxt(i+1));
+                                    List<WeeklyChargeReportData> tmpDayData = userReportData.stream().filter(t -> {
+                                        LocalDate tmpDate = LocalDate.parse(t.getDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                                        if (tmpDate.isEqual(weekUserDaySummary.getCurrentDate())) {
+                                            //数据在指定天
+                                            return true;
+                                        } else {
+                                            return false;
+                                        }
+                                    }).collect(Collectors.toList());
+                                    weekUserDaySummary.setProjectList(tmpDayData);
+//                                    tmpDayData.forEach(t->{
+//
+//                                    });
+                                    daySummaryList.add(weekUserDaySummary);
+                                }
+                                weekUserSummary.setDaySummaryList(daySummaryList);
+                                resList.add(weekUserSummary);
+                            }
+
+                        }
+                    }
 
+                    long afterEnd = System.currentTimeMillis();
+                    System.out.println("后置拼接耗时:"+(afterEnd-afterStart)+"ms");
 
+                    httpRespMsg.data = resList;
+                }
 
-                httpRespMsg.data = resMap;
             }else{
                 httpRespMsg.data = nameList;
             }
 
+//            httpRespMsg.data = nameList;
+
+        } catch (NullPointerException e) {
+            //httpRespMsg.setError("验证失败");
+            e.printStackTrace();
+            httpRespMsg.setError(MessageUtils.message("access.verificationError"));
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
+    //获取待审核项目报告列表
+    @Override
+    public HttpRespMsg getListByState(Integer state, Integer departmentId,
+                                      Integer projectId,
+                                      String date,
+                                      String startDate,
+                                      String endDate,
+                                      String userId,String auditUserId,HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            User curUser = userMapper.selectById(request.getHeader("Token"));
+            Integer companyId = curUser.getCompanyId();
+            TimeType timeType = timeTypeMapper.selectById(companyId);
+            Integer isParallel = timeType.getReportAuditType() == 7? 1 : 0;
+            Integer isEngeering = companyMapper.selectById(companyId).getPackageEngineering();
+            String leaderId = null;
+            List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(curUser.getRoleId(), "审核全员日报");
+            if (functionList.size() == 0) {//没有全员审核的权限
+                leaderId = curUser.getId();
+            }
+            List<String> targetUids = null;
+            if (!StringUtils.isEmpty(userId)) {
+                targetUids = ListUtil.convertLongIdsArrayToList(userId);
+            }
+            List<Map<String, Object>> auditReportList = reportMapper.getAuditReportList(date, companyId, departmentId, projectId, leaderId, isEngeering, startDate, endDate, targetUids,auditUserId, isParallel);
+            //针对依斯贝增加服务名称显示
+            if (companyId == 3092) {
+                List<SapProjectService> serviceList = sapProjectServiceMapper.selectList(new QueryWrapper<SapProjectService>().eq("company_id", companyId));
+                for (Map<String, Object> mapItem : auditReportList) {
+                    Integer sapServiceId = (Integer)mapItem.get("sapServiceId");
+                    if (sapServiceId != null) {
+                        Optional<SapProjectService> first = serviceList.stream().filter(s -> s.getId().equals(sapServiceId)).findFirst();
+                        if (first.isPresent()) {
+                            mapItem.put("sapServiceName", first.get().getServiceName());
+                        }
+                    }
+                }
+            }
+            //抽取姓名,进行分组
+            List<Map<String, Object>> nameList = new ArrayList<Map<String, Object>>();
+            Map<String, Object> lastName = null;
+            //某个用户某天下的各个项目日报列表
+            List<Map<String, Object>> userDailyReportList = null;
+            for (Map a : auditReportList) {
+                String createDate = (String)a.get("date");
+                String name = (String)a.get("name");
+                String uid = (String)a.get("userId");
+                String corpwxUserid = (String)a.get("corpwxUserid");
+
+                if (lastName == null || !(lastName.get("name").equals(name) && lastName.get("dateStr").equals(createDate))) {
+                    lastName = new HashMap<String, Object>();
+                    lastName.put("dateStr", createDate);
+                    lastName.put("name", name);
+                    lastName.put("userId", uid);
+                    lastName.put("corpwxUserid", corpwxUserid);
+                    nameList.add(lastName);
+                    userDailyReportList = new ArrayList<>();
+                    lastName.put("data", userDailyReportList);
+                }
+                //每组日报数据都加上去
+                userDailyReportList.add(a);
+            }
+            List<Profession> professions = new ArrayList<>();
+            if (isEngeering == 1) {
+                professions = professionMapper.selectList(new QueryWrapper<Profession>().eq("company_id", curUser.getCompanyId()));
+            }
+            for (int index=0;index<nameList.size(); index++) {
+                Map<String, Object> map2 = nameList.get(index);
+                List<Map<String, Object>> list2 = (List)map2.get("data");
+                //项目专业进度
+                if (isEngeering == 1) {
+                    final List<Profession> fProfessList = professions;
+                    for (Map<String, Object> map : list2) {
+                        //获取当前项目的工程专业进度
+                        List<ReportProfessionProgress> progressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().eq("report_id", (int)map.get("id")));
+                        progressList.stream().forEach(p->{
+                            p.setProfessionName(fProfessList.stream().filter(m->m.getId().equals(p.getProfessionId())).findFirst().get().getName());
+                        });
+                        map.put("professionProgressList", progressList);
+                    }
+                }
+
+                double reportTime = 0;
+                BigDecimal total = new BigDecimal(0);
+                //计算每日汇总的工时成本
+                for (Map<String, Object> m : list2) {
+                    double t = (double) m.get("time");
+                    reportTime += t;
+                    total = total.add((BigDecimal)m.get("cost"));
+                }
+                DecimalFormat df = new DecimalFormat("0.00");
+                map2.put("reportTime", df.format(reportTime));
+                map2.put("cost", total);
+                map2.put("state", list2.get(0).get("state"));
+                map2.put("auditDeptName", list2.get(0).get("auditDeptName"));
+                map2.put("isDeptAudit", list2.get(0).get("isDeptAudit"));
+                map2.put("groupAuditState", list2.get(0).get("groupAuditState"));
+                map2.put("deptAuditorName", list2.get(0).get("deptAuditorName"));
+                //增加填报人所属部门
+                map2.put("departmentName", list2.get(0).get("departmentName"));
+            }
+            //设置照片显示
+            for (Map map : nameList) {
+                List<Map<String, Object>> reportList = (List<Map<String, Object>>)map.get("data");
+                for (Map<String, Object> report : reportList) {
+                    String picStr = (String)report.get("picStr");
+                    if (picStr != null && !"@".equals(picStr)) {
+                        JSONArray array = JSONArray.parseArray(picStr.replaceAll("@", ","));
+                        List<String> picList = new ArrayList<>();
+                        for (int i=0;i<array.size(); i++) {
+                            String picName = array.getString(i);
+                            if (!picName.contains(".")) {
+                                picName += ".jpg";
+                            }
+                            picList.add("/upload/" + picName);
+                        }
+                        report.put("pics", picList);
+                    }
+                    if (((Integer)report.get("multiWorktime")) == 1) {
+                        //设置多个工时情况下的报告列表
+                        String timeStr = (String)report.get("content");
+                        report.put("worktimeList", JSONArray.parse(timeStr));
+                    }
+                }
+            }
+            //针对昱众,设置职能分工显示
+            if (companyId == 3385) {
+                List<ProjectFunctionalDivision> allDivList = projectFunctionalDivisionMapper.selectList(new QueryWrapper<ProjectFunctionalDivision>().eq("company_id", companyId));
+                List<ProFunWorkContext> allWorkContextList = proFunWorkContextMapper.selectList(new QueryWrapper<>());
+                for (Map map : nameList) {
+                    List<Map<String, Object>> reportList = (List<Map<String, Object>>)map.get("data");
+                    for (Map<String, Object> report : reportList) {
+                        Integer extraField2 = (Integer)report.get("extraField2");
+                        Optional<ProjectFunctionalDivision> first = allDivList.stream().filter(d->d.getId().equals(extraField2)).findFirst();
+                        if (first.isPresent()) {
+                            ProjectFunctionalDivision divItem = first.get();
+                            report.put("extraField2Name", divItem.getJobRespon());
+                        }
+                        Integer extraField3 = (Integer)report.get("extraField3");
+                        Optional<ProFunWorkContext> first2 = allWorkContextList.stream().filter(d->d.getId().equals(extraField3)).findFirst();
+                        if (first2.isPresent()) {
+                            ProFunWorkContext workItem = first2.get();
+                            report.put("extraField3Name", workItem.getWorkContext());
+                        }
+                    }
+                }
+            }
+            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            String minDate = null;
+            String maxDate = null;
+            if (nameList.size() > 0) {
+                List<String> dateList = nameList.stream().map(m->(String)m.get("dateStr")).collect(Collectors.toList());
+                //获取最大和最小日期
+                minDate = dateList.stream().min(Comparator.comparing(String::toString)).get();
+                maxDate = dateList.stream().max(Comparator.comparing(String::toString)).get();
+            }
+            //设置每人每日考勤打卡时长
+            if (timeType.getShowCorpwxCardtime() == 1) {
+                //企业微信的情况
+                QueryWrapper<UserCorpwxTime> userCorpwxTimeQueryWrapper = new QueryWrapper<>();
+                if (nameList.size() > 0) {
+                    //获取日期范围
+                    userCorpwxTimeQueryWrapper.between("create_date", minDate, maxDate).eq("company_id", companyId);
+                    List<UserCorpwxTime> timeList = userCorpwxTimeMapper.selectList(userCorpwxTimeQueryWrapper);
+                    //过滤匹配当前的数据
+                    for (Map map : nameList) {
+                        String corpwxUserid = (String)map.get("corpwxUserid");
+                        String name = (String)map.get("name");
+                        String dateStr = (String)map.get("dateStr");
+                        Optional<UserCorpwxTime> first = timeList.stream().filter(time -> ((time.getCorpwxUserid() != null && time.getCorpwxUserid().equals(corpwxUserid)) || (time.getCorpwxUserid() == null && name != null && name.equals(time.getName()))) && dtf.format(time.getCreateDate()).equals(dateStr)).findFirst();
+                        if (first.isPresent()) {
+                            double wh = first.get().getWorkHours();
+                            //赋值打卡时长
+                            map.put("cardHours", wh);
+                        }
+                    }
+                }
+            } else if (timeType.getShowDdCardtime() == 1) {
+                //钉钉的情况
+                QueryWrapper<UserDingdingTime> userDingdingTimeQueryWrapper = new QueryWrapper<>();
+                if (nameList.size() > 0) {
+                    userDingdingTimeQueryWrapper.between("work_date", minDate, maxDate).eq("company_id", companyId);
+                    List<UserDingdingTime> timeList = userDingdingTimeMapper.selectList(userDingdingTimeQueryWrapper);
+                    //过滤匹配当前的数据
+                    for (Map map : nameList) {
+                        String itemUid = (String)map.get("userId");
+                        String dateStr = (String)map.get("dateStr");
+                        Optional<UserDingdingTime> first = timeList.stream().filter(time -> time.getUserId().equals(itemUid) && dtf.format(time.getWorkDate()).equals(dateStr)).findFirst();
+                        if (first.isPresent()) {
+                            double wh = first.get().getWorkHours();
+                            //赋值打卡时长
+                            map.put("cardHours", wh);
+                        }
+                    }
+                }
+            } else if(timeType.getSyncFanwei()==1){
+                //泛微的情况
+                QueryWrapper<UserFvTime> userFvTimeQueryWrapper = new QueryWrapper<>();
+                if (nameList.size() > 0) {
+                    userFvTimeQueryWrapper.between("work_date", minDate, maxDate).eq("company_id", companyId);
+                    List<UserFvTime> timeList = userFvTimeMapper.selectList(userFvTimeQueryWrapper);
+                    //过滤匹配当前的数据
+                    for (Map map : nameList) {
+                        String itemUid = (String)map.get("userId");
+                        String dateStr = (String)map.get("dateStr");
+                        Optional<UserFvTime> first = timeList.stream().filter(time -> time.getUserId().equals(itemUid) && dtf.format(time.getWorkDate()).equals(dateStr)).findFirst();
+                        if (first.isPresent()) {
+                            double wh = first.get().getWorkHours();
+                            //赋值打卡时长
+                            map.put("cardHours", wh);
+                        }
+                    }
+                }
+            }
+            //解析自定义多选的
+            if (timeType.getCustomDegreeActive() == 1 && timeType.getCustomDegreeMultiple()) {
+                List<ReportExtraDegree> extraList = reportExtraDegreeMapper.selectList(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
+                for (Map map : nameList) {
+                    List<Map<String, Object>> reportList = (List<Map<String, Object>>)map.get("data");
+                    for (Map<String, Object> report : reportList) {
+                        String multiDegrId = (String)report.get("multiDegrId");
+                        if (multiDegrId != null) {
+                            multiDegrId = multiDegrId.replace("@", ",");
+                            JSONArray array = JSONArray.parseArray(multiDegrId);
+                            String s = "";
+                            for (int i=0;i<array.size(); i++) {
+                                int item = array.getInteger(i);
+                                Optional<ReportExtraDegree> find = extraList.stream().filter(ex->ex.getId().equals(item)).findFirst();
+                                if (find.isPresent()) {
+                                    s += find.get().getName() + ",";
+                                }
+                            }
+                            if (s.length() > 0) {
+                                s = s.substring(0, s.length()-1);
+                            }
+                            report.put("degreeName", s);
+                        }
+                    }
+                }
+            }
+            httpRespMsg.data = nameList;
         } catch (NullPointerException e) {
             //httpRespMsg.setError("验证失败");
             e.printStackTrace();

+ 28 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportBatchMapper.xml

@@ -20,5 +20,33 @@
     <sql id="Base_Column_List">
         id, creator_id, start_date, end_date, total_work_time, state, create_time, company_id, summary, attachment
     </sql>
+    <select id="getWeekData" resultType="com.management.platform.entity.ReportBatch">
+        select rb.creator_id,rb.start_date,rb.end_date,user.name,user.department_id,d.department_name
+        from report_batch rb
+        left join user on rb.creator_id = user.id
+        left join department d on user.department_id = d.department_id
+        <where>
+            rb.company_id = #{companyId}
+            and rb.state = 0
+            <if test="endDate != null and startDate != null and startDate!= '' and endDate != ''">
+                and  rb.start_date &lt; #{endDate} and rb.end_date &gt; #{startDate}
+            </if>
+        </where>
+        group by rb.creator_id,rb.start_date
+        order by rb.creator_id asc,rb.start_date desc
+    </select>
+    <select id="getWeekDate" resultType="com.management.platform.entity.WeeklyDate">
+        select start_date as startDate ,end_date as endDate
+        from report_batch
+        <where>
+            company_id = #{companyId}
+            and state = 0
+            <if test="endDate != null and startDate != null and startDate!= '' and endDate != ''">
+                and  start_date &lt; #{endDate} and end_date &gt; #{startDate}
+            </if>
+        </where>
+        group by start_date
+        order by start_date
+    </select>
 
 </mapper>