|
@@ -2,6 +2,7 @@ package com.management.platform.controller;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.dingtalk.api.DefaultDingTalkClient;
|
|
import com.dingtalk.api.DefaultDingTalkClient;
|
|
import com.dingtalk.api.DingTalkClient;
|
|
import com.dingtalk.api.DingTalkClient;
|
|
@@ -170,6 +171,26 @@ public class WeiXinCorpController {
|
|
private ContactSyncLogMapper contactSyncLogMapper;
|
|
private ContactSyncLogMapper contactSyncLogMapper;
|
|
@Resource
|
|
@Resource
|
|
private DepartmentWxMapper departmentWxMapper;
|
|
private DepartmentWxMapper departmentWxMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ProjectApprovalMapper projectApprovalMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ProjectApprovalAuditorService projectApprovalAuditorService;
|
|
|
|
+ @Resource
|
|
|
|
+ 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 String SUITE_ACCESS_TOKEN = null;
|
|
public static long suiteTokenExpireTime = 0L;
|
|
public static long suiteTokenExpireTime = 0L;
|
|
@@ -565,6 +586,104 @@ public class WeiXinCorpController {
|
|
}
|
|
}
|
|
} else if ("enter_agent".equals(event)) {
|
|
} else if ("enter_agent".equals(event)) {
|
|
|
|
|
|
|
|
+ }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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -3839,4 +3958,22 @@ public class WeiXinCorpController {
|
|
wxCorpInfoService.sendWXCorpTemplateCardMsg(wxCorpInfo, corpwxOpenId, data);
|
|
wxCorpInfoService.sendWXCorpTemplateCardMsg(wxCorpInfo, corpwxOpenId, data);
|
|
return new HttpRespMsg();
|
|
return new HttpRespMsg();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 复制模板到指定企业
|
|
|
|
+ */
|
|
|
|
+ @RequestMapping("/copyTemplateToCorp")
|
|
|
|
+ public HttpRespMsg copyTemplateToCorp(Integer companyId){
|
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
|
|
|
|
+ if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
|
+ try {
|
|
|
|
+ wxCorpInfoService.copyTemplate(companyId,0);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ msg.setError("复制模板到企业失败");
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
}
|
|
}
|