浏览代码

Merge remote-tracking branch 'origin/master'

yusm 1 年之前
父节点
当前提交
90b318b7af

+ 104 - 112
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -7487,21 +7487,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         //提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
         //只推送需要推送日报参与的部分就可以了
         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()让线程池中的线程来执行业务,每次调用都会将一个线程加入到就绪队列*/
+        List<Map<String, Object>> finalResultList = resultList;
         executor.execute(new Runnable() {
             @Override
             public void run() {
@@ -7509,107 +7497,107 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 if(projectPlanSyncLogs.size()>0){
                     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 {
-                            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("推送正在进行...待推送完成可查看工时日志");
         executor.shutdown();
         return httpRespMsg;
@@ -7643,7 +7631,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     System.out.println(sb.toString());
                     String result = "";
                     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) {
                         e.printStackTrace();
                     }

+ 34 - 45
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -1701,22 +1701,15 @@ public class TimingTask {
         for (TimeType timeType : timeTypeList) {
             Integer companyId = timeType.getCompanyId();
             //提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
-            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(8)),df.format(date.minusDays(8)), null);
             //过滤服务code为空的数据
             mapList=mapList.stream().filter(r->r.get("ProjectElementID")!=null && !StringUtils.isEmpty(String.valueOf(r.get("ProjectElementID")))).collect(Collectors.toList());
             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);
-//            }
-            Map<String, List<Map<String, Object>>> listGroupEmployeeID = mapList.stream().collect(Collectors.groupingBy(r -> String.valueOf(r.get("EmployeeID"))));
-            List<String> employeeIDList = mapList.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);
+            List<Map<String, Object>> finalMapList = mapList;
             executor.execute(new Runnable() {
                 @Override
                 public void run() {
@@ -1724,43 +1717,39 @@ public class TimingTask {
                     if(projectPlanSyncLogs.size()>0){
                         sapSyncLogService.saveBatch(projectPlanSyncLogs);
                     }
-                }
-            });
-            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() {
-                        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,isDev);
-                            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 : finalMapList) {
+                        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;
                         }
+                        String result = SyncSapUtils.pushReportToSap(map, isDev);
+                        if(StringUtils.isEmpty(result)){
+                            continue;
+                        }
+                        XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
+                        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);
                     }
-                });
-            }
+                }
+            });
         }
     }
 

+ 13 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SyncSapUtils.java

@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
@@ -117,7 +118,7 @@ public class SyncSapUtils {
     }
 
     //推送工时管家填报考勤数据到SAP
-    public static XmlResponseData pushReportToSap(Map<String,Object> map,boolean isDev){
+    public static String pushReportToSap(Map<String,Object> map,boolean isDev){
         //配置xml请求参数
         XmlRequestData xmlRequestData=new XmlRequestData();
         EmployeeTime employeeTime=new EmployeeTime();
@@ -134,19 +135,24 @@ public class SyncSapUtils {
             datePeriod.setEndDate(String.valueOf(map.get("EndDate")));
         }
         if(map.get("StartTime")!=null){
-            timePeriod.setStartTime(String.valueOf(map.get("StartTime")));
+            timePeriod.setStartTime(String.valueOf(map.get("StartTime"))+":00");
         }
         if(map.get("EndTime")!=null){
-            timePeriod.setEndTime(String.valueOf(map.get("EndTime")));
+            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");
-        employeeTime.setDuration("PT"+(map.get("Duration")==null?"0":String.valueOf(map.get("Duration")))+"H");
+        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){
-            return new XmlResponseData();
+            return "";
         }
         employeeTime.setProjectElementID(String.valueOf(map.get("ProjectElementID")));
         employeeTime.setServiceProductInternalID(String.valueOf(map.get("ServiceProductInternalID")));
@@ -179,13 +185,12 @@ public class SyncSapUtils {
                 result = result.substring(result.indexOf(">")+1, result.lastIndexOf("</n0:EmployeeTimeAsBundleMaintainConfirmation_sync>"));
                 result="<XMLDATA>"+result+"</XMLDATA>";
             }
-            System.out.println(result);
-            xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
+            return result;
         } catch (Exception e) {
             e.printStackTrace();
         }
 
-        return xmlResponseData;
+        return "";
     }
 
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -1012,7 +1012,7 @@
     </select>
 
     <select id="getProjectPlanData" resultType="java.util.Map">
-        select p.project_code as ProjectID,t.sap_task_code ProjectTaskID,sps.service_code as ServiceID,u.job_number as EmployeeID,t.plan_hours as PlanWork ,
+        select p.project_code as ProjectID,t.sap_task_code ProjectTaskID,sps.service_code as ServiceID,u.job_number as EmployeeID,te.plan_hours as PlanWork ,
         t.start_date as StartDate ,t.end_date as EndDate
         from
         task_executor te

+ 3 - 15
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java

@@ -1232,7 +1232,9 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             switch (type){
                 case 0:
                     List<PlanProcedureTotal> procedureTotals = planProcedureTotalService.list(new QueryWrapper<PlanProcedureTotal>().eq("plan_id", plan.getId()));
-                    List<ProdProcedure> prodProcedureList = prodProcedureMapper.selectList(new QueryWrapper<ProdProcedure>().eq("product_id", plan.getProductId()).eq("version_number",plan.getVersionNumber()));
+                    List<Integer> procedureIds = procedureTotals.stream().map(PlanProcedureTotal::getProdProcedureId).distinct().collect(Collectors.toList());
+                    procedureIds.add(-1);
+                    List<ProdProcedure> prodProcedureList = prodProcedureMapper.selectList(new QueryWrapper<ProdProcedure>().in("id",procedureIds));
                     List<Integer> ids = procedureTotals.stream().map(PlanProcedureTotal::getId).collect(Collectors.toList());
                     ids.add(-1);
                     List<ProdProcedureTeam> procedureTeams = prodProcedureTeamService.list(new QueryWrapper<ProdProcedureTeam>().in("plan_procedure_id", ids));
@@ -1276,20 +1278,6 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                     });
                     msg.setData(procedureTotals);
                     break;
-//                case 1:
-//                    Map map=new HashMap();
-//                    List<ProdMaterial> prodMaterialList = prodMaterialMapper.selectList(new QueryWrapper<ProdMaterial>().eq("product_id", plan.getProductId()));
-//                    List<PlanMaterial> planMaterialList = planMaterialMapper.selectList(new QueryWrapper<PlanMaterial>().eq("plan_id", plan.getId()));
-//                    planMaterialList.forEach(pl->{
-//                        Optional<ProdMaterial> first = prodMaterialList.stream().filter(pt -> pt.getId().equals(pl.getProdMaterialId())).findFirst();
-//                        if(first.isPresent()){
-//                            pl.setProdMaterial(first.get());
-//                        }else pl.setProdMaterial(new ProdMaterial());
-//                    });
-//                    map.put("material",prodMaterialList);
-//                    map.put("lackMaterial",planMaterialList);
-//                    msg.setData(map);
-//                    break;
             }
         }
         return msg;