Ver Fonte

立项审核对接企业微信修改

Min há 1 ano atrás
pai
commit
540e81d58e

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

@@ -85,6 +85,7 @@ public class ProjectApprovalController {
         String[] arr=new String[]{"正常","紧急","重要","重要且紧急","低风险","中风险","高风险"};
         User user = userMapper.selectById(request.getHeader("token"));
         Integer companyId = user.getCompanyId();
+        WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
         List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, companyId));
         List<ProjectCategory> categoryList = projectCategoryService.list(new LambdaQueryWrapper<ProjectCategory>().eq(ProjectCategory::getCompanyId, companyId));
         projectApproval.setCompanyId(companyId);
@@ -155,77 +156,79 @@ public class ProjectApprovalController {
             }
             if(projectApprovalCheckList.size()>0){
                 projectApprovalCheckService.saveOrUpdateBatch(projectApprovalCheckList);
-                //更新审核人 发送到企业微信完成审核动作
-                String detail = wxCorpInfoService.getTemplateDetail(request, 0);
-                if(detail!=null&&!StringUtils.isEmpty(detail)){
-                    DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                    JSONObject resultOb = JSONObject.parseObject(detail);
-                    JSONObject template_content = resultOb.getJSONObject("template_content");
-                    JSONArray controls = template_content.getJSONArray("controls");
-                    Map<String,Object> templateMap=new HashMap<>();
-                    WxCorpTemplate template = wxCorpTemplateService.getById(companyId);
-                    JSONObject requestData=new JSONObject();
-                    requestData.put("template_id",template.getTemplateId());
-                    requestData.put("creator_userid",user.getCorpwxUserid());
-                    //审核模式  0-通过接口指定审批人、抄送人(此时approver、notifyer等参数可用);1-使用此模板在管理后台设置的审批流程(需要保证审批流程中没有“申请人自选”节点),支持条件审批
-                    requestData.put("use_template_approver",1);
-                    JSONObject apply_data=new JSONObject();
-                    JSONArray contents=new JSONArray();
-                    for (int i = 0; i < controls.size(); i++) {
-                        JSONObject item = controls.getJSONObject(i);
-                        JSONObject property = item.getJSONObject("property");
-                        //控件id指定到指定控件
-                        String templateId = property.getString("id");
-                        //控件名称 这里为了统一工时管家格式 限制企业需要用到我们提供的名称(项目编号 项目名称 项目分类 项目类型 项目经理 级别 合同金额 计划开始日期 计划结束日期)
-                        String title = property.getString("title");
-                        //控件类型 在这里统一用Text  Text-文本;Textarea-多行文本;Number-数字;Money-金额;Date-日期/日期+时间;Selector-单选/多选;Contact-成员/部门;Tips-说明文字;File-附件;Table-明细;Attendance-假勤控件;Vacation-请假控件;Location-位置;RelatedApproval-关联审批单;Formula-公式;DateRange-时长;BankAccount-收款账户
-                        String control = property.getString("control");
-                        //是否必填
-                        String require = property.getString("require");
-                        //是否打印
-                        String un_print = property.getString("un_print");
-                        JSONObject content=new JSONObject();
-                        content.put("control",control);
-                        content.put("id",templateId);
-                        JSONObject value=new JSONObject();
-                        switch (title){
-                            case "项目编号":
-                                value.put("text",projectApproval.getProjectCode());
-                                break;
-                            case "项目名称":
-                                value.put("text",projectApproval.getProjectName());
-                                break;
-                            case "项目分类":
-                                value.put("text",projectApproval.getCategoryName());
-                                break;
-                            case "项目类型":
-                                value.put("text",projectApproval.getIsPublic()==0?"正式项目":"非项目");
-                                break;
-                            case "项目经理":
-                                value.put("text",projectApproval.getInchargerName());
-                                break;
-                            case "级别":
-                                value.put("text",arr[projectApproval.getLevel()-1]);
-                                break;
-                            case "合同金额":
-                                value.put("text",projectApproval.getContractAmount());
-                                break;
-                            case "计划开始日期":
-                                value.put("text",df.format(projectApproval.getPlanStartDate()));
-                                break;
-                            case "计划结束日期":
-                                value.put("text",df.format(projectApproval.getPlanEndDate()));
-                                break;
+                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                    //更新审核人 发送到企业微信完成审核动作
+                    String detail = wxCorpInfoService.getTemplateDetail(request, 0);
+                    if(detail!=null&&!StringUtils.isEmpty(detail)){
+                        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                        JSONObject resultOb = JSONObject.parseObject(detail);
+                        JSONObject template_content = resultOb.getJSONObject("template_content");
+                        JSONArray controls = template_content.getJSONArray("controls");
+                        Map<String,Object> templateMap=new HashMap<>();
+                        WxCorpTemplate template = wxCorpTemplateService.getById(companyId);
+                        JSONObject requestData=new JSONObject();
+                        requestData.put("template_id",template.getTemplateId());
+                        requestData.put("creator_userid",user.getCorpwxUserid());
+                        //审核模式  0-通过接口指定审批人、抄送人(此时approver、notifyer等参数可用);1-使用此模板在管理后台设置的审批流程(需要保证审批流程中没有“申请人自选”节点),支持条件审批
+                        requestData.put("use_template_approver",1);
+                        JSONObject apply_data=new JSONObject();
+                        JSONArray contents=new JSONArray();
+                        for (int i = 0; i < controls.size(); i++) {
+                            JSONObject item = controls.getJSONObject(i);
+                            JSONObject property = item.getJSONObject("property");
+                            //控件id指定到指定控件
+                            String templateId = property.getString("id");
+                            //控件名称 这里为了统一工时管家格式 限制企业需要用到我们提供的名称(项目编号 项目名称 项目分类 项目类型 项目经理 级别 合同金额 计划开始日期 计划结束日期)
+                            String title = property.getString("title");
+                            //控件类型 在这里统一用Text  Text-文本;Textarea-多行文本;Number-数字;Money-金额;Date-日期/日期+时间;Selector-单选/多选;Contact-成员/部门;Tips-说明文字;File-附件;Table-明细;Attendance-假勤控件;Vacation-请假控件;Location-位置;RelatedApproval-关联审批单;Formula-公式;DateRange-时长;BankAccount-收款账户
+                            String control = property.getString("control");
+                            //是否必填
+                            String require = property.getString("require");
+                            //是否打印
+                            String un_print = property.getString("un_print");
+                            JSONObject content=new JSONObject();
+                            content.put("control",control);
+                            content.put("id",templateId);
+                            JSONObject value=new JSONObject();
+                            switch (title){
+                                case "项目编号":
+                                    value.put("text",projectApproval.getProjectCode());
+                                    break;
+                                case "项目名称":
+                                    value.put("text",projectApproval.getProjectName());
+                                    break;
+                                case "项目分类":
+                                    value.put("text",projectApproval.getCategoryName());
+                                    break;
+                                case "项目类型":
+                                    value.put("text",projectApproval.getIsPublic()==0?"正式项目":"非项目");
+                                    break;
+                                case "项目经理":
+                                    value.put("text",projectApproval.getInchargerName());
+                                    break;
+                                case "级别":
+                                    value.put("text",arr[projectApproval.getLevel()-1]);
+                                    break;
+                                case "合同金额":
+                                    value.put("text",projectApproval.getContractAmount());
+                                    break;
+                                case "计划开始日期":
+                                    value.put("text",df.format(projectApproval.getPlanStartDate()));
+                                    break;
+                                case "计划结束日期":
+                                    value.put("text",df.format(projectApproval.getPlanEndDate()));
+                                    break;
+                            }
+                            content.put("value",value);
+                            contents.add(content);
                         }
-                        content.put("value",value);
-                        contents.add(content);
-                    }
-                    apply_data.put("contents",contents);
-                    requestData.put("apply_data",apply_data);
-                    System.out.println("===============>发送到企业微信的数据"+requestData);
+                        apply_data.put("contents",contents);
+                        requestData.put("apply_data",apply_data);
+                        System.out.println("===============>发送到企业微信的数据"+requestData);
 //                    wxCorpInfoService.applyEvent(request,requestData);
-                }else {
-                    throw  new Exception("企业暂未同步服务商审批模板,推送企业微信审批失败,请联系服务商!");
+                    }else {
+                        throw  new Exception("企业暂未同步服务商审批模板,推送企业微信审批失败,请联系服务商!");
+                    }
                 }
             }
         }

