浏览代码

立项管理修改提交

Min 1 年之前
父节点
当前提交
a703e31e34

+ 93 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectApprovalServiceImpl.java

@@ -1,5 +1,7 @@
 package com.management.platform.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+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.metadata.IPage;
@@ -91,6 +93,8 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
     @Resource
     private ProjectApprovalLogService projectApprovalLogService;
     @Resource
+    private WxCorpTemplateService wxCorpTemplateService;
+    @Resource
     private ReportService reportService;
     @Value(value = "${upload.path}")
     private String path;
@@ -165,6 +169,7 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
     public HttpRespMsg importData(MultipartFile multipartFile) {
         HttpRespMsg msg=new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
+        String[] arr=new String[]{"正常","紧急","重要","重要且紧急","低风险","中风险","高风险"};
         WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, user.getCompanyId()));
         TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
         String fileName = multipartFile.getOriginalFilename();
@@ -190,7 +195,6 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
             //获取全部人员
             List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()).eq("is_active", 1));
             Company company = companyMapper.selectById(user.getCompanyId());
-            List<Project> projectList = new ArrayList<Project>();
             //由于第一行需要指明列对应的标题
             int rowNum = sheet.getLastRowNum();
             HashMap<String, Integer> projectLevelMap = new HashMap<>();
@@ -313,6 +317,14 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
                     if (!StringUtils.isEmpty(code)) {
                         int cnt = projectMapper.selectCount(new QueryWrapper<Project>().eq("project_code", code).eq("company_id", user.getCompanyId()));
                         if (cnt > 0) {
+//                            throw new Exception("项目编号存在重复: " + code);
+                            existCodeList.add(code);
+                            //跳过编号重复的数据
+                            exists=true;
+                            continue;
+                        }
+                        int cntApproval = projectApprovalMapper.selectCount(new QueryWrapper<ProjectApproval>().eq("project_code", code).eq("company_id", user.getCompanyId()));
+                        if (cntApproval > 0) {
 //                            throw new Exception("项目编号存在重复: " + code);
                             existCodeList.add(code);
                             //跳过编号重复的数据
@@ -412,6 +424,86 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
                 }else {
                     projectApprovalMapper.insert(project);
                 }
+                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                    //更新审核人 发送到企业微信完成审核动作
+                    String detail = wxCorpInfoService.getTemplateDetail(user.getCompanyId());
+                    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(user.getCompanyId());
+                        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 j = 0; j < controls.size(); j++) {
+                            JSONObject item = controls.getJSONObject(j);
+                            JSONObject property = item.getJSONObject("property");
+                            //控件id指定到指定控件
+                            String templateId = property.getString("id");
+                            //控件名称 这里为了统一工时管家格式 限制企业需要用到我们提供的名称(项目编号 项目名称 项目分类 项目类型 项目经理 级别 合同金额 计划开始日期 计划结束日期)
+                            JSONArray titleArray = property.getJSONArray("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();
+                            JSONObject titleOb = titleArray.getJSONObject(0);
+                            switch (titleOb.getString("text")){
+                                case "项目编号":
+                                    value.put("text",project.getProjectCode()==null?"":project.getProjectCode());
+                                    break;
+                                case "项目名称":
+                                    value.put("text",project.getProjectName());
+                                    break;
+                                case "项目分类":
+                                    value.put("text",project.getCategoryName()==null?"":project.getCategoryName());
+                                    break;
+                                case "项目类型":
+                                    value.put("text",project.getIsPublic()==0?"正式项目":"非项目");
+                                    break;
+                                case "项目经理":
+                                    value.put("text",project.getInchargerName()==null?"":project.getInchargerName());
+                                    break;
+                                case "级别":
+                                    value.put("text",arr[project.getLevel()-1]);
+                                    break;
+                                case "合同金额":
+                                    value.put("text",project.getContractAmount()==null?String.valueOf(0):String.valueOf(project.getContractAmount()));
+                                    break;
+                                case "计划开始日期":
+                                    value.put("text",project.getPlanStartDate()==null?"":df.format(project.getPlanStartDate()));
+                                    break;
+                                case "计划结束日期":
+                                    value.put("text",project.getPlanEndDate()==null?"":df.format(project.getPlanEndDate()));
+                                    break;
+                            }
+                            content.put("value",value);
+                            contents.add(content);
+                        }
+                        apply_data.put("contents",contents);
+                        requestData.put("apply_data",apply_data);
+                        requestData.put("approver",new JSONArray());
+                        requestData.put("summary_list",new JSONArray());
+                        System.out.println("===============>发送到企业微信的数据"+requestData);
+                        //发送到企业微信
+                        String sp_no = wxCorpInfoService.applyEvent(request, requestData);
+                        project.setWxCorpSpNo(sp_no);
+                        projectApprovalService.updateById(project);
+                    }else {
+                        throw  new Exception("企业暂未同步服务商审批模板,推送企业微信审批失败,请联系服务商!");
+                    }
+                }
                 importCount++;
                 //导入项目参与人,遵守只增不减的原则, 避免误删
                 List<ParticipationApproval> oldPartList = new ArrayList<>();