|
@@ -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);
|
|
|
}
|
|
|
}
|
|
|
}
|