Browse Source

钉钉考勤获取

QuYueTing 1 week ago
parent
commit
c825ecf280

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

@@ -1224,7 +1224,7 @@ public class WeiXinCorpController {
                                         userMapper.updateById(changeUser);
                                         //处理项目参与人
                                         List<Participation> toAddList = new ArrayList<>();
-                                        projectDeptRelateMapper.selectList(new QueryWrapper<ProjectDeptRelate>().eq("department_id", changeUser.getDepartmentId()).eq("company_id", companyId))
+                                        projectDeptRelateMapper.selectList(new QueryWrapper<ProjectDeptRelate>().eq("department_id", changeUser.getDepartmentId()))
                                                 .forEach(projectDeptRelate -> {
                                                     Participation participation = new Participation();
                                                     participation.setProjectId(projectDeptRelate.getProjectId());

+ 7 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -2831,7 +2831,12 @@ public class DingDingServiceImpl implements DingDingService {
         } else {
             //尝试查询出差记录
             if (userId != null) {
-                msg.data = listUserScheduleByDay(companyId, userId, date);
+                UserDingdingTime time = listUserScheduleByDay(companyId, userId, date);
+                if (time == null) {
+                    msg.setError("暂未查询到考勤记录");
+                } else {
+                    msg.setData(time);
+                }
             }
         }
         return msg;
@@ -2857,7 +2862,7 @@ public class DingDingServiceImpl implements DingDingService {
                     JSONObject obj = array.getJSONObject(i);
                     //出差类型
                     System.out.println(obj);
-                    if (obj.getInteger("approve_biz_type") == 2) {
+                    if (obj.containsKey("approve_biz_type") && (Integer)obj.getInteger("approve_biz_type") == 2) {
                         if (obj.getString("check_type").equals("OnDuty")) {
                             //出差开始时间
                             System.out.println("出差开始时间=="+obj.getString("check_date_time"));

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -10919,7 +10919,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allSubDeptIds));
                     if (manageUserList.size() > 0) {
                         List<String> collect = manageUserList.stream().map(User::getCorpwxUserid).collect(Collectors.toList());
+                        //获取corpwxUserId为null的姓名
+                        List<String> nullCorpwxUserIdNames =manageUserList.stream().filter(u -> StringUtils.isEmpty(u.getCorpwxUserid())).map(User::getName).collect(Collectors.toList());
                         userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("corpwx_userid", collect).between("create_date", firstDay, lastDay));
+                        if (nullCorpwxUserIdNames.size() > 0) {
+                            List<UserCorpwxTime> userCorpwxTimes = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("name", nullCorpwxUserIdNames).between("create_date", firstDay, lastDay));
+                            userCorpwxTimeList.addAll(userCorpwxTimes);
+                        }
                     }
                 } else {
                     userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).between("create_date", firstDay, lastDay));

+ 18 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -2,6 +2,7 @@ package com.management.platform.task;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.management.platform.controller.ReportController;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.TisTimeVO;
@@ -202,7 +203,7 @@ public class DataCollectTask {
 
 
     @Scheduled(cron = "0 0 1 * * ?")
-//    @Scheduled(cron = "0 46 7 * * ?")
+//    @Scheduled(cron = "0 0 11 * * ?")
     @Async
     public void sqlServerTask() {
         if(isDev){return;}
@@ -243,10 +244,12 @@ public class DataCollectTask {
                             new  ParameterizedTypeReference<List<ErpOrderInfo>>(){}
                     );
                     if (listResponse.getStatusCode() == HttpStatus.OK) {
+                        //dataList中是进行中的工单
                         List<ErpOrderInfo> dataList = listResponse.getBody();
+                        List<ErpOrderInfo> erpOrderInfos = erpOrderInfoMapper.selectList(new LambdaQueryWrapper<ErpOrderInfo>());
+                        List<ErpOrderInfo> closeInfoList = new ArrayList<>();
+                        List<String> collect = dataList.stream().map(ErpOrderInfo::getMoDId).collect(Collectors.toList());
                         if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
-                            List<String> collect = dataList.stream().map(ErpOrderInfo::getMoDId).distinct().collect(Collectors.toList());
-                            List<ErpOrderInfo> erpOrderInfos = erpOrderInfoMapper.selectList(new LambdaQueryWrapper<ErpOrderInfo>().in(ErpOrderInfo::getMoDId, collect));
                             for (ErpOrderInfo item : dataList) {
                                 Optional<ErpOrderInfo> first = erpOrderInfos.stream().filter(t -> t.getMoDId().equals(item.getMoDId())).findFirst();
                                 if(first.isPresent()){
@@ -264,7 +267,15 @@ public class DataCollectTask {
                             }
                             toUpdateList.clear();
                             toAddList.clear();
+                            erpOrderInfos.stream().filter(t -> !collect.contains(t.getMoDId())).forEach(t -> closeInfoList.add(new ErpOrderInfo().setId(t.getId()).setStatus(4)));
+                            if(!CollectionUtils.isEmpty(closeInfoList)){
+                                erpOrderInfoService.updateBatchById(closeInfoList);
+                            }
+                        } else {
+                            //全部关闭
+                            erpOrderInfoMapper.update(new ErpOrderInfo().setStatus(4), new QueryWrapper<ErpOrderInfo>());
                         }
+
                     }
                     offset += pageSize;
                 }
@@ -365,7 +376,7 @@ public class DataCollectTask {
     }
 
     @Scheduled(cron = "0 0 2 * * ?")
-//@Scheduled(cron = "0 35 8 * * ?")
+//@Scheduled(cron = "30 35 15 * * ?")
     @Async
     public void leaveSheetTask(){
         if(isDev){return;}
@@ -424,7 +435,7 @@ public class DataCollectTask {
                             if(!CollectionUtils.isEmpty(realDataList)){
                                 List<String> collect = realDataList.stream().map(LeaveSheet::getProcinstId).distinct().collect(Collectors.toList());
                                 List<LeaveSheet> existLeaveSheetList = leaveSheetMapper.selectList(new LambdaQueryWrapper<LeaveSheet>().in(LeaveSheet::getProcinstId, collect).eq(LeaveSheet::getCompanyId, specialCompanyId));
-                                List<String> existIds = existLeaveSheetList.stream().map(LeaveSheet::getProcinstId).collect(Collectors.toList());
+//                                List<String> existIds = existLeaveSheetList.stream().map(LeaveSheet::getProcinstId).collect(Collectors.toList());
 //                                List<String> existIds = leaveSheetMapper.getExistIds(collect,specialCompanyId);
                                 for (LeaveSheet tmp : realDataList) {
                                     Optional<LeaveSheet> first = existLeaveSheetList.stream().filter(t -> t.getProcinstId().equals(tmp.getProcinstId())).findFirst();
@@ -457,7 +468,7 @@ public class DataCollectTask {
                                         List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new LambdaQueryWrapper<LeaveSheet>()
                                                 .eq(LeaveSheet::getOwnerId, ownerId)
                                                 .eq(LeaveSheet::getCompanyId, specialCompanyId)
-                                                .le(LeaveSheet::getStartDate, date).gt(LeaveSheet::getEndDate, date));
+                                                .le(LeaveSheet::getStartDate, date).ge(LeaveSheet::getEndDate, date));
                                         if (!CollectionUtils.isEmpty(leaveSheetList)) {
                                             double leaveHours = leaveSheetList.stream().mapToDouble(LeaveSheet::getTimeHours).sum();
                                             if (leaveHours > 0) {
@@ -469,7 +480,6 @@ public class DataCollectTask {
                                                 List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("company_id", specialCompanyId).eq("project_id", project.getId()).eq("create_date", date).eq("creator_id", ownerId));
                                                 //取第一条
                                                 Report oneReport = reportList.size() > 0?reportList.get(0):new Report();
-
                                                 if (oneReport.getId() != null) {
                                                     if (!oneReport.getWorkingTime().equals(leaveHours)) {
                                                         //更新时长
@@ -490,6 +500,7 @@ public class DataCollectTask {
                                                     report.setCreatorId(ownerId);
                                                     report.setDeptId(owner.getDepartmentId());
                                                     report.setProjectAuditState(0);
+                                                    report.setWorkingTime(leaveHours);
 
                                                     LocalDate now = LocalDate.now();
                                                     DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");