QuYueTing пре 3 дана
родитељ
комит
50c2ab21e8

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -353,7 +353,7 @@ public class TaskGroupController {
             QueryWrapper<User> eq = new QueryWrapper<User>().eq("id", request.getHeader("token"));
             User user = userMapper.selectOne(eq);
             //初始化任务分组
-            taskGroupService.initGroup(companyId, item.getProjectId(), user);
+            taskGroupService.initGroup(companyId, item.getProjectId(), user, null);
         }
         List<TaskGroup> list = taskGroupService.list(queryWrapper);
         list.forEach(l->{
@@ -560,5 +560,11 @@ public class TaskGroupController {
         User user = userMapper.selectById(request.getHeader("token"));
         return taskGroupService.setTemplate(user,setTemplate);
     }
+
+    @RequestMapping("/syncStagesToProjects")
+    public HttpRespMsg syncStagesToProjects(Integer templateId){
+        User user = userMapper.selectById(request.getHeader("token"));
+        return taskGroupService.syncStagesToProjects(user,templateId);
+    }
 }
 

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskGroupService.java

@@ -23,5 +23,7 @@ public interface TaskGroupService extends IService<TaskGroup> {
 
     HttpRespMsg createFromTemplate(String templateJson, Integer projectId,String projectIds);
 
-    void initGroup(Integer companyId,Integer projectId, User user);
+    void initGroup(Integer companyId,Integer projectId, User user, Integer templateId);
+
+    HttpRespMsg syncStagesToProjects(User user, Integer templateId);
 }

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FeishuInfoServiceImpl.java

@@ -145,7 +145,9 @@ public class FeishuInfoServiceImpl extends ServiceImpl<FeishuInfoMapper, FeishuI
                 RestTemplate restTemplate = new RestTemplate();
                 MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
                 headers.setContentType(type);
-                headers.add("Authorization","Bearer "+getTenantAccessToken(feishuInfo.getAppId()));
+                String token = getTenantAccessToken(feishuInfo.getAppId());
+                System.out.println("飞书token======"+ token);
+                headers.add("Authorization","Bearer "+token);
                 HttpEntity<JSONObject> httpEntity = new HttpEntity<>(null, headers);
                 ResponseEntity<String> ResponseEntity = restTemplate.exchange(url,HttpMethod.GET,httpEntity,String.class);
                 if (ResponseEntity.getStatusCode() == HttpStatus.OK) {

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

@@ -2064,7 +2064,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     id = project.getId();
                     //项目管理专业版要自动生成任务分组
                     if (company.getPackageProject() == 1) {
-                        taskGroupService.initGroup(companyId, id, user);
+                        taskGroupService.initGroup(companyId, id, user, null);
                     }
                     OperationRecord operationRecord=new OperationRecord();
                     operationRecord.setProjectName(project.getProjectName());
@@ -13912,7 +13912,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(request.getHeader("TOKEN"));
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
         projectList.forEach(p->{
-            taskGroupService.initGroup(companyId, p.getId(), user);
+            taskGroupService.initGroup(companyId, p.getId(), user, null);
         });
 
         return httpRespMsg;

+ 29 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java

@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -65,6 +66,8 @@ public class TaskGroupServiceImpl extends ServiceImpl<TaskGroupMapper, TaskGroup
     private TaskFilesService taskFilesService;
     @Autowired
     private TaskFilesMapper taskFilesMapper;
+    @Autowired
+    private TaskGroupService taskGroupService;
 
     @Override
     public void saveGroupIncharger(TaskGroup taskGroup,User user) {
@@ -209,8 +212,14 @@ public class TaskGroupServiceImpl extends ServiceImpl<TaskGroupMapper, TaskGroup
     }
 
     @Override
-    public void initGroup(Integer companyId, Integer projectId, User user) {
-        List<GroupTemplate> groupTemplates = groupTemplateMapper.selectList(new QueryWrapper<GroupTemplate>().eq("company_id", user.getCompanyId()).eq("cre_with_pro", true));
+    public void initGroup(Integer companyId, Integer projectId, User user, Integer templateId) {
+        QueryWrapper<GroupTemplate> queryWrapper = new QueryWrapper<GroupTemplate>();
+        if (templateId != null) {
+            queryWrapper.eq("id", templateId);
+        } else {
+            queryWrapper.eq("company_id", user.getCompanyId()).eq("cre_with_pro", true);
+        }
+        List<GroupTemplate> groupTemplates = groupTemplateMapper.selectList(queryWrapper);
         if (groupTemplates.size()==0){
             //创建默认分组
             TaskGroup group = new TaskGroup();
@@ -275,6 +284,24 @@ public class TaskGroupServiceImpl extends ServiceImpl<TaskGroupMapper, TaskGroup
         }
     }
 
+    @Override
+    public HttpRespMsg syncStagesToProjects(User user, Integer templateId) {
+        //查找同名分组名称
+        GroupTemplate groupTemplate = groupTemplateMapper.selectById(templateId);
+        Integer companyId = groupTemplate.getCompanyId();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("company_id", companyId));
+        if (projectList.size() > 0) {
+            List<Integer> ids = projectList.stream().map(Project::getId).collect(Collectors.toList());
+            for (Integer id : ids) {
+                //先删除项目下的该分组的相关数据
+                taskGroupMapper.delete(new QueryWrapper<TaskGroup>().eq("project_id", id).eq("name", groupTemplate.getName()));
+                taskGroupService.initGroup(companyId, id, user, groupTemplate.getId());
+            }
+
+        }
+        return new HttpRespMsg();
+    }
+
     @Override
     @Transactional
     public HttpRespMsg setTemplate(User user,setTemplate setTemplate){

+ 29 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -1085,6 +1085,9 @@
                                 <el-link :underline="false" type="primary" style="color:#aaa;margin-left:10px;"
                                  @click="deleteTemplate(t)"><i class="el-icon-delete" v-show="t.isSystem == 0" ></i>
                                 </el-link>
+                                <el-link :underline="false" type="primary" style="color:#aaa;margin-left:10px;"
+                                 @click="syncTemplate(t)"><i :class="isSyncingTemplate?'el-icon-loading':'el-icon-refresh'" v-show="t.isSystem == 0" ></i>
+                                </el-link>
                                 </div>
                                 <div style="margin-top:10px;">
                                     <span style="color:#8c8c8c;font-size:12px;" v-for="(s,index) in t.stagesList" :key="s.id">
@@ -1329,6 +1332,7 @@
         
         data() {
             return {
+                isSyncingTemplate: false,
                 modGroupManDayDialog: false,
                 isManageDept: false,
                 componentFlg: false,
@@ -2136,6 +2140,31 @@
                     templateId: this.setTemplateData.id
                 })
             },
+            //同步模板的阶段和任务
+            syncTemplate(t) {
+                var that = this;
+                this.$confirm('同步该分组模板内的任务列表以及所有任务至已创建的项目,已存在同名的任务分组将被覆盖,您确定吗?', this.$t('other.prompts'), {
+                    //type: 'warning'
+                }).then(() => {
+                    this.isSyncingTemplate = true;
+                    this.http.post('/task-group/syncStagesToProjects', {templateId: t.id},
+                        res => {
+                            this.isSyncingTemplate = false;
+                            if (res.code == "ok") {
+                                this.$message({
+                                    message: '同步成功',
+                                    type: "success"
+                                });
+                            } else {
+                                this.$message({
+                                    message: res.msg,
+                                    type: "error"
+                                });
+                            }
+                        }
+                    );
+                });
+            },
             //删除模板
             deleteTemplate(t) {
                 var that = this;

+ 0 - 18
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -133,27 +133,9 @@
                     <el-form-item style="float:right;" v-if="user.timeType.syncAd==1">
                         <el-link type="primary" :underline="false" @click="syncAd">{{ '同步AD域控通讯录'}}</el-link>
                     </el-form-item>
-
-                    <!-- <el-form-item style="float:right;" v-if="user.dingdingUserid == null && permissions.structureImport">
-                        <el-link type="primary" :underline="false" href="./upload/人员导入模板.xlsx" download="人员导入模板.xlsx">模板下载</el-link>
-                    </el-form-item> -->
-                    <!-- <el-form-item  v-if="depData != null && depData.id != -1 && depData.id != 0" style="float:right;border: 0.5px solid #20a0ff;height: 27px;margin-top: 6px;">
-                    </el-form-item> -->
-                    <!-- <el-form-item style="float:right;">
-                        <el-link type="danger" v-if="depData != null && depData.id != -1 && depData.id != 0" :underline="false" @click="deleteDep(null)">删除部门</el-link>
-                    </el-form-item>
-                    <el-form-item style="float:right;">
-                        <el-link type="primary" v-if="depData != null && depData.id != -1 && depData.id != 0" :underline="false" @click="createDepartment(-2)">新增子部门</el-link>
-                    </el-form-item> -->
                     <el-form-item style="float:right;">
                         <span style="color: #666666">{{ $t('jiao-se') }}</span>
                         <el-select v-model="roleId" :placeholder="$t('defaultText.pleaseChoose')" @change="page = 1;getUser()" style="width: 120px" clearable size="small">
-                            <!-- <el-option
-                            v-for="item in rolesa"
-                            :key="item.value"
-                            :label="item.label"
-                            :value="item.value">
-                            </el-option> -->
                             <el-option v-for="item in acquireRoleList" :key="item.id" :label="item.rolename" :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>