Sfoglia il codice sorgente

导出日报加一列考勤时长
未填报人员请假不显示

yurk 3 anni fa
parent
commit
6230d90771

+ 9 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserCorpwxTime.java

@@ -1,14 +1,17 @@
 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 com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+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;
 
 /**
  * <p>
@@ -29,6 +32,8 @@ public class UserCorpwxTime extends Model<UserCorpwxTime> {
     private Integer id;
 
     @TableField("create_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate createDate;
 
     /**

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1348,13 +1348,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         String[] statusNames = {"进行中","已完成","已撤销"};
         String[] typeList = {"任务","里程碑","风险"};
         List<List<String>> exportList = new ArrayList<>();
-        String[] titles = {"项目编号", "项目名称", "任务名称", "计划工时(h)", "实际工时(h)","状态", "类型", "截止日期"};
+        String[] titles = {"项目编号", "项目名称", "任务名称", "执行人","计划工时(h)", "实际工时(h)","状态", "类型", "截止日期"};
         exportList.add(Lists.list(titles));
         for (Map task : projectList) {
             List<String> data = new ArrayList<>();
             data.add(task.get("project_code") == null?"":task.get("project_code").toString());
             data.add(task.get("project_name") == null?"":task.get("project_name").toString());
             data.add(task.get("name") != null?task.get("name").toString():"");
+            data.add(task.get("executor_name") != null?task.get("executor_name").toString():"");
             data.add(task.get("plan_hours") != null?task.get("plan_hours").toString():"");
             data.add(task.get("real_hours").toString());
             data.add(task.get("task_status")==null?"":statusNames[Integer.parseInt(task.get("task_status").toString())]);

+ 33 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.DateFormat;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
@@ -2264,7 +2265,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 List<Integer> collect = subDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList());
                 list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, collect, null);
                 //部门负责人看自己部门相关的
-                allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", collect));
+                allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", collect).orderByDesc("department_id"));
             } else {
                 //看自己的所负责的项目相关人员的
                 list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, null, user.getId());
@@ -2275,14 +2276,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", collect));
                     List<String> collect1 = participationList.stream().map(Participation::getUserId).collect(Collectors.toList());
                     if (collect1.size() > 0) {
-                        allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("id", collect1));
+                        allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("id", collect1).orderByDesc("department_id"));
                     }
                 }
             }
         } else {
             list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, null, null);
             //管理员看全公司所有人
-            allRangeUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
+            allRangeUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).orderByDesc("department_id"));
         }
         List<User> needRangeUserList=new ArrayList<>();
         for (User u : allRangeUserList) {
@@ -2772,6 +2773,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Override
     public HttpRespMsg exportReport(@RequestParam String startDate, @RequestParam String endDate, Integer projectId,Integer stateKey,Integer departmentId, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
+        DateFormat timeDf = new SimpleDateFormat("yyyy-MM-dd");
         try {
             String userId = request.getHeader("Token");
             User user = userMapper.selectById(userId);
@@ -2825,6 +2827,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if(stateKey==1){
                 titles.add("审核状态");
             }
+            if(timeType.getSyncCorpwxTime()==1){
+                titles.add("考勤时长");
+            }
             //创建表头
             HSSFRow headRow = sheet.createRow(0);
             //设置列宽 setColumnWidth的第二个参数要乘以256 这个参数的单位是1/256个字符宽度
@@ -2917,6 +2922,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 //看公司所有人的
                 allReportByDate = reportMapper.getAllReportByDate(startDate, user.getCompanyId(), null, endDate, projectId,stateKey,departmentId);
             }
+            //获取企业微信考勤数据
+            List<UserCorpwxTime> userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", user.getCompanyId()).between("create_date", startDate, endDate));
             if (timeType.getMultiWorktime() == 1) {
                 java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
                 //重新处理一下数据,把工作时间和工作事项移出来
@@ -3043,6 +3050,16 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         case 1:row.createCell(index).setCellValue("已通过");
                             break;
                     }
+                    index++;
+                }
+                if(timeType.getSyncCorpwxTime()==1){
+                    for (UserCorpwxTime userCorpwxTime : userCorpwxTimeList) {
+                        String s = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(userCorpwxTime.getCreateDate());
+                        String s1 = timeDf.format(map.get("createDate"));
+                        if(map.get("corpwxUserId").equals(userCorpwxTime.getCorpwxUserid())&&s.equals(s1)){
+                            row.createCell(index).setCellValue(userCorpwxTime.getStartTime()+"-"+userCorpwxTime.getEndTime()+",工作时长"+userCorpwxTime.getWorkHours());
+                        }
+                    }
                 }
                 rowNum++;
             }
@@ -3299,6 +3316,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
         long cnt = localStart.until(localEnd, ChronoUnit.DAYS);
         List<String> cpwxIds = new ArrayList<>();
+        //获取请假数据
+        List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", user.getCompanyId()));
         //按人员过滤
         for (User curUser: allRangeUserList){
                 for (int i=0;i<=cnt; i++) {
@@ -3338,7 +3357,18 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             noRecord.department = "无";
                         }
                         noRecord.name = curUser.getName();
+                        //请假的
+                        List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(curUser.getId())
+                                &&(ls.getStartDate().isAfter(LocalDate.parse(startDate))||ls.getStartDate().isEqual(LocalDate.parse(startDate)))
+                                &&(ls.getEndDate().isBefore(LocalDate.parse(endDate))||ls.getEndDate().isEqual(LocalDate.parse(endDate)))).collect(Collectors.toList());
+                        System.out.println(date);
+                        System.out.println(leaveSheets);
                         noReportDataList.add(noRecord);
+                        for (LeaveSheet leaveSheet : leaveSheets) {
+                            if(!(date.isBefore(leaveSheet.getStartDate())||date.isAfter(leaveSheet.getEndDate()))){
+                                noReportDataList.remove(noRecord);
+                            }
+                        }
                     }
                 }
         }

+ 3 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -54,7 +54,7 @@
 
     <!--根据日期获取全部报告信息-->
     <select id="getAllReportByDate" resultType="java.util.Map">
-        SELECT a.id, c.name, b.project_name AS project,b.category_name as categoryName, a.working_time AS duration, a.content, a.create_time AS time, a.create_date as createDate,
+        SELECT a.id, c.name,c.corpwx_userid as corpwxUserId, b.project_name AS project,b.category_name as categoryName, a.working_time AS duration, a.content, a.create_time AS time, a.create_date as createDate,
         a.state, a.time_type as timeType, a.cost, a.report_time_type as reportTimeType, a.start_time as startTime,
         a.end_time as endTime, d.name as subProjectName,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
         a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime
@@ -121,7 +121,7 @@
     </select>
 
     <select id="getProjectMembReportByDate" resultType="java.util.Map">
-        SELECT a.id, c.name, b.project_name AS project, b.category_name as categoryName,a.working_time AS duration,
+        SELECT a.id, c.name,c.corpwx_userid as corpwxUserId, b.project_name AS project, b.category_name as categoryName,a.working_time AS duration,
         a.content, a.create_time AS time, a.create_date as createDate,
         a.state, a.time_type as timeType, a.cost, a.report_time_type as reportTimeType, a.start_time as startTime,
         a.end_time as endTime, d.name as subProjectName,a.task_id as taskId, task.name as taskName, a.is_overtime as
@@ -166,7 +166,7 @@
     </select>
 
     <select id="getDeptMembReportByDate" resultType="java.util.Map">
-        SELECT a.id, c.name, b.project_name AS project, a.working_time AS duration, a.content, a.create_time AS time, a.create_date as createDate,
+        SELECT a.id, c.name,c.corpwx_userid as corpwxUserId, b.project_name AS project, a.working_time AS duration, a.content, a.create_time AS time,a.create_date as createDate,
         a.state, a.time_type as timeType, a.cost, a.report_time_type as reportTimeType, a.start_time as startTime,
         a.end_time as endTime, d.name as subProjectName,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
         a.department_audit_state as departmentAuditState,a.stage, a.pic_str as picStr, multi_worktime as multiWorktime

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml

@@ -157,7 +157,7 @@
     </select>
 
     <select id="getProjectTask" resultType="java.util.Map">
-        SELECT task.id, task.`name`, DATE_FORMAT(task.`end_date`, '%Y-%m-%d') as end_date, task.`plan_hours`,
+        SELECT task.id, task.`name`,task.executor_name,DATE_FORMAT(task.`end_date`, '%Y-%m-%d') as end_date, task.`plan_hours`,
         (SELECT IFNULL(SUM(working_time),0) FROM report WHERE report.`task_id` = task.id AND report.`state` = 1) AS real_hours,
         task.`task_status`, task.`task_type`,
         project.`project_code`, project.`project_name` FROM task LEFT JOIN project ON project.id = task.`project_id`