Переглянути джерело

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

Lijy 2 роки тому
батько
коміт
c85febb7d3

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/GanttDataItem.java

@@ -18,6 +18,7 @@ public class GanttDataItem {
     public Integer projectId;
     public String render;
     public String type;
+    public String translationType;
     public String color;
     public List<GanttDataItem> children;
 }

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

@@ -13,8 +13,10 @@ import java.util.Map;
 public class TimelinessRateVO {
     private String userName;
     private String corpwxUserId;
+    private Integer corpwxDeptId;
     private String departmentName;
     private String timelinessRate;
+    private String timelinessRateWithLeave;
     private String jobNumber;
     private List<Map<String,Object>> dataList;
 }

+ 81 - 32
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -5939,13 +5939,33 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             TimelinessRateVO timelinessRateVO=new TimelinessRateVO();
             timelinessRateVO.setUserName(user.getName());
             timelinessRateVO.setJobNumber(user.getJobNumber());
-            timelinessRateVO.setTimelinessRate(String.valueOf(dft.format(0)));
+            timelinessRateVO.setCorpwxDeptId(user.getCorpwxDeptid());
+            timelinessRateVO.setCorpwxUserId(user.getCorpwxUserid());
             Optional<Department> first = departmentList.stream().filter(dp -> dp.getDepartmentId().equals(user.getDepartmentId())).findFirst();
             if(first.isPresent()){
                 timelinessRateVO.setDepartmentName(first.get().getDepartmentName());
             }
             List<Map<String, Object>> mapList = listMap.get(user.getName());
+            //去掉填非工作日
+            for (LocalDateTime localDateTime : dateTimeList) {
+                if(mapList!=null){
+                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())&&!mapList.stream().anyMatch(ml->{
+                        Object date = ml.get("createDate");
+                        LocalDate createDate = LocalDate.parse(String.valueOf(date));
+                        return createDate.isEqual(localDateTime.toLocalDate());
+                    })){
+                        days-=1;
+                    }
+                }else {
+                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())){
+                        days-=1;
+                    }
+                }
+
+            }
             //请假的不参与及时率统计
+            //todo: 此处对请假的 数据做处理 计请假填报
+            long daysWithLeave =days;
             if(leaveSheets.size()>0){
                 for (LeaveSheet leaveSheet : leaveSheets) {
                     List<LocalDateTime> leaveDateList = getDays(leaveSheet.getStartDate().atTime(LocalTime.MIN), leaveSheet.getEndDate().atTime(LocalTime.MIN));
@@ -5973,23 +5993,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                 }
             }
-            //去掉填未填日报非工作日
-            for (LocalDateTime localDateTime : dateTimeList) {
-                if(mapList!=null){
-                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())&&!mapList.stream().anyMatch(ml->{
-                        Object date = ml.get("createDate");
-                        LocalDate createDate = LocalDate.parse(String.valueOf(date));
-                        return createDate.isEqual(localDateTime.toLocalDate());
-                    })){
-                        days-=1;
-                    }
-                }else {
-                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())){
-                        days-=1;
-                    }
-                }
-
-            }
             int num=0;
             if(mapList!=null){
                 for (Map<String, Object> map : mapList) {
@@ -6025,7 +6028,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     dataList.add(objectMap);
                 }
                 BigDecimal bigDecimal=new BigDecimal(num);
+                BigDecimal bigDecimalWithLeave=new BigDecimal(num+(daysWithLeave-days));
                 BigDecimal divide;
+                BigDecimal divideWithLeave;
                 if(days!=0){
                      divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
                 }else if(days==0){
@@ -6040,11 +6045,29 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     divide=new BigDecimal(1);
                     log.error("填报及时率数据异常:==="+user.getName());
                 }
+                if(daysWithLeave!=0){
+                    divideWithLeave = bigDecimalWithLeave.divide(BigDecimal.valueOf(daysWithLeave), 2, BigDecimal.ROUND_HALF_UP);
+                }else if(daysWithLeave==0){
+                    divideWithLeave=new BigDecimal(1);
+                    //查看当天有请假直接算100%
+                }else if (daysWithLeave==0&&num!=0&&leaveSheetList.size()>0){
+                    divideWithLeave=new BigDecimal(1);
+                }else{
+                    divideWithLeave=new BigDecimal(0);
+                }
+                if(divideWithLeave.compareTo(new BigDecimal(1))==1){
+                    divideWithLeave=new BigDecimal(1);
+                    log.error("填报及时率数据异常:==="+user.getName());
+                }
                 String number = dft.format(divide);
+                String numberWithLeave = dft.format(divideWithLeave);
                 timelinessRateVO.setTimelinessRate(String.valueOf(number));
+                timelinessRateVO.setTimelinessRateWithLeave(String.valueOf(numberWithLeave));
             }else {
                 BigDecimal bigDecimal=new BigDecimal(num);
+                BigDecimal bigDecimalWithLeave=new BigDecimal(num+(daysWithLeave-days));
                 BigDecimal divide;
+                BigDecimal divideWithLeave;
                 if(days!=0){
                     divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
                 }else if(days==0){
@@ -6061,8 +6084,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     divide=new BigDecimal(1);
                     log.error("填报及时率数据异常:==="+user.getName());
                 }
+                if(daysWithLeave!=0){
+                    divideWithLeave = bigDecimalWithLeave.divide(BigDecimal.valueOf(daysWithLeave), 2, BigDecimal.ROUND_HALF_UP);
+                }else if(daysWithLeave==0){
+                    divideWithLeave=new BigDecimal(1);
+                    //查看当天有请假直接算100%
+                }else if (daysWithLeave==0&&num!=0&&leaveSheetList.size()>0){
+                    divideWithLeave=new BigDecimal(1);
+                }else if(leaveSheets.size()>0){
+                    divideWithLeave=new BigDecimal(1);
+                }else{
+                    divideWithLeave=new BigDecimal(0);
+                }
+                if(divideWithLeave.compareTo(new BigDecimal(1))==1){
+                    divideWithLeave=new BigDecimal(1);
+                    log.error("填报及时率数据异常:==="+user.getName());
+                }
                 String number = dft.format(divide);
+                String numberWithLeave = dft.format(divideWithLeave);
                 timelinessRateVO.setTimelinessRate(String.valueOf(number));
+                timelinessRateVO.setTimelinessRateWithLeave(String.valueOf(numberWithLeave));
             }
             timelinessRateVO.setDataList(dataList);
             resultList.add(timelinessRateVO);
