|
@@ -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";
|