Min 1 年之前
父節點
當前提交
4a1b955de8

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

@@ -214,7 +214,7 @@ public class ProjectApprovalController {
                                 value.put("text",arr[projectApproval.getLevel()-1]);
                                 break;
                             case "合同金额":
-                                value.put("text",projectApproval.getContractAmount()==null?0:projectApproval.getContractAmount());
+                                value.put("text",projectApproval.getContractAmount()==null?String.valueOf(0):String.valueOf(projectApproval.getContractAmount()));
                                 break;
                             case "计划开始日期":
                                 value.put("text",projectApproval.getPlanStartDate()==null?"":df.format(projectApproval.getPlanStartDate()));

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

@@ -511,6 +511,112 @@ public class WeiXinCorpController {
         return "success";
     }
 
+
+    public static void main(String[] args) {
+        org.json.JSONObject jsonObject = XML.toJSONObject("<xml>\n" +
+                "  <ToUserName><![CDATA[ww1cSD21f1e9c0caaa]]></ToUserName>\n" +
+                "  <FromUserName><![CDATA[sys]]></FromUserName>\n" +
+                "  <CreateTime>1571732272</CreateTime>\n" +
+                "  <MsgType><![CDATA[event]]></MsgType>\n" +
+                "  <Event><![CDATA[sys_approval_change]]></Event>\n" +
+                "  <AgentID>3010040</AgentID>\n" +
+                "  <ApprovalInfo>\n" +
+                "    <SpNo>201910220003</SpNo>\n" +
+                "    <SpName><![CDATA[示例模板]]></SpName>\n" +
+                "    <SpStatus>1</SpStatus>\n" +
+                "    <TemplateId><![CDATA[3TkaH5KFbrG9heEQWLJjhgpFwmqAFB4dLEnapaB7aaa]]></TemplateId>\n" +
+                "    <ApplyTime>1571728713</ApplyTime>\n" +
+                "    <Applyer>\n" +
+                "      <UserId><![CDATA[WuJunJie]]></UserId>\n" +
+                "      <Party><![CDATA[1]]></Party>\n" +
+                "    </Applyer>\n" +
+                "    <SpRecord>\n" +
+                "      <SpStatus>1</SpStatus>\n" +
+                "      <ApproverAttr>2</ApproverAttr>\n" +
+                "      <Details>\n" +
+                "        <Approver>\n" +
+                "          <UserId><![CDATA[WangXiaoMing]]></UserId>\n" +
+                "        </Approver>\n" +
+                "        <Speech><![CDATA[]]></Speech>\n" +
+                "        <SpStatus>1</SpStatus>\n" +
+                "        <SpTime>0</SpTime>\n" +
+                "      </Details>\n" +
+                "      <Details>\n" +
+                "        <Approver>\n" +
+                "          <UserId><![CDATA[XiaoGangHuang]]></UserId>\n" +
+                "        </Approver>\n" +
+                "        <Speech><![CDATA[]]></Speech>\n" +
+                "        <SpStatus>1</SpStatus>\n" +
+                "        <SpTime>0</SpTime>\n" +
+                "      </Details>\n" +
+                "    </SpRecord>\n" +
+                "    <SpRecord>\n" +
+                "      <SpStatus>1</SpStatus>\n" +
+                "      <ApproverAttr>1</ApproverAttr>\n" +
+                "      <Details>\n" +
+                "        <Approver>\n" +
+                "          <UserId><![CDATA[XiaoHongLiu]]></UserId>\n" +
+                "        </Approver>\n" +
+                "        <Speech><![CDATA[]]></Speech>\n" +
+                "        <SpStatus>1</SpStatus>\n" +
+                "        <SpTime>0</SpTime>\n" +
+                "      </Details>\n" +
+                "    </SpRecord>\n" +
+                "    <Notifyer>\n" +
+                "      <UserId><![CDATA[ChengLiang]]></UserId>\n" +
+                "    </Notifyer>\n" +
+                "    <Comments>\n" +
+                "      <CommentUserInfo>\n" +
+                "        <UserId><![CDATA[LiuZhi]]></UserId>\n" +
+                "      </CommentUserInfo>\n" +
+                "      <CommentTime>1571732272</CommentTime>\n" +
+                "      <CommentContent><![CDATA[这是一个备注]]></CommentContent>\n" +
+                "      <CommentId><![CDATA[6750538708562308220]]></CommentId>\n" +
+                "    </Comments>\n" +
+                "    <StatuChangeEvent>10</StatuChangeEvent>\n" +
+                "  </ApprovalInfo>\n" +
+                "</xml>\n").getJSONObject("xml");
+        org.json.JSONObject approvalInfo = jsonObject.getJSONObject("ApprovalInfo");
+        Long spNo = approvalInfo.getLong("SpNo");
+        int status = approvalInfo.getInt("SpStatus");
+        System.out.println(spNo);
+        System.out.println(status);
+        if(approvalInfo.has("SpRecord")){
+            org.json.JSONArray spRecord = approvalInfo.getJSONArray("SpRecord");
+            System.out.println(spRecord.toList());
+            for (int i = 0; i < spRecord.length(); i++) {
+                org.json.JSONObject object = spRecord.getJSONObject(i);
+                if(object.has("Details")){
+                    Object Details = object.get("Details");
+                    if(Details instanceof  org.json.JSONArray){
+                        org.json.JSONArray details = object.getJSONArray("Details");
+                        for (int i1 = 0; i1 < details.length(); i1++) {
+                            org.json.JSONObject detail = details.getJSONObject(i1);
+                            if(detail.has("Approver")){
+                                org.json.JSONObject approver = detail.getJSONObject("Approver");
+                                //分支审批人审批状态:1-审批中;2-已同意;3-已驳回;4-已转审
+                                int spStatus = detail.getInt("SpStatus");
+                                String userId = approver.getString("UserId");
+                                System.out.println(spStatus);
+                                System.out.println(userId);
+                            }
+                        }
+                    }else if(Details instanceof  org.json.JSONObject){
+                        org.json.JSONObject detail = object.getJSONObject("Details");
+                        if(detail.has("Approver")){
+                            org.json.JSONObject approver = detail.getJSONObject("Approver");
+                            //分支审批人审批状态:1-审批中;2-已同意;3-已驳回;4-已转审
+                            int spStatus = detail.getInt("SpStatus");
+                            String userId = approver.getString("UserId");
+                            System.out.println(spStatus);
+                            System.out.println(userId);
+                        }
+                    }
+                }
+            }
+        }
+
+    }
     //"企业微信数据回调"
     @RequestMapping(value = "/dataCallback/{corpId}", method = RequestMethod.POST)
     @ResponseBody
@@ -589,100 +695,153 @@ public class WeiXinCorpController {
                 }else if("sys_approval_change".equals(event)){
                     //审批动作事件,发生在该企业已经开通应用的情况下。
                     System.out.println("审批动作事件");
-                    org.json.JSONObject approvalInfo = jsonObject.getJSONObject("ApprovalInfo");
-                    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://已通过
-                                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://已驳回
-                                pa.setStatus(2);
-                                projectApprovalMapper.updateById(pa);
-                                break;
-                            case 4://已撤销 删除立项数据
-                                projectApprovalMapper.deleteById(projectApproval.getId());
-                                projectApprovalBasecostService.remove(new LambdaQueryWrapper<ProjectApprovalBasecost>().eq(ProjectApprovalBasecost::getProjectApprovalId,projectApproval.getId()));
-                                projectApprovalAuditorService.remove(new LambdaQueryWrapper<ProjectApprovalAuditor>().eq(ProjectApprovalAuditor::getProjectApprovalId,projectApproval.getId()));
-                                projectApprovalCheckService.remove(new LambdaQueryWrapper<ProjectApprovalCheck>().eq(ProjectApprovalCheck::getProjectApprovalId,projectApproval.getId()).eq(ProjectApprovalCheck::getStatus,0));
-                                return "success";
-                        }
-                        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);
+                    if(jsonObject.has("ApprovalInfo")){
+                        org.json.JSONObject approvalInfo = jsonObject.getJSONObject("ApprovalInfo");
+                        Long spNo = approvalInfo.getLong("SpNo");
+                        ProjectApproval projectApproval = projectApprovalMapper.selectOne(new LambdaQueryWrapper<ProjectApproval>().eq(ProjectApproval::getWxCorpSpNo, String.valueOf(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://已通过
+                                    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://已驳回
+                                    pa.setStatus(2);
+                                    projectApprovalMapper.updateById(pa);
+                                    break;
+                                case 4://已撤销 删除立项数据
+                                    projectApprovalMapper.deleteById(projectApproval.getId());
+                                    projectApprovalBasecostService.remove(new LambdaQueryWrapper<ProjectApprovalBasecost>().eq(ProjectApprovalBasecost::getProjectApprovalId,projectApproval.getId()));
+                                    projectApprovalAuditorService.remove(new LambdaQueryWrapper<ProjectApprovalAuditor>().eq(ProjectApprovalAuditor::getProjectApprovalId,projectApproval.getId()));
+                                    projectApprovalCheckService.remove(new LambdaQueryWrapper<ProjectApprovalCheck>().eq(ProjectApprovalCheck::getProjectApprovalId,projectApproval.getId()).eq(ProjectApprovalCheck::getStatus,0));
+                                    return "success";
+                            }
+                            if(approvalInfo.has("SpRecord")){
+                                org.json.JSONArray spRecord = approvalInfo.getJSONArray("SpRecord");
+
+                                for (int i = 0; i < spRecord.length(); i++) {
+                                    org.json.JSONObject object = spRecord.getJSONObject(i);
+                                    if(object.has("Details")){
+                                        org.json.JSONArray details = object.getJSONArray("Details");
+                                        for (int i1 = 0; i1 < details.length(); i1++) {
+                                            org.json.JSONObject detail = details.getJSONObject(i1);
+                                            if(detail.has("Approver")){
+                                                org.json.JSONObject approvor = detail.getJSONObject("Approver");
+                                                //分支审批人审批状态:1-审批中;2-已同意;3-已驳回;4-已转审
+                                                int spStatus = detail.getInt("SpStatus");
+                                                String userId = approvor.getString("UserId");
+
+                                            }
+                                        }
+                                    }
                                 }
+
+                            }
+                            if(approvalInfo.has("SpRecord")){
+                                //获取到审批节点 生成审核记录
+                                List<ProjectApprovalLog> projectApprovalLogList=new ArrayList<>();
+                                org.json.JSONArray spRecord = approvalInfo.getJSONArray("SpRecord");
+                                for (int i = 0; i < spRecord.length(); i++) {
+                                    org.json.JSONObject object = spRecord.getJSONObject(i);
+                                    if(object.has("Details")){
+                                        Object Details = object.get("Details");
+                                        if(Details instanceof  org.json.JSONArray){
+                                            org.json.JSONArray details = object.getJSONArray("Details");
+                                            for (int i1 = 0; i1 < details.length(); i1++) {
+                                                org.json.JSONObject detail = details.getJSONObject(i1);
+                                                if(detail.has("Approver")){
+                                                    org.json.JSONObject approver = detail.getJSONObject("Approver");
+                                                    //分支审批人审批状态:1-审批中;2-已同意;3-已驳回;4-已转审
+                                                    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()){
+                                                        //新增操作记录数据
+                                                        ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
+                                                        projectApprovalLog.setCreateTime(LocalDateTime.now());
+                                                        projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+                                                        projectApprovalLog.setUserName(first.get().getName());
+                                                        projectApprovalLog.setType(spStatus);
+                                                        projectApprovalLogList.add(projectApprovalLog);
+                                                    }
+                                                }
+                                            }
+                                        }else if(Details instanceof  org.json.JSONObject){
+                                            org.json.JSONObject detail = object.getJSONObject("Details");
+                                            if(detail.has("Approver")){
+                                                org.json.JSONObject approver = detail.getJSONObject("Approver");
+                                                //分支审批人审批状态:1-审批中;2-已同意;3-已驳回;4-已转审
+                                                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()){
+                                                    //新增操作记录数据
+                                                    ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
+                                                    projectApprovalLog.setCreateTime(LocalDateTime.now());
+                                                    projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+                                                    projectApprovalLog.setUserName(first.get().getName());
+                                                    projectApprovalLog.setType(spStatus);
+                                                    projectApprovalLogList.add(projectApprovalLog);
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                                if(projectApprovalLogList.size()>0){
+                                    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);
+                                }
+
                             }
                         }
-                        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);
                     }
                 }
             }