@@ -6082,21 +6123,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg = getUserReportTimelinessRate(request, startDate, endDate, null, null, null, null);
         HashMap map= (HashMap) msg.data;
         List<TimelinessRateVO> list = (List<TimelinessRateVO>) map.get("list");
-        //String[] s={"人员","工号","部门","填报及时率"};
-        String[] s={MessageUtils.message("entry.personnel"),MessageUtils.message("entry.No"),MessageUtils.message("excel.department"),MessageUtils.message("excel.timeFill")};
+        //String[] s={"人员","工号","部门","填报及时率","填报及时率(含请假)"};
+        String[] s={MessageUtils.message("entry.personnel"),MessageUtils.message("entry.No"),MessageUtils.message("excel.department"),MessageUtils.message("excel.timeFill"),MessageUtils.message("excel.timeFillWithLeave")};
         List<String> titleString = Arrays.asList(s);
         List<List<String>> dataList=new ArrayList<>();
         dataList.add(titleString);
         for (TimelinessRateVO timelinessRateVO : list) {
             List<String> item=new ArrayList<>();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                item.add(timelinessRateVO.getCorpwxUserId()==null?"":timelinessRateVO.getCorpwxUserId());
+                item.add("$userName="+(timelinessRateVO.getCorpwxUserId()==null?"":timelinessRateVO.getCorpwxUserId())+"$");
             }else {
                 item.add(timelinessRateVO.getUserName());
             }
             item.add(timelinessRateVO.getJobNumber());
-            item.add(timelinessRateVO.getDepartmentName());
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                item.add("$departmentName="+(String.valueOf(timelinessRateVO.getCorpwxDeptId()==null?"":timelinessRateVO.getCorpwxDeptId()))+"$");
+            }else {
+                item.add(timelinessRateVO.getDepartmentName());
+            }
             item.add(timelinessRateVO.getTimelinessRate());
+            item.add(timelinessRateVO.getTimelinessRateWithLeave());
             dataList.add(item);
         }
         //生成excel文件导出
@@ -7895,14 +7941,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         System.out.println(dataDetailList);
         HashMap map= (HashMap) msg.data;
         List<TimelinessRateVO> list = (List<TimelinessRateVO>) map.get("list");
-        //String[] s={"人员","工号","部门","填报及时率"};
-        String[] s={MessageUtils.message("entry.personnel"),MessageUtils.message("entry.No"),MessageUtils.message("excel.department"),MessageUtils.message("excel.timeFill")};
+        String[] s={"人员","工号","部门","总及时率","总及时率(含请假)"};
         List<String> titleString = new ArrayList<>(Arrays.asList(s));
         for (Map<String, Object> objectMap : dataDetailList) {
             List<Map<String,Object>> data = (List<Map<String, Object>>) objectMap.get("data");
             for (Map<String, Object> datum : data) {
                 String week =String.valueOf( datum.get("week"));
-
                 titleString.add(week+"_"+String.valueOf(datum.get("startDate"))+"-"+ String.valueOf(datum.get("endDate"))+"及时率");
             }
         }
