Преглед на файлове

未填人员列表增加状态

seyason преди 2 години
родител
ревизия
ef1e71336c

+ 15 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -731,13 +731,15 @@ public class WeiXinCorpController {
                         //生成工作时长
                         TimeType timeType = new TimeType();
                         timeType.setCompanyId(company.getId());
+                        timeType.setFinanceJobnumEnabled(1);//启用工号来导入财务匹配
                         timeTypeMapper.insert(timeType);
 
                         managerRole = sysRoleService.generateDefaultRoles(company.getId());
                     }
                     data.setCompanyId(company.getId());
                     wxCorpInfoMapper.insert(data);
-
+                    //默认普通员工的角色
+                    SysRole defaultUserRole = sysRoleService.getOne(new QueryWrapper<SysRole>().eq("company_id", company.getId()).eq("is_default", 1));
                     JSONObject userDetail = getUserInfo(curCorpAccessToken, userId);
                     //检查授权人是否存在
                     int cnt = userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", userId));
@@ -757,7 +759,8 @@ public class WeiXinCorpController {
                                 .setPassword(MD5Util.getPassword("000000"))
                                 .setCorpwxUserid(userId)
                                 .setColor(ColorUtil.randomColor())
-                                .setCompanyId(company.getId());
+                                .setCompanyId(company.getId())
+                                .setJobNumber(userId);
                         userMapper.insert(user);
                     }
 
