Przeglądaj źródła

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Lijy 1 rok temu
rodzic
commit
b651142c8a

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -243,6 +243,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     @Value(value = "${upload.path}")
     private String path;
+    @Value("${configEnv.isDev}")
+    public boolean isDev;
     //获取项目列表
     @Override
     public HttpRespMsg getProjectList(Integer forReport, HttpServletRequest request) {
@@ -11629,11 +11631,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         //获取SAP项目服务数据 ----> 工时管家任务分组下阶段作为项目服务数据
-        XmlResponseData projectServiceData= SyncSapUtils.syncServiceData("2020-01-01", endDate, companyId);
+        XmlResponseData projectServiceData= SyncSapUtils.syncServiceData("2020-01-01", endDate, companyId,isDev);
         //已有的项目分类
         List<ProjectCategory> allProjectCategoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id", companyId));
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
-        XmlResponseData xmlResponseData = SyncSapUtils.syncProjectFromSap(startDate, endDate,projectCodes);
+        XmlResponseData xmlResponseData = SyncSapUtils.syncProjectFromSap(startDate, endDate,projectCodes,isDev);
         List<ProjectQueryResponse> projectQueryResponses = xmlResponseData.getProjectQueryResponses();
         List<Map<String,Object>> idsMapList=new ArrayList<>();
         LocalDate localDate=LocalDate.now();

+ 14 - 20
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -7488,34 +7488,24 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         workDescriptionText.setLanguageCode("ZH");
         SapPeriod datePeriod=new SapPeriod();
         SapPeriod timePeriod=new SapPeriod();
-        List<Map<String, Object>> finalResultList = resultList;
-        //创建多个个线程来处理 每个线程处理10条数据
-        int size = finalResultList.size();
-        //需要创建的线程数量 防止有小数 获取整数+1 多加一个作为预算工时推送
-        BigDecimal divide = new BigDecimal(size).divide(new BigDecimal(10));
-        int threadNum= divide.intValue() + 2;
-        ExecutorService executor = Executors.newFixedThreadPool(threadNum);
+        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);
         /*execute()让线程池中的线程来执行业务,每次调用都会将一个线程加入到就绪队列*/
         executor.execute(new Runnable() {
             @Override
             public void run() {
-                List<SapSyncLog> projectPlanSyncLogs = SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour, user.getCompanyId(), user.getJobNumber());
+                List<SapSyncLog> projectPlanSyncLogs = SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour, user.getCompanyId(), user.getJobNumber(),isDev);
                 if(projectPlanSyncLogs.size()>0){
                     sapSyncLogService.saveBatch(projectPlanSyncLogs);
                 }
             }
         });
