Browse Source

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

Lijy 2 năm trước cách đây
mục cha
commit
118d54233d

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

@@ -14,6 +14,7 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -1015,7 +1016,7 @@ public class ProjectController {
 
     //todo 同步项目相关数据
     @RequestMapping("/synchronizationProject")
-    public HttpRespMsg synchronizationProject(String dataJson){
+    public HttpRespMsg synchronizationProject(@RequestBody String dataJson){
         return projectService.synchronizationProject(dataJson);
     }
 }

+ 57 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -197,6 +197,63 @@ public class WeiXinCorpController {
     }
 
 
+    //"获取企业微信jssdk初始化配置参数"
+    @RequestMapping("/getCorpWXAgentConfig")
+    public HttpRespMsg getCorpWXAgentConfig(String url, String token) {
+        HttpRespMsg msg = new HttpRespMsg();
+        try {
+            User user = userMapper.selectById(token);
+            WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+
+            Item item = corpTicketMap.get(wxCorpInfo.getCorpid());
+            if (item == null || item.expireTime.isBefore(LocalDateTime.now())) {
+                //重新获取
+                String getTicketUrl = "https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=ACCESS_TOKEN&type=agent_config";
+                String corpToken = getCorpAccessToken(wxCorpInfo);
+                getTicketUrl = getTicketUrl.replace("ACCESS_TOKEN", corpToken);
+                String forObject = this.restTemplate.getForObject(getTicketUrl, String.class);
+                JSONObject json = JSONObject.parseObject(forObject);
+                log.info("返回:"+json.toJSONString());
+                if (json.getIntValue("errcode") == 0) {
+                    String ticket = json.getString("ticket");
+                    Item it = new Item();
+                    it.expireTime = LocalDateTime.now().plusSeconds(7200);
+                    it.jsTicket = ticket;
+                    corpTicketMap.put(wxCorpInfo.getCorpid(), it);
+                    item = it;
+                }
+            }
+            if (item == null) {
+                //msg.setError("jsapiTicket获取失败");
+                msg.setError(MessageUtils.message("wx.TicketError"));
+                return msg;
+            }
+            log.info("jsTicket = " + item.jsTicket);
+            // 随机数
+            String nonce_str = Sha1Util.getNonceStr();
+            String timestamp = Sha1Util.getTimeStamp();
+            // 对以下字段进行签名
+            SortedMap<String, String> packageParams = new TreeMap<String, String>();
+            SortedMap<String, String> packageParam = new TreeMap<String, String>();
+            packageParam.put("jsapi_ticket", item.jsTicket);
+            packageParam.put("noncestr", nonce_str);
+            packageParam.put("timestamp", ""+timestamp);
+            packageParam.put("url", url);
+            String sign = Sha1Util.createSHA1Sign(packageParam);
+            packageParams.put("corpid", wxCorpInfo.getCorpid());//这里使用企业微信corpId
+            packageParams.put("agentid",String.valueOf(wxCorpInfo.getAgentid()));
+            packageParams.put("timestamp",""+timestamp);
+            packageParams.put("nonceStr",nonce_str);
+            packageParams.put("signature", sign);
+            msg.data = packageParams;
+        } catch (Exception e) {
+            e.printStackTrace();
+            msg.setError(e.getMessage());
+        }
+        return msg;
+    }
+
+
     //获取企业AccessToken
     private String getCorpAccessToken(WxCorpInfo corpInfo) throws Exception {
         if (corpInfo.getExpireTime().isBefore(LocalDateTime.now())) {

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -346,6 +346,9 @@ public class Project extends Model<Project> {
     @TableField(exist = false)
     private String departmentName;
 
+    @TableField(exist = false)
+    List<TaskGroup> taskGroupList;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 60 - 12
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -179,6 +179,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     ThirdPartyInterfaceService thirdPartyInterfaceService;
     @Resource
     ProjectSeparateService projectSeparateService;
+    @Resource
+    TaskGroupService taskGroupService;
 
 
     @Resource
@@ -6489,6 +6491,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         JSONObject jsonObject = JSON.parseObject(dataJson);
         JSONObject header = (JSONObject) jsonObject.get("header");
         String token = String.valueOf(header.get("token"));
+        String changeType = String.valueOf(header.get("changeType"));
         List<Project> projectList = JSON.parseArray(String.valueOf(jsonObject.get("projectArrays")), Project.class);
         List<ProjectSeparate> projectSeparateList = JSON.parseArray(String.valueOf(jsonObject.get("projectSeparateArrays")), ProjectSeparate.class);
         HttpRespMsg msg=new HttpRespMsg();
@@ -6504,22 +6507,67 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         }
         List<Project> allProject = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", thirdPartyInterface.getCompanyId()));
         String message="";
-        if(projectList!=null &&projectList.size()>0){
-            List<Project> changeProjectList=new ArrayList<>();
+        List<Project> changeProjectList=new ArrayList<>();
+        List<Project> inertProjectList=new ArrayList<>();
+        List<Project> deleteProjectList=new ArrayList<>();
+        if(changeType.equals("insert_project")){
+            if(projectList!=null &&projectList.size()>0){
+                for (Project project : projectList) {
+                    Optional<Project> first = allProject.stream().filter(ap ->ap.getProjectCode()!=null&& ap.getProjectCode().equals(project.getProjectCode())).findFirst();
+                    if(first.isPresent()){
+                        continue;
+                    }
+                    project.setCompanyId(thirdPartyInterface.getCompanyId());
+                    inertProjectList.add(project);
+                }
+                if(saveBatch(inertProjectList)){
+                    message+="成功添加"+inertProjectList.size()+"条项目数据";
+                }
+                for (Project project : inertProjectList) {
+                    List<TaskGroup> taskGroupList = project.getTaskGroupList();
+                    taskGroupList.forEach(tl->tl.setProjectId(project.getId()));
+                    taskGroupService.saveBatch(taskGroupList);
+                }
+            }
+        }else if(changeType.equals("update_project")){
+            if(projectList!=null &&projectList.size()>0){
+                for (Project project : projectList) {
+                    Optional<Project> first = allProject.stream().filter(ap ->ap.getProjectCode()!=null&& ap.getProjectCode().equals(project.getProjectCode())).findFirst();
+                    if(first.isPresent()){
+                        project.setId(first.get().getId());
+                        project.setCompanyId(thirdPartyInterface.getCompanyId());
+                        changeProjectList.add(project);
+                    }else continue;
+                }
+                if(updateBatchById(changeProjectList)){
+                    message+="成功更新"+changeProjectList.size()+"条项目数据";
+                }
+                List<Integer> idList = changeProjectList.stream().map(Project::getId).collect(Collectors.toList());
+                List<TaskGroup> groupList = taskGroupMapper.selectList(new QueryWrapper<TaskGroup>().in("project_id", idList));
+                for (Project project : changeProjectList) {
+                    List<TaskGroup> taskGroupList = project.getTaskGroupList();
+                    for (TaskGroup taskGroup : taskGroupList) {
+                        taskGroup.setProjectId(project.getId());
+                        Optional<TaskGroup> first = groupList.stream().filter(gl -> gl.getTaskGroupCode() != null && gl.getTaskGroupCode().equals(taskGroup.getTaskGroupCode())).findFirst();
+                        if(first.isPresent()){
+                            taskGroup.setId(first.get().getId());
+                        }
+                    }
+                    taskGroupService.saveOrUpdateBatch(taskGroupList);
+                }
+            }
+        }else if(changeType.equals("delete_project")){
             for (Project project : projectList) {
-                Optional<Project> first = allProject.stream().filter(ap -> ap.getProjectCode().equals(project.getProjectCode())).findFirst();
+                Optional<Project> first = allProject.stream().filter(ap ->ap.getProjectCode()!=null&& ap.getProjectCode().equals(project.getProjectCode())).findFirst();
                 if(first.isPresent()){
                     project.setId(first.get().getId());
-                    changeProjectList.add(project);
+                    deleteProjectList.add(project);
+                }else continue;
+                List<Integer> idList = deleteProjectList.stream().map(Project::getId).collect(Collectors.toList());
+                if(removeByIds(idList)){
+                    message+="成功删除"+idList.size()+"条项目数据";
                 }
-            }
-            if(updateBatchById(changeProjectList)){
-                message+="成功更新"+changeProjectList.size()+"条项目数据";
-            }
-        }
-        if(projectSeparateList!=null&&projectSeparateList.size()>0){
-            if(projectSeparateService.updateBatchById(projectSeparateList)){
-                message+="成功更新"+projectSeparateList.size()+"条项目子表数据";
+                taskGroupMapper.delete(new QueryWrapper<TaskGroup>().in("project_id",idList));
             }
         }
         msg.data=message;

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -106,7 +106,7 @@
                         <van-stepper v-model="pItem.progress" integer min="0" max="100" />%
                     </template>
                     </van-field>
-                    <van-field v-if="user.company.packageProject == 1"  readonly name="taskId" :value="item.taskName" label="关联任务" placeholder="请选择关联任务" @click="clickPickerTask(index,item)"
+                    <van-field v-if="user.company.packageProject == 1"  readonly name="taskId" :value="item.taskName" label="任务/里程碑" placeholder="请选择任务/里程碑" @click="clickPickerTask(index,item)"
                     ></van-field>
                     <van-field name="taskFinish" label="是否已完成" v-if="item.taskId != null">
                         <template #input>