Min 1 年之前
父节点
当前提交
707b06c1f6

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

@@ -64,6 +64,9 @@ public class TaskGroup extends Model<TaskGroup> {
     @TableField("man_day")
     private Integer manDay;
 
+    @TableField(exist = false)
+    private String uuid;
+
 
     @Override
     protected Serializable pkVal() {

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

@@ -11435,43 +11435,62 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 List<ProjectTask> projectTasks = item.getProjectTasks();
                 if(projectTasks!=null&&projectTasks.size()>0){
                     projectTasks.forEach(ps->{
-                        TaskGroup taskGroup=new TaskGroup();
-                        taskGroup.setProjectId(project.getId());
-                        taskGroup.setTaskGroupCode(ps.getProjectElementID());
-                        taskGroup.setName(ps.getTaskGroupName()==null?"":ps.getTaskGroupName().getName());
-                        TaskGroup one = taskGroupMapper.selectOne(new QueryWrapper<TaskGroup>().eq("project_id", project.getId()).eq("task_group_code", ps.getProjectElementID()));
-                        if(one!=null){
-                           taskGroup.setId(one.getId());
-                        }
-                        taskGroupService.saveOrUpdate(taskGroup);
-                        Map<String,Object> map=new HashMap<>();
-                        map.put("groupId",taskGroup.getId());
-                        map.put("projectId",project.getId());
-                        idsMapList.add(map);
+                        boolean match = idsMapList.stream().anyMatch(i -> i.get("taskGroupUUID").equals(ps.getUUID()));
+                        if(!match){
+                            if(StringUtils.isEmpty(ps.getParentTaskUUID())){
+                                TaskGroup taskGroup=new TaskGroup();
+                                taskGroup.setProjectId(project.getId());
+                                taskGroup.setTaskGroupCode(ps.getProjectElementID());
+                                taskGroup.setName(ps.getTaskGroupName()==null?"":ps.getTaskGroupName().getName());
+                                TaskGroup one = taskGroupMapper.selectOne(new QueryWrapper<TaskGroup>().eq("project_id", project.getId()).eq("task_group_code", ps.getProjectElementID()));
+                                if(one!=null){
+                                    taskGroup.setId(one.getId());
+                                }
+                                taskGroupService.saveOrUpdate(taskGroup);
+                                Map<String,Object> map=new HashMap<>();
+                                map.put("groupId",taskGroup.getId());
+                                map.put("taskGroupUUID",ps.getUUID());
+                                map.put("projectId",project.getId());
+                                idsMapList.add(map);
+                            }else {
+                                Optional<ProjectTask> task = projectTasks.stream().filter(p -> p.getUUID().equals(ps.getParentTaskUUID())).findFirst();
+                                if(task.isPresent()){
+                                    Stages stage = new Stages();
+                                    Optional<Map<String, Object>> exist = idsMapList.stream().filter(i -> i.get("taskGroupUUID").equals(task.get().getUUID())).findFirst();
+                                    if(exist.isPresent()){
+                                        stage.setGroupId(Integer.valueOf(String.valueOf(exist.get().get("groupId"))));
+                                    }else {
+                                        //避免排序问题导致 上级数据未添加 漏掉子数据
+                                        TaskGroup taskGroup=new TaskGroup();
+                                        taskGroup.setProjectId(project.getId());
+                                        taskGroup.setTaskGroupCode(ps.getProjectElementID());
+                                        taskGroup.setName(ps.getTaskGroupName()==null?"":ps.getTaskGroupName().getName());
+                                        TaskGroup one = taskGroupMapper.selectOne(new QueryWrapper<TaskGroup>().eq("project_id", project.getId()).eq("task_group_code", ps.getProjectElementID()));
+                                        if(one!=null){
+                                            taskGroup.setId(one.getId());
+                                        }
+                                        taskGroupService.saveOrUpdate(taskGroup);
+                                        Map<String,Object> map=new HashMap<>();
+                                        map.put("groupId",taskGroup.getId());
+                                        map.put("taskGroupUUID",ps.getUUID());
+                                        map.put("projectId",project.getId());
+                                        idsMapList.add(map);
+                                        stage.setGroupId(taskGroup.getId());
+                                    }
+                                    stage.setSequence(1);
+                                    stage.setProjectId(project.getId());
+                                    stage.setStagesName(ps.getTaskGroupName()==null?"":ps.getTaskGroupName().getName());
+                                    Stages one = stagesMapper.selectOne(new QueryWrapper<Stages>().eq("project_id", project.getId()).eq("stages_name", ps.getProjectElementID()).eq("group_id",stage.getGroupId()));
+                                    if(one!=null){
+                                        stage.setId(one.getId());
+                                    }
+                                    stagesService.saveOrUpdate(stage);
+                                }
+                            }
+                        }
                     });
                 }
             }
-            if(idsMapList.size()>0){
-                List<Integer> projectIds = idsMapList.stream().map(i -> Integer.valueOf(String.valueOf(i.get("projectId")))).collect(Collectors.toList());
-                List<Integer> groupIds = idsMapList.stream().map(i -> Integer.valueOf(String.valueOf(i.get("groupId")))).collect(Collectors.toList());
-                List<Stages> allStages = stagesMapper.selectList(new LambdaQueryWrapper<Stages>().in(Stages::getProjectId, projectIds).in(Stages::getGroupId, groupIds));
-                for (Map<String, Object> map : idsMapList) {
-                    Optional<Stages> first = allStages.stream().filter(a -> a.getGroupId().equals(String.valueOf(map.get("groupId"))) && a.getProjectId().equals(String.valueOf(map.get("projectId")))).findFirst();
-                    if(!first.isPresent()){
-                        //创建默认列表
-                        Stages stage = new Stages();
-                        stage.setGroupId(Integer.valueOf(String.valueOf(map.get("groupId"))));
-                        stage.setSequence(1);
-                        stage.setProjectId(Integer.valueOf(String.valueOf(map.get("projectId"))));
-                        stage.setStagesName(MessageUtils.message("excel.WorkUnfolds"));
-                        allStages.add(stage);
-                        stagesList.add(stage);
-                    }
-                }
-            }
-            if(stagesList.size()>0){
-                stagesService.saveBatch(stagesList);
-            }
         }
         //处理项目下服务数据 ------->工时管家相关项目下任务分组下创建任务数据
         List<SapProjectService> serviceList = sapProjectServiceService.list(new LambdaQueryWrapper<SapProjectService>().eq(SapProjectService::getCompanyId, companyId));

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SyncSapUtils.java

