|
@@ -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;
|
|
|
}
|
|
|
}
|