Min hace 1 año
padre
commit
90e5a3d8d7

+ 3 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -1395,8 +1395,9 @@ public class ProjectController {
     }
 
     @RequestMapping("/syncProjectWithSap")
-    public HttpRespMsg syncProjectWithSap(){
-        return projectService.syncProjectWithSap();
+    @Transactional
+    public HttpRespMsg syncProjectWithSap(String startDate,String endDate){
+        return projectService.syncProjectWithSap(startDate,endDate);
     }
 
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -261,5 +261,5 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getFunWorkContextList(Integer id);
 
-    HttpRespMsg syncProjectWithSap();
+    HttpRespMsg syncProjectWithSap(String startDate,String endDate);
 }

+ 122 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -13,6 +13,7 @@ import com.management.platform.entity.vo.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.management.platform.util.*;
+import com.management.platform.webservice.po.*;
 import com.sun.star.bridge.oleautomation.Decimal;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -11061,13 +11062,127 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg syncProjectWithSap() {
+    public HttpRespMsg syncProjectWithSap(String startDate,String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        //todo:指定公司ID
-//        if(companyId==){
-//
-//        }
-
-        return null;
+        //已有的项目分类
+        List<ProjectCategory> allProjectCategoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id", companyId));
+        XmlRequestData xmlRequestData=new XmlRequestData();
+        ProcessingConditions processingConditions=new ProcessingConditions();
+        processingConditions.setQueryHitsUnlimitedIndicator("true");
+        xmlRequestData.setProcessingConditions(processingConditions);
+        ProjectSelectionByElement projectSelectionByElement=new ProjectSelectionByElement();
+        SelectionByLastChangeDateTime selectionByLastChangeDateTime=new SelectionByLastChangeDateTime();
+        selectionByLastChangeDateTime.setInclusionExclusionCode("I");
+        selectionByLastChangeDateTime.setIntervalBoundaryTypeCode("3");
+        selectionByLastChangeDateTime.setLowerBoundaryLastChangeDateTime(startDate+"T00:00:00Z");
+        selectionByLastChangeDateTime.setUpperBoundaryLastChangeDateTime(endDate+"T00:00:00Z");
+        projectSelectionByElement.setSelectionByLastChangeDateTime(selectionByLastChangeDateTime);
+        List<ProjectSelectionByElement> list=new ArrayList<>();
+        list.add(projectSelectionByElement);
+        xmlRequestData.setProjectSelectionByElements(list);
+        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:ProjectByElementsQuery>\n");
+        sb.append(xml);
+        sb.append("      </glob:ProjectByElementsQuery>\n" +
+                "   </soapenv:Body>\n" +
+                "</soapenv:Envelope>");
+        System.out.println(sb.toString());
+        String result = null;
+        try {
+            result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/queryprojectin?sap-vhost=my602728.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:ProjectByElementsResponse_sync>"));
+            result="<XMLDATA>"+result+"</XMLDATA>";
+        }
+        System.out.println(result);
+        XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
+        List<ProjectQueryResponse> projectQueryResponses = xmlResponseData.getProjectQueryResponses();
+        if(projectQueryResponses!=null&&projectQueryResponses.size()>0){
+            List<TaskGroup> taskGroupList=new ArrayList<>();
+            for (ProjectQueryResponse item : projectQueryResponses) {
+                Project project=new Project();
+                //处理项目分类
+                String categoryName;
+                switch (item.getTypeCode()){
+                    case "10":categoryName="成本收集项目";
+                        break;
+                    case "20":categoryName="直接成本项目";
+                        break;
+                    case "21":categoryName="市场营销项目";
+                        break;
+                    case "22":categoryName="战略采购项目";
+                        break;
+                    case "23":categoryName="研发项目";
+                        break;
+                    case "25":categoryName="设备销售项目";
+                        break;
+                    case "Z01":categoryName="报价项目";
+                        break;
+                    case "Z02":categoryName="售后报价项目";
+                        break;
+                    case "Z03":categoryName="产品设备报价项目";
+                        break;
+                    case "Z04":categoryName="半成品项目(无销售)";
+                        break;
+                    case "Z05":categoryName="产成品项目(含销售)";
+                        break;
+                    case "Z06":categoryName="机器生产项目";
+                        break;
+                    case "Z07":categoryName="电气柜生产项目";
+                        break;
+                    case "Z08":categoryName="工程项目";
+                        break;
+                    case "Z09":categoryName="售后工程项目";
+                        break;
+                    default:categoryName="未知";
+                }
+                String finalCategoryName = categoryName;
+                Optional<ProjectCategory> first = allProjectCategoryList.stream().filter(at -> at.getName().equals(finalCategoryName)).findFirst();
+                if(!first.isPresent()&&!finalCategoryName.equals("未知")){
+                    ProjectCategory projectCategory=new ProjectCategory();
+                    projectCategory.setName(categoryName);
+                    projectCategory.setCompanyId(companyId);
+                    projectCategoryMapper.insert(projectCategory);
+                    project.setCategory(projectCategory.getId());
+                    project.setCategoryName(projectCategory.getName());
+                }else {
+                    project.setCategory(first.get().getId());
+                    project.setCategoryName(first.get().getName());
+                }
+                project.setProjectName(item.getProjectSummaryTask().getProjectName().getName());
+                project.setProjectCode(item.getProjectSummaryTask().getProjectElementID());
+                project.setCompanyId(companyId);
+                //处理项目数据 --->工时管家生成对应项目数据
+                save(project);
+                //处理项目下任务 ----> 工时管家生成任务分组
+                List<ProjectTask> projectTasks = item.getProjectTasks();
+                if(projectTasks!=null&&projectTasks.size()>0){
+                    projectTasks.forEach(ps->{
+                        TaskGroup taskGroup=new TaskGroup();
+                        taskGroup.setProjectId(project.getId());
+                        taskGroup.setTaskGroupCode(ps.getProjectElementID());
+                        taskGroup.setName(ps.getTaskGroupName().getName());
+                        taskGroupList.add(taskGroup);
+                    });
+                }
+            }
+            if(taskGroupList.size()>0){
+                if(!taskGroupService.saveBatch(taskGroupList)){
+                   msg.setError("任务分组同步验证失败");
+                }
+            }
+        }
+        msg.setData(xmlResponseData);
+        return msg;
     }
 }

+ 0 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -1578,6 +1578,5 @@ public class TimingTask {
         }
         System.out.println(result);
         XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
-        System.out.println(xmlResponseData);
     }
 }

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ProjectQueryResponse.java

@@ -8,7 +8,7 @@ import java.util.List;
 @Data
 public class ProjectQueryResponse {
 
-    private String projectId;
+    private String projectID;
     private ProjectStatus projectStatus;
     private String typeCode;
     private ProjectSummaryTask projectSummaryTask;
@@ -16,7 +16,7 @@ public class ProjectQueryResponse {
 
     @XmlElement(name = "ProjectID")
     public String getProjectID(){
-        return projectId;
+        return projectID;
     }
 
     @XmlElement(name = "ProjectStatus")

+ 0 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/ProjectTask.java

@@ -8,7 +8,6 @@ import javax.xml.bind.annotation.XmlElement;
 public class ProjectTask {
 
     private String projectElementID;
-    private String projectName;
     private TaskName taskGroupName;
 
     @XmlElement(name = "ProjectElementID")