Min 1 年間 前
コミット
4d73f60656
14 ファイル変更389 行追加63 行削除
  1. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  2. 40 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/SapSyncLogController.java
  3. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  4. 78 59
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  5. 61 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SyncSapUtils.java
  6. 70 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ActualEmployeeTime.java
  7. 22 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ActualEmployeeTimeSelectionByElements.java
  8. 7 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ProcessingConditions.java
  9. 33 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/SelectionByDate.java
  10. 29 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/SelectionByEmployeeID.java
  11. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/XmlRequestData.java
  12. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/XmlResponseData.java
  13. 1 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  14. 28 0
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -2338,6 +2338,12 @@ public class ReportController {
         return reportService.pushProjectReportToSap(pushDate);
     }
 
+    //todo:查询已推送到SAP的工时管家工时考勤数据 并撤销推送
+    @RequestMapping("/getHasPushForSap")
+    public HttpRespMsg getHasPushForSap(String startDate,String endDate,String employeeID){
+        return reportService.getHasPushForSap(startDate,endDate,employeeID);
+    }
+
     //todo: 提供接口(威派格) 获取项目工时数据
     @RequestMapping("/getProjectTimeCostByThird")
     public HttpRespMsg getProjectTimeCostByThird(@RequestBody String json){

+ 40 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/SapSyncLogController.java

@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.management.platform.entity.SapSyncLog;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.SapSyncLogService;
+import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
@@ -16,6 +18,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -36,13 +39,15 @@ public class SapSyncLogController {
     private HttpServletRequest request;
     @Resource
     private UserMapper userMapper;
+    @Value("${upload.path}")
+    private String path;
 
-    @RequestMapping("list")
+    @RequestMapping("/list")
     public HttpRespMsg list(){
         //只返回最近7天的数据
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate endDate=LocalDate.now();
-        LocalDate startDate=endDate.minusDays(7);
+        LocalDate startDate=endDate.minusDays(3);
         HttpRespMsg msg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         List<SapSyncLog> list = sapSyncLogService.list(new LambdaQueryWrapper<SapSyncLog>().eq(SapSyncLog::getCompanyId, companyId).between(SapSyncLog::getSyncTime,df.format(startDate)+" 00:00:00",df.format(endDate)+" 23:59:59").orderByDesc(SapSyncLog::getSyncTime));
@@ -50,5 +55,38 @@ public class SapSyncLogController {
         return msg;
     }
 
+    @RequestMapping("/export")
+    public HttpRespMsg export(){
+        //只返回最近7天的数据
+        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        DateTimeFormatter df2=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDate endDate=LocalDate.now();
+        LocalDate startDate=endDate.minusDays(3);
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<SapSyncLog> list = sapSyncLogService.list(new LambdaQueryWrapper<SapSyncLog>().eq(SapSyncLog::getCompanyId, companyId).between(SapSyncLog::getSyncTime,df.format(startDate)+" 00:00:00",df.format(endDate)+" 23:59:59").orderByDesc(SapSyncLog::getSyncTime));
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+        titleList.add("推送时间");
+        titleList.add("推送名称");
+        titleList.add("操作人员");
+        titleList.add("推送方式");
+        titleList.add("推送结果");
+        titleList.add("备注");
+        dataList.add(titleList);
+        for (SapSyncLog sapSyncLog : list) {
+            List<String> item=new ArrayList<>();
+            item.add(df2.format(sapSyncLog.getSyncTime()));
+            item.add(sapSyncLog.getRemark());
+            item.add(sapSyncLog.getOperator()==null?"":sapSyncLog.getOperator());
+            item.add(sapSyncLog.getSyncType());
+            item.add(sapSyncLog.getResult());
+            item.add(sapSyncLog.getResultRemark()==null?"":sapSyncLog.getResultRemark());
+            dataList.add(item);
+        }
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList("推送日志", dataList, path);
+        msg.data=resp;
+        return msg;
+    }
 }
 

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -145,4 +145,6 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg exportUserWorkTimeByCategory(Integer categoryId, Integer deptId, String userId, String startDate, String endDate);
 
     HttpRespMsg cannelAllReport();
+
+    HttpRespMsg getHasPushForSap(String startDate, String endDate, String employeeID);
 }

+ 78 - 59
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -2807,7 +2807,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         }
 
         if(timeType.getSyncSap()==1){
-            cancelReportPushSap(reportIds,user);
+            List<Integer> reportIdList = ListUtil.convertIntegerIdsArrayToList(reportIds);
+            List<ReportPushLog> reportPushLogs = reportPushLogService.list(new LambdaQueryWrapper<ReportPushLog>().in(ReportPushLog::getReportId, reportIdList));
+            String uuids = reportPushLogs.stream().map(ReportPushLog::getUuid).collect(Collectors.toList()).stream().collect(Collectors.joining(","));
+            cancelReportPushSap(uuids,user);
         }
         return httpRespMsg;
     }