@@ -773,11 +776,13 @@ public class WeiXinCorpController {
                         User user = new User();
 
                         user.setId(SnowFlake.nextId()+"")
-                                .setRole(0)//默认普通员工
+                                .setRoleId(defaultUserRole.getId())//默认普通员工
+                                .setRoleName(defaultUserRole.getRolename())
                                 .setCompanyId(companyId)
                                 .setName(userJson.getString("name"))
                                 .setCorpwxUserid(curUserid)
-                                .setColor(ColorUtil.randomColor());
+                                .setColor(ColorUtil.randomColor())
+                                .setJobNumber(curUserid);//工号就是企业微信的用户ID
 
                         //检查用户是否已经存在
                         if (userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", curUserid)) == 0) {
@@ -808,12 +813,14 @@ public class WeiXinCorpController {
                             User user = new User();
 
                             user.setId(SnowFlake.nextId()+"")
-                                    .setRole(0)//默认普通员工
+                                    .setRoleId(defaultUserRole.getId())//默认普通员工
+                                    .setRoleName(defaultUserRole.getRolename())
                                     .setCompanyId(companyId)
                                     .setDepartmentId(departmentId)
                                     .setName(userJson.getString("name"))
                                     .setCorpwxUserid(curUserid)
-                                    .setColor(ColorUtil.randomColor());
+                                    .setColor(ColorUtil.randomColor())
+                                    .setJobNumber(userId);//工号就是企业微信的用户ID
 
                             //检查用户是否已经存在
                             if (userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", curUserid)) == 0) {
@@ -909,7 +916,8 @@ public class WeiXinCorpController {
                                 .setName(data.getAuthUsername()==null?userId:data.getAuthUsername())
                                 .setCorpwxUserid(userId)
                                 .setColor(ColorUtil.randomColor())
-                                .setCompanyId(companyId);
+                                .setCompanyId(companyId)
+                                .setJobNumber(userId);//工号就是企业微信的用户ID
                         userMapper.insert(user);
                     }
                 }

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

@@ -7,4 +7,5 @@ public class UserDailyWorkItem {
     public String name;
     private String inactiveDate;
     public String cardTime;
+    public String status;
 }

+ 22 - 14
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1535,6 +1535,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         try {
             User targetUser = userMapper.selectById(request.getHeader("Token"));
             Integer companyId = targetUser.getCompanyId();
+            //优先判断这个项目的所属部门,是不是当前这个人担任负责人的部门
+            Integer projectBelongDeptId = projectMapper.selectById(projectId).getDeptId();
             List<Department> allDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
             List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id", companyId));
             List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
@@ -1545,20 +1547,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             //判断查看权限
             List<Integer> deptIds=null;
             if(functionAllList.size()==0){
-                deptIds=new ArrayList<>();
-                deptIds.add(-1);
-                if(functionDpartList.size()>0){
-                    if(functionTimeList.size()>0||functionCostList.size()>0){
-                        for (Department department : departmentList) {
-                            List<Integer> branchDepartment = getBranchDepartment(department.getDepartmentId(), allDepartmentList);
-                            deptIds.addAll(branchDepartment);
-                        }
-                        List<Integer> collect = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().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);
+                //判断是否是当前项目的所属部门的主要或者其他负责人
+                if (projectBelongDeptId != null && (departmentOtherManagerList.stream().anyMatch(other->other.getDepartmentId().equals(projectBelongDeptId))
+                        || departmentList.stream().anyMatch(main->main.getDepartmentId().equals(projectBelongDeptId)))) {
+                    //默认为空的deptIds, 不过滤
+                } else {
+                    deptIds=new ArrayList<>();
+                    deptIds.add(-1);
+                    if(functionDpartList.size()>0){
+                        if(functionTimeList.size()>0||functionCostList.size()>0){
+                            for (Department department : departmentList) {
+                                List<Integer> branchDepartment = getBranchDepartment(department.getDepartmentId(), allDepartmentList);
+                                deptIds.addAll(branchDepartment);
+                            }
+                            List<Integer> collect = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().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);
+                            }
                         }
                     }
                 }

+ 17 - 27
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -2753,14 +2753,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             //检查是不是部门负责人(含主要负责人和其他负责人)
             List<Integer> allDeptIds = getAllVisibleDeptIdList(user, allDeptList);
             if (allDeptIds.size() > 0) {
-//                List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-//                List<Department> myDeptList = allDepts.stream().filter(d->user.getId().equals(d.getManagerId()) || (hasDeptWorktimePriv && d.getDepartmentId().equals(user.getDepartmentId()))).collect(Collectors.toList());
-//                List<Department> subDepts = new ArrayList<>();
-//                for (Department dp : myDeptList) {
-//                    subDepts.addAll(getSubDepts(dp, allDepts));
-//                    subDepts.add(dp);
-//                }
-//                List<Integer> collect = subDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList());
                 list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, allDeptIds, null);
                 //部门负责人看自己部门相关的
                 allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allDeptIds).orderByDesc("department_id"));
@@ -2793,10 +2785,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         //准备部门数据
         List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
         //获取所有同步的企业微信数据
-        LocalDateTime a=LocalDateTime.now();
         List<Map> userCorpwxTimeMapList = userCorpwxTimeMapper.selectByAsk(companyId,startDate,endDate);
-        LocalDateTime b=LocalDateTime.now();
-        long l = Duration.between(a, b).toMillis();
         String lastUserId = null;
         UserMonthWork lastUserData = null;
         for (Map<String, Object> data : list) {
@@ -3803,14 +3792,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             List<Integer> allVisibleDeptIdList = getAllVisibleDeptIdList(user, null);
             //检查是不是部门负责人
             if (allVisibleDeptIdList.size() > 0) {
-//                List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-//                List<Department> myDeptList = allDepts.stream().filter(d->user.getId().equals(d.getManagerId())|| (hasDeptWorktimePriv && d.getDepartmentId().equals(user.getDepartmentId()))).collect(Collectors.toList());
-//                List<Department> subDepts = new ArrayList<>();
-//                for (Department dp : myDeptList) {
-//                    subDepts.addAll(getSubDepts(dp, allDepts));
-//                    subDepts.add(dp);
-//                }
-//                List<Integer> collect = subDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList());
                 list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, allVisibleDeptIdList, null);
                 //部门负责人看自己部门相关的
                 allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allVisibleDeptIdList).eq("report_status",0));
@@ -3839,8 +3820,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         //获取企业微信同步数据
         List<Map> userCorpwxTimeMapList = userCorpwxTimeMapper.selectByAsk(companyId,startDate,endDate);
 
-        String lastUserId = null;
-        UserMonthWork lastUserData = null;
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         LocalDate localStart = LocalDate.parse(startDate, dtf);
@@ -3864,6 +3843,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<String> cpwxIds = new ArrayList<>();
         //获取请假数据
         List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", user.getCompanyId()));
+        //已驳回的数据
+        List<Report> deniedReportList = reportMapper.selectList(new QueryWrapper<Report>().eq("company_id", companyId).eq("state", 2).between("create_date", startDate, endDate));
+        List<Report> waitingSubmitReportList = reportMapper.selectList(new QueryWrapper<Report>().eq("company_id", companyId).eq("state", 3).between("create_date", startDate, endDate));
         //按人员过滤
         for (User curUser: allRangeUserList){
                 for (int i=0;i<=cnt; i++) {
@@ -3891,10 +3873,19 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         cpwxIds.add(curUser.getCorpwxUserid());
                         List<Map> userCorpwxListOn = userCorpwxTimeMapList.stream().filter(mapList -> mapList.get("create_date").toString().equals(dateStr)
                                 && mapList.get("corpwx_userid").equals(curUser.getCorpwxUserid())).collect(Collectors.toList());
+                        noRecord.createDate = dtf.format(date);
+                        //默认为未填写
+                        noRecord.status = "未填写";
                         if(!userCorpwxListOn.isEmpty()){
-                                noRecord.createDate = dtf.format(date)+"/请假";
+                            noRecord.status = "请假";
                         }else{
-                            noRecord.createDate = dtf.format(date);
+                            //检查是否是驳回或者待提交的
+                            if (deniedReportList.stream().anyMatch(deny->deny.getCreatorId().equals(curUser.getId()) && date.isEqual(deny.getCreateDate()))) {
+                                noRecord.status = "已驳回";
+                            }
+                            if (waitingSubmitReportList.stream().anyMatch(deny->deny.getCreatorId().equals(curUser.getId()) && date.isEqual(deny.getCreateDate()))) {
+                                noRecord.status = "待提交";
+                            }
                         }
 
                         if (curUser.getDepartmentId() != null && curUser.getDepartmentId() != 0) {
@@ -3907,8 +3898,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(curUser.getId())
                                 &&(ls.getStartDate().isAfter(LocalDate.parse(startDate))||ls.getStartDate().isEqual(LocalDate.parse(startDate)))
                                 &&(ls.getEndDate().isBefore(LocalDate.parse(endDate))||ls.getEndDate().isEqual(LocalDate.parse(endDate)))).collect(Collectors.toList());
-                        System.out.println(date);
-                        System.out.println(leaveSheets);
                         noReportDataList.add(noRecord);
                         for (LeaveSheet leaveSheet : leaveSheets) {
                             if(!(date.isBefore(leaveSheet.getStartDate())||date.isAfter(leaveSheet.getEndDate()))){
@@ -3970,7 +3959,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<String> titleList = new ArrayList<>();
         titleList.add("部门");
         titleList.add("姓名");
-        titleList.add("未填日期");
+        titleList.add("日期");
+        titleList.add("状态");
         if (timeType.getSyncCorpwxTime() == 1) {
             //企业微信同步考勤打卡的,需要加上这一列
             titleList.add("考勤打卡");
@@ -3983,10 +3973,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             line.add(dataItem.department);
             line.add(dataItem.name);
             line.add(dataItem.createDate);
+            line.add(dataItem.status);
             if (timeType.getSyncCorpwxTime() == 1) {
                 line.add(dataItem.cardTime);
             }
-
             dataList.add(line);
         }
         //生成excel文件导出

+ 7 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -1166,11 +1166,17 @@
             </el-table-column>
             <el-table-column
               min-width="200"
-              :label="$t('other.missingDate')"
+              :label="$t('weekDay.date')"
               align="center"
               prop="createDate"
             >
             </el-table-column>
+            <el-table-column
+              min-width="200"
+              :label="$t('state.states')"
+              align="center"
+              prop="status"
+            />
             <el-table-column
               min-width="200"
               :label="$t('other.attendanceData')"