소스 검색

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

ggooalice 2 년 전
부모
커밋
8d276e384b

+ 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);
     }
 }

+ 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/src/views/project/list.vue

@@ -389,7 +389,7 @@
                 <el-form-item :label="$t('projectclassification')" v-if="user.timeType.mainProjectState != '1'">
                     <!-- <el-select v-model="addForm.category"  style="width:32%;" clearable :disabled="!permissions.projectManagement && addForm.creatorId != user.id"> -->
                     <el-select v-model="addForm.category"  style="width:32%;" clearable>
-                        <el-option v-for="(item) in baseClfList" :key="item.id" :value="item.id" ::label="item.name"></el-option>
+                        <el-option v-for="(item) in baseClfList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item :label="$t('headerTop.projectName')" prop="name">