Compare commits

...

1 Commits

Author SHA1 Message Date
陈翼晖 13d22cca14 没有BOM异步逻辑代码
1 year ago

@ -1,3 +1,2 @@
ERROR_NOT_CHANGE=\u8BF7\u9009\u62E9\u66F4\u6539\u901A\u77E5\u5355\u5BF9\u8C61 ERROR_NOT_CHANGE=\u8BF7\u9009\u62E9\u66F4\u6539\u901A\u77E5\u5355\u5BF9\u8C61
ERROR_NO_CHANGE=\u672A\u627E\u5230\u53D8\u66F4\u524D\u540E\u5BF9\u8C61,\u65E0\u6CD5\u63D0\u53D6\u5DEE\u5F02\u9879\uFF01 ERROR_NO_CHANGE=\u672A\u627E\u5230\u53D8\u66F4\u524D\u540E\u5BF9\u8C61,\u65E0\u6CD5\u63D0\u53D6\u5DEE\u5F02\u9879\uFF01
SUCC_CHANGE=\u63D0\u53D6\u5B8C\u6210

@ -3,8 +3,8 @@
<plugin> <plugin>
<extension point="org.eclipse.ui.commands"> <extension point="org.eclipse.ui.commands">
<!--工具条--> <!--工具条-->
<command name="DBOM转EBOM" id="com.connor.chint.yunpi.command.DbomToECommand"/> <command name="DBOM转EBOM" id="com.connor.chint.yunpi.command.DbomToECommand"/>
<command name="EBOM转PBOM" id="com.connor.chint.yunpi.command.EbomToPCommand"/> <command name="EBOM转PBOM" id="com.connor.chint.yunpi.command.EbomToPCommand"/>
<command name="创建框架BOM" id="com.chint.plm.createKjBom.CreateKjBomCommand"/> <command name="创建框架BOM" id="com.chint.plm.createKjBom.CreateKjBomCommand"/>
<command name="框架BOM传递SAP" id="com.connor.chint.yunpi.command.BomSapKjSendCommand"/> <command name="框架BOM传递SAP" id="com.connor.chint.yunpi.command.BomSapKjSendCommand"/>
@ -18,17 +18,17 @@
<command name="典型工艺一键指派" id="com.connor.chint.yunpi.command.AssignProcess"/> <command name="典型工艺一键指派" id="com.connor.chint.yunpi.command.AssignProcess"/>
<command name="一键式工艺自动投料" id="com.connor.chint.yunpi.command.AutoFeedingComd"/> <command name="一键式工艺自动投料" id="com.connor.chint.yunpi.command.AutoFeedingComd"/>
<command name="创建/编辑更改通知单" id="com.chint.plm.createEcn.CreateEcnCommond"/> <command name="创建/编辑更改通知单" id="com.chint.plm.createEcn.CreateEcnCommond"/>
<command name="提取差异项" id="com.chint.plm.createbomdifference.ExtractDiffComd"/> <command name="提取差异项" id="com.chint.plm.createbomdifference.ExtractDiffComd"/>
<command name="生成更改差异文件" id="com.chint.plm.createbomdifference.BomCompareComd"/> <command name="生成更改差异文件" id="com.chint.plm.createbomdifference.BomCompareComd"/>
<command name="更新现有工时" id="com.chint.plm.updateWorkTime.UpdateWorkCommand"/> <command name="更新现有工时" id="com.chint.plm.updateWorkTime.UpdateWorkCommand"/>
<command name="单层BOM传递SAP" id="com.connor.chint.yunpi.command.BomDcSapCommand"/> <command name="单层BOM传递SAP" id="com.connor.chint.yunpi.command.BomDcSapCommand"/>
<command name="SAP传递结果查询" id="com.chint.plm.SearchSapResult.SearchSapResultComd"/> <command name="SAP传递结果查询" id="com.chint.plm.SearchSapResult.SearchSapResultComd"/>
<command name="校对表填写" id="com.connor.chint.yunpi.command.TestCommand"/><!-- --> <command name="校对表填写" id="com.connor.chint.yunpi.command.TestCommand"/><!-- -->
<command name="系统版本V1.11" id="com.connor.chint.sap2.projectTest.VersionCommandWh"/> <command name="系统版本V1.11" id="com.connor.chint.sap2.projectTest.VersionCommandWh"/>
<command name="工装需求管理" id="com.connor.plm.GZXQHandler"/> <command name="工装需求管理" id="com.connor.plm.GZXQHandler"/>
<command name="一键提取图纸" id="com.chint.plm.extractdraw.ExtractDrawComd"/> <command name="一键提取图纸" id="com.chint.plm.extractdraw.ExtractDrawComd"/>
<command name="成本单管理" id="com.connor.plm.CostListManagement"/> <command name="成本单管理" id="com.connor.plm.CostListManagement"/>
<command name="标准工序传递MOM" id="com.connor.plm.sendGXToMOM"/> <command name="标准工序传递MOM" id="com.connor.plm.sendGXToMOM"/>
</extension> </extension>
@ -44,33 +44,33 @@
<handler commandId="com.connor.chint.yunpi.command.BomDcSapCommand" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.connor.chint.yunpi.command.BomDcSapCommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.chint.yunpi.command.BomSapKjSendCommand" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.connor.chint.yunpi.command.BomSapKjSendCommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.chint.yunpi.command.AutoFeedingComd" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.connor.chint.yunpi.command.AutoFeedingComd" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.chint.plm.createGGBom.GGBomCommand" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.chint.plm.createGGBom.GGBomCommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.chint.plm.applyMatnr.ApplyMatnrCommand#all" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.chint.plm.applyMatnr.ApplyMatnrCommand#all" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.chint.plm.applyMatnr.ApplyMatnrCommand#user" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.chint.plm.applyMatnr.ApplyMatnrCommand#user" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.chint.yunpi.command.EbomToPCommand" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.connor.chint.yunpi.command.EbomToPCommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.chint.yunpi.command.BomSapWhCommand" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.connor.chint.yunpi.command.BomSapWhCommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.chint.yunpi.command.BomSapWhBjCommand" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.connor.chint.yunpi.command.BomSapWhBjCommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.chint.plm.createKjBom.CreateKjBomCommand" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.chint.plm.createKjBom.CreateKjBomCommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.chint.yunpi.command.DbomToECommand" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.connor.chint.yunpi.command.DbomToECommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.chint.yunpi.command.AssignProcess" class="com.connor.chint.yunpi.KHandler"/> <handler commandId="com.connor.chint.yunpi.command.AssignProcess" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.plm.CostListManagement" class="com.connor.plm.CostListManagement.CostListManagementHandler"/> <handler commandId="com.connor.plm.CostListManagement" class="com.connor.plm.CostListManagement.CostListManagementHandler"/>
<handler commandId="com.connor.plm.sendGXToMOM" class="com.connor.plm.SendGXToMOM.sendGXToMOMHandler"/> <handler commandId="com.connor.plm.sendGXToMOM" class="com.connor.plm.SendGXToMOM.sendGXToMOMHandler"/>
<handler commandId="com.connor.plm.GZXQHandler" class="com.connor.plm.GZXQ.GZXQHandler"/> <handler commandId="com.connor.plm.GZXQHandler" class="com.connor.plm.GZXQ.GZXQHandler"/>
</extension> </extension>
<extension point="org.eclipse.ui.menus"> <extension point="org.eclipse.ui.menus">
<menuContribution locationURI="menu:org.eclipse.ui.main.menu?after=additions"> <menuContribution locationURI="menu:org.eclipse.ui.main.menu?after=additions">
<!--<menu label="云派" id="com.connor.chint.sap2.menu.yunpi"/>--> <!--<menu label="云派" id="com.connor.chint.sap2.menu.yunpi"/>-->
<menu label="武汉工厂" id="com.connor.chint.sap2.menu.whgc"/> <menu label="武汉工厂" id="com.connor.chint.sap2.menu.whgc"/>
</menuContribution> </menuContribution>
<menuContribution locationURI="menu:com.connor.chint.sap2.menu.whgc?after=additions"> <menuContribution locationURI="menu:com.connor.chint.sap2.menu.whgc?after=additions">
<!-- <command commandId = "com.chint.plm.createbomdifference.ExtractDiffComd" id = "com.chint.plm.createbomdifference.ExtractDiffComd"> <!--<command commandId = "com.chint.plm.createbomdifference.ExtractDiffComd" id = "com.chint.plm.createbomdifference.ExtractDiffComd">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
@ -91,7 +91,7 @@
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.chint.plm.createbomdifference.BomCompareComd" id = "com.chint.plm.createbomdifference.BomCompareComd"> <command commandId = "com.chint.plm.createbomdifference.BomCompareComd" id = "com.chint.plm.createbomdifference.BomCompareComd">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
@ -112,7 +112,7 @@
</and> </and>
</visibleWhen> </visibleWhen>
</command> --> </command> -->
<command commandId = "com.connor.plm.CostListManagement" id = "com.connor.plm.CostListManagement"> <command commandId = "com.connor.plm.CostListManagement" id = "com.connor.plm.CostListManagement">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
@ -133,310 +133,310 @@
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.TestCommand" id = "com.connor.chint.yunpi.command.TestCommand"> <command commandId = "com.connor.chint.yunpi.command.TestCommand" id = "com.connor.chint.yunpi.command.TestCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.TestCommand"> value="com.connor.chint.yunpi.command.TestCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> <!-- --> </command> <!-- -->
<command commandId = "com.chint.plm.createGGBom.GGBomCommand" id = "com.chint.plm.createGGBom.GGBomCommand"> <command commandId = "com.chint.plm.createGGBom.GGBomCommand" id = "com.chint.plm.createGGBom.GGBomCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.chint.plm.createGGBom.GGBomCommand"> value="com.chint.plm.createGGBom.GGBomCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.chint.plm.createKjBom.CreateKjBomCommand" id = "com.chint.plm.createKjBom.CreateKjBomCommand"> <command commandId = "com.chint.plm.createKjBom.CreateKjBomCommand" id = "com.chint.plm.createKjBom.CreateKjBomCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.chint.plm.createKjBom.CreateKjBomCommand"> value="com.chint.plm.createKjBom.CreateKjBomCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.chint.plm.applyMatnr.ApplyMatnrCommand#all" id = "com.chint.plm.applyMatnr.ApplyMatnrCommand#all"> <command commandId = "com.chint.plm.applyMatnr.ApplyMatnrCommand#all" id = "com.chint.plm.applyMatnr.ApplyMatnrCommand#all">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.chint.plm.applyMatnr.ApplyMatnrCommand#all"> value="com.chint.plm.applyMatnr.ApplyMatnrCommand#all">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.chint.plm.applyMatnr.ApplyMatnrCommand#user" id = "com.chint.plm.applyMatnr.ApplyMatnrCommand#user"> <command commandId = "com.chint.plm.applyMatnr.ApplyMatnrCommand#user" id = "com.chint.plm.applyMatnr.ApplyMatnrCommand#user">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.chint.plm.applyMatnr.ApplyMatnrCommand#user"> value="com.chint.plm.applyMatnr.ApplyMatnrCommand#user">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.BomSapKjSendCommand" id = "com.connor.chint.yunpi.command.BomSapKjSendCommand"> <command commandId = "com.connor.chint.yunpi.command.BomSapKjSendCommand" id = "com.connor.chint.yunpi.command.BomSapKjSendCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.BomSapKjSendCommand"> value="com.connor.chint.yunpi.command.BomSapKjSendCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.DbomToECommand" id = "com.connor.chint.yunpi.command.DbomToECommand"> <command commandId = "com.connor.chint.yunpi.command.DbomToECommand" id = "com.connor.chint.yunpi.command.DbomToECommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.DbomToECommand"> value="com.connor.chint.yunpi.command.DbomToECommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.EbomToPCommand" id = "com.connor.chint.yunpi.command.EbomToPCommand"> <command commandId = "com.connor.chint.yunpi.command.EbomToPCommand" id = "com.connor.chint.yunpi.command.EbomToPCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.EbomToPCommand"> value="com.connor.chint.yunpi.command.EbomToPCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.AssignProcess" id = "com.connor.chint.yunpi.command.AssignProcess"> <command commandId = "com.connor.chint.yunpi.command.AssignProcess" id = "com.connor.chint.yunpi.command.AssignProcess">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.AssignProcess"> value="com.connor.chint.yunpi.command.AssignProcess">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.AutoFeedingComd" id = "com.connor.chint.yunpi.command.AutoFeedingComd"> <command commandId = "com.connor.chint.yunpi.command.AutoFeedingComd" id = "com.connor.chint.yunpi.command.AutoFeedingComd">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.AutoFeedingComd"> value="com.connor.chint.yunpi.command.AutoFeedingComd">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.chint.plm.updateWorkTime.UpdateWorkCommand" id = "com.chint.plm.updateWorkTime.UpdateWorkCommand"> <command commandId = "com.chint.plm.updateWorkTime.UpdateWorkCommand" id = "com.chint.plm.updateWorkTime.UpdateWorkCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.chint.plm.updateWorkTime.UpdateWorkCommand"> value="com.chint.plm.updateWorkTime.UpdateWorkCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.BomSapWhBjCommand" id = "com.connor.chint.yunpi.command.BomSapWhBjCommand"> <command commandId = "com.connor.chint.yunpi.command.BomSapWhBjCommand" id = "com.connor.chint.yunpi.command.BomSapWhBjCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.BomSapWhBjCommand"> value="com.connor.chint.yunpi.command.BomSapWhBjCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.BomSapWhCommand" id = "com.connor.chint.yunpi.command.BomSapWhCommand"> <command commandId = "com.connor.chint.yunpi.command.BomSapWhCommand" id = "com.connor.chint.yunpi.command.BomSapWhCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.BomSapWhCommand"> value="com.connor.chint.yunpi.command.BomSapWhCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.yunpi.command.BomDcSapCommand" id = "com.connor.chint.yunpi.command.BomDcSapCommand"> <command commandId = "com.connor.chint.yunpi.command.BomDcSapCommand" id = "com.connor.chint.yunpi.command.BomDcSapCommand">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.yunpi.command.BomDcSapCommand"> value="com.connor.chint.yunpi.command.BomDcSapCommand">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.plm.GZXQHandler" id = "com.connor.plm.GZXQHandler"> <command commandId = "com.connor.plm.GZXQHandler" id = "com.connor.plm.GZXQHandler">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
@ -521,27 +521,27 @@
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.chint.sap2.projectTest.VersionCommandWh" id = "com.connor.chint.sap2.projectTest.VersionCommandWh"> <command commandId = "com.connor.chint.sap2.projectTest.VersionCommandWh" id = "com.connor.chint.sap2.projectTest.VersionCommandWh">
<visibleWhen> <visibleWhen>
<and> <and>
<or> <or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/> <reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/> <reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or> </or>
<with <with
variable="rac_command_suppression"> variable="rac_command_suppression">
<not> <not>
<iterate <iterate
operator="or"> operator="or">
<equals <equals
value="com.connor.chint.sap2.projectTest.VersionCommandWh"> value="com.connor.chint.sap2.projectTest.VersionCommandWh">
</equals> </equals>
</iterate> </iterate>
</not> </not>
</with> </with>
</and> </and>
</visibleWhen> </visibleWhen>
</command> </command>
</menuContribution> </menuContribution>