@@ -7916,8 +7960,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 item.add(timelinessRateVO.getUserName());
             }
             item.add(timelinessRateVO.getJobNumber());
-            item.add(timelinessRateVO.getDepartmentName());
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                item.add("$departmentName="+(String.valueOf(timelinessRateVO.getCorpwxDeptId()==null?"":timelinessRateVO.getCorpwxDeptId()))+"$");
+            }else {
+                item.add(timelinessRateVO.getDepartmentName());
+            }
             item.add(timelinessRateVO.getTimelinessRate());
+            item.add(timelinessRateVO.getTimelinessRateWithLeave());
             for (Map<String, Object> objectMap : dataDetailList) {
                 List<Map<String,Object>> data = (List<Map<String, Object>>) objectMap.get("data");
                 for (Map<String, Object> datum : data) {
@@ -8021,7 +8070,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     parent.id=department.getDepartmentId().toString();
                     parent.time = 0;
                     parent.text=department.getDepartmentName();
-                    parent.type="department";
+                    parent.translationType="department";
                     if(department.getSuperiorId()!=null){
                         parent.parent=String.valueOf(department.getSuperiorId());
                         parent.type="milestone";
@@ -8061,7 +8110,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         userGantt.color=u.getColor();
                         userGantt.parent=String.valueOf(u.getDepartmentId());
                         userGantt.children=new ArrayList<>();
-                        userGantt.type="user";
+                        userGantt.translationType="user";
                         itemList=getUserGanttDataItemList(userGantt,itemList);
                     }
                 }
@@ -8236,7 +8285,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             curItem.text = MessageUtils.message("leave.busTra")+"/" + businessTrip.getOwnerName();
                             curItem.start_date = bustripProject.getStartDate().toString();
                             curItem.end_date = bustripProject.getEndDate().toString();
-                            curItem.type="user";
+                            curItem.translationType="user";
                             curItem.parent = btLastItemId;
                             itemList=getUserGanttDataItemList(curItem,itemList);
                             btLastItemId = String.valueOf(bustripProject.getProjectId());
@@ -8277,7 +8326,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         parent.start_date = start_date;
                         parent.end_date = end_date;
                         parent.time = 0;
-                        parent.type="user";
+                        parent.translationType="user";
                         parent.parent=String.valueOf(departmentId);
                         parent.children=new ArrayList<>();
                         Optional<User> optional = AllUser.stream().filter(au -> au.getId().equals(userId)).findFirst();
@@ -8322,7 +8371,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     curItem.start_date = start_date;
                     curItem.end_date = end_date;
                     curItem.time = (Integer)map.get("duration");
-                    curItem.type="user";
+                    curItem.translationType="user";
                     curItem.parent = lastItemId;
                     itemList=getUserGanttDataItemList(curItem,itemList);
                     lastItemId = projectId;
@@ -8363,7 +8412,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             subParent.id=dept.getDepartmentId().toString();
             subParent.time = 0;
             subParent.text=dept.getDepartmentName();
-            subParent.type="department";
+            subParent.translationType="department";
             if(dept.getSuperiorId()!=null){
                 subParent.parent=String.valueOf(dept.getSuperiorId());
                 subParent.type="milestone";

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -639,6 +639,7 @@ excel.planTime=计划完成时间
 excel.actualTime=实际完成时间
 excel.unclassified=未分类
 excel.timeFill=填报及时率
+excel.timeFillWithLeave=填报及时率(含请假)
 excel.propActualTime=实际用时占比
 excel.classification=分类
 excel.name=名称

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -639,6 +639,7 @@ excel.planTime=Planned completion time
 excel.actualTime=Actual completion time
 excel.unclassified=Unclassified
 excel.timeFill=Timeliness rate of filling
+excel.timeFillWithLeave=Timeliness rate of filling(Contain leave)
 excel.propActualTime=Proportion of actual time
 excel.classification=classification
 excel.name=name

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

@@ -678,7 +678,7 @@
     </select>
 
     <select id="getUserReportTimelinessRate" resultType="java.util.Map">
-        select `user`.name as userName,`user`.corpwx_userid as corpwxUserId,rl.create_date as createDate,MIN(rl.operate_date )as createTime from report_log rl
+        select `user`.name as userName,`user`.corpwx_userid as corpwxUserId,`user`.corpwx_deptid as corpwxDeptId,rl.create_date as createDate,MIN(rl.operate_date )as createTime from report_log rl
         left join `user` on `user`.id=rl.operator_id
         where rl.company_id=#{companyId}
         and rl.create_date between  #{startDate} and #{endDate}