Browse Source

Merge remote-tracking branch 'origin/master'

Guo1B0 1 năm trước cách đây
mục cha
commit
231b41229a

+ 32 - 22
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/FeishuInfoController.java

@@ -690,22 +690,26 @@ public class FeishuInfoController {
                             Optional<Object> first = leaders.stream().filter(l -> ((JSONObject) l).getIntValue("leaderType") == 1).findFirst();
                             if(first.isPresent()){
                                 JSONObject firstOb = (JSONObject) first.get();
-                                Optional<User> leaderID = allUserList.stream().filter(ul -> ul.getFeishuUserid().equals(firstOb.getString("leaderID"))).findFirst();
-                                if(leaderID.isPresent()){
-                                    department.setManagerId(leaderID.get().getId());
+                                if(firstOb.getString("leaderID")!=null){
+                                    Optional<User> leaderID = allUserList.stream().filter(ul ->ul.getFeishuUserid()!=null&& ul.getFeishuUserid().equals(firstOb.getString("leaderID"))).findFirst();
+                                    if(leaderID.isPresent()){
+                                        department.setManagerId(leaderID.get().getId());
+                                    }
                                 }
                             }
                             //todo:处理次要负责人
                             List<Object> othObs = leaders.stream().filter(l -> ((JSONObject) l).getIntValue("leaderType") == 2).collect(Collectors.toList());
                             for (Object othOb : othObs) {
                                 JSONObject oth = (JSONObject) othOb;
-                                Optional<User> leaderID = allUserList.stream().filter(ul -> ul.getFeishuUserid().equals(oth.getString("leaderID"))).findFirst();
-                                if(leaderID.isPresent()){
-                                    DepartmentOtherManager departmentOtherManager=new DepartmentOtherManager();
-                                    departmentOtherManager.setCompanyId(feishuInfo.getCompanyId());
-                                    departmentOtherManager.setDepartmentId(department.getDepartmentId());
-                                    departmentOtherManager.setOtherManagerId(leaderID.get().getId());
-                                    odList.add(departmentOtherManager);
+                                if(oth.getString("leaderID")!=null){
+                                    Optional<User> leaderID = allUserList.stream().filter(ul ->ul.getFeishuUserid()!=null&&ul.getFeishuUserid().equals(oth.getString("leaderID"))).findFirst();
+                                    if(leaderID.isPresent()){
+                                        DepartmentOtherManager departmentOtherManager=new DepartmentOtherManager();
+                                        departmentOtherManager.setCompanyId(feishuInfo.getCompanyId());
+                                        departmentOtherManager.setDepartmentId(department.getDepartmentId());
+                                        departmentOtherManager.setOtherManagerId(leaderID.get().getId());
+                                        odList.add(departmentOtherManager);
+                                    }
                                 }
                             }
                         }
@@ -878,22 +882,26 @@ public class FeishuInfoController {
                     Optional<Object> first = leaders.stream().filter(l -> ((JSONObject) l).getIntValue("leaderType") == 1).findFirst();
                     if(first.isPresent()){
                         JSONObject firstOb = (JSONObject) first.get();
-                        Optional<User> leaderID = allUserList.stream().filter(ul -> ul.getFeishuUserid().equals(firstOb.getString("leaderID"))).findFirst();
-                        if(leaderID.isPresent()){
-                            department.setManagerId(leaderID.get().getId());
+                        if(firstOb.getString("leaderID")!=null){
+                            Optional<User> leaderID = allUserList.stream().filter(ul ->ul.getFeishuUserid()!=null&& ul.getFeishuUserid().equals(firstOb.getString("leaderID"))).findFirst();
+                            if(leaderID.isPresent()){
+                                department.setManagerId(leaderID.get().getId());
+                            }
                         }
                     }
                     //todo:处理次要负责人
                     List<Object> othObs = leaders.stream().filter(l -> ((JSONObject) l).getIntValue("leaderType") == 2).collect(Collectors.toList());
                     for (Object othOb : othObs) {
                         JSONObject oth = (JSONObject) othOb;
-                        Optional<User> leaderID = allUserList.stream().filter(ul -> ul.getFeishuUserid().equals(oth.getString("leaderID"))).findFirst();
-                        if(leaderID.isPresent()){
-                            DepartmentOtherManager departmentOtherManager=new DepartmentOtherManager();
-                            departmentOtherManager.setCompanyId(feishuInfo.getCompanyId());
-                            departmentOtherManager.setDepartmentId(department.getDepartmentId());
-                            departmentOtherManager.setOtherManagerId(leaderID.get().getId());
-                            odList.add(departmentOtherManager);
+                        if(oth.getString("leaderID")!=null){
+                            Optional<User> leaderID = allUserList.stream().filter(ul ->ul.getFeishuUserid()!=null&&ul.getFeishuUserid().equals(oth.getString("leaderID"))).findFirst();
+                            if(leaderID.isPresent()){
+                                DepartmentOtherManager departmentOtherManager=new DepartmentOtherManager();
+                                departmentOtherManager.setCompanyId(feishuInfo.getCompanyId());
+                                departmentOtherManager.setDepartmentId(department.getDepartmentId());
+                                departmentOtherManager.setOtherManagerId(leaderID.get().getId());
+                                odList.add(departmentOtherManager);
+                            }
                         }
                     }
                 }
@@ -965,13 +973,15 @@ public class FeishuInfoController {
         //todo:处理人员
         //获取应用可用范围内的人员
         JSONArray userArrays = (JSONArray) availableRange.get("user_ids");
+        System.out.println("userArrays==========="+userArrays.toJSONString());
         if(userArrays!=null&&userArrays.size()>0){
             for (int i = 0; i < userArrays.size(); i++) {
-                JSONObject userOb = userArrays.getJSONObject(i);
-                boolean b = allUserList.stream().anyMatch(al -> al.getFeishuUserid() != null && al.getFeishuUserid().equals(userOb.getString("open_id")));
+                String uid = userArrays.getString(i);
+                boolean b = allUserList.stream().anyMatch(al -> al.getFeishuUserid() != null && al.getFeishuUserid().equals(uid));
                 if(!b){
                     //不存在的人员, 进行插入
                     User user = new User();
+                    JSONObject userOb = feishuInfoService.getUserInfo(feishuInfo, uid);
                     user.setId(SnowFlake.nextId()+"")
                             .setRoleId(role.getId())//默认普通员工
                             .setRoleName(role.getRolename())

+ 25 - 17
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectApprovalController.java

@@ -95,18 +95,39 @@ public class ProjectApprovalController {
             projectApproval.setCreateDate(LocalDate.now());
             projectApproval.setCreatorId(user.getId());
         }
+        //新增操作记录数据
+        ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
+        projectApprovalLog.setCreateTime(LocalDateTime.now());
+        projectApprovalLog.setUserName(user.getName());
+        if(projectApproval.getId()==null){
+            //提交
+            projectApprovalLog.setType(0);
+        }else {
+            //编辑
+            projectApprovalLog.setType(1);
+        }
         Optional<ProjectCategory> category = categoryList.stream().filter(c -> c.getId().equals(projectApproval.getCategory())).findFirst();
         if(category.isPresent()){
             projectApproval.setCategoryName(category.get().getName());
         }
-        Integer count=projectMapper.selectCount(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, companyId).eq(Project::getProjectCode, projectApproval.getProjectCode()));
-        if(count>0){
-            msg.setError("已存在项目编号为["+projectApproval.getProjectCode()+"]的项目");
-            return msg;
+        if(projectApproval.getInchargerId()!=null){
+            User id = userMapper.selectById(projectApproval.getInchargerId());
+            projectApproval.setInchargerName(id.getName());
+        }
+        if(!StringUtils.isEmpty(projectApproval.getProjectCode())){
+            Integer count=projectMapper.selectCount(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, companyId).eq(Project::getProjectCode, projectApproval.getProjectCode()));
+            Integer count1=projectApprovalService.count(new LambdaQueryWrapper<ProjectApproval>().eq(ProjectApproval::getCompanyId, companyId).eq(ProjectApproval::getProjectCode, projectApproval.getProjectCode()));
+            if(count>0||count1>0){
+                msg.setError("已存在项目编号为["+projectApproval.getProjectCode()+"]的项目/立项");
+                return msg;
+            }
         }
         if(!projectApprovalService.saveOrUpdate(projectApproval)){
             msg.setError("验证失败");
+            return msg;
         }
+        projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+        projectApprovalLogService.save(projectApprovalLog);
         participationApprovalService.remove(new LambdaQueryWrapper<ParticipationApproval>().eq(ParticipationApproval::getProjectApprovalId,projectApproval.getId()));
         projectApprovalBasecostService.remove(new LambdaQueryWrapper<ProjectApprovalBasecost>().eq(ProjectApprovalBasecost::getProjectApprovalId,projectApproval.getId()));
         projectApprovalAuditorService.remove(new LambdaQueryWrapper<ProjectApprovalAuditor>().eq(ProjectApprovalAuditor::getProjectApprovalId,projectApproval.getId()));
@@ -239,19 +260,6 @@ public class ProjectApprovalController {
                 }
             }
         }
-        //新增操作记录数据
-        ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
-        projectApprovalLog.setCreateTime(LocalDateTime.now());
-        projectApprovalLog.setProjectApprovalId(projectApproval.getId());
-        projectApprovalLog.setUserName(user.getName());
-        if(projectApproval.getId()==null){
-            //提交
-            projectApprovalLog.setType(0);
-        }else {
-            //编辑
-            projectApprovalLog.setType(1);
-        }
-        projectApprovalLogService.save(projectApprovalLog);
         return msg;
     }
 

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

@@ -729,7 +729,7 @@ public class WeiXinCorpController {
                         int spStatus = detail.getInt("SpStatus");
                         String userId = approver.getString("UserId");
                         Optional<User> first = userList.stream().filter(f -> f.getCorpwxUserid().equals(userId)).findFirst();
-                        if(first.isPresent()){
+                        if(first.isPresent()&&spStatus!=1){
                             //新增操作记录数据
                             ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
                             projectApprovalLog.setCreateTime(LocalDateTime.now());
@@ -748,7 +748,7 @@ public class WeiXinCorpController {
                     int spStatus = detail.getInt("SpStatus");
                     String userId = approver.getString("UserId");
                     Optional<User> first = userList.stream().filter(f -> f.getCorpwxUserid().equals(userId)).findFirst();
-                    if(first.isPresent()){
+                    if(first.isPresent()&&spStatus!=1){
                         //新增操作记录数据
                         ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
                         projectApprovalLog.setCreateTime(LocalDateTime.now());

+ 13 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectApprovalServiceImpl.java

@@ -313,6 +313,10 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
                         //跳过第一行标题
                         continue;
                     }
+                    if(!codeCell.equals("项目编号")){
+                        msg.setError("当前导入文件非立项导入模板,请下载指定模板进行导入");
+                        return msg;
+                    }
                     //检查编号是否已经存在
                     if (!StringUtils.isEmpty(code)) {
                         int cnt = projectMapper.selectCount(new QueryWrapper<Project>().eq("project_code", code).eq("company_id", user.getCompanyId()));
@@ -423,6 +427,14 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
                     projectApprovalMapper.updateById(project);
                 }else {
                     projectApprovalMapper.insert(project);
+                    //增加操作记录
+                    //新增操作记录数据
+                    ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
+                    projectApprovalLog.setCreateTime(LocalDateTime.now());
+                    projectApprovalLog.setProjectApprovalId(project.getId());
+                    projectApprovalLog.setUserName(user.getName());
+                    projectApprovalLog.setType(0);
+                    projectApprovalLogService.save(projectApprovalLog);
                 }
                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                     //更新审核人 发送到企业微信完成审核动作
@@ -695,11 +707,10 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
                     }
                 }
             }
-            //msg.data = "成功导入"+importCount+"条数据。";
             msg.data = MessageUtils.message("data.importSucRow",importCount);
             if (existCodeList.size() > 0) {
                 String collect = existCodeList.stream().collect(Collectors.joining(","));
-                msg.data += MessageUtils.message("data.upSkip",existCodeList.size(),collect);
+                msg.data += MessageUtils.message("data.skip",existCodeList.size(),collect);
             }
         } catch (Exception e) {
             e.printStackTrace();

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

@@ -1373,8 +1373,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     private void deleteProData(Integer id) {
         List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id").eq("project_id", id));
         if (rList.size() > 0) {
-            //删除日报的审核日志
-            reportAuditLogMapper.delete(new QueryWrapper<ReportAuditLog>().in("report_id", rList.stream().map(Report::getId).collect(Collectors.toList())));
+            //TODO: 删除日报的审核日志,按项目相关的审核报告进行删除
+//            reportAuditLogMapper.delete(new QueryWrapper<ReportAuditLog>().in("report_id", rList.stream().map(Report::getId).collect(Collectors.toList())));
             reportMapper.delete(new QueryWrapper<Report>().eq("project_id", id));
         }
 

+ 34 - 17
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -2005,32 +2005,49 @@ public class TimingTask {
         List<UserWithBeisen> userWithBeisenList=new ArrayList<>();
         LocalDate now=LocalDate.now();
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        String time=df.format(now.plusDays(1));
+        LocalDate start = now.minusDays(1);
+        LocalDate end = now.plusDays(1);
+        String startTime=df.format(start);
+        String endTime=df.format(end);
         List<BeisenConfig> beisenConfigs = beisenConfigMapper.selectList(null);
+        //更新电话到工时
+        List<User> needUpdateUsers=new ArrayList<>();
         for (BeisenConfig beisenConfig : beisenConfigs) {
             if(beisenConfig!=null){
-                List<JSONArray> byTimeWindow = BeiSenUtils.getByTimeWindow("",time,time,beisenConfig.getCompanyId(),beisenConfig.getAppKey(),beisenConfig.getAppSecret());
-                for (JSONArray array : byTimeWindow) {
-                    for (int i = 0; i < array.size(); i++) {
-                        UserWithBeisen userWithBeisen=new UserWithBeisen();
-                        JSONObject targetItem = array.getJSONObject(i);
-                        JSONObject employeeInfo = targetItem.getJSONObject("employeeInfo");
-                        JSONObject recordInfo = targetItem.getJSONObject("recordInfo");
-                        userWithBeisen.setCompanyId(beisenConfig.getCompanyId());
-                        userWithBeisen.setJobNumber(recordInfo.getString("jobNumber"));
-                        userWithBeisen.setMobilePhone(employeeInfo.getString("mobilePhone"));
-                        userWithBeisen.setName(employeeInfo.getString("name"));
-                        userWithBeisen.setUserId(employeeInfo.getString("userID"));
-                        Optional<UserWithBeisen> first = allBeisenList.stream().filter(a -> a.getUserId().equals(employeeInfo.getString("userID"))).findFirst();
-                        if(first.isPresent()){
-                            userWithBeisen.setId(first.get().getId());
+                List<JSONArray> byTimeWindow = BeiSenUtils.getByTimeWindow("",startTime,endTime,beisenConfig.getCompanyId(),beisenConfig.getAppKey(),beisenConfig.getAppSecret());
+                List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, beisenConfig.getCompanyId()));
+                if(byTimeWindow.size()>0){
+                    for (JSONArray array : byTimeWindow) {
+                        for (int i = 0; i < array.size(); i++) {
+                            UserWithBeisen userWithBeisen=new UserWithBeisen();
+                            JSONObject targetItem = array.getJSONObject(i);
+                            JSONObject employeeInfo = targetItem.getJSONObject("employeeInfo");
+                            JSONObject recordInfo = targetItem.getJSONObject("recordInfo");
+                            userWithBeisen.setCompanyId(beisenConfig.getCompanyId());
+                            userWithBeisen.setJobNumber(recordInfo.getString("jobNumber"));
+                            userWithBeisen.setMobilePhone(employeeInfo.getString("mobilePhone"));
+                            userWithBeisen.setName(employeeInfo.getString("name"));
+                            userWithBeisen.setUserId(employeeInfo.getString("userID"));
+                            Optional<UserWithBeisen> first = allBeisenList.stream().filter(a -> a.getUserId().equals(employeeInfo.getString("userID"))).findFirst();
+                            if(first.isPresent()){
+                                userWithBeisen.setId(first.get().getId());
+                            }
+                            userWithBeisenList.add(userWithBeisen);
+                            Optional<User> user = userList.stream().filter(u -> u.getJobNumber().equals(userWithBeisen.getJobNumber())).findFirst();
+                            if(user.isPresent()){
+                                User u=new User();
+                                u.setId(user.get().getId());
+                                u.setPhone(userWithBeisen.getMobilePhone());
+                                u.setJobNumber(userWithBeisen.getJobNumber());
+                                userList.add(u);
+                            }
                         }
-                        userWithBeisenList.add(userWithBeisen);
                     }
                 }
                 if(userWithBeisenList.size()>0){
                     userWithBeisenService.saveOrUpdateBatch(userWithBeisenList);
                 }
+                userService.updateBatchById(needUpdateUsers);
             }
         }
     }

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/projectApproval/projectApproval.vue

@@ -331,7 +331,7 @@
                         </div>
                         <div class="line"><span>{{'项目经理:'}}</span>
                             <span v-if="user.userNameNeedTranslate != 1">{{projectApprocalDetail.inchargerName}}</span>
-                            <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='projectApprocalDetail.inchargerName'></ww-open-data></span>
+                            <span v-if="user.userNameNeedTranslate == 1&&projectApprocalDetail.inchargerName"><ww-open-data type='userName' :openid='projectApprocalDetail.inchargerName'></ww-open-data></span>
                         </div>
                         <div class="line"><span>{{'日报审核人:'}}</span>
                             <span v-for="(par,index) in projectApprocalDetail.projectApprovalAuditorList" :key="par.auditorId">