Prechádzať zdrojové kódy

未填人员改成漏填, 标记请假未填的人员

seyason 2 rokov pred
rodič
commit
43d8df762e

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

@@ -1415,13 +1415,14 @@ public class WeiXinCorpController {
         //默认普通员工的角色
         //获取公司根部门人员,也就是没有分配部门的人员
         int companyRootDeptId = 1;
-        JSONArray allCorpWxUserJsonArray = getDeptUserInfo(curCorpAccessToken, companyRootDeptId);
-        System.out.println("获取到公司下的员工数量="+allCorpWxUserJsonArray.size());
+        JSONArray usersUnderRootArray = getDeptUserInfo(curCorpAccessToken, companyRootDeptId);
+        System.out.println("获取到公司下的员工数量="+usersUnderRootArray.size());
         SysRole defaultRole = sysRoleMapper.selectOne(
                 new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
         List<User> allCorpWxUserList = new ArrayList<>();
-        for (int m=0;m<allCorpWxUserJsonArray.size(); m++) {
-            JSONObject userJson = allCorpWxUserJsonArray.getJSONObject(m);
+        for (int m=0;m<usersUnderRootArray.size(); m++) {
+            JSONObject userJson = usersUnderRootArray.getJSONObject(m);
+            System.out.println(userJson.toString());
             String curUserid = userJson.getString("userid");
             //跳过非激活状态的员工
             if (userJson.getInteger("status") != 1) continue;
@@ -1475,6 +1476,31 @@ public class WeiXinCorpController {
                         departmentMapper.updateById(curDept);
                     }
                 }
+                //获取部门下的人员
+                JSONArray userList = getDeptUserSimple(curCorpAccessToken, deptId);
+                for (int m=0;m<userList.size(); m++) {
+                    JSONObject userJson = userList.getJSONObject(m);
+                    String curUserid = userJson.getString("userid");
+                    System.out.println("人员信息:"+userJson.toString());
+                    //不存在的人员, 进行插入
+                    User user = new User();
+                    Optional<User> first = allCorpWxUserList.stream().filter(all -> all.getCorpwxUserid().equals(curUserid)).findFirst();
+                    if (first.isPresent()) {
+                        user = first.get();
+                        user.setCorpwxDeptid(deptId);
+                    } else {
+                        //在当前部门下的员工
+                        user.setId(SnowFlake.nextId()+"")
+                                .setRoleId(defaultRole.getId())//默认普通员工
+                                .setRoleName(defaultRole.getRolename())
+                                .setCompanyId(companyId)
+                                .setName(userJson.getString("name"))
+                                .setCorpwxUserid(curUserid)
+                                .setColor(ColorUtil.randomColor())
+                                .setJobNumber(curUserid);
+                        allCorpWxUserList.add(user);
+                    }
+                }
             }
         }
         //更新部门层级关系
@@ -1491,13 +1517,14 @@ public class WeiXinCorpController {
                 newItem.setDepartmentCascade(convertDepartmentIdToCascade(deptId, allDeptList));
             }
         });
-        userService.saveBatch(newUserList);
+        if (newUserList.size() > 0) {
+            userService.saveBatch(newUserList);
+        }
         List<User> updateUserList = allCorpWxUserList.stream().filter(newItem->existingUsers.stream().anyMatch(existingItem->newItem.getCorpwxUserid().equals(existingItem.getCorpwxUserid())
                                             && (!newItem.getName().equals(existingItem.getName()) || (newItem.getCorpwxDeptid() != null && !newItem.getCorpwxDeptid().equals(existingItem.getCorpwxDeptid()))))).collect(Collectors.toList());
         List<Integer> corpWxDeptIds = updateUserList.stream().map(User::getCorpwxDeptid).collect(Collectors.toList());
         List<Department> departmentList = null;
         if (corpWxDeptIds.size() > 0) {
-            //
             departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId).in("corpwx_deptid", corpWxDeptIds));
         }
         final  List<Department> fDeptList = departmentList;
@@ -1513,7 +1540,9 @@ public class WeiXinCorpController {
                 u.setDepartmentCascade("0");
             }
         });
-        userService.updateBatchById(updateUserList);
+        if (updateUserList.size() > 0) {
+            userService.updateBatchById(updateUserList);
+        }
         return new HttpRespMsg();
     }
 