@@ -171,12 +171,19 @@ public class SyncSapUtils {
         processingConditions.setQueryHitsUnlimitedIndicator("true");
         xmlRequestData.setProcessingConditions(processingConditions);
         ProjectSelectionByElement projectSelectionByElement=new ProjectSelectionByElement();
+        //todo:根据时间范围
         SelectionByLastChangeDateTime selectionByLastChangeDateTime=new SelectionByLastChangeDateTime();
         selectionByLastChangeDateTime.setInclusionExclusionCode("I");
         selectionByLastChangeDateTime.setIntervalBoundaryTypeCode("3");
         selectionByLastChangeDateTime.setLowerBoundaryLastChangeDateTime(startDate+"T00:00:00Z");
         selectionByLastChangeDateTime.setUpperBoundaryLastChangeDateTime(endDate+"T00:00:00Z");
         projectSelectionByElement.setSelectionByLastChangeDateTime(selectionByLastChangeDateTime);
+        //todo:根据编号
+//        SelectionByProjectID selectionByProjectID=new SelectionByProjectID();
+//        selectionByProjectID.setInclusionExclusionCode("I");
+//        selectionByProjectID.setIntervalBoundaryTypeCode("1");
+//        selectionByProjectID.setLowerBoundaryProjectID("CPSP2250001");
+//        projectSelectionByElement.setSelectionByProjectID(selectionByProjectID);
         List<ProjectSelectionByElement> list=new ArrayList<>();
         list.add(projectSelectionByElement);
         xmlRequestData.setProjectSelectionByElements(list);

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ProjectSelectionByElement.java

@@ -8,9 +8,15 @@ import javax.xml.bind.annotation.XmlElement;
 public class ProjectSelectionByElement {
 
     private SelectionByLastChangeDateTime selectionByLastChangeDateTime;
+    private SelectionByProjectID selectionByProjectID;
 
     @XmlElement(name = "SelectionByLastChangeDateTime")
     public SelectionByLastChangeDateTime getSelectionByLastChangeDateTime() {
         return selectionByLastChangeDateTime;
     }
+
+    @XmlElement(name = "SelectionByProjectID")
+    public SelectionByProjectID getSelectionByProjectID() {
+        return selectionByProjectID;
+    }
 }

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ProjectTask.java

@@ -9,6 +9,9 @@ public class ProjectTask {
 
     private String projectElementID;
     private TaskName taskGroupName;
+    private String summaryTaskIndicator;
+    private String UUID;
+    private String parentTaskUUID;
 
     @XmlElement(name = "ProjectElementID")
     public String getProjectElementID(){
@@ -19,4 +22,19 @@ public class ProjectTask {
     public TaskName getTaskGroupName(){
         return taskGroupName;
     }
+
+    @XmlElement(name = "SummaryTaskIndicator")
+    public String getSummaryTaskIndicator(){
+        return summaryTaskIndicator;
+    }
+
+    @XmlElement(name = "UUID")
+    public String getUUID(){
+        return UUID;
+    }
+
+    @XmlElement(name = "ParentTaskUUID")
+    public String getParentTaskUUID(){
+        return parentTaskUUID;
+    }
 }

+ 28 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/SelectionByProjectID.java

@@ -0,0 +1,28 @@
+package com.management.platform.webservice.po;
+
+import lombok.Data;
+
+import javax.xml.bind.annotation.XmlElement;
+
+@Data
+public class SelectionByProjectID {
+
+    private String inclusionExclusionCode;
+    private String intervalBoundaryTypeCode;
+    private String lowerBoundaryProjectID;
+
+    @XmlElement(name = "InclusionExclusionCode")
+    public String getInclusionExclusionCode() {
+        return inclusionExclusionCode;
+    }
+
+    @XmlElement(name = "IntervalBoundaryTypeCode")
+    public String getIntervalBoundaryTypeCode() {
+        return intervalBoundaryTypeCode;
+    }
+
+    @XmlElement(name = "LowerBoundaryProjectID")
+    public String getLowerBoundaryProjectID() {
+        return lowerBoundaryProjectID;
+    }
+}