commit b8ff8ccdff58f29574945f122c4f96f822ed4005 Author: cyh Date: Fri Jan 26 16:03:53 2024 +0800 demo_kBOM异步接口地址调整 diff --git a/demo_k/.gitignore b/demo_k/.gitignore new file mode 100644 index 0000000..82eca33 --- /dev/null +++ b/demo_k/.gitignore @@ -0,0 +1,25 @@ +/target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ \ No newline at end of file diff --git a/demo_k/.idea.7z b/demo_k/.idea.7z new file mode 100644 index 0000000..4c4d8b5 Binary files /dev/null and b/demo_k/.idea.7z differ diff --git a/demo_k/.idea.zip b/demo_k/.idea.zip new file mode 100644 index 0000000..e56c136 Binary files /dev/null and b/demo_k/.idea.zip differ diff --git a/demo_k/.mvn/wrapper/maven-wrapper.jar b/demo_k/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..9cc84ea Binary files /dev/null and b/demo_k/.mvn/wrapper/maven-wrapper.jar differ diff --git a/demo_k/.mvn/wrapper/maven-wrapper.properties b/demo_k/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..b573bb5 --- /dev/null +++ b/demo_k/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.3/apache-maven-3.5.3-bin.zip diff --git a/demo_k/logs/rest_service.log b/demo_k/logs/rest_service.log new file mode 100644 index 0000000..42ac5e2 --- /dev/null +++ b/demo_k/logs/rest_service.log @@ -0,0 +1,58 @@ +2023-06-13 14:36:09,530 ERROR KExceptionHandler:26 - 异常请求URL:http://localhost:8082/plm/getDesign +2023-06-13 14:36:09,537 ERROR KExceptionHandler:30 - BAD_REQUEST_BODY: +2023-06-13 14:36:09,538 ERROR KExceptionHandler:39 - 发生异常: +org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported + at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:200) + at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:419) + at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:365) + at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:65) + at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:401) + at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1232) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1015) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:665) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at com.connor.web.util.RequestWrapperFilter.doFilterInternal(RequestWrapperFilter.java:17) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) + at java.lang.Thread.run(Thread.java:748) diff --git a/demo_k/logs/rest_service.log.2019-12-18 b/demo_k/logs/rest_service.log.2019-12-18 new file mode 100644 index 0000000..5981056 --- /dev/null +++ b/demo_k/logs/rest_service.log.2019-12-18 @@ -0,0 +1,67 @@ +2019-12-18 10:45:55,300 WARN DriverDataSource:68 - Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation. +2019-12-18 10:45:56,582 WARN MyRestController:85 - maaterials:[MaterialBean{Code=157, GoodsCode='2100021998', GoodsName='线圈测试', PmpcCode='230101001', UnitCode='ST', CompanyCode='M005', BpNo='1ZDB510000X-2600', Spec='线圈1 1ZDB510000X-2600', TeRe='', State='D3', PUID='null'}] +2019-12-18 10:46:12,815 WARN MyRestController:85 - 第0个:MaterialBean{Code=157, GoodsCode='2100021998', GoodsName='线圈测试', PmpcCode='230101001', UnitCode='ST', CompanyCode='M005', BpNo='1ZDB510000X-2600', Spec='线圈1 1ZDB510000X-2600', TeRe='', State='D3', PUID='null'} +2019-12-18 10:46:13,657 WARN MyRestController:85 - item_id[M005-2100021998]查找到的对象个数:1 +2019-12-18 10:46:13,659 WARN MyRestController:85 - ERROR:ID[M005-2100021998]在系统中已存在,更新系统对象及数据库! +2019-12-18 10:46:13,659 WARN MyRestController:85 - Code1:157 +2019-12-18 10:46:14,718 WARN MyRestController:85 - 查询结果:157 +2019-12-18 10:46:16,379 WARN MyRestController:85 - 原ID:[M005-2100021998]新ID:[M005-2100021998] +2019-12-18 10:46:17,198 WARN MyRestController:85 - 更新 +2019-12-18 10:46:17,198 WARN MyRestController:85 - 开始更新数据库Code:157 +2019-12-18 10:46:17,221 WARN MyRestController:85 - 数据库更新结束 +2019-12-18 10:46:17,795 WARN MyRestController:85 - 图纸ID:[1ZDB510000X-2600] +2019-12-18 10:46:17,796 WARN MyRestController:85 - 开始添加关系 +2019-12-18 10:46:17,813 WARN TCUtil:85 - 开始创建关系: {0}TC_Is_Represented_By +2019-12-18 10:46:17,939 WARN TCUtil:85 - 关系已存在,取消创建 +2019-12-18 10:46:17,940 WARN MyRestController:85 - 添加关系结束 +2019-12-18 10:46:17,942 WARN MyRestController:85 - 开始发布流程 +2019-12-18 10:46:18,911 WARN TCUtil:85 - 物料发布成功 +2019-12-18 10:46:18,912 WARN MyRestController:85 - 流程发布结束 +2019-12-18 10:47:19,476 WARN MyRestController:85 - maaterials:[MaterialBean{Code=0, GoodsCode='2100012181047', GoodsName='线圈测试', PmpcCode='230101001', UnitCode='ST', CompanyCode='M005', BpNo='1ZDB510000X-2600', Spec='线圈1 1ZDB510000X-2600', TeRe='', State='D3', PUID='null'}] +2019-12-18 10:47:20,864 WARN MyRestController:85 - 第0个:MaterialBean{Code=0, GoodsCode='2100012181047', GoodsName='线圈测试', PmpcCode='230101001', UnitCode='ST', CompanyCode='M005', BpNo='1ZDB510000X-2600', Spec='线圈1 1ZDB510000X-2600', TeRe='', State='D3', PUID='null'} +2019-12-18 10:47:20,988 WARN MyRestController:85 - item_id[M005-2100012181047]查找到的对象个数:0 +2019-12-18 10:47:20,999 WARN MyRestController:85 - 开始新增数据Code:195 +2019-12-18 10:47:21,018 WARN MyRestController:85 - 创建 +2019-12-18 10:47:21,113 WARN TCUtil:85 - item_id[M005-2100012181047]查找到的对象个数:0 +2019-12-18 10:47:23,110 WARN MyRestController:85 - 开始更新数据库Code:195 +2019-12-18 10:47:23,117 WARN MyRestController:85 - 数据库更新结束 +2019-12-18 10:47:23,236 WARN MyRestController:85 - 图纸ID:[1ZDB510000X-2600] +2019-12-18 10:47:23,237 WARN MyRestController:85 - 开始添加关系 +2019-12-18 10:47:23,251 WARN TCUtil:85 - 开始创建关系: {0}TC_Is_Represented_By +2019-12-18 10:47:23,460 WARN TCUtil:85 - 创建关系完成 +2019-12-18 10:47:23,460 WARN MyRestController:85 - 添加关系结束 +2019-12-18 10:47:23,461 WARN MyRestController:85 - 开始发布流程 +2019-12-18 10:47:24,242 WARN TCUtil:85 - 物料发布成功 +2019-12-18 10:47:24,243 WARN MyRestController:85 - 流程发布结束 +2019-12-18 10:48:23,039 WARN MyRestController:85 - maaterials:[MaterialBean{Code=0, GoodsCode='2100012181047', GoodsName='线圈测试', PmpcCode='230101001', UnitCode='ST', CompanyCode='M005', BpNo='1ZDB510000X-2600', Spec='线圈1 1ZDB510000X-2600', TeRe='', State='D4', PUID='null'}] +2019-12-18 10:48:24,098 WARN MyRestController:85 - 第0个:MaterialBean{Code=0, GoodsCode='2100012181047', GoodsName='线圈测试', PmpcCode='230101001', UnitCode='ST', CompanyCode='M005', BpNo='1ZDB510000X-2600', Spec='线圈1 1ZDB510000X-2600', TeRe='', State='D4', PUID='null'} +2019-12-18 10:48:24,269 WARN MyRestController:85 - item_id[M005-2100012181047]查找到的对象个数:1 +2019-12-18 10:48:24,269 WARN MyRestController:85 - ERROR:ID[M005-2100012181047]在系统中已存在,更新系统对象及数据库! +2019-12-18 10:48:24,322 WARN MyRestController:85 - 原ID:[M005-2100012181047]新ID:[M005-2100012181047] +2019-12-18 10:48:24,471 WARN MyRestController:85 - 更新 +2019-12-18 10:48:24,471 WARN MyRestController:85 - 开始更新数据库Code:195 +2019-12-18 10:48:24,476 WARN MyRestController:85 - 数据库更新结束 +2019-12-18 10:48:24,603 WARN MyRestController:85 - 图纸ID:[1ZDB510000X-2600] +2019-12-18 10:48:24,604 WARN MyRestController:85 - 开始添加关系 +2019-12-18 10:48:24,623 WARN TCUtil:85 - 开始创建关系: {0}TC_Is_Represented_By +2019-12-18 10:48:24,678 WARN TCUtil:85 - 关系已存在,取消创建 +2019-12-18 10:48:24,678 WARN MyRestController:85 - 添加关系结束 +2019-12-18 10:48:24,679 WARN MyRestController:85 - 开始发布流程 +2019-12-18 10:48:25,347 WARN TCUtil:85 - 物料发布成功 +2019-12-18 10:48:25,348 WARN MyRestController:85 - 流程发布结束 +2019-12-18 10:48:54,147 WARN MyRestController:85 - maaterials:[MaterialBean{Code=0, GoodsCode='2100012181047', GoodsName='线圈测试2', PmpcCode='2301010012', UnitCode='ST', CompanyCode='M008', BpNo='1ZDB510000X-2600', Spec='线圈1 1ZDB510000X-2600', TeRe='', State='D4', PUID='null'}] +2019-12-18 10:48:55,084 WARN MyRestController:85 - 第0个:MaterialBean{Code=0, GoodsCode='2100012181047', GoodsName='线圈测试2', PmpcCode='2301010012', UnitCode='ST', CompanyCode='M008', BpNo='1ZDB510000X-2600', Spec='线圈1 1ZDB510000X-2600', TeRe='', State='D4', PUID='null'} +2019-12-18 10:48:55,249 WARN MyRestController:85 - item_id[M008-2100012181047]查找到的对象个数:0 +2019-12-18 10:48:55,253 WARN MyRestController:85 - 开始新增数据Code:196 +2019-12-18 10:48:55,257 WARN MyRestController:85 - 创建 +2019-12-18 10:48:55,350 WARN TCUtil:85 - item_id[M008-2100012181047]查找到的对象个数:0 +2019-12-18 10:48:56,141 WARN MyRestController:85 - 开始更新数据库Code:196 +2019-12-18 10:48:56,145 WARN MyRestController:85 - 数据库更新结束 +2019-12-18 10:48:56,294 WARN MyRestController:85 - 图纸ID:[1ZDB510000X-2600] +2019-12-18 10:48:56,295 WARN MyRestController:85 - 开始添加关系 +2019-12-18 10:48:56,311 WARN TCUtil:85 - 开始创建关系: {0}TC_Is_Represented_By +2019-12-18 10:48:56,427 WARN TCUtil:85 - 创建关系完成 +2019-12-18 10:48:56,427 WARN MyRestController:85 - 添加关系结束 +2019-12-18 10:48:56,428 WARN MyRestController:85 - 开始发布流程 +2019-12-18 10:48:57,111 WARN TCUtil:85 - 物料发布成功 +2019-12-18 10:48:57,111 WARN MyRestController:85 - 流程发布结束 diff --git a/demo_k/logs/rest_service.log.2019-12-20 b/demo_k/logs/rest_service.log.2019-12-20 new file mode 100644 index 0000000..0e96732 --- /dev/null +++ b/demo_k/logs/rest_service.log.2019-12-20 @@ -0,0 +1,164 @@ +2019-12-20 09:32:58,233 WARN MyRestController:87 - 包装清单个数:0 +2019-12-20 10:28:33,077 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 10:28:39,257 WARN MyRestController:87 - 开始查找对象 +2019-12-20 10:28:39,258 WARN MyRestController:87 - 找到对象 +2019-12-20 10:28:40,853 WARN MyRestController:87 - 开始获取引用 +2019-12-20 10:37:27,417 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 10:37:34,812 WARN MyRestController:87 - 开始查找对象 +2019-12-20 10:37:34,813 WARN MyRestController:87 - 找到对象 +2019-12-20 10:37:36,236 WARN MyRestController:87 - 开始获取引用 +2019-12-20 10:37:36,682 WARN MyRestController:87 - cnt:1 +2019-12-20 10:37:36,725 WARN MyRestController:87 - 包装清单个数:0 +2019-12-20 10:40:14,313 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 10:40:24,129 WARN MyRestController:87 - 开始查找对象 +2019-12-20 10:40:24,130 WARN MyRestController:87 - 找到对象 +2019-12-20 10:40:25,806 WARN MyRestController:87 - 开始获取引用 +2019-12-20 10:40:26,810 WARN MyRestController:87 - cnt:1 +2019-12-20 10:40:26,991 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 10:40:27,053 WARN MyRestController:87 - 包装清单个数:0 +2019-12-20 10:43:47,207 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 10:43:54,472 WARN MyRestController:87 - 开始查找对象 +2019-12-20 10:43:54,473 WARN MyRestController:87 - 找到对象 +2019-12-20 10:43:55,916 WARN MyRestController:87 - 开始获取引用 +2019-12-20 10:43:56,346 WARN MyRestController:87 - cnt:1 +2019-12-20 10:43:56,371 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 10:47:19,591 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 10:47:26,136 WARN MyRestController:87 - 开始查找对象 +2019-12-20 10:47:26,136 WARN MyRestController:87 - 找到对象 +2019-12-20 10:47:27,322 WARN MyRestController:87 - 开始获取引用 +2019-12-20 10:47:27,663 WARN MyRestController:87 - cnt:1 +2019-12-20 10:47:27,937 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 10:47:27,938 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 10:47:28,352 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 10:47:28,353 WARN TCUtil:87 - 引用个数:1 +2019-12-20 10:57:08,638 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 10:57:16,233 WARN MyRestController:87 - 开始查找对象 +2019-12-20 10:57:16,233 WARN MyRestController:87 - 找到对象 +2019-12-20 10:57:17,803 WARN MyRestController:87 - 开始获取引用 +2019-12-20 10:57:18,211 WARN MyRestController:87 - cnt:1 +2019-12-20 10:57:18,500 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 10:57:18,500 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 10:57:18,858 WARN MyRestController:87 - 文件夹目录:C:\Users\lyf\AppData\Local\Temp\028662\6f937f91-22d4-11ea-a371-005056c00008 +2019-12-20 10:57:18,962 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 10:57:18,963 WARN TCUtil:87 - 引用个数:1 +2019-12-20 10:57:18,963 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028662\6f937f91-22d4-11ea-a371-005056c00008 +2019-12-20 11:01:51,875 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 11:01:53,697 WARN MyRestController:87 - 开始查找对象 +2019-12-20 11:01:53,698 WARN MyRestController:87 - 找到对象 +2019-12-20 11:01:53,734 WARN MyRestController:87 - 开始获取引用 +2019-12-20 11:01:53,868 WARN MyRestController:87 - cnt:1 +2019-12-20 11:01:53,956 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 11:01:53,957 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 11:01:54,010 WARN MyRestController:87 - 文件夹目录:C:\Users\lyf\AppData\Local\Temp\028662\139483a2-22d5-11ea-a371-005056c00008 +2019-12-20 11:01:54,084 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 11:01:54,085 WARN TCUtil:87 - 引用个数:1 +2019-12-20 11:01:54,086 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028662\139483a2-22d5-11ea-a371-005056c00008 +2019-12-20 11:04:54,535 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 11:05:02,190 WARN MyRestController:87 - 开始查找对象 +2019-12-20 11:05:02,191 WARN MyRestController:87 - 找到对象 +2019-12-20 11:05:03,720 WARN MyRestController:87 - 开始获取引用 +2019-12-20 11:05:04,206 WARN MyRestController:87 - cnt:1 +2019-12-20 11:05:04,513 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 11:05:04,514 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 11:05:04,843 WARN MyRestController:87 - 文件夹目录:C:\Users\lyf\AppData\Local\Temp\028662\85532aa1-22d5-11ea-8878-005056c00008 +2019-12-20 11:05:04,931 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 11:05:04,932 WARN TCUtil:87 - 引用个数:1 +2019-12-20 11:05:04,932 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028662\85532aa1-22d5-11ea-8878-005056c00008 +2019-12-20 11:05:04,932 WARN TCUtil:87 - 存在 +2019-12-20 13:04:14,598 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 13:04:21,768 WARN MyRestController:87 - 开始查找对象 +2019-12-20 13:04:21,768 WARN MyRestController:87 - 找到对象 +2019-12-20 13:04:23,037 WARN MyRestController:87 - 开始获取引用 +2019-12-20 13:04:23,444 WARN MyRestController:87 - cnt:1 +2019-12-20 13:04:23,860 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 13:04:23,861 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 13:04:24,293 WARN MyRestController:87 - 文件夹目录:C:\Users\lyf\AppData\Local\Temp\028662\30b0b151-22e6-11ea-a572-005056c00008 +2019-12-20 13:04:24,428 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 13:04:24,429 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:04:24,429 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028662\30b0b151-22e6-11ea-a572-005056c00008 +2019-12-20 13:04:24,490 WARN TCUtil:87 - 不存在 +2019-12-20 13:09:59,261 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 13:10:06,086 WARN MyRestController:87 - 开始查找对象 +2019-12-20 13:10:06,086 WARN MyRestController:87 - 找到对象 +2019-12-20 13:10:07,460 WARN MyRestController:87 - 开始获取引用 +2019-12-20 13:10:07,881 WARN MyRestController:87 - cnt:1 +2019-12-20 13:10:08,196 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 13:10:08,197 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 13:10:08,518 WARN MyRestController:87 - 文件夹目录:C:\Users\lyf\AppData\Local\Temp\028662\fddd4261-22e6-11ea-a4b8-005056c00008 +2019-12-20 13:10:08,662 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 13:10:08,663 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:10:08,663 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028662\fddd4261-22e6-11ea-a4b8-005056c00008 +2019-12-20 13:10:08,664 WARN TCUtil:87 - 创建文件夹 +2019-12-20 13:13:23,400 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 13:13:29,727 WARN MyRestController:87 - 开始查找对象 +2019-12-20 13:13:29,728 WARN MyRestController:87 - 找到对象 +2019-12-20 13:13:30,995 WARN MyRestController:87 - 开始获取引用 +2019-12-20 13:13:31,313 WARN MyRestController:87 - cnt:1 +2019-12-20 13:13:31,586 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 13:13:31,586 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 13:13:31,894 WARN MyRestController:87 - 文件夹目录:C:\Users\lyf\AppData\Local\Temp\028662\7715f961-22e7-11ea-83b2-005056c00008 +2019-12-20 13:13:31,984 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 13:13:31,985 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:13:31,985 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028662\7715f961-22e7-11ea-83b2-005056c00008 +2019-12-20 13:13:31,986 WARN TCUtil:87 - 创建文件夹 +2019-12-20 13:15:20,790 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 13:15:27,222 WARN MyRestController:87 - 开始查找对象 +2019-12-20 13:15:27,222 WARN MyRestController:87 - 找到对象 +2019-12-20 13:15:28,510 WARN MyRestController:87 - 开始获取引用 +2019-12-20 13:15:28,831 WARN MyRestController:87 - cnt:1 +2019-12-20 13:15:29,141 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 13:15:29,143 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 13:15:29,480 WARN MyRestController:87 - 文件夹目录:C:\Users\lyf\AppData\Local\Temp\028662\bd2c2c81-22e7-11ea-abd1-005056c00008 +2019-12-20 13:15:29,588 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 13:15:29,589 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:15:29,589 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028662\bd2c2c81-22e7-11ea-abd1-005056c00008 +2019-12-20 13:15:29,590 WARN TCUtil:87 - 创建文件夹 +2019-12-20 13:15:29,592 WARN TCUtil:87 - flag:false +2019-12-20 13:19:31,360 WARN MyRestController:87 - factoryNo:028662 +2019-12-20 13:19:38,248 WARN MyRestController:87 - 开始查找对象 +2019-12-20 13:19:38,248 WARN MyRestController:87 - 找到对象 +2019-12-20 13:19:39,554 WARN MyRestController:87 - 开始获取引用 +2019-12-20 13:19:40,000 WARN MyRestController:87 - cnt:1 +2019-12-20 13:19:40,262 WARN MyRestController:87 - 找到引用对象<028660/A;1-包装清单测试> 类型:ZT2_PackListRevision 关系:ZT2_FactoryNumber +2019-12-20 13:19:40,263 WARN MyRestController:87 - 开始查找数据集 +2019-12-20 13:19:40,579 WARN MyRestController:87 - 文件夹目录:C:\Users\lyf\AppData\Local\Temp\028662\52d6b021-22e8-11ea-a07a-005056c00008 +2019-12-20 13:19:40,666 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 13:19:40,667 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:19:40,667 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028662\52d6b021-22e8-11ea-a07a-005056c00008 +2019-12-20 13:19:40,667 WARN TCUtil:87 - 创建文件夹 +2019-12-20 13:19:40,669 WARN TCUtil:87 - flag:false +2019-12-20 13:22:04,747 WARN TCUtil:87 - 下载数据集文件:NX12_TC11_Vis_GEOLUS_ugslmd_DEMO.txt +2019-12-20 13:22:04,748 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:22:04,749 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028729\a8bbf9f2-22e8-11ea-a07a-005056c00008 +2019-12-20 13:22:04,752 WARN TCUtil:87 - 创建文件夹 +2019-12-20 13:22:04,755 WARN TCUtil:87 - flag:false +2019-12-20 13:22:47,096 WARN TCUtil:87 - 下载数据集文件:工艺资源模板.xlsx +2019-12-20 13:22:47,097 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:22:47,097 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028729\c1fcd1f3-22e8-11ea-a07a-005056c00008 +2019-12-20 13:22:47,098 WARN TCUtil:87 - 创建文件夹 +2019-12-20 13:22:47,100 WARN TCUtil:87 - flag:false +2019-12-20 13:35:05,812 WARN MyRestController:87 - factoryNo:004580 +2019-12-20 13:35:06,842 WARN MyRestController:87 - 开始查找对象 +2019-12-20 13:35:06,843 WARN MyRestController:87 - 找到对象 +2019-12-20 13:35:06,889 WARN MyRestController:87 - 开始获取引用 +2019-12-20 13:35:06,953 WARN MyRestController:87 - cnt:1 +2019-12-20 13:35:07,029 WARN MyRestController:87 - 包装清单个数:1 +2019-12-20 13:35:07,029 WARN MyRestController:87 - type:ZT2_PackListRevision +2019-12-20 13:35:07,124 WARN TCUtil:87 - 下载数据集文件:包装清单.xlsx +2019-12-20 13:35:07,124 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:35:07,125 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\004580\7b13d394-22ea-11ea-a07a-005056c00008 +2019-12-20 13:35:07,125 WARN TCUtil:87 - 创建文件夹 +2019-12-20 13:35:07,127 WARN TCUtil:87 - flag:false +2019-12-20 13:35:40,349 WARN MyRestController:87 - factoryNo:028729 +2019-12-20 13:35:40,519 WARN MyRestController:87 - 开始查找对象 +2019-12-20 13:35:40,520 WARN MyRestController:87 - 找到对象 +2019-12-20 13:35:40,540 WARN MyRestController:87 - 开始获取引用 +2019-12-20 13:35:40,599 WARN MyRestController:87 - cnt:1 +2019-12-20 13:35:40,613 WARN MyRestController:87 - 找到引用对象<李超君测试文件夹> 类型:Folder 关系: +2019-12-20 13:35:40,704 WARN MyRestController:87 - 包装清单个数:1 +2019-12-20 13:35:40,705 WARN MyRestController:87 - type:ZT2_PackListRevision +2019-12-20 13:35:40,785 WARN TCUtil:87 - 下载数据集文件:工艺资源模板.xlsx +2019-12-20 13:35:40,786 WARN TCUtil:87 - 引用个数:1 +2019-12-20 13:35:40,786 WARN TCUtil:87 - cacheDir:C:\Users\lyf\AppData\Local\Temp\028729\8f266055-22ea-11ea-a07a-005056c00008 +2019-12-20 13:35:40,787 WARN TCUtil:87 - 创建文件夹 +2019-12-20 13:35:40,788 WARN TCUtil:87 - flag:false diff --git a/demo_k/logs/rest_service.log.2019-12-24 b/demo_k/logs/rest_service.log.2019-12-24 new file mode 100644 index 0000000..0beaf3d --- /dev/null +++ b/demo_k/logs/rest_service.log.2019-12-24 @@ -0,0 +1,23 @@ +2019-12-24 22:14:21,693 WARN MyRestController:89 - maaterials:[MaterialBean{Code=0, GoodsCode='2000009426', GoodsName='干式变压器', PmpcCode='100101001', UnitCode='TAI', CompanyCode='M008', BpNo='', Spec='干式变压器 SG-30', TeRe=' ', State='', PUID='null'}, MaterialBean{Code=0, GoodsCode='2000013292', GoodsName='控制变压器', PmpcCode='100101001', UnitCode='TAI', CompanyCode='M008', BpNo='', Spec='控制变压器 BK-1000', TeRe=' ', State='', PUID='null'}] +2019-12-24 22:14:23,014 WARN MyRestController:89 - 第0个:MaterialBean{Code=0, GoodsCode='2000009426', GoodsName='干式变压器', PmpcCode='100101001', UnitCode='TAI', CompanyCode='M008', BpNo='', Spec='干式变压器 SG-30', TeRe=' ', State='', PUID='null'} +2019-12-24 22:14:23,117 WARN MyRestController:89 - item_id[M008-2000009426]查找到的对象个数:1 +2019-12-24 22:14:23,118 WARN MyRestController:89 - ERROR:ID[M008-2000009426]在系统中已存在,更新系统对象及数据库! +2019-12-24 22:14:23,170 WARN MyRestController:89 - 原ID:[M008-2000009426]新ID:[M008-2000009426] +2019-12-24 22:14:23,320 WARN MyRestController:89 - 更新 +2019-12-24 22:14:23,321 WARN MyRestController:89 - 开始更新数据库Code:198 +2019-12-24 22:14:23,325 WARN MyRestController:89 - 数据库更新结束 +2019-12-24 22:14:23,325 WARN MyRestController:89 - 开始发布流程 +2019-12-24 22:14:23,996 WARN TCUtil:89 - 物料发布成功 +2019-12-24 22:14:23,997 WARN MyRestController:89 - 流程发布结束 +2019-12-24 22:14:23,997 WARN MyRestController:89 - 第1个:MaterialBean{Code=0, GoodsCode='2000013292', GoodsName='控制变压器', PmpcCode='100101001', UnitCode='TAI', CompanyCode='M008', BpNo='', Spec='控制变压器 BK-1000', TeRe=' ', State='', PUID='null'} +2019-12-24 22:14:24,140 WARN MyRestController:89 - item_id[M008-2000013292]查找到的对象个数:1 +2019-12-24 22:14:24,141 WARN MyRestController:89 - ERROR:ID[M008-2000013292]在系统中已存在,更新系统对象及数据库! +2019-12-24 22:14:24,181 WARN MyRestController:89 - 原ID:[M008-2000013292]新ID:[M008-2000013292] +2019-12-24 22:14:24,332 WARN MyRestController:89 - 更新 +2019-12-24 22:14:24,333 WARN MyRestController:89 - 开始更新数据库Code:199 +2019-12-24 22:14:24,339 WARN MyRestController:89 - 数据库更新结束 +2019-12-24 22:14:24,339 WARN MyRestController:89 - 开始发布流程 +2019-12-24 22:14:24,886 WARN TCUtil:89 - 物料发布成功 +2019-12-24 22:14:24,887 WARN MyRestController:89 - 流程发布结束 +2019-12-24 22:14:24,899 WARN MyRestController:89 - 物料同步耗时:3.206秒 +2019-12-24 22:14:24,900 WARN MyRestController:89 - 返回数据:[{"GoodsCode":"2000009426","State":"1","Info":"物料同步成功"},{"GoodsCode":"2000013292","State":"1","Info":"物料同步成功"}] diff --git a/demo_k/logs/rest_service.log.2019-12-25 b/demo_k/logs/rest_service.log.2019-12-25 new file mode 100644 index 0000000..729930f --- /dev/null +++ b/demo_k/logs/rest_service.log.2019-12-25 @@ -0,0 +1,2 @@ +2019-12-25 02:15:49,434 WARN HikariPool:766 - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=3h30s618ms264µs326ns). +2019-12-25 08:14:36,913 WARN HikariPool:766 - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=5h59m15s220ms656µs931ns). diff --git a/demo_k/logs/rest_service.log.2020-01-07 b/demo_k/logs/rest_service.log.2020-01-07 new file mode 100644 index 0000000..ac8c4f7 --- /dev/null +++ b/demo_k/logs/rest_service.log.2020-01-07 @@ -0,0 +1,196 @@ +2020-01-07 16:34:28,509 WARN DriverDataSource:68 - Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation. +2020-01-07 16:34:50,722 ERROR HikariPool:574 - HikariPool-1 - Exception during pool initialization. +java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743) + at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) + at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) + at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) + at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) + at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) + at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) + at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) + at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) + at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) + at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:262) + at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378) + at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:475) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) + at com.connor.web.controller.MyRestController$$EnhancerBySpringCGLIB$$cd9b4bf9.getProject() + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:645) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) + at java.lang.Thread.run(Thread.java:748) +Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) + at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506) + at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595) + at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230) + at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452) + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496) + ... 72 more +Caused by: java.net.ConnectException: Connection timed out: connect + at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) + at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) + at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) + at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) + at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) + at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) + at java.net.Socket.connect(Socket.java:589) + at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:161) + at oracle.net.nt.ConnOption.connect(ConnOption.java:159) + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428) + ... 77 more +2020-01-07 16:34:50,747 ERROR KExceptionHandler:22 - 发生异常: +org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:305) + at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378) + at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:475) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) + at com.connor.web.controller.MyRestController$$EnhancerBySpringCGLIB$$cd9b4bf9.getProject() + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:645) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) + at java.lang.Thread.run(Thread.java:748) +Caused by: java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743) + at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) + at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) + at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) + at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) + at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) + at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) + at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) + at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) + at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) + at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:262) + ... 61 more +Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) + at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506) + at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595) + at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230) + at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452) + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496) + ... 72 more +Caused by: java.net.ConnectException: Connection timed out: connect + at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) + at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) + at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) + at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) + at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) + at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) + at java.net.Socket.connect(Socket.java:589) + at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:161) + at oracle.net.nt.ConnOption.connect(ConnOption.java:159) + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428) + ... 77 more diff --git a/demo_k/logs/rest_service.log.2020-01-12 b/demo_k/logs/rest_service.log.2020-01-12 new file mode 100644 index 0000000..c0055e6 --- /dev/null +++ b/demo_k/logs/rest_service.log.2020-01-12 @@ -0,0 +1,196 @@ +2020-01-12 16:54:18,967 WARN DriverDataSource:68 - Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation. +2020-01-12 16:54:41,276 ERROR HikariPool:574 - HikariPool-1 - Exception during pool initialization. +java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743) + at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) + at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) + at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) + at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) + at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) + at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) + at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) + at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) + at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) + at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:262) + at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378) + at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:475) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) + at com.connor.web.controller.MyRestController$$EnhancerBySpringCGLIB$$9cfed885.getMaterial_Part3() + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:665) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) + at java.lang.Thread.run(Thread.java:748) +Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) + at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506) + at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595) + at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230) + at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452) + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496) + ... 72 more +Caused by: java.net.ConnectException: Connection timed out: connect + at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) + at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) + at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) + at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) + at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) + at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) + at java.net.Socket.connect(Socket.java:589) + at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:161) + at oracle.net.nt.ConnOption.connect(ConnOption.java:159) + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428) + ... 77 more +2020-01-12 16:54:41,288 ERROR KExceptionHandler:22 - 发生异常: +org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:305) + at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378) + at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:475) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) + at com.connor.web.controller.MyRestController$$EnhancerBySpringCGLIB$$9cfed885.getMaterial_Part3() + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:665) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) + at java.lang.Thread.run(Thread.java:748) +Caused by: java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743) + at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) + at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) + at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) + at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) + at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) + at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) + at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) + at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) + at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) + at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:262) + ... 61 more +Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) + at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506) + at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595) + at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230) + at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452) + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496) + ... 72 more +Caused by: java.net.ConnectException: Connection timed out: connect + at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) + at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) + at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) + at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) + at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) + at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) + at java.net.Socket.connect(Socket.java:589) + at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:161) + at oracle.net.nt.ConnOption.connect(ConnOption.java:159) + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428) + ... 77 more diff --git a/demo_k/logs/rest_service.log.2023-02-10 b/demo_k/logs/rest_service.log.2023-02-10 new file mode 100644 index 0000000..6049110 --- /dev/null +++ b/demo_k/logs/rest_service.log.2023-02-10 @@ -0,0 +1,215 @@ +2023-02-10 16:22:41,645 WARN DriverDataSource:68 - Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation. +2023-02-10 16:23:03,724 ERROR HikariPool:574 - HikariPool-1 - Exception during pool initialization. +java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743) + at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) + at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) + at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) + at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) + at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) + at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) + at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) + at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) + at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) + at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:262) + at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378) + at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:475) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) + at com.connor.web.controller.MyRestController$$EnhancerBySpringCGLIB$$42dcfaf9.getMaterial_Part() + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:665) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at com.connor.web.util.RequestWrapperFilter.doFilterInternal(RequestWrapperFilter.java:17) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) + at java.lang.Thread.run(Thread.java:748) +Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) + at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506) + at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595) + at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230) + at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452) + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496) + ... 76 more +Caused by: java.net.ConnectException: Connection timed out: connect + at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) + at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) + at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) + at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) + at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) + at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) + at java.net.Socket.connect(Socket.java:606) + at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:161) + at oracle.net.nt.ConnOption.connect(ConnOption.java:159) + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428) + ... 81 more +2023-02-10 16:23:03,733 ERROR KExceptionHandler:26 - 异常请求URL:http://localhost:8082/plm/getPart +2023-02-10 16:23:03,737 ERROR KExceptionHandler:30 - BAD_REQUEST_BODY: [{"Code":"761893", +"GoodsCode":"2100239479", +"GoodsName":"密封圈", +"PmpcCode":"220103001", +"UnitCode":"ST", +"CompanyCode":"M005", +"BpNo":"2ZDB33101W", +"Spec":"密封圈 2ZDB33101W 12/690", +"TeRe":"", +"State":"NULL"}] +2023-02-10 16:23:03,737 ERROR KExceptionHandler:39 - 发生异常: +org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:305) + at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378) + at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:475) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) + at com.connor.web.controller.MyRestController$$EnhancerBySpringCGLIB$$42dcfaf9.getMaterial_Part() + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:665) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) + at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at com.connor.web.util.RequestWrapperFilter.doFilterInternal(RequestWrapperFilter.java:17) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) + at java.lang.Thread.run(Thread.java:748) +Caused by: java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743) + at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) + at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) + at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) + at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) + at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) + at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) + at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) + at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) + at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) + at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) + at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:262) + ... 65 more +Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) + at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506) + at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595) + at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230) + at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452) + at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496) + ... 76 more +Caused by: java.net.ConnectException: Connection timed out: connect + at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) + at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) + at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) + at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) + at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) + at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) + at java.net.Socket.connect(Socket.java:606) + at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:161) + at oracle.net.nt.ConnOption.connect(ConnOption.java:159) + at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428) + ... 81 more diff --git a/demo_k/mvnw b/demo_k/mvnw new file mode 100644 index 0000000..5bf251c --- /dev/null +++ b/demo_k/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/demo_k/mvnw.cmd b/demo_k/mvnw.cmd new file mode 100644 index 0000000..019bd74 --- /dev/null +++ b/demo_k/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/demo_k/out/artifacts/demo_k_jar/HikariCP-3.2.0.jar b/demo_k/out/artifacts/demo_k_jar/HikariCP-3.2.0.jar new file mode 100644 index 0000000..a030a7f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/HikariCP-3.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/MANIFEST.MF b/demo_k/out/artifacts/demo_k_jar/MANIFEST.MF new file mode 100644 index 0000000..fe24b48 --- /dev/null +++ b/demo_k/out/artifacts/demo_k_jar/MANIFEST.MF @@ -0,0 +1,52 @@ +Manifest-Version: 1.0 +Main-Class: com.DemoKApplication +Class-Path: stax2-api-3.1.4.jar spring-jdbc-5.1.9.RELEASE.jar cxf-rt-bin + dings-soap-3.1.6.jar commons-lang3-3.4.jar spring-context-5.1.9.RELEASE + .jar woodstox-core-asl-4.4.1.jar cxf-rt-bindings-xml-3.1.6.jar spring-b + oot-autoconfigure-2.1.8.RELEASE.jar wsdl4j-1.6.3.jar cxf-rt-transports- + http-3.1.6.jar cxf-rt-ws-addr-3.1.6.jar xml-resolver-1.2.jar spring-boo + t-starter-thymeleaf-2.1.8.RELEASE.jar commons-net-1.4.1.jar xercesImpl- + 2.11.0.jar slf4j-log4j12-1.7.21.jar jackson-datatype-jdk8-2.9.9.jar spr + ing-webmvc-5.1.9.RELEASE.jar slf4j-api-1.7.21.jar spring-beans-5.1.9.RE + LEASE.jar tomcat-annotations-api-9.0.24.jar spring-expression-5.1.9.REL + EASE.jar xml-apis-1.4.01.jar xmlschema-core-2.2.1.jar jackson-module-pa + rameter-names-2.9.9.jar oro-2.0.8.jar mybatis-spring-boot-starter-1.1.1 + .jar commons-logging-1.2.jar cxf-rt-wsdl-3.1.6.jar spring-boot-starter- + 2.1.8.RELEASE.jar log4j-1.2.17.jar HikariCP-3.2.0.jar classmate-1.4.0.j + ar jackson-annotations-2.9.0.jar spring-boot-configuration-processor-2. + 1.8.RELEASE.jar jaxb-core-2.2.11.jar mybatis-spring-boot-autoconfigure- + 1.1.1.jar jacorb-3.9.jar snakeyaml-1.23.jar spring-core-5.1.9.RELEASE.j + ar spring-jcl-5.1.9.RELEASE.jar spring-boot-starter-jdbc-2.1.8.RELEASE. + jar spring-boot-2.1.8.RELEASE.jar tomcat-embed-el-9.0.24.jar thymeleaf- + spring5-3.0.11.RELEASE.jar mybatis-3.4.0.jar jaxb-impl-2.2.11.jar mybat + is-spring-1.3.0.jar cxf-rt-databinding-jaxb-3.1.6.jar thymeleaf-extras- + java8time-3.0.4.RELEASE.jar neethi-3.0.3.jar ojdbc7.jar fccclient.jar f + scclient.jar log4j-api-2.7.jar log4j-core-2.7.jar tcgatewaystubs.jar tc + tp_11000.2.0.jar tcmemjavabinding.jar tcserverjavabinding.jar xmlrpc-cl + ient-3.1.3.jar xmlrpc-common-3.1.3.jar xmlrpc-server-3.1.3.jar TcSoaCli + ent_11000.2.0.jar TcSoaCommon_11000.2.0.jar teamcenter_sso_applib.jar t + eamcenter_sso_common.jar ws-commons-util-1.0.2.jar TcSoaCoreLoose_11000 + .2.0.jar TcSoaCoreTypes_11000.2.0.jar TcSoaCoreStrong_11000.2.0.jar TcS + oaQueryLoose_11000.2.0.jar TcSoaQueryTypes_11000.2.0.jar teamcenter_sso + _ldapcustom.jar teamcenter_sso_webtoolkit.jar S8SoaBypassLoose_11000.2. + 0.jar S8SoaBypassTypes_11000.2.0.jar TcSoaQueryStrong_11000.2.0.jar TcS + oaStrongModel_11000.2.0.jar S8SoaBypassStrong_11000.2.0.jar commons-htt + pclient-contrib-3.1.jar S8SoaCustServerLoose_11000.2.0.jar S8SoaCustSer + verTypes_11000.2.0.jar S8SoaCustServerStrong_11000.2.0.jar TcSoaAdminis + trationLoose_11000.2.0.jar TcSoaAdministrationTypes_11000.2.0.jar TcSoa + AdministrationStrong_11000.2.0.jar jacorb-omgapi-3.9.jar jstl-1.2.jar s + pring-aop-5.1.9.RELEASE.jar cxf-rt-frontend-jaxws-3.1.6.jar spring-tx-5 + .1.9.RELEASE.jar asm-5.0.4.jar cxf-rt-frontend-simple-3.1.6.jar attopar + ser-2.0.5.RELEASE.jar jackson-datatype-jsr310-2.9.9.jar tomcat-embed-co + re-9.0.24.jar spring-boot-devtools-2.1.8.RELEASE.jar commons-codec-1.11 + .jar thymeleaf-3.0.11.RELEASE.jar tomcat-embed-websocket-9.0.24.jar cxf + -core-3.1.6.jar spring-boot-starter-tomcat-2.1.8.RELEASE.jar javax.anno + tation-api-1.3.2.jar jboss-logging-3.3.3.Final.jar validation-api-2.0.1 + .Final.jar spring-boot-starter-json-2.1.8.RELEASE.jar commons-httpclien + t-3.1.jar jackson-databind-2.9.9.3.jar hibernate-validator-6.0.17.Final + .jar spring-web-5.1.9.RELEASE.jar unbescape-1.1.6.RELEASE.jar jackson-c + ore-2.9.9.jar cxf-rt-ws-policy-3.1.6.jar spring-boot-starter-web-2.1.8. + RELEASE.jar TcSoaClassificationStrong_11000.2.0.jar TcSoaClassification + Types_11000.2.0.jar fastjson2-2.0.15.jar okhttp-2.7.4.jar okio-1.13.0.j + ar + diff --git a/demo_k/out/artifacts/demo_k_jar/S8SoaBypassLoose_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/S8SoaBypassLoose_11000.2.0.jar new file mode 100644 index 0000000..52766b4 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/S8SoaBypassLoose_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/S8SoaBypassStrong_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/S8SoaBypassStrong_11000.2.0.jar new file mode 100644 index 0000000..16f8087 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/S8SoaBypassStrong_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/S8SoaBypassTypes_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/S8SoaBypassTypes_11000.2.0.jar new file mode 100644 index 0000000..aa5d1c1 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/S8SoaBypassTypes_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerLoose_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerLoose_11000.2.0.jar new file mode 100644 index 0000000..9a3d816 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerLoose_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerStrong_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerStrong_11000.2.0.jar new file mode 100644 index 0000000..70cb356 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerStrong_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerTypes_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerTypes_11000.2.0.jar new file mode 100644 index 0000000..682409e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/S8SoaCustServerTypes_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationLoose_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationLoose_11000.2.0.jar new file mode 100644 index 0000000..797925f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationLoose_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationStrong_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationStrong_11000.2.0.jar new file mode 100644 index 0000000..4d38c1e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationStrong_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationTypes_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationTypes_11000.2.0.jar new file mode 100644 index 0000000..151f553 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaAdministrationTypes_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaCadStrong_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaCadStrong_11000.2.0.jar new file mode 100644 index 0000000..7ef69de Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaCadStrong_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationStrong_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationStrong_11000.2.0.jar new file mode 100644 index 0000000..18435d1 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationStrong_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationStrong_13000.1.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationStrong_13000.1.0.jar new file mode 100644 index 0000000..ff9d2b1 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationStrong_13000.1.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationTypes_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationTypes_11000.2.0.jar new file mode 100644 index 0000000..fd77662 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaClassificationTypes_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaClient_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaClient_11000.2.0.jar new file mode 100644 index 0000000..0989c41 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaClient_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaCommon_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaCommon_11000.2.0.jar new file mode 100644 index 0000000..40f7fa2 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaCommon_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaCoreLoose_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaCoreLoose_11000.2.0.jar new file mode 100644 index 0000000..03f0ebf Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaCoreLoose_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaCoreStrong_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaCoreStrong_11000.2.0.jar new file mode 100644 index 0000000..66ea68c Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaCoreStrong_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaCoreTypes_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaCoreTypes_11000.2.0.jar new file mode 100644 index 0000000..1cbb447 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaCoreTypes_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaQueryLoose_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaQueryLoose_11000.2.0.jar new file mode 100644 index 0000000..a0a0d80 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaQueryLoose_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaQueryStrong_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaQueryStrong_11000.2.0.jar new file mode 100644 index 0000000..5910758 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaQueryStrong_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaQueryTypes_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaQueryTypes_11000.2.0.jar new file mode 100644 index 0000000..17314c4 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaQueryTypes_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaStrongModel_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaStrongModel_11000.2.0.jar new file mode 100644 index 0000000..a61ae85 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaStrongModel_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/TcSoaWorkflowStrong_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/TcSoaWorkflowStrong_11000.2.0.jar new file mode 100644 index 0000000..b47df42 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/TcSoaWorkflowStrong_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/asm-5.0.4.jar b/demo_k/out/artifacts/demo_k_jar/asm-5.0.4.jar new file mode 100644 index 0000000..cdb283d Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/asm-5.0.4.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/attoparser-2.0.5.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/attoparser-2.0.5.RELEASE.jar new file mode 100644 index 0000000..acf5ac7 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/attoparser-2.0.5.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/classmate-1.4.0.jar b/demo_k/out/artifacts/demo_k_jar/classmate-1.4.0.jar new file mode 100644 index 0000000..e53587e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/classmate-1.4.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/commons-codec-1.11.jar b/demo_k/out/artifacts/demo_k_jar/commons-codec-1.11.jar new file mode 100644 index 0000000..2245120 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/commons-codec-1.11.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/commons-httpclient-3.1.jar b/demo_k/out/artifacts/demo_k_jar/commons-httpclient-3.1.jar new file mode 100644 index 0000000..7c59774 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/commons-httpclient-3.1.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/commons-httpclient-contrib-3.1.jar b/demo_k/out/artifacts/demo_k_jar/commons-httpclient-contrib-3.1.jar new file mode 100644 index 0000000..af5c5de Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/commons-httpclient-contrib-3.1.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/commons-lang3-3.4.jar b/demo_k/out/artifacts/demo_k_jar/commons-lang3-3.4.jar new file mode 100644 index 0000000..8ec91d4 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/commons-lang3-3.4.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/commons-logging-1.2.jar b/demo_k/out/artifacts/demo_k_jar/commons-logging-1.2.jar new file mode 100644 index 0000000..93a3b9f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/commons-logging-1.2.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/commons-net-1.4.1.jar b/demo_k/out/artifacts/demo_k_jar/commons-net-1.4.1.jar new file mode 100644 index 0000000..9666a92 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/commons-net-1.4.1.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-core-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-core-3.1.6.jar new file mode 100644 index 0000000..f9935b8 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-core-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-bindings-soap-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-bindings-soap-3.1.6.jar new file mode 100644 index 0000000..5e2afb9 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-bindings-soap-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-bindings-xml-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-bindings-xml-3.1.6.jar new file mode 100644 index 0000000..f3556c1 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-bindings-xml-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-databinding-jaxb-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-databinding-jaxb-3.1.6.jar new file mode 100644 index 0000000..b1ea5b2 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-databinding-jaxb-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-frontend-jaxws-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-frontend-jaxws-3.1.6.jar new file mode 100644 index 0000000..cec7463 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-frontend-jaxws-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-frontend-simple-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-frontend-simple-3.1.6.jar new file mode 100644 index 0000000..fd5f73e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-frontend-simple-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-transports-http-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-transports-http-3.1.6.jar new file mode 100644 index 0000000..c1a92f3 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-transports-http-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-ws-addr-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-ws-addr-3.1.6.jar new file mode 100644 index 0000000..4061b25 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-ws-addr-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-ws-policy-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-ws-policy-3.1.6.jar new file mode 100644 index 0000000..6ae2750 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-ws-policy-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/cxf-rt-wsdl-3.1.6.jar b/demo_k/out/artifacts/demo_k_jar/cxf-rt-wsdl-3.1.6.jar new file mode 100644 index 0000000..c9e4617 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/cxf-rt-wsdl-3.1.6.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/demo_k.jar b/demo_k/out/artifacts/demo_k_jar/demo_k.jar new file mode 100644 index 0000000..43873a5 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/demo_k.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/fastjson2-2.0.15.jar b/demo_k/out/artifacts/demo_k_jar/fastjson2-2.0.15.jar new file mode 100644 index 0000000..88997b5 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/fastjson2-2.0.15.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/fccclient.jar b/demo_k/out/artifacts/demo_k_jar/fccclient.jar new file mode 100644 index 0000000..b30b1b3 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/fccclient.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/fscclient.jar b/demo_k/out/artifacts/demo_k_jar/fscclient.jar new file mode 100644 index 0000000..85959d4 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/fscclient.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/hibernate-validator-6.0.17.Final.jar b/demo_k/out/artifacts/demo_k_jar/hibernate-validator-6.0.17.Final.jar new file mode 100644 index 0000000..25376af Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/hibernate-validator-6.0.17.Final.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jackson-annotations-2.9.0.jar b/demo_k/out/artifacts/demo_k_jar/jackson-annotations-2.9.0.jar new file mode 100644 index 0000000..c602d75 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jackson-annotations-2.9.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jackson-core-2.9.9.jar b/demo_k/out/artifacts/demo_k_jar/jackson-core-2.9.9.jar new file mode 100644 index 0000000..02bd446 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jackson-core-2.9.9.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jackson-databind-2.9.9.3.jar b/demo_k/out/artifacts/demo_k_jar/jackson-databind-2.9.9.3.jar new file mode 100644 index 0000000..5bf4ba8 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jackson-databind-2.9.9.3.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jackson-datatype-jdk8-2.9.9.jar b/demo_k/out/artifacts/demo_k_jar/jackson-datatype-jdk8-2.9.9.jar new file mode 100644 index 0000000..43c87a6 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jackson-datatype-jdk8-2.9.9.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jackson-datatype-jsr310-2.9.9.jar b/demo_k/out/artifacts/demo_k_jar/jackson-datatype-jsr310-2.9.9.jar new file mode 100644 index 0000000..911c7b2 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jackson-datatype-jsr310-2.9.9.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jackson-module-parameter-names-2.9.9.jar b/demo_k/out/artifacts/demo_k_jar/jackson-module-parameter-names-2.9.9.jar new file mode 100644 index 0000000..df19c2f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jackson-module-parameter-names-2.9.9.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jacorb-3.9.jar b/demo_k/out/artifacts/demo_k_jar/jacorb-3.9.jar new file mode 100644 index 0000000..fef290f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jacorb-3.9.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jacorb-omgapi-3.9.jar b/demo_k/out/artifacts/demo_k_jar/jacorb-omgapi-3.9.jar new file mode 100644 index 0000000..f017974 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jacorb-omgapi-3.9.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/javax.annotation-api-1.3.2.jar b/demo_k/out/artifacts/demo_k_jar/javax.annotation-api-1.3.2.jar new file mode 100644 index 0000000..a8a470a Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/javax.annotation-api-1.3.2.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jaxb-core-2.2.11.jar b/demo_k/out/artifacts/demo_k_jar/jaxb-core-2.2.11.jar new file mode 100644 index 0000000..f3c8412 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jaxb-core-2.2.11.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jaxb-impl-2.2.11.jar b/demo_k/out/artifacts/demo_k_jar/jaxb-impl-2.2.11.jar new file mode 100644 index 0000000..a5c5b23 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jaxb-impl-2.2.11.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jboss-logging-3.3.3.Final.jar b/demo_k/out/artifacts/demo_k_jar/jboss-logging-3.3.3.Final.jar new file mode 100644 index 0000000..91db418 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jboss-logging-3.3.3.Final.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/jstl-1.2.jar b/demo_k/out/artifacts/demo_k_jar/jstl-1.2.jar new file mode 100644 index 0000000..0fd275e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/jstl-1.2.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/log4j-1.2.17.jar b/demo_k/out/artifacts/demo_k_jar/log4j-1.2.17.jar new file mode 100644 index 0000000..1d425cf Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/log4j-1.2.17.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/log4j-api-2.7.jar b/demo_k/out/artifacts/demo_k_jar/log4j-api-2.7.jar new file mode 100644 index 0000000..b921631 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/log4j-api-2.7.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/log4j-core-2.7.jar b/demo_k/out/artifacts/demo_k_jar/log4j-core-2.7.jar new file mode 100644 index 0000000..c0feb23 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/log4j-core-2.7.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/mybatis-3.4.0.jar b/demo_k/out/artifacts/demo_k_jar/mybatis-3.4.0.jar new file mode 100644 index 0000000..fa5476e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/mybatis-3.4.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/mybatis-spring-1.3.0.jar b/demo_k/out/artifacts/demo_k_jar/mybatis-spring-1.3.0.jar new file mode 100644 index 0000000..4b67c16 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/mybatis-spring-1.3.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/mybatis-spring-boot-autoconfigure-1.1.1.jar b/demo_k/out/artifacts/demo_k_jar/mybatis-spring-boot-autoconfigure-1.1.1.jar new file mode 100644 index 0000000..e595371 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/mybatis-spring-boot-autoconfigure-1.1.1.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/mybatis-spring-boot-starter-1.1.1.jar b/demo_k/out/artifacts/demo_k_jar/mybatis-spring-boot-starter-1.1.1.jar new file mode 100644 index 0000000..6146921 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/mybatis-spring-boot-starter-1.1.1.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/neethi-3.0.3.jar b/demo_k/out/artifacts/demo_k_jar/neethi-3.0.3.jar new file mode 100644 index 0000000..38b77ff Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/neethi-3.0.3.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/ojdbc7.jar b/demo_k/out/artifacts/demo_k_jar/ojdbc7.jar new file mode 100644 index 0000000..2077ea3 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/ojdbc7.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/okhttp-2.7.4.jar b/demo_k/out/artifacts/demo_k_jar/okhttp-2.7.4.jar new file mode 100644 index 0000000..be7249f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/okhttp-2.7.4.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/okio-1.13.0.jar b/demo_k/out/artifacts/demo_k_jar/okio-1.13.0.jar new file mode 100644 index 0000000..02c302f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/okio-1.13.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/oro-2.0.8.jar b/demo_k/out/artifacts/demo_k_jar/oro-2.0.8.jar new file mode 100644 index 0000000..23488d2 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/oro-2.0.8.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/slf4j-api-1.7.21.jar b/demo_k/out/artifacts/demo_k_jar/slf4j-api-1.7.21.jar new file mode 100644 index 0000000..2a5c33e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/slf4j-api-1.7.21.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/slf4j-log4j12-1.7.21.jar b/demo_k/out/artifacts/demo_k_jar/slf4j-log4j12-1.7.21.jar new file mode 100644 index 0000000..ff4fddd Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/slf4j-log4j12-1.7.21.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/snakeyaml-1.23.jar b/demo_k/out/artifacts/demo_k_jar/snakeyaml-1.23.jar new file mode 100644 index 0000000..adcef4f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/snakeyaml-1.23.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-aop-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-aop-5.1.9.RELEASE.jar new file mode 100644 index 0000000..0110e7b Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-aop-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-beans-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-beans-5.1.9.RELEASE.jar new file mode 100644 index 0000000..fbae4d6 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-beans-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-2.1.8.RELEASE.jar new file mode 100644 index 0000000..91cafab Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-autoconfigure-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-autoconfigure-2.1.8.RELEASE.jar new file mode 100644 index 0000000..5f9c0b0 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-autoconfigure-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-configuration-processor-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-configuration-processor-2.1.8.RELEASE.jar new file mode 100644 index 0000000..6a918c1 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-configuration-processor-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-devtools-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-devtools-2.1.8.RELEASE.jar new file mode 100644 index 0000000..f789345 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-devtools-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-2.1.8.RELEASE.jar new file mode 100644 index 0000000..108ec36 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-jdbc-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-jdbc-2.1.8.RELEASE.jar new file mode 100644 index 0000000..76eed16 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-jdbc-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-json-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-json-2.1.8.RELEASE.jar new file mode 100644 index 0000000..dd95ac9 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-json-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-thymeleaf-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-thymeleaf-2.1.8.RELEASE.jar new file mode 100644 index 0000000..96bbdba Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-thymeleaf-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-tomcat-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-tomcat-2.1.8.RELEASE.jar new file mode 100644 index 0000000..667552c Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-tomcat-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-web-2.1.8.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-web-2.1.8.RELEASE.jar new file mode 100644 index 0000000..bd0a01a Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-boot-starter-web-2.1.8.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-context-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-context-5.1.9.RELEASE.jar new file mode 100644 index 0000000..3a5f4d0 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-context-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-core-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-core-5.1.9.RELEASE.jar new file mode 100644 index 0000000..b6c0ea6 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-core-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-expression-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-expression-5.1.9.RELEASE.jar new file mode 100644 index 0000000..2d04615 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-expression-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-jcl-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-jcl-5.1.9.RELEASE.jar new file mode 100644 index 0000000..f47ef26 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-jcl-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-jdbc-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-jdbc-5.1.9.RELEASE.jar new file mode 100644 index 0000000..1452219 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-jdbc-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-tx-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-tx-5.1.9.RELEASE.jar new file mode 100644 index 0000000..c8c1b72 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-tx-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-web-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-web-5.1.9.RELEASE.jar new file mode 100644 index 0000000..6f5e889 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-web-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/spring-webmvc-5.1.9.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/spring-webmvc-5.1.9.RELEASE.jar new file mode 100644 index 0000000..09b6b95 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/spring-webmvc-5.1.9.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/stax2-api-3.1.4.jar b/demo_k/out/artifacts/demo_k_jar/stax2-api-3.1.4.jar new file mode 100644 index 0000000..dded036 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/stax2-api-3.1.4.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/tcgatewaystubs.jar b/demo_k/out/artifacts/demo_k_jar/tcgatewaystubs.jar new file mode 100644 index 0000000..80be797 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/tcgatewaystubs.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/tcmemjavabinding.jar b/demo_k/out/artifacts/demo_k_jar/tcmemjavabinding.jar new file mode 100644 index 0000000..a9431ff Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/tcmemjavabinding.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/tcserverjavabinding.jar b/demo_k/out/artifacts/demo_k_jar/tcserverjavabinding.jar new file mode 100644 index 0000000..bf72014 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/tcserverjavabinding.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/tctp_11000.2.0.jar b/demo_k/out/artifacts/demo_k_jar/tctp_11000.2.0.jar new file mode 100644 index 0000000..76e1930 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/tctp_11000.2.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_applib.jar b/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_applib.jar new file mode 100644 index 0000000..138c39f Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_applib.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_common.jar b/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_common.jar new file mode 100644 index 0000000..fe9ab6b Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_common.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_ldapcustom.jar b/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_ldapcustom.jar new file mode 100644 index 0000000..275f553 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_ldapcustom.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_webtoolkit.jar b/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_webtoolkit.jar new file mode 100644 index 0000000..089220d Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/teamcenter_sso_webtoolkit.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/thymeleaf-3.0.11.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/thymeleaf-3.0.11.RELEASE.jar new file mode 100644 index 0000000..57439fa Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/thymeleaf-3.0.11.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/thymeleaf-extras-java8time-3.0.4.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/thymeleaf-extras-java8time-3.0.4.RELEASE.jar new file mode 100644 index 0000000..1359352 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/thymeleaf-extras-java8time-3.0.4.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/thymeleaf-spring5-3.0.11.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/thymeleaf-spring5-3.0.11.RELEASE.jar new file mode 100644 index 0000000..ee14e6e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/thymeleaf-spring5-3.0.11.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/tomcat-annotations-api-9.0.24.jar b/demo_k/out/artifacts/demo_k_jar/tomcat-annotations-api-9.0.24.jar new file mode 100644 index 0000000..3aa33e8 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/tomcat-annotations-api-9.0.24.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/tomcat-embed-core-9.0.24.jar b/demo_k/out/artifacts/demo_k_jar/tomcat-embed-core-9.0.24.jar new file mode 100644 index 0000000..50e7252 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/tomcat-embed-core-9.0.24.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/tomcat-embed-el-9.0.24.jar b/demo_k/out/artifacts/demo_k_jar/tomcat-embed-el-9.0.24.jar new file mode 100644 index 0000000..69793d0 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/tomcat-embed-el-9.0.24.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/tomcat-embed-websocket-9.0.24.jar b/demo_k/out/artifacts/demo_k_jar/tomcat-embed-websocket-9.0.24.jar new file mode 100644 index 0000000..dadb788 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/tomcat-embed-websocket-9.0.24.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/unbescape-1.1.6.RELEASE.jar b/demo_k/out/artifacts/demo_k_jar/unbescape-1.1.6.RELEASE.jar new file mode 100644 index 0000000..10e4da5 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/unbescape-1.1.6.RELEASE.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/validation-api-2.0.1.Final.jar b/demo_k/out/artifacts/demo_k_jar/validation-api-2.0.1.Final.jar new file mode 100644 index 0000000..2368e10 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/validation-api-2.0.1.Final.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/woodstox-core-asl-4.4.1.jar b/demo_k/out/artifacts/demo_k_jar/woodstox-core-asl-4.4.1.jar new file mode 100644 index 0000000..d8b4e8c Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/woodstox-core-asl-4.4.1.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/ws-commons-util-1.0.2.jar b/demo_k/out/artifacts/demo_k_jar/ws-commons-util-1.0.2.jar new file mode 100644 index 0000000..3fc364e Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/ws-commons-util-1.0.2.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/wsdl4j-1.6.3.jar b/demo_k/out/artifacts/demo_k_jar/wsdl4j-1.6.3.jar new file mode 100644 index 0000000..b9c10b9 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/wsdl4j-1.6.3.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/xercesImpl-2.11.0.jar b/demo_k/out/artifacts/demo_k_jar/xercesImpl-2.11.0.jar new file mode 100644 index 0000000..0aaa990 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/xercesImpl-2.11.0.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/xml-apis-1.4.01.jar b/demo_k/out/artifacts/demo_k_jar/xml-apis-1.4.01.jar new file mode 100644 index 0000000..4673346 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/xml-apis-1.4.01.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/xml-resolver-1.2.jar b/demo_k/out/artifacts/demo_k_jar/xml-resolver-1.2.jar new file mode 100644 index 0000000..e535bdc Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/xml-resolver-1.2.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/xmlrpc-client-3.1.3.jar b/demo_k/out/artifacts/demo_k_jar/xmlrpc-client-3.1.3.jar new file mode 100644 index 0000000..38e3359 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/xmlrpc-client-3.1.3.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/xmlrpc-common-3.1.3.jar b/demo_k/out/artifacts/demo_k_jar/xmlrpc-common-3.1.3.jar new file mode 100644 index 0000000..b5eb9df Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/xmlrpc-common-3.1.3.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/xmlrpc-server-3.1.3.jar b/demo_k/out/artifacts/demo_k_jar/xmlrpc-server-3.1.3.jar new file mode 100644 index 0000000..2f930f1 Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/xmlrpc-server-3.1.3.jar differ diff --git a/demo_k/out/artifacts/demo_k_jar/xmlschema-core-2.2.1.jar b/demo_k/out/artifacts/demo_k_jar/xmlschema-core-2.2.1.jar new file mode 100644 index 0000000..cab69fd Binary files /dev/null and b/demo_k/out/artifacts/demo_k_jar/xmlschema-core-2.2.1.jar differ diff --git a/demo_k/pom.xml b/demo_k/pom.xml new file mode 100644 index 0000000..f6dd4f2 --- /dev/null +++ b/demo_k/pom.xml @@ -0,0 +1,175 @@ + + + 4.0.0 + + com.kk.testspb + demo_k + 0.0.1-SNAPSHOT + war + + demo_k + Demo project for Spring Boot From K + + + org.springframework.boot + spring-boot-starter-parent + 2.1.8.RELEASE + + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-logging + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + javax.servlet + javax.servlet-api + provided + + + javax.servlet + jstl + + + + + org.apache.tomcat.embed + tomcat-embed-jasper + provided + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.1.1 + + + + + + + + + + + + + org.springframework.boot + spring-boot-devtools + runtime + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + org.apache.cxf + cxf-rt-frontend-jaxws + 3.1.6 + + + org.apache.cxf + cxf-rt-transports-http + 3.1.6 + + + + + org.slf4j + slf4j-api + 1.7.21 + + + org.slf4j + slf4j-log4j12 + 1.7.21 + + + commons-logging + commons-logging + 1.2 + + + + commons-httpclient + commons-httpclient + 3.1 + + + org.jacorb + jacorb + 3.9 + + + xerces + xercesImpl + 2.11.0 + + + + org.apache.commons + commons-lang3 + 3.4 + + + commons-net + commons-net + 1.4.1 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/demo_k/soalib/S8SoaBypassLoose_11000.2.0.jar b/demo_k/soalib/S8SoaBypassLoose_11000.2.0.jar new file mode 100644 index 0000000..52766b4 Binary files /dev/null and b/demo_k/soalib/S8SoaBypassLoose_11000.2.0.jar differ diff --git a/demo_k/soalib/S8SoaBypassStrong_11000.2.0.jar b/demo_k/soalib/S8SoaBypassStrong_11000.2.0.jar new file mode 100644 index 0000000..16f8087 Binary files /dev/null and b/demo_k/soalib/S8SoaBypassStrong_11000.2.0.jar differ diff --git a/demo_k/soalib/S8SoaBypassTypes_11000.2.0.jar b/demo_k/soalib/S8SoaBypassTypes_11000.2.0.jar new file mode 100644 index 0000000..aa5d1c1 Binary files /dev/null and b/demo_k/soalib/S8SoaBypassTypes_11000.2.0.jar differ diff --git a/demo_k/soalib/S8SoaCustServerLoose_11000.2.0.jar b/demo_k/soalib/S8SoaCustServerLoose_11000.2.0.jar new file mode 100644 index 0000000..9a3d816 Binary files /dev/null and b/demo_k/soalib/S8SoaCustServerLoose_11000.2.0.jar differ diff --git a/demo_k/soalib/S8SoaCustServerStrong_11000.2.0.jar b/demo_k/soalib/S8SoaCustServerStrong_11000.2.0.jar new file mode 100644 index 0000000..70cb356 Binary files /dev/null and b/demo_k/soalib/S8SoaCustServerStrong_11000.2.0.jar differ diff --git a/demo_k/soalib/S8SoaCustServerTypes_11000.2.0.jar b/demo_k/soalib/S8SoaCustServerTypes_11000.2.0.jar new file mode 100644 index 0000000..682409e Binary files /dev/null and b/demo_k/soalib/S8SoaCustServerTypes_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaAdministrationLoose_11000.2.0.jar b/demo_k/soalib/TcSoaAdministrationLoose_11000.2.0.jar new file mode 100644 index 0000000..797925f Binary files /dev/null and b/demo_k/soalib/TcSoaAdministrationLoose_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaAdministrationStrong_11000.2.0.jar b/demo_k/soalib/TcSoaAdministrationStrong_11000.2.0.jar new file mode 100644 index 0000000..4d38c1e Binary files /dev/null and b/demo_k/soalib/TcSoaAdministrationStrong_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaAdministrationTypes_11000.2.0.jar b/demo_k/soalib/TcSoaAdministrationTypes_11000.2.0.jar new file mode 100644 index 0000000..151f553 Binary files /dev/null and b/demo_k/soalib/TcSoaAdministrationTypes_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaClassificationStrong_11000.2.0.jar b/demo_k/soalib/TcSoaClassificationStrong_11000.2.0.jar new file mode 100644 index 0000000..18435d1 Binary files /dev/null and b/demo_k/soalib/TcSoaClassificationStrong_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaClassificationStrong_13000.1.0.jar b/demo_k/soalib/TcSoaClassificationStrong_13000.1.0.jar new file mode 100644 index 0000000..ff9d2b1 Binary files /dev/null and b/demo_k/soalib/TcSoaClassificationStrong_13000.1.0.jar differ diff --git a/demo_k/soalib/TcSoaClassificationTypes_11000.2.0.jar b/demo_k/soalib/TcSoaClassificationTypes_11000.2.0.jar new file mode 100644 index 0000000..fd77662 Binary files /dev/null and b/demo_k/soalib/TcSoaClassificationTypes_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaClient_11000.2.0.jar b/demo_k/soalib/TcSoaClient_11000.2.0.jar new file mode 100644 index 0000000..0989c41 Binary files /dev/null and b/demo_k/soalib/TcSoaClient_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaCommon_11000.2.0.jar b/demo_k/soalib/TcSoaCommon_11000.2.0.jar new file mode 100644 index 0000000..40f7fa2 Binary files /dev/null and b/demo_k/soalib/TcSoaCommon_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaCoreLoose_11000.2.0.jar b/demo_k/soalib/TcSoaCoreLoose_11000.2.0.jar new file mode 100644 index 0000000..03f0ebf Binary files /dev/null and b/demo_k/soalib/TcSoaCoreLoose_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaCoreStrong_11000.2.0.jar b/demo_k/soalib/TcSoaCoreStrong_11000.2.0.jar new file mode 100644 index 0000000..66ea68c Binary files /dev/null and b/demo_k/soalib/TcSoaCoreStrong_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaCoreTypes_11000.2.0.jar b/demo_k/soalib/TcSoaCoreTypes_11000.2.0.jar new file mode 100644 index 0000000..1cbb447 Binary files /dev/null and b/demo_k/soalib/TcSoaCoreTypes_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaQueryLoose_11000.2.0.jar b/demo_k/soalib/TcSoaQueryLoose_11000.2.0.jar new file mode 100644 index 0000000..a0a0d80 Binary files /dev/null and b/demo_k/soalib/TcSoaQueryLoose_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaQueryStrong_11000.2.0.jar b/demo_k/soalib/TcSoaQueryStrong_11000.2.0.jar new file mode 100644 index 0000000..5910758 Binary files /dev/null and b/demo_k/soalib/TcSoaQueryStrong_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaQueryTypes_11000.2.0.jar b/demo_k/soalib/TcSoaQueryTypes_11000.2.0.jar new file mode 100644 index 0000000..17314c4 Binary files /dev/null and b/demo_k/soalib/TcSoaQueryTypes_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaStrongModel_11000.2.0.jar b/demo_k/soalib/TcSoaStrongModel_11000.2.0.jar new file mode 100644 index 0000000..a61ae85 Binary files /dev/null and b/demo_k/soalib/TcSoaStrongModel_11000.2.0.jar differ diff --git a/demo_k/soalib/TcSoaWorkflowStrong_11000.2.0.jar b/demo_k/soalib/TcSoaWorkflowStrong_11000.2.0.jar new file mode 100644 index 0000000..b47df42 Binary files /dev/null and b/demo_k/soalib/TcSoaWorkflowStrong_11000.2.0.jar differ diff --git a/demo_k/soalib/commons-httpclient-contrib-3.1.jar b/demo_k/soalib/commons-httpclient-contrib-3.1.jar new file mode 100644 index 0000000..af5c5de Binary files /dev/null and b/demo_k/soalib/commons-httpclient-contrib-3.1.jar differ diff --git a/demo_k/soalib/fastjson2-2.0.15.jar b/demo_k/soalib/fastjson2-2.0.15.jar new file mode 100644 index 0000000..88997b5 Binary files /dev/null and b/demo_k/soalib/fastjson2-2.0.15.jar differ diff --git a/demo_k/soalib/fccclient.jar b/demo_k/soalib/fccclient.jar new file mode 100644 index 0000000..b30b1b3 Binary files /dev/null and b/demo_k/soalib/fccclient.jar differ diff --git a/demo_k/soalib/fscclient.jar b/demo_k/soalib/fscclient.jar new file mode 100644 index 0000000..85959d4 Binary files /dev/null and b/demo_k/soalib/fscclient.jar differ diff --git a/demo_k/soalib/log4j-api-2.7.jar b/demo_k/soalib/log4j-api-2.7.jar new file mode 100644 index 0000000..b921631 Binary files /dev/null and b/demo_k/soalib/log4j-api-2.7.jar differ diff --git a/demo_k/soalib/log4j-core-2.7.jar b/demo_k/soalib/log4j-core-2.7.jar new file mode 100644 index 0000000..c0feb23 Binary files /dev/null and b/demo_k/soalib/log4j-core-2.7.jar differ diff --git a/demo_k/soalib/ojdbc7.jar b/demo_k/soalib/ojdbc7.jar new file mode 100644 index 0000000..2077ea3 Binary files /dev/null and b/demo_k/soalib/ojdbc7.jar differ diff --git a/demo_k/soalib/okhttp-2.7.4.jar b/demo_k/soalib/okhttp-2.7.4.jar new file mode 100644 index 0000000..be7249f Binary files /dev/null and b/demo_k/soalib/okhttp-2.7.4.jar differ diff --git a/demo_k/soalib/okio-1.13.0.jar b/demo_k/soalib/okio-1.13.0.jar new file mode 100644 index 0000000..02c302f Binary files /dev/null and b/demo_k/soalib/okio-1.13.0.jar differ diff --git a/demo_k/soalib/tcgatewaystubs.jar b/demo_k/soalib/tcgatewaystubs.jar new file mode 100644 index 0000000..80be797 Binary files /dev/null and b/demo_k/soalib/tcgatewaystubs.jar differ diff --git a/demo_k/soalib/tcmemjavabinding.jar b/demo_k/soalib/tcmemjavabinding.jar new file mode 100644 index 0000000..a9431ff Binary files /dev/null and b/demo_k/soalib/tcmemjavabinding.jar differ diff --git a/demo_k/soalib/tcserverjavabinding.jar b/demo_k/soalib/tcserverjavabinding.jar new file mode 100644 index 0000000..bf72014 Binary files /dev/null and b/demo_k/soalib/tcserverjavabinding.jar differ diff --git a/demo_k/soalib/tctp_11000.2.0.jar b/demo_k/soalib/tctp_11000.2.0.jar new file mode 100644 index 0000000..76e1930 Binary files /dev/null and b/demo_k/soalib/tctp_11000.2.0.jar differ diff --git a/demo_k/soalib/teamcenter_sso_applib.jar b/demo_k/soalib/teamcenter_sso_applib.jar new file mode 100644 index 0000000..138c39f Binary files /dev/null and b/demo_k/soalib/teamcenter_sso_applib.jar differ diff --git a/demo_k/soalib/teamcenter_sso_common.jar b/demo_k/soalib/teamcenter_sso_common.jar new file mode 100644 index 0000000..fe9ab6b Binary files /dev/null and b/demo_k/soalib/teamcenter_sso_common.jar differ diff --git a/demo_k/soalib/teamcenter_sso_ldapcustom.jar b/demo_k/soalib/teamcenter_sso_ldapcustom.jar new file mode 100644 index 0000000..275f553 Binary files /dev/null and b/demo_k/soalib/teamcenter_sso_ldapcustom.jar differ diff --git a/demo_k/soalib/teamcenter_sso_webtoolkit.jar b/demo_k/soalib/teamcenter_sso_webtoolkit.jar new file mode 100644 index 0000000..089220d Binary files /dev/null and b/demo_k/soalib/teamcenter_sso_webtoolkit.jar differ diff --git a/demo_k/soalib/ws-commons-util-1.0.2.jar b/demo_k/soalib/ws-commons-util-1.0.2.jar new file mode 100644 index 0000000..3fc364e Binary files /dev/null and b/demo_k/soalib/ws-commons-util-1.0.2.jar differ diff --git a/demo_k/soalib/xmlrpc-client-3.1.3.jar b/demo_k/soalib/xmlrpc-client-3.1.3.jar new file mode 100644 index 0000000..38e3359 Binary files /dev/null and b/demo_k/soalib/xmlrpc-client-3.1.3.jar differ diff --git a/demo_k/soalib/xmlrpc-common-3.1.3.jar b/demo_k/soalib/xmlrpc-common-3.1.3.jar new file mode 100644 index 0000000..b5eb9df Binary files /dev/null and b/demo_k/soalib/xmlrpc-common-3.1.3.jar differ diff --git a/demo_k/soalib/xmlrpc-server-3.1.3.jar b/demo_k/soalib/xmlrpc-server-3.1.3.jar new file mode 100644 index 0000000..2f930f1 Binary files /dev/null and b/demo_k/soalib/xmlrpc-server-3.1.3.jar differ diff --git a/demo_k/src/META-INF/MANIFEST.MF b/demo_k/src/META-INF/MANIFEST.MF new file mode 100644 index 0000000..8eaac8e --- /dev/null +++ b/demo_k/src/META-INF/MANIFEST.MF @@ -0,0 +1,52 @@ +Manifest-Version: 1.0 +Main-Class: com.DemoKApplication +Class-Path: stax2-api-3.1.4.jar spring-jdbc-5.1.9.RELEASE.jar cxf-rt-bin + dings-soap-3.1.6.jar commons-lang3-3.4.jar spring-context-5.1.9.RELEASE + .jar woodstox-core-asl-4.4.1.jar cxf-rt-bindings-xml-3.1.6.jar spring-b + oot-autoconfigure-2.1.8.RELEASE.jar wsdl4j-1.6.3.jar cxf-rt-transports- + http-3.1.6.jar cxf-rt-ws-addr-3.1.6.jar xml-resolver-1.2.jar spring-boo + t-starter-thymeleaf-2.1.8.RELEASE.jar commons-net-1.4.1.jar xercesImpl- + 2.11.0.jar slf4j-log4j12-1.7.21.jar jackson-datatype-jdk8-2.9.9.jar spr + ing-webmvc-5.1.9.RELEASE.jar slf4j-api-1.7.21.jar spring-beans-5.1.9.RE + LEASE.jar tomcat-annotations-api-9.0.24.jar spring-expression-5.1.9.REL + EASE.jar xml-apis-1.4.01.jar xmlschema-core-2.2.1.jar jackson-module-pa + rameter-names-2.9.9.jar oro-2.0.8.jar mybatis-spring-boot-starter-1.1.1 + .jar commons-logging-1.2.jar cxf-rt-wsdl-3.1.6.jar spring-boot-starter- + 2.1.8.RELEASE.jar log4j-1.2.17.jar HikariCP-3.2.0.jar classmate-1.4.0.j + ar jackson-annotations-2.9.0.jar spring-boot-configuration-processor-2. + 1.8.RELEASE.jar jaxb-core-2.2.11.jar mybatis-spring-boot-autoconfigure- + 1.1.1.jar jacorb-3.9.jar snakeyaml-1.23.jar spring-core-5.1.9.RELEASE.j + ar spring-jcl-5.1.9.RELEASE.jar spring-boot-starter-jdbc-2.1.8.RELEASE. + jar spring-boot-2.1.8.RELEASE.jar tomcat-embed-el-9.0.24.jar thymeleaf- + spring5-3.0.11.RELEASE.jar mybatis-3.4.0.jar jaxb-impl-2.2.11.jar mybat + is-spring-1.3.0.jar cxf-rt-databinding-jaxb-3.1.6.jar thymeleaf-extras- + java8time-3.0.4.RELEASE.jar neethi-3.0.3.jar ojdbc7.jar fccclient.jar f + scclient.jar log4j-api-2.7.jar log4j-core-2.7.jar tcgatewaystubs.jar tc + tp_11000.2.0.jar tcmemjavabinding.jar tcserverjavabinding.jar xmlrpc-cl + ient-3.1.3.jar xmlrpc-common-3.1.3.jar xmlrpc-server-3.1.3.jar TcSoaCli + ent_11000.2.0.jar TcSoaCommon_11000.2.0.jar teamcenter_sso_applib.jar t + eamcenter_sso_common.jar ws-commons-util-1.0.2.jar TcSoaCoreLoose_11000 + .2.0.jar TcSoaCoreTypes_11000.2.0.jar TcSoaCoreStrong_11000.2.0.jar TcS + oaQueryLoose_11000.2.0.jar TcSoaQueryTypes_11000.2.0.jar teamcenter_sso + _ldapcustom.jar teamcenter_sso_webtoolkit.jar S8SoaBypassLoose_11000.2. + 0.jar S8SoaBypassTypes_11000.2.0.jar TcSoaQueryStrong_11000.2.0.jar TcS + oaStrongModel_11000.2.0.jar S8SoaBypassStrong_11000.2.0.jar commons-htt + pclient-contrib-3.1.jar S8SoaCustServerLoose_11000.2.0.jar S8SoaCustSer + verTypes_11000.2.0.jar S8SoaCustServerStrong_11000.2.0.jar TcSoaAdminis + trationLoose_11000.2.0.jar TcSoaAdministrationTypes_11000.2.0.jar TcSoa + AdministrationStrong_11000.2.0.jar jacorb-omgapi-3.9.jar jstl-1.2.jar s + pring-aop-5.1.9.RELEASE.jar cxf-rt-frontend-jaxws-3.1.6.jar spring-tx-5 + .1.9.RELEASE.jar asm-5.0.4.jar cxf-rt-frontend-simple-3.1.6.jar attopar + ser-2.0.5.RELEASE.jar jackson-datatype-jsr310-2.9.9.jar tomcat-embed-co + re-9.0.24.jar spring-boot-devtools-2.1.8.RELEASE.jar commons-codec-1.11 + .jar thymeleaf-3.0.11.RELEASE.jar tomcat-embed-websocket-9.0.24.jar cxf + -core-3.1.6.jar spring-boot-starter-tomcat-2.1.8.RELEASE.jar javax.anno + tation-api-1.3.2.jar jboss-logging-3.3.3.Final.jar validation-api-2.0.1 + .Final.jar spring-boot-starter-json-2.1.8.RELEASE.jar commons-httpclien + t-3.1.jar jackson-databind-2.9.9.3.jar hibernate-validator-6.0.17.Final + .jar spring-web-5.1.9.RELEASE.jar unbescape-1.1.6.RELEASE.jar jackson-c + ore-2.9.9.jar cxf-rt-ws-policy-3.1.6.jar spring-boot-starter-web-2.1.8. + RELEASE.jar TcSoaClassificationStrong_11000.2.0.jar TcSoaClassification + Types_11000.2.0.jar fastjson2-2.0.15.jar okhttp-2.7.4.jar okio-1.13.0.j + ar TcSoaCadStrong_11000.2.0.jar TcSoaCadTypes_11000.2.0.jar + diff --git a/demo_k/src/main/java/META-INF/MANIFEST.MF b/demo_k/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..622b661 --- /dev/null +++ b/demo_k/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,50 @@ +Manifest-Version: 1.0 +Main-Class: com.DemoKApplication +Class-Path: stax2-api-3.1.4.jar spring-jdbc-5.1.9.RELEASE.jar cxf-rt-bin + dings-soap-3.1.6.jar commons-lang3-3.4.jar spring-context-5.1.9.RELEASE + .jar woodstox-core-asl-4.4.1.jar cxf-rt-bindings-xml-3.1.6.jar spring-b + oot-autoconfigure-2.1.8.RELEASE.jar wsdl4j-1.6.3.jar cxf-rt-transports- + http-3.1.6.jar cxf-rt-ws-addr-3.1.6.jar xml-resolver-1.2.jar spring-boo + t-starter-thymeleaf-2.1.8.RELEASE.jar commons-net-1.4.1.jar xercesImpl- + 2.11.0.jar slf4j-log4j12-1.7.21.jar jackson-datatype-jdk8-2.9.9.jar spr + ing-webmvc-5.1.9.RELEASE.jar slf4j-api-1.7.21.jar spring-beans-5.1.9.RE + LEASE.jar tomcat-annotations-api-9.0.24.jar spring-expression-5.1.9.REL + EASE.jar xml-apis-1.4.01.jar xmlschema-core-2.2.1.jar jackson-module-pa + rameter-names-2.9.9.jar oro-2.0.8.jar mybatis-spring-boot-starter-1.1.1 + .jar commons-logging-1.2.jar cxf-rt-wsdl-3.1.6.jar spring-boot-starter- + 2.1.8.RELEASE.jar log4j-1.2.17.jar HikariCP-3.2.0.jar classmate-1.4.0.j + ar jackson-annotations-2.9.0.jar spring-boot-configuration-processor-2. + 1.8.RELEASE.jar jaxb-core-2.2.11.jar mybatis-spring-boot-autoconfigure- + 1.1.1.jar jacorb-3.9.jar snakeyaml-1.23.jar spring-core-5.1.9.RELEASE.j + ar spring-jcl-5.1.9.RELEASE.jar spring-boot-starter-jdbc-2.1.8.RELEASE. + jar spring-boot-2.1.8.RELEASE.jar tomcat-embed-el-9.0.24.jar thymeleaf- + spring5-3.0.11.RELEASE.jar mybatis-3.4.0.jar jaxb-impl-2.2.11.jar mybat + is-spring-1.3.0.jar cxf-rt-databinding-jaxb-3.1.6.jar thymeleaf-extras- + java8time-3.0.4.RELEASE.jar neethi-3.0.3.jar ojdbc7.jar fccclient.jar f + scclient.jar log4j-api-2.7.jar log4j-core-2.7.jar tcgatewaystubs.jar tc + tp_11000.2.0.jar tcmemjavabinding.jar tcserverjavabinding.jar xmlrpc-cl + ient-3.1.3.jar xmlrpc-common-3.1.3.jar xmlrpc-server-3.1.3.jar TcSoaCli + ent_11000.2.0.jar TcSoaCommon_11000.2.0.jar teamcenter_sso_applib.jar t + eamcenter_sso_common.jar ws-commons-util-1.0.2.jar TcSoaCoreLoose_11000 + .2.0.jar TcSoaCoreTypes_11000.2.0.jar TcSoaCoreStrong_11000.2.0.jar TcS + oaQueryLoose_11000.2.0.jar TcSoaQueryTypes_11000.2.0.jar teamcenter_sso + _ldapcustom.jar teamcenter_sso_webtoolkit.jar S8SoaBypassLoose_11000.2. + 0.jar S8SoaBypassTypes_11000.2.0.jar TcSoaQueryStrong_11000.2.0.jar TcS + oaStrongModel_11000.2.0.jar S8SoaBypassStrong_11000.2.0.jar commons-htt + pclient-contrib-3.1.jar S8SoaCustServerLoose_11000.2.0.jar S8SoaCustSer + verTypes_11000.2.0.jar S8SoaCustServerStrong_11000.2.0.jar TcSoaAdminis + trationLoose_11000.2.0.jar TcSoaAdministrationTypes_11000.2.0.jar TcSoa + AdministrationStrong_11000.2.0.jar jacorb-omgapi-3.9.jar jstl-1.2.jar s + pring-aop-5.1.9.RELEASE.jar cxf-rt-frontend-jaxws-3.1.6.jar spring-tx-5 + .1.9.RELEASE.jar asm-5.0.4.jar cxf-rt-frontend-simple-3.1.6.jar attopar + ser-2.0.5.RELEASE.jar jackson-datatype-jsr310-2.9.9.jar tomcat-embed-co + re-9.0.24.jar spring-boot-devtools-2.1.8.RELEASE.jar commons-codec-1.11 + .jar thymeleaf-3.0.11.RELEASE.jar tomcat-embed-websocket-9.0.24.jar cxf + -core-3.1.6.jar spring-boot-starter-tomcat-2.1.8.RELEASE.jar javax.anno + tation-api-1.3.2.jar jboss-logging-3.3.3.Final.jar validation-api-2.0.1 + .Final.jar spring-boot-starter-json-2.1.8.RELEASE.jar commons-httpclien + t-3.1.jar jackson-databind-2.9.9.3.jar hibernate-validator-6.0.17.Final + .jar spring-web-5.1.9.RELEASE.jar unbescape-1.1.6.RELEASE.jar jackson-c + ore-2.9.9.jar cxf-rt-ws-policy-3.1.6.jar spring-boot-starter-web-2.1.8. + RELEASE.jar fastjson2-2.0.15.jar TcSoaCadStrong_11000.2.0.jar + diff --git a/demo_k/src/main/java/com/DemoKApplication.java b/demo_k/src/main/java/com/DemoKApplication.java new file mode 100644 index 0000000..3afed92 --- /dev/null +++ b/demo_k/src/main/java/com/DemoKApplication.java @@ -0,0 +1,27 @@ +package com; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@EnableTransactionManagement +@ServletComponentScan +@SpringBootApplication +public class DemoKApplication extends SpringBootServletInitializer { + + // public static String Group_FolderName; + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(DemoKApplication.class); + } + + public static void main(String[] args) { + ConfigurableApplicationContext contenxt = SpringApplication.run(DemoKApplication.class, args); + // Group_FolderName = contenxt.getEnvironment().getProperty("config.group-folderName"); + } + +} diff --git a/demo_k/src/main/java/com/SaticScheduleTask.java b/demo_k/src/main/java/com/SaticScheduleTask.java new file mode 100644 index 0000000..df2539c --- /dev/null +++ b/demo_k/src/main/java/com/SaticScheduleTask.java @@ -0,0 +1,51 @@ +package com; + +//import com.connor.overtime.hs.mapper.EPMMapper; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; + +import javax.annotation.PostConstruct; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.time.LocalDateTime; + +//@Service +//@ConfigurationProperties(prefix = "tc") +@Configuration //1.主要用于标记配置类,兼备Component的效果。 +@EnableScheduling // 2.开启定时任务 +public class SaticScheduleTask { + //3.添加定时任务 + @Autowired +// LoginInfo loginInfo; +// @PostConstruct +// @Scheduled(cron = "0 0/5 * * * ?" )//30 18 17 * * ?"${update.cron}" +// private void configureTasks() { +// System.err.println("执行静态定时任务时间: " + LocalDateTime.now()); +// try { +// String cmd = "D:\\updateMantr2.bat"; +// String s = executeCmdCommand(cmd); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + public static String executeCmdCommand(String cmdCommand) { + StringBuilder stringBuilder = new StringBuilder(); + Process process = null; + try { + process = Runtime.getRuntime().exec(cmdCommand); + BufferedReader bufferedReader = new BufferedReader( + new InputStreamReader(process.getInputStream(), "GBK")); + String line = null; + while ((line = bufferedReader.readLine()) != null) { + System.out.println(line); + } + return stringBuilder.toString(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/demo_k/src/main/java/com/connor/web/KExceptionHandler.java b/demo_k/src/main/java/com/connor/web/KExceptionHandler.java new file mode 100644 index 0000000..ab3ebd0 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/KExceptionHandler.java @@ -0,0 +1,44 @@ +package com.connor.web; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.util.ContentCachingRequestWrapper; + +import javax.servlet.http.HttpServletRequest; +import java.nio.charset.Charset; + +/** + * Created by K on 2019/8/14. + */ +@ControllerAdvice +public class KExceptionHandler { + private static final Logger logger = LoggerFactory.getLogger(KExceptionHandler.class); + + @ResponseBody + @ExceptionHandler(value = Exception.class) + public String exceptionHandler(HttpServletRequest httpServletRequest, Exception e) { + try{ + StringBuffer url = httpServletRequest.getRequestURL(); + logger.error("异常请求URL:"+url.toString()); + if(httpServletRequest!=null && httpServletRequest instanceof ContentCachingRequestWrapper) + { + ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) httpServletRequest; + logger.error("BAD_REQUEST_BODY:{}", StringUtils.toEncodedString(wrapper.getContentAsByteArray(), Charset.forName(wrapper.getCharacterEncoding()))); + } + + }catch(Exception e2) + { + + } + + + logger.error("发生异常:", e); + + + return "发生异常:"+e.getMessage(); + } +} diff --git a/demo_k/src/main/java/com/connor/web/KPostProcessor.java b/demo_k/src/main/java/com/connor/web/KPostProcessor.java new file mode 100644 index 0000000..a30322a --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/KPostProcessor.java @@ -0,0 +1,56 @@ +package com.connor.web; + +import com.connor.web.util.TCUtil; +import com.teamcenter.clientx.Session; +import com.teamcenter.soa.client.model.strong.User; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.context.config.ConfigFileApplicationListener; +import org.springframework.boot.env.EnvironmentPostProcessor; +import org.springframework.core.Ordered; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.MapPropertySource; +import org.springframework.core.env.MutablePropertySources; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * Created by K on 2019/5/15. + */ +@Component +public class KPostProcessor implements EnvironmentPostProcessor, Ordered { + + private static final String DOMAIN = "applicationConfig: [classpath:/application.yml]"; + + @Override + public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application){ + //MutablePropertySources ppp = environment.getPropertySources(); + /*if (ppp.contains(DOMAIN)) { + MapPropertySource settings = (MapPropertySource) ppp.get(DOMAIN); + Map map = settings.getSource(); + Session session = new Session(map.get("config.tc-url").toString()); + User user = session.login(map.get("config.tc-user").toString(), map.get("config.tc-pwd").toString()); + if (user != null) { + try { + String[] vals = TCUtil.getPrefVals("database_tc"); + if (vals != null && vals.length == 5) { + String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = " + vals[0] + ")(PORT = " + vals[1] + "))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=" + vals[2] + ")))"; + map.put("spring.datasource.url", url); + map.put("spring.datasource.username", vals[3]); + map.put("spring.datasource.password", vals[4]); + } + } catch (Exception e) { + throw new IllegalStateException(e); + //e.printStackTrace(); + } finally { + session.logout(); + } + } + }*/ + } + + @Override + public int getOrder() { + return ConfigFileApplicationListener.DEFAULT_ORDER + 19; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/CoreBean.java b/demo_k/src/main/java/com/connor/web/bean/CoreBean.java new file mode 100644 index 0000000..eaee689 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/CoreBean.java @@ -0,0 +1,23 @@ +package com.connor.web.bean; + +public class CoreBean { + + private String productno; + private String wbsno; + + public String getProductno() { + return productno; + } + + public void setProductno(String productno) { + this.productno = productno; + } + + public String getWbsno() { + return wbsno; + } + + public void setWbsno(String wbsno) { + this.wbsno = wbsno; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/CoreBeanReturn.java b/demo_k/src/main/java/com/connor/web/bean/CoreBeanReturn.java new file mode 100644 index 0000000..9c2a4f1 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/CoreBeanReturn.java @@ -0,0 +1,48 @@ +package com.connor.web.bean; + +public class CoreBeanReturn { + + private String productno; + private String wbsno; + private String weight; + private String code; + + public CoreBeanReturn(String productno, String wbsno, String weight, String code) { + this.productno = productno; + this.wbsno = wbsno; + this.weight = weight; + this.code = code; + } + + public String getProductno() { + return productno; + } + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public void setProductno(String productno) { + this.productno = productno; + } + + public String getWbsno() { + return wbsno; + } + + public void setWbsno(String wbsno) { + this.wbsno = wbsno; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/DesignInfoBean.java b/demo_k/src/main/java/com/connor/web/bean/DesignInfoBean.java new file mode 100644 index 0000000..756c323 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/DesignInfoBean.java @@ -0,0 +1,35 @@ +package com.connor.web.bean; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; + +public class DesignInfoBean { + + private List file; + + @JsonProperty("Desc") + private String desc; + + + public DesignInfoBean(List file,String desc_String) { + this.file = file; + this.desc = desc_String; + } + + public List getFile() { + return file; + } + + public void setFile(List file) { + this.file = file; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + desc = desc; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/ECRBean.java b/demo_k/src/main/java/com/connor/web/bean/ECRBean.java new file mode 100644 index 0000000..0b0f9f4 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/ECRBean.java @@ -0,0 +1,312 @@ +package com.connor.web.bean; + +import java.util.Date; + +public class ECRBean { + private String factory; + private String applyno; + private String applylink; + private String applyuser; + private String applydate; + private String changetype; + private String productchar; + private String processchar; + private String productmodel; + private String productname; + private String designname; + private String docuname; + private String contractno; + private String contractname; + private String changere; + private String workdeal; + private String workdealdes; + private String designfile; + private String techfile; + private String qualityfile; + private String producefile; + private String purchasefile; + private String customnoticefile; + private String finapricefile; + private String designprincipal; + private String techprincipal; + private String qualityprincipal; + private String produceprincipal; + private String purchaseprincipal; + private String customnoticeprincipal; + private String finapriceprincipal; + private Date receipttime; + private String status; + private Date createtime; + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } + + public String getApplyno() { + return applyno; + } + + public void setApplyno(String applyno) { + this.applyno = applyno; + } + + public String getApplylink() { + return applylink; + } + + public void setApplylink(String applylink) { + this.applylink = applylink; + } + + public String getApplyuser() { + return applyuser; + } + + public void setApplyuser(String applyuser) { + this.applyuser = applyuser; + } + + public String getApplydate() { + return applydate; + } + + public void setApplydate(String applydate) { + this.applydate = applydate; + } + + public String getChangetype() { + return changetype; + } + + public void setChangetype(String changetype) { + this.changetype = changetype; + } + + public String getProductchar() { + return productchar; + } + + public void setProductchar(String productchar) { + this.productchar = productchar; + } + + public String getProcesschar() { + return processchar; + } + + public void setProcesschar(String processchar) { + this.processchar = processchar; + } + + public String getProductmodel() { + return productmodel; + } + + public void setProductmodel(String productmodel) { + this.productmodel = productmodel; + } + + public String getProductname() { + return productname; + } + + public void setProductname(String productname) { + this.productname = productname; + } + + public String getDesignname() { + return designname; + } + + public void setDesignname(String designname) { + this.designname = designname; + } + + public String getDocuname() { + return docuname; + } + + public void setDocuname(String docuname) { + this.docuname = docuname; + } + + public String getContractno() { + return contractno; + } + + public void setContractno(String contractno) { + this.contractno = contractno; + } + + public String getContractname() { + return contractname; + } + + public void setContractname(String contractname) { + this.contractname = contractname; + } + + public String getChangere() { + return changere; + } + + public void setChangere(String changere) { + this.changere = changere; + } + + public String getWorkdeal() { + return workdeal; + } + + public void setWorkdeal(String workdeal) { + this.workdeal = workdeal; + } + + public String getWorkdealdes() { + return workdealdes; + } + + public void setWorkdealdes(String workdealdes) { + this.workdealdes = workdealdes; + } + + public String getDesignfile() { + return designfile; + } + + public void setDesignfile(String designfile) { + this.designfile = designfile; + } + + public String getTechfile() { + return techfile; + } + + public void setTechfile(String techfile) { + this.techfile = techfile; + } + + public String getQualityfile() { + return qualityfile; + } + + public void setQualityfile(String qualityfile) { + this.qualityfile = qualityfile; + } + + public String getProducefile() { + return producefile; + } + + public void setProducefile(String producefile) { + this.producefile = producefile; + } + + public String getPurchasefile() { + return purchasefile; + } + + public void setPurchasefile(String purchasefile) { + this.purchasefile = purchasefile; + } + + public String getCustomnoticefile() { + return customnoticefile; + } + + public void setCustomnoticefile(String customnoticefile) { + this.customnoticefile = customnoticefile; + } + + public String getFinapricefile() { + return finapricefile; + } + + public void setFinapricefile(String finapricefile) { + this.finapricefile = finapricefile; + } + + public String getDesignprincipal() { + return designprincipal; + } + + public void setDesignprincipal(String designprincipal) { + this.designprincipal = designprincipal; + } + + public String getTechprincipal() { + return techprincipal; + } + + public void setTechprincipal(String techprincipal) { + this.techprincipal = techprincipal; + } + + public String getQualityprincipal() { + return qualityprincipal; + } + + public void setQualityprincipal(String qualityprincipal) { + this.qualityprincipal = qualityprincipal; + } + + public String getProduceprincipal() { + return produceprincipal; + } + + public void setProduceprincipal(String produceprincipal) { + this.produceprincipal = produceprincipal; + } + + public String getPurchaseprincipal() { + return purchaseprincipal; + } + + public void setPurchaseprincipal(String purchaseprincipal) { + this.purchaseprincipal = purchaseprincipal; + } + + public String getCustomnoticeprincipal() { + return customnoticeprincipal; + } + + public void setCustomnoticeprincipal(String customnoticeprincipal) { + this.customnoticeprincipal = customnoticeprincipal; + } + + public String getFinapriceprincipal() { + return finapriceprincipal; + } + + public void setFinapriceprincipal(String finapriceprincipal) { + this.finapriceprincipal = finapriceprincipal; + } + + public Date getReceipttime() { + return receipttime; + } + + public void setReceipttime(Date receipttime) { + this.receipttime = receipttime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/FileInfoBean.java b/demo_k/src/main/java/com/connor/web/bean/FileInfoBean.java new file mode 100644 index 0000000..c6a6b84 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/FileInfoBean.java @@ -0,0 +1,30 @@ +package com.connor.web.bean; + +/** + * Created by K on 2019/8/13. + */ +public class FileInfoBean { + private String id; + private String name; + + public FileInfoBean(String id, String name) { + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/GZXQBean.java b/demo_k/src/main/java/com/connor/web/bean/GZXQBean.java new file mode 100644 index 0000000..ae8d0d2 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/GZXQBean.java @@ -0,0 +1,142 @@ +package com.connor.web.bean; + +import java.util.List; + +public class GZXQBean { + private String instanceId; + private String factory; + private String sfId; + private String head; + private String scheduledtime; + private String model; + private String productname; + private String toolnumber; + private String toolname; + private String toolinglevel; + private String reason; + private String jsgyrequirements; + private String link; + + public String getInstanceId() { + return instanceId; + } + + public void setInstanceId(String instanceId) { + this.instanceId = instanceId; + } + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } + + public String getSfId() { + return sfId; + } + + public void setSfId(String sfId) { + this.sfId = sfId; + } + + public String getHead() { + return head; + } + + public void setHead(String head) { + this.head = head; + } + + public String getScheduledtime() { + return scheduledtime; + } + + public void setScheduledtime(String scheduledtime) { + this.scheduledtime = scheduledtime; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getProductname() { + return productname; + } + + public void setProductname(String productname) { + this.productname = productname; + } + + public String getToolnumber() { + return toolnumber; + } + + public void setToolnumber(String toolnumber) { + this.toolnumber = toolnumber; + } + + public String getToolname() { + return toolname; + } + + public void setToolname(String toolname) { + this.toolname = toolname; + } + + public String getToolinglevel() { + return toolinglevel; + } + + public void setToolinglevel(String toolinglevel) { + this.toolinglevel = toolinglevel; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getJsgyrequirements() { + return jsgyrequirements; + } + + public void setJsgyrequirements(String jsgyrequirements) { + this.jsgyrequirements = jsgyrequirements; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + @Override + public String toString() { + return "GZXQBean{" + + "instanceId='" + instanceId + '\'' + + ", factory='" + factory + '\'' + + ", sfId='" + sfId + '\'' + + ", head='" + head + '\'' + + ", scheduledtime='" + scheduledtime + '\'' + + ", model='" + model + '\'' + + ", productname='" + productname + '\'' + + ", toolnumber='" + toolnumber + '\'' + + ", toolname='" + toolname + '\'' + + ", toolinglevel='" + toolinglevel + '\'' + + ", reason='" + reason + '\'' + + ", jsgyrequirements='" + jsgyrequirements + '\'' + + ", link='" + link + '\'' + + '}'; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/GetCoilBean.java b/demo_k/src/main/java/com/connor/web/bean/GetCoilBean.java new file mode 100644 index 0000000..d4e1068 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/GetCoilBean.java @@ -0,0 +1,17 @@ +package com.connor.web.bean; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class GetCoilBean { + + private String materialno; + + public String getMaterialno() { + return materialno; + } + + public void setMaterialno(String materialno) { + this.materialno = materialno; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/Matcategory.java b/demo_k/src/main/java/com/connor/web/bean/Matcategory.java new file mode 100644 index 0000000..e92f910 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/Matcategory.java @@ -0,0 +1,37 @@ +package com.connor.web.bean; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; + +public class Matcategory { + private String matcname; + private String matcnumber; + + @JsonProperty("Matslist") + private List Matslist; + + public String getMatcname() { + return matcname; + } + + public void setMatcname(String matcname) { + this.matcname = matcname; + } + + public String getMatcnumber() { + return matcnumber; + } + + public void setMatcnumber(String matcnumber) { + this.matcnumber = matcnumber; + } + + public List getMatslist() { + return Matslist; + } + + public void setMatslist(List matslist) { + Matslist = matslist; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/MaterialBean.java b/demo_k/src/main/java/com/connor/web/bean/MaterialBean.java new file mode 100644 index 0000000..2256bf8 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/MaterialBean.java @@ -0,0 +1,188 @@ +package com.connor.web.bean; + +import com.connor.web.controller.MyRestController; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.Date; + +/** + * data 2019/11/05 + */ +public class MaterialBean { + @JsonProperty("PmpcCode") + private String PmpcCode; + @JsonProperty("GoodsCode") + private String GoodsCode; + @JsonProperty("GoodsName") + private String GoodsName; + @JsonProperty("UnitCode") + private String UnitCode; + @JsonProperty("CompanyCode") + private String CompanyCode; + @JsonProperty("BpNo") + private String BpNo; + @JsonProperty("Spec") + private String Spec; + @JsonProperty("TeRe") + private String TeRe; + @JsonProperty("State") + private String State; + @JsonProperty("Code") + private int Code; + + @JsonProperty("PUID") + private String puid; + + private String time; + + private String p_rec_date; + + public String getP_rec_date() { + return p_rec_date; + } + + public void setP_rec_date(String p_rec_date) { + this.p_rec_date = p_rec_date; + } + + public MaterialBean() { + + } + + public MaterialBean(String pmpcCode, String goodsCode, String goodsName, String unitCode, String companyCode, String bpNo, String spec, String teRe, String state, int code, String puid) { + PmpcCode = pmpcCode==null?"":pmpcCode; + GoodsCode = goodsCode==null?"":goodsCode; + GoodsName = goodsName==null?"":goodsName; + UnitCode = unitCode==null?"":unitCode; + CompanyCode = companyCode==null?"":companyCode; + BpNo = bpNo==null?"":bpNo; + Spec = spec==null?"":spec; + TeRe = teRe==null?"":teRe; + State = state==null?"":state; + Code = code; + this.puid = puid==null?"":puid; + } + + public String getPuid() { + return puid; + } + + public void setPuid(String puid) { + MyRestController.log(" ---------------> "+puid); + this.puid = puid; + } + + //pUID Puid _PUID + public void set_PUID(String puid) { + MyRestController.log(" ---------------> "+puid); + this.puid = puid; + } + + public int getCode() { + return Code; + } + + public void setCode(int code) { + Code = code; + } + + public String getGoodsCode() { + return GoodsCode; + } + + public void setGoodsCode(String goodsCode) { + MyRestController.log(" ---------------> "+goodsCode); + GoodsCode = goodsCode; + } + + public String getGoodsName() { + return GoodsName; + } + + public void setGoodsName(String goodsName) { + GoodsName = goodsName; + } + + public String getPmpcCode() { + return PmpcCode; + } + + public void setPmpcCode(String pmpcCode) { + PmpcCode = pmpcCode; + } + + public String getUnitCode() { + return UnitCode; + } + + public void setUnitCode(String unitCode) { + UnitCode = unitCode; + } + + public String getCompanyCode() { + return CompanyCode; + } + + public void setCompanyCode(String companyCode) { + CompanyCode = companyCode; + } + + public String getBpNo() { + return BpNo; + } + + public void setBpNo(String bpNo) { + BpNo = bpNo; + } + + public String getSpec() { + return Spec; + } + + public void setSpec(String spec) { + Spec = spec; + } + + public String getTeRe() { + return TeRe; + } + + public void setTeRe(String teRe) { + TeRe = teRe; + } + + public String getState() { + return State; + } + + public void setState(String state) { + State = state; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + @Override + public String toString() { + return "MaterialBean{" + + "Code=" + Code + + ", GoodsCode='" + GoodsCode + '\'' + + ", GoodsName='" + GoodsName + '\'' + + ", PmpcCode='" + PmpcCode + '\'' + + ", UnitCode='" + UnitCode + '\'' + + ", CompanyCode='" + CompanyCode + '\'' + + ", BpNo='" + BpNo + '\'' + + ", Spec='" + Spec + '\'' + + ", TeRe='" + TeRe + '\'' + + ", State='" + State + '\'' + + ", puid='" + puid + '\''+ + '}'; + } + + +} diff --git a/demo_k/src/main/java/com/connor/web/bean/Materialdet.java b/demo_k/src/main/java/com/connor/web/bean/Materialdet.java new file mode 100644 index 0000000..9a462fa --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/Materialdet.java @@ -0,0 +1,33 @@ +package com.connor.web.bean; + +import java.util.List; + +public class Materialdet { + private String matgroup; + private String mgsnumber; + private List matcategory; + + public String getMatgroup() { + return matgroup; + } + + public void setMatgroup(String matgroup) { + this.matgroup = matgroup; + } + + public String getMgsnumber() { + return mgsnumber; + } + + public void setMgsnumber(String mgsnumber) { + this.mgsnumber = mgsnumber; + } + + public List getMatcategory() { + return matcategory; + } + + public void setMatcategory(List matcategory) { + this.matcategory = matcategory; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/Matslist.java b/demo_k/src/main/java/com/connor/web/bean/Matslist.java new file mode 100644 index 0000000..dd3b84f --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/Matslist.java @@ -0,0 +1,88 @@ +package com.connor.web.bean; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Matslist { + @JsonProperty("Matcatname") + private String Matcatname; + private String specifications; + private String manufacturer; + private String nwquantity; + private String utirate; + private String unit; + private String amomoney; + private String unitprice; + private String no; + + public String getMatcatname() { + return Matcatname; + } + + public void setMatcatname(String matcatname) { + Matcatname = matcatname; + } + + public String getSpecifications() { + return specifications; + } + + public void setSpecifications(String specifications) { + this.specifications = specifications; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getNwquantity() { + return nwquantity; + } + + public void setNwquantity(String nwquantity) { + this.nwquantity = nwquantity; + } + + public String getUtirate() { + return utirate; + } + + public void setUtirate(String utirate) { + this.utirate = utirate; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getAmomoney() { + return amomoney; + } + + public void setAmomoney(String amomoney) { + this.amomoney = amomoney; + } + + public String getUnitprice() { + return unitprice; + } + + public void setUnitprice(String unitprice) { + this.unitprice = unitprice; + } + + public String getNo() { + return no; + } + + public void setNo(String no) { + this.no = no; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/PartDocBean.java b/demo_k/src/main/java/com/connor/web/bean/PartDocBean.java new file mode 100644 index 0000000..4619a13 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/PartDocBean.java @@ -0,0 +1,157 @@ +package com.connor.web.bean; + +import com.connor.web.config.Config; +import com.connor.web.util.TCUtil; +import com.teamcenter.services.strong.core.DataManagementService; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.strong.ItemRevision; + +import java.io.File; + +/** + * Created by K on 2019/5/15. + */ +public class PartDocBean { + private String item; + private String btVersion; + private String c1; + private String c2; + private String docNo; + private String verMemo; + private String fileTime; + private String fileItems; + private String outsideSize; + private String machiningType; + private String deliverList; + private String filePath; + + public PartDocBean(ItemRevision part, ItemRevision doc, DataManagementService dataManagementService, Config config) throws Exception { + loadData(part, doc, dataManagementService, config); + } + + private void loadData(ItemRevision part, ItemRevision doc, DataManagementService dataManagementService, Config config) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{part, doc}); + dataManagementService.getProperties(new ModelObject[]{doc}, new String[]{"object_type"}); + String docType = doc.get_object_type(); + this.item = TCUtil.getPropVal(part, "item_id", dataManagementService); + this.btVersion = TCUtil.getPropVal(doc, "unv8_revision", dataManagementService);//unv8_revision + this.c1 = TCUtil.getPropVal(doc, "unv8_class", dataManagementService); + this.c2 = TCUtil.getPropVal(doc, "unv8_subclass", dataManagementService); + this.docNo = TCUtil.getPropVal(doc, "unv8_draw_code", dataManagementService); + this.fileTime = TCUtil.getPropDateVal(doc, "date_released", dataManagementService); + this.fileItems = TCUtil.getAllPartIdFromDoc(doc, dataManagementService); + //外尺寸可能不存在 + String wcc = TCUtil.getWCCFromPart(part, dataManagementService); + if (wcc != null) { + this.outsideSize = wcc; + } + if ("UNV8_SWDocRevision".equals(docType)) { + this.machiningType = TCUtil.getPropVal(doc, "unv8_SCJGSX", dataManagementService); + this.deliverList = TCUtil.getPropVal(doc, "unv8_SYJFJQD", dataManagementService); + } + if ("UNV8_HardwareDocRevision".equals(docType)) { + this.verMemo = TCUtil.getPropVal(doc, "unv8_rev_desc", dataManagementService); + } + //下载文件 + File zipFile = TCUtil.getDocZipFile(doc, dataManagementService, config); + String ftpPath = config.getFtp_path(); + String ftpFileName = doc.get_object_name() + ".zip"; + this.filePath = TCUtil.uploadFileToFTP(zipFile, ftpPath, ftpFileName, config); + } + + public String getItem() { + return item; + } + + public void setItem(String item) { + this.item = item; + } + + public String getBtVersion() { + return btVersion; + } + + public void setBtVersion(String btVersion) { + this.btVersion = btVersion; + } + + public String getC1() { + return c1; + } + + public void setC1(String c1) { + this.c1 = c1; + } + + public String getC2() { + return c2; + } + + public void setC2(String c2) { + this.c2 = c2; + } + + public String getDocNo() { + return docNo; + } + + public void setDocNo(String docNo) { + this.docNo = docNo; + } + + public String getVerMemo() { + return verMemo; + } + + public void setVerMemo(String verMemo) { + this.verMemo = verMemo; + } + + public String getFileTime() { + return fileTime; + } + + public void setFileTime(String fileTime) { + this.fileTime = fileTime; + } + + public String getFileItems() { + return fileItems; + } + + public void setFileItems(String fileItems) { + this.fileItems = fileItems; + } + + public String getOutsideSize() { + return outsideSize; + } + + public void setOutsideSize(String outsideSize) { + this.outsideSize = outsideSize; + } + + public String getMachiningType() { + return machiningType; + } + + public void setMachiningType(String machiningType) { + this.machiningType = machiningType; + } + + public String getDeliverList() { + return deliverList; + } + + public void setDeliverList(String deliverList) { + this.deliverList = deliverList; + } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/QJDocBean.java b/demo_k/src/main/java/com/connor/web/bean/QJDocBean.java new file mode 100644 index 0000000..39640c2 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/QJDocBean.java @@ -0,0 +1,71 @@ +package com.connor.web.bean; + +import com.connor.web.config.Config; +import com.connor.web.util.TCUtil; +import com.teamcenter.services.strong.core.DataManagementService; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.strong.ItemRevision; + +import java.io.File; + +/** + * Created by K on 2019/5/15. + */ +public class QJDocBean { + private String item; + private String vendor; + private String model; + private String filePath; + + public QJDocBean(ItemRevision part, ItemRevision cjxh, ItemRevision doc, DataManagementService dataManagementService, Config config) throws Exception { + loadData(part,cjxh, doc, dataManagementService, config); + } + + private void loadData(ItemRevision part,ItemRevision cjxh, ItemRevision doc, DataManagementService dataManagementService, Config config) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{part, doc}); + dataManagementService.getProperties(new ModelObject[]{doc}, new String[]{"object_type"}); + this.item = TCUtil.getPropVal(part, "item_id", dataManagementService); + ItemRevision vendor=TCUtil.getVendorFromCJXH(cjxh,dataManagementService); + if(vendor!=null){ + this.vendor=TCUtil.getPropVal(vendor,"unv8_supplier_name_simp",dataManagementService); + } + this.model=TCUtil.getPropVal(cjxh,"unv8_mafr_model",dataManagementService); + //下载文件 + File zipFile = TCUtil.getDocZipFile(doc, dataManagementService, config); + String ftpPath = config.getFtp_path(); + String ftpFileName = doc.get_object_name() + ".zip"; + this.filePath = TCUtil.uploadFileToFTP(zipFile, ftpPath, ftpFileName, config); + } + + public String getItem() { + return item; + } + + public void setItem(String item) { + this.item = item; + } + + public String getVendor() { + return vendor; + } + + public void setVendor(String vendor) { + this.vendor = vendor; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/Quotation.java b/demo_k/src/main/java/com/connor/web/bean/Quotation.java new file mode 100644 index 0000000..73c0877 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/Quotation.java @@ -0,0 +1,178 @@ +package com.connor.web.bean; + +public class Quotation { + private String technical; + private String factory; + private String proname; + private String tennumber; + private String promanager; + private String quantity; + private String tramodel; + private String capfactor; + private String volratio; + private String noloadloss; + private String loadloss; + private String impvoltage; + private String traweight; + private String totweight; + private String copconsumption; + private String cmarketprice; + private String vollevel; + private String rectime; + private String state; + + // Getter and Setter methods + + public String getTechnical() { + return technical; + } + + public void setTechnical(String technical) { + this.technical = technical; + } + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } + public String getProname() { + return proname; + } + + public void setProname(String proname) { + this.proname = proname; + } + + public String getTennumber() { + return tennumber; + } + + public void setTennumber(String tennumber) { + this.tennumber = tennumber; + } + + public String getPromanager() { + return promanager; + } + + public void setPromanager(String promanager) { + this.promanager = promanager; + } + + public String getQuantity() { + return quantity; + } + + public void setQuantity(String quantity) { + this.quantity = quantity; + } + + public String getTramodel() { + return tramodel; + } + + public void setTramodel(String tramodel) { + this.tramodel = tramodel; + } + + public String getCapfactor() { + return capfactor; + } + + public void setCapfactor(String capfactor) { + this.capfactor = capfactor; + } + + public String getVolratio() { + return volratio; + } + + public void setVolratio(String volratio) { + this.volratio = volratio; + } + + public String getNoloadloss() { + return noloadloss; + } + + public void setNoloadloss(String noloadloss) { + this.noloadloss = noloadloss; + } + + public String getLoadloss() { + return loadloss; + } + + public void setLoadloss(String loadloss) { + this.loadloss = loadloss; + } + + public String getImpvoltage() { + return impvoltage; + } + + public void setImpvoltage(String impvoltage) { + this.impvoltage = impvoltage; + } + + public String getTraweight() { + return traweight; + } + + public void setTraweight(String traweight) { + this.traweight = traweight; + } + + public String getTotweight() { + return totweight; + } + + public void setTotweight(String totweight) { + this.totweight = totweight; + } + + public String getCopconsumption() { + return copconsumption; + } + + public void setCopconsumption(String copconsumption) { + this.copconsumption = copconsumption; + } + + public String getCmarketprice() { + return cmarketprice; + } + + public void setCmarketprice(String cmarketprice) { + this.cmarketprice = cmarketprice; + } + + public String getVollevel() { + return vollevel; + } + + public void setVollevel(String vollevel) { + this.vollevel = vollevel; + } + + public String getRectime() { + return rectime; + } + + public void setRectime(String rectime) { + this.rectime = rectime; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + // toString method +} diff --git a/demo_k/src/main/java/com/connor/web/bean/QuotationDTO.java b/demo_k/src/main/java/com/connor/web/bean/QuotationDTO.java new file mode 100644 index 0000000..8e3979d --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/QuotationDTO.java @@ -0,0 +1,202 @@ +package com.connor.web.bean; + +import java.util.List; + +public class QuotationDTO { + private String technical; + private String totalprice; + private String factory; + private String proname; + private String tennumber; + private String promanager; + private String quantity; + private String tramodel; + private String capfactor; + private String volratio; + private String noloadloss; + private String loadloss; + + @Override + public String toString() { + return "QuotationDTO{" + + "technical='" + technical + '\'' + + ", totalprice='" + totalprice + '\'' + + ", factory='" + factory + '\'' + + ", proname='" + proname + '\'' + + ", tennumber='" + tennumber + '\'' + + ", promanager='" + promanager + '\'' + + ", quantity='" + quantity + '\'' + + ", tramodel='" + tramodel + '\'' + + ", capfactor='" + capfactor + '\'' + + ", volratio='" + volratio + '\'' + + ", noloadloss='" + noloadloss + '\'' + + ", loadloss='" + loadloss + '\'' + + ", impvoltage='" + impvoltage + '\'' + + ", traweight='" + traweight + '\'' + + ", totweight='" + totweight + '\'' + + ", copconsumption='" + copconsumption + '\'' + + ", cmarketprice='" + cmarketprice + '\'' + + ", vollevel='" + vollevel + '\'' + + '}'; + } + + private String impvoltage; + private String traweight; + private String totweight; + private String copconsumption; + private String cmarketprice; + private String vollevel; + private List materialdet; + + public String getTechnical() { + return technical; + } + + public void setTechnical(String technical) { + this.technical = technical; + } + + public String getTotalprice() { + return totalprice; + } + + public void setTotalprice(String totalprice) { + this.totalprice = totalprice; + } + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } + + public String getProname() { + return proname; + } + + public void setProname(String proname) { + this.proname = proname; + } + + public String getTennumber() { + return tennumber; + } + + public void setTennumber(String tennumber) { + this.tennumber = tennumber; + } + + public String getPromanager() { + return promanager; + } + + public void setPromanager(String promanager) { + this.promanager = promanager; + } + + public String getQuantity() { + return quantity; + } + + public void setQuantity(String quantity) { + this.quantity = quantity; + } + + public String getTramodel() { + return tramodel; + } + + public void setTramodel(String tramodel) { + this.tramodel = tramodel; + } + + public String getCapfactor() { + return capfactor; + } + + public void setCapfactor(String capfactor) { + this.capfactor = capfactor; + } + + public String getVolratio() { + return volratio; + } + + public void setVolratio(String volratio) { + this.volratio = volratio; + } + + public String getNoloadloss() { + return noloadloss; + } + + public void setNoloadloss(String noloadloss) { + this.noloadloss = noloadloss; + } + + public String getLoadloss() { + return loadloss; + } + + public void setLoadloss(String loadloss) { + this.loadloss = loadloss; + } + + public String getImpvoltage() { + return impvoltage; + } + + public void setImpvoltage(String impvoltage) { + this.impvoltage = impvoltage; + } + + public String getTraweight() { + return traweight; + } + + public void setTraweight(String traweight) { + this.traweight = traweight; + } + + public String getTotweight() { + return totweight; + } + + public void setTotweight(String totweight) { + this.totweight = totweight; + } + + public String getCopconsumption() { + return copconsumption; + } + + public void setCopconsumption(String copconsumption) { + this.copconsumption = copconsumption; + } + + public String getCmarketprice() { + return cmarketprice; + } + + public void setCmarketprice(String cmarketprice) { + this.cmarketprice = cmarketprice; + } + + public String getVollevel() { + return vollevel; + } + + public void setVollevel(String vollevel) { + this.vollevel = vollevel; + } + + public List getMaterialdet() { + return materialdet; + } + + public void setMaterialdet(List materialdet) { + this.materialdet = materialdet; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/QuotationMX.java b/demo_k/src/main/java/com/connor/web/bean/QuotationMX.java new file mode 100644 index 0000000..9332c76 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/QuotationMX.java @@ -0,0 +1,148 @@ +package com.connor.web.bean; + +public class QuotationMX { + private String proname; + private String tennumber; + private String matgroup; + private String mgsnumber; + private String matcname; + private String matcnumber; + private String matcatname; + private String specifications; + private String manufacturer; + private String nwquantity; + private String utirate; + private String unit; + private String amomoney; + private String unitprice; + private String no; + private String totalprice; + + public String getProname() { + return proname; + } + + public void setProname(String proname) { + this.proname = proname; + } + + public String getTennumber() { + return tennumber; + } + + public void setTennumber(String tennumber) { + this.tennumber = tennumber; + } + + public String getMatgroup() { + return matgroup; + } + + public void setMatgroup(String matgroup) { + this.matgroup = matgroup; + } + + public String getMgsnumber() { + return mgsnumber; + } + + public void setMgsnumber(String mgsnumber) { + this.mgsnumber = mgsnumber; + } + + public String getMatcname() { + return matcname; + } + + public void setMatcname(String matcname) { + this.matcname = matcname; + } + + public String getMatcnumber() { + return matcnumber; + } + + public void setMatcnumber(String matcnumber) { + this.matcnumber = matcnumber; + } + + public String getMatcatname() { + return matcatname; + } + + public void setMatcatname(String matcatname) { + this.matcatname = matcatname; + } + + public String getSpecifications() { + return specifications; + } + + public void setSpecifications(String specifications) { + this.specifications = specifications; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getNwquantity() { + return nwquantity; + } + + public void setNwquantity(String nwquantity) { + this.nwquantity = nwquantity; + } + + public String getUtirate() { + return utirate; + } + + public void setUtirate(String utirate) { + this.utirate = utirate; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getAmomoney() { + return amomoney; + } + + public void setAmomoney(String amomoney) { + this.amomoney = amomoney; + } + + public String getUnitprice() { + return unitprice; + } + + public void setUnitprice(String unitprice) { + this.unitprice = unitprice; + } + + public String getNo() { + return no; + } + + public void setNo(String no) { + this.no = no; + } + + public String getTotalprice() { + return totalprice; + } + + public void setTotalprice(String totalprice) { + this.totalprice = totalprice; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/ReturnBean1.java b/demo_k/src/main/java/com/connor/web/bean/ReturnBean1.java new file mode 100644 index 0000000..5097707 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/ReturnBean1.java @@ -0,0 +1,58 @@ +package com.connor.web.bean; + +public class ReturnBean1 { + + private String code; + private String weight; + private String drawingno; + private String materialno; + private String name; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } + + public String getDrawingno() { + return drawingno; + } + + public void setDrawingno(String drawingno) { + this.drawingno = drawingno; + } + + public String getMaterialno() { + return materialno; + } + + public void setMaterialno(String materialno) { + this.materialno = materialno; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ReturnBean1(String code, String weight, String drawingno, String materialno, String name) { + this.code = code; + this.weight = weight; + this.drawingno = drawingno; + this.materialno = materialno; + this.name = name; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/SapDetails.java b/demo_k/src/main/java/com/connor/web/bean/SapDetails.java new file mode 100644 index 0000000..c6a4a67 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/SapDetails.java @@ -0,0 +1,23 @@ +package com.connor.web.bean; + +public class SapDetails { + + private String puid; + private String status; + + public String getPuid() { + return puid; + } + + public void setPuid(String puid) { + this.puid = puid; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/SapResult.java b/demo_k/src/main/java/com/connor/web/bean/SapResult.java new file mode 100644 index 0000000..1f47e97 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/SapResult.java @@ -0,0 +1,132 @@ +package com.connor.web.bean; + +public class SapResult { + + private String factory; + private String wbsno; + private String materialno; + private String batchnumber; + private String puid; + private String status; + private String message; + private String createdate; + private String createtime; + private String returndate; + private String returntime; + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } + + public String getWbsno() { + return wbsno; + } + + public void setWbsno(String wbsno) { + this.wbsno = wbsno; + } + + public String getMaterialno() { + return materialno; + } + + public void setMaterialno(String materialno) { + this.materialno = materialno; + } + + public String getBatchnumber() { + return batchnumber; + } + + public void setBatchnumber(String batchnumber) { + this.batchnumber = batchnumber; + } + + public String getPuid() { + return puid; + } + + public void setPuid(String puid) { + this.puid = puid; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getCreatedate() { + return createdate; + } + + public void setCreatedate(String createdate) { + this.createdate = createdate; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getReturndate() { + return returndate; + } + + public void setReturndate(String returndate) { + this.returndate = returndate; + } + + public String getReturntime() { + return returntime; + } + + public void setReturntime(String returntime) { + this.returntime = returntime; + } + + @Override + public String toString() { + return "SapResult{" + + "factory='" + factory + '\'' + + ", wbsno='" + wbsno + '\'' + + ", materialno='" + materialno + '\'' + + ", batchnumber='" + batchnumber + '\'' + + ", puid='" + puid + '\'' + + ", status='" + status + '\'' + + ", message='" + message + '\'' + + ", createdate='" + createdate + '\'' + + ", createtime='" + createtime + '\'' + + ", returndate='" + returndate + '\'' + + ", returntime='" + returntime + '\'' + + '}'; + } + // "factory":"工厂", +// "wbsno":"项目wbs号,可为空", +// "materialno":"父物料编码1", +// "batchnumber":"批次号", +// "puid":"PLM中的物料item_uid", +// "status":"处理结果状态", +// "message":"具体返回的信息内容", +// "createdate":"BOM创建日期", +// "createtime":"BOM创建时间", +// "returndate":"BOM同步日期", +// "returntime":"BOM同步时间" +} diff --git a/demo_k/src/main/java/com/connor/web/bean/SapReturn.java b/demo_k/src/main/java/com/connor/web/bean/SapReturn.java new file mode 100644 index 0000000..2245521 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/SapReturn.java @@ -0,0 +1,23 @@ +package com.connor.web.bean; + +import java.util.List; + +public class SapReturn { + + private List result; + + public List getResult() { + return result; + } + + public void setResult(List result) { + this.result = result; + } + + @Override + public String toString() { + return "SapReturn{" + + "result=" + result + + '}'; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/ScheduleInfoBean.java b/demo_k/src/main/java/com/connor/web/bean/ScheduleInfoBean.java new file mode 100644 index 0000000..b527113 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/ScheduleInfoBean.java @@ -0,0 +1,34 @@ +package com.connor.web.bean; + +import com.connor.web.util.TCUtil; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +/** + * Created by K on 2019/8/13. + */ +public class ScheduleInfoBean { + private List task = new ArrayList<>(); + + public void addTask(TaskInfoBean taskInfoBean){ + task.add(taskInfoBean); + } + + public List getTask() { + return task; + } + + public void sortTasks(List values) + { + Collections.sort(task, new Comparator() { + @Override + public int compare(TaskInfoBean o1, TaskInfoBean o2) { + + return TCUtil.inArray(o1.getName(),values) - TCUtil.inArray(o2.getName(),values); + } + }); + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/SendSapBom.java b/demo_k/src/main/java/com/connor/web/bean/SendSapBom.java new file mode 100644 index 0000000..c4a34ee --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/SendSapBom.java @@ -0,0 +1,82 @@ +package com.connor.web.bean; + +import java.util.List; + +public class SendSapBom { + private String code; //编号 + private String groupId; //组ID + private String userId; //用户 + private String zt2_WBSNo; //wbs号 + private String object_name; //项目名称 + private String projectUid; //项目UID + private List uid; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getZt2_WBSNo() { + return zt2_WBSNo; + } + + public void setZt2_WBSNo(String zt2_WBSNo) { + this.zt2_WBSNo = zt2_WBSNo; + } + + public String getObject_name() { + return object_name; + } + + public void setObject_name(String object_name) { + this.object_name = object_name; + } + + public String getProjectUid() { + return projectUid; + } + + public void setProjectUid(String projectUid) { + this.projectUid = projectUid; + } + + public List getUid() { + return uid; + } + + public void setUid(List uid) { + this.uid = uid; + } + + @Override + public String toString() { + return "SendSapBom{" + + "code='" + code + '\'' + + ", groupId='" + groupId + '\'' + + ", userId='" + userId + '\'' + + ", zt2_WBSNo='" + zt2_WBSNo + '\'' + + ", object_name='" + object_name + '\'' + + ", projectUid='" + projectUid + '\'' + + ", uid=" + uid + + '}'; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/SendSapBomUid.java b/demo_k/src/main/java/com/connor/web/bean/SendSapBomUid.java new file mode 100644 index 0000000..15dbd97 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/SendSapBomUid.java @@ -0,0 +1,4 @@ +package com.connor.web.bean; + +public class SendSapBomUid { +} diff --git a/demo_k/src/main/java/com/connor/web/bean/TaskInfoBean.java b/demo_k/src/main/java/com/connor/web/bean/TaskInfoBean.java new file mode 100644 index 0000000..e26d287 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/TaskInfoBean.java @@ -0,0 +1,94 @@ +package com.connor.web.bean; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by K on 2019/8/13. + */ +public class TaskInfoBean { + + private String name; + private String planTime; + private String planStartTime; + private String actualTime; + private String actualStartTime; + private String people; + private List file; + private int status; + + public TaskInfoBean(String name, String planStartTime,String planTime,String actualStartTime, String actualTime, String people, int status) { + this.name = name; + this.planTime = planTime; + this.planStartTime =planStartTime; + this.actualTime = actualTime; + this.actualStartTime = actualStartTime; + this.people = people; + this.status = status; + this.file = new ArrayList<>(); + } + + public void addFile(FileInfoBean fileInfoBean){ + file.add(fileInfoBean); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPlanTime() { + return planTime; + } + + public void setPlanTime(String planTime) { + this.planTime = planTime; + } + + public String getActualTime() { + return actualTime; + } + + public void setActualTime(String actualTime) { + this.actualTime = actualTime; + } + + public String getPeople() { + return people; + } + + public void setPeople(String people) { + this.people = people; + } + + public List getFile() { + return file; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getPlanStartTime() { + return planStartTime; + } + + public void setPlanStartTime(String planStartTime) { + this.planStartTime = planStartTime; + } + + public String getActualStartTime() { + return actualStartTime; + } + + public void setActualStartTime(String actualStartTime) { + this.actualStartTime = actualStartTime; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/getproject/DB_PRODUCT.java b/demo_k/src/main/java/com/connor/web/bean/getproject/DB_PRODUCT.java new file mode 100644 index 0000000..004043d --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/getproject/DB_PRODUCT.java @@ -0,0 +1,87 @@ +package com.connor.web.bean.getproject; + +public class DB_PRODUCT extends PrintBean{ + + private String netWorkNo; + private String materialNo; + private String materialName; + private String site; + private String tankNo; + private String unit; + private String quantity; + + public DB_PRODUCT(String netWorkNo, String materialNo, String materialName, + String site, String tankNo,String unit,String quantity) { + this.netWorkNo = netWorkNo; + this.materialNo = materialNo; + this.materialName = materialName; + this.site = site; + this.tankNo = tankNo; + this.unit = unit==null?"台":unit; + this.quantity = quantity; + } + + /* + public DB_PRODUCT(String netWorkNo, String materialNo, String materialName) { + this.netWorkNo = netWorkNo; + this.materialNo = materialNo; + this.materialName = materialName; + } + */ + + public String getQuantity() { + return quantity; + } + + public void setQuantity(String quantity) { + this.quantity = quantity; + } + + public String getNetWorkNo() { + return netWorkNo; + } + + public void setNetWorkNo(String netWorkNo) { + this.netWorkNo = netWorkNo; + } + + public String getMaterialNo() { + return materialNo; + } + + public void setMaterialNo(String materialNo) { + this.materialNo = materialNo; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getSite() { + return site; + } + + public void setSite(String site) { + this.site = site; + } + + public String getTankNo() { + return tankNo; + } + + public void setTankNo(String tankNo) { + this.tankNo = tankNo; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/getproject/DB_PROJECT.java b/demo_k/src/main/java/com/connor/web/bean/getproject/DB_PROJECT.java new file mode 100644 index 0000000..f37fc87 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/getproject/DB_PROJECT.java @@ -0,0 +1,222 @@ +package com.connor.web.bean.getproject; + +import java.util.ArrayList; +import java.util.List; + +public class DB_PROJECT extends PrintBean{ + + private String projectName; + private String projectNo; + private String projectState; + private String WBSName; + private String WBSNo; + private String netWorkNo; + private String netWorkName; + private String deliveryDate; + private String number; + private String factory; + private String state; + private String projectManager; + private String projectSource; + private String userIndustry; + private String projectYN; + private String planYN; + private String isImportant; + private String time; +// public DB_PROJECT(String projectName, String projectNo, String projectState, String WBSName, String WBSNo, String netWorkNo, String netWorkName, String deliveryDate, +// String number, String factory, String state, String projectManager, String projectSource, String userIndustry, String isImportant) { +// this.projectName = projectName; +// this.projectNo = projectNo; +// this.projectState = projectState; +// this.WBSName = WBSName; +// this.WBSNo = WBSNo; +// this.netWorkNo = netWorkNo; +// this.netWorkName = netWorkName; +// this.deliveryDate = deliveryDate; +// this.number = number; +// this.factory = factory; +// this.state = state; +// this.projectManager = projectManager; +// this.projectSource = projectSource; +// this.userIndustry = userIndustry; +// this.isImportant = isImportant; +// } + public DB_PROJECT(String projectName, String projectNo, String projectState, String WBSName, String WBSNo, String netWorkNo, String netWorkName, String deliveryDate, String number, String factory, String state, String projectManager, String projectSource, String userIndustry, String projectYN, String planYN, String isImportant) { + this.projectName = projectName; + this.projectNo = projectNo; + this.projectState = projectState; + this.WBSName = WBSName; + this.WBSNo = WBSNo; + this.netWorkNo = netWorkNo; + this.netWorkName = netWorkName; + this.deliveryDate = deliveryDate; + this.number = number; + this.factory = factory; + this.state = state; + this.projectManager = projectManager; + this.projectSource = projectSource; + this.userIndustry = userIndustry; + this.projectYN = projectYN; + this.planYN = planYN; + this.isImportant = isImportant; + } + + public String getProjectYN() { + return projectYN; + } + + public void setProjectYN(String projectYN) { + this.projectYN = projectYN; + } + + public String getPlanYN() { + return planYN; + } + + public void setPlanYN(String planYN) { + this.planYN = planYN; + } + + + /* + public DB_PROJECT(String projectName, String projectNo, String projectState, String WBSName, String WBSNo, String netWorkNo, String netWorkName, String deliveryDate, String number, String state) { + this.projectName = projectName; + this.projectNo = projectNo; + this.projectState = projectState; + this.WBSName = WBSName; + this.WBSNo = WBSNo; + this.netWorkNo = netWorkNo; + this.netWorkName = netWorkName; + this.deliveryDate = deliveryDate; + this.number = number; + this.state = state; + } + */ + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getProjectNo() { + return projectNo; + } + + public void setProjectNo(String projectNo) { + this.projectNo = projectNo; + } + + public String getProjectState() { + return projectState; + } + + public void setProjectState(String projectState) { + this.projectState = projectState; + } + + public String getWBSName() { + return WBSName; + } + + public void setWBSName(String WBSName) { + this.WBSName = WBSName; + } + + public String getWBSNo() { + return WBSNo; + } + + public void setWBSNo(String WBSNo) { + this.WBSNo = WBSNo; + } + + public String getNetWorkNo() { + return netWorkNo; + } + + public void setNetWorkNo(String netWorkNo) { + this.netWorkNo = netWorkNo; + } + + public String getNetWorkName() { + return netWorkName; + } + + public void setNetWorkName(String netWorkName) { + this.netWorkName = netWorkName; + } + + public String getDeliveryDate() { + return deliveryDate; + } + + public void setDeliveryDate(String deliveryDate) { + this.deliveryDate = deliveryDate; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getProjectManager() { + return projectManager; + } + + public void setProjectManager(String projectManager) { + this.projectManager = projectManager; + } + + public String getProjectSource() { + return projectSource; + } + + public void setProjectSource(String projectSource) { + this.projectSource = projectSource; + } + + public String getUserIndustry() { + return userIndustry; + } + + public void setUserIndustry(String userIndustry) { + this.userIndustry = userIndustry; + } + + public String getIsImportant() { + return isImportant; + } + + public void setIsImportant(String isImportant) { + this.isImportant = isImportant; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/getproject/DB_TASK.java b/demo_k/src/main/java/com/connor/web/bean/getproject/DB_TASK.java new file mode 100644 index 0000000..e7dd65a --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/getproject/DB_TASK.java @@ -0,0 +1,58 @@ +package com.connor.web.bean.getproject; + +public class DB_TASK extends PrintBean{ + + private String netWorkNo; + private String activeName; + private String activeNo; + private String plansStart; + private String plansEnd; + + public DB_TASK(String netWorkNo, String activeName, String activeNo, String plansStart, String plansEnd) { + this.netWorkNo = netWorkNo; + this.activeName = activeName; + this.activeNo = activeNo; + this.plansStart = plansStart; + this.plansEnd = plansEnd; + } + + public String getNetWorkNo() { + return netWorkNo; + } + + public void setNetWorkNo(String netWorkNo) { + this.netWorkNo = netWorkNo; + } + + public String getActiveName() { + return activeName; + } + + public void setActiveName(String activeName) { + this.activeName = activeName; + } + + public String getActiveNo() { + return activeNo; + } + + public void setActiveNo(String activeNo) { + this.activeNo = activeNo; + } + + public String getPlansStart() { + return plansStart; + } + + public void setPlansStart(String plansStart) { + this.plansStart = plansStart; + } + + public String getPlansEnd() { + return plansEnd; + } + + public void setPlansEnd(String plansEnd) { + this.plansEnd = plansEnd; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/getproject/Network.java b/demo_k/src/main/java/com/connor/web/bean/getproject/Network.java new file mode 100644 index 0000000..9c9bc4b --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/getproject/Network.java @@ -0,0 +1,99 @@ +package com.connor.web.bean.getproject; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.util.List; +@JsonIgnoreProperties(ignoreUnknown = true) +public class Network extends PrintBean { + private String netWorkNo; + private String netWorkname; + private String deliveryDate; + private String number; + private String factory; + private List task; + private List product; + + public String getNetWorkNo() { + return netWorkNo; + } + + public void setNetWorkNo(String netWorkNo) { + this.netWorkNo = netWorkNo; + } + + public String getNetWorkname() { + return netWorkname; + } + + public void setNetWorkname(String netWorkname) { + this.netWorkname = netWorkname; + } + + public String getDeliveryDate() { + return deliveryDate; + } + + public void setDeliveryDate(String deliveryDate) { + this.deliveryDate = deliveryDate; + } + + public List getTask() { + return task; + } + + public void setTask(List task) { + this.task = task; + } + + public List getProduct() { + return product; + } + + public void setProduct(List product) { + this.product = product; + } + + public String getNumber() { return number;} + + public void setNumber(String number) { this.number = number; } + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } + + public void initDBData(ProjectInfoBean projectInfoBean, Project project, WBS wbs) { + projectInfoBean.db_projects.add(new DB_PROJECT( + project.getProjectName(), + project.getProjectNo(), + project.getProjectState(), + wbs.getWBSName(), + wbs.getWBSNo(), + this.getNetWorkNo(), + this.getNetWorkname(), + this.getDeliveryDate(), + this.getNumber(), + this.getFactory(), + project.getState(), + project.getProjectManager(), + project.getProjectSource(), + project.getUserIndustry(), + project.getProjectYN(), + project.getPlanYN(), + project.getIsImportant() + )); + if(task!=null){ + for(int i=0;i WBS; + + public List getWBS() { + return WBS; + } + + public void setWBS(List wBS) { + this.WBS = wBS; + } + + public Project() { + } + /* + public Project(String projectName, String projectNo, String projectState,String state) { + this.projectName = projectName; + this.projectNo = projectNo; + this.projectState = projectState; + this.state = state; + }*/ + + public Project(String projectName, String projectNo, String projectState, String state, String projectManager, String projectSource, String userIndustry, String projectYN, String planYN, String isImportant, String time, List WBS) { + this.projectName = projectName; + this.projectNo = projectNo; + this.projectState = projectState; + this.state = state; + this.projectManager = projectManager; + this.projectSource = projectSource; + this.userIndustry = userIndustry; + this.projectYN = projectYN; + this.planYN = planYN; + this.isImportant = isImportant; + this.time = time; + this.WBS = WBS; + } + +// public Project(String projectName, String projectNo, String projectState, String state, String projectManager, String projectSource, String userIndustry, String isImportant, List WBS) { +// this.projectName = projectName; +// this.projectNo = projectNo; +// this.projectState = projectState; +// this.state = state; +// this.projectManager = projectManager; +// this.projectSource = projectSource; +// this.userIndustry = userIndustry; +// this.isImportant = isImportant; +// this.WBS = WBS; +// } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getProjectManager() { + return projectManager; + } + + public void setProjectManager(String projectManager) { + this.projectManager = projectManager; + } + + public String getProjectSource() { + return projectSource; + } + + public void setProjectSource(String projectSource) { + this.projectSource = projectSource; + } + + public String getUserIndustry() { + return userIndustry; + } + + public void setUserIndustry(String userIndustry) { + this.userIndustry = userIndustry; + } + + public String getIsImportant() { + return isImportant; + } + + public void setIsImportant(String isImportant) { + this.isImportant = isImportant; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getProjectNo() { + return projectNo; + } + + public void setProjectNo(String projectNo) { + this.projectNo = projectNo; + } + + public String getProjectState() { + return projectState; + } + + public void setProjectState(String projectState) { + this.projectState = projectState; + } + + public void initDBData(ProjectInfoBean projectInfoBean) { + if(WBS!=null){ + for(int i=0;i project; + protected List db_projects = new ArrayList<>(); + protected List db_products = new ArrayList<>(); + protected List db_tasks = new ArrayList<>(); + + public List getDb_projects() { + return db_projects; + } + + public void setDb_projects(List db_projects) { + this.db_projects = db_projects; + } + + public List getDb_products() { + return db_products; + } + + public void setDb_products(List db_products) { + this.db_products = db_products; + } + + public List getDb_tasks() { + return db_tasks; + } + + public void setDb_tasks(List db_tasks) { + this.db_tasks = db_tasks; + } + + public void initDBData(){ + if(project!=null){ + for(int i=0;i getProject() { + return project; + } + + public void setProject(List project) { + this.project = project; + } + + public ProjectInfoBean() { + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/getproject/Result.java b/demo_k/src/main/java/com/connor/web/bean/getproject/Result.java new file mode 100644 index 0000000..c3c2d53 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/getproject/Result.java @@ -0,0 +1,28 @@ +package com.connor.web.bean.getproject; + +public class Result { + + private String info; + private int status; + + public Result(String info, int status) { + this.info = info; + this.status = status; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/getproject/Task.java b/demo_k/src/main/java/com/connor/web/bean/getproject/Task.java new file mode 100644 index 0000000..0f3b20c --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/getproject/Task.java @@ -0,0 +1,53 @@ +package com.connor.web.bean.getproject; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Task extends PrintBean { + private String activeName; + private String activeNo; + private String plansStart; + private String plansEnd; + + public String getActiveName() { + return activeName; + } + + public void setActiveName(String activeName) { + this.activeName = activeName; + } + + public String getActiveNo() { + return activeNo; + } + + public void setActiveNo(String activeNo) { + this.activeNo = activeNo; + } + + public String getPlansStart() { + return plansStart; + } + + public void setPlansStart(String plansStart) { + this.plansStart = plansStart; + } + + public String getPlansEnd() { + return plansEnd; + } + + public void setPlansEnd(String plansEnd) { + this.plansEnd = plansEnd; + } + + public void initDBData(String netWorkNo, ProjectInfoBean projectInfoBean) { + projectInfoBean.db_tasks.add(new DB_TASK( + netWorkNo, + activeName, + activeNo, + plansStart, + plansEnd + )); + } +} diff --git a/demo_k/src/main/java/com/connor/web/bean/getproject/WBS.java b/demo_k/src/main/java/com/connor/web/bean/getproject/WBS.java new file mode 100644 index 0000000..0633860 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/bean/getproject/WBS.java @@ -0,0 +1,43 @@ +package com.connor.web.bean.getproject; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; + +import java.util.List; +@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE) +public class WBS extends PrintBean { + private String WBSName; + private String WBSNo; + private List netWork; + + public String getWBSName() { + return WBSName; + } + + public void setWBSName(String WBSName) { + this.WBSName = WBSName; + } + + public String getWBSNo() { + return WBSNo; + } + + public void setWBSNo(String WBSNo) { + this.WBSNo = WBSNo; + } + + public List getNetWork() { + return netWork; + } + + public void setNetWork(List netWork) { + this.netWork = netWork; + } + + public void initDBData(ProjectInfoBean projectInfoBean, Project project) { + if(netWork!=null){ + for(int i=0;i getGroups(){ +// List groupList = new ArrayList<>(); +// String[] split = tc_group.split(";"); +// groupList.addAll(Arrays.asList(split)); +// return groupList; +// } + +// public void setTc_group(String tc_group) { +// this.tc_group = tc_group; +// } + + public void setGet_schedule_field_wbs(String get_schedule_field_wbs) { + this.get_schedule_field_wbs = get_schedule_field_wbs; + } + + public String getGet_schedule_field_materialno() { + return get_schedule_field_materialno; + } + + public void setGet_schedule_field_materialno(String get_schedule_field_materialno) { + this.get_schedule_field_materialno = get_schedule_field_materialno; + } + + public String getGet_schedule_ccp_query() { + return get_schedule_ccp_query; + } + + public void setGet_schedule_ccp_query(String get_schedule_ccp_query) { + this.get_schedule_ccp_query = get_schedule_ccp_query; + } + + public String getGet_schedule_field_product() { + return get_schedule_field_product; + } + + public void setGet_schedule_field_product(String get_schedule_field_product) { + this.get_schedule_field_product = get_schedule_field_product; + } + + public String getGet_schedule_query() { + return get_schedule_query; + } + + public void setGet_schedule_query(String get_schedule_query) { + this.get_schedule_query = get_schedule_query; + } + + public String getGet_schedule_field_item() { + return get_schedule_field_item; + } + + public void setGet_schedule_field_item(String get_schedule_field_item) { + this.get_schedule_field_item = get_schedule_field_item; + } +} diff --git a/demo_k/src/main/java/com/connor/web/controller/MyRestController.java b/demo_k/src/main/java/com/connor/web/controller/MyRestController.java new file mode 100644 index 0000000..69b2b3a --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/controller/MyRestController.java @@ -0,0 +1,2257 @@ +package com.connor.web.controller; + +import com.DemoKApplication; +import com.alibaba.fastjson2.JSON; +import com.connor.web.bean.*; +import com.connor.web.bean.getproject.*; +import com.connor.web.config.Config; +import com.connor.web.config.QueryConfig; +import com.connor.web.mapper.IDataMapper; +import com.connor.web.mapper.pojo.ScheduleTaskInfo; +import com.connor.web.mapper.pojo.UNV8_category_set; +import com.connor.web.util.FtpUtil; +import com.connor.web.util.RelationUtils; +import com.connor.web.util.TCUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.squareup.okhttp.OkHttpClient; +import com.teamcenter.clientx.Session; +import com.teamcenter.services.internal.loose.core.StructureManagementRestBindingStub; +//import com.teamcenter.services.strong.cad._2007_01.StructureManagement; +import com.teamcenter.services.strong.classification.ClassificationService; +import com.teamcenter.services.strong.classification._2007_01.Classification; +import com.teamcenter.services.strong.core.DataManagementService; +import com.teamcenter.services.strong.core.StructureManagementService; +import com.teamcenter.services.strong.core._2008_06.DataManagement; +import com.teamcenter.services.strong.query.SavedQueryService; +import com.teamcenter.services.strong.query._2006_03.SavedQuery; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.ServiceData; +import com.teamcenter.soa.client.model.strong.*; +import com.teamcenter.services.strong.workflow.WorkflowService; +import com.teamcenter.services.strong.workflow._2014_06.Workflow; +import com.teamcenter.soa.exceptions.NotLoadedException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.configurationprocessor.json.JSONArray; +import org.springframework.boot.configurationprocessor.json.JSONException; +import org.springframework.boot.configurationprocessor.json.JSONObject; +import org.springframework.core.io.FileSystemResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/** + * Created by K on 2018/8/10. + */ + +@RestController +public class MyRestController { + + private static final Logger logger = LoggerFactory.getLogger(MyRestController.class); + + public static Vector groups = new Vector<>(); + @Autowired + private Config config; + @Autowired + private QueryConfig queryConfig; + + @Autowired + private HttpServletRequest request; + + @Autowired + private IDataMapper dataMapper; + + + { + groups.add("M006"); + groups.add("M005"); + groups.add("M008"); + } + + @RequestMapping(value = "/test", method = RequestMethod.GET) + public String test(@RequestBody List materials) { + log("materials:" + materials); + log("size:" + materials.size()); + return "hello world"; + } + + + //20200609废弃 + //@Transactional + // @RequestMapping(value = "/getPart",method = {RequestMethod.GET,RequestMethod.POST}) + public String getMaterial_Part2(@RequestBody List materials) throws Exception { + long time = new Date().getTime(); + String data = ""; + log("maaterials:" + materials); + StringBuilder errMess = new StringBuilder(); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + groups.clear(); + groups.add("M006"); + groups.add("M005"); + groups.add("M008"); + + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Folder homeFolder = user.get_home_folder(); + dataManagementService.getProperties(new ModelObject[]{user}, new String[]{"newstuff_folder"}); + Folder newStuffFolder = user.get_newstuff_folder(); + JSONArray datas = new JSONArray(); + Result rs = null; + TCUtil.byPass(true); + for (int i = 0; i < materials.size(); i++) { + MaterialBean material = materials.get(i); + + log("第" + i + "个:" + material); + ObjectMapper objectMapper = new ObjectMapper(); + if (!groups.contains(material.getCompanyCode())) { + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "1"); + err.put("Info", "非变压\\中压\\高开物料,CompanyCode:" + material.getCompanyCode()); + datas.put(err); + continue; + } + dataMapper.updateMaterial2(material); + String now = format.format(new Date()); + String item_id = material.getGoodsCode(); + + ModelObject items[] = TCUtil.queryItemByID(item_id); + ModelObject itemObj = null; + ModelObject revObj = null; + String uid = ""; + boolean flag = false; + log("item_id[" + item_id + "]查找到的对象个数:" + items.length); + if (items.length > 0) { + log("ERROR:ID[" + item_id + "]在系统中已存在,更新系统对象及数据库!"); + flag = true; + } + int code = material.getCode(); + ServiceData serverData = null; + + boolean hasCode = true; + if (code == 0) {//没有记录 + if (flag) //有对象 + { + log("item_uid:" + items[0].getUid()); + dataManagementService.refreshObjects(new ModelObject[]{items[0]}); + if (items[0] instanceof ItemRevision) { + revObj = items[0]; + uid = revObj.getUid(); + } else { + uid = dataMapper.getRevUidByItemUid(items[0].getUid()); + serverData = dataManagementService.loadObjects(new String[]{uid}); + int n = serverData.sizeOfPlainObjects(); + log("查询个数:" + n); + if (n == 1) { + ModelObject obj = serverData.getPlainObject(0); + revObj = obj; + dataManagementService.refreshObjects(new ModelObject[]{revObj}); + } + } + log("版本UID:" + uid); + //dataManagementService.getProperties(new ModelObject[]{items[0]}, new String[]{"revision_list"}); + //revObj = ((Item) items[0]).get_revision_list()[0]; + //uid = revObj.getUid(); + String q_code = null; + code = dataMapper.queryCodeByPUID(uid); + } + if (code == 0) { + log("开始查询最大值"); + code = dataMapper.queryMaxCode(); + try { + dataMapper.addMaterialNoCode(code, now); + log("插入结束"); // } + } catch (Exception e) { + e.printStackTrace(); + log("插入异常:" + e.getMessage()); + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "-1"); + err.put("Info", "插入异常:" + e.getMessage()); + datas.put(err); + continue; + } + log("开始新增数据Code:" + code); + + } + hasCode = false; + } else { + //存在记录 + log("存在记录,Code:" + code); + List materialLists = dataMapper.queryMaterial(code); + log("--" + materialLists); + if (materialLists == null || materialLists.size() == 0) { + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "-1"); + err.put("Info", "Code请填空或者已存在的,Code:" + material.getCode()); + datas.put(err); + continue; + } + //code = materialLists.get(0).getCode(); + + log("查询结果:" + code); + hasCode = true; + if (flag) { + // log("items2_uid:"+items[0].getUid()); + //dataManagementService.refreshObjects(new ModelObject[]{items[0]}); + //ServiceData serviceData = dataManagementService.getProperties(new ModelObject[]{items[0]}, new String[]{"revision_list"}); + log("item_uid2:" + items[0].getUid()); + dataManagementService.refreshObjects(new ModelObject[]{items[0]}); + if (items[0] instanceof ItemRevision) { + revObj = items[0]; + uid = revObj.getUid(); + } else { + uid = dataMapper.getRevUidByItemUid(items[0].getUid()); + serverData = dataManagementService.loadObjects(new String[]{uid}); + int n = serverData.sizeOfPlainObjects(); + log("查询个数:" + n); + if (n == 1) { + ModelObject obj = serverData.getPlainObject(0); + revObj = obj; + dataManagementService.refreshObjects(new ModelObject[]{revObj}); + } + } + log("版本UID2:" + uid); + + //revObj = ((Item) items[0]).get_revision_list()[0]; + //uid = revObj.getUid(); + } else { + log("查询到的PUID:" + materialLists.get(0).getPuid()); + uid = materialLists.get(0).getPuid() == null ? "" : materialLists.get(0).getPuid(); + log("结果:" + uid); + serverData = dataManagementService.loadObjects(new String[]{uid}); + int n = serverData.sizeOfPlainObjects(); + log("查询个数:" + n); + if (n == 1) { + ModelObject obj = serverData.getPlainObject(0); + if (obj instanceof ItemRevision) { + revObj = obj; + flag = true; + } else { + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "-1"); + err.put("Info", "数据库中PUID列存储信息有误,非版本UID" + material.getCompanyCode()); + datas.put(err); + //errMess.append("当前物料信息有误,非版本对象UID"); + continue; + } + } + } + + } + + + material.setTime(now); + material.setCode(code); + + if (flag) { + //修改 + log("修改"); + try { + ServiceData proDatas = dataManagementService.getProperties(new ModelObject[]{revObj}, new String[]{"item_id"}); + String old_id = revObj.getPropertyDisplayableValue("item_id"); + log("原ID:[" + old_id + "]新ID:[" + item_id + "]"); + + if (item_id.equals(old_id)) { + TCUtil.updatePart(revObj, dataManagementService, material, false, errMess); + } else { + TCUtil.updatePart(revObj, dataManagementService, material, true, errMess); + } + log("更新"); + log("开始更新数据库Code:" + code); + material.set_PUID(uid); + dataMapper.updateMaterial(material); + log("数据库更新结束"); + + } catch (Exception e3) { + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "-1"); + err.put("Info", "物料更新失败,ERROR" + e3.getMessage()); + datas.put(err); + continue; + } + } else { + log("创建"); + try { + new Thread(new Runnable() { + @Override + public void run() { + try { + ModelObject obj2 = TCUtil.createPart(material, dataManagementService, newStuffFolder); + String uid2 = obj2.getUid(); + log("开始更新数据库Code:"); + material.set_PUID(uid2); + dataMapper.updateMaterial(material); + log("数据库更新结束"); + } catch (Exception e) { + e.printStackTrace(); + } + + } + }).start(); + + /* + if (obj2 instanceof ItemRevision) { + revObj = obj2; + }*/ + } catch (Exception e) { + //errMess.append("创建对象["+item_id+"]出现意外:" + e.getMessage()); + log("创建对象[\"+item_id+\"]出现意外:" + e.getMessage()); + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "-1"); + err.put("Info", "创建对象[\"+item_id+\"]出现意外:" + e.getMessage()); + datas.put(err); + continue; + } + } + + /* + try{ + + if(revObj != null) { + String bpno = material.getBpNo(); + if (bpno.length() > 0) { + ModelObject tzRev = TCUtil.queryPart(bpno); + if (tzRev != null && revObj != null) { + dataManagementService.getProperties(new ModelObject[]{tzRev}, new String[]{"item_id"}); + if (tzRev instanceof ItemRevision) { + log("图纸ID:[" + ((ItemRevision) tzRev).get_item_id() + "]"); + log("开始添加关系"); + TCUtil.createRelation(revObj, tzRev, "TC_Is_Represented_By", dataManagementService); + log("添加关系结束"); + } + } + } + log("开始发布流程"); + TCUtil.createTCM(revObj, "TCM Release Process"); + log("流程发布结束"); + } + }catch(Exception e2) + { + JSONObject err = new JSONObject(); + err.put("GoodsCode",material.getCompanyCode()); + err.put("State","-1"); + err.put("Info","物料[\"+item_id+\"]与图纸["+material.getBpNo()+"]添加关系时发生错误,ERROR:" + e2.getMessage()); + datas.put(err); + continue; + } +*/ + + + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "1"); + err.put("Info", "物料同步成功"); + datas.put(err); + + } + TCUtil.byPass(false); + //rs = new Result("物料同步结束",1); + //ObjectMapper objectMapper = new ObjectMapper(); + //data = objectMapper.writeValueAsString(rs); + double t = (new Date().getTime() - time) / 1000.0; + log("物料同步耗时:" + t + "秒"); + log("返回数据:" + datas.toString()); + return datas.toString(); + } + + + @RequestMapping(value = "/testcreate", method = {RequestMethod.GET, RequestMethod.POST}) + public String test(@RequestParam String item) throws Exception { + log("登录:" + config.getTc_url()); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + com.teamcenter.services.strong.core._2008_06.DataManagement.CreateInput revInput = new com.teamcenter.services.strong.core._2008_06.DataManagement.CreateInput(); + revInput.boName = "Part Revision"; + Map revPropMap = new HashMap<>(); + revPropMap.put("item_revision_id", "000"); + // revPropMap.put("zt2_MaterialNo", "0001111"); + revInput.stringProps = revPropMap; + //create rev + com.teamcenter.services.strong.core._2008_06.DataManagement.CreateInput itemInput = new com.teamcenter.services.strong.core._2008_06.DataManagement.CreateInput(); + itemInput.boName = "Part"; + Map itemPropMap = new HashMap<>(); + itemPropMap.put("item_id", item); + itemPropMap.put("object_name", "kk"); + itemPropMap.put("object_desc", "k2"); + itemInput.stringProps = itemPropMap; + Map revInfoMap = new HashMap<>(); + revInfoMap.put("revision", new com.teamcenter.services.strong.core._2008_06.DataManagement.CreateInput[]{revInput}); + itemInput.compoundCreateInput = revInfoMap; + //create info + DataManagement.CreateIn cI = new DataManagement.CreateIn(); + //cI.clientId="CreateItem"; + cI.data = itemInput; + //service + DataManagementService service = DataManagementService.getService(Session.getConnection()); + //create + DataManagement.CreateResponse resp = service.createObjects(new DataManagement.CreateIn[]{cI}); + TCUtil.throwServiceDataError(resp.serviceData); + DataManagement.CreateOut[] cOs = resp.output; + System.out.println("length:" + cOs.length); + ModelObject[] objs = cOs[0].objects; + System.out.println("length2:" + objs.length); + for (int i = 0; i < objs.length; i++) { + System.out.println(i + "-->[" + objs[i].getUid() + "]Type=[" + objs[i].getTypeObject().getName() + "]"); + } + ModelObject[] itemObjs = {objs[0]}; + ModelObject[] revObjs = {objs[2]}; + Map revMaps = new HashMap<>(); + + + com.teamcenter.services.strong.core._2007_01.DataManagement.VecStruct vec1 = new com.teamcenter.services.strong.core._2007_01.DataManagement.VecStruct(); + vec1.stringVec = new String[]{"20191820"}; + revMaps.put("zt2_MaterialNo", vec1); + service.setProperties(revObjs, revMaps); + + + //TCUtil.throwServiceDataError(resp.serviceData); + + + return "ok"; + } + + + @RequestMapping(value = "/getFile", method = {RequestMethod.GET, RequestMethod.POST}) + public ResponseEntity getFile(@RequestParam String id) throws Exception { + log(">> 开始执行:获取TC中物理文件"); + log("id = " + id); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + String tempFolder = TCUtil.getFMSTempFolder(config, id); + log("临时文件夹:" + tempFolder); + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + + ModelObject obj = TCUtil.string_to_component(dataManagementService, id); + if (obj == null) { + throw new Exception("通过UID = " + id + "未查询到数据集"); + } + if (!(obj instanceof Dataset)) { + throw new Exception("UID = " + id + " 不是数据集对象"); + } + List dsFiles = TCUtil.getDatasetFile((Dataset) obj, dataManagementService, config, tempFolder); + log(("从数据集共找到" + dsFiles.size() + "个文件")); + if (dsFiles.size() == 0) { + throw new Exception("数据集中不存在引用文件"); + } + session.logout(); + return export(dsFiles.get(0)); + } + + @Transactional + @RequestMapping(value = "/getCoreweight", method = {RequestMethod.GET, RequestMethod.POST}) + public String getCoreweight(@RequestBody CoreBean coreBean) throws Exception { + + log(">> 开始执行:getCoreweight"); + log("jSONObject = " + coreBean); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + String productno = coreBean.getProductno(); + String wbsno = coreBean.getWbsno(); + //根据查询搜索到线圈物料 + String code = "500"; + Map fields = new HashMap<>(); + fields.put("materialno", productno); + fields.put("WBS No", wbsno); + String weight = "";//0.0; + ModelObject[] chint_query_material_updates = TCUtil.query("chint_query_material_test", fields); + if (chint_query_material_updates.length > 0) { + ModelObject item = chint_query_material_updates[0]; + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"TC_Is_Represented_By"}); + ModelObject[] modelObjectValue = item.getPropertyObject("TC_Is_Represented_By").getModelObjectArrayValue(); //物料对象 + if (modelObjectValue.length > 0) { + ModelObject modelObject = modelObjectValue[0]; + dataManagementService.getProperties(new ModelObject[]{modelObject}, new String[]{"item_id"}); + String item_id = modelObject.getPropertyObject("item_id").getStringValue(); + String[] split = item_id.split("-"); + String id = "1ZDB400000T-" + split[1]; + ModelObject[] designs = TCUtil.queryItemByID(id); + if (designs.length > 0) { + Item design = (Item) designs[0]; + dataManagementService.getProperties(new ModelObject[]{design}, new String[]{"revision_list"}); + ModelObject[] revision_list = design.get_revision_list(); + ItemRevision revision = (ItemRevision) revision_list[revision_list.length - 1]; + dataManagementService.getProperties(new ModelObject[]{revision}, new String[]{"zt2_DesignWeight"}); + double zt2_designWeight = revision.getPropertyObject("zt2_DesignWeight").getDoubleValue(); + code = "200"; + String format = String.format("%.3f", zt2_designWeight); + System.out.println(String.valueOf(zt2_designWeight)); + weight = format.toString(); + } + } + } + + CoreBeanReturn rs = new CoreBeanReturn(productno, wbsno, weight, code); +// Result rs = new Result("",1); + ObjectMapper objectMapper = new ObjectMapper(); + String data = objectMapper.writeValueAsString(rs); + log("返回数据:" + data + "\n"); + session.logout(); + return data; + } + + @Transactional + @RequestMapping(value = "/GetSinglephasecoil", method = {RequestMethod.GET, RequestMethod.POST}) + public String getSinglephasecoil(@RequestBody GetCoilBean getCoilBean) throws Exception { +// ProjectInfoBean projInfo + log(">> 开始执行:getSinglephasecoil"); + log("jSONObject = " + getCoilBean); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + String materialno2 = getCoilBean.getMaterialno(); + //根据查询搜索到线圈物料 + Map fields = new HashMap<>(); + fields.put("materialno", materialno2); + ModelObject[] chint_query_material_updates = TCUtil.query("chint_query_material_update", fields); + + String code = "500"; + String weight = ""; + String drawingno = ""; + String materialno = materialno2; + String name = ""; + for (ModelObject chint_query_material_update : chint_query_material_updates) { + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedInputData inputData = new com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedInputData(); + com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedInputData[] datas = new com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedInputData[1]; + inputData.useLocalParams = false; +// ModelObject chint_query_material_update = chint_query_material_updates[0]; + if (chint_query_material_update instanceof ItemRevision) { + dataManagementService.getProperties(new ModelObject[]{chint_query_material_update}, new String[]{"object_name"}); + name = ((ItemRevision) chint_query_material_update).get_object_name(); + inputData.inputObject = (ItemRevision) chint_query_material_update; + } + datas[0] = inputData; + com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedConfigParameters parameters = new com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedConfigParameters(); + parameters.boolMap.put("whereUsedPreciseFlag", false); + parameters.intMap.put("numLevels", new BigInteger("1")); + + com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedResponse whereUsedResponse = dataManagementService.whereUsed(datas, parameters); + if (whereUsedResponse.output.length > 0) { + com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedParentInfo[] info = whereUsedResponse.output[0].info; + for (com.teamcenter.services.strong.core._2012_02.DataManagement.WhereUsedParentInfo in : info) { + WorkspaceObject parentObject = in.parentObject; + if (parentObject instanceof ItemRevision) { + ItemRevision parentRev = (ItemRevision) parentObject; + dataManagementService.getProperties(new ModelObject[]{parentRev}, new String[]{"object_type"}); + if (!parentRev.get_object_type().contains("Part")) { + continue; + } + dataManagementService.getProperties(new ModelObject[]{parentRev}, new String[]{"TC_Is_Represented_By"}); + ModelObject[] modelObjectValue = parentRev.getPropertyObject("TC_Is_Represented_By").getModelObjectArrayValue(); //物料对象 + if (modelObjectValue != null && modelObjectValue.length > 0) { + ItemRevision designRev = (ItemRevision) modelObjectValue[0]; + dataManagementService.getProperties(new ModelObject[]{designRev}, new String[]{"item_id", "zt2_DesignWeight"}); + drawingno = designRev.get_item_id(); + if (drawingno.contains("-")) { + String[] split = drawingno.split("-"); + String topId = "1ZDB300000P" + "-" + split[1]; + + ModelObject[] designs = TCUtil.queryItemByID(topId); + if (designs.length > 0) { + Item design = (Item) designs[0]; + System.out.println(design.getUid()); + ClassificationService service = ClassificationService.getService(Session.getConnection()); + Classification.FindClassificationObjectsResponse classificationObjects1 = service.findClassificationObjects(new WorkspaceObject[]{design}); +// Classification.FindClassifiedObjectsResponse classifiedObjects = service.findClassifiedObjects(new ModelObject[]{design}); + Classification.GetAttributesForClassesResponse attributesForClasses = service.getAttributesForClasses(new String[]{"ICM230101"}); + Map attributes = attributesForClasses.attributes; + System.out.println(attributes.toString()); + Classification.ClassAttribute[] icm220101s = attributes.get("ICM230101"); + int ids = 0; + for (Classification.ClassAttribute icm220101 : icm220101s) { + System.out.println("name" + icm220101.name + "idsss" + icm220101.id); + if (icm220101.name.equals("相数")) { + ids = icm220101.id; + break; + } + } + int len = 1; + Map icos = classificationObjects1.icos; + if (icos.size() > 0) { + Classification.GetClassificationObjectsResponse classificationObjects = + service.getClassificationObjects(icos.get(design)); + Map clsObjs = classificationObjects.clsObjs; + for (ModelObject mod : clsObjs.keySet()) { + System.out.println(mod.getUid()); + Classification.ClassificationObject classificationObject = clsObjs.get(mod); + Classification.ClassificationProperty[] properties = classificationObject.properties; + for (Classification.ClassificationProperty property : properties) { + if (property.attributeId == ids) { + if (!property.values[0].dbValue.equals("")) { + len = Integer.valueOf(property.values[0].dbValue); + code = "200"; + } + } + } + } + } + double res = 0; + double zt2_designWeight = designRev.getPropertyObject("zt2_DesignWeight").getDoubleValue(); + res = zt2_designWeight / len; + String format = String.format("%.3f", res); + weight = format; + } + } + + } + } + } + } + if (code.equals("200")) { + break; + } + } + ReturnBean1 rs = new ReturnBean1(code, weight, drawingno, materialno, name); +// Result rs = new Result("",1); + ObjectMapper objectMapper = new ObjectMapper(); + String data = objectMapper.writeValueAsString(rs); + log("返回数据:" + data + "\n"); + session.logout(); + return data; + } + + @Transactional + @RequestMapping(value = "/getProject", method = {RequestMethod.GET, RequestMethod.POST}) + public String getProject(@RequestBody ProjectInfoBean projInfo) throws Exception { + //project = "{\"project\":[{\"projectName\":\"100001\",\"projectNo\":\"10KV\",\"projectState\":\"正常\",\"state\":\"已创建\",\"WBS\":[{\"WBSName\":\"变压器\",\"WBSNo\":\"100001002\",\"netWork\":[{\"netWorkNo\":\"1111112\",\"netWorkname\":\"123123\",\"deliveryDate\":\"20190909\",\"task\":[{\"activeName\":\"100001001001\",\"activeNo\":\"变压器设计\",\"plansStart\":\"20190815\",\"plansEnd\":\"20190830\"}],\"product\":[{\"materialNo\":\"20000000\",\"materialName\":\"变压器\"}]}]}]}]}"; + log(">> 开始执行:getProject"); + log("project: " + projInfo); + /*ObjectMapper om = new ObjectMapper(); + om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + ProjectInfoBean projInfo = om.readValue(project,new TypeReference(){}); + log("解析结果:"+projInfo);*/ + projInfo.initDBData(); + log("项目数据:\n" + projInfo.getDb_projects()); + log("任务数据:\n" + projInfo.getDb_tasks()); + log("产品数据:\n" + projInfo.getDb_products()); + log("factory:" + projInfo.getDb_projects().get(0).getFactory()); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String now = format.format(new Date()); + System.out.println("now:" + now); + List resetNetworkNos = new ArrayList<>(); + + + //写入数据库 + for (int i = 0; i < projInfo.getDb_projects().size(); i++) { + DB_PROJECT data = projInfo.getDb_projects().get(i); + String factory = projInfo.getDb_projects().get(0).getFactory(); + String netNo = data.getNetWorkNo(); + log("准备添加项目数据:" + data); + List existedProjs = dataMapper.queryProject(netNo); + if (existedProjs.size() > 0) { + String state = existedProjs.get(0).getState();// data.getState(); + log("项目已存在,state = " + state); + if ("已创建".equals(state)) { + state = "已变更"; + } + if ("未创建".equals(state) || "已变更".equals(state)) { + log("更新项目状态:state = " + state); + int row = dataMapper.updateProjectState(netNo, state, now, factory); + if (row != 1) { + throw new Exception("更新项目状态失败:" + data); + } + log("更新完成"); + } else { + throw new Exception("未知状态 state = " + state); + } + resetNetworkNos.add(netNo); + } else { + log("首次添加项目 state = 未创建"); + data.setState("未创建"); + data.setTime(now); + int row = dataMapper.addProjectData(data); + if (row != 1) { + throw new Exception("插入数据失败:" + data); + } + log("添加成功"); + } + } + + for (int i = 0; i < resetNetworkNos.size(); i++) { + String netNo = resetNetworkNos.get(i); + log("删除旧PRODUCT数据...netWorkNo = " + netNo); + int row = dataMapper.removeProductData(netNo); + log("删除了" + row + "行数据"); + log("删除旧TASK数据...netWorkNo = " + netNo); + row = dataMapper.removeTaskData(netNo); + log("删除了" + row + "行数据"); + } + + for (int i = 0; i < projInfo.getDb_tasks().size(); i++) { + DB_TASK data = projInfo.getDb_tasks().get(i); + log("插入TASK数据 >> " + data); + int row = dataMapper.addTaskData(data); + if (row != 1) { + throw new Exception("插入数据失败:" + data); + } + } + + for (int i = 0; i < projInfo.getDb_products().size(); i++) { + DB_PRODUCT data = projInfo.getDb_products().get(i); + System.out.println("单位:" + data.getUnit()); + if (data.getUnit() == null || data.getUnit().equals("")) { + data.setUnit("台"); + System.out.println("设置单位:" + data.getUnit()); + } + log("插入PRODUCT数据 >> " + data); + int row = dataMapper.addProductData(data); + if (row != 1) { + throw new Exception("插入数据失败:" + data); + } + } + +// OkHttpClient client = new OkHttpClient(); +// com.squareup.okhttp.MediaType mediaType = com.squareup.okhttp.MediaType.parse("application/json;charset=UTF-8"); +// com.squareup.okhttp.RequestBody body = com.squareup.okhttp.RequestBody.create(mediaType,str); +// com.squareup.okhttp.Request request = new com.squareup.okhttp.Request.Builder().url("http://10.0.14.5:31465/api/change") +// .method("POST", body) +// // .addHeader("Cookie", "") +//// .addHeader("Authorization", "Bearer "+token) +// // .addHeader("Connection", "keep-alive") +// .addHeader("Content-Type", "application/json") +// .build(); +// com.squareup.okhttp.Response response = client.newCall(request).execute(); +// // response.body().byteStream() +// // System.out.println(response.body().string()); +// JSONObject parseObject = JSON.parseObject(response.body().string()); +// Boolean bool = parseObject.getBoolean("success"); +// if(!bool) { +// String msg = parseObject.getString("msg"); +// System.out.println(msg); +// }else { +// System.out.println("success"); +// } + + Result rs = new Result("", 1); + ObjectMapper objectMapper = new ObjectMapper(); + String data = objectMapper.writeValueAsString(rs); + log("返回数据:" + data + "\n"); + return data; + } + + @RequestMapping(value = "/getSchedule", method = {RequestMethod.GET, RequestMethod.POST}) + public String getSchedule(@RequestParam String item, @RequestParam String product) throws Exception { + log(">> 开始执行:获取TC中时间表信息"); + log("item = " + item); + log("product = " + product); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + Map fields = new HashMap<>(); + // 原来查询 + fields.put(queryConfig.getGet_schedule_field_wbs(), item + "*"); + fields.put(queryConfig.getGet_schedule_field_materialno(), product); + //ModelObject[] items = TCUtil.query(queryConfig.getGet_schedule_query(), fields); + + + /*ModelObject object=queryItems("chint_query_material",new String[]{"materialno","WBS No"},new String[]{product,item+"*"}); + if(object==null) + { + throw new Exception("通过 item = "+item+", product = " + product + " 查询不到对象"); + }*/ + TCUtil.byPass(true); + ScheduleInfoBean sch = new ScheduleInfoBean(); + ObjectMapper objectMapper = new ObjectMapper(); + ModelObject[] items = TCUtil.query(queryConfig.getGet_schedule_ccp_query(), fields); + if (items == null || items.length == 0) { + log("通过 item = " + item + ", product = " + product + " 查询不到对象"); + TCUtil.byPass(false); + session.logout(); + return "通过 item = " + item + ", product = " + product + " 查询不到对象"; + // throw new Exception("通过 item = "+item+", product = " + product + " 查询不到对象"); + } + int len = items.length; + log("通过 item = " + item + ", product = " + product + " 查询到" + len + "个对象"); + + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + + ModelObject projectItem = TCUtil.queryProjectByPart(dataManagementService, items[0]); + if (projectItem == null) { + //throw new Exception("该产成品未在项目中"); + log("该产成品未在项目中"); + TCUtil.byPass(false); + session.logout(); + return "该产成品未在项目中"; + } + + + Item target = (Item) projectItem; + List schedules = TCUtil.getScheduleFromXM01((Item) projectItem, product, dataManagementService); + int schCnt = schedules.size(); + log("查到到" + schCnt + "个时间表对象"); + if (schCnt == 0) { + //throw new Exception("通过 item = " + item + ", product = " + product + " 未查询到时间表对象"); + log("通过 item = " + item + ", product = " + product + " 未查询到时间表对象"); + TCUtil.byPass(false); + session.logout(); + return "通过 item = " + item + ", product = " + product + " 未查询到时间表对象"; + } + dataManagementService.getProperties(new ModelObject[]{target}, new String[]{"owning_group"}); + com.teamcenter.soa.client.model.Property prop = target.getPropertyObject("owning_group"); + + ModelObject arr = prop.getModelObjectValue(); + dataManagementService.refreshObjects(new ModelObject[]{arr}); + dataManagementService.getProperties(new ModelObject[]{arr}, new String[]{"name"}); + String groupName = arr.getPropertyObject("name").getStringValue(); + //log("name2:"+name2); + String th = ""; + log("项目所属组:" + groupName); + if (groupName.equals("M005")) { + log("开始获取变压器项目图号"); + ModelObject projectCon = TCUtil.queryProjectFolerByItem(dataManagementService, projectItem); + if (projectCon != null) { + dataManagementService.getProperties(new ModelObject[]{projectCon}, new String[]{"object_name", "object_string"}); + String con_name = projectCon.getPropertyDisplayableValue("object_name"); + String con_string = projectCon.getPropertyDisplayableValue("object_string"); + log("找到项目合同:" + con_string); + int index = con_name.indexOf("-"); + if (index != -1) + th = con_name.substring(index + 1, index + 5); + log("图号:" + th); + } + } + List values = new ArrayList<>(6); + values.add("电磁设计"); + values.add("总装设计"); + values.add("一次设计"); + values.add("二次设计"); + values.add("结构设计"); + + + //values.add(""); + String group_folderName = config.getGroup_folderName(); + String[] groups = group_folderName.split("#~#"); + HashMap> groupMap = new HashMap>(); + for (String group : groups) { + String[] folderName = group.split("="); + List list = new ArrayList(); + if (folderName.length > 1) { + String[] folderNames = folderName[1].split(","); + Collections.addAll(list, folderNames); + } + groupMap.put(folderName[0], list); + } + List folderList = groupMap.get(groupName); + if (folderList == null) { + log("非变压/中压项目!!!"); + TCUtil.byPass(false); + session.logout(); + return "非变压/中压项目!!!\""; + } + for (int i = 0; i < schCnt; i++) { + String schUid = schedules.get(i).getUid(); + List scheduleTaskInfos = dataMapper.queryScheduleTaskInfoBySchUid(schUid); + log((i + 1) + ". 查询时间表信息 UID = " + schUid + ",任务数量:" + scheduleTaskInfos.size()); + for (ScheduleTaskInfo s : scheduleTaskInfos) { + String taskname = s.getTaskname(); + for (String folder : folderList) { + if (folder.contains(taskname)) { + String resources = s.getResources(); + String planStartDate = s.getPlanStartDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getPlanStartDate()); + String actualStartDate = s.getPlanStartDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getActualFinishDate()); + String finishDate = s.getFinishDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getFinishDate()); + String actualFinishDate = s.getActualFinishDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getActualFinishDate()); + int status = TCUtil.getScheduleTaskStatus(s.getStatus()); + String[] folders = folder.split("##"); + if (folders.length > 1) { + taskname = folders[1]; + } + TaskInfoBean task = new TaskInfoBean(taskname, planStartDate, finishDate, actualStartDate, actualFinishDate, resources, status); + sch.addTask(task); + break; + } + } + } + + +// if(groupName.equals("M005")) +// { +// for (ScheduleTaskInfo s : scheduleTaskInfos) { +// String taskname = s.getTaskname(); +// if(taskname.contains("电磁设计") || taskname.contains("总装设计") || taskname.contains("二次设计") ) { +// //if(taskname.contains("电磁设计") || taskname.contains("结构设计") || taskname.contains("二次控制设计") ) { +// String resources = s.getResources(); +// String planStartDate = s.getPlanStartDate()==null?null:TCUtil.DATE_FORMAT.format(s.getPlanStartDate()); +// String actualStartDate = s.getPlanStartDate()==null?null:TCUtil.DATE_FORMAT.format(s.getActualFinishDate()); +// String finishDate = s.getFinishDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getFinishDate()); +// String actualFinishDate = s.getActualFinishDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getActualFinishDate()); +// int status = TCUtil.getScheduleTaskStatus(s.getStatus()); +// TaskInfoBean task = new TaskInfoBean(taskname, finishDate, actualFinishDate, resources, status); +// sch.addTask(task); +// } +// } +// }else if(groupName.equals("M008")) +// { +// for (ScheduleTaskInfo s : scheduleTaskInfos) { +// String taskname = s.getTaskname(); +// if (taskname.contains("一次设计") || taskname.contains("二次设计") || taskname.contains("结构设计")) { +// String resources = s.getResources(); +// String planStartDate = s.getPlanStartDate()==null?null:TCUtil.DATE_FORMAT.format(s.getPlanStartDate()); +// String actualStartDate = s.getPlanStartDate()==null?null:TCUtil.DATE_FORMAT.format(s.getActualFinishDate()); +// String finishDate = s.getFinishDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getFinishDate()); +// String actualFinishDate = s.getActualFinishDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getActualFinishDate()); +// int status = TCUtil.getScheduleTaskStatus(s.getStatus()); +// TaskInfoBean task = new TaskInfoBean(taskname, finishDate, actualFinishDate, resources, status); +// sch.addTask(task); +// } +// } +// }else +// { +// //throw new Exception("非变压/中压项目!!!"); +// log("非变压/中压项目!!!"); +// TCUtil.byPass(false); +// session.logout(); +// return "非变压/中压项目!!!\""; +// } + + } + sch.sortTasks(values); + /* + for (int i = 0; i < schCnt; i++) { + String schUid = schedules.get(i).getUid(); + List scheduleTaskInfos = dataMapper.queryScheduleTaskInfoBySchUid(schUid); + log((i + 1) + ". 查询时间表信息 UID = " + schUid + ",任务数量:" + scheduleTaskInfos.size()); + for (ScheduleTaskInfo s : scheduleTaskInfos) { + String taskname = s.getTaskname(); + String resources = s.getResources(); + String finishDate = s.getFinishDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getFinishDate()); + String actualFinishDate = s.getActualFinishDate() == null ? null : TCUtil.DATE_FORMAT.format(s.getActualFinishDate()); + int status = TCUtil.getScheduleTaskStatus(s.getStatus()); + TaskInfoBean task = new TaskInfoBean(taskname, finishDate, actualFinishDate, resources, status); + sch.addTask(task); + } + }*/ +// Map> fileInfoMap = new HashMap<>(); +// log("开始查询文件信息..."); +// Folder projExecFolder = TCUtil.getProjFolderFromXM01((Item) projectItem,product, dataManagementService, TCUtil.NAME_PROJEXEC); +// if (projExecFolder == null) { +// log("没有找到文件夹:" + TCUtil.NAME_PROJEXEC); +// } else { +// for (TaskInfoBean bean : sch.getTask()) { +// String taskName = bean.getName(); +// if (fileInfoMap.containsKey(taskName)) { +// bean.getFile().addAll(fileInfoMap.get(taskName)); +// } else { +// List files = TCUtil.getFileFromXM02(projExecFolder, dataManagementService, taskName,groupName,th); +// fileInfoMap.put(taskName, files); +// bean.getFile().addAll(files); +// } +// } +// } +// if(groupName.equals("M005")) +// { + for (TaskInfoBean bean : sch.getTask()) { + for (String folder : folderList) { + if (folder.contains(bean.getName())) { + String[] folders = folder.split("##"); + if (folders.length > 1) { + bean.setName(folders[1]); + } + } + } +// String taskName = bean.getName(); +// if(taskName.contains("总装设计")) +// { +// bean.setName("结构设计"); +// }else if(taskName.contains("二次设计")) +// { +// bean.setName("二次控制设计"); +// } + } +// } + // if(taskname.contains("电磁设计") || taskname.contains("总装设计") || taskname.contains("二次设计") ) { + //if(taskname.contains("电磁设计") || taskname.contains("结构设计") || taskname.contains("二次控制设计") ) { + + String data = objectMapper.writeValueAsString(sch); + log("返回数据:" + data + "\n"); + TCUtil.byPass(false); + session.logout(); + return data; + } + + + public ResponseEntity export(File file) { + if (file == null) { + return null; + } + String fileName = file.getName(); + log("返回文件名称:" + fileName); + try { + //fileName = URLEncoder.encode(file.getName(),"UTF-8"); + fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1"); + } catch (Exception e) { + e.printStackTrace(); + } + HttpHeaders headers = new HttpHeaders(); + headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); + headers.add("Content-Disposition", "attachment; filename=" + fileName); + headers.add("Pragma", "no-cache"); + headers.add("Expires", "0"); + headers.add("Last-Modified", new Date().toString()); + headers.add("ETag", String.valueOf(System.currentTimeMillis())); + return ResponseEntity + .ok() + .headers(headers) + .contentLength(file.length()) + .contentType(MediaType.parseMediaType("application/octet-stream")) + .body(new FileSystemResource(file)); + } + + + //@RequestMapping(value = "/file/**", method = {RequestMethod.GET, RequestMethod.POST}) + public ResponseEntity getFtpFile() throws Exception { + String reqPath = request.getServletPath().substring(5); + log("请求路径:" + reqPath); + String folder = ""; + String file = reqPath; + int ind = reqPath.lastIndexOf("/"); + if (ind > 0) { + folder = reqPath.substring(0, ind); + file = reqPath.substring(ind + 1); + } + String filePath = "ftp://" + config.getFtp_url() + ":" + config.getFtp_port() + reqPath; + log("FTP文件路径:" + filePath); + String tempFolder = TCUtil.getFMSTempFolder(config, "download"); + File f = new File(tempFolder); + if (!f.isDirectory()) { + if (!f.mkdirs()) { + throw new Exception("新建临时文件夹失败:" + tempFolder); + } + } + File ftpfile = FtpUtil.downloadFtpFile(config.getFtp_url(), config.getFtp_user(), config.getFtp_pwd(), config.getFtp_port(), folder, tempFolder, file, file); + if (ftpfile == null || !ftpfile.exists()) { + throw new Exception("文件下载失败"); + } + log("下载文件成功:" + ftpfile.getAbsolutePath()); + return export(ftpfile); + } + + + //http://localhost:8080/api/getExportFile?Item=123&c1=1&c2=2&FORM_ID=3 + //@RequestMapping(value = "/getExportFile", method = {RequestMethod.GET, RequestMethod.POST}) + public String getExportFile(@RequestParam String Item, @RequestParam String c1, @RequestParam String c2, @RequestParam String FORM_ID) throws Exception { + log(">> 开始执行:获取文档属性及物料文件"); + log("Item = " + Item); + log("c1 = " + c1); + log("c2 = " + c2); + log("FORM_ID = " + FORM_ID); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + ModelObject[] items = TCUtil.queryItemByID(Item); + if (items == null) { + throw new Exception("通过 item_id = " + Item + " 没有查询到对象"); + } + int len = items.length; + if (len != 1) { + throw new Exception("通过 item_id = " + Item + " 查询到" + len + "个对象"); + } + Item item = (Item) items[0]; + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + dataManagementService.getProperties(items, new String[]{"object_type", "object_string"}); + if (!TCUtil.ITEMTYPE_PART.equals(item.get_object_type())) { + throw new Exception("对象<" + item.get_object_string() + ">不是" + TCUtil.ITEMTYPE_PART + "类型"); + } + ItemRevision rev = TCUtil.getLatestReleasedRev(dataManagementService, item); + if (rev == null) { + throw new Exception("对象<" + item.get_object_string() + ">没有最新发布版本"); + } + List docs = TCUtil.getPartDocs(dataManagementService, rev, c1, c2); + if (docs == null || docs.size() == 0) { + throw new Exception("通过对象<" + item.get_object_string() + ">没有找到符合要求的关联文档"); + } + log(">> 找到文档数量:" + docs.size()); + List dataList = new ArrayList<>(); + for (ItemRevision doc : docs) { + PartDocBean bean = new PartDocBean(rev, doc, dataManagementService, config); + dataList.add(bean); + } + ObjectMapper objectMapper = new ObjectMapper(); + String data = objectMapper.writeValueAsString(dataList); + log("返回数据:" + data + "\n"); + return data; + } + + + // @RequestMapping(value = "/getCheckFile", method = {RequestMethod.GET, RequestMethod.POST}) + public String getCheckFile(@RequestParam String Item, @RequestParam String c1, @RequestParam String c2) throws Exception { + log(">> 开始执行:器件资料下载"); + log("Item = " + Item); + log("c1 = " + c1); + log("c2 = " + c2); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + ModelObject[] items = TCUtil.queryItemByID(Item); + if (items == null) { + throw new Exception("通过 item_id = " + Item + " 没有查询到对象"); + } + int len = items.length; + if (len != 1) { + throw new Exception("通过 item_id = " + Item + " 查询到" + len + "个对象"); + } + Item item = (Item) items[0]; + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + dataManagementService.getProperties(items, new String[]{"object_type", "object_string"}); + if (!TCUtil.ITEMTYPE_PART.equals(item.get_object_type())) { + throw new Exception("对象<" + item.get_object_string() + ">不是" + TCUtil.ITEMTYPE_PART + "类型"); + } + ItemRevision rev = TCUtil.getLatestReleasedRev(dataManagementService, item); + if (rev == null) { + throw new Exception("对象<" + item.get_object_string() + ">没有最新发布版本"); + } + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"object_string"}); + List cjxhItems = TCUtil.getPartCJXH(dataManagementService, rev); + if (cjxhItems.size() == 0) { + log("通过对象版本<" + rev.get_object_string() + ">没有找到厂家型号"); + return "[]"; + //throw new Exception("通过对象版本<" + rev.get_object_string() + ">没有找到厂家型号"); + } + dataManagementService.getProperties(cjxhItems.toArray(new ModelObject[]{}), new String[]{"object_string"}); + List dataList = new ArrayList<>(); + for (int i = 0; i < cjxhItems.size(); i++) { + Item cjxhItem = cjxhItems.get(i); + log(">> 读取厂家型号信息:" + cjxhItem.get_object_string()); + ItemRevision cjRev = TCUtil.getLatestReleasedRev(dataManagementService, cjxhItem); + if (cjRev == null) { + log("厂家型号没有最新发布版本"); + continue; + } + ItemRevision qjzl = TCUtil.getQJZLFromCJ(cjRev, dataManagementService); + if (qjzl == null) { + log("厂家型号没有找到器件资料"); + continue; + } + QJDocBean bean = new QJDocBean(rev, cjRev, qjzl, dataManagementService, config); + dataList.add(bean); + } + ObjectMapper objectMapper = new ObjectMapper(); + String data = objectMapper.writeValueAsString(dataList); + log("返回数据:" + data + "\n"); + return data; + } + + + //@RequestMapping(value = "/getBase", method = {RequestMethod.GET, RequestMethod.POST}) + public String getBase(@RequestParam String loginName) throws Exception { + log(">> 开始执行:获取分类集表信息"); + log("loginName = " + loginName); + List res = dataMapper.queryBaseByGDPID(loginName); + log("查询结果数量:" + res.size()); + ObjectMapper objectMapper = new ObjectMapper(); + String data = objectMapper.writeValueAsString(res); + log("返回数据:" + data + "\n"); + return data; + } + + //@RequestMapping(value = "/getWipCheck", method = {RequestMethod.GET, RequestMethod.POST}) + public Boolean getWipCheck(@RequestParam String assemblyItem, @RequestParam String loginName) throws Exception { + log(">> 开始执行:任务令获取分类集权限"); + log("loginName = " + loginName); + log("assemblyItem = " + assemblyItem); + List res = dataMapper.queryBaseByItemIDAndGDPId(assemblyItem, loginName); + int size = res.size(); + if (size == 0 || size > 1) { + throw new Exception("find " + size + " data with condition: assemblyItem = " + assemblyItem + ", loginName = " + loginName); + } + Integer status = res.get(0).getStatus(); + log("查询结果:UNV8_STATUS = " + status + "\n"); + if (status != null && status == 0) { + return true; + } + return false; + } + + //@GetMapping("/getDesign_old") + public ResponseEntity getDesign_v0(String item, HttpServletResponse response) { + Session session = new Session(config.getTc_url()); + + try { + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + ModelObject object = queryItems("chint_query_material", new String[]{"materialno"}, new String[]{item}); + + if (object == null) + throw new Exception(); + Part_Revision part_revision = (Part_Revision) object; + ModelObject[] objects = new ModelObject[]{part_revision}; + dataManagementService.refreshObjects(objects); + dataManagementService.getProperties(objects, new String[]{"TC_Is_Represented_By"}); + ModelObject[] reps = part_revision.get_TC_Is_Represented_By(); + dataManagementService.refreshObjects(reps); + dataManagementService.getProperties(reps, new String[]{"object_type", "IMAN_specification", "TC_Attaches"}); + List exportFiles = new ArrayList<>(); + for (int i = 0; i < reps.length; i++) { + if (reps[i] instanceof ItemRevision) { + ItemRevision revision = (ItemRevision) reps[i]; + if (revision.get_object_type().equals("ZT2_Design3DRevision")) { + ModelObject[] specs = revision.get_IMAN_specification(); + ModelObject[] attaches = revision.get_TC_Attaches(); + dataManagementService.refreshObjects(specs); + dataManagementService.getProperties(specs, new String[]{"object_type"}); + dataManagementService.refreshObjects(attaches); + dataManagementService.getProperties(attaches, new String[]{"object_type"}); + for (int j = 0; j < specs.length; j++) { + if (specs[j] instanceof Dataset) { + Dataset dataset = (Dataset) specs[j]; + if (dataset.get_object_type().equals("PDF")) { + + String tempFolder = TCUtil.getFMSTempFolder(config, item); + + List dsFiles = TCUtil.getDatasetFile(dataset, dataManagementService, config, tempFolder); + log(("从数据集共找到" + dsFiles.size() + "个文件")); + if (dsFiles.size() == 0) { + throw new Exception("数据集中不存在引用文件"); + } + exportFiles.add(dsFiles.get(0)); + //return export(dsFiles.get(0)); + } + } + } + for (int j = 0; j < attaches.length; j++) { + if (attaches[j] instanceof Dataset) { + Dataset dataset = (Dataset) attaches[j]; + if (dataset.get_object_type().equals("PDF")) { + String tempFolder = TCUtil.getFMSTempFolder(config, item); + List dsFiles = TCUtil.getDatasetFile(dataset, dataManagementService, config, tempFolder); + log(("从数据集共找到" + dsFiles.size() + "个文件")); + if (dsFiles.size() == 0) { + throw new Exception("数据集中不存在引用文件"); + } + exportFiles.add(dsFiles.get(0)); + //return export(dsFiles.get(0)); + } + } + } + //break; + } + } + + } + if (exportFiles.size() == 1) { + return export(exportFiles.get(0)); + } else if (exportFiles.size() > 1) { + String tempFolder = TCUtil.getFMSTempFolder(config, item); + if (!new File(tempFolder).isDirectory()) { + if (!new File(tempFolder).mkdirs()) { + log("新建文件夹失败"); + } + } + File zipFile = new File(tempFolder + "\\" + exportFiles.get(0).getName().split("\\.")[0] + "等" + exportFiles.size() + "个文件.zip"); + FileOutputStream zipOs = new FileOutputStream(zipFile); + TCUtil.toZip(exportFiles, zipOs); + zipOs.flush(); + zipOs.close(); + //TCUtil.clearCache(exportFiles); + return export(zipFile); + } + } catch (Exception e) { + log(e.getMessage()); + } + session.logout(); + return null; + } + + private void getDesignByFactoryNo(String factoryNo, List exportFiles) { + try { + // 数据管理服务 + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + if (!"".equals(factoryNo)) { + // 查询模型对象 + logger.warn("查询模型对象,by chint_query_FactoryNo [fid=" + factoryNo + "{}]", factoryNo); + Map fields = new HashMap<>(); + fields.put("fid", factoryNo); + ModelObject[] modelObjects = TCUtil.query("chint_query_FactoryNo", fields); + if (modelObjects != null && modelObjects.length > 0) { + // 模型对象 + ModelObject mo = modelObjects[0]; + logger.warn("找到模型对象,uid={}", mo.getUid()); + Item part_revision = (Item) mo; + ModelObject[] objects = new ModelObject[]{part_revision}; + // 刷新对象(设置属性) + dataManagementService.refreshObjects(objects); + // 图纸模型版本 + List designRevisionObjects = new ArrayList<>(); + List designRevisionObjects01 = RelationUtils.getDesignRevisionByFactoryNo(dataManagementService, part_revision); + List projectItemObjects = RelationUtils.getItemByFactoryNo(dataManagementService, part_revision); + List designRevisionObjects02 = RelationUtils.getDesignRevisionByItems(dataManagementService, projectItemObjects); + designRevisionObjects.addAll(designRevisionObjects01); + designRevisionObjects.addAll(designRevisionObjects02); + if (!designRevisionObjects.isEmpty()) { + for (WorkspaceObject referencedObject : designRevisionObjects) { + ItemRevision revision = (ItemRevision) referencedObject; + dataManagementService.getProperties(new ModelObject[]{revision}, new String[]{"items_tag"}); + Item item2 = revision.get_items_tag(); + dataManagementService.getProperties(new ModelObject[]{item2}, new String[]{"item_id"}); + logger.warn("ZT2_Design3DRevision uid: {}", revision.getUid()); + dataManagementService.getProperties(new ModelObject[]{revision}, new String[]{"object_desc", "IMAN_specification", "TC_Attaches"}); + String object_desc = revision.getPropertyDisplayableValue("object_desc"); + logger.warn("object_desc: {}", object_desc); + ModelObject[] specs = revision.get_IMAN_specification(); + ModelObject[] attaches = revision.get_TC_Attaches(); + dataManagementService.refreshObjects(specs); + dataManagementService.getProperties(specs, new String[]{"object_type"}); + dataManagementService.refreshObjects(attaches); + dataManagementService.getProperties(attaches, new String[]{"object_type"}); + for (int k = 0; k < specs.length; k++) { + if (specs[k] instanceof Dataset) { + Dataset dataset = (Dataset) specs[k]; + log("数据集类型:" + dataset.get_object_type()); + if (dataset.get_object_type().equals("PDF")) { + String fileName = TCUtil.getDatasetName(dataset, dataManagementService); + if (fileName != null && !"".equals(fileName)) { + exportFiles.add(new FileInfoBean(dataset.getUid(), fileName)); + logger.warn("uid: {}, name: {}", dataset.getUid(), fileName); + } + } + } + } + for (int k = 0; k < attaches.length; k++) { + if (attaches[k] instanceof Dataset) { + Dataset dataset = (Dataset) attaches[k]; + log("数据集类型:" + dataset.get_object_type()); + if (dataset.get_object_type().equals("PDF")) { + String fileName = TCUtil.getDatasetName(dataset, dataManagementService); + if (fileName != null && !"".equals(fileName)) { + exportFiles.add(new FileInfoBean(dataset.getUid(), fileName)); + logger.warn("uid: {}, name: {}", dataset.getUid(), fileName); + } + } + } + } + } + } + } + } + } catch (Exception e) { + logger.error("查询图纸列表异常", e); + } + } + + @GetMapping("/getDesign") + public String getDesign(String item, String wbsno, String factoryNo, HttpServletResponse response) throws Exception { + Session session = new Session(config.getTc_url()); + List exportFiles = new ArrayList<>(); + String desc_String = ""; + try { + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + TCUtil.byPass(true); + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + log("item:" + item); + log("WBS No:" + wbsno); + log("WBS No:" + factoryNo); + // 按出厂编号查询 add by 20220916 + if (!"".equals(factoryNo)) { + getDesignByFactoryNo(factoryNo, exportFiles); + DesignInfoBean res = new DesignInfoBean(exportFiles, desc_String); + ObjectMapper objectMapper = new ObjectMapper(); + String data = objectMapper.writeValueAsString(res); + TCUtil.byPass(false); + log("返回数据:" + data + "\n"); + session.logout(); + return data; + } + + if (item == null || "".equals(item)) { + return "请输入物料号"; + } + Map fields = new HashMap<>(); + // 原来查询 + fields.put(queryConfig.getGet_schedule_field_materialno(), item + "*"); + ModelObject[] object; + if (wbsno == null || "".equals(wbsno)) { + object = TCUtil.query(queryConfig.getGet_schedule_ccp_query(), fields); + //object =queryItems("chint_query_material",new String[]{"materialno"},new String[]{item}); + if (object == null || object.length == 0) { + log("仅使用物料号进行查询未找到对象"); + throw new Exception("找不到物料"); + } + + } else { + fields.put(queryConfig.getGet_schedule_field_wbs(), wbsno); + object = TCUtil.query(queryConfig.getGet_schedule_ccp_query(), fields); + if (object == null || object.length == 0) { + log("使用物料号和WBS号进行查询未找到对象"); + fields.remove(queryConfig.getGet_schedule_field_wbs()); + object = TCUtil.query(queryConfig.getGet_schedule_ccp_query(), fields); + if (object == null || object.length == 0) { + log("第二次仅使用物料号进行查询未找到对象"); + throw new Exception("找不到物料"); + } + } + } + + Part_Revision part_revision = (Part_Revision) object[0]; + ModelObject[] objects = new ModelObject[]{part_revision}; + dataManagementService.refreshObjects(objects); + dataManagementService.getProperties(objects, new String[]{"TC_Is_Represented_By"}); + ModelObject[] reps = part_revision.get_TC_Is_Represented_By(); + dataManagementService.refreshObjects(reps); + //dataManagementService.getProperties(reps,new String[]{"object_type","IMAN_specification","TC_Attaches"}); + dataManagementService.getProperties(reps, new String[]{"object_type"}); + log("图纸文件夹下对象数量:" + reps.length); + Map> item_revs = new HashMap<>(); + for (int i = 0; i < reps.length; i++) { + if (reps[i] instanceof ItemRevision) { + ItemRevision revision = (ItemRevision) reps[i]; + if (revision.get_object_type().equals("ZT2_Design3DRevision")) { + dataManagementService.getProperties(new ModelObject[]{revision}, new String[]{"items_tag"}); + Item item2 = revision.get_items_tag(); + dataManagementService.getProperties(new ModelObject[]{item2}, new String[]{"item_id"}); + + String item_id = item2.get_item_id(); + + //log("图纸ID:"+item_id); + if (item_revs.containsKey(item2)) { + item_revs.get(item2).add(revision); + } else { + List revs = new ArrayList<>(); + revs.add(revision); + item_revs.put(item2, revs); + } + + } + } + } + + List revs = new ArrayList<>(); + Iterator>> iterator = item_revs.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry> it = iterator.next(); + List it_revs = it.getValue(); + if (it_revs.size() == 1) { + revs.add(it_revs.get(0)); + continue; + } + if (it_revs == null || it_revs.size() < 1) { + continue; + } + ModelObject max_Rev = null; + String s = ""; + ; + int index = -1; + for (int j = 0, len2 = it_revs.size(); j < len2; j++) { + dataManagementService.refreshObjects(new ModelObject[]{it_revs.get(j)}); + dataManagementService.getProperties(new ModelObject[]{it_revs.get(j)}, new String[]{"release_status_list"}); + if (((ItemRevision) it_revs.get(j)).get_release_status_list().length == 0) { + continue; + } + dataManagementService.getProperties(new ModelObject[]{it_revs.get(j)}, new String[]{"item_revision_id"}); + + String item_id = ((ItemRevision) it_revs.get(j)).get_item_revision_id(); + if (s.isEmpty()) { + s = item_id; + max_Rev = it_revs.get(j); + for (int k = 0; k < s.length(); k++) { + if (s.charAt(k) >= '0' && s.charAt(k) <= '9') { + index = k; + break; + } + } + } else { + String temp = item_id; + if (index != -1) { + if (temp.substring(0, index).compareTo(s.substring(0, index)) > 0) { + s = temp; + max_Rev = it_revs.get(j); + } else if (temp.substring(0, index).compareTo(s.substring(0, index)) == 0) { + String s1 = s.substring(index); + String temp1 = temp.substring(index); + int min = Math.min(s1.length(), temp1.length()); + for (int k = 0; k < min; k++) { + if (temp1.charAt(k) > s1.charAt(k)) { + s = temp; + max_Rev = it_revs.get(j); + break; + } + + } + + if (temp1.length() > min) { + s = temp; + max_Rev = it_revs.get(j); + } + + } + } else if (temp.compareTo(s) > 0) { + s = temp; + max_Rev = it_revs.get(j); + } + + } + } + log("加入:" + s); + + + if (max_Rev != null) { + revs.add(max_Rev); + } + } + + if (revs.size() == 0) { + dataManagementService.refreshObjects(objects); + dataManagementService.getProperties(objects, new String[]{"object_desc", "IMAN_specification", "TC_Attaches"}); + desc_String = part_revision.getPropertyDisplayableValue("object_desc"); + // log("第"+(i+1)+"个,object_desc:"+desc_String); + ModelObject[] specs = part_revision.get_IMAN_specification(); + ModelObject[] attaches = part_revision.get_TC_Attaches(); + dataManagementService.refreshObjects(specs); + dataManagementService.getProperties(specs, new String[]{"object_type"}); + dataManagementService.refreshObjects(attaches); + dataManagementService.getProperties(attaches, new String[]{"object_type"}); + // log("规范关系数据集个数:"+specs.length); + // log("附加关系数据集个数:"+attaches.length); + for (int j = 0; j < specs.length; j++) { + // log("j------"+j); + // log("数据集类型:"+specs[j].toString()); + if (specs[j] instanceof Dataset) { + Dataset dataset = (Dataset) specs[j]; + log("数据集类型:" + dataset.get_object_type()); + if (dataset.get_object_type().equals("PDF")) { + String fileName = TCUtil.getDatasetName(dataset, dataManagementService); + if (fileName != null && !"".equals(fileName)) { + exportFiles.add(new FileInfoBean(dataset.getUid(), fileName)); + } + } + } + } + for (int j = 0; j < attaches.length; j++) { + if (attaches[j] instanceof Dataset) { + Dataset dataset = (Dataset) attaches[j]; + log("数据集类型:" + dataset.get_object_type()); + if (dataset.get_object_type().equals("PDF")) { + String fileName = TCUtil.getDatasetName(dataset, dataManagementService); + if (fileName != null && !"".equals(fileName)) { + exportFiles.add(new FileInfoBean(dataset.getUid(), fileName)); + } + } + } + } + } else { + //for(int i=0;i getPack(String projectNo, String factoryNo, HttpServletResponse response) { + Session session = new Session(config.getTc_url()); + + try { + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + ModelObject object = queryItems("chint_query_FactoryNo", new String[]{"fid"}, new String[]{factoryNo}); + if (object == null) + throw new Exception(); + Item part_revision = (Item) object; + + ModelObject[] objects = new ModelObject[]{part_revision}; + dataManagementService.refreshObjects(objects); + dataManagementService.getProperties(objects, new String[]{"IMAN_reference"}); + ModelObject[] reps = part_revision.get_IMAN_reference(); + dataManagementService.refreshObjects(reps); + dataManagementService.getProperties(reps, new String[]{"object_type", "IMAN_specification"}); + for (int i = 0; i < reps.length; i++) { + if (reps[i] instanceof ItemRevision) { + ItemRevision revision = (ItemRevision) reps[i]; + if (revision.get_object_type().equals("ZT2_PackListRevision")) { + ModelObject[] specs = revision.get_IMAN_specification(); + for (int j = 0; j < specs.length; j++) { + if (specs[j] instanceof Dataset) { + Dataset dataset = (Dataset) specs[j]; + String tempFolder = TCUtil.getFMSTempFolder(config, factoryNo); + + List dsFiles = TCUtil.getDatasetFile(dataset, dataManagementService, config, tempFolder); + log(("从数据集共找到" + dsFiles.size() + "个文件")); + if (dsFiles.size() == 0) { + throw new Exception("数据集中不存在引用文件"); + } + return export(dsFiles.get(0)); + } + } + break; + } + } + + } + } catch (Exception e) { + + } + + session.logout(); + return null; + } + + @GetMapping("/getPack") + public String getPack2(String projectNo, String factoryNo, HttpServletResponse response) { + Session session = new Session(config.getTc_url()); + JSONObject data = new JSONObject(); + JSONArray fNos = new JSONArray(); + try { + log("factoryNo:" + factoryNo); + + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + ModelObject object = queryItems("chint_query_FactoryNo", new String[]{"fid"}, new String[]{factoryNo}); + log("开始查找对象"); + if (object == null) + throw new Exception(); + log("找到对象"); + Item part_revision = (Item) object; + + ModelObject[] objects = new ModelObject[]{part_revision}; + dataManagementService.refreshObjects(objects); + log("开始获取引用"); + com.teamcenter.services.strong.core._2007_01.DataManagement.WhereReferencedResponse resp = dataManagementService.whereReferenced(new WorkspaceObject[]{part_revision}, 1); + TCUtil.throwServiceDataError(resp.serviceData); + log("cnt:" + resp.output.length); + int size = resp.output.length; + for (int i = 0; i < size; i++) { + com.teamcenter.services.strong.core._2007_01.DataManagement.WhereReferencedOutput op = resp.output[i]; + int infoSize = op.info.length; + for (int j = 0; j < infoSize; j++) { + com.teamcenter.services.strong.core._2007_01.DataManagement.WhereReferencedInfo info = op.info[j]; + WorkspaceObject obj = info.referencer; + if (obj != null) { + dataManagementService.getProperties(new ModelObject[]{obj}, new String[]{"object_type", "object_string", "ZT2_FactoryNumber", "IMAN_specification"}); + String type = obj.get_object_type(); + String name = obj.get_object_string(); + log("找到引用对象<" + name + "> 类型:" + type + " 关系:" + info.relation); + if (type.equals("ZT2_PackListRevision")) { + log("开始查找数据集"); + ItemRevision rev = (ItemRevision) obj; + com.teamcenter.soa.client.model.Property prop = rev.getPropertyObject("ZT2_FactoryNumber"); + ModelObject[] arr = prop.getModelObjectArrayValue(); + dataManagementService.refreshObjects(arr); + dataManagementService.getProperties(arr, new String[]{"item_id"}); + StringBuilder s_id = new StringBuilder(); + for (int k = 0, lne = arr.length; k < lne; k++) { + Item fNo = (Item) arr[k]; + s_id.append(fNo.get_item_id()); + fNos.put(fNo.get_item_id()); + if (k != lne - 1) { + s_id.append(","); + } + } + //data.put("outFactorylist", fNos); + System.out.println("outFactorylist:" + s_id.toString()); + ModelObject[] specs = rev.get_IMAN_specification(); + for (int k = 0; k < specs.length; k++) { + if (specs[j] instanceof Dataset) { + Dataset dataset = (Dataset) specs[k]; + dataManagementService.getProperties(new ModelObject[]{dataset}, new String[]{"object_name"}); + + dataset.get_object_name(); + + String tempFolder = TCUtil.getFMSTempFolder(config, factoryNo); + log("文件夹目录:" + tempFolder); + List dsFiles = TCUtil.getDatasetFile(dataset, dataManagementService, config, tempFolder); + log(("从数据集共找到" + dsFiles.size() + "个文件")); + if (dsFiles.size() == 0) { + throw new Exception("数据集中不存在引用文件"); + } + String fs = TCUtil.encodeFileToBase64Binary(dsFiles.get(0)); + + log("file:" + fs); + data.put("outFactorylist", fNos); + data.put("fileBase64", fs); + data.put("code", 200); + data.put("messages", "请求成功"); + data.put("fileName", dataset.get_object_name()); + log("返回:" + data.toString()); + return data.toString(); + //return export(dsFiles.get(0)); + } + } + break; + } + } + } + } + +/* + dataManagementService.getProperties(objects,new String[]{"IMAN_reference"}); + ModelObject[] reps=part_revision.get_IMAN_reference(); + dataManagementService.refreshObjects(reps); + dataManagementService.getProperties(reps,new String[]{"object_type","IMAN_specification","ZT2_FactoryNumber"}); + log("包装清单个数:"+reps.length); + for(int i=0;i dsFiles = TCUtil.getDatasetFile(dataset, dataManagementService, config, tempFolder); + log(("从数据集共找到" + dsFiles.size() + "个文件")); + if (dsFiles.size() == 0) { + throw new Exception("数据集中不存在引用文件"); + } + String fs = TCUtil.encodeFileToBase64Binary(dsFiles.get(0)); + log("file:"+fs); + //return export(dsFiles.get(0)); + } + } + break; + } + } + + }*/ + data.put("", factoryNo); + data.put("fileBase64", ""); + data.put("code", 500); + data.put("messages", "未找到文件"); + + } catch (Exception e) { + + + } + + session.logout(); + + + return data.toString(); + } + + + public static ModelObject queryItems(String queryName, String[] entries, String[] values) { + + ImanQuery query = null; + + // Get the service stub + SavedQueryService queryService = SavedQueryService.getService(Session.getConnection()); + + try { + + // ***************************** + // Execute the service operation + // ***************************** + SavedQuery.GetSavedQueriesResponse savedQueries = queryService.getSavedQueries(); + + + if (savedQueries.queries.length == 0) { + System.out.println("There are no saved queries in the system."); + return null; + } + + // Find one called 'Item Name' + for (int i = 0; i < savedQueries.queries.length; i++) { + + if (savedQueries.queries[i].name.equals(queryName)) { + query = savedQueries.queries[i].query; + break; + } + } + } catch (Exception e) { + System.out.println("GetSavedQueries service request failed."); + System.out.println(e.getMessage()); + return null; + } + + if (query == null) { + System.out.println("There is not an 'Item Name' query."); + return null; + } + try { + // Search for all Items, returning a maximum of 25 objects + com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput[1]; + savedQueryInput[0] = new com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput(); + savedQueryInput[0].query = query; + + savedQueryInput[0].entries = entries; + savedQueryInput[0].values = values; + //***************************** + //Execute the service operation + //***************************** + com.teamcenter.services.strong.query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.executeSavedQueries(savedQueryInput); + com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.arrayOfResults[0]; + + + // Page through the results 10 at a time + if (found != null && found.numOfObjects > 0) { + return found.objects[0]; + } + } catch (Exception e) { + System.out.println("ExecuteSavedQuery service request failed."); + System.out.println(e.getMessage()); + return null; + } + return null; + } + + /*@RequestMapping(value = "/pushDistJob",method = {RequestMethod.GET,RequestMethod.POST}) + public String pushDistJob(String jobs) throws Exception{ + log(">> 开始执行:PDM发放任务导入"); + log("jobs = "+jobs); + ObjectMapper objectMapper=new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + //JSONObject obj = objectMapper.readValue(jobs, JSONObject.class); + JSONObject res=new JSONObject(); + JSONArray data=new JSONArray(); + for (int i=0;i<3;i++){ + JSONObject job=new JSONObject(); + job.put("jobId",i); + job.put("importId","test"+i); + data.put(job); + } + res.put("data",data); + res.put("info","成功"); + res.put("status",1); + return res.toString(); + } + + @RequestMapping(value = "/addVendor",method = {RequestMethod.GET,RequestMethod.POST}) + public String addVendor(String jobs) throws Exception{ + log(">> 开始执行:供应商信息维护"); + log("jobs = "+jobs); + ObjectMapper objectMapper=new ObjectMapper(); + JSONObject obj = objectMapper.readValue(jobs, JSONObject.class); + JSONObject res=new JSONObject(); + JSONArray data=new JSONArray(); + for (int i=0;i<3;i++){ + JSONObject job=new JSONObject(); + job.put("reason",""); + job.put("loginName","UV"+i); + job.put("vendorId",i); + job.put("status",1); + job.put("info","成功"); + data.put(job); + } + res.put("data",data); + res.put("info","成功"); + res.put("status",1); + return res.toString(); + }*/ + + + @Transactional + @RequestMapping(value = "/getPart3", method = {RequestMethod.GET, RequestMethod.POST}) + public String getMaterial_Part3(@RequestBody List materials) throws Exception { + long time = new Date().getTime(); + String data = ""; + log("maaterials:" + materials); + StringBuilder errMess = new StringBuilder(); + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + groups.clear(); + groups.add("M006"); + groups.add("M005"); + groups.add("M008"); + groups.add("M010"); + groups.add("M011"); + groups.add("M040"); + groups.add("M041"); + groups.add("M042"); + groups.add("M043"); + DataManagementService dataManagementService = DataManagementService.getService(Session.getConnection()); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Folder homeFolder = user.get_home_folder(); + dataManagementService.getProperties(new ModelObject[]{user}, new String[]{"newstuff_folder"}); + Folder newStuffFolder = user.get_newstuff_folder(); + JSONArray datas = new JSONArray(); + Result rs = null; + ServiceData serverData = null; + for (int i = 0; i < materials.size(); i++) { + MaterialBean material = materials.get(i); + if (!groups.contains(material.getCompanyCode())) { + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "1"); + err.put("Info", "非变压\\中压\\高开物料,CompanyCode:" + material.getCompanyCode()); + datas.put(err); + continue; + } + String now = format.format(new Date()); + String item_id = material.getGoodsCode(); + int code = material.getCode(); + ModelObject items[] = TCUtil.queryItemByID(item_id); + String uid = ""; + ModelObject itemObj = null; + ModelObject revObj = null; + boolean flag = false; + log("item_id[" + item_id + "]查找到的对象个数:" + items.length); + if (items.length > 0) { + log("警告:ID[" + item_id + "]在系统中已存在,更新系统对象及数据库!"); + flag = true; + log("item_uid:" + items[0].getUid()); + dataManagementService.refreshObjects(new ModelObject[]{items[0]}); + if (items[0] instanceof ItemRevision) { + revObj = items[0]; + uid = revObj.getUid(); + } else { + uid = dataMapper.getRevUidByItemUid(items[0].getUid()); + serverData = dataManagementService.loadObjects(new String[]{uid}); + int n = serverData.sizeOfPlainObjects(); + log("查询个数:" + n); + if (n == 1) { + ModelObject obj = serverData.getPlainObject(0); + revObj = obj; + dataManagementService.refreshObjects(new ModelObject[]{revObj}); + uid = revObj.getUid(); + } + } + code = dataMapper.queryCodeByPUID(uid); + material.set_PUID(uid); + } + if (code == 0) { + code = dataMapper.queryMaxCode(); + dataMapper.addMaterialNoCode(code, now); + log("新增Code:" + code); + } else { + log("存在记录,Code:" + code); + List materialLists = dataMapper.queryMaterial(code); + if (materialLists == null || materialLists.size() == 0) { + dataMapper.addMaterialNoCode(code, now); + } else { + if (uid == null || uid == "") { + material.set_PUID(materialLists.get(0).getPuid()); + } + + } + + } + material.setTime(now); + material.setCode(code); + dataMapper.updateMaterial2(material); + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "1"); + err.put("Info", "物料同步成功"); + datas.put(err); + } + + new Thread(new Runnable() { + @Override + public void run() { + + TCUtil.byPass(true); + ServiceData serverData = null; + for (int i = 0; i < materials.size(); i++) { + MaterialBean material = materials.get(i); + int code = material.getCode(); + try { + log("开始处理------第" + i + "个:" + material); + if (!groups.contains(material.getCompanyCode())) { + continue; + } + String item_id = material.getGoodsCode(); + + String uid2 = material.getPuid(); + log("uid2:" + uid2); + ModelObject revObj = null; + if (uid2 == null || uid2.length() == 0) { + ModelObject obj2 = TCUtil.createPart(material, dataManagementService, newStuffFolder); + uid2 = obj2.getUid(); + revObj = obj2; + } else { + serverData = dataManagementService.loadObjects(new String[]{uid2}); + int n = serverData.sizeOfPlainObjects(); + if (n == 1) { + ModelObject obj = serverData.getPlainObject(0); + if (obj instanceof ItemRevision) { + revObj = obj; + ServiceData proDatas = dataManagementService.getProperties(new ModelObject[]{revObj}, new String[]{"item_id"}); + String old_id = revObj.getPropertyDisplayableValue("item_id"); + log("原ID:[" + old_id + "]新ID:[" + item_id + "]"); + + if (item_id.equals(old_id)) { + TCUtil.updatePart(revObj, dataManagementService, material, false, errMess); + } else { + TCUtil.updatePart(revObj, dataManagementService, material, true, errMess); + } + } + } + } + + log("开始更新数据库Code:" + code); + material.set_PUID(uid2); + dataMapper.updateMaterial(material); + log("info:1;code:" + code); + dataMapper.updateMaterialInfo("1", code); + log("数据库更新结束"); + ItemRevision rev = (ItemRevision) revObj; + dataManagementService.refreshObjects(new ModelObject[]{rev}); + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"release_status_list"}); + if (rev.get_release_status_list().length == 0) { + TCUtil.createTCM(revObj, "TCM Release Process"); + } + dataManagementService.refreshObjects(new ModelObject[]{rev}); + + log("处理结束------第" + i + "个:" + material); + } catch (Exception e) { + dataMapper.updateMaterialInfo("-1,Error:" + e.getMessage(), code); + log("Code[" + code + "]同步第" + i + "个对象时发生异常:" + e.getMessage()); + e.printStackTrace(); + } + } + + TCUtil.byPass(false); + //EntitymanagerFactory + session.logout(); + } + }).start(); + double t = (new Date().getTime() - time) / 1000.0; + log("物料同步耗时:" + t + "秒"); + log("返回数据:" + datas.toString()); + return datas.toString(); + } + + @Transactional + @RequestMapping(value = "/getPart", method = {RequestMethod.GET, RequestMethod.POST}) + public String getMaterial_Part(@RequestBody List materials) throws Exception { + long time = new Date().getTime(); + String data = ""; + log("maaterials:" + materials); + StringBuilder errMess = new StringBuilder(); + /* + groups.clear(); + groups.add("M006"); + groups.add("M005"); + groups.add("M008"); + groups.add("M010"); + groups.add("M011"); + groups.add("M030"); + groups.add("M007"); + */ +// List groups = queryConfig.getGroups(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + JSONArray datas = new JSONArray(); + Result rs = null; + ServiceData serverData = null; + for (int i = 0; i < materials.size(); i++) { + MaterialBean material = materials.get(i); +// if(!groups.contains(material.getCompanyCode())) +// { +// JSONObject err = new JSONObject(); +// err.put("GoodsCode",material.getGoodsCode()); +// err.put("State","1"); +// err.put("Info","非变压\\中压\\高开物料,CompanyCode:"+material.getCompanyCode()); +// datas.put(err); +// continue; +// } + String now = format.format(new Date()); + //material.setP_rec_date(now); + material.setTime(now); + int code = material.getCode(); + if (code == 0) { + int new_code = dataMapper.queryCodeByGoodsCode(material.getGoodsCode()); + log("查询的物料编码:" + material.getGoodsCode() + ";new_code:" + new_code); + if (new_code == 0) { + new_code = dataMapper.queryMaxCode(); + material.setCode(new_code); + dataMapper.insertMaterial(material); + } else { + material.setCode(new_code); + dataMapper.updateMaterial2(material); + } + + } else { + List list = dataMapper.queryMaterial(code); + if (list == null || list.size() == 0) { + dataMapper.insertMaterial(material); + } else { + dataMapper.updateMaterial2(material); + } + } + + log("插入数据结束--" + i); + //material.setTime(now); + //dataMapper.updateMaterial2(material); + JSONObject err = new JSONObject(); + err.put("GoodsCode", material.getGoodsCode()); + err.put("State", "1"); + err.put("Info", "物料同步成功"); + datas.put(err); + } + double t = (new Date().getTime() - time) / 1000.0; + log("物料同步耗时:" + t + "秒"); + log("返回数据:" + datas.toString()); + return datas.toString(); + } + + // @Transactional + //@RequestMapping(value = "/getPart",method = {RequestMethod.GET,RequestMethod.POST}) + public String copyRecursively(@RequestBody String uid) throws Exception { + Session session = new Session(config.getTc_url()); + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + if (user == null) { + throw new Exception("Teamcenter SOA登录失败"); + } + //com.teamcenter.services.strong + + + return ""; + } + +// /** +// * 根据版本打开BOM +// * +// * @param parentItemRev +// * @return 返回信息 0 BOMWindow 1 BOMLine +// */ +// public static ArrayList openBOMWindow(ItemRevision parentItemRev) { +// +// ArrayList bomWindowandParentLine = new ArrayList(3); +// com.teamcenter.services.strong.cad._2007_01.StructureManagement.CreateBOMWindowsInfo[] createBOMWindowsInfo = new com.teamcenter.services.strong.cad._2007_01.StructureManagement.CreateBOMWindowsInfo[1]; +// +// +// createBOMWindowsInfo[0] = new com.teamcenter.services.strong.cad._2007_01.StructureManagement.CreateBOMWindowsInfo(); +// createBOMWindowsInfo[0].itemRev = (ItemRevision) parentItemRev; +// com.teamcenter.services.strong.cad.StructureManagementService cadSMService = +// com.teamcenter.services.strong.cad.StructureManagementService +// .getService(Session.getConnection()); +// +// StructureManagement.CreateBOMWindowsResponse createBOMWindowsResponse = +// cadSMService.createBOMWindows(createBOMWindowsInfo); +//// cadSMService. +//// cadSMService.d +// if (createBOMWindowsResponse.serviceData.sizeOfPartialErrors() > 0) { +// for (int i = 0; i < createBOMWindowsResponse.serviceData +// .sizeOfPartialErrors(); i++) { +// +// System.out.println("Partial Error in Open BOMWindow = " + createBOMWindowsResponse.serviceData +// .getPartialError(i).getMessages()[0]); +// } +// } +// +// bomWindowandParentLine.add(createBOMWindowsResponse.output[0].bomWindow);//BOMWindow +// BOMLine bomLine = createBOMWindowsResponse.output[0].bomLine; +// bomWindowandParentLine.add(bomLine); +// return bomWindowandParentLine; +// } + + public static void log(String msg) { + TCUtil.log(logger, msg); + } +} diff --git a/demo_k/src/main/java/com/connor/web/controller/QuotationController.java b/demo_k/src/main/java/com/connor/web/controller/QuotationController.java new file mode 100644 index 0000000..4c0b9f6 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/controller/QuotationController.java @@ -0,0 +1,359 @@ +package com.connor.web.controller; + +//import com.alibaba.fastjson.JSONObject; +//import com.connor.rb.savadata.pojo.QuotationDTO; +//import com.connor.rb.savadata.service.imp.QuotationService; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.connor.web.bean.GZXQBean; +import com.connor.web.bean.QuotationDTO; +import com.connor.web.bean.SapResult; +import com.connor.web.bean.SapReturn; +import com.connor.web.bean.SendSapBom; +import com.connor.web.service.QuotationService; +import com.connor.web.util.DefineUtil; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.squareup.okhttp.MediaType; +import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.Request; +import com.squareup.okhttp.Response; +import com.teamcenter.clientx.Session; +import com.teamcenter.services.strong.cad._2007_01.StructureManagement; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.strong.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.configurationprocessor.json.JSONObject; +import org.springframework.boot.configurationprocessor.json.JSONException; +import org.springframework.boot.configurationprocessor.json.JSONObject; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.connor.web.config.Config; +import com.connor.web.util.TCUtil; + +@RestController +//@RequestMapping("/plm") +public class QuotationController { + + @Autowired + private QuotationService quotationService; + private static final Logger logger = LoggerFactory.getLogger(QuotationController.class); + @Autowired + private Config config; + + // @PostMapping("/getBOMResult") +// public String getBOMResult(@RequestBody SapReturn sapReturn) { +// JSONObject result = new JSONObject(); +// new Thread(new Runnable() { +// @Override +// public void run() { +// try{ +// ObjectMapper objectMapper = new ObjectMapper(); +// String data = objectMapper.writeValueAsString(sapReturn); +// logMsg("getBOMResult SAP回传信息 ====> "+data); +//// System.out.println("sapReturn===>"+sapReturn.toString()); +// List result1 = sapReturn.getResult(); +// quotationService.saveSapResult(result1); +// }catch (Exception e){ +// e.printStackTrace(); +// } +// } +// }).start(); +// try { +// result.put("code","S"); +// result.put("msg","成功接收"); +// } catch (JSONException e) { +// e.printStackTrace(); +// } +// return result.toString(); +// } + @PostMapping("/getQuotationsheet") + public String saveQuotation(@RequestBody QuotationDTO quotationDTO) { + JSONObject result = new JSONObject(); + try { + System.out.println(quotationDTO.toString()); + quotationService.saveQuotation(quotationDTO); + + result.put("code", "200"); + result.put("msc", "接收成功"); + } catch (Exception e) { +// JSONObject result = new JSONObject(); + + try { + result.put("code", "500"); + result.put("msc", "接收失败" + e.getMessage()); + } catch (JSONException jsonException) { + jsonException.printStackTrace(); + } + e.printStackTrace(); + } + return result.toString(); + } + + public static void logMsg(String msg) { + TCUtil.log(logger, msg); + } + + @PostMapping("/sendBomXB") + public String sendBomXB(@RequestBody SendSapBom sendSapBom) { + JSONObject result = new JSONObject(); + new Thread(new Runnable() { + @Override + public void run() { + try { +// System.out.println("sapReturn===>"+sendSapBom.toString()); + StringBuilder builder = new StringBuilder(""); + List uidList = sendSapBom.getUid(); + System.out.println(uidList.size()); + for (int i = 0; i < uidList.size(); i++) { + String s = uidList.get(i); + builder.append(s).append(":"); + } +// System.out.println(builder.toString()); + String substring = builder.substring(0, builder.length() - 1); + String cmd = "D:\\server\\CshTest\\BOMToSapOpt.bat " + + sendSapBom.getCode() + " " + sendSapBom.getGroupId() + " " + sendSapBom.getProjectUid() + " " + substring + " " + sendSapBom.getUserId(); //D:\参数化集成 +// System.out.println(cmd); + executeCmdCommand(cmd); + logMsg("sendBomXB cmd ====> " + cmd); + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + try { + int num = getProcessCount("BOMToSapOpt.exe"); + System.out.println("num" + num); + result.put("code", "S"); + result.put("msg", "成功接收"); + } catch (JSONException e) { + e.printStackTrace(); + } + return result.toString(); + } + + public static String executeCmdCommand(String cmdCommand) { + StringBuilder stringBuilder = new StringBuilder(); + Process process = null; + try { + process = Runtime.getRuntime().exec(cmdCommand); + BufferedReader bufferedReader = new BufferedReader( + new InputStreamReader(process.getInputStream(), "GBK")); + String line = null; + while ((line = bufferedReader.readLine()) != null) { + System.out.println(line); + } + return stringBuilder.toString(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static int getProcessCount(String exeName) { + int count = 0; + try { + Process process = Runtime.getRuntime().exec("tasklist"); + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + Pattern pattern = Pattern.compile(exeName); + while ((line = reader.readLine()) != null) { + Matcher matcher = pattern.matcher(line); + if (matcher.find()) { + count++; + } + } + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return count; + } + + //工装需求 + @PostMapping("/getToolingRequirements") + public String saveGZXQ(@RequestBody GZXQBean gzxqBean) { + JSONObject result = new JSONObject(); + try { + System.out.println(gzxqBean.toString()); + quotationService.saveGzxq(gzxqBean); + + result.put("code", "200"); + result.put("msc", "接收成功"); + } catch (Exception e) { +// JSONObject result = new JSONObject(); + + try { + result.put("code", "500"); + result.put("msc", "接收失败" + e.getMessage()); + } catch (JSONException jsonException) { + jsonException.printStackTrace(); + } + e.printStackTrace(); + } + return result.toString(); + } + + //变更申请单信息推送至TC + @PostMapping("/getECR") + public String saveECRInfo(@RequestBody String jsonObject) { + JSONObject result = new JSONObject(); + try { + System.out.println(jsonObject.toString()); + com.alibaba.fastjson2.JSONObject jsonObject1 = JSON.parseObject(jsonObject); + quotationService.saveECRInfo(jsonObject1); + result.put("code", "200"); + result.put("msc", "接收成功"); + } catch (Exception e) { + try { + result.put("code", "500"); + result.put("msc", "接收失败" + e.getMessage()); + } catch (JSONException jsonException) { + jsonException.printStackTrace(); + } + e.printStackTrace(); + } + return result.toString(); + } + + /** + * 传输BOM材料汇总信息至SAP + * jsonObject + * { + * "wbsno": "WBS号", + * "ccpmaterialno": "产成品物料编码" + * } + */ + @PostMapping("/GetBomDetails") + public String getBomDetails(@RequestBody String jsonObject) { + + new Thread(new Runnable() { + @Override + public void run() { + logMsg("GetBomDetails 入参===>"+jsonObject); + com.alibaba.fastjson2.JSONObject result = new com.alibaba.fastjson2.JSONObject(); + Session session = new Session(config.getTc_url()); + try { + //登录 + User user = session.login2(config.getTc_user(), config.getTc_pwd()); + com.alibaba.fastjson2.JSONObject jsonObject1 = JSON.parseObject(jsonObject); + //产成品物料编码 WBS号 + String wbsNo = jsonObject1.getString(DefineUtil.JSON_WBSNO); + String materialNo = jsonObject1.getString(DefineUtil.JSON_CCP_MATERIALNO); + //查询物料 + Map fields = new HashMap<>(); + fields.put(DefineUtil.COND_MATERIAL, materialNo); + fields.put(DefineUtil.COND_WBSNO, wbsNo); + ModelObject[] modelObjects = TCUtil.query(DefineUtil.SEARCH_MATERIAL, fields); + //返回信息 + result.put(DefineUtil.JSON_WBSNO, wbsNo); + result.put(DefineUtil.JSON_CCP_MATERIALNO, materialNo); + if (modelObjects.length == 0) { + //没有查询到产成品 返回500 + result.put(DefineUtil.JSON_CODE, DefineUtil.ERROR_CODE); + result.put(DefineUtil.JSON_MSG, DefineUtil.ERROR_MSG_NOCCP); + } else { + //查询到产成品 返回200 如果有P物料,获取P物料 + result.put(DefineUtil.JSON_CODE, DefineUtil.SUCCESS_CODE); + result.put(DefineUtil.JSON_MSG, DefineUtil.ERROR_MSG_CCP); + //BOM全展开 获取到底层物料 数量累乘 相同物料合并数量 物料查询查的版本 + ItemRevision ccpRevision = (ItemRevision) modelObjects[0]; + //如果有P物料遍历P物料的BOM + for (int i = 0; i < modelObjects.length; i++) { + DefineUtil.refreshAndGetProperties(modelObjects[i], DefineUtil.PROP_IFPBOM); + String ifPbom = modelObjects[i].getPropertyDisplayableValue(DefineUtil.PROP_IFPBOM); + if (ifPbom.equals(DefineUtil.VAL_ISPBOM)) { + ccpRevision = (ItemRevision) modelObjects[i]; + } + } + //遍历 + DefineUtil.refreshAndGetProperties(ccpRevision, DefineUtil.PROP_REV_QUANTITY); + String ztQuantity = ccpRevision.getPropertyDisplayableValue(DefineUtil.PROP_REV_QUANTITY); + if (ztQuantity == null || ztQuantity.isEmpty()) { + ztQuantity = DefineUtil.VAL_DEFAULT_QUANTITY; + } + ArrayList arrayList = DefineUtil.openBOMWindow(ccpRevision); + BOMLine topLine = (BOMLine) arrayList.get(1); + Map materialMap = new HashMap<>(); + Map bomMap = + DefineUtil.getBomLineTreeNodeSOA(topLine); + System.out.println(" end ExpandBOM "); + DefineUtil.getChildBomMsg(topLine, ccpRevision, bomMap, materialMap, 1.0); + DefineUtil.closeBOMWindow((BOMWindow) arrayList.get(0)); + //信息搭建JSON + JSONArray array = new JSONArray(); + int no = 1; + result.fluentPut(DefineUtil.JSON_CCP_QUANTITY, ztQuantity); + result.fluentPut( + DefineUtil.JSON_FACTORY, + jsonObject1.getString(DefineUtil.JSON_FACTORY) == null + ? DefineUtil.VAL_EMPTY_STRING + : jsonObject1.getString(DefineUtil.JSON_FACTORY)); + for (String key : materialMap.keySet()) { + com.alibaba.fastjson2.JSONObject object = new com.alibaba.fastjson2.JSONObject(); + Double aDouble = materialMap.get(key); + String num = String.format("%03d", no); + object.fluentPut(DefineUtil.JSON_CONTENTS_NO, num); + object.fluentPut(DefineUtil.JSON_CONTENTS_MATERIAL, key); + object.fluentPut(DefineUtil.JSON_CONTENTS_QTY, aDouble + ""); + no++; + array.add(object); + } + result.fluentPut(DefineUtil.JSON_CONTENTS, array); + } + } catch (Exception e) { + result.put(DefineUtil.JSON_CODE, DefineUtil.ERROR_CODE); + result.put(DefineUtil.JSON_MSG, e.getMessage()); + e.printStackTrace(); + } finally { + session.logout(); + } + com.alibaba.fastjson2.JSONObject jsonInfo = new com.alibaba.fastjson2.JSONObject(); + com.alibaba.fastjson2.JSONObject jsonData = new com.alibaba.fastjson2.JSONObject(); + jsonData.fluentPut(DefineUtil.JSON_DATA, result.toJSONString()); + jsonInfo.fluentPut(DefineUtil.JSON_INFO, jsonData); + + OkHttpClient client = new OkHttpClient(); + MediaType mediaType = MediaType.parse(DefineUtil.JSON_APP); + com.squareup.okhttp.RequestBody body = com.squareup.okhttp.RequestBody.create(mediaType, jsonInfo.toJSONString()); + Request request = new Request.Builder() + .url(DefineUtil.URL_BOM_DETAILS) + .method(DefineUtil.POST_METHOD, body) + .addHeader(DefineUtil.CONTENT_TYPE, DefineUtil.JSON_APP) + .addHeader(DefineUtil.AUTH, DefineUtil.BASIC) + .build(); + try { + Response response = client.newCall(request).execute(); + int code = response.code(); + logMsg("GetBomDetails 入参===>"+jsonObject); + logMsg("GetBomDetails 组织结果===>"+jsonInfo.toJSONString()); + logMsg("GetBomDetails 返回结果===>"+code); + } catch (IOException e) { + e.printStackTrace(); + logMsg("GetBomDetails 推送异常===>"+e.getMessage()); + } + + } + }).start(); + JSONObject result = new JSONObject(); + try { + result.put("code", "200"); + result.put("msg", "成功接收"); + } catch (JSONException e) { + e.printStackTrace(); + } + return result.toString(); + } + +} diff --git a/demo_k/src/main/java/com/connor/web/controller/UpdateController.java b/demo_k/src/main/java/com/connor/web/controller/UpdateController.java new file mode 100644 index 0000000..c469ad9 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/controller/UpdateController.java @@ -0,0 +1,4 @@ +package com.connor.web.controller; + +public class UpdateController { +} diff --git a/demo_k/src/main/java/com/connor/web/mapper/IDataMapper.java b/demo_k/src/main/java/com/connor/web/mapper/IDataMapper.java new file mode 100644 index 0000000..7455c3f --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/mapper/IDataMapper.java @@ -0,0 +1,534 @@ +package com.connor.web.mapper; + +//import com.connor.web.bean.ECRBean; +import com.connor.web.bean.*; +import com.connor.web.bean.MaterialBean; +import com.connor.web.bean.Quotation; +import com.connor.web.bean.getproject.DB_PRODUCT; +import com.connor.web.bean.getproject.DB_PROJECT; +import com.connor.web.bean.getproject.DB_TASK; +import com.connor.web.mapper.pojo.ScheduleTaskInfo; +import com.connor.web.mapper.pojo.UNV8_category_set; +import com.connor.web.mapper.pojo.UNV8_part_reserve; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +/** + * Created by K on 2019/5/13. + */ +@Mapper +public interface IDataMapper { + + public static final String NOT_STARTED="not_started"; + public static final String IN_PROGRESS="in_progress"; + public static final String LATE="late"; + public static final String COMPLETE="complete"; + + @Update({"update CHINT_MATERIAL "+ + "set \"PmpcCode\"=#{PmpcCode,jdbcType=VARCHAR}, "+ + "\"GoodsCode\"=#{GoodsCode,jdbcType=VARCHAR}, "+ + "\"PUID\"=#{puid,jdbcType=VARCHAR}, "+ + "\"GoodsName\"=#{GoodsName,jdbcType=VARCHAR}, "+ + "\"UnitCode\"=#{UnitCode,jdbcType=VARCHAR}, "+ + "\"CompanyCode\"=#{CompanyCode,jdbcType=VARCHAR}, "+ + "\"BpNo\"=#{BpNo,jdbcType=VARCHAR}, "+ + "\"Spec\"=#{Spec,jdbcType=VARCHAR}, "+ + "\"TeRe\"=#{TeRe,jdbcType=VARCHAR}, "+ + "\"State\"=#{State,jdbcType=VARCHAR}, "+ + "\"Time\"=to_date(#{time,jdbcType=VARCHAR},'yyyy-mm-dd HH24:mi:ss') ,"+ + "\"Condition\"='已通过' "+ + "WHERE \"Code\"=#{Code,jdbcType=VARCHAR}"}) + int updateMaterial(MaterialBean material); + + @Select({"SELECT PUID FROM PITEMREVISION where RITEMS_TAGU=#{0,jdbcType=VARCHAR}"}) + String getRevUidByItemUid(String item_uid); + + @Select({"SELECT \"Code\" FROM PITEMREVISION where RITEMS_TAGU=#{0,jdbcType=VARCHAR}"}) + int getCode(String goodsCode); + + @Update({"update CHINT_MATERIAL "+ + "set \"PmpcCode\"=#{PmpcCode,jdbcType=VARCHAR}, "+ + "\"GoodsCode\"=#{GoodsCode,jdbcType=VARCHAR}, "+ + "\"GoodsName\"=#{GoodsName,jdbcType=VARCHAR}, "+ + "\"UnitCode\"=#{UnitCode,jdbcType=VARCHAR}, "+ + "\"CompanyCode\"=#{CompanyCode,jdbcType=VARCHAR}, "+ + "\"BpNo\"=#{BpNo,jdbcType=VARCHAR}, "+ + "\"Spec\"=#{Spec,jdbcType=VARCHAR}, "+ + "\"TeRe\"=#{TeRe,jdbcType=VARCHAR}, "+ + "\"State\"=#{State,jdbcType=VARCHAR}, "+ + "\"Time\"=to_date(#{time,jdbcType=VARCHAR},'yyyy-mm-dd HH24:mi:ss') ,"+ + "\"Condition\"='已通过', "+ + "P_STATUS= '0' "+ + "WHERE \"Code\"=#{Code,jdbcType=VARCHAR}"}) + int updateMaterial2(MaterialBean material); + + @Insert("insert INTO CHINT_MATERIAL ("+ + "\"PmpcCode\", " + + "\"GoodsCode\", " + + "\"GoodsName\", " + + "\"UnitCode\", " + + "\"CompanyCode\", " + + "\"BpNo\", " + + "\"Spec\", " + + "\"TeRe\", " + + "\"State\", " + + "\"Code\", "+ + "\"PUID\", " + + "\"Condition\", "+ + "P_STATUS, " + + "\"Time\""+ + ")"+ + "VALUES("+ + "#{PmpcCode,jdbcType=VARCHAR}, "+ + "#{GoodsCode,jdbcType=VARCHAR}, "+ + "#{GoodsName,jdbcType=VARCHAR}, "+ + "#{UnitCode,jdbcType=VARCHAR}, "+ + "#{CompanyCode,jdbcType=VARCHAR}, "+ + "#{BpNo,jdbcType=VARCHAR}, "+ + "#{Spec,jdbcType=VARCHAR}, "+ + "#{TeRe,jdbcType=VARCHAR}, "+ + "#{State,jdbcType=VARCHAR}, "+ + "#{Code,jdbcType=VARCHAR} ,"+ + "#{puid,jdbcType=VARCHAR}, "+ + "'已通过',"+ + "0,"+ + "to_date(#{time,jdbcType=VARCHAR},'yyyy-mm-dd HH24:mi:ss')"+ + ")" + + ) + int insertMaterial(MaterialBean bean); + + + + @Update({"update CHINT_MATERIAL set \"Info\"=#{0,jdbcType=VARCHAR} where \"Code\" = #{1,jdbcType=INTEGER} "}) + int updateMaterialInfo(String info,int code); + + @Select(value = {"select " + + "\"PmpcCode\", " + + "\"GoodsCode\", " + + "\"GoodsName\", " + + "\"UnitCode\", " + + "\"CompanyCode\", " + + "\"BpNo\", " + + "\"Spec\", " + + "\"TeRe\", " + + "\"State\", " + + "\"Code\", "+ + "\"PUID\" " + + "from CHINT_MATERIAL "+ + "where \"Code\"=#{0,jdbcType=INTEGER} "}) + List queryMaterial(int code); + + //@Select(value = {"select nvl(max(\"Code\"),1) "+ + // "from chint_material "}) + //int queryMaxCode(); + @Select(value = {"select CHINT_MATERIAL_SEQ.nextval as sid from dual "}) + int queryMaxCode(); + + + + @Select(value = {"select nvl(max(\"Code\"),0) "+ + "from chint_material " + + "where \"PUID\"=#{0,jdbcType=VARCHAR}"}) + int queryCodeByPUID(String uid); + + + @Select(value = {"select nvl(max(\"Code\"),0) "+ + "from chint_material " + + "where \"GoodsCode\"=#{0,jdbcType=VARCHAR}"}) + int queryCodeByGoodsCode(String goodsCode); + + + @Insert({"insert into chint_material("+ + "\"Code\", " + + "\"Time\") "+ + "values("+ + "#{0,jdbcType=INTEGER}," + + "to_date(#{1,jdbcType=VARCHAR},'yyyy-mm-dd HH24:mi:ss')"+ + ")"}) + int addMaterialNoCode(int code,String time); + + @Select({"select " + + "projectName, " + + "projectNo, " + + "projectState, " + + "WBSName, " + + "WBSNo, " + + "netWorkNo, " + + "netWorkName, " + + "deliveryDate, " + + "\"NUMBER\", "+ + "factory, "+ + "state, " + + "projectManager, "+ + "projectSource, "+ + "userIndustry, "+ + "\"projectYN\", "+ + "\"planYN\", "+ + "isImportant "+ + "from chint_pm_project " + + "where netWorkNo = #{0,jdbcType=VARCHAR} "}) + List queryProject(String netWorkNo); + + @Update({"update chint_pm_project " + + "set state = #{1,jdbcType=VARCHAR}, " + + "\"DATE\"=to_date(#{2,jdbcType=VARCHAR},'yyyy-mm-dd HH24:mi:ss'), "+ + "factory= #{3,jdbcType=VARCHAR} " + + "where netWorkNo = #{0,jdbcType=VARCHAR}" + }) + int updateProjectState(String netWorkNo,String state,String time,String factory); + + @Insert({ "insert into chint_pm_project(" + + "projectName, " + + "projectNo, " + + "projectState, " + + "WBSName, " + + "WBSNo, " + + "netWorkNo, " + + "netWorkName, " + + "deliveryDate, " + + "\"NUMBER\","+ + "factory, "+ + "state," + + "projectManager,"+ + "projectSource,"+ + "userIndustry,"+ + "\"projectYN\","+ + "\"planYN\","+ + "isImportant,"+ + "\"DATE\" "+ + ") values(" + + "#{projectName,jdbcType=VARCHAR}, " + + "#{projectNo,jdbcType=VARCHAR}, " + + "#{projectState,jdbcType=VARCHAR}, " + + "#{WBSName,jdbcType=VARCHAR}, " + + "#{WBSNo,jdbcType=VARCHAR}, " + + "#{netWorkNo,jdbcType=VARCHAR}, " + + "#{netWorkName,jdbcType=VARCHAR}, " + + "#{deliveryDate,jdbcType=VARCHAR}," + + "#{number,jdbcType=VARCHAR},"+ + "#{factory,jdbcType=VARCHAR},"+ + "#{state,jdbcType=VARCHAR}," + + "#{projectManager,jdbcType=VARCHAR},"+ + "#{projectSource,jdbcType=VARCHAR},"+ + "#{userIndustry,jdbcType=VARCHAR},"+ + "#{projectYN,jdbcType=VARCHAR},"+ + "#{planYN,jdbcType=VARCHAR},"+ + "#{isImportant,jdbcType=VARCHAR},"+ + "to_date(#{time,jdbcType=VARCHAR},'yyyy-mm-dd HH24:mi:ss') "+ + ")" }) + int addProjectData(DB_PROJECT project); + + @Delete({"delete from chint_pm_task " + + "where netWorkNo = #{0}"}) + int removeTaskData(String netWorkNo); + + @Insert({ "insert into chint_pm_task(" + + "netWorkNo, " + + "activeName, " + + "activeNo, " + + "plansStart, " + + "plansEnd " + + ") values(" + + "#{netWorkNo,jdbcType=VARCHAR}, " + + "#{activeName,jdbcType=VARCHAR}, " + + "#{activeNo,jdbcType=VARCHAR}, " + + "#{plansStart,jdbcType=VARCHAR}, " + + "#{plansEnd,jdbcType=VARCHAR}" + + ")" }) + int addTaskData(DB_TASK task); + + @Delete({"delete from chint_pm_product " + + "where netWorkNo = #{0}"}) + int removeProductData(String netWorkNo); + + @Insert({ "insert into chint_pm_product(" + + "netWorkNo, " + + "materialNo, " + + "materialName, " + + "site, "+ + "tankNo, "+ + "unit, "+ + "quantity "+ + ") values(" + + "#{netWorkNo,jdbcType=VARCHAR}, " + + "#{materialNo,jdbcType=VARCHAR}, " + + "#{materialName,jdbcType=VARCHAR}, " + + "#{site,jdbcType=VARCHAR}, "+ + "#{tankNo,jdbcType=VARCHAR}, "+ + "#{unit,jdbcType=VARCHAR},"+ + "#{quantity,jdbcType=VARCHAR}"+ + ")" }) + int addProductData(DB_PRODUCT product); + + + + @Select({"select " + + "t.UNV8_PROJECT_ID item," + + "t.UNV8_EFFECTIVE_PROCESS formId," + + "t.UNV8_EFFECTIVE_DATE createTime," + + "t.UNV8_GDP_ID loginName," + + "t.UNV8_Expiration_DATE validTime," + + "t.UNV8_STATUS status " + + "from UNV8_part_reserve t " + + "where t.UNV8_GDP_ID like #{id,jdbcType=VARCHAR} "}) + List queryPartByGDPID(String id); + + @Select({"select " + + "t.UNV8_PROJECT_ID item," + + "t.UNV8_EFFECTIVE_PROCESS formId," + + "t.UNV8_EFFECTIVE_DATE createTime," + + "t.UNV8_GDP_ID loginName," + + "t.UNV8_Expiration_DATE validTime," + + "t.UNV8_STATUS status " + + "from UNV8_CATEGORY_SET t " + + "where t.UNV8_GDP_ID like #{id,jdbcType=VARCHAR} "}) + List queryBaseByGDPID(String id); + + @Select({"select " + + "t.UNV8_PROJECT_ID item," + + "t.UNV8_GDP_ID loginName," + + "t.UNV8_STATUS status " + + "from UNV8_CATEGORY_SET t " + + "where " + + "t.UNV8_PROJECT_ID = #{0,jdbcType=VARCHAR} and " + + "t.UNV8_GDP_ID = #{1,jdbcType=VARCHAR} "}) + List queryBaseByItemIDAndGDPId(String projectId,String gdpId); + + @Select({"select \n" + + "(\n" + + " select pobject_name from pworkspaceobject where puid = t0.puid\n" + + ") taskname, \n" + + "(\n" + + "select listagg(puser_name,',')within group(order by puser_name) from ppom_user where puid in\n" + + "(\n" + + "select rsecondary_objectu from pimanrelation \n" + + "where rprimary_objectu = t0.puid\n" + + "and rrelation_typeu = (\n" + + " select puid from pimantype where ptype_name = 'ResourceAssignment'\n" + + ")\n" + + ")\n" + + ") resources, \n" + + "t0.pstart_date+8/24 planStartDate, " + + "t0.pactual_start_date+8/24 actualStartDate, " + + "t0.pfinish_date+8/24 finishDate, " + + "t0.pactual_finish_date+8/24 actualFinishDate, " + + "t0.pfnd0status status" + + " from pscheduletask t0\n" + + //20190909 取消筛选 "where t0.pzt2_mark='2' and t0.rschedule_tagu = (\n" + + "where t0.pwbs_code is not null and t0.rschedule_tagu = (\n" + + "select (case when t2.ractiveschbaseline_tagu = 'AAAAAAAAAAAAAA' then t2.puid else t2.ractiveschbaseline_tagu end) from pschedule t2 where t2.puid = #{0,jdbcType=VARCHAR}\n" + + ")\n"}) + List queryScheduleTaskInfoBySchUid(String schUid); + + + @Insert("insert INTO \"CHINT_ QUOTATION_TITLE_TEMPLATE\" ("+ + "\"technical\", " + + "\"factory\", " + + "\"proname\", " + + "\"tennumber\", " + + "\"promanager\", " + + "\"quantity\", " + + "\"tramodel\", " + + "\"capfactor\", " + + "\"volratio\", " + + "\"noloadloss\", "+ + "\"loadloss\", " + + "\"impvoltage\", "+ + "\"traweight\", "+ + "\"totweight\", " + + "\"copconsumption\", "+ + "\"cmarketprice\", "+ + "\"vollevel\", " + + "\"rectime\", "+ + "\"state\""+ + ")"+ + "VALUES("+ + "#{technical,jdbcType=VARCHAR}, "+ + "#{factory,jdbcType=VARCHAR}, "+ + "#{proname,jdbcType=VARCHAR}, "+ + "#{tennumber,jdbcType=VARCHAR}, "+ + "#{promanager,jdbcType=VARCHAR}, "+ + "#{quantity,jdbcType=VARCHAR}, "+ + "#{tramodel,jdbcType=VARCHAR}, "+ + "#{capfactor,jdbcType=VARCHAR}, "+ + "#{volratio,jdbcType=VARCHAR}, "+ + "#{noloadloss,jdbcType=VARCHAR} ,"+ + "#{loadloss,jdbcType=VARCHAR}, "+ + "#{impvoltage,jdbcType=VARCHAR}, "+ + "#{traweight,jdbcType=VARCHAR}, "+ + "#{totweight,jdbcType=VARCHAR}, "+ + "#{copconsumption,jdbcType=VARCHAR}, "+ + "#{cmarketprice,jdbcType=VARCHAR}, "+ + "#{vollevel,jdbcType=VARCHAR}, "+ + "#{rectime,jdbcType=VARCHAR}, "+ + "#{state,jdbcType=VARCHAR}"+ + ")" + + ) + int insertQuotation(Quotation quotation); + + @Insert("insert INTO \"CHINT_ QUOTATION_ DETAILS_TEMPLATE\" ("+ + "\"tennumber\", " + + "\"matgroup\", " + + "\"mgsnumber\", " + + "\"matcname\", " + + "\"matcnumber\", " + + "\"matcatname\", " + + "\"specifications\", " + + "\"manufacturer\", " + + "\"nwquantity\", "+ + "\"utirate\", " + + "\"unit\", "+ + "\"amomoney\", "+ + "\"unitprice\", " + + "\"no\", "+ + "\"totalprice\""+ + ")"+ + "VALUES("+ + "#{tennumber,jdbcType=VARCHAR}, "+ + "#{matgroup,jdbcType=VARCHAR}, "+ + "#{mgsnumber,jdbcType=VARCHAR}, "+ + "#{matcname,jdbcType=VARCHAR}, "+ + "#{matcnumber,jdbcType=VARCHAR}, "+ + "#{matcatname,jdbcType=VARCHAR}, "+ + "#{specifications,jdbcType=VARCHAR}, "+ + "#{manufacturer,jdbcType=VARCHAR}, "+ + "#{nwquantity,jdbcType=VARCHAR} ,"+ + "#{utirate,jdbcType=VARCHAR}, "+ + "#{unit,jdbcType=VARCHAR}, "+ + "#{amomoney,jdbcType=VARCHAR}, "+ + "#{unitprice,jdbcType=VARCHAR}, "+ + "#{no,jdbcType=VARCHAR}, "+ + "#{totalprice,jdbcType=VARCHAR}"+ + ")" + + ) + int insertQuotationMX(QuotationMX quotationMX); + + @Select("select puid from CHINT_BOM_TO_SAP_DETIALS where batchnumber = #{batchnumber,jdbcType=VARCHAR} and status is null ") + List getStatus(String batchnumber); + + @Update("update CHINT_BOM_TO_SAP_DETIALS set message = #{message,jdbcType=VARCHAR} , " + + " status = #{status,jdbcType=VARCHAR}," + + " createdate = #{createdate,jdbcType=VARCHAR}, " + + " createtime = #{createtime,jdbcType=VARCHAR}, " + + " returndate = #{returndate,jdbcType=VARCHAR}, " + + " returntime = #{returntime,jdbcType=VARCHAR}, " + + " PLMSENDFINISHTIME = sysdate, " + + " PLMSTATUS = '已处理数据' " + + " where batchnumber = #{batchnumber,jdbcType=VARCHAR} and puid = #{puid,jdbcType=VARCHAR}") + int updateSAPDetails(SapResult sapResult); +// @Update("update CHINT_BOM_TO_SAP_SUM set plmresult = ''") +// int updateSapSum(SapResult sapResult); + //工装需求 + @Insert("insert INTO \"CHINT_ FROCK\" ("+ + "\"INSTANCEID\", " + + "\"FACTORY\", " + + "\"SFID\", " + + "\"HEAD\", " + + "\"SCHEDULEDTIME\", " + + "\"MODEL\", " + + "\"PRODUCTNAME\", " + + "\"TOOLNUMBER\", " + + "\"TOOLNAME\", "+ + "\"TOOLINGLEVEL\", " + + "\"REASON\", "+ + "\"JSGYREQUIREMENTS\", "+ + "\"LINK\", " + + "\"STATE\" " + + ") "+ + "VALUES("+ + "#{instanceId,jdbcType=VARCHAR}, "+ + "#{factory,jdbcType=VARCHAR}, "+ + "#{sfId,jdbcType=VARCHAR}, "+ + "#{head,jdbcType=VARCHAR}, "+ + "#{scheduledtime,jdbcType=VARCHAR}, "+ + "#{model,jdbcType=VARCHAR}, "+ + "#{productname,jdbcType=VARCHAR}, "+ + "#{toolnumber,jdbcType=VARCHAR}, "+ + "#{toolname,jdbcType=VARCHAR} ,"+ + "#{toolinglevel,jdbcType=VARCHAR}, "+ + "#{reason,jdbcType=VARCHAR}, "+ + "#{jsgyrequirements,jdbcType=VARCHAR}, "+ + "#{link,jdbcType=VARCHAR}"+ + ",'未设计')" + + ) + int insertGzxq(GZXQBean gzxqBean); + //变更申请单 + @Insert("insert INTO \"CHINT_ECR_FROM_OA\" ("+ + "\"FACTORY\", " + + "\"APPLYNO\", " + + "\"APPLYLINK\", " + + "\"APPLYUSER\", " + + "\"APPLYDATE\", " + + "\"CHANGETYPE\", " + + "\"PRODUCTCHAR\", " + + "\"PROCESSCHAR\", " + + "\"PRODUCTMODEL\", "+ + "\"PRODUCTNAME\", " + + "\"DESIGNNAME\", "+ + "\"DOCUNAME\", "+ + "\"CONTRACTNO\", " + + "\"CONTRACTNAME\", " + + "\"CHANGERE\", " + + "\"WORKDEAL\", " + + "\"WORKDEALDES\", " + + "\"DESIGNFILE\", " + + "\"TECHFILE\", " + + "\"QUALITYFILE\", " + + "\"PRODUCEFILE\", " + + "\"PURCHASEFILE\", " + + "\"CUSTOMNOTICEFILE\", " + + "\"FINAPRICEFILE\", " + + "\"DESIGNPRINCIPAL\", " + + "\"TECHPRINCIPAL\", " + + "\"QUALITYPRINCIPAL\", " + + "\"PRODUCEPRINCIPAL\", " + + "\"PURCHASEYPRINCIPAL\", " + + "\"CUSTOMNOTICEPRINCIPAL\", " + + "\"FINAPRICEPRINCIPAL\", " + + "\"RECEIPTTIME\", " + + "\"STATUS\" " + + ")"+ + "VALUES("+ + "#{factory,jdbcType=VARCHAR}, "+ + "#{applyno,jdbcType=VARCHAR}, "+ + "#{applylink,jdbcType=VARCHAR}, "+ + "#{applyuser,jdbcType=VARCHAR}, "+ + "#{applydate,jdbcType=VARCHAR}, "+ + "#{changetype,jdbcType=VARCHAR}, "+ + "#{productchar,jdbcType=VARCHAR}, "+ + "#{processchar,jdbcType=VARCHAR}, "+ + "#{productmodel,jdbcType=VARCHAR} ,"+ + "#{productname,jdbcType=VARCHAR}, "+ + "#{designname,jdbcType=VARCHAR}, "+ + "#{docuname,jdbcType=VARCHAR}, "+ + "#{contractno,jdbcType=VARCHAR}, "+ + "#{contractname,jdbcType=VARCHAR}, "+ + "#{changere,jdbcType=VARCHAR}, "+ + "#{workdeal,jdbcType=VARCHAR}, "+ + "#{workdealdes,jdbcType=VARCHAR}, "+ + "#{designfile,jdbcType=VARCHAR}, "+ + "#{techfile,jdbcType=VARCHAR}, "+ + "#{qualityfile,jdbcType=VARCHAR}, "+ + "#{producefile,jdbcType=VARCHAR}, "+ + "#{purchasefile,jdbcType=VARCHAR}, "+ + "#{customnoticefile,jdbcType=VARCHAR}, "+ + "#{finapricefile,jdbcType=VARCHAR}, "+ + "#{designprincipal,jdbcType=VARCHAR}, "+ + "#{techprincipal,jdbcType=VARCHAR}, "+ + "#{qualityprincipal,jdbcType=VARCHAR}, "+ + "#{produceprincipal,jdbcType=VARCHAR}, "+ + "#{purchaseprincipal,jdbcType=VARCHAR}, "+ + "#{customnoticeprincipal,jdbcType=VARCHAR}, "+ + "#{finapriceprincipal,jdbcType=VARCHAR}, "+ + "#{receipttime} , "+ + "#{status,jdbcType=VARCHAR}"+ + ")" + + ) + int insertECR(ECRBean ecrBean); +} diff --git a/demo_k/src/main/java/com/connor/web/mapper/pojo/ScheduleTaskInfo.java b/demo_k/src/main/java/com/connor/web/mapper/pojo/ScheduleTaskInfo.java new file mode 100644 index 0000000..5becfa3 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/mapper/pojo/ScheduleTaskInfo.java @@ -0,0 +1,72 @@ +package com.connor.web.mapper.pojo; + +import java.util.Date; + +/** + * Created by K on 2019/8/13. + */ +public class ScheduleTaskInfo { + private String taskname; + private String resources; + private Date planStartDate; + private Date actualStartDate; + private Date finishDate; + private Date actualFinishDate; + private String status; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTaskname() { + return taskname; + } + + public void setTaskname(String taskname) { + this.taskname = taskname; + } + + public String getResources() { + return resources; + } + + public void setResources(String resources) { + this.resources = resources; + } + + public Date getFinishDate() { + return finishDate; + } + + public void setFinishDate(Date finishDate) { + this.finishDate = finishDate; + } + + public Date getActualFinishDate() { + return actualFinishDate; + } + + public void setActualFinishDate(Date actualFinishDate) { + this.actualFinishDate = actualFinishDate; + } + + public Date getPlanStartDate() { + return planStartDate; + } + + public void setPlanStartDate(Date planStartDate) { + this.planStartDate = planStartDate; + } + + public Date getActualStartDate() { + return actualStartDate; + } + + public void setActualStartDate(Date actualStartDate) { + this.actualStartDate = actualStartDate; + } +} diff --git a/demo_k/src/main/java/com/connor/web/mapper/pojo/UNV8_category_set.java b/demo_k/src/main/java/com/connor/web/mapper/pojo/UNV8_category_set.java new file mode 100644 index 0000000..7f3eb1a --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/mapper/pojo/UNV8_category_set.java @@ -0,0 +1,37 @@ +package com.connor.web.mapper.pojo; + +/** + * Created by K on 2019/5/13. + */ +public class UNV8_category_set { + private String item; + private String formId; + private String createTime; + private String loginName; + private String validTime; + private Integer status; + + public String getItem() { + return item; + } + + public String getFormId() { + return formId; + } + + public String getCreateTime() { + return createTime; + } + + public String getLoginName() { + return loginName; + } + + public String getValidTime() { + return validTime; + } + + public Integer getStatus() { + return status; + } +} diff --git a/demo_k/src/main/java/com/connor/web/mapper/pojo/UNV8_part_reserve.java b/demo_k/src/main/java/com/connor/web/mapper/pojo/UNV8_part_reserve.java new file mode 100644 index 0000000..10627fa --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/mapper/pojo/UNV8_part_reserve.java @@ -0,0 +1,41 @@ +package com.connor.web.mapper.pojo; + +/** + * Created by K on 2019/5/13. + */ + +public class UNV8_part_reserve { + //private String puid; + private String item; + private String formId; + private String createTime; + private String loginName; + private String validTime; + private Integer status; + //private String UNV8_Expiration_PROCESS; + + + public String getItem() { + return item; + } + + public String getFormId() { + return formId; + } + + public String getCreateTime() { + return createTime; + } + + public String getLoginName() { + return loginName; + } + + public String getValidTime() { + return validTime; + } + + public Integer getStatus() { + return status; + } +} diff --git a/demo_k/src/main/java/com/connor/web/service/QuotationService.java b/demo_k/src/main/java/com/connor/web/service/QuotationService.java new file mode 100644 index 0000000..a36492e --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/service/QuotationService.java @@ -0,0 +1,249 @@ +package com.connor.web.service; + +//import com.connor.rb.savadata.pojo.*; +import com.connor.web.bean.*; +import com.connor.web.controller.QuotationController; +import com.connor.web.mapper.IDataMapper; +import com.fasterxml.jackson.databind.ObjectMapper; +//import com.teamcenter.soa.client.model.strong.Session; +import com.squareup.okhttp.*; +import com.teamcenter.clientx.Session; +import com.teamcenter.services.strong.core.DataManagementService; +//import com.teamcenter.services.strong.workflow.WorkflowService; +//import com.teamcenter.services.strong.workflow._2014_06.Workflow; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.ServiceData; +import com.teamcenter.soa.client.model.strong.EPMTask; +import com.teamcenter.soa.client.model.strong.User; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.configurationprocessor.json.JSONArray; +import org.springframework.boot.configurationprocessor.json.JSONObject; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.connor.web.config.Config; +import com.connor.web.util.TCUtil; +@Service +public class QuotationService { + @Autowired + private IDataMapper dataMapper; + private static final Logger logger = LoggerFactory.getLogger(QuotationController.class); + public void saveQuotation(QuotationDTO quotationDTO) throws Exception{ + // 解析并保存CHINT_QUOTATION_TITLE_TEMPLATE数据 + Quotation quotation = new Quotation(); + quotation.setTechnical(quotationDTO.getTechnical()); + quotation.setFactory(quotationDTO.getFactory()); + quotation.setProname(quotationDTO.getProname()); + quotation.setTennumber(quotationDTO.getTennumber()); + quotation.setPromanager(quotationDTO.getPromanager()); + quotation.setQuantity(quotationDTO.getQuantity()); + quotation.setTramodel(quotationDTO.getTramodel()); + quotation.setCapfactor(quotationDTO.getCapfactor()); + quotation.setVolratio(quotationDTO.getVolratio()); + quotation.setNoloadloss(quotationDTO.getNoloadloss()); + quotation.setLoadloss(quotationDTO.getLoadloss()); + quotation.setImpvoltage(quotationDTO.getImpvoltage()); + quotation.setTraweight(quotationDTO.getTraweight()); + quotation.setTotweight(quotationDTO.getTotweight()); + quotation.setCopconsumption(quotationDTO.getCopconsumption()); + quotation.setCmarketprice(quotationDTO.getCmarketprice()); + quotation.setVollevel(quotationDTO.getVollevel()); + quotation.setRectime(LocalDate.now().toString()); + quotation.setState("未创建"); + + dataMapper.insertQuotation(quotation); + + //开始插入明细表 + List materialdets = quotationDTO.getMaterialdet(); + for(Materialdet materialdet : materialdets){ + List matcategorys = materialdet.getMatcategory(); + for(Matcategory matcategory : matcategorys){ + List matslists = matcategory.getMatslist(); + for(Matslist matslist : matslists){ + //开始循环插入数据 + QuotationMX quotationMX = new QuotationMX(); + quotationMX.setProname(quotationDTO.getProname()); + quotationMX.setTennumber(quotationDTO.getTennumber()); + quotationMX.setMatgroup(materialdet.getMatgroup()); + quotationMX.setMgsnumber(materialdet.getMgsnumber()); + quotationMX.setMatcname(matcategory.getMatcname()); + quotationMX.setMatcnumber(matcategory.getMatcnumber()); + quotationMX.setMatcatname(matslist.getMatcatname()); + quotationMX.setSpecifications(matslist.getSpecifications()); + quotationMX.setManufacturer(matslist.getManufacturer()); + quotationMX.setNwquantity(matslist.getNwquantity()); + quotationMX.setUtirate(matslist.getUtirate()); + quotationMX.setUnit(matslist.getUnit()); + quotationMX.setAmomoney(matslist.getAmomoney()); + quotationMX.setNo(matslist.getNo()); + quotationMX.setTotalprice(quotationDTO.getTotalprice()); + quotationMX.setUnitprice(matslist.getUnitprice()); + dataMapper.insertQuotationMX(quotationMX); + + } + } + } + } + public static void logMsg(String msg) { + TCUtil.log(logger, msg); + } + //工装需求 + public void saveGzxq(GZXQBean gzxqBean) throws Exception{ + + dataMapper.insertGzxq(gzxqBean); + } + @Autowired + private Config config; + //工装需求 + public void saveSapResult(List results){ +// Session session = new Session(config.getTc_url()); + try{ +// User user = session.login2(config.getTc_user(), config.getTc_pwd()); +// if (user == null) { +// throw new Exception("Teamcenter SOA登录失败"); +// } + String batchNumber = ""; + for(SapResult result:results){ + System.out.println("update==>"+result.toString()); + dataMapper.updateSAPDetails(result); + batchNumber = result.getBatchnumber(); + } + List status = dataMapper.getStatus(batchNumber); + if(status.size()==0){ + //已经全部完成,修改NUM表的状态 ,发送飞书信息 + + //查询成功的 + + //查询失败的 + com.alibaba.fastjson2.JSONObject msgJson = new com.alibaba.fastjson2.JSONObject(); + msgJson.put("mobiles", new String[] {}); + msgJson.put("emails", new String[] {"shaojq"}); + msgJson.put("sms", false); + msgJson.put( + "content", + "项目BOM传递测试完成,测试用"); +// String result = okHttpCli.doPostJson(finalUrl, msgJson.toJSONString()); + OkHttpClient client = new OkHttpClient(); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType,msgJson.toJSONString()); + Request request = new Request.Builder() + .url("http://10.128.10.170/api/feishu/Message/sendMessages") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .build(); + Response response = client.newCall(request).execute(); + System.out.println(response.body().string() + "msgJson.toString() ==>"+msgJson.toString()); + + + } + + }catch (Exception e){ + e.printStackTrace(); + }finally { +// session.logout(); + } + } + + //存储变更申请单信息 + public void saveECRInfo(com.alibaba.fastjson2.JSONObject jsonObject) throws Exception{ + ECRBean ecrBean = new ECRBean(); + ecrBean.setFactory(jsonObject.getString("factory")); + ecrBean.setApplyno(jsonObject.getString("applyno")); + ecrBean.setApplylink(jsonObject.getString("applylink")); + ecrBean.setApplyuser(jsonObject.getString("applyuser")); + ecrBean.setApplydate(jsonObject.getString("applydate")); + ecrBean.setChangetype(jsonObject.getString("changetype")); + ecrBean.setProductchar(jsonObject.getString("productchar")); + ecrBean.setProcesschar(jsonObject.getString("processchar")); + ecrBean.setProductmodel(jsonObject.getString("productmodel")); + ecrBean.setProductname(jsonObject.getString("productname")); + ecrBean.setDesignname(jsonObject.getString("designname")); + ecrBean.setDocuname(jsonObject.getString("docuname")); + ecrBean.setContractno(jsonObject.getString("contractno")); + ecrBean.setContractname(jsonObject.getString("contractname")); + ecrBean.setWorkdeal(jsonObject.getString("workdeal")); + ecrBean.setWorkdealdes(jsonObject.getString("workdealdes")); + ecrBean.setReceipttime(new Date()); + ecrBean.setStatus("已接收"); + com.alibaba.fastjson2.JSONArray changereArray = jsonObject.getJSONArray("changeres"); + com.alibaba.fastjson2.JSONObject changeexecution = jsonObject.getJSONObject("changeexecution"); + ecrBean.setDesignprincipal(changeexecution.getJSONObject("design").getString("designprincipal")); + com.alibaba.fastjson2.JSONArray designfileArray = changeexecution.getJSONObject("design").getJSONArray("designfiles"); + ecrBean.setTechprincipal(changeexecution.getJSONObject("tech").getString("techprincipal")); + com.alibaba.fastjson2.JSONArray techfileArray = changeexecution.getJSONObject("tech").getJSONArray("techfiles"); + ecrBean.setQualityprincipal(changeexecution.getJSONObject("quality").getString("qualityprincipal")); + com.alibaba.fastjson2.JSONArray qualityfileArray = changeexecution.getJSONObject("quality").getJSONArray("qualityfiles"); + ecrBean.setProduceprincipal(changeexecution.getJSONObject("produce").getString("produceprincipal")); + com.alibaba.fastjson2.JSONArray producefileArray = changeexecution.getJSONObject("produce").getJSONArray("producefiles"); + ecrBean.setPurchaseprincipal(changeexecution.getJSONObject("purchase").getString("purchaseprincipal")); + com.alibaba.fastjson2.JSONArray purchasefileArray = changeexecution.getJSONObject("purchase").getJSONArray("purchasefiles"); + ecrBean.setCustomnoticeprincipal(changeexecution.getJSONObject("customnotice").getString("customnoticeprincipal")); + com.alibaba.fastjson2.JSONArray customnoticefileArray = changeexecution.getJSONObject("customnotice").getJSONArray("customnoticefiles"); + ecrBean.setFinapriceprincipal(changeexecution.getJSONObject("finaprice").getString("finapriceprincipal")); + com.alibaba.fastjson2.JSONArray finapricefileArray = changeexecution.getJSONObject("finaprice").getJSONArray("finapricefiles"); + String changere = getArrayStr(changereArray, "changere"); + String designfile = getArrayStr(designfileArray, "designfile"); + String techfile = getArrayStr(techfileArray, "techfile"); + String qualityfile = getArrayStr(qualityfileArray, "qualityfile"); + String producefile = getArrayStr(producefileArray, "producefile"); + String purchasefile = getArrayStr(purchasefileArray, "purchasefile"); + String customnoticefile = getArrayStr(customnoticefileArray, "customnoticefile"); + String finapricefile = getArrayStr(finapricefileArray, "finapricefile"); + ecrBean.setChangere(changere); + ecrBean.setDesignfile(designfile); + ecrBean.setTechfile(techfile); + ecrBean.setQualityfile(qualityfile); + ecrBean.setProducefile(producefile); + ecrBean.setPurchasefile(purchasefile); + ecrBean.setCustomnoticefile(customnoticefile); + ecrBean.setFinapricefile(finapricefile); + dataMapper.insertECR(ecrBean); + } + + public String getArrayStr(com.alibaba.fastjson2.JSONArray jsonArray, String fieldName) throws Exception { + if(jsonArray != null && jsonArray.size() > 0){ + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < jsonArray.size(); i++) { + com.alibaba.fastjson2. JSONObject jsonObject = jsonArray.getJSONObject(i); + String str = jsonObject.getString("fieldName"); + sb.append(str); + if(i < jsonArray.size() - 1){ + sb.append(";"); + } + } + return sb.toString(); + }else{ + return ""; + } + } + +// public void assignOATask(WorkflowService wfService, EPMTask childReview, ModelObject signOff){ +// DataManagementService dmService = DataManagementService.getService(Session.getConnection()); +// System.out.println("批准OA审批节点"); +// Workflow.PerformActionInputInfo[] infos = new Workflow.PerformActionInputInfo[1]; +// Workflow.PerformActionInputInfo info = new Workflow.PerformActionInputInfo(); +// info.clientId = "AppX_Perform"; +// info.action = "SOA_EPM_approve_action"; +// info.supportingValue = "SOA_EPM_approve"; +// info.actionableObject = childReview; +//// info.supportingObject = signOff; +// Map propertyNameValues = new HashMap(); +// propertyNameValues.put("comments",new String[]{""}); +// info.propertyNameValues = propertyNameValues; +// infos[0] = info; +// try{ +// ServiceData sData1 = wfService.performAction(childReview, "SOA_EPM_perform_action", "", null, "SOA_EPM_approve", signOff); +// +// }catch(Exception e){ +// e.printStackTrace(); +// } +// } + +} diff --git a/demo_k/src/main/java/com/connor/web/util/DefineUtil.java b/demo_k/src/main/java/com/connor/web/util/DefineUtil.java new file mode 100644 index 0000000..06ed245 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/util/DefineUtil.java @@ -0,0 +1,249 @@ +package com.connor.web.util; + +import com.alibaba.fastjson2.JSONObject; +import com.teamcenter.services.strong.cad._2007_01.StructureManagement; +import com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSAllLevelsOutput; +import com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSData; +import com.teamcenter.services.strong.core.DataManagementService; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.ServiceData; +import com.teamcenter.soa.client.model.strong.*; +import com.teamcenter.clientx.Session; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 定义JSON、属性、查询 + */ +public class DefineUtil { + //JSON返回信息 + public static final String SUCCESS_CODE = "200"; + public static final String ERROR_CODE = "500"; + public static final String ERROR_MSG_NOCCP = "数据组织失败"; + public static final String ERROR_MSG_CCP = "成功组织数据"; + public static final String JSON_CODE = "code"; + public static final String JSON_CCP_QUANTITY = "ccpquantity"; + public static final String JSON_MSG = "msg"; + //入参 + public static final String JSON_FACTORY = "factoryno"; + public static final String JSON_WBSNO = "wbsno"; + public static final String JSON_CCP_MATERIALNO = "ccpmaterialno"; + //JSON 底层物料信息 + public static final String JSON_CONTENTS = "contents"; + public static final String JSON_CONTENTS_NO = "no"; + public static final String JSON_CONTENTS_MATERIAL = "materialno"; + public static final String JSON_CONTENTS_QTY = "quantity"; + public static final String JSON_INFO = "JSONINFO"; + public static final String JSON_DATA = "DATA"; + //查询 + public static final String SEARCH_MATERIAL = "chint_query_material_test"; + public static final String COND_MATERIAL = "materialno"; + public static final String COND_WBSNO = "WBS No"; + //属性名称 + public static final String PROP_SZFACTORY = "zt2_SZFactory"; + public static final String PROP_SZPROCURE_TYPE = "zt2_SZProcuretype"; + public static final String PROP_IFPBOM = "zt2_ifpbom"; + public static final String PROP_MATERIAL_NO = "zt2_MaterialNo"; + public static final String PROP_REV_QUANTITY = "zt2_Quantity"; + public static final String PROP_QUANTITY = "bl_quantity"; + public static final String VAL_FACTORY_WH = "M060"; + public static final String VAL_DEFAULT_QUANTITY = "1"; + public static final String VAL_EMPTY_STRING = ""; + public static final String VAL_OUTBUY = "外购"; + public static final String VAL_ISPBOM = "P"; + public static final String URL_BOM_DETAILS = "https://gfpoapp.chint.com:2443/RESTAdapter/PLM2S4/GET_BOMDETAILS";//测试地址"https://gfpot01.chint.com:4443/RESTAdapter/PLM2S4/GET_BOMDETAILS"; + public static final String POST_METHOD = "POST"; + public static final String CONTENT_TYPE = "Content-Type"; + public static final String JSON_APP = "application/json"; + public static final String AUTH = "Authorization"; + public static final String BASIC = "Basic cG9fcmZjOjFxYXohUUFa"; + /** + * BOM全展开 + * + * @param bomLine 要展开的BOM + * @return BOMuid, 子行 + */ + public static Map getBomLineTreeNodeSOA(BOMLine bomLine) { +// List bomLineNodes = list; + + // 预定义BOM父子对map及ItemRev map + Map bomLineMap = new HashMap(); + try { + // 调用SOA方法,批量展开BOM + com.teamcenter.services.strong.cad._2007_01.StructureManagement structureService = com.teamcenter.services.strong.cad.StructureManagementService + .getService(Session.getConnection()); + com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSAllLevelsInfo levelInfo + = new com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSAllLevelsInfo(); + com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSAllLevelsPref levelPref + = new com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSAllLevelsPref(); + levelInfo.parentBomLines = new BOMLine[]{bomLine}; // 输入顶层BOMLine对象 + levelInfo.excludeFilter = "None"; + levelPref.expItemRev = false; + levelPref.info = new com.teamcenter.services.strong.cad._2007_01.StructureManagement.RelationAndTypesFilter[0]; + // 使用以下方法展开完整的BOM行 + com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSAllLevelsResponse levelResp = structureService + .expandPSAllLevels(levelInfo, levelPref); + if (levelResp.output.length > 0) { + // 将BOM构建成uid父子对关系 + for (ExpandPSAllLevelsOutput data : levelResp.output) { + ExpandPSData[] children = data.children; + BOMLine parentBomLine = (BOMLine) data.parent.bomLine; + bomLineMap.put(parentBomLine.getUid(), children); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return bomLineMap; + } + + /** + * 关闭BOMWindow + * * @param bomWindow + */ + public synchronized static void closeBOMWindow(BOMWindow bomWindow) { + try { + com.teamcenter.services.strong.cad.StructureManagementService cadSMService + = com.teamcenter.services.strong.cad.StructureManagementService + .getService(Session.getConnection()); + StructureManagement.CloseBOMWindowsResponse response = null; + com.teamcenter.services.strong.cad._2008_06.StructureManagement.SaveBOMWindowsResponse res = null; + if (cadSMService != null + && bomWindow != null) { + res = cadSMService.saveBOMWindows(new BOMWindow[]{bomWindow}); + response = + cadSMService.closeBOMWindows(new BOMWindow[]{bomWindow}); + } + if (response.serviceData.sizeOfPartialErrors() > 0) { + for (int i = 0; i < response.serviceData + .sizeOfPartialErrors(); i++) { + System.out.println("Close BOMWindow Partial Error -- " + response.serviceData + .getPartialError(i).getMessages()[0]); + } + } + if (res.serviceData.sizeOfPartialErrors() > 0) { + for (int i = 0; i < res.serviceData + .sizeOfPartialErrors(); i++) { + System.out.println("save BOMWindow Partial Error -- " + res.serviceData + .getPartialError(i).getMessages()[0]); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + + /** + * 遍历BOM获取底层信息 + * + * @param parentLine 父BOM行 + * @param itemRevOfBOMLine BOM行对应的版本 + * @param expandMap 全展开获取的BOM信息集合 + * @param materialMap Map 物料编码-数量 + * @param qty 数量累乘 + */ + public static void getChildBomMsg(BOMLine parentLine, ItemRevision itemRevOfBOMLine + , Map expandMap, Map materialMap, Double qty) throws Exception { + String parentUid = parentLine.getUid(); + ExpandPSData[] expandPSData = expandMap.get(parentUid); + refreshAndGetProperties(parentLine, PROP_QUANTITY); + String blQty = parentLine.getPropertyDisplayableValue(PROP_QUANTITY); + Double qtyDouble = 1.0; + if (!blQty.isEmpty()) { + qtyDouble = Double.parseDouble(blQty); + } + // 数量为0,为底层数据 + if (expandPSData == null || expandPSData.length == 0) { + //自制不需要 + refreshAndGetProperties(itemRevOfBOMLine, PROP_MATERIAL_NO, PROP_SZFACTORY, PROP_SZPROCURE_TYPE); + String materialNo = itemRevOfBOMLine.getPropertyDisplayableValue(PROP_MATERIAL_NO); + if (materialMap.containsKey(materialNo)) { + materialMap.put(materialNo, materialMap.get(materialNo) + qty * qtyDouble); + } + if (!isOutBuy(itemRevOfBOMLine)) { + return; + } + materialMap.put(materialNo, qty * qtyDouble); + } else { + //获取当前层级数量,然后累乘 + for (int i = 0; i < expandPSData.length; i++) { + getChildBomMsg(expandPSData[i].bomLine, expandPSData[i].itemRevOfBOMLine + , expandMap, materialMap, qty * qtyDouble); + } + } + } + + /** + * 判断是不是外购件 + * + * @param material 物料 + * @return + */ + public static boolean isOutBuy(ItemRevision material) throws Exception { + boolean flag = false; + List factorys = material.getPropertyDisplayableValues(PROP_SZFACTORY); + List procureTypes = material.getPropertyDisplayableValues(PROP_SZPROCURE_TYPE); + for (int i = 0; i < factorys.size(); i++) { + if (factorys.get(i).equals(VAL_FACTORY_WH) + && procureTypes.size() > i + && procureTypes.get(i).contains(VAL_OUTBUY)) { + flag = true; + } + } + return flag; + } + + /** + * 根据版本打开BOM + * + * @param parentItemRev + * @return 返回信息 0 BOMWindow 1 BOMLine + */ + public static ArrayList openBOMWindow(ItemRevision parentItemRev) { + + ArrayList bomWindowandParentLine = new ArrayList(3); + StructureManagement.CreateBOMWindowsInfo[] createBOMWindowsInfo = new StructureManagement.CreateBOMWindowsInfo[1]; + + + createBOMWindowsInfo[0] = new StructureManagement.CreateBOMWindowsInfo(); + createBOMWindowsInfo[0].itemRev = (ItemRevision) parentItemRev; + com.teamcenter.services.strong.cad.StructureManagementService cadSMService = + com.teamcenter.services.strong.cad.StructureManagementService + .getService(Session.getConnection()); + + StructureManagement.CreateBOMWindowsResponse createBOMWindowsResponse = + cadSMService.createBOMWindows(createBOMWindowsInfo); +// cadSMService. +// cadSMService.d + if (createBOMWindowsResponse.serviceData.sizeOfPartialErrors() > 0) { + for (int i = 0; i < createBOMWindowsResponse.serviceData + .sizeOfPartialErrors(); i++) { + + System.out.println("Partial Error in Open BOMWindow = " + createBOMWindowsResponse.serviceData + .getPartialError(i).getMessages()[0]); + } + } + + bomWindowandParentLine.add(createBOMWindowsResponse.output[0].bomWindow);//BOMWindow + BOMLine bomLine = createBOMWindowsResponse.output[0].bomLine; + bomWindowandParentLine.add(bomLine); + return bomWindowandParentLine; + } + + /** + * 刷新对象加载属性 + * + * @param modelObject TC对象 + * @param properties 属性名称 + * @throws Exception + */ + public static void refreshAndGetProperties(ModelObject modelObject, String... properties) throws Exception { + DataManagementService dmService = DataManagementService.getService(Session.getConnection()); + dmService.refreshObjects(new ModelObject[]{modelObject}); + dmService.getProperties(new ModelObject[]{modelObject}, properties); + } +} diff --git a/demo_k/src/main/java/com/connor/web/util/FtpUtil.java b/demo_k/src/main/java/com/connor/web/util/FtpUtil.java new file mode 100644 index 0000000..e45c546 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/util/FtpUtil.java @@ -0,0 +1,167 @@ +package com.connor.web.util; + +import java.io.*; +import java.net.SocketException; + +import org.apache.commons.net.ftp.FTP; +import org.apache.commons.net.ftp.FTPClient; +import org.apache.commons.net.ftp.FTPReply; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FtpUtil { + private final static Logger logger = LoggerFactory.getLogger(FtpUtil.class); + + /** + * 获取FTPClient对象 + * + * @param ftpHost FTP主机服务器 + * @param ftpPassword FTP 登录密码 + * @param ftpUserName FTP登录用户名 + * @param ftpPort FTP端口 默认为21 + * @return + */ + public static FTPClient getFTPClient(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort) { + FTPClient ftpClient = new FTPClient(); + try { + ftpClient = new FTPClient(); + ftpClient.connect(ftpHost, ftpPort); // 连接FTP服务器 + ftpClient.login(ftpUserName, ftpPassword); + ftpClient.setControlEncoding("UTF-8"); + ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); + ftpClient.enterLocalPassiveMode(); + if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { + logger.info("未连接到FTP,用户名或密码错误。"); + ftpClient.disconnect(); + } else { + logger.info("FTP连接成功。"); + } + } catch (SocketException e) { + e.printStackTrace(); + logger.info("FTP的IP地址可能错误,请正确配置。"); + } catch (IOException e) { + e.printStackTrace(); + logger.info("FTP的端口错误,请正确配置。"); + } + return ftpClient; + } + + /* + * 从FTP服务器下载文件 + * @param ftpHost             FTP IP地址 + * @param ftpUserName         FTP 用户名 + * @param ftpPassword         FTP用户名密码 + * @param ftpPort             FTP端口 + * @param ftpPath             FTP服务器中文件所在路径 格式: ftptest/aa + * @param localPath           下载到本地的位置 格式:H:/download + * @param fileName            FTP服务器上要下载的文件名称 + * @param targetFileName      FTP服务器上要下载的文件名称 + */ + public static File downloadFtpFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort, String ftpPath, String localPath, String fileName, String targetFileName) throws Exception{ + + FTPClient ftpClient = null; + File localFile = null; + OutputStream os=null; + try { + ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort); + ftpClient.changeWorkingDirectory(ftpPath);//路径需要转码 + String f_ame = new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING); //编码文件格式,解决中文文件名 + localFile = new File(localPath + File.separatorChar + targetFileName); + os = new FileOutputStream(localFile); + boolean success=ftpClient.retrieveFile(f_ame, os); + os.flush(); + os.close(); + os=null; + if(!success){ + if(localFile.exists()){ + localFile.delete(); + } + localFile=null; + } + } finally { + if(os!=null){ + try { + os.close(); + } catch (Exception e) { + } + } + if(ftpClient!=null){ + try { + ftpClient.logout(); + } catch (Exception e) { + e.printStackTrace(); + } + if (ftpClient.isConnected()) { + try { + ftpClient.disconnect(); + } catch (Exception ioe) { + } + } + } + } + return localFile; + } + + /** + * Description:             向FTP服务器上传文件 + * + * @param ftpHost              FTP服务器hostname + * @param ftpPort              FTP服务器端口 + * @param ftpUserName          FTP登录账号 + * @param ftpPassword          FTP登录密码 + * @param ftpPath          FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath + * @param filename          上传到FTP服务器上的文件名 + * @param input             输入流 + * @return                  成功返回true,否则返回false + */ + public static void uploadFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort, String ftpPath, String filename, InputStream input) throws Exception{ + FTPClient ftpClient = null; + try { + int reply; + ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort); + ftpClient.changeWorkingDirectory(ftpPath);//这里需要创建目录 + reply = ftpClient.getReplyCode(); + if (!FTPReply.isPositiveCompletion(reply)) { + throw new Exception("连接FTP服务器失败,ReplyCode = "+reply); + } + filename = new String(filename.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING);//编码文件名,支持中文文件名 + //上传文件 + if (!ftpClient.storeFile(filename, input)) { + throw new Exception("FTP服务器储存文件失败"); + } + } finally { + try { + ftpClient.logout(); + } catch (Exception e) { + e.printStackTrace(); + } + if (ftpClient.isConnected()) { + try { + ftpClient.disconnect(); + } catch (IOException ioe) { + } + } + } + } + + public static void main(String[] args) { + String ftpHost = "192.168.0.117"; + String ftpUserName = "administrator"; + String ftpPassword = "infodba"; + int ftpPort = 8082; + String ftpPath = "/static/files"; + String fileName = "ccc.xls"; + + //上传一个文件 + try { + //FileInputStream in = new FileInputStream(new File("D:\\123123.txt")); + //FtpUtil.uploadFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, fileName, in); + + FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, "D:\\", "D2.zip", "D2.zip"); + } catch (Exception e) { + e.printStackTrace(); + System.out.println(e); + } + } +} + diff --git a/demo_k/src/main/java/com/connor/web/util/JsonDateSerializer.java b/demo_k/src/main/java/com/connor/web/util/JsonDateSerializer.java new file mode 100644 index 0000000..e21e34b --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/util/JsonDateSerializer.java @@ -0,0 +1,22 @@ +package com.connor.web.util; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by K on 2019/5/23. + */ +public class JsonDateSerializer extends JsonSerializer { + private SimpleDateFormat sdf=new SimpleDateFormat("yyyy/M/d H:mm"); + + @Override + public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + String value=sdf.format(date); + jsonGenerator.writeString(value); + } +} diff --git a/demo_k/src/main/java/com/connor/web/util/MyRequestWrapper.java b/demo_k/src/main/java/com/connor/web/util/MyRequestWrapper.java new file mode 100644 index 0000000..cb044ac --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/util/MyRequestWrapper.java @@ -0,0 +1,75 @@ +package com.connor.web.util; + +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.io.*; + +public class MyRequestWrapper extends HttpServletRequestWrapper { + + private String body; + /** + * Constructs a request object wrapping the given request. + * + * @param request the {@link HttpServletRequest} to be wrapped. + * @throws IllegalArgumentException if the request is null + */ + public MyRequestWrapper(HttpServletRequest request) throws IOException { + super(request); + StringBuilder sb = new StringBuilder(); + InputStream ins = request.getInputStream(); + BufferedReader isr = null; + try{ + if(ins!=null) + { + isr = new BufferedReader(new InputStreamReader(ins)); + char[] charBuffer = new char[128]; + int readCount; + while((readCount=isr.read(charBuffer))!=-1) + { + sb.append(charBuffer,0,readCount); + } + } + }catch (Exception e) + { + throw e; + }finally { + if(isr!=null) + isr.close(); + } + + } + + @Override + public BufferedReader getReader() throws IOException { + return new BufferedReader(new InputStreamReader(this.getInputStream())); + } + + @Override + public ServletInputStream getInputStream() throws IOException { + final ByteArrayInputStream byteArrayIns = new ByteArrayInputStream(body.getBytes()); + ServletInputStream servletIns = new ServletInputStream() { + @Override + public boolean isFinished() { + return false; + } + + @Override + public boolean isReady() { + return false; + } + + @Override + public void setReadListener(ReadListener readListener) { + + } + + @Override + public int read() throws IOException { + return byteArrayIns.read(); + } + }; + return servletIns; + } +} diff --git a/demo_k/src/main/java/com/connor/web/util/RelationUtils.java b/demo_k/src/main/java/com/connor/web/util/RelationUtils.java new file mode 100644 index 0000000..0d4e118 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/util/RelationUtils.java @@ -0,0 +1,346 @@ +package com.connor.web.util; + +import com.teamcenter.services.strong.core.DataManagementService; +import com.teamcenter.services.strong.core._2007_01.DataManagement; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.strong.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * 关系查找工具类 + */ +public class RelationUtils { + + private static final Logger logger = LoggerFactory.getLogger(RelationUtils.class); + + // 项目零组件 + private static final String OBJECT_TYPE_PROJECT_ITEM = "ZT2_ProjectItem"; + + // 公共文件夹 + private static final String OBJECT_TYPE_PROJECT_FOLDER = "ZT2_ProjectFolder"; + + // 图纸模型 + private static final String OBJECT_TYPE_DESIGN = "ZT2_Design3D"; + + // 图纸模型版本 + private static final String OBJECT_TYPE_DESIGN_REVISION = "ZT2_Design3DRevision"; + + /** + * 获取引用信息 + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @return 引用信息 + * @throws Exception 异常处理 + */ + public static List getWhereReferencedInfos(DataManagementService dataManagementService, WorkspaceObject currentObject) throws Exception { + List referencedInfos = new ArrayList<>(); + // 何处引用响应 + DataManagement.WhereReferencedResponse referencedResponse = dataManagementService.whereReferenced(new WorkspaceObject[]{currentObject}, 1); + TCUtil.throwServiceDataError(referencedResponse.serviceData); + int outputSize = referencedResponse.output.length; + logger.warn("找到引用输出 {} 项", outputSize); + for (int i = 0; i < outputSize; i++) { + // 何处引用输出 + DataManagement.WhereReferencedOutput referencedOutput = referencedResponse.output[i]; + int infoSize = referencedOutput.info.length; + logger.warn("找到引用信息 {} 项", infoSize); + for (int j = 0; j < infoSize; j++) { + // 何处引用信息 + DataManagement.WhereReferencedInfo referencedInfo = referencedOutput.info[j]; + // 当前引用对象 + WorkspaceObject referencedObject = referencedInfo.referencer; + if (referencedObject != null) { + referencedInfos.add(referencedInfo); + } + } + } + return referencedInfos; + } + + /** + * 获取引用对象 + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @return 引用对象 + * @throws Exception 异常处理 + */ + public static List getWhereReferencedObjects(DataManagementService dataManagementService, WorkspaceObject currentObject) throws Exception { + List referencedObjects = new ArrayList<>(); + List referencedInfos = getWhereReferencedInfos(dataManagementService, currentObject); + if (!referencedInfos.isEmpty()) { + for (DataManagement.WhereReferencedInfo referencedInfo : referencedInfos) { + // 当前引用对象 + WorkspaceObject referencedObject = referencedInfo.referencer; + if (referencedObject != null) { + referencedObjects.add(referencedObject); + } + } + } + return referencedObjects; + } + + /** + * 递归调用查找引用对象 + * [反向查找:出厂编号-图纸模型版本-图纸模型] + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @return 引用对象 + * @throws Exception 异常处理 + */ + public static List getDesignByFactoryNo(DataManagementService dataManagementService, WorkspaceObject currentObject) throws Exception { + List resultObjects = new ArrayList<>(); + List referencedInfos = getWhereReferencedInfos(dataManagementService, currentObject); + if (!referencedInfos.isEmpty()) { + for (DataManagement.WhereReferencedInfo referencedInfo : referencedInfos) { + WorkspaceObject referencedObject = referencedInfo.referencer; + if (referencedObject != null) { + // 获取属性 + dataManagementService.getProperties( + new ModelObject[]{referencedObject}, + new String[]{"object_type", "object_string","ZT2_FactoryNumber","IMAN_specification"}); + String type = referencedObject.get_object_type(); + String name = referencedObject.get_object_string(); + logger.warn("找到引用对象 类型:<{}>,名称:<{}>,关系:<{}>", type, name, referencedInfo.relation); + if (OBJECT_TYPE_DESIGN_REVISION.equals(type)) { + // 图纸模型版本 + resultObjects.addAll(getDesignByFactoryNo(dataManagementService, referencedObject)); + } else if (OBJECT_TYPE_DESIGN.equals(type)) { + // 图纸模型 + resultObjects.add(referencedObject); + } + } + } + } + return resultObjects; + } + + /** + * 递归调用查找引用对象 + * [反向查找:出厂编号-图纸模型版本] + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @return 引用对象 + * @throws Exception 异常处理 + */ + public static List getDesignRevisionByFactoryNo(DataManagementService dataManagementService, WorkspaceObject currentObject) throws Exception { + List resultObjects = new ArrayList<>(); + List referencedInfos = getWhereReferencedInfos(dataManagementService, currentObject); + if (!referencedInfos.isEmpty()) { + for (DataManagement.WhereReferencedInfo referencedInfo : referencedInfos) { + WorkspaceObject referencedObject = referencedInfo.referencer; + if (referencedObject != null) { + // 获取属性 + dataManagementService.getProperties( + new ModelObject[]{referencedObject}, + new String[]{"object_type", "object_string","ZT2_FactoryNumber","IMAN_specification"}); + String type = referencedObject.get_object_type(); + String name = referencedObject.get_object_string(); + logger.warn("找到引用对象 类型:<{}>,名称:<{}>,关系:<{}>", type, name, referencedInfo.relation); + if (OBJECT_TYPE_DESIGN_REVISION.equals(type)) { + // 图纸模型版本 + resultObjects.add(referencedObject); + } + } + } + } + return resultObjects; + } + + /** + * 递归调用查找引用对象 + * [反向查找:出厂编号-出厂编号-项目启动-项目对象] + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @return 引用对象 + * @throws Exception 异常处理 + */ + public static List getItemByFactoryNo(DataManagementService dataManagementService, WorkspaceObject currentObject) throws Exception { + List resultObjects = new ArrayList<>(); + List referencedInfos = getWhereReferencedInfos(dataManagementService, currentObject); + if (!referencedInfos.isEmpty()) { + for (DataManagement.WhereReferencedInfo referencedInfo : referencedInfos) { + WorkspaceObject referencedObject = referencedInfo.referencer; + if (referencedObject != null) { + // 获取属性 + dataManagementService.getProperties( + new ModelObject[]{referencedObject}, + new String[]{"object_type", "object_string","ZT2_FactoryNumber","IMAN_specification"}); + String type = referencedObject.get_object_type(); + String name = referencedObject.get_object_string(); + logger.warn("找到引用对象 类型:<{}>,名称:<{}>,关系:<{}>", type, name, referencedInfo.relation); + if (OBJECT_TYPE_PROJECT_FOLDER.equals(type) && "出厂编号".equals(name)) { + // 出厂编号 + resultObjects.addAll(getItemByFactoryNo(dataManagementService, referencedObject)); + } else if (OBJECT_TYPE_PROJECT_FOLDER.equals(type) && "项目启动".equals(name)) { + // 项目启动 + resultObjects.addAll(getItemByFactoryNo(dataManagementService, referencedObject)); + } else if (OBJECT_TYPE_PROJECT_ITEM.equals(type)) { + // 项目对象 + resultObjects.add(referencedObject); + } + } + } + } + return resultObjects; + } + + /** + * 获取引用对象 + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @return 引用对象 + * @throws Exception 异常处理 + */ + public static ModelObject[] getReferenceObjects(@NotNull DataManagementService dataManagementService, @NotNull WorkspaceObject currentObject) throws Exception { + Item item = (Item) currentObject; + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"IMAN_reference"}); + return item.get_IMAN_reference(); + } + + /** + * 获取内容对象 + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @return 引用对象 + * @throws Exception 异常处理 + */ + public static WorkspaceObject[] getContentObjects(@NotNull DataManagementService dataManagementService, @NotNull WorkspaceObject currentObject) throws Exception { + Folder folder = (Folder) currentObject; + dataManagementService.getProperties(new ModelObject[]{folder}, new String[]{"contents"}); + return folder.get_contents(); + } + + /** + * 获取内容对象 + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @param objectType 对象类型 + * @return 内容对象 + * @throws Exception 异常处理 + */ + public static WorkspaceObject[] getContentObjects(@NotNull DataManagementService dataManagementService, @NotNull WorkspaceObject currentObject, @NotNull String objectType) throws Exception { + dataManagementService.getProperties( + new ModelObject[]{currentObject}, + new String[]{"object_type", "object_string"}); + logger.warn("找到内容对象 类型:<{}>,名称:<{}>", currentObject.get_object_type(), currentObject.get_object_string()); + if (objectType.equals(currentObject.get_object_type()) ) { + return getContentObjects(dataManagementService, currentObject); + } else { + return new WorkspaceObject[0]; + } + } + + /** + * 获取内容对象 + * @param dataManagementService 数据管理服务 + * @param currentObject 当前工作对象 + * @param objectType 对象类型 + * @param objectName 对象名称 + * @return 内容对象 + * @throws Exception 异常处理 + */ + public static WorkspaceObject[] getContentObjects(@NotNull DataManagementService dataManagementService, @NotNull WorkspaceObject currentObject, @NotNull String objectType, @NotNull String objectName) throws Exception { + dataManagementService.getProperties( + new ModelObject[]{currentObject}, + new String[]{"object_type", "object_string"}); + logger.warn("找到内容对象 类型:<{}>,名称:<{}>", currentObject.get_object_type(), currentObject.get_object_string()); + if (objectType.equals(currentObject.get_object_type()) && objectName.equals(currentObject.get_object_string())) { + return getContentObjects(dataManagementService, currentObject); + } else { + return new WorkspaceObject[0]; + } + } + + public static WorkspaceObject[] getDesignRevisionObjects(@NotNull DataManagementService dataManagementService, @NotNull WorkspaceObject currentObject) throws Exception { + List resultObjects = new ArrayList<>(); + Item item = (Item) currentObject; + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"revision_list"}); + // 所有版本 + ModelObject[] modelObjects = item.get_revision_list(); + if (modelObjects!=null) { + int lastRevisionNo = -1; + ItemRevision lastRevisionObject = null; + for (int i = 0; i < modelObjects.length; i++) { + ItemRevision revisionObject = (ItemRevision) modelObjects[i]; + dataManagementService.getProperties( + new ModelObject[]{revisionObject}, + new String[]{"release_status_list"}); + // 发布状态 + ReleaseStatus[] releaseStatuses = revisionObject.get_release_status_list(); + if (releaseStatuses.length == 0) { + continue; + } + // 最新版本 + dataManagementService.getProperties(new ModelObject[]{revisionObject}, new String[]{"item_revision_id"}); + String revisionId = revisionObject.get_item_revision_id(); + int currRevisionNo = Integer.parseInt(revisionId.replace("V", "")); + if (currRevisionNo > lastRevisionNo) { + lastRevisionNo = currRevisionNo; + lastRevisionObject = revisionObject; + } + } + if (lastRevisionObject!=null) { + dataManagementService.getProperties( + new ModelObject[]{lastRevisionObject}, + new String[]{"object_type", "object_string"}); + logger.warn("找到图纸模型版本 类型:<{}>,名称:<{}>", lastRevisionObject.get_object_type(), lastRevisionObject.get_object_string()); + resultObjects.add(lastRevisionObject); + } + return resultObjects.toArray(new WorkspaceObject[0]); + } else { + return new WorkspaceObject[0]; + } + } + + public static WorkspaceObject[] getDesignRevisionObjects(@NotNull DataManagementService dataManagementService, @NotNull WorkspaceObject currentObject, @NotNull String objectType) throws Exception { + dataManagementService.getProperties( + new ModelObject[]{currentObject}, + new String[]{"object_type", "object_string"}); + logger.warn("找到图纸模型 类型:<{}>,名称:<{}>", currentObject.get_object_type(), currentObject.get_object_string()); + if (objectType.equals(currentObject.get_object_type())) { + return getDesignRevisionObjects(dataManagementService, currentObject); + } else { + return new WorkspaceObject[0]; + } + } + + public static List getDesignRevisionByItem(@NotNull DataManagementService dataManagementService, @NotNull WorkspaceObject currentObject) throws Exception { + List resultObjects = new ArrayList<>(); + // 引用对象集合 + ModelObject[] referenceObjects = RelationUtils.getReferenceObjects(dataManagementService, currentObject); + for (ModelObject modelObject : referenceObjects) { + WorkspaceObject referenceObject = (WorkspaceObject) modelObject; + // 公共文件夹[项目执行]-内容对象集合 + WorkspaceObject[] projectExecuteCOs = RelationUtils.getContentObjects(dataManagementService, referenceObject, "ZT2_ProjectFolder", "项目执行"); + for (WorkspaceObject projectExecuteCO : projectExecuteCOs) { + // 公共文件夹[电气图纸]-内容对象集合 + WorkspaceObject[] designCOs = RelationUtils.getContentObjects(dataManagementService, projectExecuteCO, "ZT2_ProjectFolder", "电气图纸"); + for (WorkspaceObject designCO : designCOs) { + // 图纸模型版本集合 + WorkspaceObject[] designRevisionObjects = RelationUtils.getDesignRevisionObjects(dataManagementService, designCO, "ZT2_Design3D"); + if (designRevisionObjects.length > 0) { + Collections.addAll(resultObjects, designRevisionObjects); + } + } + } + } + return resultObjects; + } + + public static List getDesignRevisionByItems(@NotNull DataManagementService dataManagementService, @NotNull List currentObjects) throws Exception { + List resultObjects = new ArrayList<>(); + if (!currentObjects.isEmpty()) { + for (WorkspaceObject currentObject : currentObjects) { + resultObjects.addAll(getDesignRevisionByItem(dataManagementService, currentObject)); + } + } + return resultObjects; + } + +} diff --git a/demo_k/src/main/java/com/connor/web/util/RequestWrapperFilter.java b/demo_k/src/main/java/com/connor/web/util/RequestWrapperFilter.java new file mode 100644 index 0000000..bdeff9c --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/util/RequestWrapperFilter.java @@ -0,0 +1,19 @@ +package com.connor.web.util; + +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; +import org.springframework.web.util.ContentCachingRequestWrapper; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component +public class RequestWrapperFilter extends OncePerRequestFilter { + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + filterChain.doFilter(new ContentCachingRequestWrapper(request),response); + } +} diff --git a/demo_k/src/main/java/com/connor/web/util/TCUtil.java b/demo_k/src/main/java/com/connor/web/util/TCUtil.java new file mode 100644 index 0000000..fab32b2 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/util/TCUtil.java @@ -0,0 +1,1850 @@ +package com.connor.web.util; + +import com.connor.web.bean.FileInfoBean; +import com.connor.web.bean.MaterialBean; +import com.connor.web.config.Config; +import com.connor.web.controller.MyRestController; +//import com.connor.web.mapper.IDataMapper; +import com.s8.services.strong.bypass.S8SoaBypassServiceService; +import com.s8.services.strong.bypass._2016_05.S8SoaBypassService; +import com.s8.services.strong.custserver.S8CustServerService; +import com.s8.services.strong.custserver._2016_05.S8CustServer; +import com.teamcenter.clientx.Session; + +import com.teamcenter.schemas.soa._2006_03.exceptions.ServiceException; +import com.teamcenter.services.strong.administration.PreferenceManagementService; +import com.teamcenter.services.strong.administration._2012_09.PreferenceManagement; +import com.teamcenter.services.strong.core._2008_06.DataManagement.CreateInput; +import com.teamcenter.services.strong.core._2008_06.DataManagement.CreateIn; +import com.teamcenter.services.strong.core._2008_06.DataManagement.CreateResponse; +import com.teamcenter.services.strong.core._2008_06.DataManagement.CreateOut; +import com.teamcenter.services.strong.core._2007_01.DataManagement.VecStruct; +import com.teamcenter.services.strong.core.DataManagementService; +import com.teamcenter.services.strong.core._2007_06.DataManagement.ExpandGRMRelationsPref; +import com.teamcenter.services.strong.core._2007_06.DataManagement.RelationAndTypesFilter2; +import com.teamcenter.services.strong.core._2007_06.DataManagement.ExpandGRMRelationsOutput; +import com.teamcenter.services.strong.core._2007_01.DataManagement; +import com.teamcenter.services.strong.query.SavedQueryService; +import com.teamcenter.services.strong.query._2006_03.SavedQuery; + +import com.teamcenter.soa.client.FileManagementUtility; +import com.teamcenter.soa.client.GetFileResponse; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.Property; +import com.teamcenter.soa.client.model.ServiceData; +import com.teamcenter.soa.client.model.strong.*; +import com.teamcenter.soa.exceptions.NotLoadedException; +import org.apache.logging.log4j.core.util.UuidUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import static org.springframework.util.FileCopyUtils.BUFFER_SIZE; + +import com.teamcenter.services.strong.core._2007_06.DataManagement.ExpandGRMRelationsData; +import com.teamcenter.services.strong.core._2006_03.DataManagement.Relationship; +import com.teamcenter.services.strong.core._2006_03.DataManagement.CreateRelationsResponse; + +/** + * Created by K on 2019/5/14. + */ +public class TCUtil { + + private static final Logger logger = LoggerFactory.getLogger(TCUtil.class); + //public static final String REVTYPE_PARTDOC = "";//"DocumentRevision"; + public static final String REVTYPE_QJDOC = "UNV8_DeviceDocRevision";//"DocumentRevision"; + public static final String REVTYPE_GYS = "UNV8_VendorRevision";//"DocumentRevision"; + public static final String ITEMTYPE_PART = "UNV8_Part";//"Item"; + public static final String REL_DOC_PART = "UNV8_Doc_Part";//"IMAN_reference"; + public static final String PROP_C1 = "unv8_class";//"object_desc"; + public static final String PROP_C2 = "unv8_subclass";//"object_desc"; + public static final String REL_DOC_DATASET = "IMAN_specification";//"IMAN_specification"; + public static final String REL_PART_CJXH = "vendorparts";//"IMAN_reference"; + public static final String REL_CJ_QJZL = "UNV8_MM_DD";//"IMAN_reference";//UNV8_MM_DD + public static final String REL_CJXH_GYS = "vendors";//"IMAN_reference";//vendors + public static final String REL_PART_DESC1 = "UNV8DescRelation"; + public static final String REL_PART_DESC2 = "UNV8SpecRelation"; + + //正泰 + public static final String REL_XM01_XM02 = "IMAN_reference"; + public static final String REL_XM02_PROJPLAN = "IMAN_reference"; + public static final String NAME_PROJPLAN = "项目计划"; + public static final String NAME_PROJEXEC = "项目执行"; + public static final String NAME_PROJSTART = "项目启动"; + public static final String PROP_PRODUCT = "zt2_F004"; + public static final String TYPE_XM02="ZT2_XM02"; + public static final String TYPE_DESIGN3D = "ZT2Design3D"; + public static final String REL_DESIGN_DATASET = "IMAN_specification"; + public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-M-dd-HH-mm"); + + public static void log(Logger logger, String msg) { + logger.warn(msg); + } + + private static void log(String msg) { + log(logger, msg); + } + + public static String getFMSTempFolder(Config config, String doc) { + return config.getFms_cachedir() + "\\" + doc + "\\" + UuidUtil.getTimeBasedUuid().toString(); + } + + + public static String encodeFileToBase64Binary(File file) throws IOException { + // File file = new File(fileName); + //byte[] encoded = Base64.encodeBase64(FileUtils.readFileToByteArray(file)); + //return new String(encoded, StandardCharsets.US_ASCII); + //byte[] encoded = Base64. + FileInputStream inputFile = new FileInputStream(file); + byte[] buffer = new byte[(int)file.length()]; + inputFile.read(buffer); + inputFile.close(); + file.getAbsolutePath(); + byte[] b = Files.readAllBytes(Paths.get(file.getAbsolutePath())); + return Base64.getEncoder().encodeToString(b); + } + + + + + + /** + * 根据请求创建物料Part + * @param material + * @param dataManagementService + * @return item_uid + * @throws ServiceException + */ + public static ModelObject createPart(MaterialBean material,DataManagementService dataManagementService,Folder newFolder) throws Exception { + + + String uid=""; + //id有material.getCompanyCode()+"-"+material.getGoodsCode()->material.getGoodsCode() + //String item_id = material.getCompanyCode()+"-"+material.getGoodsCode(); + String item_id = material.getGoodsCode(); + + ModelObject items[] = queryItemByID(item_id); + log("item_id["+item_id+"]查找到的对象个数:"+items.length); + if(items.length>0) + { + throw new Exception("已存在id为["+item_id+"]的对象,不允许新建对象"); + } + System.out.println("item_id:"+item_id); + String uom_tag = material.getUnitCode(); + String zt2_MaterialNo = material.getGoodsCode(); + String zt2_Factory=material.getCompanyCode(); + String zt2_Specifications =material.getSpec(); + String teRe = material.getTeRe(); + String zt2_State = material.getState(); + // CreateInput revInput = new CreateInput(); + System.out.println("zt2_MaterialNo="+zt2_MaterialNo+"|zt2_Factory="+zt2_Factory+"|zt2_State="+zt2_State+"|zt2_Specifications="+zt2_Specifications); + + CreateInput revInput = new CreateInput(); + revInput.boName="Part Revision"; + Map revPropMap = new HashMap<>(); + revPropMap.put("item_revision_id","A"); + revInput.stringProps = revPropMap; + CreateInput itemInput = new CreateInput(); + itemInput.boName="Part"; + + Map itemPropMap = new HashMap<>(); + itemPropMap.put("item_id",item_id); + // itemPropMap.put("uom_tag",uom_tag); + //System.out.println("uom_tag:"+uom_tag); + itemPropMap.put("object_desc",teRe); + itemPropMap.put("object_name",material.getGoodsName()); + itemInput.stringProps = itemPropMap; + Map revInfoMap = new HashMap<>(); + revInfoMap.put("revision",new CreateInput[]{revInput}); + itemInput.compoundCreateInput = revInfoMap; + CreateIn cl = new CreateIn(); + cl.clientId="PartCreI"; + cl.data = itemInput; + + DataManagementService service; + CreateResponse resp=dataManagementService.createObjects(new CreateIn[] {cl}); + if(resp.serviceData.sizeOfPartialErrors()>0) { + System.out.println("create item failed"); + for(int i=0;i0) + { + uid = cOs[0].objects[2].getUid(); //这是对象的PUID + Map itemProps = new HashMap<>(); + VecStruct vec0 = new VecStruct(); + vec0.stringVec = new String[]{material.getUnitCode()}; + itemProps.put("zt2_unit",vec0); + Map revProps = new HashMap<>(); + VecStruct vec1 = new VecStruct(); + vec1.stringVec = new String[]{zt2_MaterialNo}; + VecStruct vec2 = new VecStruct(); + vec2.stringVec = new String[]{""}; + VecStruct vec3 = new VecStruct(); + vec3.stringVec = new String[]{zt2_Specifications}; + VecStruct vec4 = new VecStruct(); + vec4.stringVec = new String[]{teRe}; + VecStruct vec5 = new VecStruct(); + vec5.stringVec = new String[]{zt2_State}; + VecStruct vec6 = new VecStruct(); + vec6.stringVec = new String[]{material.getSpec()}; + VecStruct vec9 = new VecStruct(); + vec9.stringVec = new String[]{material.getPmpcCode()}; + revProps.put("zt2_ClassificationCode",vec9); + + + revProps.put("zt2_MaterialNo",vec1); + //revProps.put("zt2_Factory",vec2); + //revProps.put("zt2_Specifications",vec3); + revProps.put("zt2_TechRequirements",vec4); + revProps.put("zt2_State",vec5); + revProps.put("object_desc",vec6); + + + ModelObject itemObj = null; + ModelObject revObj = null; + for(int i=0;i revProps = new HashMap<>(); + VecStruct vec1 = new VecStruct(); + vec1.stringVec = new String[]{zt2_MaterialNo}; + VecStruct vec2 = new VecStruct(); + vec2.stringVec = new String[]{""}; + VecStruct vec3 = new VecStruct(); + vec3.stringVec = new String[]{zt2_Specifications}; + VecStruct vec4 = new VecStruct(); + vec4.stringVec = new String[]{teRe}; + VecStruct vec5 = new VecStruct(); + vec5.stringVec = new String[]{zt2_State}; + VecStruct vec6 = new VecStruct(); + vec6.stringVec = new String[]{object_name}; + VecStruct vec9 = new VecStruct(); + vec9.stringVec = new String[]{bean.getPmpcCode()}; + //VecStruct vec7 = new VecStruct(); + //vec7.stringVec = new String[]{bean.getSpec()}; + VecStruct vec8 = new VecStruct(); + vec8.stringVec = new String[]{bean.getUnitCode()}; + + revProps.put("object_name", vec6); + revProps.put("zt2_unit", vec8); + Item item = ((ItemRevision) rev).get_items_tag(); + dmServer.setProperties(new ModelObject[]{item}, revProps); + dmServer.refreshObjects(new ModelObject[]{item}); + revProps.remove("zt2_unit"); + revProps.put("zt2_MaterialNo", vec1); + // revProps.put("zt2_Factory",vec2); + revProps.put("object_desc", vec3); + revProps.put("zt2_TechRequirements", vec4); + revProps.put("zt2_State", vec5); + revProps.put("zt2_ClassificationCode", vec9); + + //revProps.put("object_desc ",vec7); + + + if (flag) { + log("开始修改ID"); + changeID(item, item_id); + log("修改结束"); + } + ModelObject[] objs = new ModelObject[]{rev}; + + dmServer.setProperties(objs, revProps); + dmServer.refreshObjects(objs); + + return item_id; + } + + /** + * 更改ID + * @param item + * @param newID + */ + public static void changeID(Item item,String newID) + { + //RACUIUtil.getTCSession().getSoaConnection() + S8CustServerService service = S8CustServerService.getService(Session.getConnection()); + S8CustServer.S8CustResult result = service.changeItemID(item, newID); + if(result.status==0) + { + log("ID更改成功"); + }else + { + log("ID更改失败"); + } + } + + + public static void createTCM(ModelObject rev,String processName) + { + S8CustServerService service = S8CustServerService.getService(Session.getConnection()); + S8CustServer.S8CustResult result = service.createProcess(new POM_object[]{(POM_object) rev}, processName); + if(result.status==0) + { + log("物料发布成功"); + }else + { + log("物料发布失败"); + } + + } + + + public static void byPass(boolean flag) + { + S8SoaBypassService service =S8SoaBypassServiceService.getService(Session.getConnection()); + service.setBypass(flag); + } + + + public static void createRelation2(ModelObject parent,ModelObject child,String relName,DataManagementService dmService) + { + Relationship[] rela_vec = new Relationship[1]; + Relationship one_rela = new Relationship(); + one_rela.clientId = ""; + one_rela.primaryObject = parent; + one_rela.secondaryObject = child; + one_rela.relationType = relName; + one_rela.userData = null; + rela_vec[0] = one_rela; + CreateRelationsResponse reResp = dmService.createRelations(rela_vec); + if (reResp.serviceData.sizeOfPartialErrors() > 0) + { + log("创建关系发生错误:" + reResp.serviceData.getPartialError(0)); + String[] messages = reResp.serviceData.getPartialError(0).getMessages(); + + for (int i = 0; i < messages.length; i++) + { + log("错误信息:" + messages[i]); + } + } + + } + /** + * 创建关系 + * @param parent + * @param child + * @param relName + * @param dmService + * @throws Exception + */ + public static void createRelation(ModelObject parentRev, ModelObject child, String relName,DataManagementService dmService) throws Exception { + if (parentRev == null || child == null || relName == null || "".equals(relName)) { + return; + } + dmService.getProperties(new ModelObject[]{child}, new String[]{"object_type"}); + log("开始创建关系: {0}"+ relName); + throwServiceDataError(dmService.refreshObjects(new ModelObject[]{parentRev, child})); + //ItemRevision parentRev =getLatestReleasedRev(dmService,parent); + ExpandGRMRelationsPref pref = new ExpandGRMRelationsPref(); + + RelationAndTypesFilter2 filter = new RelationAndTypesFilter2(); + filter.relationName = relName; + //filter.ObjectTypeNames = new String[]{child.Object_type}; + filter.objectTypeNames = new String[]{((ItemRevision)child).get_object_type()}; + pref.expItemRev = false; + pref.info = new RelationAndTypesFilter2[]{filter}; + com.teamcenter.services.strong.core._2007_06.DataManagement.ExpandGRMRelationsResponse grmResp = dmService.expandGRMRelationsForPrimary(new ModelObject[]{parentRev}, pref); + throwServiceDataError(grmResp.serviceData); + if (grmResp.output.length> 0) { + for(ExpandGRMRelationsOutput grmOutput:grmResp.output) + { + for(ExpandGRMRelationsData grmData:grmOutput.otherSideObjData) + { + for(ModelObject obj:grmData.otherSideObjects) + { + if(obj.equals(child)) + { + log("关系已存在,取消创建"); + return ; + } + } + } + } + + } + + Relationship rel = new Relationship(); + rel.clientId=""; + rel.primaryObject = parentRev; + rel.secondaryObject = child; + rel.relationType = relName; + rel.userData=null; + CreateRelationsResponse resp = dmService.createRelations(new Relationship[]{rel}); + throwServiceDataError(resp.serviceData); + log("创建关系完成"); + } + + /** + * + * @param itemID + * @return 根据ID查询对象 + * @throws Exception + */ + public static ModelObject queryPart(String itemID) throws Exception { + if (itemID == null || "".equals(itemID)) { + return null; + } + SavedQueryService queryService = SavedQueryService.getService(Session.getConnection()); + SavedQuery.GetSavedQueriesResponse savedQueries = queryService.getSavedQueries(); + if (savedQueries.queries.length == 0) { + throw new Exception("没有从TC中找到保存的查询"); + } + SavedQuery.SavedQueryObject query = null; + for (int i = 0; i < savedQueries.queries.length; i++) { + if ("chint_query_TYDH".equals(savedQueries.queries[i].name)) { + query = savedQueries.queries[i]; + break; + } + } + if (query == null) { + throw new Exception("TC中不存在“chint_query_TYDH”查询"); + } + com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput savedQueryInput = new com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput(); + savedQueryInput.query = query.query; + savedQueryInput.entries = new String[]{"DrawingNo"}; + savedQueryInput.values = new String[]{itemID}; + com.teamcenter.services.strong.query._2007_06.SavedQuery.ExecuteSavedQueriesResponse res = queryService.executeSavedQueries(new com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput[]{savedQueryInput}); + throwServiceDataError(res.serviceData); + com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryResults found = res.arrayOfResults[0]; + if(found.objects.length>1) + { + log("查询到多个图纸模型"); + return null; + }else if(found.objects.length==1){ + return found.objects[0]; + } + return null; + } + + + + + + public static List getFileFromXM02(Folder folder, DataManagementService dataManagementService, String taskName,String groupName,String th) throws Exception { + log("开始查询项目计划中的文件对象,任务名称:" + taskName); + List res = new ArrayList<>(); + if (taskName == null || "".equals(taskName)) { + return res; + } + boolean flag = false; + if(groupName.equals("M008")) + { + if(taskName.equals("结构设计")) + return res; + }else if(groupName.equals("M005")) + { + if(taskName.equals("总装设计")) + { + String id="1ZDB300000P-"+th; + ModelObject[] items = TCUtil.queryItemByID(id); + if(items!=null && items.length>0) + { + List beans = TCUtil.getPDF((Item)items[0],dataManagementService); + if(beans.size()>0) + res.addAll(beans); + } + flag = true; + + }else if(taskName.equals("二次设计")) + { + /* + String id2="1ZDB207100P-"+th; + ModelObject[] items = TCUtil.queryItemByID(id2); + if(items!=null && items.length>0) { + FileInfoBean bean = TCUtil.getPDF((Item) items[0], dataManagementService); + if (bean != null) + res.add(bean); + } + String id1 = "1ZDB207200P-" + th; + ModelObject[] items2 = TCUtil.queryItemByID(id1); + if(items2!=null && items2.length>0) { + FileInfoBean bean2 = TCUtil.getPDF((Item) items2[0], dataManagementService); + if (bean2 != null) + res.add(bean2); + } + */ + + String design_ids[] = {"1ZDB107001D","1ZDB205000P","1ZDB207100P", + "1ZDB207200W","1ZDB207300W","1ZDB300000Y", + "1ZDB207300P","1ZDB207200P","1ZDB207000P"}; + for(String id:design_ids) + { + String item_id = id+"-"+th; + ModelObject[] items = TCUtil.queryItemByID(item_id); + if(items!=null && items.length>0) { + + List beans = TCUtil.getPDF((Item)items[0],dataManagementService); + if(beans.size()>0) + res.addAll(beans); + // FileInfoBean bean2 = TCUtil.getPDF((Item) items[0], dataManagementService); + //if (bean2 != null) + // res.add(bean2); + } + } + + }else if(taskName.equals("电磁设计")) + { + + + } + }else + { + return res; + } + if(flag) + return res; + + dataManagementService.refreshObjects(new ModelObject[]{folder}); + dataManagementService.getProperties(new ModelObject[]{folder}, new String[]{"contents"}); + ModelObject[] objs = folder.get_contents(); + if (objs == null || objs.length == 0) { + log("文件夹为空"); + return res; + } + dataManagementService.refreshObjects(objs); + dataManagementService.getProperties(objs, new String[]{"object_name"}); + List projPlan = new ArrayList<>(); + for (int i = 0; i < objs.length; i++) { + if(objs[i]==null){ + continue; + } + String cName = objs[i].getPropertyDisplayableValue("object_name"); + if (cName.contains(taskName) && objs[i] instanceof Folder) { + //if (taskName.equals(cName) && objs[i] instanceof Folder) { + projPlan.add((Folder) objs[i]); + } + } + int size = projPlan.size(); + log("找到" + size + "个" + taskName + "文件夹"); + if (size == 0) { + return res; + } + + for (int k = 0; k < size; k++) { + Folder projPlanFolder = projPlan.get(k); + dataManagementService.refreshObjects(new ModelObject[]{projPlanFolder}); + dataManagementService.getProperties(new ModelObject[]{projPlanFolder}, new String[]{"contents"}); + ModelObject[] contents = projPlanFolder.get_contents(); + dataManagementService.refreshObjects(contents); + dataManagementService.getProperties(contents, new String[]{"object_name","object_type"}); + for (int i = 0; i < contents.length; i++) { + if(contents[i]==null){ + continue; + } + String cName = contents[i].getPropertyDisplayableValue("object_string"); + String cType = contents[i].getTypeObject().getName(); + log("找到对象:" + cName + ",类型:" + cType); + if(groupName.equals("M005")) + { + if(contents[i] instanceof Item) + { + List beans = TCUtil.getPDF((Item)contents[i],dataManagementService); + if(beans.size()>0) + res.addAll(beans); + //FileInfoBean bean = TCUtil.getPDF((Item)contents[i],dataManagementService); + // if(bean!=null) + // res.add(bean); + } + }else if(groupName.equals("M008")) + { + String desgign = ""; + if(taskName.equals("二次设计")) + { + desgign = "二次"; + }else if(taskName.equals("一次设计")) + { + desgign = "一次"; + } + + if(cType.equals("ZT2_Design3D") && cName.contains(desgign) && contents[i] instanceof Item) + { + List beans = TCUtil.getPDF((Item)contents[i],dataManagementService); + if(beans.size()>0) + res.addAll(beans); + //FileInfoBean bean = TCUtil.getPDF((Item)contents[i],dataManagementService); + // if(bean!=null) + // res.add(bean); + } + + } + + } + } + + /* + for (int k = 0; k < size; k++) { + Folder projPlanFolder = projPlan.get(k); + dataManagementService.refreshObjects(new ModelObject[]{projPlanFolder}); + dataManagementService.getProperties(new ModelObject[]{projPlanFolder}, new String[]{"contents"}); + ModelObject[] contents = projPlanFolder.get_contents(); + dataManagementService.refreshObjects(contents); + dataManagementService.getProperties(contents, new String[]{"object_string"}); + for (int i = 0; i < contents.length; i++) { + if(contents[i]==null){ + continue; + } + String cName = contents[i].getPropertyDisplayableValue("object_string"); + String cType = contents[i].getTypeObject().getName(); + log("找到对象:" + cName + ",类型:" + cType); + if (contents[i] instanceof Dataset) { + Dataset ds = (Dataset) contents[i]; + String dsName = ds.get_object_name(); + log("添加数据集:" + dsName); + FileInfoBean bean = new FileInfoBean(ds.getUid(), dsName); + res.add(bean); + } + } + }*/ + return res; + } + + //根据对象返回其最新版本下的PDF对象 + public static List getPDF(Item item,DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{item}); + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"revision_list"}); + ModelObject[] revs = item.get_revision_list(); + ItemRevision revision = getLatestRev(revs, dataManagementService); + dataManagementService.refreshObjects(new ModelObject[]{revision}); + dataManagementService.getProperties(new ModelObject[]{revision},new String[]{"object_type","IMAN_specification","TC_Attaches"}); + List res = new ArrayList<>(); + if(revision.get_object_type().equals("ZT2_Design3DRevision")){ + dataManagementService.getProperties(new ModelObject[]{revision}, new String[]{"object_desc"}); + ModelObject[] specs=revision.get_IMAN_specification(); + ModelObject[] attaches = revision.get_TC_Attaches(); + dataManagementService.refreshObjects(specs); + dataManagementService.getProperties(specs,new String[]{"object_type"}); + dataManagementService.refreshObjects(attaches); + dataManagementService.getProperties(attaches,new String[]{"object_type"}); + for(int j=0;j getFileFromXM02_old(Folder folder, DataManagementService dataManagementService, String taskName) throws Exception { + log("开始查询项目计划中的文件对象,任务名称:" + taskName); + List res = new ArrayList<>(); + if (taskName == null || "".equals(taskName)) { + return res; + } + dataManagementService.refreshObjects(new ModelObject[]{folder}); + dataManagementService.getProperties(new ModelObject[]{folder}, new String[]{"contents"}); + ModelObject[] objs = folder.get_contents(); + if (objs == null || objs.length == 0) { + log("文件夹为空"); + return res; + } + dataManagementService.refreshObjects(objs); + dataManagementService.getProperties(objs, new String[]{"object_name"}); + List projPlan = new ArrayList<>(); + for (int i = 0; i < objs.length; i++) { + if(objs[i]==null){ + continue; + } + String cName = objs[i].getPropertyDisplayableValue("object_name"); + if (taskName.equals(cName) && objs[i] instanceof Folder) { + projPlan.add((Folder) objs[i]); + } + } + int size = projPlan.size(); + log("找到" + size + "个" + taskName + "文件夹"); + if (size == 0) { + return res; + } + for (int k = 0; k < size; k++) { + Folder projPlanFolder = projPlan.get(k); + dataManagementService.refreshObjects(new ModelObject[]{projPlanFolder}); + dataManagementService.getProperties(new ModelObject[]{projPlanFolder}, new String[]{"contents"}); + ModelObject[] contents = projPlanFolder.get_contents(); + dataManagementService.refreshObjects(contents); + dataManagementService.getProperties(contents, new String[]{"object_string"}); + for (int i = 0; i < contents.length; i++) { + if(contents[i]==null){ + continue; + } + String cName = contents[i].getPropertyDisplayableValue("object_string"); + String cType = contents[i].getTypeObject().getName(); + log("找到对象:" + cName + ",类型:" + cType); + if (TYPE_DESIGN3D.equals(cType)) { + Item design = (Item) contents[i]; + dataManagementService.getProperties(new ModelObject[]{design}, new String[]{"revision_list"}); + ItemRevision designRev = getLatestRev(design.get_revision_list(), dataManagementService); + if (designRev == null) { + continue; + } + dataManagementService.refreshObjects(new ModelObject[]{designRev}); + dataManagementService.getProperties(new ModelObject[]{designRev}, new String[]{"object_string", REL_DESIGN_DATASET}); + log("最新版本:" + designRev.get_object_string()); + Property dsProp = designRev.getPropertyObject(REL_DESIGN_DATASET); + ModelObject[] dsObjs = dsProp.getModelObjectArrayValue(); + if (dsObjs == null || dsObjs.length == 0) { + log("通过" + REL_DESIGN_DATASET + "关系未找到对象"); + continue; + } + dataManagementService.refreshObjects(dsObjs); + dataManagementService.getProperties(dsObjs, new String[]{"object_name"}); + for (int d = 0; d < dsObjs.length; d++) { + if (dsObjs[d] instanceof Dataset) { + Dataset ds = (Dataset) dsObjs[d]; + String dsName = ds.get_object_name(); + log("找到数据集:" + dsName); + FileInfoBean bean = new FileInfoBean(ds.getUid(), dsName); + res.add(bean); + } + } + } + } + } + return res; + } + + public static Folder getProjFolderFromXM01(Item xm01,String product, DataManagementService dataManagementService, String folderNameSub) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{xm01}); + dataManagementService.getProperties(new ModelObject[]{xm01}, new String[]{"object_string", REL_XM01_XM02}); + String name = xm01.get_object_string(); + log("开始从" + name + "查询"+TYPE_XM02+":" + product); + Property prop = xm01.getPropertyObject(REL_XM01_XM02); + ModelObject[] objs = prop.getModelObjectArrayValue(); + if (objs == null || objs.length == 0) { + log("通过" + REL_XM01_XM02 + "关系未找到对象"); + return null; + } + dataManagementService.refreshObjects(objs); + dataManagementService.getProperties(objs, new String[]{"object_string","object_type",PROP_PRODUCT}); + List projPlan = new ArrayList<>(); + for (int i = 0; i < objs.length; i++) { + String cName = objs[i].getPropertyDisplayableValue("object_name"); + if (cName.contains(folderNameSub) && objs[i] instanceof Folder) { + //if (folderName.equals(cName) && objs[i] instanceof Folder) { + projPlan.add((Folder) objs[i]); + } + } + int size = projPlan.size(); + log("找到" + size + "个" + folderNameSub + "文件夹"); + if (size == 0) { + return null; + } + if (size > 1) { + throw new Exception("对象<" + name + ">下找到多个" + folderNameSub + "文件夹"); + } + return projPlan.get(0); + +// List xm02list = new ArrayList<>(); +// for(int i=0;i< objs.length;i++){ +// if(objs[i] instanceof Item){ +// Item xm02 = (Item) objs[i]; +// String cType = xm02.get_object_type(); +// String cName = xm02.get_object_string(); +// log("找到子对象"+cName+",类型 = "+cType); +// if(TYPE_XM02.equals(cType)){ +// String cProd = xm02.getPropertyDisplayableValue(PROP_PRODUCT); +// log(PROP_PRODUCT+" = "+cProd); +// if(product.equals(cProd)){ +// xm02list.add(xm02); +// } +// } +// } +// } +// int size = xm02list.size(); +// log("找到" + size + "个" + TYPE_XM02 + "子对象"); +// if (size == 0) { +// return null; +// } +// if (size > 1) { +// throw new Exception("对象<" + name + ">下找到多个" + TYPE_XM02 + "子对象"); +// } +// Item xm02 = xm02list.get(0); +// dataManagementService.refreshObjects(new ModelObject[]{xm02}); +// dataManagementService.getProperties(new ModelObject[]{xm02}, new String[]{"object_string", REL_XM02_PROJPLAN}); +// name = xm02.get_object_string(); +// log("开始从" + name + "查询项目文件夹:" + folderName); +// prop = xm02.getPropertyObject(REL_XM02_PROJPLAN); +// objs = prop.getModelObjectArrayValue(); +// if (objs == null || objs.length == 0) { +// log("通过" + REL_XM02_PROJPLAN + "关系未找到对象"); +// return null; +// } +// dataManagementService.refreshObjects(objs); +// dataManagementService.getProperties(objs, new String[]{"object_name"}); +// List projPlan = new ArrayList<>(); +// for (int i = 0; i < objs.length; i++) { +// String cName = objs[i].getPropertyDisplayableValue("object_name"); +// if (folderName.equals(cName) && objs[i] instanceof Folder) { +// projPlan.add((Folder) objs[i]); +// } +// } +// size = projPlan.size(); +// log("找到" + size + "个" + folderName + "文件夹"); +// if (size == 0) { +// return null; +// } +// if (size > 1) { +// throw new Exception("对象<" + name + ">下找到多个" + folderName + "文件夹"); +// } +// return projPlan.get(0); + } + + public static List getScheduleFromXM01(Item item, String product, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{item}); + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"object_string", REL_XM02_PROJPLAN}); + String name = item.get_object_string(); + log("开始查询项目计划中的时间表对象:" + name); + List res = new ArrayList<>(); + Folder projPlanFolder = getProjFolderFromXM01(item,product,dataManagementService, NAME_PROJPLAN);//projPlan.get(0); + if (projPlanFolder == null) { + return res; + } + dataManagementService.refreshObjects(new ModelObject[]{projPlanFolder}); + dataManagementService.getProperties(new ModelObject[]{projPlanFolder}, new String[]{"contents"}); + ModelObject[] contents = projPlanFolder.get_contents(); + dataManagementService.refreshObjects(contents); + dataManagementService.getProperties(contents, new String[]{"object_string"}); + for (int i = 0; i < contents.length; i++) { + if (contents[i]!=null&&(contents[i] instanceof Schedule)) { + Schedule sch = (Schedule)contents[i]; + log("找到时间表:"+sch.get_object_string()); + res.add(sch); + } + } + return res; + } + + /** + * 从文档版本的数据集获取zip文件 + * + * @param doc 文档版本 + * @param dataManagementService + * @param config + * @return + * @throws Exception + */ + public static File getDocZipFile(ItemRevision doc, DataManagementService dataManagementService, Config config) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{doc}); + dataManagementService.getProperties(new ModelObject[]{doc}, new String[]{"object_string", "object_name"}); + log(">> 开始查找数据集文件:" + doc.get_object_string()); + List datasets = findDataset(doc, REL_DOC_DATASET, dataManagementService); + int len = datasets.size(); + log("找到" + len + "个数据集"); + List dsFiles = new ArrayList<>(); + String tempFolder = getFMSTempFolder(config, doc.getUid()); + log("临时文件夹:" + tempFolder); + for (int i = 0; i < len; i++) { + dsFiles.addAll(getDatasetFile(datasets.get(i), dataManagementService, config, tempFolder)); + } + log((">> 从文档共找到" + dsFiles.size() + "个文件")); + File zipFile = new File(tempFolder + "\\" + doc.get_object_name() + ".zip"); + FileOutputStream zipOs = new FileOutputStream(zipFile); + toZip(dsFiles, zipOs); + zipOs.flush(); + zipOs.close(); + clearCache(dsFiles); + return zipFile; + } + + /** + * 清理文件 + * + * @param dsFiles + */ + public static void clearCache(List dsFiles) { + for (File f : dsFiles) { + try { + f.delete(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + /** + * 压缩文件 + * + * @param srcFiles + * @param out + * @throws RuntimeException + */ + public static void toZip(List srcFiles, OutputStream out) throws RuntimeException { + long start = System.currentTimeMillis(); + ZipOutputStream zos = null; + try { + zos = new ZipOutputStream(out); + for (File srcFile : srcFiles) { + byte[] buf = new byte[BUFFER_SIZE]; + zos.putNextEntry(new ZipEntry(srcFile.getName())); + int len; + FileInputStream in = new FileInputStream(srcFile); + while ((len = in.read(buf)) != -1) { + zos.write(buf, 0, len); + } + zos.closeEntry(); + in.close(); + } + long end = System.currentTimeMillis(); + System.out.println("压缩完成,耗时:" + (end - start) + " ms"); + } catch (Exception e) { + throw new RuntimeException("zip error from ZipUtils", e); + } finally { + if (zos != null) { + try { + zos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + /** + * 从文档版本获取所有Part的Id + * + * @param doc + * @param dataManagementService + * @return + * @throws Exception + */ + public static String getAllPartIdFromDoc(ItemRevision doc, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{doc}); + dataManagementService.getProperties(new ModelObject[]{doc}, new String[]{REL_DOC_PART}); + Property prop = doc.getPropertyObject(REL_DOC_PART); + ModelObject[] revs = prop.getModelObjectArrayValue(); + if (revs == null || revs.length == 0) { + return null; + } + List res = new ArrayList<>(); + for (int i = 0; i < revs.length; i++) { + if (revs[i] instanceof ItemRevision) { + ItemRevision rev = (ItemRevision) revs[i]; + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"items_tag"}); + Item item = rev.get_items_tag(); + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"object_type", "item_id"}); + if (ITEMTYPE_PART.equals(item.get_object_type())) { + String itemId = item.get_item_id(); + if (!res.contains(itemId)) { + res.add(itemId); + } + } + } + } + if (res.size() == 0) { + return ""; + } + StringBuilder ids = new StringBuilder(); + for (int i = 0; i < res.size(); i++) { + ids.append(res.get(i)).append(","); + } + ids.setLength(ids.length() - 1); + return ids.toString(); + } + + /** + * 从数据集获取文件 + * + * @param dataset + * @param dataManagementService + * @param config + * @param tempFolder + * @return + * @throws Exception + */ + public static List getDatasetFile(Dataset dataset, DataManagementService dataManagementService, Config config, String tempFolder) throws Exception { + List res = new ArrayList<>(); + dataManagementService.refreshObjects(new ModelObject[]{dataset}); + dataManagementService.getProperties(new ModelObject[]{dataset}, new String[]{"object_name", "ref_list"}); + log("下载数据集文件:" + dataset.get_object_name()); + ModelObject[] refs = dataset.get_ref_list(); + if (refs == null) { + return res; + } + int len = refs.length; + log("引用个数:" + len); + if (len == 0) { + return res; + } + String cacheDir = tempFolder;// config.getFms_cachedir() + "\\" + uid; + log("cacheDir:"+cacheDir); + File dir = new File(cacheDir); + /*if(dir.exists()) + { + log("存在"); + }else + { + log("不存在"); + boolean flag = dir.mkdirs(); + if (!flag) { + throw new Exception("创建文件夹失败:" + cacheDir); + }else{ + log("创建成功"); + + } + log("flag:"+flag); + }*/ + if (!dir.isDirectory()) { + log("创建文件夹"); + boolean flag = dir.mkdirs(); + log("flag:"+flag); + if (!flag) { + throw new Exception("创建文件夹失败:" + cacheDir); + } + + log("flag:"+flag); + } + String[] fmsUrls = new String[]{config.getFms_url()}; + FileManagementUtility fileManagementUtility = new FileManagementUtility(Session.getConnection(), null, null, fmsUrls, cacheDir); + dataManagementService.refreshObjects(refs); + for (int i = 0; i < len; i++) { + log("开始遍历"); + if (refs[i] instanceof ImanFile) { + ImanFile imanFile = (ImanFile) refs[i]; + dataManagementService.getProperties(new ModelObject[]{imanFile}, new String[]{"original_file_name"}); + log("找到文件:" + imanFile.get_original_file_name()); + GetFileResponse resp = fileManagementUtility.getFiles(new ModelObject[]{imanFile}); + throwServiceDataError(resp); + File[] files = resp.getFiles(); + for (int f = 0; f < files.length; f++) { + File targetFile = getFilePath(cacheDir, imanFile.get_original_file_name()); + if (files[f].renameTo(targetFile)) { + log("添加文件:" + targetFile.getAbsolutePath()); + res.add(targetFile); + } else { + throw new Exception("重命名文件 " + files[f].getAbsolutePath() + " -> " + targetFile.getAbsolutePath() + " 失败"); + } + } + } + } + return res; + } + + public static String getDatasetName(Dataset dataset, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{dataset}); + dataManagementService.getProperties(new ModelObject[]{dataset}, new String[]{"object_name"}); + return dataset.get_object_name(); + } + + public static String getDatasetFileName(Dataset dataset, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{dataset}); + dataManagementService.getProperties(new ModelObject[]{dataset}, new String[]{"object_name", "ref_list"}); + log("获取数据集文件名称:" + dataset.get_object_name()); + ModelObject[] refs = dataset.get_ref_list(); + if (refs == null) { + return ""; + } + int len = refs.length; + log("引用个数:" + len); + if (len == 0) { + return ""; + } + dataManagementService.refreshObjects(refs); + for (int i = 0; i < len; i++) { + if (refs[i] instanceof ImanFile) { + ImanFile imanFile = (ImanFile) refs[i]; + dataManagementService.getProperties(new ModelObject[]{imanFile}, new String[]{"original_file_name"}); + log("找到文件:" + imanFile.get_original_file_name()); + return imanFile.get_original_file_name(); + } + } + return ""; + } + + /** + * 获取不重复文件名的文件 + * + * @param dir + * @param fileName + * @return + */ + private static File getFilePath(String dir, String fileName) { + int ind = fileName.lastIndexOf('.'); + String name = fileName; + String ext = ""; + if (ind > 0) { + name = fileName.substring(0, ind); + ext = fileName.substring(ind + 1); + } + String path = dir + "\\" + fileName; + File file = new File(path); + int index = 0; + while (file.exists()) { + if (!"".equals(ext)) { + path = dir + "\\" + name + "(" + (index++) + ")." + ext; + } else { + path = dir + "\\" + name + "(" + (index++) + ")"; + } + file = new File(path); + } + return file; + } + + /** + * 从版本获取数据集 + * + * @param rev 版本 + * @param relName 关系名称 + * @param dataManagementService + * @return + * @throws Exception + */ + public static List findDataset(ItemRevision rev, String relName, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{rev}); + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{relName}); + Property prop = rev.getPropertyObject(relName); + List res = new ArrayList<>(); + ModelObject[] objs = prop.getModelObjectArrayValue(); + if (objs == null || objs.length == 0) { + return res; + } + for (int i = 0; i < objs.length; i++) { + if (objs[i] instanceof Dataset) { + res.add((Dataset) objs[i]); + } + } + return res; + } + public static void getProperties(ModelObject modelObject, String... properties) throws Exception { +// loadedObjects.put(modelObject.getUid(), modelObject); + DataManagementService dmService = DataManagementService.getService(Session.getConnection()); + ServiceData resp = dmService.getProperties(new ModelObject[]{modelObject}, properties); +// checkPartialError(resp); + } + + public static void refreshAndGetProperties(ModelObject modelObject, String... properties) throws Exception { +// ServiceData resp = dmService.refreshObjects(new ModelObject[]{modelObject}); +// checkPartialError(resp); + getProperties(modelObject, properties); + } + public static ModelObject[] query(String queryName, Map fields) throws Exception { + if (queryName == null || "".equals(queryName) || fields == null || fields.size() == 0) { + return null; + } + SavedQueryService queryService = SavedQueryService.getService(Session.getConnection()); + SavedQuery.GetSavedQueriesResponse savedQueries = queryService.getSavedQueries(); + if (savedQueries.queries.length == 0) { + throw new Exception("没有从TC中找到保存的查询"); + } + SavedQuery.SavedQueryObject query = null; + + for (int i = 0; i < savedQueries.queries.length; i++) { + if (queryName.equals(savedQueries.queries[i].name)) { + query = savedQueries.queries[i]; + break; + } + } + if (query == null) { + log("没有找到查询:" + queryName); + throw new Exception("TC中不存在“" + queryName + "”查询"); + } + log("执行查询:[" + queryName+"]"); + log("查询字段:" + fields.keySet()); + log("查询值:" + fields.values()); + com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput savedQueryInput = new com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput(); + savedQueryInput.query = query.query; + savedQueryInput.entries = fields.keySet().toArray(new String[]{});// new String[]{"Item ID"}; + savedQueryInput.values = fields.values().toArray(new String[]{});// new String[]{itemID}; + com.teamcenter.services.strong.query._2007_06.SavedQuery.ExecuteSavedQueriesResponse res = queryService.executeSavedQueries(new com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput[]{savedQueryInput}); + throwServiceDataError(res.serviceData); + com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryResults found = res.arrayOfResults[0]; + return found.objects; + } + + /** + * 从对象id查询对象 + * + * @param itemID + * @return + * @throws Exception + */ + public static ModelObject[] queryItemByID(String itemID) throws Exception { + if (itemID == null || "".equals(itemID)) { + return null; + } + SavedQueryService queryService = SavedQueryService.getService(Session.getConnection()); + SavedQuery.GetSavedQueriesResponse savedQueries = queryService.getSavedQueries(); + if (savedQueries.queries.length == 0) { + throw new Exception("没有从TC中找到保存的查询"); + } + SavedQuery.SavedQueryObject query = null; + for (int i = 0; i < savedQueries.queries.length; i++) { + if ("Item...".equals(savedQueries.queries[i].name)) { + query = savedQueries.queries[i]; + break; + } + } + if (query == null) { + throw new Exception("TC中不存在“零组件...”查询"); + } + com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput savedQueryInput = new com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput(); + savedQueryInput.query = query.query; + savedQueryInput.entries = new String[]{"Item ID"}; + savedQueryInput.values = new String[]{itemID}; + com.teamcenter.services.strong.query._2007_06.SavedQuery.ExecuteSavedQueriesResponse res = queryService.executeSavedQueries(new com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryInput[]{savedQueryInput}); + throwServiceDataError(res.serviceData); + com.teamcenter.services.strong.query._2007_06.SavedQuery.SavedQueryResults found = res.arrayOfResults[0]; + return found.objects; + } + + /** + * 获取对象的最新发布版本 + * + * @param dataManagementService + * @param item + * @return + * @throws Exception + */ + public static ItemRevision getLatestReleasedRev(DataManagementService dataManagementService, Item item) throws Exception { + if (item == null) { + return null; + } + dataManagementService.refreshObjects(new ModelObject[]{item}); + ItemRevision[] revs = getReleasedRevs(dataManagementService, item); + if (revs == null || revs.length == 0) { + return null; + } + dataManagementService.getProperties(revs, new String[]{"item_revision_id"}); + ItemRevision baseRev = revs[0]; + for (int i = 0; i < revs.length; i++) { + ItemRevision temp = revs[i]; + if (temp.get_item_revision_id().compareTo(baseRev.get_item_revision_id()) > 0) { + baseRev = temp; + } + } + return baseRev; + } + + /** + * 获取对象的最新版本 + * + * @param revs + * @param dataManagementService + * @return + * @throws Exception + */ + public static ItemRevision getLatestRev(ModelObject[] revs, DataManagementService dataManagementService) throws Exception { + if (revs == null || revs.length == 0) { + return null; + } + dataManagementService.getProperties(revs, new String[]{"item_revision_id"}); + ItemRevision baseRev = (ItemRevision) revs[0]; + for (int i = 0; i < revs.length; i++) { + ItemRevision temp = (ItemRevision) revs[i]; + if (temp.get_item_revision_id().compareTo(baseRev.get_item_revision_id()) > 0) { + baseRev = temp; + } + } + return baseRev; + } + + + /** + * 比较两个版本,获取版本号新的版本 + * + * @param rev1 + * @param rev2 + * @param dataManagementService + * @return + * @throws Exception + */ + private static ItemRevision getLaterRev(ItemRevision rev1, ItemRevision rev2, DataManagementService dataManagementService) throws Exception { + + dataManagementService.refreshObjects(new ModelObject[]{rev1, rev2}); + dataManagementService.getProperties(new ModelObject[]{rev1, rev2}, new String[]{"item_revision_id"}); + if (rev1.get_item_revision_id().compareTo(rev2.get_item_revision_id()) > 0) { + return rev1; + } else { + return rev2; + } + } + + /** + * 获取发布的版本 + * + * @param dataManagementService + * @param item + * @return + * @throws Exception + */ + private static ItemRevision[] getReleasedRevs(DataManagementService dataManagementService, Item item) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{item}); + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"revision_list"}); + ModelObject[] revs = item.get_revision_list(); + if (revs == null) { + return null; + } + List res = new ArrayList<>(); + dataManagementService.refreshObjects(revs); + dataManagementService.getProperties(revs, new String[]{"release_status_list"}); + for (int i = 0; i < revs.length; i++) { + ReleaseStatus[] rs = ((ItemRevision) revs[i]).get_release_status_list(); + if (rs != null && rs.length > 0) { + res.add((ItemRevision) revs[i]); + } + } + return res.toArray(new ItemRevision[]{}); + } + + /** + * 抛出soa异常 + * + * @param serviceData + * @throws Exception + */ + public static void throwServiceDataError(ServiceData serviceData) throws Exception { + if (serviceData.sizeOfPartialErrors() > 0) { + StringBuilder errInfo = new StringBuilder(); + for (int i = 0; i < serviceData.sizeOfPartialErrors(); i++) { + for (String msg : serviceData.getPartialError(i).getMessages()) { + errInfo.append(msg + "\n"); + } + } + // System.out.println(errInfo.toString()); + throw new Exception(errInfo.toString()); + } + } + + public static void throwServiceDataError(GetFileResponse serviceData) throws Exception { + if (serviceData.sizeOfPartialErrors() > 0) { + StringBuilder errInfo = new StringBuilder(); + for (int i = 0; i < serviceData.sizeOfPartialErrors(); i++) { + for (String msg : serviceData.getPartialError(i).getMessages()) { + errInfo.append(msg + "\n"); + } + } + // System.out.println(errInfo.toString()); + throw new Exception(errInfo.toString()); + } + } + + /** + * 获取首选项 + * + * @param prefName + * @return + * @throws Exception + */ + public static String[] getPrefVals(String prefName) throws Exception { + PreferenceManagementService preferenceManagementService = PreferenceManagementService.getService(Session.getConnection()); + PreferenceManagement.GetPreferencesResponse resp = preferenceManagementService.getPreferences(new String[]{prefName}, true); + throwServiceDataError(resp.data); + if (resp.response == null || resp.response.length == 0) { + return null; + } + return resp.response[0].values.values; + } + + + /** + * 从Part获取厂家型号 + * + * @param dataManagementService + * @param rev + * @return + * @throws Exception + */ + public static List getPartCJXH(DataManagementService dataManagementService, ItemRevision rev) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{rev}); + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"object_string", REL_PART_CJXH}); + log(">> 查询厂家型号:" + rev.get_object_string()); + Property prop = rev.getPropertyObject(REL_PART_CJXH); + List res = new ArrayList<>(); + ModelObject[] vals = prop.getModelObjectArrayValue(); + if (vals == null || vals.length == 0) { + return res; + } + dataManagementService.getProperties(vals, new String[]{"object_string", "object_type"}); + for (int i = 0; i < vals.length; i++) { + if (vals[i] instanceof Item) { + Item item = (Item) vals[i]; + log("找到对象:" + item.get_object_string() + ", 类型:" + item.get_object_type()); + res.add(item); + + } + } + return res; + } + + /** + * 从厂家型号获取供应商 + * + * @param rev + * @param dataManagementService + * @return + * @throws Exception + */ + public static ItemRevision getVendorFromCJXH(ItemRevision rev, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{rev}); + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"object_string", REL_CJXH_GYS}); + log(">> 查询供应商:" + rev.get_object_string()); + Property prop = rev.getPropertyObject(REL_CJXH_GYS); + ModelObject[] arr = prop.getModelObjectArrayValue(); + if (arr == null || arr.length == 0) { + return null; + } + if (arr.length > 1) { + throw new Exception("从厂家型号<" + rev.get_object_string() + ">查询到" + arr.length + "个供应商"); + } + if (arr[0] instanceof Item) { + Item item = (Item) arr[0]; + dataManagementService.refreshObjects(new ModelObject[]{item}); + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"revision_list"}); + ModelObject[] revs = item.get_revision_list(); + ItemRevision res = getLatestRev(revs, dataManagementService); + dataManagementService.getProperties(new ModelObject[]{res}, new String[]{"object_type", "object_string"}); + log("找到对象:" + res.get_object_string() + ", 类型:" + res.get_object_type()); + if (!REVTYPE_GYS.equals(res.get_object_type())) { + throw new Exception("从厂家型号<" + rev.get_object_string() + ">查询到的器件资料<" + res.get_object_string() + ">不是" + REVTYPE_GYS + "类型"); + } + return res; + } + return null; + } + + /** + * 获取描述对象值 + * + * @param descs + * @param propName 描述属性名称 + * @param dataManagementService + * @return + * @throws Exception + */ + private static String getDescPropValue(ModelObject[] descs, String propName, DataManagementService dataManagementService) throws Exception { + if (descs == null || propName == null) { + return null; + } + dataManagementService.refreshObjects(descs); + dataManagementService.getProperties(descs, new String[]{"unv8_name_zh", "unv8_value"}); + for (ModelObject desc : descs) { + String descName = desc.getPropertyDisplayableValue("unv8_name_zh"); + log("描述属性名称:" + descName); + if (propName.equals(descName)) { + String val = desc.getPropertyDisplayableValue("unv8_value"); + log("找到属性:" + propName + " = " + val); + return val; + } + } + return null; + } + + /** + * 从Part的描述对象获取外尺寸 + * + * @param rev + * @param dataManagementService + * @return + * @throws Exception + */ + public static String getWCCFromPart(ItemRevision rev, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{rev}); + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"object_string", REL_PART_DESC1, REL_PART_DESC2}); + log(">> 查询外尺寸:" + rev.get_object_string()); + Property prop1 = rev.getPropertyObject(REL_PART_DESC1); + Property prop2 = rev.getPropertyObject(REL_PART_DESC2); + ModelObject[] desc1Arr = prop1.getModelObjectArrayValue(); + ModelObject[] desc2Arr = prop2.getModelObjectArrayValue(); + if ((desc1Arr == null || desc1Arr.length == 0) && (desc2Arr == null || desc2Arr.length == 0)) { + return null; + } + String val = getDescPropValue(desc1Arr, "外尺寸", dataManagementService); + if (val != null) { + return val; + } + val = getDescPropValue(desc2Arr, "外尺寸", dataManagementService); + if (val != null) { + return val; + } + return null; + } + + /** + * 从厂家获取器件资料 + * + * @param rev + * @param dataManagementService + * @return + * @throws Exception + */ + public static ItemRevision getQJZLFromCJ(ItemRevision rev, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{rev}); + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"object_string", REL_CJ_QJZL}); + log(">> 查询器件资料:" + rev.get_object_string()); + Property prop = rev.getPropertyObject(REL_CJ_QJZL); + ModelObject[] zlList = prop.getModelObjectArrayValue(); + if (zlList == null || zlList.length == 0) { + return null; + } + if (zlList.length > 1) { + throw new Exception("从厂家型号<" + rev.get_object_string() + ">查询到" + zlList.length + "个器件资料"); + } + if (zlList[0] instanceof Item) { + ItemRevision res = getLatestReleasedRev(dataManagementService, (Item) zlList[0]); + if (res == null) { + return res; + } + dataManagementService.getProperties(new ModelObject[]{res}, new String[]{"object_type", "object_string"}); + log("找到对象:" + res.get_object_string() + ", 类型:" + res.get_object_type()); + if (!REVTYPE_QJDOC.equals(res.get_object_type())) { + throw new Exception("从厂家型号<" + rev.get_object_string() + ">查询到的器件资料<" + res.get_object_string() + ">不是" + REVTYPE_QJDOC + "类型"); + } + return res; + } + /*else if(zlList[0] instanceof ItemRevision){ + if(isReleased((ItemRevision) zlList[0],dataManagementService)){ + return (ItemRevision) zlList[0]; + } + }*/ + return null; + } + + + public static boolean isReleased(ItemRevision obj, DataManagementService dataManagementService) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{obj}); + dataManagementService.getProperties(new ModelObject[]{obj}, new String[]{"release_status_list"}); + ReleaseStatus[] rs = obj.get_release_status_list(); + if (rs != null && rs.length > 0) { + return true; + } + return false; + } + + /** + * 从Part查询文档 + * + * @param dataManagementService + * @param rev + * @param c1 + * @param c2 + * @return + * @throws Exception + */ + public static List getPartDocs(DataManagementService dataManagementService, ItemRevision rev, String c1, String c2) throws Exception { + dataManagementService.refreshObjects(new ModelObject[]{rev}); + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"object_string"}); + log(">> 查询文档:" + rev.get_object_string()); + DataManagement.WhereReferencedResponse resp = dataManagementService.whereReferenced(new WorkspaceObject[]{rev}, 1); + throwServiceDataError(resp.serviceData); + List res = new ArrayList<>(); + Map map = new HashMap<>(); + int size = resp.output.length; + for (int i = 0; i < size; i++) { + DataManagement.WhereReferencedOutput op = resp.output[i]; + int infoSize = op.info.length; + for (int j = 0; j < infoSize; j++) { + DataManagement.WhereReferencedInfo info = op.info[j]; + WorkspaceObject obj = info.referencer; + if (obj != null) { + dataManagementService.getProperties(new ModelObject[]{obj}, new String[]{"object_type", "object_string"}); + String type = obj.get_object_type(); + String name = obj.get_object_string(); + log("找到引用对象<" + name + "> 类型:" + type + " 关系:" + info.relation); + if (REL_DOC_PART.equals(info.relation)) { + dataManagementService.refreshObjects(new ModelObject[]{obj}); + dataManagementService.getProperties(new ModelObject[]{obj}, new String[]{PROP_C1, PROP_C2, "items_tag", "release_status_list"}); + ItemRevision docRev = (ItemRevision) obj; + ReleaseStatus[] rs = docRev.get_release_status_list(); + if (rs == null || rs.length == 0) { + log("文档未发布"); + continue; + } + Property c1Prop = docRev.getPropertyObject(PROP_C1); + Property c2Prop = docRev.getPropertyObject(PROP_C2); + Item docItem = docRev.get_items_tag(); + if (c1Prop != null && c2Prop != null) { + String c1Val = c1Prop.getStringValue(); + String c2Val = c2Prop.getStringValue(); + log("属性 " + PROP_C1 + " = " + c1Val + ", " + PROP_C2 + " = " + c2Val); + if (c1Val.equals(c1) && c2Val.equals(c2)) { + if (map.containsKey(docItem)) { + map.put(docItem, getLaterRev(docRev, map.get(docItem), dataManagementService)); + } else { + map.put(docItem, docRev); + } + } + } + } + } + } + } + res.addAll(map.values()); + return res; + } + + /** + * 获取字符串属性值 + * + * @param obj 目标对象 + * @param propName 属性名称 + * @param dataManagementService + * @return + * @throws Exception + */ + public static String getPropVal(ModelObject obj, String propName, DataManagementService dataManagementService) throws Exception { + if (obj == null || propName == null || "".equals(propName)) { + return ""; + } + dataManagementService.refreshObjects(new ModelObject[]{obj}); + dataManagementService.getProperties(new ModelObject[]{obj}, new String[]{propName}); + Property prop = obj.getPropertyObject(propName);//没有属性会自动抛出异常 + return prop.getStringValue(); + } + + public static String getPropDateVal(ModelObject obj, String propName, DataManagementService dataManagementService) throws Exception { + if (obj == null || propName == null || "".equals(propName)) { + return null; + } + dataManagementService.refreshObjects(new ModelObject[]{obj}); + dataManagementService.getProperties(new ModelObject[]{obj}, new String[]{propName}); + Property prop = obj.getPropertyObject(propName);//没有属性会自动抛出异常 + Calendar val = prop.getCalendarValue(); + if (val != null) { + return DATE_FORMAT.format(val.getTime()); + } + return null; + } + + /** + * 上传文件到FTP + * + * @param zipFile 上传的文件 + * @param path ftp上传路径 + * @param fileName 文件名称 + * @param config + * @return 用于传递文件的url + * @throws Exception + */ + public static String uploadFileToFTP(File zipFile, String path, String fileName, Config config) throws Exception { + FileInputStream in = null; + String url = "http://" + config.getServer_ip() + ":8080/api/file" + path + "/" + fileName; + try { + in = new FileInputStream(zipFile); + FtpUtil.uploadFile(config.getFtp_url(), config.getFtp_user(), config.getFtp_pwd(), config.getFtp_port(), path, fileName, in); + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return url; + } + + public static int getScheduleTaskStatus(String status) { + int res = -1; + if (status == null) { + return res; + } + switch (status) { + case "not_started": + res = 0; + break; + case "in_progress": + res = 1; + break; + case "complete": + res = 2; + break; + case "late": + res = 3; + break; + default: + break; + } + return res; + } + + public static int inArray(String cName, List bomNames) { + if (cName ==null || cName.length()==0 || bomNames == null || bomNames.size() == 0) { + return -1; + } + for (String string : bomNames) { + if (cName.indexOf(string)!=-1) { + return bomNames.indexOf(string); + } + } + return -1; + } + + public static ModelObject string_to_component(DataManagementService dataManagementService, String id) throws Exception { + if (id == null || "".equals(id.trim())) { + return null; + } + ServiceData resp = dataManagementService.loadObjects(new String[]{id}); + throwServiceDataError(resp); + if (resp.sizeOfPlainObjects() > 0) { + return resp.getPlainObject(0); + } + return null; + } + + public static ModelObject queryProjectFolerByItem(DataManagementService dataManagementService,ModelObject project) throws Exception { + Item item = (Item)project; + dataManagementService.refreshObjects(new ModelObject[]{item}); + dataManagementService.getProperties(new ModelObject[]{item}, new String[]{"object_string","object_type"}); + log(">> 查询产成品:" + item.get_object_string()); + DataManagement.WhereReferencedResponse resp = dataManagementService.whereReferenced(new WorkspaceObject[]{item}, 1); + resp = dataManagementService.whereReferenced(new WorkspaceObject[]{item}, 1); + TCUtil.throwServiceDataError(resp.serviceData); + log("找到引用个数:"+resp.output.length); + int size = resp.output.length; + for (int i = 0; i < size; i++) { + com.teamcenter.services.strong.core._2007_01.DataManagement.WhereReferencedOutput op = resp.output[i]; + int infoSize = op.info.length; + for (int j = 0; j < infoSize; j++) { + com.teamcenter.services.strong.core._2007_01.DataManagement.WhereReferencedInfo info = op.info[j]; + WorkspaceObject obj = info.referencer; + if (obj != null) { + dataManagementService.getProperties(new ModelObject[]{obj}, new String[]{"object_type", "object_string"}); + String type = obj.get_object_type(); + String name = obj.get_object_string(); + log("找到引用对象<" + name + "> 类型:" + type + " 关系:" + info.relation); + if (type.equals("ZT2_ProjectFolder")) { + return obj; + } + } + } + } + return null; + } + + public static ModelObject queryProjectByPart(DataManagementService dataManagementService,ModelObject partRev) throws Exception { + //ItemRevision rev; + if(partRev instanceof ItemRevision) { + ItemRevision rev = (ItemRevision) partRev; + dataManagementService.refreshObjects(new ModelObject[]{rev}); + dataManagementService.getProperties(new ModelObject[]{rev}, new String[]{"object_string","object_type"}); + //log(">> 查询产成品:" + rev.get_object_string()); + if(rev.get_object_type().equals("Part Revision")) + { + DataManagement.WhereReferencedResponse resp = dataManagementService.whereReferenced(new WorkspaceObject[]{rev}, 1); + resp = dataManagementService.whereReferenced(new WorkspaceObject[]{rev}, 4); + TCUtil.throwServiceDataError(resp.serviceData); + log("找到引用个数:"+resp.output.length); + int size = resp.output.length; + for (int i = 0; i < size; i++) { + com.teamcenter.services.strong.core._2007_01.DataManagement.WhereReferencedOutput op = resp.output[i]; + int infoSize = op.info.length; + for (int j = 0; j < infoSize; j++) { + com.teamcenter.services.strong.core._2007_01.DataManagement.WhereReferencedInfo info = op.info[j]; + WorkspaceObject obj = info.referencer; + if (obj != null) { + dataManagementService.getProperties(new ModelObject[]{obj}, new String[]{"object_type", "object_string"}); + String type = obj.get_object_type(); + String name = obj.get_object_string(); + log("找到引用对象<" + name + "> 类型:" + type + " 关系:" + info.relation); + if (type.equals("ZT2_ProjectItem")) { + return obj; + } + + + } + } + } + }else + { + + return null; + } + + + + } + + + + return null; + } + + + + + + +} diff --git a/demo_k/src/main/java/com/connor/web/util/Test.java b/demo_k/src/main/java/com/connor/web/util/Test.java new file mode 100644 index 0000000..962f0e8 --- /dev/null +++ b/demo_k/src/main/java/com/connor/web/util/Test.java @@ -0,0 +1,41 @@ +package com.connor.web.util; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Created by K on 2019/5/23. + */ +public class Test { + public static void main(String[] args) { + /*try { + String tempFolder = "F:"; + List exportFiles = new ArrayList<>(); + exportFiles.add(new File("F:\\Unti.1tled-2.txt")); + exportFiles.add(new File("F:\\D2.zip")); + File zipFile = new File(tempFolder + "\\" + exportFiles.get(0).getName().split("\\.")[0] + "等"+exportFiles.size()+"个文件.zip"); + FileOutputStream zipOs = new FileOutputStream(zipFile); + TCUtil.toZip(exportFiles, zipOs); + zipOs.flush(); + zipOs.close(); + } catch (IOException e) { + e.printStackTrace(); + }*/ + String fileName="111.111"; + int ind = fileName.lastIndexOf('.'); + System.out.println(new File("F:\\Unti.1tled-2.txt").getName().split("\\.")[0]); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/d HH:mm"); + try { + Date date = sdf.parse("2019/1/1 01:00"); + System.out.println(sdf.format(date)); + } catch (ParseException e) { + e.printStackTrace(); + } + } +} diff --git a/demo_k/src/main/java/com/teamcenter/clientx/AppXCredentialManager.java b/demo_k/src/main/java/com/teamcenter/clientx/AppXCredentialManager.java new file mode 100644 index 0000000..31df89b --- /dev/null +++ b/demo_k/src/main/java/com/teamcenter/clientx/AppXCredentialManager.java @@ -0,0 +1,118 @@ +package com.teamcenter.clientx; + + +import com.teamcenter.schemas.soa._2006_03.exceptions.InvalidCredentialsException; +import com.teamcenter.schemas.soa._2006_03.exceptions.InvalidUserException; +import com.teamcenter.soa.client.CredentialManager; +import com.teamcenter.soa.exceptions.CanceledOperationException; + +import java.util.UUID; + +/** + * The CredentialManager is used by the Teamcenter Services framework to get the + * user's credentials when challanged by the server. This can occur after a period + * of inactivity and the server has timed-out the user's session, at which time + * the client application will need to re-authenitcate. The framework will + * call one of the getCredentials methods (depending on circumstances) and will + * send the SessionService.login service request. Upon successfull completion of + * the login service request. The last service request (one that cuased the challange) + * will be resent. + * + * The framework will also call the setUserPassword setGroupRole methods when ever + * these credentials change, thus allowing this implementation of the CredentialManager + * to cache these values so prompting of the user is not requried for re-authentication. + * + */ +public class AppXCredentialManager implements CredentialManager +{ + + private String name = null; + private String password = null; + private String group = ""; // default group + private String role = ""; // default role + private String discriminator = "SoaAppX"; // always connect same user + // to same instance of server + + /** + * Return the type of credentials this implementation provides, + * standard (user/password) or Single-Sign-On. In this case + * Standard credentials are returned. + * + * @see com.teamcenter.soa.client.CredentialManager#getCredentialType() + */ + public int getCredentialType() + { + return CredentialManager.CLIENT_CREDENTIAL_TYPE_STD; + } + + /** + * Prompt's the user for credentials. + * This method will only be called by the framework when a login attempt has + * failed. + * + * @see com.teamcenter.soa.client.CredentialManager#getCredentials(com.teamcenter.schemas.soa._2006_03.exceptions.InvalidCredentialsException) + */ + public String[] getCredentials(InvalidCredentialsException e) + throws CanceledOperationException + { + System.out.println(e.getMessage()); + return promptForCredentials(name,password); + } + + /** + * Return the cached credentials. + * This method will be called when a service request is sent without a valid + * session ( session has expired on the server). + * + * @see com.teamcenter.soa.client.CredentialManager#getCredentials(com.teamcenter.schemas.soa._2006_03.exceptions.InvalidUserException) + */ + public String[] getCredentials(InvalidUserException e) + throws CanceledOperationException + { + // Have not logged in yet, shoult not happen but just in case + if (name == null) return promptForCredentials(name,password); + + // Return cached credentials + String[] tokens = { name, password, group, role, discriminator }; + return tokens; + } + + /** + * Cache the group and role + * This is called after the SessionService.setSessionGroupMember service + * operation is called. + * + * @see com.teamcenter.soa.client.CredentialManager#setGroupRole(java.lang.String, + * java.lang.String) + */ + public void setGroupRole(String group, String role) + { + this.group = group; + this.role = role; + } + + /** + * Cache the User and Password + * This is called after the SessionService.login service operation is called. + * + * @see com.teamcenter.soa.client.CredentialManager#setUserPassword(java.lang.String, + * java.lang.String, java.lang.String) + */ + public void setUserPassword(String user, String password, String discriminator) + { + this.name = user; + this.password = password; + this.discriminator = discriminator; + } + + + public String[] promptForCredentials(String user,String pw) + throws CanceledOperationException + { + name = user; + password = pw; + String[] tokens = { name, password, group, role, UUID.randomUUID().toString() }; + return tokens; + } + +} diff --git a/demo_k/src/main/java/com/teamcenter/clientx/AppXDeletedObjectListener.java b/demo_k/src/main/java/com/teamcenter/clientx/AppXDeletedObjectListener.java new file mode 100644 index 0000000..f5b719b --- /dev/null +++ b/demo_k/src/main/java/com/teamcenter/clientx/AppXDeletedObjectListener.java @@ -0,0 +1,29 @@ +package com.teamcenter.clientx; + + +import com.teamcenter.soa.client.model.DeleteListener; + +/** + * Implementation of the DeleteListener, simply prints out list of all objects + * that are deleted. + * + */ +public class AppXDeletedObjectListener implements DeleteListener +{ + + public void modelObjectDelete(String[] uids) + { + if (uids.length == 0) + return; + + System.out.println(""); + System.out.println("Deleted Objects handled in com.teamcenter.clientx.AppXDeletedObjectListener.modelObjectDelete"); + System.out.println("The following objects have been deleted from the server and removed from the client data model:"); + for (int i = 0; i < uids.length; i++) + { + System.out.println(" " + uids[i]); + } + + } + +} diff --git a/demo_k/src/main/java/com/teamcenter/clientx/AppXExceptionHandler.java b/demo_k/src/main/java/com/teamcenter/clientx/AppXExceptionHandler.java new file mode 100644 index 0000000..5afd952 --- /dev/null +++ b/demo_k/src/main/java/com/teamcenter/clientx/AppXExceptionHandler.java @@ -0,0 +1,99 @@ +package com.teamcenter.clientx; + + +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.LineNumberReader; + +import com.teamcenter.schemas.soa._2006_03.exceptions.ConnectionException; +import com.teamcenter.schemas.soa._2006_03.exceptions.InternalServerException; +import com.teamcenter.schemas.soa._2006_03.exceptions.ProtocolException; +import com.teamcenter.soa.client.ExceptionHandler; +import com.teamcenter.soa.exceptions.CanceledOperationException; + +/** + * Implementation of the ExceptionHandler. For ConnectionExceptions (server + * temporarily down .etc) prompts the user to retry the last request. For other + * exceptions convert to a RunTime exception. + */ +public class AppXExceptionHandler implements ExceptionHandler +{ + + /* + * (non-Javadoc) + * + * @see com.teamcenter.soa.client.ExceptionHandler#handleException(com.teamcenter.schemas.soa._2006_03.exceptions.InternalServerException) + */ + public void handleException(InternalServerException ise) + { + System.out.println(""); + System.out.println("*****"); + System.out + .println("Exception caught in com.teamcenter.clientx.AppXExceptionHandler.handleException(InternalServerException)."); + + //LineNumberReader reader = new LineNumberReader(new InputStreamReader(System.in)); + + if (ise instanceof ConnectionException) + { + // ConnectionException are typically due to a network error (server + // down .etc) and can be recovered from (the last request can be sent again, + // after the problem is corrected). + //System.out.print("\nThe server returned an connection error.\n" + ise.getMessage() + // + "\nDo you wish to retry the last service request?[y/n]"); + throw new RuntimeException("soa connection failed: "+ise.getMessage()); + } + else + if (ise instanceof ProtocolException) + { + // ProtocolException are typically due to programming errors + // (content of HTTP + // request is incorrect). These are generally can not be + // recovered from. + //System.out.print("\nThe server returned an protocol error.\n" + ise.getMessage() + // + "\nThis is most likely the result of a programming error." + // + "\nDo you wish to retry the last service request?[y/n]"); + throw new RuntimeException("soa connection failed: "+ise.getMessage()); + } + else + { + System.out.println("\nThe server returned an internal server error.\n" + + ise.getMessage() + + "\nThis is most likely the result of a programming error." + + "\nA RuntimeException will be thrown."); + throw new RuntimeException(ise.getMessage()); + } + + /*try + { + String retry = reader.readLine(); + // If yes, return to the calling SOA client framework, where the + // last service request will be resent. + if (retry.equalsIgnoreCase("y") || retry.equalsIgnoreCase("yes")) return; + + throw new RuntimeException("The user has opted not to retry the last request"); + } + catch (IOException e) + { + System.err.println("Failed to read user response.\nA RuntimeException will be thrown."); + throw new RuntimeException(e.getMessage()); + }*/ + } + + /* + * (non-Javadoc) + * + * @see com.teamcenter.soa.client.ExceptionHandler#handleException(com.teamcenter.soa.exceptions.CanceledOperationException) + */ + public void handleException(CanceledOperationException coe) + { + System.out.println(""); + System.out.println("*****"); + System.out.println("Exception caught in com.teamcenter.clientx.AppXExceptionHandler.handleException(CanceledOperationException)."); + + // Expecting this from the login tests with bad credentials, and the + // AnyUserCredentials class not + // prompting for different credentials + throw new RuntimeException(coe); + } + +} diff --git a/demo_k/src/main/java/com/teamcenter/clientx/AppXPartialErrorListener.java b/demo_k/src/main/java/com/teamcenter/clientx/AppXPartialErrorListener.java new file mode 100644 index 0000000..3a440fb --- /dev/null +++ b/demo_k/src/main/java/com/teamcenter/clientx/AppXPartialErrorListener.java @@ -0,0 +1,59 @@ +package com.teamcenter.clientx; + + +import com.teamcenter.soa.client.model.ErrorStack; +import com.teamcenter.soa.client.model.ErrorValue; +import com.teamcenter.soa.client.model.PartialErrorListener; + +/** + * Implementation of the PartialErrorListener. Print out any partial errors + * returned. + * + */ +public class AppXPartialErrorListener implements PartialErrorListener +{ + + /* + * (non-Javadoc) + * + * @see com.teamcenter.soa.client.model.PartialErrorListener#handlePartialError(com.teamcenter.soa.client.model.ErrorStack[]) + */ + public void handlePartialError(ErrorStack[] stacks) + { + if (stacks.length == 0) return; + + System.out.println(""); + System.out.println("*****"); + System.out.println("Partial Errors caught in com.teamcenter.clientx.AppXPartialErrorListener."); + + + for (int i = 0; i < stacks.length; i++) + { + ErrorValue[] errors = stacks[i].getErrorValues(); + System.out.print("Partial Error for "); + + // The different service implementation may optionally associate + // an ModelObject, client ID, or nothing, with each partial error + if (stacks[i].hasAssociatedObject()) + { + System.out.println( "object " + stacks[i].getAssociatedObject().getUid() ); + } + else if (stacks[i].hasClientId()) + { + System.out.println( "client id " + stacks[i].getClientId() ); + } + else if (stacks[i].hasClientIndex()) + System.out.println( "client index " + stacks[i].getClientIndex() ); + + + // Each Partial Error will have one or more contributing error messages + for (int j = 0; j < errors.length; j++) + { + System.out.println(" Code: " + errors[j].getCode() + "\tSeverity: " + + errors[j].getLevel() + "\t" + errors[j].getMessage()); + } + } + + } + +} diff --git a/demo_k/src/main/java/com/teamcenter/clientx/AppXRequestListener.java b/demo_k/src/main/java/com/teamcenter/clientx/AppXRequestListener.java new file mode 100644 index 0000000..fa6e7c1 --- /dev/null +++ b/demo_k/src/main/java/com/teamcenter/clientx/AppXRequestListener.java @@ -0,0 +1,31 @@ +package com.teamcenter.clientx; + + +import com.teamcenter.soa.client.RequestListener; + +/** + * This implemenation of the RequestListener, logs each service request + * to the console. + * + */ +public class AppXRequestListener implements RequestListener +{ + + /** + * Called before each request is sent to the server. + */ + public void serviceRequest ( final Info info ) + { + // will log the service name when done + } + + /** + * Called after each response from the server. + * Log the service operation to the console. + */ + public void serviceResponse( final Info info ) + { + System.out.println( info.id +": "+info.service+"."+info.operation); + } + +} diff --git a/demo_k/src/main/java/com/teamcenter/clientx/AppXUpdateObjectListener.java b/demo_k/src/main/java/com/teamcenter/clientx/AppXUpdateObjectListener.java new file mode 100644 index 0000000..998b7aa --- /dev/null +++ b/demo_k/src/main/java/com/teamcenter/clientx/AppXUpdateObjectListener.java @@ -0,0 +1,39 @@ +package com.teamcenter.clientx; + + +import com.teamcenter.soa.client.model.ChangeListener; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.exceptions.NotLoadedException; + +/** + * Implementation of the ChangeListener. Print out all objects that have been updated. + * + */ +public class AppXUpdateObjectListener implements ChangeListener +{ + + public void modelObjectChange(ModelObject[] objects) + { + if (objects.length == 0) return; + System.out.println(""); + System.out.println("Modified Objects handled in com.teamcenter.clientx.AppXUpdateObjectListener.modelObjectChange"); + System.out.println("The following objects have been updated in the client data model:"); + for (int i = 0; i < objects.length; i++) + { + String uid = objects[i].getUid(); + String type = objects[i].getTypeObject().getName(); + String name = ""; + if (objects[i].getTypeObject().isInstanceOf("WorkspaceObject")) + { + ModelObject wo = objects[i]; + try + { + name = wo.getPropertyObject("object_string").getStringValue(); + } + catch (NotLoadedException e) {} // just ignore + } + System.out.println(" " + uid + " " + type + " " + name); + } + } + +} diff --git a/demo_k/src/main/java/com/teamcenter/clientx/Session.java b/demo_k/src/main/java/com/teamcenter/clientx/Session.java new file mode 100644 index 0000000..62cd1a5 --- /dev/null +++ b/demo_k/src/main/java/com/teamcenter/clientx/Session.java @@ -0,0 +1,268 @@ +package com.teamcenter.clientx; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.List; +import java.util.Locale; +import java.util.Vector; + +import org.apache.commons.httpclient.HttpState; + +import com.teamcenter.schemas.soa._2006_03.exceptions.InvalidCredentialsException; +import com.teamcenter.schemas.soa._2006_03.exceptions.ServiceException; +import com.teamcenter.services.strong.core.DataManagementService; +import com.teamcenter.services.strong.core.SessionService; +import com.teamcenter.services.strong.core._2006_03.Session.LoginResponse; +import com.teamcenter.soa.SoaConstants; +import com.teamcenter.soa.client.Connection; +import com.teamcenter.soa.client.model.ModelObject; +import com.teamcenter.soa.client.model.strong.User; +import com.teamcenter.soa.client.model.strong.WorkspaceObject; +import com.teamcenter.soa.exceptions.CanceledOperationException; +import com.teamcenter.soa.exceptions.NotLoadedException; + + +public class Session +{ + /** + * Single instance of the Connection object that is shared throughtout + * the application. This Connection object is needed whenever a Service + * stub is instantiated. + */ + private static Connection connection; + + /** + * The credentialManager is used both by the Session class and the Teamcenter + * Services Framework to get user credentials. + * + */ + private static AppXCredentialManager credentialManager; + + /** + * Create an instance of the Session with a connection to the specified + * server. + * + * Add implementations of the ExceptionHandler, PartialErrorListener, + * ChangeListener, and DeleteListeners. + * + * @param host Address of the host to connect to, http://serverName:port/tc + */ + public Session(String host) + { + // Create an instance of the CredentialManager, this is used + // by the SOA Framework to get the user's credentials when + // challanged by the server (sesioin timeout on the web tier). + credentialManager = new AppXCredentialManager(); + + String protocol = (host.startsWith("http"))? SoaConstants.HTTP: SoaConstants.IIOP; + + // Create the Connection object, no contact is made with the server + // until a service request is made + connection = new Connection(host, new HttpState(), credentialManager, SoaConstants.REST, + protocol, false); + + // Add an ExceptionHandler to the Connection, this will handle any + // InternalServerException, communication errors, xml marshalling errors + // .etc + connection.setExceptionHandler(new AppXExceptionHandler()); + + // While the above ExceptionHandler is required, all of the following + // Listeners are optional. Client application can add as many or as few Listeners + // of each type that they want. + + // Add a Partial Error Listener, this will be notified when ever a + // a service returns partial errors. + connection.getModelManager().addPartialErrorListener(new AppXPartialErrorListener()); + + // Add a Change Listener, this will be notified when ever a + // a service returns model objects that have been updated. + connection.getModelManager().addChangeListener(new AppXUpdateObjectListener()); + + // Add a Delete Listener, this will be notified when ever a + // a service returns objects that have been deleted. + connection.getModelManager().addDeleteListener(new AppXDeletedObjectListener()); + + // Add a Request Listener, this will be notified before and after each + // service request is sent to the server. + Connection.addRequestListener( new AppXRequestListener() ); + + } + + /** + * Get the single Connection object for the application + * + * @return connection + */ + public static Connection getConnection() + { + return connection; + } + + /** + * Login to the Teamcenter Server + * + */ + public User login(String user,String pw) + { + // Get the service stub + SessionService sessionService = SessionService.getService(connection); + + try + { + // Prompt for credentials until they are right, or until user + // cancels + String[] credentials = credentialManager.promptForCredentials(user,pw); + + for (int i = 0; i < credentials.length; i++) { + System.out.println("credentials:"+credentials[i]); + } + while (true) + { + try + { + + // ***************************** + // Execute the service operation + // ***************************** + LoginResponse out = sessionService.login(credentials[0], credentials[1], + credentials[2], credentials[3], credentials[4]); + + return out.user; + } + catch (InvalidCredentialsException e) + { + credentials = credentialManager.getCredentials(e); + } + } + } + // User canceled the operation, don't need to tell him again + catch (CanceledOperationException e) {} + + // Exit the application + System.exit(0); + return null; + } + + /** + * Login to the Teamcenter Server + * @throws CanceledOperationException + * @throws InvalidCredentialsException + * + */ + public User login2(String user,String pw) throws CanceledOperationException, InvalidCredentialsException + { + // Get the service stub + SessionService sessionService = SessionService.getService(connection); + String[] credentials = credentialManager.promptForCredentials(user,pw); + LoginResponse out = null; + out = sessionService.login(credentials[0], credentials[1], + credentials[2], credentials[3], credentials[4]); + if(out != null) + return out.user; + else + return null; + } + + /** + * Terminate the session with the Teamcenter Server + * + */ + public void logout() + { + // Get the service stub + SessionService sessionService = SessionService.getService(connection); + try + { + // ***************************** + // Execute the service operation + // ***************************** + sessionService.logout(); + } + catch (ServiceException e){} + } + + /** + * Print some basic information for a list of objects + * + * @param objects + */ + public static void printObjects(ModelObject[] objects) + { + if(objects == null) + return; + + SimpleDateFormat format = new SimpleDateFormat("M/d/yyyy h:mm a", new Locale("en", "US")); // Simple no time zone + + // Ensure that the referenced User objects that we will use below are loaded + getUsers( objects ); + + System.out.println("Name\t\tOwner\t\tLast Modified"); + System.out.println("====\t\t=====\t\t============="); + for (int i = 0; i < objects.length; i++) + { + if(!(objects[i] instanceof WorkspaceObject )) + continue; + + WorkspaceObject wo = (WorkspaceObject)objects[i]; + try + { + String name = wo.get_object_string(); + User owner = (User) wo.get_owning_user(); + Calendar lastModified =wo.get_last_mod_date(); + + System.out.println(name + "\t" + owner.get_user_name() + "\t" + + format.format(lastModified.getTime())); + } + catch (NotLoadedException e) + { + // Print out a message, and skip to the next item in the folder + // Could do a DataManagementService.getProperties call at this point + System.out.println(e.getMessage()); + System.out.println("The Object Property Policy ($TC_DATA/soa/policies/Default.xml) is not configured with this property."); + } + } + + } + + + private static void getUsers( ModelObject[] objects ) + { + if(objects == null) + return; + + DataManagementService dmService = DataManagementService.getService(Session.getConnection()); + + List unKnownUsers = new Vector(); + for (int i = 0; i < objects.length; i++) + { + if(!(objects[i] instanceof WorkspaceObject )) + continue; + + WorkspaceObject wo = (WorkspaceObject)objects[i]; + + User owner = null; + try + { + owner = (User) wo.get_owning_user(); + owner.get_user_name(); + } + catch (NotLoadedException e) + { + if(owner != null) + unKnownUsers.add(owner); + } + } + User[] users = (User[])unKnownUsers.toArray(new User[unKnownUsers.size()]); + String[] attributes = { "user_name" }; + + + // ***************************** + // Execute the service operation + // ***************************** + dmService.getProperties(users, attributes); + + + } + + +} diff --git a/demo_k/src/main/resources/META-INF/spring.factories b/demo_k/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..2fb35f1 --- /dev/null +++ b/demo_k/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.env.EnvironmentPostProcessor=com.connor.web.KPostProcessor \ No newline at end of file diff --git a/demo_k/src/main/resources/application.yml b/demo_k/src/main/resources/application.yml new file mode 100644 index 0000000..b8ebdee --- /dev/null +++ b/demo_k/src/main/resources/application.yml @@ -0,0 +1,75 @@ +server: + port: 8081 + servlet: + context-path: /plm +query: + #getSchedule接口查询名称 + get_schedule_query: chint_query_project + get_schedule_ccp_query: chint_query_material + #getSchedule接口查询字段名称 + get_schedule_field_item: 项目编号 + get_schedule_field_product: 产品编码 + get_schedule_field_wbs: WBS No + get_schedule_field_materialno: materialno + + +config: + #soa服务地址 + tc-url: http://10.128.10.203:7001/tc + #测试服务器 + #tc-url: http://10.128.18.139:7001/tc + #tc-url: http://10.128.155.88:7001/tc + #soa登录用户 + #tc-user: admin + tc-user: dcproxy + #soa登录密码 + tc-pwd: dcproxy + #tc-pwd: admin + #测试机 + #tc-pwd: dcproxy + #fms下载缓存文件夹 + fms-cachedir: C:\Users\plm\AppData\Local\Temp\2 + #fms服务地址 + #测试服务器 + #fms-url: http://10.128.18.139:4544 + #fms-url: http://10.128.155.88:4544 + #正式服务器 + fms-url: http://10.128.10.203:4544 + #组织名称=要查询的任务信息文件夹名##接口对方要求的文件夹名称(没有可不填)#~#组织名称=要查询的任务信息文件夹名##接口对方要求的文件夹名称(没有可不填) + group-folderName: M005=电磁设计##电算单,线圈设计##线圈/器身图纸,绝缘设计##线圈/器身图纸,铁心设计##铁心/引线图纸,高压引线设计##铁心/引线图纸,中低压引线设计##铁心/引线图纸,油箱设计##油箱图纸#~#M034=一次设计,二次设计,结构设计 + #ftp服务ip + #ftp-url: 192.168.0.117 + #ftp服务端口 + #ftp-port: 8082 + #ftp登录用户 + #ftp-user: administrator + #ftp登录密码 + #ftp-pwd: infodba + #ftp上传文件路径 + #ftp-path: /static/files + #配置当前服务ip,用于传递文件url + #server-ip: 127.0.0.1 +spring: + datasource: + #测试机 + #url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 10.128.155.88)(PORT = 1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=testdb))) + #url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 10.128.18.139)(PORT = 1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=testdb))) + #正式机 + url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 10.128.10.207)(PORT = 1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=tcprod))) + + #url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.103)(PORT = 1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=TC))) + username: infodba + password: infodba + driver-class-name: oracle.jdbc.driver.OracleDriver + hikari: + minimum-idle: 1 + maximum-pool-size: 5 + auto-commit: true + + #jpa: + # hibernate: + # ddl-auto: update + # show-sql: true + #thymeleaf: + # cache: false + # prefix: classpath:/views/ \ No newline at end of file diff --git a/demo_k/src/main/resources/log4j.properties b/demo_k/src/main/resources/log4j.properties new file mode 100644 index 0000000..067941c --- /dev/null +++ b/demo_k/src/main/resources/log4j.properties @@ -0,0 +1,17 @@ +# LOG4J配置 +log4j.rootCategory=WARN,stdout,file +# ,file +# 控制台输出 +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n + +# 文件输出 +log4j.appender.file=org.apache.log4j.DailyRollingFileAppender +log4j.appender.file.file=./logs/rest_service.log +log4j.appender.file.Threshold = WARN +log4j.appender.file.Append = true +log4j.appender.file.DatePattern='.'yyyy-MM-dd +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n + diff --git a/demo_k/src/main/resources/views/error.html b/demo_k/src/main/resources/views/error.html new file mode 100644 index 0000000..663d681 --- /dev/null +++ b/demo_k/src/main/resources/views/error.html @@ -0,0 +1,10 @@ + + + + error + + +

Error

+

+ + \ No newline at end of file diff --git a/demo_k/src/main/resources/views/hello.html b/demo_k/src/main/resources/views/hello.html new file mode 100644 index 0000000..d1bd682 --- /dev/null +++ b/demo_k/src/main/resources/views/hello.html @@ -0,0 +1,9 @@ + + + + Thymeleaf + + +

欢迎使用Thymeleaf!!

+ + \ No newline at end of file diff --git a/demo_k/src/main/resources/views/success.html b/demo_k/src/main/resources/views/success.html new file mode 100644 index 0000000..6bf13a3 --- /dev/null +++ b/demo_k/src/main/resources/views/success.html @@ -0,0 +1,10 @@ + + + + OK + + +

Success

+

+ + \ No newline at end of file diff --git a/demo_k/src/main/webapp/META-INF/MANIFEST.MF b/demo_k/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..59499bc --- /dev/null +++ b/demo_k/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/demo_k/src/main/webapp/WEB-INF/views/hello.jsp b/demo_k/src/main/webapp/WEB-INF/views/hello.jsp new file mode 100644 index 0000000..9edf26c --- /dev/null +++ b/demo_k/src/main/webapp/WEB-INF/views/hello.jsp @@ -0,0 +1,17 @@ +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> + +

Time ${now}

+

${content}

+ + + + + + + + + + + + +
idname
${s.puid}${s.pc8_cmjd}
\ No newline at end of file diff --git a/demo_k/src/test/java/com/connor/web/DemoKApplicationTests.java b/demo_k/src/test/java/com/connor/web/DemoKApplicationTests.java new file mode 100644 index 0000000..6825c85 --- /dev/null +++ b/demo_k/src/test/java/com/connor/web/DemoKApplicationTests.java @@ -0,0 +1,16 @@ +package com.connor.web; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class DemoKApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/demo_k/src/test/java/com/connor/web/activiti/UnitTest.test.bpmn20.xml b/demo_k/src/test/java/com/connor/web/activiti/UnitTest.test.bpmn20.xml new file mode 100644 index 0000000..d0afa96 --- /dev/null +++ b/demo_k/src/test/java/com/connor/web/activiti/UnitTest.test.bpmn20.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + ${employeeName} would like to take ${numberOfDays} day(s) of vacation (Motivation: ${vacationMotivation}). + + + + + + + + + + + management + + + + + + + + ${vacationApproved == 'true'} + + + + + + + + ${vacationApproved == 'false'} + + + + + Your manager has disapproved your vacation request for ${numberOfDays} days. + Reason: ${managerMotivation} + + + + + + + + + + + + + ${employeeName} + + + + + + + + ${resendRequest == 'true'} + + + + ${resendRequest == 'false'} + + + + + + \ No newline at end of file diff --git a/demo_k/src/test/java/com/connor/web/controller/HelloControllerTest.java b/demo_k/src/test/java/com/connor/web/controller/HelloControllerTest.java new file mode 100644 index 0000000..2dfd1c4 --- /dev/null +++ b/demo_k/src/test/java/com/connor/web/controller/HelloControllerTest.java @@ -0,0 +1,26 @@ +package com.connor.web.controller; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.*; + +/** + * Created by K on 2018/7/3. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest +public class HelloControllerTest { + + @Test + public void hello() { + System.out.println("1"); + } + + @Test + public void error() { + System.out.println("2"); + } +} \ No newline at end of file diff --git a/demo_k/testlib/TcSoaBomTypes_11000.2.0.jar b/demo_k/testlib/TcSoaBomTypes_11000.2.0.jar new file mode 100644 index 0000000..3f5ab9c Binary files /dev/null and b/demo_k/testlib/TcSoaBomTypes_11000.2.0.jar differ diff --git a/demo_k/testlib/TcSoaCadStrong-12.3.0.jar b/demo_k/testlib/TcSoaCadStrong-12.3.0.jar new file mode 100644 index 0000000..3cbb1c6 Binary files /dev/null and b/demo_k/testlib/TcSoaCadStrong-12.3.0.jar differ diff --git a/demo_k/testlib/TcSoaCadStrong_11000.2.0.jar b/demo_k/testlib/TcSoaCadStrong_11000.2.0.jar new file mode 100644 index 0000000..7ef69de Binary files /dev/null and b/demo_k/testlib/TcSoaCadStrong_11000.2.0.jar differ diff --git a/demo_k/testlib/TcSoaCadTypes_11000.2.0.jar b/demo_k/testlib/TcSoaCadTypes_11000.2.0.jar new file mode 100644 index 0000000..f092485 Binary files /dev/null and b/demo_k/testlib/TcSoaCadTypes_11000.2.0.jar differ diff --git a/demo_k/testlib/TcSoaStructureManagementTypes_11000.2.0.jar b/demo_k/testlib/TcSoaStructureManagementTypes_11000.2.0.jar new file mode 100644 index 0000000..2116abe Binary files /dev/null and b/demo_k/testlib/TcSoaStructureManagementTypes_11000.2.0.jar differ