@ -26,10 +26,6 @@ import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.stage.Stage; import javafx.stage.Stage;
/**
* @author cyh
* ID
*/
public class AssignIdController { public class AssignIdController {
private String groupID; private String groupID;
private TCSession session; private TCSession session;

@ -84,12 +84,6 @@ import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.stage.Stage; import javafx.stage.Stage;
/**
* @author cyh
*
* ´´½¨¸ü¸ÄECNÒ³Ãæ
*
*/
public class CreateEcnController extends KFXPanelController { public class CreateEcnController extends KFXPanelController {
@FXML @FXML
private TextField ecnId; private TextField ecnId;
@ -680,8 +674,6 @@ public class CreateEcnController extends KFXPanelController {
String result = read.getString("result"); String result = read.getString("result");
if (result.equals("·ñ")) { if (result.equals("·ñ")) {
refTableBean.setShNo(true); refTableBean.setShNo(true);
}else {
refTableBean.setShYes(true);
} }
i = i + 1; i = i + 1;
} }

@ -82,8 +82,8 @@ public class RefTableBean {
return shYes; return shYes;
} }
public void setShYes(boolean shYes) { public void setShYes(CheckBox shYes) {
this.shYes.setSelected(shYes); this.shYes = shYes;
} }
public CheckBox getShNo() { public CheckBox getShNo() {

@ -33,11 +33,6 @@ import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.stage.Stage; import javafx.stage.Stage;
/**
* @author cyh
*
*
*/
public class RelateEcnController { public class RelateEcnController {
@FXML @FXML

@ -74,7 +74,7 @@ public class ExtractDiffComd extends KCommand {
return; return;
} }
readChangeDesign(oldComponents, newComponents, tar); readChangeDesign(oldComponents, newComponents, tar);
MessageBox.post(resource.getString("SUCC_CHANGE"), "", 2);
} catch (TCException e) { } catch (TCException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
@ -150,10 +150,9 @@ public class ExtractDiffComd extends KCommand {
ChangeDesignBean changeDesignBean = itemChangeMap.get(keyItem); ChangeDesignBean changeDesignBean = itemChangeMap.get(keyItem);
TCComponentItemRevision oldDesgin = changeDesignBean.getOldDesgin(); TCComponentItemRevision oldDesgin = changeDesignBean.getOldDesgin();
Map<String, PBomBean> materialOld = getMaterialByDesign(oldDesgin); Map<String, PBomBean> materialOld = getMaterialByDesign(oldDesgin);
System.out.println("materialOld===>" + materialOld.toString());
TCComponentItemRevision newDesgin = changeDesignBean.getNewDesgin(); TCComponentItemRevision newDesgin = changeDesignBean.getNewDesgin();
Map<String, PBomBean> materialNew = getMaterialByDesign(newDesgin); Map<String, PBomBean> materialNew = getMaterialByDesign(newDesgin);
System.out.println("materialOld===>" + materialOld.toString());
System.out.println("materialNew===>" + materialNew.toString()); System.out.println("materialNew===>" + materialNew.toString());
// ±È½Ï±ä¸üǰºóÎïÁÏBOM // ±È½Ï±ä¸üǰºóÎïÁÏBOM
for (String materialNo : materialOld.keySet()) { for (String materialNo : materialOld.keySet()) {
@ -317,8 +316,6 @@ public class ExtractDiffComd extends KCommand {
if (pbomMap.containsKey(materialNo)) { if (pbomMap.containsKey(materialNo)) {
PBomBean pBomBean = pbomMap.get(materialNo); PBomBean pBomBean = pbomMap.get(materialNo);
// ÊÇ·ñPBOM // ÊÇ·ñPBOM
System.out.println("matnrProps[1]===>" + matnrProps[1]);
System.out.println("matnrProps[2]===>" + matnrProps[2] + "pBomBean.getpRevision()"+pBomBean.getpRevision());
if (matnrProps[1].equals(Util.ZT_VAL_PBOM) && matnrProps[2].compareTo(pBomBean.getpRevision()) > 0) { if (matnrProps[1].equals(Util.ZT_VAL_PBOM) && matnrProps[2].compareTo(pBomBean.getpRevision()) > 0) {
pBomBean.setpMaterial(represent); pBomBean.setpMaterial(represent);
pBomBean.setpRevision(matnrProps[2]); pBomBean.setpRevision(matnrProps[2]);

@ -1,3 +1,2 @@
ERROR_NOT_CHANGE=\u8BF7\u9009\u62E9\u66F4\u6539\u901A\u77E5\u5355\u5BF9\u8C61 ERROR_NOT_CHANGE=\u8BF7\u9009\u62E9\u66F4\u6539\u901A\u77E5\u5355\u5BF9\u8C61
ERROR_NO_CHANGE=\u672A\u627E\u5230\u53D8\u66F4\u524D\u540E\u5BF9\u8C61,\u65E0\u6CD5\u63D0\u53D6\u5DEE\u5F02\u9879\uFF01 ERROR_NO_CHANGE=\u672A\u627E\u5230\u53D8\u66F4\u524D\u540E\u5BF9\u8C61,\u65E0\u6CD5\u63D0\u53D6\u5DEE\u5F02\u9879\uFF01
SUCC_CHANGE=\u63D0\u53D6\u5B8C\u6210

@ -1,7 +1,5 @@
package com.connor.chint.sap2.util; package com.connor.chint.sap2.util;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
@ -42,26 +40,8 @@ public class BomUtilWh {
public static final String WH_FACOTRY = "M060"; public static final String WH_FACOTRY = "M060";
public static final String PARENTTCID = "PARENTTCID"; public static final String PARENTTCID = "PARENTTCID";
public static final String PARENTWLBM = "PARENTWLBM"; public static final String PARENTWLBM = "PARENTWLBM";
public static final String ZT2_WBSNO = "zt2_WBSNo";
public static final String ZT2_MATERIALNO = "zt2_MaterialNo";
public static final String SPLIT_MSG = "/"; public static final String SPLIT_MSG = "/";
public static final String UID = "UID"; public static final String UID = "UID";
public static final String detailsSql = "insert into CHINT_BOM_TO_SAP_SUM (code,factory,\"USER\",starttime,wbsno,projectno,taskstauts"
+ ",plmresult,transfer,keymsg,sapresult,PROJECTUID,SERVERHOST,USERID) values "
+ "(?,?,?,to_date(?,'yyyy-mm-ddhh24:mi:ss')" + ",?,?,'组织完成','未处理',?,?,'未返回',?,?,?)";
// 获取传递BOM中最大的序列
public static Integer getCode() throws SQLException {
String sql = "select Tab_SendBom_Sequence.nextval as sid from dual";
ResultSet rs = SqlUtil.read(sql);
Object objs[] = new Object[1];
int code = 0;
if (rs.next()) {
code = rs.getInt(1);
System.out.println("code:" + code);
}
SqlUtil.free();
return code;
}
/** /**
* BOMDETAILS * BOMDETAILS
@ -71,21 +51,21 @@ public class BomUtilWh {
* @param productNos * @param productNos
* @function * @function
*/ */
public static void logXmlMsg(Element interGrationList, String code, String productNos, String batchNo, public static void logXmlMsg(Document interGrationList, String code, String productNos, String batchNo,
String wbsNo, TCSession session) { String wbsNo, TCSession session) {
String strs[] = session.getPreferenceService().getStringValues(DATABASE_TC); String strs[] = session.getPreferenceService().getStringValues(DATABASE_TC);
SqlUtil.getTCDataConnection(strs); SqlUtil.getTCDataConnection(strs);
try { try {
Element rootElement = interGrationList.getRootElement();
// 物料信息 // 物料信息
Element element = interGrationList.element(WLLIST); Element element = rootElement.element(WLLIST);
List<Element> elements = element.elements(WLCONTENTS); List<Element> elements = element.elements(WLCONTENTS);
for (Element content : elements) { for (Element content : elements) {
// 记录TCid UID 物料编码 // 记录TCid UID 物料编码
Element bomContents = content.element("BOMCONTENTS"); String tcId = content.elementText(PARENTTCID);
String tcId = bomContents.elementText(PARENTTCID);
String[] split = tcId.split(SPLIT_MSG); String[] split = tcId.split(SPLIT_MSG);
String parentMantrNo = bomContents.elementText(PARENTWLBM); String parentMantrNo = content.elementText(PARENTWLBM);
String uid = bomContents.elementText(UID); String uid = content.elementText(UID);
SqlUtil.write(logSql, SqlUtil.write(logSql,
new String[] { code, batchNo, WH_FACOTRY, productNos, split[0], uid, parentMantrNo, wbsNo }); new String[] { code, batchNo, WH_FACOTRY, productNos, split[0], uid, parentMantrNo, wbsNo });
} }
@ -1196,7 +1176,7 @@ public class BomUtilWh {
TCComponentItemRevision pRev, String groupName, List<String> wbsList, TCSession session, String now, TCComponentItemRevision pRev, String groupName, List<String> wbsList, TCSession session, String now,
List<TCComponentMEProcessRevision> needTCM_meops, Map<String, TCComponent> gy_meops, List<TCComponentMEProcessRevision> needTCM_meops, Map<String, TCComponent> gy_meops,
Element INTERGRATIONLIST, StringBuffer errMessage, List<TCComponentItem> cppRevision, String txtPath, Element INTERGRATIONLIST, StringBuffer errMessage, List<TCComponentItem> cppRevision, String txtPath,
Map<String, TCComponentItemRevision> material_revs, String batchNum) { Map<String, TCComponentItemRevision> material_revs) {
try { try {
String uid = pBomLine.getUid(); String uid = pBomLine.getUid();
@ -1294,8 +1274,6 @@ public class BomUtilWh {
BOMCONTENTS.addElement("QUANTITY").setText(properties[3]); BOMCONTENTS.addElement("QUANTITY").setText(properties[3]);
BOMCONTENTS.addElement("QUIT") BOMCONTENTS.addElement("QUIT")
.setText(pRev.getItem().getTCProperty("zt2_unit").getStringValue().toUpperCase()); .setText(pRev.getItem().getTCProperty("zt2_unit").getStringValue().toUpperCase());
BOMCONTENTS.addElement("UID").setText(pRev.getUid());
BOMCONTENTS.addElement("BATCHNUMBER").setText(batchNum);
Element SONLIST = BOMCONTENTS.addElement("SONLIST"); Element SONLIST = BOMCONTENTS.addElement("SONLIST");
// 获取工艺信息 BOPLIST BOPCONTENTS ()二级工序下的辅料放到子件 // 获取工艺信息 BOPLIST BOPCONTENTS ()二级工序下的辅料放到子件
String maxSeq = "10"; String maxSeq = "10";
@ -1332,7 +1310,11 @@ public class BomUtilWh {
material_revs.put(properties2[2], rev2); material_revs.put(properties2[2], rev2);
} }
expandAllBomPart(expands, line2, rev2, groupName, wbsList, session, now, needTCM_meops, gy_meops, expandAllBomPart(expands, line2, rev2, groupName, wbsList, session, now, needTCM_meops, gy_meops,
INTERGRATIONLIST, errMessage, txtPath, material_revs, batchNum); INTERGRATIONLIST, errMessage, txtPath, material_revs);
// if (!KUtil.isEmpty(zt2_materialNo)) {
// material_revs.put(zt2_materialNo, part2Rev);
// }
} }
AIFComponentContext[] meops = pRev.whereReferencedByTypeRelation(new String[] { "MEProcessRevision" }, AIFComponentContext[] meops = pRev.whereReferencedByTypeRelation(new String[] { "MEProcessRevision" },
new String[] { "IMAN_METarget" }); new String[] { "IMAN_METarget" });
@ -1548,7 +1530,7 @@ public class BomUtilWh {
TCComponentItemRevision pRev, String groupName, List<String> wbsList, TCSession session, String now, TCComponentItemRevision pRev, String groupName, List<String> wbsList, TCSession session, String now,
List<TCComponentMEProcessRevision> needTCM_meops, Map<String, TCComponent> gy_meops, List<TCComponentMEProcessRevision> needTCM_meops, Map<String, TCComponent> gy_meops,
Element INTERGRATIONLIST, StringBuffer errMessage, String txtPath, Element INTERGRATIONLIST, StringBuffer errMessage, String txtPath,
Map<String, TCComponentItemRevision> material_revs, String batchNum) { Map<String, TCComponentItemRevision> material_revs) {
try { try {
String uid = pBomLine.getUid(); String uid = pBomLine.getUid();
@ -1639,10 +1621,6 @@ public class BomUtilWh {
BOMCONTENTS.addElement("QUANTITY").setText(properties[3]); BOMCONTENTS.addElement("QUANTITY").setText(properties[3]);
BOMCONTENTS.addElement("QUIT") BOMCONTENTS.addElement("QUIT")
.setText(pRev.getItem().getTCProperty("zt2_unit").getStringValue().toUpperCase()); .setText(pRev.getItem().getTCProperty("zt2_unit").getStringValue().toUpperCase());
//新增字段UID和批次号
BOMCONTENTS.addElement("UID").setText(pRev.getUid());
BOMCONTENTS.addElement("BATCHNUMBER").setText(batchNum);
Element SONLIST = BOMCONTENTS.addElement("SONLIST"); Element SONLIST = BOMCONTENTS.addElement("SONLIST");
// 获取工艺信息 BOPLIST BOPCONTENTS ()二级工序下的辅料放到子件 // 获取工艺信息 BOPLIST BOPCONTENTS ()二级工序下的辅料放到子件
String maxSeq = "10"; String maxSeq = "10";
@ -1687,7 +1665,7 @@ public class BomUtilWh {
material_revs.put(properties2[2], rev2); material_revs.put(properties2[2], rev2);
} }
expandAllBomPart(expands, line2, rev2, groupName, wbsList, session, now, needTCM_meops, gy_meops, expandAllBomPart(expands, line2, rev2, groupName, wbsList, session, now, needTCM_meops, gy_meops,
INTERGRATIONLIST, errMessage, txtPath, material_revs, batchNum); INTERGRATIONLIST, errMessage, txtPath, material_revs);
} }
AIFComponentContext[] meops = pRev.whereReferencedByTypeRelation(new String[] { "MEProcessRevision" }, AIFComponentContext[] meops = pRev.whereReferencedByTypeRelation(new String[] { "MEProcessRevision" },

@ -18,7 +18,6 @@ import com.connor.chint.sap2.util.MyProgressBarCompent;
import com.connor.chint.sap2.util.SAPMessageUtil; import com.connor.chint.sap2.util.SAPMessageUtil;
import com.connor.chint.sap2.util.SAPMessageUtilFram; import com.connor.chint.sap2.util.SAPMessageUtilFram;
import com.connor.chint.sap2.util.SAPUtil; import com.connor.chint.sap2.util.SAPUtil;
import com.connor.chint.sap2.util.SqlUtil;
import com.connor.chint.sap2.util.TXTUtil; import com.connor.chint.sap2.util.TXTUtil;
import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.AbstractAIFOperation; import com.teamcenter.rac.aif.AbstractAIFOperation;
@ -41,246 +40,202 @@ import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData; import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData;
public class BomSapWhBjOp extends AbstractAIFOperation { public class BomSapWhBjOp extends AbstractAIFOperation {
private SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd-HHmmss"); private SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd-HHmmss");
private AbstractAIFApplication app; private AbstractAIFApplication app;
private TCSession session; private TCSession session;
private SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); private SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
private String now; private String now;
private String groupName = ""; private String groupName = "";
private TCComponentItemType ccomponentitemtype; private TCComponentItemType ccomponentitemtype;
public BomSapWhBjOp(AbstractAIFApplication app) {
public BomSapWhBjOp(AbstractAIFApplication app) { // TODO Auto-generated constructor stub
// TODO Auto-generated constructor stub this.app = app;
this.app = app; this.session = (TCSession) app.getSession();
this.session = (TCSession) app.getSession(); now = format.format(new Date());
now = format.format(new Date()); try {
try { ccomponentitemtype = (TCComponentItemType)session.getTypeComponent("ZT2_Design3D");
ccomponentitemtype = (TCComponentItemType) session.getTypeComponent("ZT2_Design3D"); } catch (TCException e) {
} catch (TCException e) { // TODO Auto-generated catch block
// TODO Auto-generated catch block e.printStackTrace();
e.printStackTrace(); }
}
}
}
public List<TCComponentItem> getCPPPRevision(TCComponentItemRevision rev2) throws TCException {
public List<TCComponentItem> getCPPPRevision(TCComponentItemRevision rev2) throws TCException {
List<TCComponentItem> itemList = new ArrayList<>();
List<TCComponentItem> itemList = new ArrayList<>(); List<TCComponentItem> itemPList = new ArrayList<>();
List<TCComponentItem> itemPList = new ArrayList<>(); String id = "1ZDB300000P-";
String id = "1ZDB300000P-"; if(rev2.getType().equals("Part Revision")) {
if (rev2.getType().equals("Part Revision")) { String desc = rev2.getStringProperty("object_desc");
String desc = rev2.getStringProperty("object_desc"); String[] split = desc.split(" ");
String[] split = desc.split(" "); if(split.length>=2) {
if (split.length >= 2) { String[] split2 = split[1].split("-");
String[] split2 = split[1].split("-"); if(split2.length==2) {
if (split2.length == 2) { id = id + split2[1];
id = id + split2[1]; }else if(split2.length==3) {
} else if (split2.length == 3) { id = id + split2[2];
id = id + split2[2]; }
} }
} }else if(rev2.getType().equals("ZT2_Design3DRevision")) {
} else if (rev2.getType().equals("ZT2_Design3DRevision")) { String desc = rev2.getStringProperty("item_id");
String desc = rev2.getStringProperty("item_id"); String[] split2 = desc.split("-");
String[] split2 = desc.split("-"); if(split2.length==2) {
if (split2.length == 2) { id = id + split2[1];
id = id + split2[1]; }else if(split2.length==3) {
} else if (split2.length == 3) { id = id + split2[2];
id = id + split2[2]; }
} }
} System.out.print("id===>"+id);
System.out.print("id===>" + id); TCComponentItem find = ccomponentitemtype.find(id);
TCComponentItem find = ccomponentitemtype.find(id); TCComponentItemRevision zztRev = find.getLatestItemRevision();
TCComponentItemRevision zztRev = find.getLatestItemRevision(); TCComponent[] matnrs = zztRev.getRelatedComponents("representation_for");
TCComponent[] matnrs = zztRev.getRelatedComponents("representation_for"); for(TCComponent matnr:matnrs) {
for (TCComponent matnr : matnrs) { String[] properties = matnr.getProperties(new String[]{"zt2_ifpbom"});
String[] properties = matnr.getProperties(new String[] { "zt2_ifpbom" }); TCComponentItemRevision revItem = (TCComponentItemRevision)matnr;
TCComponentItemRevision revItem = (TCComponentItemRevision) matnr; TCComponentItem item = revItem.getItem();
TCComponentItem item = revItem.getItem(); if(properties[0].equals("P") && !itemPList.contains(item)) {
if (properties[0].equals("P") && !itemPList.contains(item)) { itemPList.add(item);
itemPList.add(item); }else if(!itemList.contains(item)){
} else if (!itemList.contains(item)) { itemList.add(item);
itemList.add(item); }
} }
} if(itemPList.size()>0) {
if (itemPList.size() > 0) { return itemPList;
return itemPList; }
} return itemList;
return itemList;
}
} public TCComponentItemRevision getPRevision(TCComponentItemRevision rev2) throws TCException {
public TCComponentItemRevision getPRevision(TCComponentItemRevision rev2) throws TCException { String zt2_MaterialNo = rev2.getStringProperty("zt2_MaterialNo");
if(rev2.getType().equals("Part Revision")) {
String zt2_MaterialNo = rev2.getStringProperty("zt2_MaterialNo"); String zt2_ifpbom = rev2.getProperty("zt2_ifpbom");
if (rev2.getType().equals("Part Revision")) { if(zt2_ifpbom.equals("P")) {
String zt2_ifpbom = rev2.getProperty("zt2_ifpbom"); return rev2;
if (zt2_ifpbom.equals("P")) { }else {
return rev2; TCComponent designRev = rev2.getRelatedComponent("TC_Is_Represented_By");
} else { if(designRev!=null) {
TCComponent designRev = rev2.getRelatedComponent("TC_Is_Represented_By"); TCComponent[] matnrs = designRev.getRelatedComponents("representation_for");
if (designRev != null) { for(TCComponent matnr:matnrs) {
TCComponent[] matnrs = designRev.getRelatedComponents("representation_for"); String[] properties = matnr.getProperties(new String[]{"zt2_ifpbom","zt2_MaterialNo"});
for (TCComponent matnr : matnrs) { if(properties[1].equals(zt2_MaterialNo) && properties[0].equals("P")) {
String[] properties = matnr.getProperties(new String[] { "zt2_ifpbom", "zt2_MaterialNo" }); return (TCComponentItemRevision)matnr;
if (properties[1].equals(zt2_MaterialNo) && properties[0].equals("P")) { }
return (TCComponentItemRevision) matnr; }
} }
} }
} }else if(rev2.getType().equals("ZT2_Design3DRevision")) {
} TCComponent[] matnrs = rev2.getRelatedComponents("representation_for");
} else if (rev2.getType().equals("ZT2_Design3DRevision")) { for(TCComponent matnr:matnrs) {
TCComponent[] matnrs = rev2.getRelatedComponents("representation_for"); String[] properties = matnr.getProperties(new String[]{"zt2_ifpbom","zt2_MaterialNo"});
for (TCComponent matnr : matnrs) { if(properties[0].equals("P")) {
String[] properties = matnr.getProperties(new String[] { "zt2_ifpbom", "zt2_MaterialNo" }); return (TCComponentItemRevision)matnr;
if (properties[0].equals("P")) { }
return (TCComponentItemRevision) matnr; }
} return (TCComponentItemRevision)matnrs[0];
} }
return (TCComponentItemRevision) matnrs[0]; return rev2;
}
return rev2; }
public static String getXML(){
}
public static String getXML() {
String soapXML = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:chintelectric.com:xi:plm\">\r\n" String soapXML = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:chintelectric.com:xi:plm\">\r\n"
+ " <soapenv:Header/>\r\n" + " <soapenv:Body>\r\n" + " <urn:MT_MATERIAL_BOP_REQ>\r\n" + " <soapenv:Header/>\r\n"
+ " </urn:MT_MATERIAL_BOP_REQ>\r\n" + " </soapenv:Body>\r\n" + "</soapenv:Envelope>"; + " <soapenv:Body>\r\n"
+ " <urn:MT_MATERIAL_BOP_REQ>\r\n"
+ " </urn:MT_MATERIAL_BOP_REQ>\r\n"
+ " </soapenv:Body>\r\n"
+ "</soapenv:Envelope>";
return soapXML; return soapXML;
} }
@Override
@Override public void executeOperation() throws Exception {
public void executeOperation() throws Exception { // TODO Auto-generated method stub
// TODO Auto-generated method stub MyProgressBarCompent comp = null;
MyProgressBarCompent comp = null; try {
try { groupName = SAPUtil.getGroupID(session);
if (KUtil.isEmpty(groupName) || groupName.equalsIgnoreCase("dba")) {
String strs[] = session.getPreferenceService().getStringValues("database_tc"); MessageBox.post("当前登录组[" + groupName + "]不可使用该功能", "", MessageBox.INFORMATION);
if (SqlUtil.getTCDataConnection(strs) == null) { return;
MessageBox.post("数据库连接失败,请检查首选项<database_tc>", "", 2); }
return;
} InterfaceAIFComponent target = app.getTargetComponent();
String code = BomUtilWh.getCode().toString(); if (target == null) {
MessageBox.post("请选择图纸版本", "", MessageBox.INFORMATION);
return;
String batchNum = code + "-00001"; }
TCComponentItemRevision degignRev = null;
groupName = SAPUtil.getGroupID(session); // String bmeng = "1";
if (KUtil.isEmpty(groupName) || groupName.equalsIgnoreCase("dba")) { if (target.getType().equals("ZT2_Design3DRevision")) {
MessageBox.post("当前登录组[" + groupName + "]不可使用该功能", "", MessageBox.INFORMATION); degignRev = (TCComponentItemRevision) target;
return;
} } else if (target.getType().equals("Part Revision")) {
degignRev = (TCComponentItemRevision) target;
InterfaceAIFComponent target = app.getTargetComponent(); // bmeng = SAPUtil.getSAPBMENG(degignRev);
if (target == null) { } else {
MessageBox.post("请选择图纸版本", "", MessageBox.INFORMATION); MessageBox.post("请选择图纸/物料版本", "", MessageBox.INFORMATION);
return; return;
} }
TCComponentItemRevision degignRev = null;
// String bmeng = "1"; comp = new MyProgressBarCompent("", "正在进行部件BOM传递SAP....");
if (target.getType().equals("ZT2_Design3DRevision")) { TCComponentItemRevision pRevision = getPRevision(degignRev); //获取PBOM
degignRev = (TCComponentItemRevision) target; List<TCComponentItem> cppRevision = getCPPPRevision(degignRev);
//获取产成品
} else if (target.getType().equals("Part Revision")) { System.out.println("cppRevision===>"+cppRevision.toString());
degignRev = (TCComponentItemRevision) target; List<String> wbsList = new ArrayList<String>();
// bmeng = SAPUtil.getSAPBMENG(degignRev);
} else { StringBuffer errMessage = new StringBuffer("");
MessageBox.post("请选择图纸/物料版本", "", MessageBox.INFORMATION);
return; BomUtilWh.checkMatnr(errMessage, pRevision);
}
TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
comp = new MyProgressBarCompent("", "正在进行部件BOM传递SAP...."); TCComponentBOMWindow win = bomWinType.create(null);
TCComponentItemRevision pRevision = getPRevision(degignRev); // 获取PBOM TCComponentBOMLine setWindowTopLine = win.setWindowTopLine(pRevision.getItem(), pRevision, null, null);
List<TCComponentItem> cppRevision = getCPPPRevision(degignRev); //优化项BOM全展开
// 获取产成品 System.out.println("BOM全展开");
System.out.println("cppRevision===>" + cppRevision.toString()); Map<String, TCComponent> gy_meops = new HashMap<>(32);
//记录SUM表信息 String txtName = format2.format(new Date()) + getUserName(session);
String userName = session.getUser().getProperty("user_name"); String txtPath = TXTUtil.createTxt(txtName);
String dataTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
// String zt2_WBSNo = project.getStringProperty("zt2_WBSNo"); Document document = DocumentHelper.parseText(getXML());
// String object_name = project.getStringProperty("object_name"); Element rootElement = document.getRootElement();
String userId = session.getUser().getUserId(); Element body = rootElement.element("Body");
// String code = BomUtilWh.getCode().toString(); Element element = body.element("MT_MATERIAL_BOP_REQ");
StringBuilder productNosBuild = new StringBuilder(""); Element INTERGRATIONLIST = element.addElement("INTERGRATIONLIST");
StringBuilder productUidsBuild = new StringBuilder(""); Map<String, ExpandPSData[]> bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(setWindowTopLine);
for(TCComponentItem cppItem:cppRevision) { List<TCComponentMEProcessRevision> needTCM_meops = new ArrayList<TCComponentMEProcessRevision>();
TCComponentItemRevision latestItemRevision = cppItem.getLatestItemRevision(); Map<String, TCComponentItemRevision> material_revs = new HashMap<>();
String property = latestItemRevision.getProperty(BomUtilWh.ZT2_MATERIALNO); BomUtilWh.expandAllBomPartBj(bomLineTree, setWindowTopLine, pRevision,
productNosBuild.append(property).append(";"); groupName,wbsList,session,now,needTCM_meops,gy_meops,INTERGRATIONLIST,errMessage,cppRevision,txtPath,material_revs);
productUidsBuild.append(latestItemRevision.getUid()).append(";"); System.out.println("BOM全document===>"+document.asXML());
} if(errMessage.length()>0) {
String substring = productUidsBuild.toString().substring(0, productUidsBuild.length() - 1); TXTUtil.writeTXT(txtPath, "----------------BOM异常--------------");
String serverHostname = session.getServerHostname(); TXTUtil.writeTXT(txtPath, errMessage.toString());
String wbsNo = cppRevision.get(0).getLatestItemRevision().getProperty(BomUtilWh.ZT2_WBSNO); TXTUtil.writeTXT(txtPath, "----------BOM信息-----------");
SqlUtil.write(BomUtilWh.detailsSql, new String[] { code, "M060", userName, dataTime, wbsNo, new SAPMessageUtilFram("", "BOM传递SAP异常:\n" + errMessage.toString()).show();
"", "部件传递", substring, "", serverHostname, userId }); win.close();
}else {
SqlUtil.freeAll(); new BomSendSapOp(session,document.asXML(),txtPath,gy_meops).executeOperation();
List<String> wbsList = new ArrayList<String>(); win.close();
}
StringBuffer errMessage = new StringBuffer(""); if (comp != null) {
comp.setVisible(false);
BomUtilWh.checkMatnr(errMessage, pRevision); }
TCComponentDataset dataset = TXTUtil.createDataset(txtPath, txtName, session);
TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); System.out.println("日志所挂对象:" + pRevision);
TCComponentBOMWindow win = bomWinType.create(null); KUtil.setByPass(true);
TCComponentBOMLine setWindowTopLine = win.setWindowTopLine(pRevision.getItem(), pRevision, null, null); TXTUtil.addTxttoTarget(pRevision, dataset);
// 优化项BOM全展开 MessageBox.post("BOM数据推送完成..","提示",2);
System.out.println("BOM全展开"); } catch (Exception e) {
Map<String, TCComponent> gy_meops = new HashMap<>(32); e.printStackTrace();
} finally {
String txtName = format2.format(new Date()) + getUserName(session); KUtil.setByPass(false);
String txtPath = TXTUtil.createTxt(txtName); }
}
Document document = DocumentHelper.parseText(getXML()); public String getUserName(TCSession session) throws TCException {
Element rootElement = document.getRootElement(); TCComponentUser user = session.getUser();
Element body = rootElement.element("Body"); session.getUserName();
Element element = body.element("MT_MATERIAL_BOP_REQ"); return user.getTCProperty("user_name").getDisplayValue();
Element INTERGRATIONLIST = element.addElement("INTERGRATIONLIST"); }
Map<String, ExpandPSData[]> bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(setWindowTopLine);
List<TCComponentMEProcessRevision> needTCM_meops = new ArrayList<TCComponentMEProcessRevision>();
Map<String, TCComponentItemRevision> material_revs = new HashMap<>();
BomUtilWh.expandAllBomPartBj(bomLineTree, setWindowTopLine, pRevision, groupName, wbsList, session, now,
needTCM_meops, gy_meops, INTERGRATIONLIST, errMessage, cppRevision, txtPath, material_revs, batchNum);
System.out.println("BOM全document===>" + document.asXML());
if (errMessage.length() > 0) {
TXTUtil.writeTXT(txtPath, "----------------BOM异常--------------");
TXTUtil.writeTXT(txtPath, errMessage.toString());
TXTUtil.writeTXT(txtPath, "----------BOM信息-----------");
// BomUtilWh.logXmlMsg(INTERGRATIONLIST, code, productNosBuild.toString(), batchNum, pRevision.getProperty(BomUtilWh.ZT2_WBSNO), session);
new SAPMessageUtilFram("", "BOM传递SAP异常:\n" + errMessage.toString()).show();
win.close();
} else {
//记录产成品的物料编码
// StringBuilder productNosBuild = new StringBuilder("");
// for(TCComponentItem cppItem:cppRevision) {
// String property = cppItem.getLatestItemRevision().getProperty(BomUtilWh.ZT2_MATERIALNO);
// productNosBuild.append(property).append(";");
// }
BomUtilWh.logXmlMsg(INTERGRATIONLIST, code, productNosBuild.toString(), batchNum, wbsNo, session);
new BomSendSapOp(session, document.asXML(), txtPath, gy_meops).executeOperation();
win.close();
}
if (comp != null) {
comp.setVisible(false);
}
TCComponentDataset dataset = TXTUtil.createDataset(txtPath, txtName, session);
System.out.println("日志所挂对象:" + pRevision);
KUtil.setByPass(true);
TXTUtil.addTxttoTarget(pRevision, dataset);
MessageBox.post("BOM数据推送完成..", "提示", 2);
} catch (Exception e) {
e.printStackTrace();
} finally {
KUtil.setByPass(false);
SqlUtil.freeAll();
}
}
public String getUserName(TCSession session) throws TCException {
TCComponentUser user = session.getUser();
session.getUserName();
return user.getTCProperty("user_name").getDisplayValue();
}
} }

@ -32,7 +32,6 @@ import com.connor.chint.sap2.util.KUtil;
import com.connor.chint.sap2.util.MyProgressBarCompent; import com.connor.chint.sap2.util.MyProgressBarCompent;
import com.connor.chint.sap2.util.SAPMessageUtil; import com.connor.chint.sap2.util.SAPMessageUtil;
import com.connor.chint.sap2.util.SAPUtil; import com.connor.chint.sap2.util.SAPUtil;
import com.connor.chint.sap2.util.SqlUtil;
import com.connor.chint.sap2.util.TXTUtil; import com.connor.chint.sap2.util.TXTUtil;
import com.squareup.okhttp.Credentials; import com.squareup.okhttp.Credentials;
import com.squareup.okhttp.MediaType; import com.squareup.okhttp.MediaType;
@ -64,410 +63,374 @@ import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData
public class BomSendSapController { public class BomSendSapController {
public static final String TYPE_REV_PART = "Part Revision"; public static final String TYPE_REV_PART = "Part Revision";
public TCComponent project; // 项目信息 public TCComponent project; //项目信息
public String groupName; public String groupName;
public String zt2_ProjectNo; public String zt2_ProjectNo;
public String wbs; public String wbs;
public AbstractAIFApplication app; public AbstractAIFApplication app;
private TCSession session; private TCSession session;
public List<PartBean> partList = new ArrayList<>(); public List<PartBean> partList = new ArrayList<>();
public BomSendSapWhFram dialog; public BomSendSapWhFram dialog;
private SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd-HHmmss"); private SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd-HHmmss");
public BomSendSapController(BomSendSapWhFram sapzyDialog, AbstractAIFApplication app) {
public BomSendSapController(BomSendSapWhFram sapzyDialog, AbstractAIFApplication app) { this.app = app;
this.app = app; this.session = (TCSession) app.getSession();
this.session = (TCSession) app.getSession(); }
}
// 检查选定项目下是否存在产成品
// 检查选定项目下是否存在产成品 public boolean checkTargets() throws Exception {
public boolean checkTargets() throws Exception { InterfaceAIFComponent target = app.getTargetComponent();
InterfaceAIFComponent target = app.getTargetComponent(); if (target == null || !(target instanceof TCComponent)) {
if (target == null || !(target instanceof TCComponent)) { return false;
return false; }
} project = (TCComponent) target;
project = (TCComponent) target;
zt2_ProjectNo = project.getProperty("zt2_ProjectNo");
zt2_ProjectNo = project.getProperty("zt2_ProjectNo"); wbs = project.getProperty("zt2_WBSNo");
wbs = project.getProperty("zt2_WBSNo"); System.out.println("检查对象:" + target);
System.out.println("检查对象:" + target); List<TCComponentItemRevision> partRevList = KUtil.getCCPFromProject(project);
List<TCComponentItemRevision> partRevList = KUtil.getCCPFromProject(project);
for(TCComponentItemRevision rev:partRevList) {
for (TCComponentItemRevision rev : partRevList) { String cType = rev.getType();
String cType = rev.getType();
// System.out.println(">> 找到子对象:" + cName + "|" + cType); // System.out.println(">> 找到子对象:" + cName + "|" + cType);
if (TYPE_REV_PART.equals(cType)) { if (TYPE_REV_PART.equals(cType)) {
PartBean bean = new PartBean(rev, partList.size() + 1, ""); PartBean bean = new PartBean(rev, partList.size() + 1,"");
SAPPushBOMBean.readUser(bean, rev, groupName, session); SAPPushBOMBean.readUser(bean, rev, groupName, session);
bean.setPSPID(project.getProperty("zt2_ProjectNo")); bean.setPSPID(project.getProperty("zt2_ProjectNo"));
partList.add(bean); partList.add(bean);
} }
} }
if (partList.size() == 0) { if (partList.size() == 0) {
return false; return false;
} }
return true; return true;
} }
public String sapState = ""; public String sapState = "";
private TCComponent released_Red; private TCComponent released_Red;
private TCComponent released_Yellow; private TCComponent released_Yellow;
private TCComponent released_Green; private TCComponent released_Green;
public void getSapState() throws TCException { public void getSapState() throws TCException {
TCComponentListOfValues unitLov = KUtil.getLov(session, "zt2_SapState"); TCComponentListOfValues unitLov = KUtil.getLov(session, "zt2_SapState");
if (unitLov != null) { if (unitLov != null) {
ListOfValuesInfo listOfValues = unitLov.getListOfValues(); ListOfValuesInfo listOfValues = unitLov.getListOfValues();
String[] realval = listOfValues.getStringListOfValues(); String[] realval = listOfValues.getStringListOfValues();
for (int i = 0; i < realval.length; i++) { for (int i = 0; i < realval.length; i++) {
String disval = listOfValues.getDisplayableValue(realval[i]); String disval = listOfValues.getDisplayableValue(realval[i]);
System.out.println("显示值:" + disval + ";真实值:" + realval[i]); System.out.println("显示值:" + disval + ";真实值:" + realval[i]);
if (disval.equals("已传")) { if (disval.equals("已传")) {
sapState = realval[i]; sapState = realval[i];
} }
} }
} }
TCComponentReleaseStatusType releaseType = (TCComponentReleaseStatusType) session TCComponentReleaseStatusType releaseType = (TCComponentReleaseStatusType) session
.getTypeComponent("ReleaseStatus"); .getTypeComponent("ReleaseStatus");
released_Green = releaseType.create("ZT2_Green"); released_Green = releaseType.create("ZT2_Green");
released_Green.save(); released_Green.save();
released_Green.unlock(); released_Green.unlock();
released_Red = releaseType.create("ZT2_Red"); released_Red = releaseType.create("ZT2_Red");
released_Red.save(); released_Red.save();
released_Red.unlock(); released_Red.unlock();
released_Yellow = releaseType.create("ZT2_Yellow"); released_Yellow = releaseType.create("ZT2_Yellow");
released_Yellow.save(); released_Yellow.save();
released_Yellow.unlock(); released_Yellow.unlock();
} }
private SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
private SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
public static String getXML(){
public static String getXML() {
String soapXML = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:chintelectric.com:xi:plm\">\r\n" String soapXML = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:chintelectric.com:xi:plm\">\r\n"
+ " <soapenv:Header/>\r\n" + " <soapenv:Body>\r\n" + " <urn:MT_MATERIAL_BOP_REQ>\r\n" + " <soapenv:Header/>\r\n"
+ " </urn:MT_MATERIAL_BOP_REQ>\r\n" + " </soapenv:Body>\r\n" + "</soapenv:Envelope>"; + " <soapenv:Body>\r\n"
+ " <urn:MT_MATERIAL_BOP_REQ>\r\n"
+ " </urn:MT_MATERIAL_BOP_REQ>\r\n"
+ " </soapenv:Body>\r\n"
+ "</soapenv:Envelope>";
return soapXML; return soapXML;
} }
public TCComponentItemRevision getPRevision(TCComponentItemRevision rev2) throws TCException {
public TCComponentItemRevision getPRevision(TCComponentItemRevision rev2) throws TCException {
String zt2_MaterialNo = rev2.getStringProperty("zt2_MaterialNo");
String zt2_MaterialNo = rev2.getStringProperty("zt2_MaterialNo"); if(rev2.getType().equals("Part Revision")) {
if (rev2.getType().equals("Part Revision")) { String zt2_ifpbom = rev2.getProperty("zt2_ifpbom");
String zt2_ifpbom = rev2.getProperty("zt2_ifpbom"); if(zt2_ifpbom.equals("P")) {
if (zt2_ifpbom.equals("P")) { return rev2;
return rev2; }else {
} else { TCComponent designRev = rev2.getRelatedComponent("TC_Is_Represented_By");
TCComponent designRev = rev2.getRelatedComponent("TC_Is_Represented_By"); if(designRev!=null) {
if (designRev != null) { TCComponent[] matnrs = designRev.getRelatedComponents("representation_for");
TCComponent[] matnrs = designRev.getRelatedComponents("representation_for"); for(TCComponent matnr:matnrs) {
for (TCComponent matnr : matnrs) { String[] properties = matnr.getProperties(new String[]{"zt2_ifpbom","zt2_MaterialNo"});
String[] properties = matnr.getProperties(new String[] { "zt2_ifpbom", "zt2_MaterialNo" }); if(properties[1].equals(zt2_MaterialNo) && properties[0].equals("P")) {
if (properties[1].equals(zt2_MaterialNo) && properties[0].equals("P")) { return (TCComponentItemRevision)matnr;
return (TCComponentItemRevision) matnr; }
} }
} }
} }
} }
} return rev2;
return rev2;
}
} public String getUserName(TCSession session) throws TCException {
TCComponentUser user = session.getUser();
public String getUserName(TCSession session) throws TCException { session.getUserName();
TCComponentUser user = session.getUser(); return user.getTCProperty("user_name").getDisplayValue();
session.getUserName(); }
return user.getTCProperty("user_name").getDisplayValue(); public void sendSap() {
} try {
List<PartBean> selectedParts = getSelectedParts();
public void sendSap() { String now = format.format(new Date());
try { MyProgressBarCompent comp = null;
// try {
String strs[] = session.getPreferenceService().getStringValues("database_tc"); String txtName = format2.format(new Date()) + getUserName(session);
if (SqlUtil.getTCDataConnection(strs) == null) { String txtPath = TXTUtil.createTxt(txtName);
MessageBox.post("数据库连接失败,请检查首选项<database_tc>", "", 2); comp = new MyProgressBarCompent("", "正在进行项目BOM传递......");
return; StringBuffer errMessageAll = new StringBuffer("");
} StringBuffer sendMessageAll = new StringBuffer("");
List<PartBean> selectedParts = getSelectedParts();
// 记录SUM表信息 //2024 1 22新增逻辑往CHINT_BOM_TO_SAP_SUM
String userName = session.getUser().getProperty("user_name"); project.getProperty("zt2_WBSNo");
String dataTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); //产成品BOM组织时除了产成品不同其他相同 BOM结构是一样的
String zt2_WBSNo = project.getStringProperty("zt2_WBSNo"); for(PartBean bean : selectedParts) {
String object_name = project.getStringProperty("object_name");
String userId = session.getUser().getUserId(); Document document = DocumentHelper.parseText(getXML());
String code = BomUtilWh.getCode().toString(); Element rootElement = document.getRootElement();
StringBuilder productNosBuild = new StringBuilder(""); Element body = rootElement.element("Body");
StringBuilder productUidsBuild = new StringBuilder(""); Element element = body.element("MT_MATERIAL_BOP_REQ");
for (PartBean cppItem : selectedParts) { Element INTERGRATIONLIST = element.addElement("INTERGRATIONLIST");
String property = cppItem.part.getProperty(BomUtilWh.ZT2_MATERIALNO);
productNosBuild.append(property).append(";"); TCComponentItemRevision rev2 = getPRevision(bean.part);
productUidsBuild.append(cppItem.part.getUid()).append(";");
} StringBuffer errMessage = new StringBuffer("");
String substring = productUidsBuild.toString().substring(0, productUidsBuild.length() - 1);
String serverHostname = session.getServerHostname();
SqlUtil.write(BomUtilWh.detailsSql, new String[] { code, "M060", userName, dataTime, zt2_WBSNo, object_name,
"产成品传递", substring, project.getUid(), serverHostname, userId });
SqlUtil.freeAll();
// 存在多个产成品时 下面的PBOM是一样的只需要记录一次日志新的
boolean flag = true;
String batchNum = code + "-00001";
String now = format.format(new Date());
MyProgressBarCompent comp = null;
String txtName = format2.format(new Date()) + getUserName(session);
String txtPath = TXTUtil.createTxt(txtName);
comp = new MyProgressBarCompent("", "正在进行项目BOM传递......");
StringBuffer errMessageAll = new StringBuffer("");
StringBuffer sendMessageAll = new StringBuffer("");
// 2024 1 22新增逻辑往CHINT_BOM_TO_SAP_SUM
// project.getProperty("zt2_WBSNo");
// 产成品BOM组织时除了产成品不同其他相同 BOM结构是一样的
// 记录产成品的物料编码
for (PartBean bean : selectedParts) {
Document document = DocumentHelper.parseText(getXML());
Element rootElement = document.getRootElement();
Element body = rootElement.element("Body");
Element element = body.element("MT_MATERIAL_BOP_REQ");
Element INTERGRATIONLIST = element.addElement("INTERGRATIONLIST");
TCComponentItemRevision rev2 = getPRevision(bean.part);
StringBuffer errMessage = new StringBuffer("");
// BomUtilWh.checkMatnr(errMessage, rev2); // BomUtilWh.checkMatnr(errMessage, rev2);
TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow win = bomWinType.create(null); TCComponentBOMWindow win = bomWinType.create(null);
TCComponentBOMLine setWindowTopLine = win.setWindowTopLine(rev2.getItem(), rev2, null, null); TCComponentBOMLine setWindowTopLine = win.setWindowTopLine(rev2.getItem(), rev2, null, null);
// 优化项BOM全展开 //优化项BOM全展开
System.out.println("BOM全展开"); System.out.println("BOM全展开");
Map<String, TCComponent> gy_meops = new HashMap<>(32); Map<String, TCComponent> gy_meops = new HashMap<>(32);
List<TCComponentMEProcessRevision> needTCM_meops = new ArrayList<TCComponentMEProcessRevision>(); List<TCComponentMEProcessRevision> needTCM_meops = new ArrayList<TCComponentMEProcessRevision>();
// 三种情况有PBOM传PDBOM没PBOM传EBOM没EBOM传图纸BOM //三种情况有PBOM传PDBOM没PBOM传EBOM没EBOM传图纸BOM
Map<String, ExpandPSData[]> bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(setWindowTopLine); Map<String, ExpandPSData[]> bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(setWindowTopLine);
List<String> wbsList = new ArrayList<String>(); List<String> wbsList = new ArrayList<String>();
// 记录物料图纸关系的集合 // 记录物料图纸关系的集合
Map<String, TCComponentItemRevision> material_revs = new HashMap<>(); Map<String, TCComponentItemRevision> material_revs = new HashMap<>();
// 2024 1 24 新加字段 UID 和 BATCHNUMBER BomUtilWh.expandAllBomPart(bomLineTree, setWindowTopLine, rev2,
BomUtilWh.expandAllBomPart(bomLineTree, setWindowTopLine, rev2, groupName, wbsList, session, now, groupName,wbsList,session,now,needTCM_meops,gy_meops,INTERGRATIONLIST,errMessage,txtPath,material_revs);
needTCM_meops, gy_meops, INTERGRATIONLIST, errMessage, txtPath, material_revs, batchNum); System.out.println("BOM全document===>"+document.asXML());
System.out.println("BOM全document===>" + document.asXML()); if(errMessage.length()>0) {
if (errMessage.length() > 0) { TXTUtil.writeTXT(txtPath, "----------------BOM异常--------------");
TXTUtil.writeTXT(txtPath, "----------------BOM异常--------------"); TXTUtil.writeTXT(txtPath, errMessage.toString());
TXTUtil.writeTXT(txtPath, errMessage.toString()); TXTUtil.writeTXT(txtPath, "----------BOM信息-----------");
TXTUtil.writeTXT(txtPath, "----------BOM信息-----------"); errMessageAll.append(errMessage);
errMessageAll.append(errMessage);
// new SAPMessageUtil("", "BOM传递SAP异常:\n" + errMessage.toString()); // new SAPMessageUtil("", "BOM传递SAP异常:\n" + errMessage.toString());
win.close(); win.close();
} else { }else {
// new BomSendSapOp(session,document.asXML(),txtPath,gy_meops).executeOperation(); // new BomSendSapOp(session,document.asXML(),txtPath,gy_meops).executeOperation();
// 记录XML信息到CHINT_BOM_TO_SAP_DETIALS //记录XML信息到CHINT_BOM_TO_SAP_DETIALS
if (flag) {
flag = false; sendMessageAll.append(SendToSap(txtPath,document.asXML()));
BomUtilWh.logXmlMsg(INTERGRATIONLIST, code, productNosBuild.toString(), batchNum, wbs, session); win.close();
} }
sendMessageAll.append(SendToSap(txtPath, document.asXML())); TCComponentDataset dataset = TXTUtil.createDataset(txtPath, txtName, session);
win.close(); System.out.println("日志所挂对象:" + rev2);
} KUtil.setByPass(true);
TCComponentDataset dataset = TXTUtil.createDataset(txtPath, txtName, session); TXTUtil.addTxttoTarget(rev2, dataset);
System.out.println("日志所挂对象:" + rev2); KUtil.setByPass(false);
KUtil.setByPass(true); }
TXTUtil.addTxttoTarget(rev2, dataset); if(comp!=null) {
KUtil.setByPass(false); comp.setVisible(false);
} }
if (comp != null) { if(errMessageAll.length()>0) {
comp.setVisible(false); new SAPMessageUtil("", "BOM传递SAP异常:\n" + errMessageAll.toString());
} }else if(sendMessageAll.length()>0) {
if (errMessageAll.length() > 0) { new SAPMessageUtil("", "BOM推送异常:\n" + sendMessageAll.toString());
new SAPMessageUtil("", "BOM传递SAP异常:\n" + errMessageAll.toString()); }else {
} else if (sendMessageAll.length() > 0) { MessageBox.post("BOM数据推送完成..","提示",2);
new SAPMessageUtil("", "BOM推送异常:\n" + sendMessageAll.toString()); }
} else { } catch (Exception e) {
MessageBox.post("BOM数据推送完成..", "提示", 2); // TODO Auto-generated catch block
} e.printStackTrace();
} catch (Exception e) { }
// TODO Auto-generated catch block
e.printStackTrace(); }
} finally {
SqlUtil.freeAll(); public List<PartBean> getSelectedParts() throws Exception {
} List<PartBean> selectedParts = new ArrayList<>();
int rowCnt = dialog.t_part.getRowCount();
} for (int i = 0; i < rowCnt; i++) {
System.out.println(dialog.t_part.getValueAt(i, 0));
public List<PartBean> getSelectedParts() throws Exception { if ("true".equals(dialog.t_part.getValueAt(i, 0).toString())) {
List<PartBean> selectedParts = new ArrayList<>(); PartBean bean = (PartBean) dialog.t_part.getValueAt(i, 5);
int rowCnt = dialog.t_part.getRowCount(); System.out.println("准备传递对象:" + bean);
for (int i = 0; i < rowCnt; i++) { if (bean != null) {
System.out.println(dialog.t_part.getValueAt(i, 0)); /*
if ("true".equals(dialog.t_part.getValueAt(i, 0).toString())) { * if(bean.factoryNo==null) { throw new Exception("对象<"+bean.part+">没有找到出厂编号");
PartBean bean = (PartBean) dialog.t_part.getValueAt(i, 5); * }
System.out.println("准备传递对象:" + bean); */
if (bean != null) { selectedParts.add(bean);
/* }
* if(bean.factoryNo==null) { throw new Exception("对象<"+bean.part+">没有找到出厂编号"); }
* } }
*/ return selectedParts;
selectedParts.add(bean); }
}
} public StringBuffer SendToSap(String txtPath,String wsdlString) throws IOException {
}
return selectedParts;
}
public StringBuffer SendToSap(String txtPath, String wsdlString) throws IOException {
// new BomSendSapOp(session,document.asXML(),txtPath,gy_meops).executeOperation(); // new BomSendSapOp(session,document.asXML(),txtPath,gy_meops).executeOperation();
TXTUtil.writeTXT(txtPath, "----------------BOM传递数据--------------"); TXTUtil.writeTXT(txtPath, "----------------BOM传递数据--------------");
TXTUtil.writeTXT(txtPath, wsdlString); TXTUtil.writeTXT(txtPath, wsdlString);
TXTUtil.writeTXT(txtPath, "----------BOM传递数据-----------"); TXTUtil.writeTXT(txtPath, "----------BOM传递数据-----------");
// 推送SAP //推送SAP
String[] stringValues = session.getPreferenceService().getStringValues("CHINT_WhBomUrl_YB"); String[] stringValues = session.getPreferenceService().getStringValues("CHINT_WhBomUrl");
String sapUrl = ""; String sapUrl = "";
String momUrl = ""; String momUrl = "";
for (String stringValue : stringValues) { for(String stringValue:stringValues) {
if (stringValue.startsWith("SAP:1=")) { if(stringValue.startsWith("SAP:1=")) {
sapUrl = stringValue.replaceAll("SAP:1=", ""); sapUrl = stringValue.replaceAll("SAP:1=", "");
} else if (stringValue.startsWith("MOM:1=")) { }else if(stringValue.startsWith("MOM:1=")) {
momUrl = stringValue.replaceAll("MOM:1=", ""); momUrl = stringValue.replaceAll("MOM:1=", "");
} }
} }
StringBuffer sendSap = sendSap(sapUrl, wsdlString, txtPath); StringBuffer sendSap = sendSap(sapUrl,wsdlString,txtPath);
StringBuffer sendMom = sendMom(momUrl, wsdlString, txtPath); StringBuffer sendMom = sendMom(momUrl,wsdlString,txtPath);
StringBuffer errBuffer = new StringBuffer(""); StringBuffer errBuffer = new StringBuffer("");
if (sendSap.length() > 0) { if(sendSap.length()>0) {
errBuffer.append("推送SAP异常:").append("\n"); errBuffer.append("推送SAP异常:").append("\n");
errBuffer.append(sendSap); errBuffer.append(sendSap);
// new SAPMessageUtil("", "s:\n" + errBuffer.toString()); //new SAPMessageUtil("", "s:\n" + errBuffer.toString());
} }
if (sendMom.length() > 0) { if(sendMom.length()>0) {
errBuffer.append("推送MOM异常:").append("\n"); errBuffer.append("推送MOM异常:").append("\n");
errBuffer.append(sendMom); errBuffer.append(sendMom);
} }
// if(errBuffer.length()>0) { // if(errBuffer.length()>0) {
// new SAPMessageUtil("", "推送结果异常:\n" + errBuffer.toString()); // new SAPMessageUtil("", "推送结果异常:\n" + errBuffer.toString());
// } // }
return errBuffer; return errBuffer;
} }
public StringBuffer sendSap(String url,String wsdlString,String txtPath) throws IOException {
public StringBuffer sendSap(String url, String wsdlString, String txtPath) throws IOException {
StringBuffer errBuffer = new StringBuffer("");
StringBuffer errBuffer = new StringBuffer(""); if(!url.contains("http")) {
if (!url.contains("http")) { return errBuffer;
return errBuffer; }
} OkHttpClient client = new OkHttpClient();
OkHttpClient client = new OkHttpClient(); client.setConnectTimeout(100, TimeUnit.SECONDS);
client.setConnectTimeout(100, TimeUnit.SECONDS); client.setReadTimeout(100, TimeUnit.SECONDS);
client.setReadTimeout(100, TimeUnit.SECONDS);
// Authenticator authenticator = client.setAuthenticator(new Au); // Authenticator authenticator = client.setAuthenticator(new Au);
String credential = "";// Credentials.basic("shpodev", "sap@2019"); String credential = "";//Credentials.basic("shpodev", "sap@2019");
if (url.contains("192.168.0.184") || url.contains("gfpot01")) { if(url.contains("192.168.0.184")) {
credential = Credentials.basic("po_rfc", "1qaz!QAZ"); credential = Credentials.basic("shpodev", "sap@2019");
} else { }else {
credential = Credentials.basic("shplm", "sap@2019"); credential = Credentials.basic("shplm", "sap@2019");
} }
MediaType mediaType = MediaType.parse("application/xml"); MediaType mediaType = MediaType.parse("application/xml");
RequestBody body = RequestBody.create(mediaType, wsdlString); RequestBody body = RequestBody.create(mediaType,wsdlString);
// http://192.168.0.184:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_CHINT_ELECTRIC&receiverParty=&receiverService=&interface=SIO_MATERIAL_BOP_PLM_SYN&interfaceNamespace=urn:chintelectric.com:xi:plm //http://192.168.0.184:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_CHINT_ELECTRIC&receiverParty=&receiverService=&interface=SIO_MATERIAL_BOP_PLM_SYN&interfaceNamespace=urn:chintelectric.com:xi:plm
Request request = new Request.Builder().url(url).method("POST", body).header("Authorization", credential) Request request = new Request.Builder()
.addHeader("Content-Type", "application/xml").build(); .url(url)
Response response = client.newCall(request).execute(); .method("POST", body)
Document document = null; .header("Authorization", credential)
.addHeader("Content-Type", "application/xml")
try { .build();
String string = response.body().string(); Response response = client.newCall(request).execute();
Document document = null;
try {
String string = response.body().string();
// System.out.println("response.body().string()==>"+string); // System.out.println("response.body().string()==>"+string);
TXTUtil.writeTXT(txtPath, "----------------BOM传递SAP结果--------------"); TXTUtil.writeTXT(txtPath, "----------------BOM传递SAP结果--------------");
TXTUtil.writeTXT(txtPath, string); TXTUtil.writeTXT(txtPath, string);
TXTUtil.writeTXT(txtPath, "----------BOM传递SAP结果-----------"); TXTUtil.writeTXT(txtPath, "----------BOM传递SAP结果-----------");
// document = DocumentHelper.parseText(string); document = DocumentHelper.parseText(string);
// Element rootElement = document.getRootElement(); Element rootElement = document.getRootElement();
// Element bodys = rootElement.element("Body"); Element bodys = rootElement.element("Body");
// Element elements = bodys.element("MT_MATERIAL_BOP_RSP"); Element elements = bodys.element("MT_MATERIAL_BOP_RSP");
//// String attributeValue = elements.get(0).attributeValue("CODE"); // String attributeValue = elements.get(0).attributeValue("CODE");
// List<Element> ztable = elements.elements("ZTABLE_RETURN"); List<Element> ztable = elements.elements("ZTABLE_RETURN");
// for (Element zret : ztable) { for(Element zret:ztable) {
// String status = zret.elementText("TYPE"); String status = zret.elementText("TYPE");
// if (status.equals("E")) { if(status.equals("E")) {
// String attributeValue = zret.elementText("MESSAGE"); String attributeValue = zret.elementText("MESSAGE");
// String MATNR = zret.elementText("MATNR"); String MATNR = zret.elementText("MATNR");
// if (MATNR != null) { if(MATNR!=null) {
// attributeValue = attributeValue + ",在" + MATNR + "BOM中"; attributeValue = attributeValue+",在"+MATNR+"BOM中";
// } }
//// String gbk = new String(attributeValue.getBytes("GBK"), "UTF-8"); // String gbk = new String(attributeValue.getBytes("GBK"), "UTF-8");
// System.out.println(attributeValue); System.out.println(attributeValue);
// errBuffer.append(attributeValue).append("\n"); errBuffer.append(attributeValue).append("\n");
// } }
// } }
} catch (Exception e) { } catch (DocumentException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
return errBuffer; return errBuffer;
// if(errBuffer.length()>0) { // if(errBuffer.length()>0) {
// new SAPMessageUtil("", "BOM物料异常:\n" + errBuffer.toString()); // new SAPMessageUtil("", "BOM物料异常:\n" + errBuffer.toString());
// } // }
} }
public String sendJsonHttpPost(String url, String xmlContent,String txtPath) {
public String sendJsonHttpPost(String url, String xmlContent, String txtPath) { CloseableHttpClient httpclient = HttpClients.createDefault();
String responseInfo = null;
try {
HttpPost httpPost = new HttpPost(url);
// 设置请求头部
httpPost.setHeader("Content-Type", "application/xml");
CloseableHttpClient httpclient = HttpClients.createDefault(); // 设置请求体
String responseInfo = null; StringEntity entityReq = new StringEntity(xmlContent, StandardCharsets.UTF_8);
try {
HttpPost httpPost = new HttpPost(url);
// 设置请求头部
httpPost.setHeader("Content-Type", "application/xml");
// 设置请求体 if(url.contains("10.128.11.12")) {
StringEntity entityReq = new StringEntity(xmlContent, StandardCharsets.UTF_8); httpPost.addHeader("Authorization", "Basic MTQyODI0Mjg2NDU2ODMwNzcxNDpkREF3TWpveE1EQXg=");
if (url.contains("10.128.11.12")) {
httpPost.addHeader("Authorization", "Basic MTQyODI0Mjg2NDU2ODMwNzcxNDpkREF3TWpveE1EQXg=");
// http://10.128.11.12:7788/gateway/chint/bop-sync // http://10.128.11.12:7788/gateway/chint/bop-sync
} else { }else {
httpPost.addHeader("Authorization", "Basic MTcxNDkwNTkyNTc2MjUzNTQyNjpkREF3TWpveE1EQXg="); httpPost.addHeader("Authorization", "Basic MTcxNDkwNTkyNTc2MjUzNTQyNjpkREF3TWpveE1EQXg=");
} }
// //
httpPost.setEntity(entityReq); httpPost.setEntity(entityReq);
CloseableHttpResponse response = httpclient.execute(httpPost); CloseableHttpResponse response = httpclient.execute(httpPost);
HttpEntity entity = response.getEntity(); HttpEntity entity = response.getEntity();
int status = response.getStatusLine().getStatusCode(); int status = response.getStatusLine().getStatusCode();
String string = EntityUtils.toString(entity); String string = EntityUtils.toString(entity);
System.out.println("MOM status:" + status + "responseInfo:" + string); System.out.println("MOM status:" + status + "responseInfo:" + string);
TXTUtil.writeTXT(txtPath, "----------------BOM传递MOM结果--------------"); TXTUtil.writeTXT(txtPath, "----------------BOM传递MOM结果--------------");
TXTUtil.writeTXT(txtPath, "MOM status:" + status); TXTUtil.writeTXT(txtPath, "MOM status:" + status);
TXTUtil.writeTXT(txtPath, "responseInfo:" + string); TXTUtil.writeTXT(txtPath, "responseInfo:" + string);
TXTUtil.writeTXT(txtPath, "----------BOM传递MOM结果-----------"); TXTUtil.writeTXT(txtPath, "----------BOM传递MOM结果-----------");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
try { try {
httpclient.close(); httpclient.close();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
return responseInfo; return responseInfo;
} }
public StringBuffer sendMom(String url,String wsdlString,String txtPath) throws IOException {
public StringBuffer sendMom(String url, String wsdlString, String txtPath) throws IOException {
StringBuffer errBuffer = new StringBuffer(""); StringBuffer errBuffer = new StringBuffer("");
if (!url.contains("http")) { if(!url.contains("http")) {
return errBuffer; return errBuffer;
} }
String string = sendJsonHttpPost(url, wsdlString, txtPath); // "http://10.128.11.12:7788/gateway/chint/bop-sync" String string = sendJsonHttpPost(url,wsdlString,txtPath); //"http://10.128.11.12:7788/gateway/chint/bop-sync"
return errBuffer; return errBuffer;
} }
} }

@ -77,8 +77,8 @@ public class BomSendSapOp extends AbstractAIFOperation {
client.setReadTimeout(100, TimeUnit.SECONDS); client.setReadTimeout(100, TimeUnit.SECONDS);
// Authenticator authenticator = client.setAuthenticator(new Au); // Authenticator authenticator = client.setAuthenticator(new Au);
String credential = "";//Credentials.basic("shpodev", "sap@2019"); String credential = "";//Credentials.basic("shpodev", "sap@2019");
if(url.contains("192.168.0.184") || url.contains("gfpot01")) { if(url.contains("192.168.0.184")) {
credential = Credentials.basic("po_rfc", "1qaz!QAZ"); credential = Credentials.basic("shpodev", "sap@2019");
}else { }else {
credential = Credentials.basic("shplm", "sap@2019"); credential = Credentials.basic("shplm", "sap@2019");
} }
@ -100,25 +100,25 @@ public class BomSendSapOp extends AbstractAIFOperation {
TXTUtil.writeTXT(txtPath, "----------------BOM传递SAP结果--------------"); TXTUtil.writeTXT(txtPath, "----------------BOM传递SAP结果--------------");
TXTUtil.writeTXT(txtPath, string); TXTUtil.writeTXT(txtPath, string);
TXTUtil.writeTXT(txtPath, "----------BOM传递SAP结果-----------"); TXTUtil.writeTXT(txtPath, "----------BOM传递SAP结果-----------");
// document = DocumentHelper.parseText(string); document = DocumentHelper.parseText(string);
// Element rootElement = document.getRootElement(); Element rootElement = document.getRootElement();
// Element bodys = rootElement.element("Body"); Element bodys = rootElement.element("Body");
// Element elements = bodys.element("MT_MATERIAL_BOP_RSP"); Element elements = bodys.element("MT_MATERIAL_BOP_RSP");
//// String attributeValue = elements.get(0).attributeValue("CODE"); // String attributeValue = elements.get(0).attributeValue("CODE");
// List<Element> ztable = elements.elements("ZTABLE_RETURN"); List<Element> ztable = elements.elements("ZTABLE_RETURN");
// for(Element zret:ztable) { for(Element zret:ztable) {
// String status = zret.elementText("TYPE"); String status = zret.elementText("TYPE");
// if(status.equals("E")) { if(status.equals("E")) {
// String attributeValue = zret.elementText("MESSAGE"); String attributeValue = zret.elementText("MESSAGE");
// String MATNR = zret.elementText("MATNR"); String MATNR = zret.elementText("MATNR");
// if(MATNR!=null) { if(MATNR!=null) {
// attributeValue = attributeValue+",ÔÚ"+MATNR+"BOMÖÐ"; attributeValue = attributeValue+",ÔÚ"+MATNR+"BOMÖÐ";
// } }
// System.out.println(attributeValue); System.out.println(attributeValue);
// errBuffer.append(attributeValue).append("\n"); errBuffer.append(attributeValue).append("\n");
// } }
// } }
} catch (Exception e) { } catch (DocumentException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
@ -191,7 +191,7 @@ public class BomSendSapOp extends AbstractAIFOperation {
TXTUtil.writeTXT(txtPath, "----------BOM传递数据-----------"); TXTUtil.writeTXT(txtPath, "----------BOM传递数据-----------");
//推送SAP //推送SAP
String[] stringValues = session.getPreferenceService().getStringValues("CHINT_WhBomUrl_YB"); String[] stringValues = session.getPreferenceService().getStringValues("CHINT_WhBomUrl");
String sapUrl = ""; String sapUrl = "";
String momUrl = ""; String momUrl = "";
for(String stringValue:stringValues) { for(String stringValue:stringValues) {

Loading…
Cancel
Save