|
@@ -1707,21 +1707,28 @@ public class TimingTask {
|
|
|
List<Integer> projectIds = mapList.stream().map(r -> Integer.valueOf(String.valueOf(r.get("ProjectId")))).distinct().collect(Collectors.toList());
|
|
|
projectIds.add(-1);
|
|
|
List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,projectIds,null,null);
|
|
|
- List<SapSyncLog> projectPlanSapSyncLogs = SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour, companyId, "");
|
|
|
- if(projectPlanSapSyncLogs.size()>0){
|
|
|
- sapSyncLogService.saveBatch(projectPlanSapSyncLogs);
|
|
|
- }
|
|
|
+// List<SapSyncLog> projectPlanSapSyncLogs = SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour, companyId, "");
|
|
|
+// if(projectPlanSapSyncLogs.size()>0){
|
|
|
+// sapSyncLogService.saveBatch(projectPlanSapSyncLogs);
|
|
|
+// }
|
|
|
List<Map<String, Object>> finalResultList = mapList;
|
|
|
//创建多个个线程来处理 每个线程处理10条数据
|
|
|
int size = finalResultList.size();
|
|
|
- //需要创建的线程数量 防止有小数 获取整数+1
|
|
|
+ //需要创建的线程数量 防止有小数 获取整数+1 多加一个作为预算工时推送
|
|
|
BigDecimal divide = new BigDecimal(size).divide(new BigDecimal(10));
|
|
|
- int thredNum = divide.intValue() + 1;
|
|
|
- ExecutorService executor = Executors.newFixedThreadPool(10);
|
|
|
- //创建锁对象
|
|
|
- Object o = new Object();
|
|
|
+ int threadNum= divide.intValue() + 2;
|
|
|
+ ExecutorService executor = Executors.newFixedThreadPool(threadNum);
|
|
|
/*execute()让线程池中的线程来执行业务,每次调用都会将一个线程加入到就绪队列*/
|
|
|
- for (int i = 0; i <thredNum ; i++) {
|
|
|
+ executor.execute(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ List<SapSyncLog> projectPlanSyncLogs = SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour, companyId, "");
|
|
|
+ if(projectPlanSyncLogs.size()>0){
|
|
|
+ sapSyncLogService.saveBatch(projectPlanSyncLogs);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ for (int i = 0; i <threadNum ; i++) {
|
|
|
//目标数据进行分组
|
|
|
int start=i*10;
|
|
|
int end=(i+1)*10;
|
|
@@ -1732,36 +1739,32 @@ public class TimingTask {
|
|
|
executor.execute(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- synchronized (o) {//同步代码块解决的是重卖的问题
|
|
|
- /*本方法的参数就是你要执行的业务,也就是目标业务类对象*/
|
|
|
- //3.定义成员变量,保存票数
|
|
|
- for (Map<String, Object> map : targetList) {
|
|
|
- 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;
|
|
|
- }
|
|
|
- XmlResponseData xmlResponseData = SyncSapUtils.pushReportToSap(map);
|
|
|
- SapSyncLog sapSyncLog=new SapSyncLog();
|
|
|
- sapSyncLog.setCompanyId(companyId);
|
|
|
- sapSyncLog.setRemark("日报数据推送");
|
|
|
- sapSyncLog.setSyncType("定时任务推送");
|
|
|
- sapSyncLog.setSyncTime(localDateTime);
|
|
|
- if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime())){
|
|
|
- log.error("推送失败===》工号:"+map.get("EmployeeID"));
|
|
|
- sapSyncLog.setResult("员工工号["+map.get("EmployeeID")+"]"+map.get("StartDate")+"日报推送失败");
|
|
|
- sapSyncLog.setResultRemark(xmlResponseData.getLog()!=null?xmlResponseData.getLog().getItem()!=null?xmlResponseData.getLog().getItem().getNote():"":"");
|
|
|
- }else {
|
|
|
- sapSyncLog.setResult("员工工号["+map.get("EmployeeID")+"]"+map.get("StartDate")+"日报推送成功");
|
|
|
- //推送成功 日报数据打上标记
|
|
|
- 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);
|
|
|
+ for (Map<String, Object> map : targetList) {
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ XmlResponseData xmlResponseData = SyncSapUtils.pushReportToSap(map);
|
|
|
+ SapSyncLog sapSyncLog=new SapSyncLog();
|
|
|
+ sapSyncLog.setCompanyId(companyId);
|
|
|
+ sapSyncLog.setRemark("日报数据推送");
|
|
|
+ sapSyncLog.setSyncType("定时任务推送");
|
|
|
+ sapSyncLog.setSyncTime(localDateTime);
|
|
|
+ if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime())){
|
|
|
+ log.error("推送失败===》工号:"+map.get("EmployeeID"));
|
|
|
+ sapSyncLog.setResult("员工工号["+map.get("EmployeeID")+"]"+map.get("StartDate")+"日报推送失败");
|
|
|
+ sapSyncLog.setResultRemark(xmlResponseData.getLog()!=null?xmlResponseData.getLog().getItem()!=null?xmlResponseData.getLog().getItem().getNote():"":"");
|
|
|
+ }else {
|
|
|
+ sapSyncLog.setResult("员工工号["+map.get("EmployeeID")+"]"+map.get("StartDate")+"日报推送成功");
|
|
|
+ //推送成功 日报数据打上标记
|
|
|
+ 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);
|
|
|
}
|
|
|
}
|
|
|
});
|