|
@@ -172,6 +172,8 @@ public class TimingTask {
|
|
private StagesService stagesService;
|
|
private StagesService stagesService;
|
|
@Resource
|
|
@Resource
|
|
private SapProjectServiceService sapProjectServiceService;
|
|
private SapProjectServiceService sapProjectServiceService;
|
|
|
|
+ @Resource
|
|
|
|
+ private SapSyncLogService sapSyncLogService;
|
|
|
|
|
|
|
|
|
|
private static final List<Integer> VALID_TOKEN_CHARS = new ArrayList<>();
|
|
private static final List<Integer> VALID_TOKEN_CHARS = new ArrayList<>();
|
|
@@ -1694,11 +1696,14 @@ public class TimingTask {
|
|
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
List<TimeType> timeTypeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("sync_sap",1));
|
|
List<TimeType> timeTypeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("sync_sap",1));
|
|
LocalDate date=LocalDate.now();
|
|
LocalDate date=LocalDate.now();
|
|
|
|
+ LocalDateTime localDateTime=LocalDateTime.now();
|
|
for (TimeType timeType : timeTypeList) {
|
|
for (TimeType timeType : timeTypeList) {
|
|
Integer companyId = timeType.getCompanyId();
|
|
Integer companyId = timeType.getCompanyId();
|
|
|
|
+ List<SapSyncLog> sapSyncLogs=new ArrayList<>();
|
|
//提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
|
|
//提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
|
|
List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,null,null);
|
|
List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,null,null);
|
|
- SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour);
|
|
|
|
|
|
+ List<SapSyncLog> projectPlanSapSyncLogs = SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour, companyId, "");
|
|
|
|
+ sapSyncLogs.addAll(projectPlanSapSyncLogs);
|
|
List<Map<String, Object>> mapList = reportMapper.getPushProjectReportToSap(companyId,df.format(date.minusDays(1)),df.format(date.minusDays(1)), null);
|
|
List<Map<String, Object>> mapList = reportMapper.getPushProjectReportToSap(companyId,df.format(date.minusDays(1)),df.format(date.minusDays(1)), null);
|
|
List<ReportPushLog> addList=new ArrayList<>();
|
|
List<ReportPushLog> addList=new ArrayList<>();
|
|
for (Map<String, Object> map : mapList) {
|
|
for (Map<String, Object> map : mapList) {
|
|
@@ -1707,10 +1712,17 @@ public class TimingTask {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
XmlResponseData xmlResponseData = SyncSapUtils.pushReportToSap(map);
|
|
XmlResponseData xmlResponseData = SyncSapUtils.pushReportToSap(map);
|
|
|
|
+ SapSyncLog sapSyncLog=new SapSyncLog();
|
|
|
|
+ sapSyncLog.setCompanyId(companyId);
|
|
|
|
+ sapSyncLog.setRemark("日报数据推送");
|
|
|
|
+ sapSyncLog.setSyncType("定时任务推送");
|
|
|
|
+ sapSyncLog.setSyncTime(localDateTime);
|
|
if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime())){
|
|
if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime())){
|
|
log.error("推送失败===》工号:"+map.get("EmployeeID"));
|
|
log.error("推送失败===》工号:"+map.get("EmployeeID"));
|
|
- continue;
|
|
|
|
|
|
+ sapSyncLog.setResult("员工工号["+map.get("EmployeeID")+"]"+map.get("StartDate")+"日报推送失败");
|
|
|
|
+ sapSyncLog.setResultRemark(xmlResponseData.getLog()!=null?xmlResponseData.getLog().getItem()!=null?xmlResponseData.getLog().getItem().getNote():"":"");
|
|
}else {
|
|
}else {
|
|
|
|
+ sapSyncLog.setResult("工号["+map.get("EmployeeID")+"]"+map.get("StartDate")+"日报推送成功");
|
|
//推送成功 日报数据打上标记
|
|
//推送成功 日报数据打上标记
|
|
ReportPushLog reportPushLog=new ReportPushLog();
|
|
ReportPushLog reportPushLog=new ReportPushLog();
|
|
reportPushLog.setCompanyId(companyId);
|
|
reportPushLog.setCompanyId(companyId);
|
|
@@ -1719,10 +1731,14 @@ public class TimingTask {
|
|
reportPushLog.setUuid(xmlResponseData.getEmployeeTime().getUUID());
|
|
reportPushLog.setUuid(xmlResponseData.getEmployeeTime().getUUID());
|
|
addList.add(reportPushLog);
|
|
addList.add(reportPushLog);
|
|
}
|
|
}
|
|
|
|
+ sapSyncLogs.add(sapSyncLog);
|
|
}
|
|
}
|
|
if(addList.size()>0){
|
|
if(addList.size()>0){
|
|
reportPushLogService.saveBatch(addList);
|
|
reportPushLogService.saveBatch(addList);
|
|
}
|
|
}
|
|
|
|
+ if(sapSyncLogs.size()>0){
|
|
|
|
+ sapSyncLogService.saveBatch(sapSyncLogs);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1742,12 +1758,11 @@ public class TimingTask {
|
|
//已有的项目分类
|
|
//已有的项目分类
|
|
List<ProjectCategory> allProjectCategoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id", 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));
|
|
List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
|
|
-// XmlResponseData xmlResponseData = SyncSapUtils.syncProjectFromSap(df.format(date.minusDays(1)), df.format(date.minusDays(1)));
|
|
|
|
XmlResponseData xmlResponseData = SyncSapUtils.syncProjectFromSap(df.format(date.minusDays(1)), df.format(date.minusDays(1)));
|
|
XmlResponseData xmlResponseData = SyncSapUtils.syncProjectFromSap(df.format(date.minusDays(1)), df.format(date.minusDays(1)));
|
|
List<ProjectQueryResponse> projectQueryResponses = xmlResponseData.getProjectQueryResponses();
|
|
List<ProjectQueryResponse> projectQueryResponses = xmlResponseData.getProjectQueryResponses();
|
|
List<Map<String,Object>> idsMapList=new ArrayList<>();
|
|
List<Map<String,Object>> idsMapList=new ArrayList<>();
|
|
|
|
+ LocalDate localDate=LocalDate.now();
|
|
if(projectQueryResponses!=null&&projectQueryResponses.size()>0){
|
|
if(projectQueryResponses!=null&&projectQueryResponses.size()>0){
|
|
- List<Stages> stagesList=new ArrayList<>();
|
|
|
|
for (ProjectQueryResponse item : projectQueryResponses) {
|
|
for (ProjectQueryResponse item : projectQueryResponses) {
|
|
Project project=new Project();
|
|
Project project=new Project();
|
|
//处理项目分类
|
|
//处理项目分类
|
|
@@ -1811,44 +1826,144 @@ public class TimingTask {
|
|
//处理项目下任务 ----> 工时管家生成任务分组
|
|
//处理项目下任务 ----> 工时管家生成任务分组
|
|
List<ProjectTask> projectTasks = item.getProjectTasks();
|
|
List<ProjectTask> projectTasks = item.getProjectTasks();
|
|
if(projectTasks!=null&&projectTasks.size()>0){
|
|
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());
|
|
|
|
|
|
+ //找到任务列表中 作为项目出现的第一级列表
|
|
|
|
+ Optional<ProjectTask> targetProject = projectTasks.stream().filter(p -> p.getProjectElementID().equals(project.getProjectCode())).findFirst();
|
|
|
|
+ String targetUUID = targetProject.get().getUUID();
|
|
|
|
+ //todo:按照层级抽取数据
|
|
|
|
+ //项目下第一层 作为任务分组数据
|
|
|
|
+ List<ProjectTask> taskGroupList = projectTasks.stream().filter(p -> p.getParentTaskUUID() != null && p.getParentTaskUUID().equals(targetUUID)).collect(Collectors.toList());
|
|
|
|
+ //抽调任务分组下级数据 作为阶段数据(是没有下级数据的情况下 作为最末级--->工时管家任务)
|
|
|
|
+ List<String> taskGroupUUIDList = taskGroupList.stream().map(ProjectTask::getUUID).collect(Collectors.toList());
|
|
|
|
+ List<ProjectTask> stagesList = projectTasks.stream().filter(p -> p.getParentTaskUUID() != null && taskGroupUUIDList.contains(p.getParentTaskUUID())).collect(Collectors.toList());
|
|
|
|
+ List<String> stagesUUIDList = stagesList.stream().map(ProjectTask::getUUID).collect(Collectors.toList());
|
|
|
|
+ //抽调出最末级
|
|
|
|
+ List<ProjectTask> taskList = projectTasks.stream().filter(p ->p.getParentTaskUUID() != null &&stagesUUIDList.contains(p.getParentTaskUUID())&&(p.getSummaryTaskIndicator()==null||(p.getSummaryTaskIndicator()!=null && !p.getSummaryTaskIndicator().equals("true")))).collect(Collectors.toList());
|
|
|
|
+ if(taskGroupList!=null && taskGroupList.size()>0){
|
|
|
|
+ for (ProjectTask group : taskGroupList) {
|
|
|
|
+ //如果作为第二层数据是不存在下级数据的 把当前数据作为第四层数据 手动添加阶段数据 作为该数据的上级数据
|
|
|
|
+ if(group.getSummaryTaskIndicator()==null){
|
|
|
|
+ TaskGroup taskGroup=new TaskGroup();
|
|
|
|
+ taskGroup.setProjectId(project.getId());
|
|
|
|
+ taskGroup.setName("项目阶段");
|
|
|
|
+ TaskGroup one = taskGroupMapper.selectOne(new QueryWrapper<TaskGroup>().eq("project_id", project.getId()).eq("name","项目阶段"));
|
|
|
|
+ if(one!=null){
|
|
|
|
+ taskGroup.setId(one.getId());
|
|
|
|
+ }
|
|
|
|
+ taskGroupService.saveOrUpdate(taskGroup);
|
|
|
|
+ Stages stage = new Stages();
|
|
|
|
+ stage.setSequence(1);
|
|
|
|
+ stage.setProjectId(project.getId());
|
|
|
|
+ stage.setGroupId(taskGroup.getId());
|
|
|
|
+ stage.setStagesName("工作开展");
|
|
|
|
+ Stages two = stagesMapper.selectOne(new QueryWrapper<Stages>().eq("project_id", project.getId()).eq("stages_name","工作开展").eq("group_id",stage.getGroupId()));
|
|
|
|
+ if(two!=null){
|
|
|
|
+ stage.setId(two.getId());
|
|
|
|
+ }
|
|
|
|
+ stagesService.saveOrUpdate(stage);
|
|
|
|
+ Task task=new Task();
|
|
|
|
+ task.setProjectId(project.getId());
|
|
|
|
+ task.setGroupId(taskGroup.getId());
|
|
|
|
+ task.setStagesId(stage.getId());
|
|
|
|
+ task.setCreateDate(localDate);
|
|
|
|
+ task.setCompanyId(companyId);
|
|
|
|
+ task.setSapTaskCode(group.getProjectElementID());
|
|
|
|
+ task.setName(group.getTaskGroupName()==null?"空的任务名称":group.getTaskGroupName().getName());
|
|
|
|
+ Task three = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,task.getSapTaskCode()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
|
|
|
|
+ if(three!=null){
|
|
|
|
+ task.setId(three.getId());
|
|
|
|
+ }
|
|
|
|
+ taskService.saveOrUpdate(task);
|
|
|
|
+ }else {
|
|
|
|
+ TaskGroup taskGroup=new TaskGroup();
|
|
|
|
+ taskGroup.setProjectId(project.getId());
|
|
|
|
+ taskGroup.setTaskGroupCode(group.getProjectElementID());
|
|
|
|
+ taskGroup.setName(group.getTaskGroupName()==null?"":group.getTaskGroupName().getName());
|
|
|
|
+ TaskGroup one = taskGroupMapper.selectOne(new QueryWrapper<TaskGroup>().eq("project_id", project.getId()).eq("task_group_code", group.getProjectElementID()));
|
|
|
|
+ if(one!=null){
|
|
|
|
+ taskGroup.setId(one.getId());
|
|
|
|
+ }
|
|
|
|
+ taskGroupService.saveOrUpdate(taskGroup);
|
|
|
|
+ Map<String,Object> map=new HashMap<>();
|
|
|
|
+ map.put("groupId",taskGroup.getId());
|
|
|
|
+ map.put("UUID",group.getUUID());
|
|
|
|
+ map.put("projectId",project.getId());
|
|
|
|
+ idsMapList.add(map);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(stagesList!=null&&stagesList.size()>0){
|
|
|
|
+ for (ProjectTask targetStage : stagesList) {
|
|
|
|
+ Optional<Map<String, Object>> targetGroup = idsMapList.stream().filter(i -> i.get("UUID").equals(targetStage.getParentTaskUUID())).findFirst();
|
|
|
|
+ if(!targetGroup.isPresent()){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ //如果作为第三层数据是不存在下级数据的 把当前数据作为第四层数据 手动添加阶段数据 作为该数据的上级数据
|
|
|
|
+ if(targetStage.getSummaryTaskIndicator()==null){
|
|
|
|
+ Stages stage = new Stages();
|
|
|
|
+ stage.setSequence(1);
|
|
|
|
+ stage.setProjectId(project.getId());
|
|
|
|
+ stage.setGroupId(Integer.valueOf(String.valueOf(targetGroup.get().get("groupId"))));
|
|
|
|
+ stage.setStagesName("工作开展");
|
|
|
|
+ Stages one = stagesMapper.selectOne(new QueryWrapper<Stages>().eq("project_id", project.getId()).eq("stages_name","工作开展").eq("group_id",stage.getGroupId()));
|
|
|
|
+ if(one!=null){
|
|
|
|
+ stage.setId(one.getId());
|
|
|
|
+ }
|
|
|
|
+ stagesService.saveOrUpdate(stage);
|
|
|
|
+ Task task=new Task();
|
|
|
|
+ task.setProjectId(project.getId());
|
|
|
|
+ task.setGroupId(Integer.valueOf(String.valueOf(targetGroup.get().get("groupId"))));
|
|
|
|
+ task.setStagesId(stage.getId());
|
|
|
|
+ task.setCreateDate(localDate);
|
|
|
|
+ task.setCompanyId(companyId);
|
|
|
|
+ task.setSapTaskCode(targetStage.getProjectElementID());
|
|
|
|
+ task.setName(targetStage.getTaskGroupName()==null?"空的任务名称":targetStage.getTaskGroupName().getName());
|
|
|
|
+ Task two = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,task.getSapTaskCode()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
|
|
|
|
+ if(two!=null){
|
|
|
|
+ task.setId(two.getId());
|
|
|
|
+ }
|
|
|
|
+ taskService.saveOrUpdate(task);
|
|
|
|
+ }else {
|
|
|
|
+ Stages stage = new Stages();
|
|
|
|
+ stage.setSequence(1);
|
|
|
|
+ stage.setProjectId(project.getId());
|
|
|
|
+ stage.setGroupId(Integer.valueOf(String.valueOf(targetGroup.get().get("groupId"))));
|
|
|
|
+ stage.setStagesCode(targetStage.getProjectElementID());
|
|
|
|
+ stage.setStagesName(targetStage.getTaskGroupName()==null?"":targetStage.getTaskGroupName().getName());
|
|
|
|
+ Stages one = stagesMapper.selectOne(new QueryWrapper<Stages>().eq("project_id", project.getId()).eq("stages_code", targetStage.getProjectElementID()).eq("group_id",stage.getGroupId()));
|
|
|
|
+ if(one!=null){
|
|
|
|
+ stage.setId(one.getId());
|
|
|
|
+ }
|
|
|
|
+ stagesService.saveOrUpdate(stage);
|
|
|
|
+ Map<String,Object> map=new HashMap<>();
|
|
|
|
+ map.put("groupId",targetGroup.get().get("groupId"));
|
|
|
|
+ map.put("stageId",stage.getId());
|
|
|
|
+ map.put("UUID",targetStage.getUUID());
|
|
|
|
+ map.put("projectId",project.getId());
|
|
|
|
+ idsMapList.add(map);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for (ProjectTask targetTask : taskList) {
|
|
|
|
+ Optional<Map<String, Object>> targetMapOp = idsMapList.stream().filter(i -> String.valueOf(i.get("UUID")).equals(targetTask.getParentTaskUUID())&&i.get("stageId")!=null).findFirst();
|
|
|
|
+ if(targetMapOp.isPresent()){
|
|
|
|
+ Map<String, Object> targetMap = targetMapOp.get();
|
|
|
|
+ Task task=new Task();
|
|
|
|
+ task.setProjectId(project.getId());
|
|
|
|
+ task.setGroupId(Integer.valueOf(String.valueOf(targetMap.get("groupId"))));
|
|
|
|
+ task.setStagesId(Integer.valueOf(String.valueOf(targetMap.get("stageId"))));
|
|
|
|
+ task.setCreateDate(localDate);
|
|
|
|
+ task.setCompanyId(companyId);
|
|
|
|
+ task.setSapTaskCode(targetTask.getProjectElementID());
|
|
|
|
+ task.setName(targetTask.getTaskGroupName()==null?"空的任务名称":targetTask.getTaskGroupName().getName());
|
|
|
|
+ Task one = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,targetTask.getProjectElementID()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
|
|
|
|
+ if(one!=null){
|
|
|
|
+ task.setId(one.getId());
|
|
|
|
+ }
|
|
|
|
+ taskService.saveOrUpdate(task);
|
|
}
|
|
}
|
|
- taskGroupService.saveOrUpdate(taskGroup);
|
|
|
|
- Map<String,Object> map=new HashMap<>();
|
|
|
|
- map.put("groupId",taskGroup.getId());
|
|
|
|
- map.put("projectId",project.getId());
|
|
|
|
- idsMapList.add(map);
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- 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));
|
|
List<SapProjectService> serviceList = sapProjectServiceService.list(new LambdaQueryWrapper<SapProjectService>().eq(SapProjectService::getCompanyId, companyId));
|
|
@@ -1857,13 +1972,15 @@ public class TimingTask {
|
|
List<ServiceProduct> serviceProducts = projectServiceData.getServiceProducts();
|
|
List<ServiceProduct> serviceProducts = projectServiceData.getServiceProducts();
|
|
if(serviceProducts!=null&&serviceProducts.size()>0){
|
|
if(serviceProducts!=null&&serviceProducts.size()>0){
|
|
for (ServiceProduct serviceProduct : serviceProducts) {
|
|
for (ServiceProduct serviceProduct : serviceProducts) {
|
|
- SapProjectService sapProjectService=new SapProjectService();
|
|
|
|
- sapProjectService.setServiceCode(serviceProduct.getInternalID());
|
|
|
|
- sapProjectService.setServiceName(serviceProduct.getDescription().getDescription());
|
|
|
|
- sapProjectService.setCompanyId(companyId);
|
|
|
|
- boolean match = serviceList.stream().anyMatch(s -> s.getServiceCode().equals(serviceProduct.getInternalID()));
|
|
|
|
- if(!match){
|
|
|
|
- sapProjectServiceList.add(sapProjectService);
|
|
|
|
|
|
+ if(serviceProduct.getProductCategoryID().equals("901")){
|
|
|
|
+ SapProjectService sapProjectService=new SapProjectService();
|
|
|
|
+ sapProjectService.setServiceCode(serviceProduct.getInternalID());
|
|
|
|
+ sapProjectService.setServiceName(serviceProduct.getDescription().getDescription());
|
|
|
|
+ sapProjectService.setCompanyId(companyId);
|
|
|
|
+ boolean match = serviceList.stream().anyMatch(s -> s.getServiceCode().equals(serviceProduct.getInternalID()));
|
|
|
|
+ if(!match){
|
|
|
|
+ sapProjectServiceList.add(sapProjectService);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1874,72 +1991,4 @@ public class TimingTask {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- public static void main(String[] args) {
|
|
|
|
- List<Map<String, Object>> mapList = new ArrayList<>();
|
|
|
|
- Map<String,Object> map2=new HashMap<>();
|
|
|
|
- map2.put("ProjectID","1");
|
|
|
|
- map2.put("ProjectTaskID","2");
|
|
|
|
- map2.put("ServiceID","3");
|
|
|
|
- map2.put("EmployeeID","4");
|
|
|
|
- map2.put("PlanWork","5");
|
|
|
|
- map2.put("StartDate","6");
|
|
|
|
- map2.put("EndDate","7");
|
|
|
|
- mapList.add(map2);
|
|
|
|
- Map<String,Object> map1=new HashMap<>();
|
|
|
|
- map1.put("ProjectID","1");
|
|
|
|
- map1.put("ProjectTaskID","2");
|
|
|
|
- map1.put("ServiceID","3");
|
|
|
|
- map1.put("EmployeeID","5");
|
|
|
|
- map1.put("PlanWork","3");
|
|
|
|
- map1.put("StartDate","2");
|
|
|
|
- map1.put("EndDate","1");
|
|
|
|
- mapList.add(map1);
|
|
|
|
- //根据项目分组 按照项目推送
|
|
|
|
- //获取当前数据中的所有项目编号
|
|
|
|
- List<String> projectIds = mapList.stream().map(m -> String.valueOf(m.get("ProjectID"))).distinct().collect(Collectors.toList());
|
|
|
|
- Map<Object, List<Map<String, Object>>> mapListGroupPro = mapList.stream().collect(Collectors.groupingBy(m -> m.get("ProjectID")));
|
|
|
|
- //循环推送
|
|
|
|
- for (String projectId : projectIds) {
|
|
|
|
- //配置xml请求参数
|
|
|
|
- XmlRequestData xmlRequestData=new XmlRequestData();
|
|
|
|
- xmlRequestData.setBasicMessageHeader("");
|
|
|
|
- ZManageProjectTaskWork zManageProjectTaskWork=new ZManageProjectTaskWork();
|
|
|
|
- zManageProjectTaskWork.setProjectID(projectId);
|
|
|
|
- List<Map<String, Object>> resultList = mapListGroupPro.get(projectId);
|
|
|
|
- //获取当前数据下的任务分组的分组数据
|
|
|
|
- List<String> taskGroupIds = resultList.stream().map(m -> String.valueOf(m.get("ProjectTaskID"))).distinct().collect(Collectors.toList());
|
|
|
|
- Map<Object, List<Map<String, Object>>> resultGroupByTaskGroup = resultList.stream().collect(Collectors.groupingBy(m -> m.get("ProjectTaskID")));
|
|
|
|
- List<RequestTask> tasks=new ArrayList<>();
|
|
|
|
- for (String taskGroupId : taskGroupIds) {
|
|
|
|
- RequestTask requestTask=new RequestTask();
|
|
|
|
- requestTask.setProjectTaskID(taskGroupId);
|
|
|
|
- List<Map<String, Object>> list = resultGroupByTaskGroup.get(taskGroupId);
|
|
|
|
- List<Service> services=new ArrayList<>();
|
|
|
|
- for (Map<String, Object> map : list) {
|
|
|
|
- Service service=new Service();
|
|
|
|
- service.setServiceID(String.valueOf(map.get("ServiceID")));
|
|
|
|
- service.setEmployeeID(String.valueOf(map.get("EmployeeID")));
|
|
|
|
- service.setPlanWork(String.valueOf(map.get("PlanWork")));
|
|
|
|
- StartDate startDate=new StartDate();
|
|
|
|
- startDate.setTimeZoneCode("UTC+8");
|
|
|
|
- startDate.setStartDate(String.valueOf(map.get("StartDate")));
|
|
|
|
- service.setStartDate(startDate);
|
|
|
|
- EndDate endDate=new EndDate();
|
|
|
|
- endDate.setTimeZoneCode("UTC+8");
|
|
|
|
- endDate.setEndDate(String.valueOf(map.get("EndDate")));
|
|
|
|
- service.setEndDate(endDate);
|
|
|
|
- service.setOverDeliveryAllowedIndicator("true");
|
|
|
|
- services.add(service);
|
|
|
|
- }
|
|
|
|
- requestTask.setServices(services);
|
|
|
|
- tasks.add(requestTask);
|
|
|
|
- }
|
|
|
|
- zManageProjectTaskWork.setTasks(tasks);
|
|
|
|
- xmlRequestData.setZManageProjectTaskWork(zManageProjectTaskWork);
|
|
|
|
- String xml = CommonUtils.convertToXml(xmlRequestData);
|
|
|
|
- System.out.println(xml);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|