+ 4 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -2357,14 +2357,14 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     public void copyTemplate(HttpServletRequest request,Integer templateType) throws Exception {
         User user = userMapper.selectById(request.getHeader("token"));
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
-        String url=GET_TEMPLATE_DETAIL.replace("ACCESS_TOKEN",getCorpAccessToken(wxCorpInfo));
+        String url=COPY_TEMPLATE.replace("ACCESS_TOKEN",getCorpAccessToken(wxCorpInfo));
         HttpHeaders headers = new HttpHeaders();
         RestTemplate restTemplate = new RestTemplate();
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
         headers.setContentType(type);
         headers.add("Accept", MediaType.APPLICATION_JSON.toString());
         JSONObject requestMap = new JSONObject();
-        requestMap.put("template_id","1bc0b9fc084369083b6abb970d658f3a_75187226");
+        requestMap.put("open_template_id","1bc0b9fc084369083b6abb970d658f3a_75187226");
         HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
@@ -2391,7 +2391,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
             copyTemplate(request,templateType);
             template = wxCorpTemplateService.getById(wxCorpInfo.getCompanyId());
         }
-        String url=COPY_TEMPLATE.replace("ACCESS_TOKEN",getCorpAccessToken(wxCorpInfo));
+        String url=GET_TEMPLATE_DETAIL.replace("ACCESS_TOKEN",getCorpAccessToken(wxCorpInfo));
         HttpHeaders headers = new HttpHeaders();
         RestTemplate restTemplate = new RestTemplate();
         MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