-        for (int i = 0; i <threadNum ; i++) {
-            //目标数据进行分组
-            int start=i*10;
-            int end=(i+1)*10;
-            if(end>finalResultList.size()){
-                end=finalResultList.size();
-            }
-            if(start>finalResultList.size()){
-                start=finalResultList.size();
-            }
-            List<Map<String, Object>> mapList = finalResultList.subList(start, end);
+        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() {
@@ -7572,7 +7562,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                 "</soapenv:Envelope>");
                         String result = "";
                         try {
-                            result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/manageemployeetimein?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+                            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();
                         }

+ 12 - 20
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -1711,31 +1711,23 @@ public class TimingTask {
 //            if(projectPlanSapSyncLogs.size()>0){
 //                sapSyncLogService.saveBatch(projectPlanSapSyncLogs);
 //            }
-            List<Map<String, Object>> finalResultList = mapList;
-            //创建多个个线程来处理 每个线程处理10条数据
-            int size = finalResultList.size();
-            //需要创建的线程数量 防止有小数 获取整数+1 多加一个作为预算工时推送
-            BigDecimal divide = new BigDecimal(size).divide(new BigDecimal(10));
-            int threadNum= divide.intValue() + 2;
-            ExecutorService executor = Executors.newFixedThreadPool(threadNum);
-            /*execute()让线程池中的线程来执行业务,每次调用都会将一个线程加入到就绪队列*/
+            Map<String, List<Map<String, Object>>> listGroupEmployeeID = pushProjectPlanHour.stream().collect(Collectors.groupingBy(r -> String.valueOf(r.get("EmployeeID"))));
+            List<String> employeeIDList = pushProjectPlanHour.stream().map(r -> String.valueOf(r.get("EmployeeID"))).distinct().collect(Collectors.toList());
+            //按照人员集合长度来创建多个个线程来处理
+            int threadNum = employeeIDList.size();
+            //多加一个作为预算工时推送
+            ExecutorService executor = Executors.newFixedThreadPool(threadNum+1);
             executor.execute(new Runnable() {
                 @Override
                 public void run() {
-                    List<SapSyncLog> projectPlanSyncLogs = SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour, companyId, "");
+                    List<SapSyncLog> projectPlanSyncLogs = SyncSapUtils.pushProjectPlanToSap(pushProjectPlanHour, companyId, "",isDev);
                     if(projectPlanSyncLogs.size()>0){
                         sapSyncLogService.saveBatch(projectPlanSyncLogs);
                     }
                 }
             });
-            for (int i = 0; i <threadNum ; i++) {
-                //目标数据进行分组
-                int start=i*10;
-                int end=(i+1)*10;
-                if(end>finalResultList.size()){
-                    end=finalResultList.size();
-                }
-                List<Map<String, Object>> targetList = finalResultList.subList(start, end);
+            for (int i = 0; i <employeeIDList.size() ; i++) {
+                List<Map<String, Object>> targetList = listGroupEmployeeID.get(employeeIDList.get(i));
                 executor.execute(new Runnable() {
                     @Override
                     public void run() {
@@ -1744,7 +1736,7 @@ public class TimingTask {
                             if(one!=null){
                                 continue;
                             }
-                            XmlResponseData xmlResponseData = SyncSapUtils.pushReportToSap(map);
+                            XmlResponseData xmlResponseData = SyncSapUtils.pushReportToSap(map,isDev);
                             SapSyncLog sapSyncLog=new SapSyncLog();
                             sapSyncLog.setCompanyId(companyId);
                             sapSyncLog.setRemark("日报数据推送");
@@ -1784,11 +1776,11 @@ public class TimingTask {
         for (TimeType timeType : timeTypeList) {
             Integer companyId = timeType.getCompanyId();
             //获取SAP项目服务数据 ----> 工时管家任务分组下阶段作为项目服务数据
-            XmlResponseData projectServiceData= SyncSapUtils.syncServiceData(df.format(date.minusDays(1)), null, companyId);
+            XmlResponseData projectServiceData= SyncSapUtils.syncServiceData(df.format(date.minusDays(1)), null, companyId,isDev);
             //已有的项目分类
             List<ProjectCategory> allProjectCategoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().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)),null);
+            XmlResponseData xmlResponseData = SyncSapUtils.syncProjectFromSap(df.format(date.minusDays(1)), df.format(date.minusDays(1)),null,isDev);
             List<ProjectQueryResponse> projectQueryResponses = xmlResponseData.getProjectQueryResponses();
             List<Map<String,Object>> idsMapList=new ArrayList<>();
             LocalDate localDate=LocalDate.now();

+ 25 - 11
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SyncSapUtils.java

@@ -9,6 +9,7 @@ import com.management.platform.service.ReportService;
 import com.management.platform.service.SapSyncLogService;
 import com.management.platform.webservice.po.*;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
@@ -21,12 +22,9 @@ import java.util.stream.Collectors;
 @Slf4j
 public class SyncSapUtils {
 
-    @Resource
-    private SapSyncLogService sapSyncLogService;
-
 
     //工时管家推送项目任务计划工时数据到SAP
-    public static List<SapSyncLog> pushProjectPlanToSap(List<Map<String, Object>> mapList, Integer companyId, String operator) {
+    public static List<SapSyncLog> pushProjectPlanToSap(List<Map<String, Object>> mapList, Integer companyId, String operator,boolean isDev) {
         //根据项目分组 按照项目推送
         //获取当前数据中的所有项目编号
         List<String> projectIds = mapList.stream().map(m -> String.valueOf(m.get("ProjectID"))).distinct().collect(Collectors.toList());
@@ -85,7 +83,11 @@ public class SyncSapUtils {
                     "</soapenv:Envelope>");
             String result = "";
             try {
-                result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/yyatr5vf6y_manageprojecttaskwo?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_manageprojecttaskwo?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+                }else {
+                    result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/yyatr5vf6y_manageprojecttaskwo?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+                }
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -115,7 +117,7 @@ public class SyncSapUtils {
     }
 
     //推送工时管家填报考勤数据到SAP
-    public static XmlResponseData pushReportToSap(Map<String,Object> map){
+    public static XmlResponseData pushReportToSap(Map<String,Object> map,boolean isDev){
         //配置xml请求参数
         XmlRequestData xmlRequestData=new XmlRequestData();
         EmployeeTime employeeTime=new EmployeeTime();
@@ -167,7 +169,11 @@ public class SyncSapUtils {
         String result = "";
         XmlResponseData xmlResponseData = new XmlResponseData();
         try {
-            result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/manageemployeetimein?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+            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");
+            }
             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>"));
@@ -184,7 +190,7 @@ public class SyncSapUtils {
 
 
     //同步SAP项目数据到工时管家
-    public static XmlResponseData syncProjectFromSap(String startDate, String endDate,String projectCodes) {
+    public static XmlResponseData syncProjectFromSap(String startDate, String endDate,String projectCodes,boolean isDev) {
         //配置请求xml
         XmlRequestData xmlRequestData=new XmlRequestData();
         ProcessingConditions processingConditions=new ProcessingConditions();
@@ -234,7 +240,11 @@ public class SyncSapUtils {
                 "</soapenv:Envelope>");
         String result = "";
         try {
-            result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/queryprojectin?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+            if(isDev){
+                result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/queryprojectin?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+            }else {
+                result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/queryprojectin?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+            }
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -250,7 +260,7 @@ public class SyncSapUtils {
 
 
     //同步SAP项目服务数据到工时管家
-    public static XmlResponseData syncServiceData(String startDate, String endDate, Integer companyId) {
+    public static XmlResponseData syncServiceData(String startDate, String endDate, Integer companyId,boolean isDev) {
         //配置请求xml
         XmlRequestData xmlRequestData=new XmlRequestData();
         ProcessingConditions processingConditions=new ProcessingConditions();
@@ -272,7 +282,11 @@ public class SyncSapUtils {
                 "</soapenv:Envelope>");
         String result = "";
         try {
-            result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/queryserviceproductin?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+            if(isDev){
+                result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/queryserviceproductin?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+            }else {
+                result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/queryserviceproductin?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+            }
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/WebServiceUtils.java

@@ -47,7 +47,8 @@ public class WebServiceUtils {
             outObject.write(sendMsg.getBytes("UTF-8"));
 
             if (200 != (httpConn.getResponseCode())) {
-                throw new Exception("HTTP Request is not success, Response code is " + httpConn.getResponseCode());
+                throw new Exception("HTTP Request is not success, Response code is " + httpConn.getResponseCode()+" Response msg is "+httpConn.getResponseMessage());
+
             }
             // 获取HTTP响应数据
             isr = new InputStreamReader(