|
@@ -60,9 +60,12 @@ import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
import java.time.chrono.ChronoLocalDate;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
+import java.time.temporal.TemporalAdjusters;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static java.time.format.DateTimeFormatter.ISO_DATE;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -7177,59 +7180,129 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
|
|
|
//分页查询员工月度工时表
|
|
|
@Override
|
|
|
- public HttpRespMsg getEmpMonthHours(Integer pageIndex, Integer pageSize, LocalDate Month,Integer departmentId,String userId, HttpServletRequest request) {
|
|
|
+ public HttpRespMsg getEmpMonthHours(Integer pageIndex, Integer pageSize, String month,Integer departmentId,String userId, HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg =new HttpRespMsg();
|
|
|
-// User targetUser = userMapper.selectById(request.getHeader("token"));
|
|
|
-// List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全部人员月度工时表");
|
|
|
-// List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门月度工时表");
|
|
|
-// List<Integer> deptIds=null;
|
|
|
-// List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",targetUser.getCompanyId()));
|
|
|
-// List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
|
|
|
-// List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
|
|
|
-// //判断查看权限
|
|
|
-// if(functionAllList.size()==0){
|
|
|
-// deptIds=new ArrayList<>();
|
|
|
-// deptIds.add(-1);
|
|
|
-// if(functionDeptList.size()>0){
|
|
|
-// List<Integer> collect = userDepartmentList.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);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// long total;
|
|
|
-// List<Map<String,Object>> resultList;
|
|
|
-// List<Integer> branchDepartment =null;
|
|
|
-// if(departmentId!=null){
|
|
|
-// branchDepartment = getBranchDepartment(departmentId, allDepartmentList);
|
|
|
-// }
|
|
|
-// if(pageIndex!=null&&pageSize!=null){
|
|
|
-// Integer size=pageSize;
|
|
|
-// Integer start=(pageIndex-1)*size;
|
|
|
-// resultList=projectMapper.getUserWorkingTimeStatic(targetUser.getCompanyId(),startDate,endDate,start,size,userId,branchDepartment,deptIds);
|
|
|
-// total=projectMapper.findCountWithUserWorkingTime(targetUser.getCompanyId(),startDate,endDate,start,size,userId,branchDepartment,deptIds);
|
|
|
-// }else{
|
|
|
-// resultList=projectMapper.getUserWorkingTimeStatic(targetUser.getCompanyId(),startDate,endDate,null,null,userId,branchDepartment,deptIds);
|
|
|
-// total=projectMapper.findCountWithUserWorkingTime(targetUser.getCompanyId(),startDate,endDate,null,null,userId,branchDepartment,deptIds);
|
|
|
-// }
|
|
|
-// for (Map<String, Object> map : resultList) {
|
|
|
-// BigDecimal phBigDecimal =new BigDecimal(String.valueOf(map.get("planHours")==null?0:map.get("planHours")));
|
|
|
-// BigDecimal wtBigDecimal =new BigDecimal(String.valueOf(map.get("workingTime")==null?0:map.get("workingTime")));
|
|
|
-// if(phBigDecimal.compareTo(BigDecimal.ZERO)==0||wtBigDecimal.compareTo(BigDecimal.ZERO)==0){
|
|
|
-// map.put("proportion",dft.format(0));
|
|
|
-// }else{
|
|
|
-// BigDecimal divide = wtBigDecimal.divide(phBigDecimal, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
-// map.put("proportion",dft.format(divide));
|
|
|
-// }
|
|
|
-// }
|
|
|
-// Map<String,Object> map=new HashMap<>();
|
|
|
-// map.put("result",resultList);
|
|
|
-// map.put("total",total);
|
|
|
-// httpRespMsg.data=map;
|
|
|
+ User targetUser = userMapper.selectById(request.getHeader("token"));
|
|
|
+ List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全部人员月度工时表");
|
|
|
+ List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门月度工时表");
|
|
|
+ List<Integer> deptIds=null;
|
|
|
+ List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",targetUser.getCompanyId()));
|
|
|
+ List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
|
|
|
+ List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
|
|
|
+ //判断查看权限
|
|
|
+ if(functionAllList.size()==0){
|
|
|
+ deptIds=new ArrayList<>();
|
|
|
+ deptIds.add(-1);
|
|
|
+ if(functionDeptList.size()>0){
|
|
|
+ List<Integer> collect = userDepartmentList.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);
|
|
|
+ //将该用户管理的所有部门以及部门的子部门id添加到deptIds集合中
|
|
|
+ for (Integer integer : collect) {
|
|
|
+ List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
|
|
|
+ deptIds.addAll(branchDepartment);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ long total;
|
|
|
+ List<Map<String,Object>> resultList;
|
|
|
+ List<Integer> branchDepartment =null;
|
|
|
+ //若用户传入departmentId参数,则查询该部门所有子部门,添加到branchDepartment集合中
|
|
|
+ if(departmentId!=null){
|
|
|
+ branchDepartment = getBranchDepartment(departmentId, allDepartmentList);
|
|
|
+ }
|
|
|
+ String startDate = null;
|
|
|
+ String endDate = null;
|
|
|
+ LocalDate time = LocalDate.parse(month, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ startDate = time.with(TemporalAdjusters.firstDayOfMonth()).toString();
|
|
|
+ endDate = time.with(TemporalAdjusters.lastDayOfMonth()).toString();
|
|
|
+ int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
|
|
|
+ //分页查询用户计划工时和实际工时
|
|
|
+ if(pageIndex!=null&&pageSize!=null){
|
|
|
+ Integer size=pageSize;
|
|
|
+ Integer start=(pageIndex-1)*size;
|
|
|
+ resultList=projectMapper.getEmpMonthHours(targetUser.getCompanyId(),startDate,endDate,start,size,userId,branchDepartment,deptIds);
|
|
|
+ total=projectMapper.findCountWithEmpMonthHours(targetUser.getCompanyId(),startDate,endDate,start,size,userId,branchDepartment,deptIds);
|
|
|
+ }else{
|
|
|
+ resultList=projectMapper.getEmpMonthHours(targetUser.getCompanyId(),startDate,endDate,null,null,userId,branchDepartment,deptIds);
|
|
|
+ total=projectMapper.findCountWithEmpMonthHours(targetUser.getCompanyId(),startDate,endDate,null,null,userId,branchDepartment,deptIds);
|
|
|
+ }
|
|
|
+ if(resultList.size()!=0){
|
|
|
+ System.out.println(resultList.toString());
|
|
|
+ float standardHours = Float.parseFloat(resultList.get(0).get("allday").toString())*days;
|
|
|
+ for (Map<String, Object> map : resultList) {
|
|
|
+ map.put("standardHours",standardHours);
|
|
|
+ map.put("workingTime",map.get("workingTime")==null?0:map.get("workingTime"));
|
|
|
+ map.put("leaveTime",map.get("leaveTime")==null?0:map.get("leaveTime"));
|
|
|
+ if (Float.parseFloat(map.get("workingTime").toString()) != standardHours){
|
|
|
+ map.put("whether",0);
|
|
|
+ }else{
|
|
|
+ map.put("whether",1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.err.println(resultList.toString());
|
|
|
+ Map<String,Object> map=new HashMap<>();
|
|
|
+ map.put("result",resultList);
|
|
|
+ map.put("total",total);
|
|
|
+ httpRespMsg.data=map;
|
|
|
return httpRespMsg;
|
|
|
}
|
|
|
|
|
|
+ //导出员工月度工时表
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg exportEmpMonthHours(String month, HttpServletRequest request, String userId, Integer departmentId){
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
+ Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
|
+ String startDate = null;
|
|
|
+ String endDate = null;
|
|
|
+ LocalDate time = LocalDate.parse(month, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ startDate = time.with(TemporalAdjusters.firstDayOfMonth()).toString();
|
|
|
+ endDate = time.with(TemporalAdjusters.lastDayOfMonth()).toString();
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
|
|
|
+ HttpRespMsg httpRespMsg = getEmpMonthHours(null, null,month,departmentId,userId,request);
|
|
|
+ Map<String,Object> data = (Map<String, Object>) httpRespMsg.data;
|
|
|
+ List<Map<String,Object>> resultList= (List<Map<String, Object>>) data.get("result");
|
|
|
+ List<List<String>> dataList=new ArrayList<>();
|
|
|
+ List<String> titleList=new ArrayList<>();
|
|
|
+ titleList.add("姓名");
|
|
|
+ titleList.add("工号");
|
|
|
+ titleList.add("标准工时");
|
|
|
+ titleList.add("实际工时");
|
|
|
+ titleList.add("请假工时");
|
|
|
+ titleList.add("是否满足工时");
|
|
|
+ dataList.add(titleList);
|
|
|
+ for (Map<String, Object> map : resultList) {
|
|
|
+ List<String> item=new ArrayList<>();
|
|
|
+ if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+ item.add("$userName="+(map.get("corwxUserId")==null?"":map.get("corwxUserId"))+"$");
|
|
|
+ item.add(String.valueOf(StringUtils.isEmpty(map.get("jobNumber"))?"":map.get("jobNumber")));
|
|
|
+ //item.add("$deprtmentName="+(map.get("corpwxDeptId")==null?"":map.get("corpwxDeptId"))+"$");
|
|
|
+ }else {
|
|
|
+ item.add((String) map.get("name"));
|
|
|
+ item.add(String.valueOf(StringUtils.isEmpty(map.get("jobNumber"))?"":map.get("jobNumber")));
|
|
|
+ //item.add((String) map.get("departmentName")==null?"":(String) map.get("departmentName"));
|
|
|
+ }
|
|
|
+ item.add(String.valueOf(map.get("standardHours")).equals("null")?"":String.valueOf(map.get("standardHours")));
|
|
|
+ item.add(String.valueOf(map.get("workingTime")).equals("null")?"":String.valueOf(map.get("workingTime")));
|
|
|
+ item.add(String.valueOf(map.get("leaveTime")).equals("null")?"":String.valueOf(map.get("leaveTime")));
|
|
|
+ if (map.get("whether").toString().equals("1")){
|
|
|
+ item.add("是");
|
|
|
+ }else{
|
|
|
+ item.add("否");
|
|
|
+ }
|
|
|
+ dataList.add(item);
|
|
|
+ }
|
|
|
+ //生成excel文件导出
|
|
|
+ String fileName = "员工"+time.getMonthValue()+"月工时表"+System.currentTimeMillis();
|
|
|
+ try {
|
|
|
+ return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName , dataList, path);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+// String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , dataList, path);
|
|
|
+// msg.data = resp;
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
}
|