@@ -2425,6 +2425,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
         if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
             String resp = ResponseEntity.getBody();
+            System.out.println(resp);
         }
     }
 }

+ 22 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/projectApproval/projectApproval.vue

@@ -231,11 +231,12 @@
                                     <div>
                                         <div v-for="(item, index) in pointList" :key="index" >
                                         第{{index+1}}审核人:
-                                        <el-select :disabled="item.status!=0" v-if="user.userNameNeedTranslate != 1" v-model="item.userId" style="width:140px;" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="manageSelect" size="small" filterable popper-class="managePopperClass">
-                                            <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
+                                        <el-select  v-if="user.userNameNeedTranslate != 1" :disabled="item.status!=0" v-model="item.userId" style="width:140px;" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="manageSelect" size="small" filterable popper-class="managePopperClass">
+                                            <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id">
                                                 <span style="float: left">{{ item.name }}</span>
                                             </el-option>
                                         </el-select> 
+                                        <selectCat v-if="user.userNameNeedTranslate == 1" :size="'medium'" :subject="participator" :subjectId="item.userId" :distinction="'12'" @selectCal="selectCal" :disabled="canOnlyModParticipator || projectManagerEdit || isShowProjectName"></selectCat>
                                         <i class="el-icon-circle-plus-outline" @click="addInput(index)" v-if="index==pointList.length-1"></i>
                                         <i class="el-icon-remove-outline" v-if="pointList.length>1 && item.status==0"  @click="deleteInput(index)"></i>
                                         <span>{{item.status==0?'待审核':item.status==1?"已审核":"已驳回"}}</span>
@@ -363,9 +364,12 @@
 </template>
 
 <script>
+import selectCat from "@/components/select.vue"
 export default {
 name: '',
-components: {},
+components: {
+    selectCat
+},
 props: { },
 data() { 
 return {
@@ -647,6 +651,10 @@ methods: {
             for (var m=0;m<this.baseCostItemList.length; m++) {
                 this.projectBaseCostData.push({baseId: this.baseCostItemList[m].id, baseName:this.baseCostItemList[m].name, baseAmount:0});
             }
+            this.pointList=[{
+                "userId":"",
+                "status":0
+            }]
         } else {
             this.http.post('/project-approval/getDetail', {id: item.id},
             res => {
@@ -1028,6 +1036,12 @@ methods: {
             let userList = obj.id
             console.log(obj)
             this.curProfessionRow.membList[obj.other].membId = userList
+        } else if(obj.distinction == '12') {
+            this.pointList.push({
+                "userId":obj.id,
+                "status":0
+            })
+            this.pointList=this.pointList.filter(i=>i.userId!="")
         }
     },
     getProjectBaseData(projectId) {
@@ -1065,6 +1079,11 @@ methods: {
                     if (res.code == "ok") {
                         if(res.data.length>0){
                             this.pointList = res.data;
+                        }else{
+                            this.pointList=[{
+                                "userId":"",
+                                "status":0
+                            }]
                         }
                     } else {
                         this.$message({