|
@@ -5814,8 +5814,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
@Override
|
|
|
public HttpRespMsg getUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate, Integer pageIndex, Integer pageSize,HttpServletRequest request,Integer departmentId) {
|
|
|
//1.获取分页结果
|
|
|
- Integer size=pageSize;//查询条数
|
|
|
- Integer start =(pageIndex-1)*size;//limit开始
|
|
|
+ if (pageSize!=null && pageIndex!=null){
|
|
|
+ Integer size=pageSize;//查询条数
|
|
|
+ Integer start =(pageIndex-1)*size;//limit开始
|
|
|
+ }
|
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
|
String token = request.getHeader("TOKEN");
|
|
|
User user = userMapper.selectById(token);
|
|
@@ -5908,7 +5910,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
li.put("proportion",nf.format(divide));
|
|
|
});
|
|
|
//全月请假人员
|
|
|
- List<Map<String, Object>> maps = leaveSheetMapper.selectLeaveAll(companyId, startDate, endDate);
|
|
|
+ List<Map<String, Object>> maps = leaveSheetMapper.selectLeaveAll(companyId, startDate, endDate,branchDepartment,deptIds);
|
|
|
TimeType timetype = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
|
|
|
List<Map<String, Object>> leaveStaff = new ArrayList<>();
|
|
|
//去重
|
|
@@ -5938,10 +5940,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
if (!stringObjectHashMap.containsKey("deptName")){
|
|
|
stringObjectHashMap.put("deptName","未分配");
|
|
|
}
|
|
|
- stringObjectHashMap.put("isPublic",0);
|
|
|
+ stringObjectHashMap.put("isPublic",0.0);
|
|
|
stringObjectHashMap.put("jobNumber",map.get("jobNumber"));
|
|
|
- Double leaveHours = 0.0;
|
|
|
- int days = WorkDayCalculateUtils.getWorkDaysListInRange(map.get("startDate").toString(),map.get("endDate").toString(), 0).size();
|
|
|
+ double leaveHours = 0.0;
|
|
|
+ //int days = WorkDayCalculateUtils.getWorkDaysListInRange(map.get("startDate").toString(),map.get("endDate").toString(), 0).size();
|
|
|
for (Map<String, Object> stringObjectMap : collectMap) {
|
|
|
if (map.get("id").toString().equals(stringObjectMap.get("id"))){
|
|
|
LocalDate leaveStart = LocalDate.parse(map.get("startDate").toString(), dateTimeFormatter);
|
|
@@ -5974,7 +5976,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
leaveHours = new BigDecimal(leaveHours).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
stringObjectHashMap.put("leaveSum",leaveHours+"h");
|
|
|
stringObjectHashMap.put("proportion","0%");
|
|
|
- stringObjectHashMap.put("unPublic",0);
|
|
|
+ stringObjectHashMap.put("unPublic",0.0);
|
|
|
stringObjectHashMap.put("userId",map.get("id"));
|
|
|
if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
|
|
|
stringObjectHashMap.put("username",map.get("wxOpenId"));
|
|
@@ -6023,44 +6025,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request) {
|
|
|
+ public HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request,Integer departmentId) {
|
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
|
String token = request.getHeader("TOKEN");
|
|
|
User user = userMapper.selectById(token);
|
|
|
WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
|
|
|
- List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全公司工时分配");
|
|
|
- List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门工时分配");
|
|
|
- List<Integer> deptIds=null;
|
|
|
- List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
|
|
|
- List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
|
|
|
- List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
|
|
|
- //判断查看权限
|
|
|
- if(functionAllList.size()==0){
|
|
|
- deptIds=new ArrayList<>();
|
|
|
- deptIds.add(-1);
|
|
|
- if(functionDeptList.size()>0){
|
|
|
- List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
|
|
|
- List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
|
|
|
- collect.addAll(otherCollect);
|
|
|
- for (Integer integer : collect) {
|
|
|
- List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
|
|
|
- deptIds.addAll(branchDepartment);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null,deptIds);
|
|
|
+ HttpRespMsg userWorkingTimeList = getUserWorkingTimeList(userId,projectId,startDate, endDate, null,null,request,departmentId);
|
|
|
+ HashMap result = (HashMap) userWorkingTimeList.data;
|
|
|
+ List<Map<String, Object>> resultList = (List<Map<String, Object>>) result.get("result");
|
|
|
//String[] string={"人员","部门","工号","普通项目工时","公共项目工时","请假时长","总工时","公共项目工时占比"};
|
|
|
String[] string={MessageUtils.message("entry.personnel"),MessageUtils.message("excel.department"),MessageUtils.message("entry.No"),MessageUtils.message("entry.GenProHours"),MessageUtils.message("entry.PubProHours"),MessageUtils.message("leave.duration"),MessageUtils.message("entry.totalManHours"),MessageUtils.message("entry.PubProHoursProp")};
|
|
|
List<List<String>> dataList=new ArrayList<>();
|
|
|
dataList.add(Arrays.asList(string));
|
|
|
Integer companyId = user.getCompanyId();
|
|
|
- List<LeaveSheet> leaveSheet = leaveSheetMapper.selectLeave(companyId,startDate,endDate);
|
|
|
List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
- TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
|
|
|
- DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
- LocalDate localStartDate = LocalDate.parse(startDate, dateTimeFormatter);
|
|
|
- LocalDate localEndDate = LocalDate.parse(endDate, dateTimeFormatter);
|
|
|
- for(Map<String,Object> item:list){
|
|
|
+ for(Map<String,Object> item:resultList){
|
|
|
//取部门名
|
|
|
for (Department department : deptName) {
|
|
|
if (item.get("deptId").toString().equals(department.getDepartmentId().toString())){
|
|
@@ -6069,47 +6048,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}else {
|
|
|
item.put("deptName",getSupDepartment(department));
|
|
|
}
|
|
|
- continue;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
if (!item.containsKey("deptName")){
|
|
|
item.put("deptName","未分配");
|
|
|
}
|
|
|
- //计算请假时间
|
|
|
- Float leaveSum = 0F;
|
|
|
- for (LeaveSheet sheet : leaveSheet) {
|
|
|
- if (sheet.getOwnerId().equals(item.get("userId"))){
|
|
|
-// System.err.println(sheet.getOwnerName());
|
|
|
-// System.err.println(sheet.getStartDate());
|
|
|
-// System.err.println(sheet.getEndDate());
|
|
|
- Float timeHours = sheet.getTimeHours();
|
|
|
- //若请假开始时间不在筛选时间内
|
|
|
- if (sheet.getStartDate().isBefore(localStartDate)) {
|
|
|
- long day = localStartDate.toEpochDay() - sheet.getStartDate().toEpochDay();
|
|
|
- timeHours -= day * allDay.getAllday();
|
|
|
-// System.err.println("请假开始时间不在筛选时间内,应减去" + day * allDay.getAllday()+"小时");
|
|
|
- }
|
|
|
- //若请假结束时间不在筛选时间内
|
|
|
- if (sheet.getEndDate().isAfter(localEndDate)) {
|
|
|
- long day = sheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
|
|
|
- timeHours -= day * allDay.getAllday();
|
|
|
-// System.err.println("请假结束时间不在筛选时间内,应减去"+day * allDay.getAllday()+"小时");
|
|
|
- }
|
|
|
-// System.err.println("计算完的时间为:" + timeHours);
|
|
|
- leaveSum += timeHours;
|
|
|
- }
|
|
|
- }
|
|
|
-// System.err.println("总时间为:"+leaveSum);
|
|
|
- item.put("leaveSum",leaveSum + "h");
|
|
|
- double workTimeDouble = Double.parseDouble(item.get("workingTime").toString()) + leaveSum;
|
|
|
- BigDecimal workTimeBig = new BigDecimal(workTimeDouble);
|
|
|
- item.put("workingTime",workTimeBig.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
List<String> subList=new ArrayList<>();
|
|
|
- double isPublic = (double) item.get("isPublic");
|
|
|
- double workingTime = (double) item.get("workingTime");
|
|
|
- BigDecimal bdIsPublic=new BigDecimal(isPublic);
|
|
|
- BigDecimal divide = bdIsPublic.divide(BigDecimal.valueOf(workingTime),2,BigDecimal.ROUND_HALF_UP);
|
|
|
- NumberFormat nf = NumberFormat.getPercentInstance();
|
|
|
if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
subList.add("$userName="+(item.get("corpwxUserId")==null?"":item.get("corpwxUserId"))+"$");
|
|
|
}else {
|
|
@@ -6121,7 +6066,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
subList.add(String.valueOf(item.get("isPublic")));
|
|
|
subList.add(String.valueOf(item.get("leaveSum")));
|
|
|
subList.add(String.valueOf(item.get("workingTime")));
|
|
|
- subList.add(String.valueOf(nf.format(divide)));
|
|
|
+ subList.add(String.valueOf(item.get("proportion")));
|
|
|
dataList.add(subList);
|
|
|
}
|
|
|
//生成excel文件导出
|