+ 46 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1562,7 +1562,42 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
             if (timeType.getReportAuditType() == 3) {
                 //审核通过的话,给抄送人发送审核通过提醒
-
+                for (Report report : reportList) {
+                    if(report.getState()==1){
+                        ReportAuditorSetting reportAuditorSetting = reportAuditorSettingMapper.selectById(report.getId());
+                        if(reportAuditorSetting.getCcUserid() != null){
+                            Optional<User> first = userList.stream().filter(ul -> ul.getId().equals(reportAuditorSetting.getCcUserid())).findFirst();
+                            //取到抄送人
+                            User u = first.get();
+                            if(u.getCorpwxUserid()!=null){
+                                if(wxCorpInfoList.size()>0){
+                                    JSONObject json=new JSONObject();
+                                    JSONArray dataJson=new JSONArray();
+                                    JSONObject item=new JSONObject();
+                                    item.put("key","审核结果");
+                                    item.put("value","通过");
+                                    dataJson.add(item);
+                                    JSONObject item1=new JSONObject();
+                                    item1.put("key","项目名称");
+                                    item1.put("value",projectList.stream().filter(pro->pro.getId().equals(report.getProjectId())).findFirst().get().getProjectName());
+                                    dataJson.add(item1);
+                                    JSONObject item2=new JSONObject();
+                                    item2.put("key","填报人员");
+                                    item2.put("value",userList.stream().filter(curU->curU.getId().equals(report.getCreatorId())).findFirst().get().getName());
+                                    dataJson.add(item2);
+                                    JSONObject item3=new JSONObject();
+                                    item3.put("key","工作日期");
+                                    item3.put("value",report.getCreateDate());
+                                    dataJson.add(item3);
+                                    json.put("template_id","tty9TkCAAAwOgmzwS2uFogWgOmPDdIRQ");
+                                    json.put("url","https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://mobworktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=0#wechat_redirect");
+                                    json.put("content_item",dataJson);
+                                    wxCorpInfoService.sendWXCorpTemplateMsg(wxCorpInfoList.get(0),u.getCorpwxUserid(),json);
+                                }
+                            }
+                        }
+                    }
+                }
             }
             //对导入审核,添加记录
             int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
@@ -4005,6 +4040,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
         //获取企业微信同步数据
         List<Map> userCorpwxTimeMapList = userCorpwxTimeMapper.selectByAsk(companyId,startDate,endDate);
+
         //请假人员名单
 
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@@ -4029,7 +4065,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         long cnt = localStart.until(localEnd, ChronoUnit.DAYS);
         List<String> cpwxIds = new ArrayList<>();
         //获取请假数据
-        List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", user.getCompanyId()));
+        List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", user.getCompanyId())
+                .le("start_date", endDate)
+                .ge("end_date", startDate));
         //已驳回的数据
         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));
@@ -4087,15 +4125,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         }
                         noRecord.name = curUser.getName();
                         //请假的
-                        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());
-                        noReportDataList.add(noRecord);
-                        for (LeaveSheet leaveSheet : leaveSheets) {
-                            if(!(date.isBefore(leaveSheet.getStartDate())||date.isAfter(leaveSheet.getEndDate()))){
-                                noReportDataList.remove(noRecord);
+                        for (LeaveSheet leaveSheet : leaveSheetList) {
+                            if (leaveSheet.getOwnerId().equals(curUser.getId()) &&
+                                    (leaveSheet.getStartDate().isEqual(date) || leaveSheet.getEndDate().isEqual(date)
+                                        || (leaveSheet.getStartDate().isBefore(date) && leaveSheet.getEndDate().isAfter(date)))) {
+                                noRecord.status = MessageUtils.message("leave.leave");
                             }
                         }
+                        noReportDataList.add(noRecord);
                     }
                 }
         }

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json

@@ -42,6 +42,7 @@
     "approvedProject": "Approved project daily review",
     "allState": "All state",
     "DidNotFillIn": "Did not fill in",
+    "missFillReport":"Missing",
     "alreadyPassed": "already passed",
     "WaitingAudit": "Waiting audit",
     "notThrough": "Not through",

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json

@@ -42,6 +42,7 @@
     "approvedProject": "项目日报审核通过",
     "allState": "全部状态",
     "DidNotFillIn": "未填报",
+    "missFillReport":"漏填",
     "alreadyPassed": "已通过",
     "WaitingAudit": "待审核",
     "notThrough": "不通过",

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

@@ -116,10 +116,10 @@
                                     <!-- 待提交 -->
                                     {{$t('state.waitingsubmit')}}
                                     <el-link :underline="false" @click="showMembList(2)"><span style="margin-left:5px;margin-right:5px;color:green;">{{fillList.filter(item => item.state == 3).length}}</span></el-link>{{$t('other.people')}},
-                                    <!-- 未填写 -->
-                                    {{$t('state.DidNotFillIn')}}
-                                    <el-link :underline="false" @click="showMembList(0)"><span style="margin-left:5px;margin-right:5px;color:red;">{{unFillList.length | numbers}}</span></el-link>{{$t('other.people')}}
-                                    <span v-if="leaveAllNum">{{'(全天请假' + leaveAllNum + '人)'}}</span>
+                                    <!-- 漏填 -->
+                                    {{$t('state.missFillReport')}}
+                                    <el-link :underline="false" @click="showMembList(0)"><span style="margin-left:5px;margin-right:5px;color:red;">{{(unFillList.length - leaveAllNum) | numbers}}</span>{{$t('other.people')}}
+                                    <span v-if="leaveAllNum">{{', 全天请假' + leaveAllNum + '人'}}</span></el-link>
                                     </span>
                                     </span>
                                 </span>