Browse Source

立项审核对接

Min 1 year ago
parent
commit
e902c93bb5

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

@@ -179,6 +179,18 @@ public class WeiXinCorpController {
     private ProjectApprovalBasecostService projectApprovalBasecostService;
     @Resource
     private ProjectApprovalCheckService projectApprovalCheckService;
+    @Resource
+    private ProjectService projectService;
+    @Resource
+    private ProjectBasecostService projectBasecostService;
+    @Resource
+    private ProjectAuditorService projectAuditorService;
+    @Resource
+    private ParticipationService participationService;
+    @Resource
+    private ProjectApprovalLogService projectApprovalLogService;
+    @Resource
+    private ParticipationApprovalService participationApprovalService;
 
     public static String SUITE_ACCESS_TOKEN = null;
     public static long suiteTokenExpireTime = 0L;
@@ -581,15 +593,57 @@ public class WeiXinCorpController {
                     String spNo = approvalInfo.getString("SpNo");
                     ProjectApproval projectApproval = projectApprovalMapper.selectOne(new LambdaQueryWrapper<ProjectApproval>().eq(ProjectApproval::getWxCorpSpNo, spNo));
                     if(projectApproval!=null){
+                        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, projectApproval.getCompanyId()));
                         int status = approvalInfo.getInt("SpStatus");
+                        ProjectApproval pa=new ProjectApproval();
+                        pa.setId(projectApproval.getId());
                         switch (status){
                             case 1://审批中 无需修改
                                 break;
                             case 2://已通过
-                                projectApproval.setStatus(1);
+                                pa.setStatus(1);
+                                projectApprovalMapper.updateById(pa);
+                                //创建项目数据
+                                //立项审核通过后创建项目数据
+                                Project project=new Project();
+                                BeanUtils.copyProperties(projectApproval,project);
+                                project.setId(null);
+                                project.setCreateDate(LocalDate.now());
+                                List<ProjectApprovalBasecost> projectApprovalBasecostList = projectApprovalBasecostService.list(new LambdaQueryWrapper<ProjectApprovalBasecost>().eq(ProjectApprovalBasecost::getProjectApprovalId, projectApproval.getId()));
+                                List<ParticipationApproval> participationApprovalList = participationApprovalService.list(new LambdaQueryWrapper<ParticipationApproval>().eq(ParticipationApproval::getProjectApprovalId, projectApproval.getId()));
+                                List<ProjectApprovalAuditor> projectApprovalAuditorList = projectApprovalAuditorService.list(new LambdaQueryWrapper<ProjectApprovalAuditor>().eq(ProjectApprovalAuditor::getProjectApprovalId, projectApproval.getId()));
+                                projectService.save(project);
+                                List<ProjectBasecost> projectBasecostList=new ArrayList<>();
+                                List<Participation> participationList=new ArrayList<>();
+                                List<ProjectAuditor> projectAuditorList=new ArrayList<>();
+                                projectApprovalBasecostList.forEach(p->{
+                                    ProjectBasecost projectBasecost=new ProjectBasecost();
+                                    BeanUtils.copyProperties(p,projectBasecost);
+                                    projectBasecost.setId(null);
+                                    projectBasecost.setProjectId(project.getId());
+                                    projectBasecostList.add(projectBasecost);
+                                });
+                                participationApprovalList.forEach(p->{
+                                    Participation participation=new Participation();
+                                    BeanUtils.copyProperties(p,participation);
+                                    participation.setId(null);
+                                    participation.setProjectId(project.getId());
+                                    participationList.add(participation);
+                                });
+                                projectApprovalAuditorList.forEach(p->{
+                                    ProjectAuditor projectAuditor=new ProjectAuditor();
+                                    BeanUtils.copyProperties(p,projectAuditor);
+                                    projectAuditor.setId(null);
+                                    projectAuditor.setProjectId(project.getId());
+                                    projectAuditorList.add(projectAuditor);
+                                });
+                                projectBasecostService.saveBatch(projectBasecostList);
+                                participationService.saveBatch(participationList);
+                                projectAuditorService.saveBatch(projectAuditorList);
                                 break;
                             case 3://已驳回
-                                projectApproval.setStatus(2);
+                                pa.setStatus(2);
+                                projectApprovalMapper.updateById(pa);
                                 break;
                             case 4://已撤销 删除立项数据
                                 projectApprovalMapper.deleteById(projectApproval.getId());
@@ -598,7 +652,37 @@ public class WeiXinCorpController {
                                 projectApprovalCheckService.remove(new LambdaQueryWrapper<ProjectApprovalCheck>().eq(ProjectApprovalCheck::getProjectApprovalId,projectApproval.getId()).eq(ProjectApprovalCheck::getStatus,0));
                                 return "success";
                         }
-                        projectApprovalMapper.updateById(projectApproval);
+                        org.json.JSONArray spRecord = approvalInfo.getJSONArray("SpRecord");
+                        //获取到审批节点 生成审核记录
+                        List<ProjectApprovalLog> projectApprovalLogList=new ArrayList<>();
+                        for (int i = 0; i < spRecord.length(); i++) {
+                            org.json.JSONObject object = spRecord.getJSONObject(i);
+                            org.json.JSONArray details = object.getJSONArray("Details");
+                            for (int i1 = 0; i1 < details.length(); i1++) {
+                                org.json.JSONObject detail = details.getJSONObject(i1);
+                                org.json.JSONObject approvor = detail.getJSONObject("Approvor");
+                                //分支审批人审批状态:1-审批中;2-已同意;3-已驳回;4-已转审
+                                int spStatus = detail.getInt("SpStatus");
+                                String userId = approvor.getString("UserId");
+                                Optional<User> first = userList.stream().filter(f -> f.getCorpwxUserid().equals(userId)).findFirst();
+                                if(first.isPresent()){
+                                    //新增操作记录数据
+                                    ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
+                                    projectApprovalLog.setCreateTime(LocalDateTime.now());
+                                    projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+                                    projectApprovalLog.setUserName(first.get().getName());
+                                    projectApprovalLog.setType(spStatus);
+                                    projectApprovalLogList.add(projectApprovalLog);
+                                }
+                            }
+                        }
+                        List<Integer> typeList=new ArrayList<>();
+                        typeList.add(2);
+                        typeList.add(3);
+                        typeList.add(4);
+                        projectApprovalLogService.remove(new LambdaQueryWrapper<ProjectApprovalLog>()
+                                .eq(ProjectApprovalLog::getProjectApprovalId,projectApproval.getId()).in(ProjectApprovalLog::getType,typeList));
+                        projectApprovalLogService.saveBatch(projectApprovalLogList);
                     }
                 }
             }