@@ -7685,73 +7688,73 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Override
     public HttpRespMsg cannelAllReport() {
         List<ReportPushLog> list = reportPushLogService.list();
-        List<Integer> collect = list.stream().map(ReportPushLog::getReportId).distinct().collect(Collectors.toList());
-        String s = collect.stream().map(m -> String.valueOf(m)).collect(Collectors.joining(","));
+        List<String> collect = list.stream().map(ReportPushLog::getUuid).distinct().collect(Collectors.toList());
+        String s = collect.stream().map(m -> m).collect(Collectors.joining(","));
         User user = userMapper.selectById(request.getHeader("token"));
         cancelReportPushSap(s,user);
         return null;
     }
 
-    public void  cancelReportPushSap(String reportIds, User user){
-        if(!StringUtils.isEmpty(reportIds)){
+    public void  cancelReportPushSap(String uuids, User user){
+        if(!StringUtils.isEmpty(uuids)){
             LocalDateTime localDateTime=LocalDateTime.now();
             List<SapSyncLog> sapSyncLogs=new ArrayList<>();
-            List<Integer> reportIdList = ListUtil.convertIntegerIdsArrayToList(reportIds);
-            List<ReportPushLog> reportPushLogList = reportPushLogService.list(new LambdaQueryWrapper<ReportPushLog>().in(ReportPushLog::getReportId, reportIdList));
-            for (Integer reportId : reportIdList) {
-                Optional<ReportPushLog> first = reportPushLogList.stream().filter(r -> r.getReportId().equals(reportId)).findFirst();
-                if(first.isPresent()){
-                    XmlRequestData xmlRequestData=new XmlRequestData();
-                    ZDeleteEmployeeTime zDeleteEmployeeTime=new ZDeleteEmployeeTime();
-                    zDeleteEmployeeTime.setEmployeeTimeUUID(first.get().getUuid()==null?"":first.get().getUuid());
-                    xmlRequestData.setZDeleteEmployeeTime(zDeleteEmployeeTime);
-                    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:ZDeleteEmployeeTimeCreateRequest_sync>\n");
-                    sb.append(xml);
-                    sb.append("      </glob:ZDeleteEmployeeTimeCreateRequest_sync>\n" +
-                            "   </soapenv:Body>\n" +
-                            "</soapenv:Envelope>");
-                    System.out.println(sb.toString());
-                    String result = "";
-                    try {
-                        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");
-                        }
+            List<String> uuidList = ListUtil.convertLongIdsArrayToList(uuids);
+            for (String uuid : uuidList) {
+                int count = reportPushLogService.count(new LambdaQueryWrapper<ReportPushLog>().eq(ReportPushLog::getUuid, uuid));
+                if(count>0){
+                    continue;
+                }
+                XmlRequestData xmlRequestData=new XmlRequestData();
+                ZDeleteEmployeeTime zDeleteEmployeeTime=new ZDeleteEmployeeTime();
+                zDeleteEmployeeTime.setEmployeeTimeUUID(uuid);
+                xmlRequestData.setZDeleteEmployeeTime(zDeleteEmployeeTime);
+                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:ZDeleteEmployeeTimeCreateRequest_sync>\n");
+                sb.append(xml);
+                sb.append("      </glob:ZDeleteEmployeeTimeCreateRequest_sync>\n" +
+                        "   </soapenv:Body>\n" +
+                        "</soapenv:Envelope>");
+                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();
-                    }
-                    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:ZDeleteEmployeeTimeCreateConfirmation_sync>"));
-                        result="<XMLDATA>"+result+"</XMLDATA>";
-                    }
-                    System.out.println(result);
-                    XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
-                    SapSyncLog sapSyncLog=new SapSyncLog();
-                    sapSyncLog.setCompanyId(user.getCompanyId());
-                    sapSyncLog.setRemark("日报数据取消推送");
-                    sapSyncLog.setSyncType("手动推送");
-                    sapSyncLog.setOperator(user.getJobNumber());
-                    sapSyncLog.setSyncTime(localDateTime);
-                    if(StringUtils.isEmpty(xmlResponseData.getZDeleteEmployeeTime())){
-                        log.error("推送取消考勤失败===》UUID:"+xmlRequestData.getZDeleteEmployeeTime().getEmployeeTimeUUID());
-                        sapSyncLog.setResult("推送取消考勤失败");
-                    }else {
-                        //删除推送记录
-                        sapSyncLog.setResult("推送取消考勤成功");
-                        reportPushLogService.remove(new LambdaQueryWrapper<ReportPushLog>().eq(ReportPushLog::getReportId,reportId));
-                    }
-                    sapSyncLogs.add(sapSyncLog);
+//                    }
+                } 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:ZDeleteEmployeeTimeCreateConfirmation_sync>"));
+                    result="<XMLDATA>"+result+"</XMLDATA>";
+                }
+                System.out.println(result);
+                XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
+                SapSyncLog sapSyncLog=new SapSyncLog();
+                sapSyncLog.setCompanyId(user.getCompanyId());
+                sapSyncLog.setRemark("日报数据取消推送");
+                sapSyncLog.setSyncType("手动推送");
+                sapSyncLog.setOperator(user.getJobNumber());
+                sapSyncLog.setSyncTime(localDateTime);
+                if(StringUtils.isEmpty(xmlResponseData.getZDeleteEmployeeTime())){
+                    log.error("推送取消考勤失败===》UUID:"+xmlRequestData.getZDeleteEmployeeTime().getEmployeeTimeUUID());
+                    sapSyncLog.setResult("推送取消考勤失败");
+                }else {
+                    //删除推送记录
+                    sapSyncLog.setResult("推送取消考勤成功");
+                    reportPushLogService.remove(new LambdaQueryWrapper<ReportPushLog>().eq(ReportPushLog::getUuid,uuid));
+                }
+                sapSyncLogs.add(sapSyncLog);
             }
             if(sapSyncLogs.size()>0){
                 sapSyncLogService.saveBatch(sapSyncLogs);
@@ -8394,4 +8397,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         result.add(start);
         return result;
     }
+
+    @Override
+    public HttpRespMsg getHasPushForSap(String startDate, String endDate, String employeeID) {
+        HttpRespMsg msg=new HttpRespMsg();
+        XmlResponseData hasPushForSap = SyncSapUtils.getHasPushForSap(startDate, endDate, employeeID, isDev);
+        User user = userMapper.selectById(request.getHeader("token"));
+        Integer companyId = user.getCompanyId();
+        //是否要撤销相关数据
+        List<ActualEmployeeTime> actualEmployeeTimes = hasPushForSap.getActualEmployeeTimes();
+        List<String> allUuids = actualEmployeeTimes.stream().map(ActualEmployeeTime::getUUID).distinct().collect(Collectors.toList());
+        List<String> needUuidList=new ArrayList<>();
+        String uuids = allUuids.stream().map(n -> n).collect(Collectors.joining(","));
+        cancelReportPushSap(uuids,user);
+        msg.setData(actualEmployeeTimes);
+        return msg;
+    }
 }

+ 61 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SyncSapUtils.java

@@ -267,6 +267,67 @@ public class SyncSapUtils {
     }
 
 
+    //同步SAP项目数据到工时管家
+    public static XmlResponseData getHasPushForSap(String startDate, String endDate,String employeeID,boolean isDev) {
+        //配置请求xml
+        XmlRequestData xmlRequestData=new XmlRequestData();
+        ProcessingConditions processingConditions=new ProcessingConditions();
+        processingConditions.setQueryHitsUnlimitedIndicator("true");
+        xmlRequestData.setProcessingConditions(processingConditions);
+        ActualEmployeeTimeSelectionByElements actualEmployeeTimeSelectionByElements=new ActualEmployeeTimeSelectionByElements();
+        if(!StringUtils.isEmpty(startDate)&&!StringUtils.isEmpty(endDate)){
+            SelectionByDate selectionByDate=new SelectionByDate();
+            selectionByDate.setInclusionExclusionCode("I");
+            selectionByDate.setIntervalBoundaryTypeCode("3");
+            selectionByDate.setLowerBoundaryDate(startDate);
+            selectionByDate.setUpperBoundaryDate(endDate);
+            actualEmployeeTimeSelectionByElements.setSelectionByDate(selectionByDate);
+        }
+        if (!StringUtils.isEmpty(employeeID)){
+            SelectionByEmployeeID selectionByEmployeeID=new SelectionByEmployeeID();
+            selectionByEmployeeID.setInclusionExclusionCode("I");
+            selectionByEmployeeID.setIntervalBoundaryTypeCode("1");
+            selectionByEmployeeID.setLowerBoundaryEmployeeID(employeeID);
+            actualEmployeeTimeSelectionByElements.setSelectionByEmployeeID(selectionByEmployeeID);
+        }
+        if(StringUtils.isEmpty(startDate)&&StringUtils.isEmpty(endDate)&&StringUtils.isEmpty(employeeID)){
+            return new XmlResponseData();
+        }
+        xmlRequestData.setActualEmployeeTimeSelectionByElements(actualEmployeeTimeSelectionByElements);
+        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:ActualEmployeeTimeByElementsQuery_sync>\n");
+        sb.append(xml);
+        sb.append("      </glob:ActualEmployeeTimeByElementsQuery_sync>\n" +
+                "   </soapenv:Body>\n" +
+                "</soapenv:Envelope>");
+        System.out.println(sb.toString());
+        String result = "";
+        try {
+            result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/queryemployeetimein?sap-vhost=my601432.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+//            if(isDev){
+//                result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/queryemployeetimein?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+//            }else {
+//                result = WebServiceUtils.requestByXml("https://my601432.sapbyd.cn/sap/bc/srt/scs/sap/queryemployeetimein?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:ActualEmployeeTimeByElementsResponse_sync>"));
+            result="<XMLDATA>"+result+"</XMLDATA>";
+        }
+        System.out.println(result);
+        XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
+        return xmlResponseData;
+    }
+
+
     //同步SAP项目服务数据到工时管家
     public static XmlResponseData syncServiceData(String startDate, String endDate, Integer companyId,boolean isDev) {
         //配置请求xml

+ 70 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ActualEmployeeTime.java

@@ -0,0 +1,70 @@
+package com.management.platform.webservice.po;
+
+import lombok.Data;
+
+import javax.xml.bind.annotation.XmlElement;
+
+@Data
+public class ActualEmployeeTime {
+
+    private String changeStateID;
+    private String UUID;
+    private String workAgreementID;
+    private String itemTypeCode;
+    private SapPeriod datePeriod;
+    private String duration;
+    private String lifeCycleStatusCode;
+    private String approvalStatusCode;
+    private String projectElementID;
+    private String serviceProductInternalID;
+
+    @XmlElement(name = "ChangeStateID")
+    public String getChangeStateID(){
+        return changeStateID;
+    }
+
+    @XmlElement(name = "UUID")
+    public String getUUID(){
+        return UUID;
+    }
+
+    @XmlElement(name = "WorkAgreementID")
+    public String getWorkAgreementID(){
+        return workAgreementID;
+    }
+
+    @XmlElement(name = "ItemTypeCode")
+    public String getItemTypeCode(){
+        return itemTypeCode;
+    }
+
+    @XmlElement(name = "DatePeriod")
+    public SapPeriod getDatePeriod(){
+        return datePeriod;
+    }
+
+    @XmlElement(name = "Duration")
+    public String getDuration() {
+        return duration;
+    }
+
+    @XmlElement(name = "LifeCycleStatusCode")
+    public String getLifeCycleStatusCode(){
+        return lifeCycleStatusCode;
+    }
+
+    @XmlElement(name = "ApprovalStatusCode")
+    public String getApprovalStatusCode(){
+        return approvalStatusCode;
+    }
+
+    @XmlElement(name = "ProjectElementID")
+    public String getProjectElementID(){
+        return projectElementID;
+    }
+
+    @XmlElement(name = "ServiceProductInternalID")
+    public String getServiceProductInternalID(){
+        return serviceProductInternalID;
+    }
+}

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ActualEmployeeTimeSelectionByElements.java

@@ -0,0 +1,22 @@
+package com.management.platform.webservice.po;
+
+import lombok.Data;
+
+import javax.xml.bind.annotation.XmlElement;
+
+@Data
+public class ActualEmployeeTimeSelectionByElements {
+    private SelectionByEmployeeID selectionByEmployeeID;
+    private SelectionByDate selectionByDate;
+
+    @XmlElement(name = "SelectionByEmployeeID")
+    public SelectionByEmployeeID getSelectionByEmployeeID() {
+        return selectionByEmployeeID;
+    }
+
+
+    @XmlElement(name = "SelectionByDate")
+    public SelectionByDate getSelectionByDate() {
+        return selectionByDate;
+    }
+}

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ProcessingConditions.java

@@ -10,6 +10,7 @@ public class ProcessingConditions {
     private String queryHitsUnlimitedIndicator;
     private String returnedQueryHitsNumberValue;
     private String queryHitsMaximumNumberValue;
+    private String moreHitsAvailableIndicator;
 
     @XmlElement(name = "QueryHitsUnlimitedIndicator")
     public String getQueryHitsUnlimitedIndicator() {
@@ -27,4 +28,10 @@ public class ProcessingConditions {
         return returnedQueryHitsNumberValue;
     }
 
+    //返回的项目条数
+    @XmlElement(name = "MoreHitsAvailableIndicator")
+    public String getMoreHitsAvailableIndicator() {
+        return moreHitsAvailableIndicator;
+    }
+
 }

+ 33 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/SelectionByDate.java

@@ -0,0 +1,33 @@
+package com.management.platform.webservice.po;
+
+import lombok.Data;
+
+import javax.xml.bind.annotation.XmlElement;
+
+@Data
+public class SelectionByDate {
+    private String inclusionExclusionCode;
+    private String intervalBoundaryTypeCode;
+    private String lowerBoundaryDate;
+    private String upperBoundaryDate;
+
+    @XmlElement(name = "InclusionExclusionCode")
+    public String getInclusionExclusionCode() {
+        return inclusionExclusionCode;
+    }
+
+    @XmlElement(name = "IntervalBoundaryTypeCode")
+    public String getIntervalBoundaryTypeCode() {
+        return intervalBoundaryTypeCode;
+    }
+
+    @XmlElement(name = "LowerBoundaryDate")
+    public String getLowerBoundaryDate() {
+        return lowerBoundaryDate;
+    }
+
+    @XmlElement(name = "UpperBoundaryDate")
+    public String getUpperBoundaryDate() {
+        return upperBoundaryDate;
+    }
+}

+ 29 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/SelectionByEmployeeID.java

@@ -0,0 +1,29 @@
+package com.management.platform.webservice.po;
+
+import lombok.Data;
+
+import javax.xml.bind.annotation.XmlElement;
+
+@Data
+public class SelectionByEmployeeID {
+
+    private String inclusionExclusionCode;
+    private String intervalBoundaryTypeCode;
+    private String lowerBoundaryEmployeeID;
+
+    @XmlElement(name = "InclusionExclusionCode")
+    public String getInclusionExclusionCode() {
+        return inclusionExclusionCode;
+    }
+
+    @XmlElement(name = "IntervalBoundaryTypeCode")
+    public String getIntervalBoundaryTypeCode() {
+        return intervalBoundaryTypeCode;
+    }
+
+    @XmlElement(name = "LowerBoundaryEmployeeID")
+    public String getLowerBoundaryEmployeeID() {
+        return lowerBoundaryEmployeeID;
+    }
+
+}

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/XmlRequestData.java

@@ -21,6 +21,7 @@ public class XmlRequestData {
 	private EmployeeTime employeeTime;
 	private String basicMessageHeader;
 	private ZDeleteEmployeeTime zDeleteEmployeeTime;
+	private ActualEmployeeTimeSelectionByElements actualEmployeeTimeSelectionByElements;
 
 	@XmlElement(name = "ProcessingConditions")
 	public ProcessingConditions getProcessingConditions() {
@@ -57,4 +58,9 @@ public class XmlRequestData {
 		return zDeleteEmployeeTime;
 	}
 
+	@XmlElement(name = "ActualEmployeeTimeSelectionByElements")
+	public ActualEmployeeTimeSelectionByElements getActualEmployeeTimeSelectionByElements() {
+		return actualEmployeeTimeSelectionByElements;
+	}
+
 }

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/XmlResponseData.java

@@ -25,6 +25,7 @@ public class XmlResponseData{
 
 	private EmployeeTime employeeTime;
 	private ZDeleteEmployeeTime zDeleteEmployeeTime;
+	private List<ActualEmployeeTime> actualEmployeeTimes;
 
 	
 	@XmlElement(name = "ServiceProduct")
@@ -62,4 +63,9 @@ public class XmlResponseData{
 		return zDeleteEmployeeTime;
 	}
 
+	@XmlElement(name = "ActualEmployeeTime")
+	public List<ActualEmployeeTime> getActualEmployeeTimes() {
+		return actualEmployeeTimes;
+	}
+
 }

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

@@ -552,8 +552,7 @@
             or (a.is_dept_audit = 1 and a.audit_dept_managerid = #{auditorId}))
         </if>
         <if test="auditUserId != null and auditUserId !=''">
-            AND ((a.is_dept_audit = 0 and a.project_auditor_id = #{auditUserId} and a.project_audit_state = 0)
-            or (a.is_dept_audit = 1 and a.audit_dept_managerid = #{auditUserId}))
+            AND FIND_IN_SET(auditUserId,a.executor_id)
         </if>
         <if test="isEngeering == 1">
             AND a.department_audit_state = 1

+ 28 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -345,6 +345,9 @@
 
         <!-- 工时推送日志弹窗 -->
         <el-dialog title="工时推送日志" :visible.sync="pushWorkTimeLogDig"  width="70%" :before-close="handleClose">
+              <template>
+                <el-button type="primary" size="small" style="float: right" @click="exportPushLog">导出</el-button>
+              </template>  
               <template>
                 <el-table :data="pushWorkTimeLogData" style="width: 100%" height="500" >
                     <el-table-column prop="syncTime" label="推送时间" width="150"></el-table-column>
@@ -4746,6 +4749,31 @@
                     this.fillList = this.getUserMembListFromDeptList(list, 1)
                 } 
             },
+                  exportPushLog(){
+        this.http.post('/sap-sync-log/export',{},
+            res => {
+                if (res.code == "ok") {
+                    var filePath = res.data;
+                    var fName = '推送日志.xlsx'
+                    const a = document.createElement('a'); // 创建a标签
+                    a.setAttribute('download', fName);// download属性
+                    a.setAttribute('href', filePath);// href链接
+                    a.click(); //自执行点击事件
+                    a.remove();
+                } else {
+                    this.$message({
+                    message: res.msg,
+                    type: "error"
+                    });
+                }
+            },
+            error => {
+                this.$message({
+                    message: error,
+                    type: "error"
+                });
+            });
+      },
             theValues(id, item) {
                 for(var i in item) {
                     if(item[i].id == id) {