|
@@ -17,6 +17,7 @@ import com.management.platform.service.*;
|
|
|
import com.management.platform.util.*;
|
|
|
import com.management.platform.webservice.po.*;
|
|
|
import com.sun.star.bridge.oleautomation.Decimal;
|
|
|
+import javafx.stage.Stage;
|
|
|
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
|
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
|
|
import org.apache.http.client.methods.HttpPost;
|
|
@@ -228,6 +229,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
private HttpServletResponse response;
|
|
|
@Resource
|
|
|
private ReportExtraDegreeService reportExtraDegreeService;
|
|
|
+ @Resource
|
|
|
+ private TaskService taskService;
|
|
|
|
|
|
@Value(value = "${upload.path}")
|
|
|
private String path;
|
|
@@ -11300,8 +11303,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
public HttpRespMsg syncProjectWithSap(String startDate,String endDate) {
|
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
|
Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
|
- //同步服务数据
|
|
|
- syncServiceData(startDate,endDate,companyId);
|
|
|
+ //获取SAP项目服务数据 ----> 工时管家任务分组下阶段作为项目服务数据
|
|
|
+ XmlResponseData projectServiceData= syncServiceData("2020-01-01", endDate, companyId);
|
|
|
//已有的项目分类
|
|
|
List<ProjectCategory> allProjectCategoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id", companyId));
|
|
|
List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
|
|
@@ -11346,8 +11349,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
System.out.println(result);
|
|
|
XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
|
|
|
List<ProjectQueryResponse> projectQueryResponses = xmlResponseData.getProjectQueryResponses();
|
|
|
+ List<Map<String,Object>> idsMapList=new ArrayList<>();
|
|
|
if(projectQueryResponses!=null&&projectQueryResponses.size()>0){
|
|
|
- List<TaskGroup> taskGroupList=new ArrayList<>();
|
|
|
+ List<Task> taskList=new ArrayList<>();
|
|
|
for (ProjectQueryResponse item : projectQueryResponses) {
|
|
|
Project project=new Project();
|
|
|
//处理项目分类
|
|
@@ -11392,6 +11396,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
projectCategory.setName(categoryName);
|
|
|
projectCategory.setCompanyId(companyId);
|
|
|
projectCategoryMapper.insert(projectCategory);
|
|
|
+ allProjectCategoryList.add(projectCategory);
|
|
|
project.setCategory(projectCategory.getId());
|
|
|
project.setCategoryName(projectCategory.getName());
|
|
|
}else {
|
|
@@ -11416,17 +11421,63 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
taskGroup.setTaskGroupCode(ps.getProjectElementID());
|
|
|
taskGroup.setName(ps.getTaskGroupName().getName());
|
|
|
TaskGroup one = taskGroupMapper.selectOne(new QueryWrapper<TaskGroup>().eq("project_id", project.getId()).eq("task_group_code", ps.getProjectElementID()));
|
|
|
- if(one==null){
|
|
|
- taskGroupList.add(taskGroup);
|
|
|
+ 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);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
- if(taskGroupList.size()>0){
|
|
|
- if(!taskGroupService.saveBatch(taskGroupList)){
|
|
|
- msg.setError("任务分组同步验证失败");
|
|
|
+ LocalDate localDate=LocalDate.now();
|
|
|
+ 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<Task> allTasks = taskMapper.selectList(new LambdaQueryWrapper<Task>().in(Task::getProjectId, projectIds).in(Task::getGroupId, groupIds));
|
|
|
+ List<Stages> allStages = stagesMapper.selectList(new LambdaQueryWrapper<Stages>().in(Stages::getProjectId, projectIds).in(Stages::getGroupId, groupIds));
|
|
|
+ for (Map<String, Object> map : idsMapList) {
|
|
|
+ //处理项目下服务数据 ------->工时管家相关项目下任务分组下创建任务数据
|
|
|
+ if(projectServiceData!=null){
|
|
|
+ List<ServiceProduct> serviceProducts = projectServiceData.getServiceProducts();
|
|
|
+ if(serviceProducts!=null&&serviceProducts.size()>0){
|
|
|
+ List<Task> hasTasks =allTasks.stream().filter(al->al.getProjectId().equals(map.get("projectId"))&&al.getGroupId().equals(map.get("groupId"))).collect(Collectors.toList());
|
|
|
+ for (ServiceProduct serviceProduct : serviceProducts) {
|
|
|
+ Task task=new Task();
|
|
|
+ task.setName(serviceProduct.getDescription().getDescription()+"-"+serviceProduct.getInternalID());
|
|
|
+ task.setGroupId(Integer.valueOf(String.valueOf(map.get("groupId"))));
|
|
|
+ task.setProjectId(Integer.valueOf(String.valueOf(map.get("projectId"))));
|
|
|
+ task.setCreateDate(localDate);
|
|
|
+ Optional<Stages> first = allStages.stream().filter(a -> a.getGroupId().equals(task.getGroupId()) && a.getProjectId().equals(task.getProjectId())).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ task.setStagesId(first.get().getId());
|
|
|
+ }else {
|
|
|
+ //创建默认列表
|
|
|
+ Stages stage = new Stages();
|
|
|
+ stage.setGroupId(task.getGroupId());
|
|
|
+ stage.setSequence(1);
|
|
|
+ stage.setProjectId(task.getProjectId());
|
|
|
+ stage.setStagesName(MessageUtils.message("excel.WorkUnfolds"));
|
|
|
+ stagesMapper.insert(stage);
|
|
|
+ allStages.add(stage);
|
|
|
+ task.setStagesId(stage.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ task.setServiceId(serviceProduct.getInternalID());
|
|
|
+ Optional<Task> optional = hasTasks.stream().filter(s -> s.getName().equals(serviceProduct.getDescription().getDescription() + "-" + serviceProduct.getInternalID())).findFirst();
|
|
|
+ if(!optional.isPresent()){
|
|
|
+ taskList.add(task);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ if(taskList.size()>0){
|
|
|
+ taskService.saveBatch(taskList);
|
|
|
+ }
|
|
|
}
|
|
|
msg.setData(xmlResponseData);
|
|
|
return msg;
|
|
@@ -11571,8 +11622,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
|
|
|
//同步SAP项目服务数据到工时管家
|
|
|
- private void syncServiceData(String startDate, String endDate, Integer companyId) {
|
|
|
- List<ReportExtraDegree> extraDegrees = reportExtraDegreeService.list(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
|
|
|
+ private XmlResponseData syncServiceData(String startDate, String endDate, Integer companyId) {
|
|
|
//配置请求xml
|
|
|
XmlRequestData xmlRequestData=new XmlRequestData();
|
|
|
ProcessingConditions processingConditions=new ProcessingConditions();
|
|
@@ -11606,22 +11656,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
System.out.println(result);
|
|
|
XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
|
|
|
- List<ServiceProduct> serviceProducts = xmlResponseData.getServiceProducts();
|
|
|
- List<ReportExtraDegree> needAddList=new ArrayList<>();
|
|
|
- for (ServiceProduct serviceProduct : serviceProducts) {
|
|
|
- if(!serviceProduct.getProductCategoryID().equals("901")){
|
|
|
- continue;
|
|
|
- }
|
|
|
- ReportExtraDegree reportExtraDegree=new ReportExtraDegree();
|
|
|
- reportExtraDegree.setCompanyId(companyId);
|
|
|
- reportExtraDegree.setCode(serviceProduct.getInternalID());
|
|
|
- reportExtraDegree.setRmark(serviceProduct.getDescription().getDescription());
|
|
|
- Optional<ReportExtraDegree> any = extraDegrees.stream().filter(es -> es.getCode().equals(serviceProduct.getInternalID())).findAny();
|
|
|
- if(any.isPresent()){
|
|
|
- reportExtraDegree.setId(any.get().getId());
|
|
|
- }
|
|
|
- needAddList.add(reportExtraDegree);
|
|
|
- }
|
|
|
- reportExtraDegreeService.saveOrUpdateBatch(needAddList);
|
|
|
+ return xmlResponseData;
|
|
|
}
|
|
|
}
|