|
@@ -7487,21 +7487,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
//提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
|
|
//提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
|
|
//只推送需要推送日报参与的部分就可以了
|
|
//只推送需要推送日报参与的部分就可以了
|
|
List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,projectIds,null,null);
|
|
List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,projectIds,null,null);
|
|
- //配置xml请求参数
|
|
|
|
- XmlRequestData xmlRequestData=new XmlRequestData();
|
|
|
|
- xmlRequestData.setBasicMessageHeader("");
|
|
|
|
- EmployeeTime employeeTime=new EmployeeTime();
|
|
|
|
- WorkDescriptionText workDescriptionText=new WorkDescriptionText();
|
|
|
|
- workDescriptionText.setLanguageCode("ZH");
|
|
|
|
- SapPeriod datePeriod=new SapPeriod();
|
|
|
|
- SapPeriod timePeriod=new SapPeriod();
|
|
|
|
- Map<String, List<Map<String, Object>>> listGroupEmployeeID = resultList.stream().collect(Collectors.groupingBy(r -> String.valueOf(r.get("EmployeeID"))));
|
|
|
|
- List<String> employeeIDList = resultList.stream().map(r -> String.valueOf(r.get("EmployeeID"))).distinct().collect(Collectors.toList());
|
|
|
|
- //按照人员集合长度来创建多个个线程来处理
|
|
|
|
- int threadNum = employeeIDList.size();
|
|
|
|
- //多加一个作为预算工时推送
|
|
|
|
- ExecutorService executor = Executors.newFixedThreadPool(threadNum+1);
|
|
|
|
|
|
+ ExecutorService executor = Executors.newFixedThreadPool(1);
|
|
/*execute()让线程池中的线程来执行业务,每次调用都会将一个线程加入到就绪队列*/
|
|
/*execute()让线程池中的线程来执行业务,每次调用都会将一个线程加入到就绪队列*/
|
|
|
|
+ List<Map<String, Object>> finalResultList = resultList;
|
|
executor.execute(new Runnable() {
|
|
executor.execute(new Runnable() {
|
|
@Override
|
|
@Override
|
|
public void run() {
|
|
public void run() {
|
|
@@ -7509,107 +7497,107 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
if(projectPlanSyncLogs.size()>0){
|
|
if(projectPlanSyncLogs.size()>0){
|
|
sapSyncLogService.saveBatch(projectPlanSyncLogs);
|
|
sapSyncLogService.saveBatch(projectPlanSyncLogs);
|
|
}
|
|
}
|
|
- }
|
|
|
|
- });
|
|
|
|
- for (int i = 0; i <employeeIDList.size() ; i++) {
|
|
|
|
- List<Map<String, Object>> mapList = listGroupEmployeeID.get(employeeIDList.get(i));
|
|
|
|
- executor.execute(new Runnable() {
|
|
|
|
- @Override
|
|
|
|
- public void run() {
|
|
|
|
- for (Map<String, Object> map : mapList) {
|
|
|
|
- ReportPushLog one = reportPushLogService.getOne(new LambdaQueryWrapper<ReportPushLog>().eq(ReportPushLog::getCompanyId, companyId).eq(ReportPushLog::getReportId, map.get("ReportId")).eq(ReportPushLog::getTargetSystem,"SAP"));
|
|
|
|
- if(one!=null){
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- employeeTime.setEmployeeID(String.valueOf(map.get("EmployeeID")));
|
|
|
|
- employeeTime.setActionCode("01");
|
|
|
|
- if(map.get("StartDate")!=null){
|
|
|
|
- datePeriod.setStartDate(String.valueOf(map.get("StartDate")));
|
|
|
|
- }
|
|
|
|
- if(map.get("EndDate")!=null){
|
|
|
|
- datePeriod.setEndDate(String.valueOf(map.get("EndDate")));
|
|
|
|
- }
|
|
|
|
- if(map.get("StartTime")!=null){
|
|
|
|
- timePeriod.setStartTime(String.valueOf(map.get("StartTime"))+":00");
|
|
|
|
- }
|
|
|
|
- if(map.get("EndTime")!=null){
|
|
|
|
- timePeriod.setEndTime(String.valueOf(map.get("EndTime"))+":00");
|
|
|
|
- }
|
|
|
|
- employeeTime.setDatePeriod(datePeriod);
|
|
|
|
- if(map.get("StartTime")!=null&&map.get("EndTime")!=null){
|
|
|
|
- employeeTime.setTimePeriod(timePeriod);
|
|
|
|
- }
|
|
|
|
- employeeTime.setItemTypeCode("CN0001");
|
|
|
|
- String duration=map.get("Duration")==null?"0":String.valueOf(map.get("Duration"))+"";
|
|
|
|
- String hour = duration.substring(0, duration.indexOf("."));
|
|
|
|
- String min = "0"+duration.substring(duration.indexOf("."));
|
|
|
|
- BigDecimal minBigDecimal = new BigDecimal(min);
|
|
|
|
- minBigDecimal=minBigDecimal.multiply(new BigDecimal(60)).setScale(0,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- employeeTime.setDuration("PT"+hour+"H"+minBigDecimal.intValue()+"M");
|
|
|
|
- if(map.get("ProjectElementID")==null||map.get("ServiceProductInternalID")==null){
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- employeeTime.setProjectElementID(String.valueOf(map.get("ProjectElementID")));
|
|
|
|
- employeeTime.setServiceProductInternalID(String.valueOf(map.get("ServiceProductInternalID")));
|
|
|
|
- if(map.get("WorkDescriptionText")!=null){
|
|
|
|
- workDescriptionText.setWorkDescriptionText(String.valueOf(map.get("WorkDescriptionText")));
|
|
|
|
- employeeTime.setWorkDescriptionText(workDescriptionText);
|
|
|
|
- }
|
|
|
|
- xmlRequestData.setEmployeeTime(employeeTime);
|
|
|
|
- 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:EmployeeTimeAsBundleMaintainRequest_sync>\n");
|
|
|
|
- sb.append(xml);
|
|
|
|
- sb.append(" </glob:EmployeeTimeAsBundleMaintainRequest_sync>\n" +
|
|
|
|
- " </soapenv:Body>\n" +
|
|
|
|
- "</soapenv:Envelope>");
|
|
|
|
- String result = "";
|
|
|
|
- try {
|
|
|
|
- if(isDev){
|
|
|
|
- result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/manageemployeetimein?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
|
|
|
|
- }else {
|
|
|
|
- result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/manageemployeetimein?sap-vhost=my601432.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:EmployeeTimeAsBundleMaintainConfirmation_sync>"));
|
|
|
|
- result="<XMLDATA>"+result+"</XMLDATA>";
|
|
|
|
- }
|
|
|
|
- System.out.println(result);
|
|
|
|
- XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
|
|
|
|
- SapSyncLog sapSyncLog=new SapSyncLog();
|
|
|
|
- sapSyncLog.setOperator(user.getJobNumber());
|
|
|
|
- sapSyncLog.setCompanyId(companyId);
|
|
|
|
- sapSyncLog.setRemark("日报数据推送");
|
|
|
|
- sapSyncLog.setSyncType("手动推送");
|
|
|
|
- sapSyncLog.setSyncTime(localDateTime);
|
|
|
|
- if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime())){
|
|
|
|
- log.error("推送失败===》员工工号:"+employeeTime.getEmployeeID());
|
|
|
|
- sapSyncLog.setResult("员工工号["+employeeTime.getEmployeeID()+"]"+datePeriod.getStartDate()+"日报推送失败");
|
|
|
|
- sapSyncLog.setResultRemark(xmlResponseData.getLog()!=null?xmlResponseData.getLog().getItem()!=null?xmlResponseData.getLog().getItem().getNote():"":"");
|
|
|
|
|
|
+ //配置xml请求参数
|
|
|
|
+ XmlRequestData xmlRequestData=new XmlRequestData();
|
|
|
|
+ xmlRequestData.setBasicMessageHeader("");
|
|
|
|
+ EmployeeTime employeeTime=new EmployeeTime();
|
|
|
|
+ WorkDescriptionText workDescriptionText=new WorkDescriptionText();
|
|
|
|
+ workDescriptionText.setLanguageCode("ZH");
|
|
|
|
+ SapPeriod datePeriod=new SapPeriod();
|
|
|
|
+ SapPeriod timePeriod=new SapPeriod();
|
|
|
|
+ for (Map<String, Object> map : finalResultList) {
|
|
|
|
+ ReportPushLog one = reportPushLogService.getOne(new LambdaQueryWrapper<ReportPushLog>().eq(ReportPushLog::getCompanyId, companyId).eq(ReportPushLog::getReportId, map.get("ReportId")).eq(ReportPushLog::getTargetSystem,"SAP"));
|
|
|
|
+ if(one!=null){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ employeeTime.setEmployeeID(String.valueOf(map.get("EmployeeID")));
|
|
|
|
+ employeeTime.setActionCode("01");
|
|
|
|
+ if(map.get("StartDate")!=null){
|
|
|
|
+ datePeriod.setStartDate(String.valueOf(map.get("StartDate")));
|
|
|
|
+ }
|
|
|
|
+ if(map.get("EndDate")!=null){
|
|
|
|
+ datePeriod.setEndDate(String.valueOf(map.get("EndDate")));
|
|
|
|
+ }
|
|
|
|
+ if(map.get("StartTime")!=null){
|
|
|
|
+ timePeriod.setStartTime(String.valueOf(map.get("StartTime"))+":00");
|
|
|
|
+ }
|
|
|
|
+ if(map.get("EndTime")!=null){
|
|
|
|
+ timePeriod.setEndTime(String.valueOf(map.get("EndTime"))+":00");
|
|
|
|
+ }
|
|
|
|
+ employeeTime.setDatePeriod(datePeriod);
|
|
|
|
+ if(map.get("StartTime")!=null&&map.get("EndTime")!=null){
|
|
|
|
+ employeeTime.setTimePeriod(timePeriod);
|
|
|
|
+ }
|
|
|
|
+ employeeTime.setItemTypeCode("CN0001");
|
|
|
|
+ String duration=map.get("Duration")==null?"0":String.valueOf(map.get("Duration"))+"";
|
|
|
|
+ String hour = duration.substring(0, duration.indexOf("."));
|
|
|
|
+ String min = "0"+duration.substring(duration.indexOf("."));
|
|
|
|
+ BigDecimal minBigDecimal = new BigDecimal(min);
|
|
|
|
+ minBigDecimal=minBigDecimal.multiply(new BigDecimal(60)).setScale(0,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ employeeTime.setDuration("PT"+hour+"H"+minBigDecimal.intValue()+"M");
|
|
|
|
+ if(map.get("ProjectElementID")==null||map.get("ServiceProductInternalID")==null){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ employeeTime.setProjectElementID(String.valueOf(map.get("ProjectElementID")));
|
|
|
|
+ employeeTime.setServiceProductInternalID(String.valueOf(map.get("ServiceProductInternalID")));
|
|
|
|
+ if(map.get("WorkDescriptionText")!=null){
|
|
|
|
+ workDescriptionText.setWorkDescriptionText(String.valueOf(map.get("WorkDescriptionText")));
|
|
|
|
+ employeeTime.setWorkDescriptionText(workDescriptionText);
|
|
|
|
+ }
|
|
|
|
+ xmlRequestData.setEmployeeTime(employeeTime);
|
|
|
|
+ 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:EmployeeTimeAsBundleMaintainRequest_sync>\n");
|
|
|
|
+ sb.append(xml);
|
|
|
|
+ sb.append(" </glob:EmployeeTimeAsBundleMaintainRequest_sync>\n" +
|
|
|
|
+ " </soapenv:Body>\n" +
|
|
|
|
+ "</soapenv:Envelope>");
|
|
|
|
+ String result = "";
|
|
|
|
+ try {
|
|
|
|
+ if(isDev){
|
|
|
|
+ result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/manageemployeetimein?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
|
|
}else {
|
|
}else {
|
|
- sapSyncLog.setResult("员工工号["+employeeTime.getEmployeeID()+"]"+datePeriod.getStartDate()+"日报推送成功");
|
|
|
|
- //推送成功 日报数据打上标记
|
|
|
|
- ReportPushLog reportPushLog=new ReportPushLog();
|
|
|
|
- reportPushLog.setCompanyId(companyId);
|
|
|
|
- reportPushLog.setReportId(Integer.valueOf(String.valueOf(map.get("ReportId"))));
|
|
|
|
- reportPushLog.setTargetSystem("SAP");
|
|
|
|
- reportPushLog.setUuid(xmlResponseData.getEmployeeTime().getUUID());
|
|
|
|
- reportPushLogService.save(reportPushLog);
|
|
|
|
|
|
+ result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/manageemployeetimein?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
|
|
}
|
|
}
|
|
- sapSyncLogService.save(sapSyncLog);
|
|
|
|
- System.out.println("线程:"+Thread.currentThread().getName()+"正在操作"+map.get("ReportId"));
|
|
|
|
|
|
+ } 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:EmployeeTimeAsBundleMaintainConfirmation_sync>"));
|
|
|
|
+ result="<XMLDATA>"+result+"</XMLDATA>";
|
|
}
|
|
}
|
|
|
|
+ System.out.println(result);
|
|
|
|
+ XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
|
|
|
|
+ SapSyncLog sapSyncLog=new SapSyncLog();
|
|
|
|
+ sapSyncLog.setOperator(user.getJobNumber());
|
|
|
|
+ sapSyncLog.setCompanyId(companyId);
|
|
|
|
+ sapSyncLog.setRemark("日报数据推送");
|
|
|
|
+ sapSyncLog.setSyncType("手动推送");
|
|
|
|
+ sapSyncLog.setSyncTime(localDateTime);
|
|
|
|
+ if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime())){
|
|
|
|
+ log.error("推送失败===》员工工号:"+employeeTime.getEmployeeID());
|
|
|
|
+ sapSyncLog.setResult("员工工号["+employeeTime.getEmployeeID()+"]"+datePeriod.getStartDate()+"日报推送失败");
|
|
|
|
+ sapSyncLog.setResultRemark(xmlResponseData.getLog()!=null?xmlResponseData.getLog().getItem()!=null?xmlResponseData.getLog().getItem().getNote():"":"");
|
|
|
|
+ }else {
|
|
|
|
+ sapSyncLog.setResult("员工工号["+employeeTime.getEmployeeID()+"]"+datePeriod.getStartDate()+"日报推送成功");
|
|
|
|
+ //推送成功 日报数据打上标记
|
|
|
|
+ ReportPushLog reportPushLog=new ReportPushLog();
|
|
|
|
+ reportPushLog.setCompanyId(companyId);
|
|
|
|
+ reportPushLog.setReportId(Integer.valueOf(String.valueOf(map.get("ReportId"))));
|
|
|
|
+ reportPushLog.setTargetSystem("SAP");
|
|
|
|
+ reportPushLog.setUuid(xmlResponseData.getEmployeeTime().getUUID());
|
|
|
|
+ reportPushLogService.save(reportPushLog);
|
|
|
|
+ }
|
|
|
|
+ sapSyncLogService.save(sapSyncLog);
|
|
|
|
+ System.out.println("线程:"+Thread.currentThread().getName()+"正在操作"+map.get("ReportId"));
|
|
}
|
|
}
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+ });
|
|
httpRespMsg.setData("推送正在进行...待推送完成可查看工时日志");
|
|
httpRespMsg.setData("推送正在进行...待推送完成可查看工时日志");
|
|
executor.shutdown();
|
|
executor.shutdown();
|
|
return httpRespMsg;
|
|
return httpRespMsg;
|
|
@@ -7643,7 +7631,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
System.out.println(sb.toString());
|
|
System.out.println(sb.toString());
|
|
String result = "";
|
|
String result = "";
|
|
try {
|
|
try {
|
|
- result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/yyatr5vf6y_deleteemployeetime?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
|
|
|
|
|
|
+ if(isDev){
|
|
|
|
+ result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/yyatr5vf6y_deleteemployeetime?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
|
|
|
|
+ }else{
|
|
|
|
+ result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/yyatr5vf6y_deleteemployeetime?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
|
|
|
|
+ }
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|