|
@@ -22,6 +22,7 @@ import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
|
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
|
|
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
|
|
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
|
|
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
|
|
import org.apache.commons.io.FileUtils;
|
|
import org.apache.commons.io.FileUtils;
|
|
|
|
+import org.apache.logging.log4j.util.PropertySource;
|
|
import org.apache.poi.EncryptedDocumentException;
|
|
import org.apache.poi.EncryptedDocumentException;
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
import org.apache.poi.ss.usermodel.*;
|
|
import org.apache.poi.ss.usermodel.*;
|
|
@@ -4231,9 +4232,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
Company company = companyMapper.selectById(companyId);
|
|
Company company = companyMapper.selectById(companyId);
|
|
//准备部门数据
|
|
//准备部门数据
|
|
List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
- List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate));
|
|
|
|
- List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, company.getId()));
|
|
|
|
- //处理特殊节假日设置
|
|
|
|
//特殊节假日配置
|
|
//特殊节假日配置
|
|
List<HolidaySetting> holidaySettingList = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, companyId));
|
|
List<HolidaySetting> holidaySettingList = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, companyId));
|
|
//针对全员生效的日期
|
|
//针对全员生效的日期
|
|
@@ -4258,7 +4256,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
String[] userSplit = userIdStr.split(",");
|
|
String[] userSplit = userIdStr.split(",");
|
|
targetUserIds = Arrays.asList(userSplit);
|
|
targetUserIds = Arrays.asList(userSplit);
|
|
}
|
|
}
|
|
- List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, companyId));
|
|
|
|
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
//String[] weekDayCHN = {"周一","周二","周三","周四","周五","周六","周日"};
|
|
//String[] weekDayCHN = {"周一","周二","周三","周四","周五","周六","周日"};
|
|
String[] weekDayCHN = {MessageUtils.message("week.Monday"),MessageUtils.message("week.Tuesday"),MessageUtils.message("week.Wednesday"),MessageUtils.message("week.Thursday"),MessageUtils.message("week.Friday"),MessageUtils.message("week.Saturday"),MessageUtils.message("week.Sunday")};
|
|
String[] weekDayCHN = {MessageUtils.message("week.Monday"),MessageUtils.message("week.Tuesday"),MessageUtils.message("week.Wednesday"),MessageUtils.message("week.Thursday"),MessageUtils.message("week.Friday"),MessageUtils.message("week.Saturday"),MessageUtils.message("week.Sunday")};
|
|
@@ -4317,36 +4314,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
String date = new SimpleDateFormat("yyyy-MM-dd").format((Date)data.get("createDate"));
|
|
String date = new SimpleDateFormat("yyyy-MM-dd").format((Date)data.get("createDate"));
|
|
map.put("workingTime", data.get("workingTime"));
|
|
map.put("workingTime", data.get("workingTime"));
|
|
map.put("createDate", date);
|
|
map.put("createDate", date);
|
|
- //针对景昱 5978 校验填报工时是否超过考勤
|
|
|
|
- if(user.getCompanyId().equals(5978)){
|
|
|
|
- map.put("exceedCardTime",0);
|
|
|
|
- Optional<UserFvTime> first = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(LocalDate.parse(date, df)) && u.getUserId().equals(id)).findFirst();
|
|
|
|
- if(first.isPresent()){
|
|
|
|
- if(first.get().getWorkHours()!=null){
|
|
|
|
- map.put("cardTime",first.get().getWorkHours());
|
|
|
|
- Optional<User> optional = userList.stream().filter(u -> u.getId().equals(id)).findFirst();
|
|
|
|
- User targetUser = optional.get();
|
|
|
|
- List<String> customList = userCustomList.stream().map(UserCustom::getName).collect(Collectors.toList());
|
|
|
|
- if(customList.size()>0&&customList.contains("是否有加班费")){
|
|
|
|
- int index = customList.indexOf("是否有加班费");
|
|
|
|
- targetUser.getPlate1();
|
|
|
|
- String getter="getPlate"+(index+1);
|
|
|
|
- Class<User> aClass = User.class;
|
|
|
|
- Method method = aClass.getMethod(getter);
|
|
|
|
- String invoke = (String) method.invoke(targetUser);
|
|
|
|
- if(invoke==null||invoke.equals("有加班费")){
|
|
|
|
- if(!(Double.valueOf(String.valueOf(data.get("workingTime"))).equals(Double.valueOf(first.get().getWorkHours())))){
|
|
|
|
- map.put("exceedCardTime",1);
|
|
|
|
- }
|
|
|
|
- }else{
|
|
|
|
- if((Double.valueOf(String.valueOf(data.get("workingTime")))<first.get().getWorkHours())){
|
|
|
|
- map.put("exceedCardTime",1);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
if (id.equals(lastUserId)) {
|
|
if (id.equals(lastUserId)) {
|
|
//同一个用户的数据
|
|
//同一个用户的数据
|
|
lastUserData.worktimeList.add(map);
|
|
lastUserData.worktimeList.add(map);
|
|
@@ -9089,51 +9056,110 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public HttpRespMsg getUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate) throws Exception {
|
|
|
|
|
|
+ public HttpRespMsg getUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate,Integer deptId,Integer viewValue) throws Exception {
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
|
|
+ User user = userMapper.selectById(request.getHeader("token"));
|
|
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
- HttpRespMsg userDailyWorkTime = getUserDailyWorkTime(request, startDate, endDate);
|
|
|
|
List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate));
|
|
List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate));
|
|
- Map<String, Object> objectMap = (Map<String, Object>) userDailyWorkTime.getData();
|
|
|
|
- List<UserMonthWork > mapList = (List<UserMonthWork >) objectMap.get("list");
|
|
|
|
|
|
+ List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, user.getCompanyId()));
|
|
|
|
+ List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, user.getCompanyId()));
|
|
|
|
+ List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, user.getCompanyId()));
|
|
|
|
+ List<User> allRangeUserList = new ArrayList<>();
|
|
|
|
+ List<Map<String, Object>> list = null;
|
|
|
|
+ //分角色权限:管理员看全部的,部门负责人看自己部门的,个人只能看自己的。
|
|
|
|
+ List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
|
|
|
|
+ if (functionList.size() == 0) {
|
|
|
|
+ List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ //检查是不是部门负责人(含主要负责人和其他负责人)
|
|
|
|
+ List<Integer> allDeptIds = getAllVisibleDeptIdList(user, allDeptList);
|
|
|
|
+ if (allDeptIds.size() > 0) {
|
|
|
|
+ list = reportMapper.getUserDailyWorkTimeReminder(user.getCompanyId(), startDate, endDate, allDeptIds, deptId,null);
|
|
|
|
+ //部门负责人看自己部门相关的
|
|
|
|
+ allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allDeptIds).eq(deptId!=null,"department_id",deptId).orderByDesc("department_id"));
|
|
|
|
+ } else {
|
|
|
|
+ //看自己的所负责的项目相关人员的
|
|
|
|
+ list = reportMapper.getUserDailyWorkTimeReminder(user.getCompanyId(), startDate, endDate, null,deptId, user.getId());
|
|
|
|
+ //项目相关的人员列表
|
|
|
|
+ List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
|
|
|
|
+ List<Project> collect = projectList.stream().collect(Collectors.toList());
|
|
|
|
+ if (collect.size() > 0) {
|
|
|
|
+ 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).eq(deptId!=null,"department_id",deptId).orderByDesc("department_id"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ list = reportMapper.getUserDailyWorkTimeReminder(user.getCompanyId(), startDate, endDate, null,deptId, null);
|
|
|
|
+ //管理员看全公司所有人
|
|
|
|
+ allRangeUserList = userMapper.selectList(new QueryWrapper<User>().eq(deptId!=null,"department_id",deptId).eq("company_id", user.getCompanyId()).orderByDesc("department_id"));
|
|
|
|
+ }
|
|
|
|
+ List<User> needRangeUserList=new ArrayList<>();
|
|
|
|
+ for (User u : allRangeUserList) {
|
|
|
|
+ if(u.getInactiveDate()==null||(u.getInactiveDate()!=null&&u.getInactiveDate().isAfter(LocalDate.parse(startDate))||u.getIsActive()==1)){
|
|
|
|
+ needRangeUserList.add(u);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
List<LocalDate> days = getDays(LocalDate.parse(startDate, df), LocalDate.parse(endDate, df));
|
|
List<LocalDate> days = getDays(LocalDate.parse(startDate, df), LocalDate.parse(endDate, df));
|
|
- List<Map<String, Object>> result=new ArrayList<>();
|
|
|
|
- mapList.forEach(m->{
|
|
|
|
- List<Map<String, Object>> worktimeList = (List<Map<String, Object>>) m.worktimeList;
|
|
|
|
- for (LocalDate date : days) {
|
|
|
|
- boolean match = worktimeList.stream().anyMatch(www -> String.valueOf(www.get("createDate")).equals(date.format(df)));
|
|
|
|
|
|
+ for (User item : needRangeUserList) {
|
|
|
|
+ for (LocalDate day : days) {
|
|
|
|
+ boolean match = list.stream().anyMatch(l -> l.get("createDate").equals(df.format(day)) && l.get("userId").equals(item.getId()));
|
|
if(!match){
|
|
if(!match){
|
|
- Map<String,Object> ww=new HashMap<>();
|
|
|
|
- ww.put("createDate",date.format(df));
|
|
|
|
- ww.put("exceedCardTime",0);
|
|
|
|
- ww.put("workingTime",0);
|
|
|
|
- worktimeList.add(ww);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if(worktimeList.size()>0){
|
|
|
|
- worktimeList.forEach(w->{
|
|
|
|
- Optional<UserFvTime> first = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(LocalDate.parse(String.valueOf(w.get("createDate")),df)) && u.getUserId().equals(m.userId)).findFirst();
|
|
|
|
- if(first.isPresent()){
|
|
|
|
- w.put("cardTime",first.get().getWorkHours());
|
|
|
|
- }
|
|
|
|
- w.put("name",m.name);
|
|
|
|
- w.put("corpwxDeptId",m.corpwxDeptId);
|
|
|
|
- w.put("corpwxUserId",m.corpwxUserId);
|
|
|
|
- w.put("departmentName",m.departmentName);
|
|
|
|
- w.put("userId",m.userId);
|
|
|
|
- });
|
|
|
|
|
|
+ Map<String,Object> map=new HashMap<>();
|
|
|
|
+ map.put("userId",item.getId());
|
|
|
|
+ map.put("corpwxUserId",item.getCorpwxUserid());
|
|
|
|
+ map.put("createDate",day.format(df));
|
|
|
|
+ Optional<Department> first = departmentList.stream().filter(d -> d.getDepartmentId().equals(item.getDepartmentId())).findFirst();
|
|
|
|
+ map.put("departmentName",first.get().getDepartmentName());
|
|
|
|
+ Optional<UserFvTime> time = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(day) && u.getUserId().equals(item.getId())).findFirst();
|
|
|
|
+ if(time.isPresent()){
|
|
|
|
+ map.put("cardTime",time.get().getWorkHours());
|
|
|
|
+ }else {
|
|
|
|
+ map.put("cardTime",0);
|
|
|
|
+ }
|
|
|
|
+ map.put("corpwxDeptId",first.get().getCorpwxDeptid());
|
|
|
|
+ map.put("workingTime",0);
|
|
|
|
+ map.put("name",item.getName());
|
|
|
|
+ list.add(map);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- result.addAll(worktimeList);
|
|
|
|
- });
|
|
|
|
|
|
+ }
|
|
|
|
+ for (Map<String, Object> map : list) {
|
|
|
|
+ //针对景昱 5978 校验填报工时是否超过考勤
|
|
|
|
+ if(user.getCompanyId().equals(5978)){
|
|
|
|
+ map.put("exceedCardTime",0);
|
|
|
|
+ Optional<User> optional = userList.stream().filter(u -> u.getId().equals(String.valueOf(map.get("userId")))).findFirst();
|
|
|
|
+ User targetUser = optional.get();
|
|
|
|
+ List<String> customList = userCustomList.stream().map(UserCustom::getName).collect(Collectors.toList());
|
|
|
|
+ if(customList.size()>0&&customList.contains("是否有加班费")){
|
|
|
|
+ int index = customList.indexOf("是否有加班费");
|
|
|
|
+ targetUser.getPlate1();
|
|
|
|
+ String getter="getPlate"+(index+1);
|
|
|
|
+ Class<User> aClass = User.class;
|
|
|
|
+ Method method = aClass.getMethod(getter);
|
|
|
|
+ String invoke = (String) method.invoke(targetUser);
|
|
|
|
+ if(invoke==null||invoke.equals("有加班费")){
|
|
|
|
+ if(!(Double.valueOf(String.valueOf(map.get("workingTime"))).equals(Double.valueOf(String.valueOf(map.get("cardTime")))))){
|
|
|
|
+ map.put("exceedCardTime",1);
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ if((Double.valueOf(String.valueOf(map.get("workingTime")))<Double.valueOf(String.valueOf(map.get("cardTime"))))){
|
|
|
|
+ map.put("exceedCardTime",1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
Map<String,Object> map=new HashMap<>();
|
|
Map<String,Object> map=new HashMap<>();
|
|
- map.put("list",result);
|
|
|
|
|
|
+ map.put("list",list);
|
|
msg.setData(map);
|
|
msg.setData(map);
|
|
return msg;
|
|
return msg;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public HttpRespMsg exportUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate) throws Exception {
|
|
|
|
- HttpRespMsg timeReminder = getUserDailyWorkTimeReminder(request, startDate, endDate);
|
|
|
|
|
|
+ public HttpRespMsg exportUserDailyWorkTimeReminder(HttpServletRequest request, String startDate, String endDate,Integer deptId,Integer viewValue) throws Exception {
|
|
|
|
+ HttpRespMsg timeReminder = getUserDailyWorkTimeReminder(request, startDate, endDate,deptId,viewValue);
|
|
Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
|
|
WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
|
|
CompanyDingding dingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
|
|
CompanyDingding dingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
|