|
@@ -1551,44 +1551,7 @@ public class TimingTask {
|
|
|
|
|
|
}
|
|
|
|
|
|
- public static void main(String[] args) throws Exception {
|
|
|
- XmlRequestData xmlRequestData=new XmlRequestData();
|
|
|
- ProcessingConditions processingConditions=new ProcessingConditions();
|
|
|
- processingConditions.setQueryHitsUnlimitedIndicator("true");
|
|
|
- xmlRequestData.setProcessingConditions(processingConditions);
|
|
|
- ProjectSelectionByElement projectSelectionByElement=new ProjectSelectionByElement();
|
|
|
- SelectionByLastChangeDateTime selectionByLastChangeDateTime=new SelectionByLastChangeDateTime();
|
|
|
- selectionByLastChangeDateTime.setInclusionExclusionCode("I");
|
|
|
- selectionByLastChangeDateTime.setIntervalBoundaryTypeCode("3");
|
|
|
- selectionByLastChangeDateTime.setLowerBoundaryLastChangeDateTime("2023-09-01T00:00:00Z");
|
|
|
- selectionByLastChangeDateTime.setUpperBoundaryLastChangeDateTime("2023-10-01T00:00:00Z");
|
|
|
- projectSelectionByElement.setSelectionByLastChangeDateTime(selectionByLastChangeDateTime);
|
|
|
- List<ProjectSelectionByElement> list=new ArrayList<>();
|
|
|
- list.add(projectSelectionByElement);
|
|
|
- xmlRequestData.setProjectSelectionByElements(list);
|
|
|
- String xml = CommonUtils.convertToXml(xmlRequestData);
|
|
|
- xml=xml.substring(xml.indexOf("<XMLDATA>")+9,xml.lastIndexOf("</XMLDATA>"));
|
|
|
- StringBuffer sb = new StringBuffer();
|
|
|
- sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:glob=\"http://sap.com/xi/SAPGlobal20/Global\">\n" +
|
|
|
- " <soapenv:Header/>\n" +
|
|
|
- " <soapenv:Body>\n" +
|
|
|
- " <glob:ProjectByElementsQuery>\n");
|
|
|
- sb.append(xml);
|
|
|
- sb.append(" </glob:ProjectByElementsQuery>\n" +
|
|
|
- " </soapenv:Body>\n" +
|
|
|
- "</soapenv:Envelope>");
|
|
|
- System.out.println(sb.toString());
|
|
|
- String result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/queryprojectin?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
|
|
|
- if(!StringUtils.isEmpty(result)) {
|
|
|
- result = result.substring(result.indexOf("<soap-env:Body>")+15, result.lastIndexOf("</soap-env:Body>"));
|
|
|
- result = result.substring(result.indexOf(">")+1, result.lastIndexOf("</n0:ProjectByElementsResponse_sync>"));
|
|
|
- result="<XMLDATA>"+result+"</XMLDATA>";
|
|
|
- }
|
|
|
- System.out.println(result);
|
|
|
- XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
|
|
|
- }
|
|
|
-
|
|
|
- //每天凌晨 2:00 推送前2天审核通过的日报 工时管家---->SAP
|
|
|
+ //每天凌晨 2:00 推送前1天审核通过的日报 工时管家---->SAP
|
|
|
@Scheduled(cron = "0 0 2 ? * *")
|
|
|
public void pushReportToSap(){
|
|
|
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
@@ -1596,7 +1559,9 @@ public class TimingTask {
|
|
|
LocalDate date=LocalDate.now();
|
|
|
for (TimeType timeType : timeTypeList) {
|
|
|
Integer companyId = timeType.getCompanyId();
|
|
|
- List<Map<String, Object>> mapList = reportMapper.getPushProjectReportToSap(companyId, date.minusDays(2).format(df), date.format(df), null);
|
|
|
+ //提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
|
|
|
+ pushProjectPlanToSap(companyId, date.minusDays(1).format(df),date.format(df));
|
|
|
+ List<Map<String, Object>> mapList = reportMapper.getPushProjectReportToSap(companyId, date.minusDays(1).format(df), date.format(df), null);
|
|
|
List<ReportPushLog> addList=new ArrayList<>();
|
|
|
//配置xml请求参数
|
|
|
XmlRequestData xmlRequestData=new XmlRequestData();
|
|
@@ -1678,4 +1643,136 @@ public class TimingTask {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void pushProjectPlanToSap(Integer companyId,String startDate, String endDate) {
|
|
|
+ List<Map<String, Object>> mapList = reportMapper.getProjectPlanData(companyId,startDate,endDate);
|
|
|
+ //根据项目分组 按照项目推送
|
|
|
+ //获取当前数据中的所有项目编号
|
|
|
+ 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")));
|
|
|
+ service.setStartDate(String.valueOf(map.get("StartDate")));
|
|
|
+ service.setEndDate(String.valueOf(map.get("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);
|
|
|
+ xml=xml.substring(xml.indexOf("<XMLDATA>")+9,xml.lastIndexOf("</XMLDATA>"));
|
|
|
+ StringBuffer sb = new StringBuffer();
|
|
|
+ sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:glob=\"http://sap.com/xi/SAPGlobal20/Global\">\n" +
|
|
|
+ " <soapenv:Header/>\n" +
|
|
|
+ " <soapenv:Body>\n" +
|
|
|
+ " <glob:ZManageProjectTaskWorkCreateRequest_sync>\n");
|
|
|
+ sb.append(xml);
|
|
|
+ sb.append(" </glob:ZManageProjectTaskWorkCreateRequest_sync>\n" +
|
|
|
+ " </soapenv:Body>\n" +
|
|
|
+ "</soapenv:Envelope>");
|
|
|
+ System.out.println(sb.toString());
|
|
|
+ String result = "";
|
|
|
+ try {
|
|
|
+ result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/yyatr5vf6y_manageprojecttaskwo?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ if(!StringUtils.isEmpty(result)) {
|
|
|
+ result = result.substring(result.indexOf("<soap-env:Body>")+15, result.lastIndexOf("</soap-env:Body>"));
|
|
|
+ result = result.substring(result.indexOf(">")+1, result.lastIndexOf("</n0:ZManageProjectTaskWorkCreateConfirmation_sync>"));
|
|
|
+ result="<XMLDATA>"+result+"</XMLDATA>";
|
|
|
+ }
|
|
|
+ System.out.println(result);
|
|
|
+ XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
|
|
|
+ if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime().getUUID())){
|
|
|
+ log.error("推送失败===》项目编号:"+zManageProjectTaskWork.getProjectID());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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")));
|
|
|
+ service.setStartDate(String.valueOf(map.get("StartDate")));
|
|
|
+ service.setEndDate(String.valueOf(map.get("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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|