Compare commits

...

26 Commits
czc ... main

Author SHA1 Message Date
ChenZichaoczc fc7596dfae 修改功能
5 months ago
李建辉 04aff3093f 20250115
5 months ago
李建辉 0dfbaeede6 20250109commit
5 months ago
李建辉 d535b6aa82 202501041
5 months ago
李建辉 01187105a5 20250103
6 months ago
李建辉 bf5a9a54f9 20250102
6 months ago
李建辉 fd63bc99fd 20241225
6 months ago
李建辉 3952e9fd98 20241223
6 months ago
李建辉 07dfccd9b6 20241221
6 months ago
李建辉 6276640680 222
6 months ago
李建辉 670784ab29 111
6 months ago
李建辉 abac41c543 20241218
6 months ago
李建辉 c54c85f5ed Merge branch 'main' of http://yunpi.tpddns.cn:3000/lijh/com.connor.ly.plm.git into main
7 months ago
熊朝柱 317c9cc1b5 Merge pull request '222' (#1) from xcz into main
7 months ago
熊朝柱 7354160b9a 222
7 months ago
熊朝柱 7b35c56dcf 111
7 months ago
熊朝柱 afb644a5ad 原有代码调整界面,新增额定工时计算
7 months ago
熊朝柱 cdffc110ed 20241126
7 months ago
李建辉 abc24fee89 mpart commit
7 months ago
李建辉 56cde5eaed 1
7 months ago
李建辉 53a9af372c mpart修改
7 months ago
李建辉 47864d8feb Merge remote-tracking branch 'origin/ljh' into main
7 months ago
李建辉 4fb130a2eb mpart修改
7 months ago
ChenZichaoczc 9845db1b4a 提取属性到域中
7 months ago
ChenZichaoczc a1b1c57915 Merge remote-tracking branch 'origin/czc' into main
7 months ago
李建辉 2b243c95aa 更新 'plugin.xml'
7 months ago

@ -14,5 +14,361 @@
<classpathentry kind="lib" path="poi_lib/poi-ooxml-schemas-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-scratchpad-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/xmlbeans-2.6.0.jar"/>
<classpathentry kind="lib" path="poi_lib/TcSoaClient_13000.1.0.jar"/>
<classpathentry kind="lib" path="poi_lib/TcSoaCommon_13000.1.0.jar"/>
<classpathentry kind="lib" path="soalib/activation.jar"/>
<classpathentry kind="lib" path="soalib/Ads0SoaAdsFoundationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Ads0SoaAdsFoundationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Aed0SoaStrongModelAutomationElectricDesign_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Ap0SoaStrongModelAdvancePlanner_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Apb0SoaStrongModelAttrParmBase_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Aps0SoaStrongModelApsCore_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Asp0SoaAspectLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Asp0SoaAspectStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Asp0SoaStrongModelAspect_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Att0SoaAttrTargetMgmtLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Att0SoaAttrTargetMgmtStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Att0SoaStrongModelAttrTargetMgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/avalon-framework-4.1.5.jar"/>
<classpathentry kind="lib" path="soalib/Bdo0SoaStrongModelBranchDataOrganization_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Bhv0SoaBranchFoundationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Bhv0SoaBranchFoundationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Bhv0SoaStrongModelBranchfoundation_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Bom0SoaBomCoreLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Bom0SoaBomCoreStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Bom0SoaStrongModelBomManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/CAE0SoaSimProcLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/CAE0SoaSimProcStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/CAE0SoaStrongModelSimProc_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cba1SoaCbaExtLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cba1SoaCbaExtStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cbm0SoaColorBomPmmLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cbm0SoaColorBomPmmStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cbm0SoaStrongModelColorBomPmm_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cdm0SoaContractManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cdm0SoaContractManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cfg0SoaConfiguratorLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cfg0SoaConfiguratorStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cfg0SoaStrongModelConfigurator_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cfg1SoaStrongModelConfigurator_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cfp0SoaStrongModelFeaturePlanning_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Civ0SoaContMgmtS1000D40Loose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Civ0SoaContMgmtS1000D40Strong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cla0SoaClassificationCommonLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cla0SoaClassificationCommonStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Clr0SoaColorAppearanceLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Clr0SoaColorAppearanceStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Clr0SoaStrongModelColorAppearance_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Clr1SoaStrongModelColorRule_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cls0SoaClassificationCoreLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cls0SoaClassificationCoreStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/com.teamcenter.rac.aif.registryeditor_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/com.teamcenter.rac.aifrcp_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/com.teamcenter.rac.kernel_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/com.teamcenter.rac.kernel.testing_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/com.teamcenter.rac.util_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/com.teamcenter.rac.util.testing_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/commons-codec.jar"/>
<classpathentry kind="lib" path="soalib/commons-httpclient-contrib-3.1.jar"/>
<classpathentry kind="lib" path="soalib/commons-logging.jar"/>
<classpathentry kind="lib" path="soalib/Cp0SoaStrongModelComposites_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cpd0SoaCpdCoreLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Cpd0SoaCpdCoreStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Crf0SoaStrongModelCprFoundation_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Crt0SoaStrongModelValidationContract_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Crt0SoaValidationContractLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Crt0SoaValidationContractStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Dia0SoaDiagrammingLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Dia0SoaDiagrammingStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Eda0SoaEDMDCollabLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Eda0SoaEDMDCollabStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Esm0SoaESMBaseLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Esm0SoaESMBaseStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Esw0SoaStrongModelEsmgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/fccclient.jar"/>
<classpathentry kind="lib" path="soalib/Fdp0SoaFourDPlanningLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fdp0SoaFourDPlanningStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fdp0SoaStrongModelFourDPlanning_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaAuditManagerLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaAuditManagerStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaConfigFilterCriteriaLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaConfigFilterCriteriaStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaDiagrammingLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaDiagrammingStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaEditContextLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaEditContextStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaNotificationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaNotificationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaParticipantLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaParticipantStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaQualificationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaQualificationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaUiConfigLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaUiConfigStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaWProxyLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Fnd0SoaWProxyStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/fscclient.jar"/>
<classpathentry kind="lib" path="soalib/httpclient-4.5.2.jar"/>
<classpathentry kind="lib" path="soalib/httpcore-4.4.4.jar"/>
<classpathentry kind="lib" path="soalib/httpmime-4.5.2.jar"/>
<classpathentry kind="lib" path="soalib/jacorb.jar"/>
<classpathentry kind="lib" path="soalib/jaxb-api.jar"/>
<classpathentry kind="lib" path="soalib/jaxb-impl.jar"/>
<classpathentry kind="lib" path="soalib/Lbr0SoaLibraryManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Lbr0SoaLibraryManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Les0SoaStrongModelLisesm_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Lgt0SoaLogisticsLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Lgt0SoaLogisticsStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Lgt0SoaStrongModelLogistics_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Lis0SoaLdfLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Lis0SoaLdfStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Lis0SoaStrongModelLdf_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/log4j-api-2.13.0.jar"/>
<classpathentry kind="lib" path="soalib/log4j-core-2.13.0.jar"/>
<classpathentry kind="lib" path="soalib/log4j.jar"/>
<classpathentry kind="lib" path="soalib/logkit-1.2.jar"/>
<classpathentry kind="lib" path="soalib/Lrm0SoaStrongModelLisrm_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mat1SoaMaterialMgmtLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mat1SoaMaterialMgmtStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mci0SoaPMIManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mci0SoaPMIManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mci0SoaStrongModelPMIManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mdc0SoaMDConnectivityLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mdc0SoaMDConnectivityStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mdl0SoaModelCoreLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mdl0SoaModelCoreStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mdo0SoaMDOManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mdo0SoaMDOManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mdo0SoaStrongModelMdo_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mea0SoaStrongModelMea0Fpam_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mei0SoaMESIntegLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mei0SoaMESIntegStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Mei0SoaStrongModelMESInteg_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Nxc0SoaTcinCpdLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Nxc0SoaTcinCpdStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Ods0SoaObjectDataServicesLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Ods0SoaObjectDataServicesStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Oo1SoaOfficeOnlineLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Oo1SoaOfficeOnlineStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Ord0SoaStrongModelOrderManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Osl0SoaStrongModelLISOSLC_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Pdg0SoaStrongModelPtnDesignGdlines_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Pdm0SoaPlantDataMgmtLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Pdm0SoaPlantDataMgmtStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Pdm0SoaStrongModelPlantDataMgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Pmg0SoaStrongModelCpMgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Prg0SoaProgramInfraLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Prg0SoaProgramInfraStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Prg0SoaStrongModelProgramInfra_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Prg1SoaProgramPlanningAppLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Prg1SoaProgramPlanningAppStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Prg1SoaStrongModelProgramPlanningApp_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Ptn0SoaPartitionLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Ptn0SoaPartitionStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Qc0SoaStrongModelQualityCenterBase_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/resolver.jar"/>
<classpathentry kind="lib" path="soalib/Rlz0SoaRealizationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Rlz0SoaRealizationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Rse0SoaStrongModelTcRsEnablement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SAS0SoaSvcAutoSchedulingLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SAS0SoaSvcAutoSchedulingStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Sdm0SoaStrongModelSampleDocMgt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/serializer.jar"/>
<classpathentry kind="lib" path="soalib/Sis0SoaSocialIntLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Sis0SoaSocialIntStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Smc0SoaStrongModelPsMcfgSupport_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Smc0SoaStructureManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Smc0SoaStructureManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Srh0SoaStrongModelApsConfiguredSearch_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SSF0SoaServiceForecastingLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SSF0SoaServiceForecastingStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SSF0SoaStrongModelServiceForecasting_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Ssm0SoaStrongModelSystemSynthesisModeling_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SSP0SoaStrongModelServicePlanning_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SSS0SoaStrongModelServiceScheduling_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SSS0SoaSvcSchedulingLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/SSS0SoaSvcSchedulingStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/tcgatewaystubs.jar"/>
<classpathentry kind="lib" path="soalib/tcmemjavabinding.jar"/>
<classpathentry kind="lib" path="soalib/tcserverjavabinding.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAdministrationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAdministrationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAiLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAiStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAllocationsLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAllocationsStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAsbAsmAlignmentLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAsbAsmAlignmentStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAsBuiltLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAsBuiltStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAsMaintainedLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAsMaintainedStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAuthorizedDataAccessLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaAuthorizedDataAccessStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaBomLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaBomStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaBusinessModelerLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaBusinessModelerStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCadBomAlignmentLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCadBomAlignmentStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCadLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCadStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCaeLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCaeStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCalendarManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCalendarManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaChangeManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaChangeManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaClassificationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaClassificationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaClient_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCommon_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaConfigurationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaConfigurationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaContMgmtBaseLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaContMgmtBaseStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCoreLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaCoreStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaDocumentManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaDocumentManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaGlobalMultiSiteLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaGlobalMultiSiteStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaImportExportLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaImportExportStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaIssueManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaIssueManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaManufacturingLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaManufacturingStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaMESLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaMESStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaMROCoreLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaMROCoreStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaMultisiteLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaMultisiteStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaParameterManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaParameterManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaProductionManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaProductionManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaProjectManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaProjectManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaQueryLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaQueryStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaRdvLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaRdvStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaReportsLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaReportsStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaRequirementsManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaRequirementsManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaSrmIntegrationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaSrmIntegrationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModel_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelAdsChangeManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelAdsFoundation_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelAsBuilt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelAsMaintained_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelBrndMgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCba_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCcdm_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCdm0ContractManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelClassificationCore_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCm_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCmtEbop_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCmtEmserver_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCmtPadTwp_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelContmgmtBase_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelContmgmtDita_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelContmgmtS1000d_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelContmgmtS1000d40_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCpdCore_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelCpgMaterials_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelDiagramming_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelDpv_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelEdaLibrary_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelEdaServer_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelEmps_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelEsddm_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelEsmBase_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelEsmProcessor_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelEsmSoftware_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelFnshmgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelFpMgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelGmo_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelHrn_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelIssuemgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelLibraryManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelMaterialMgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelMDConnectivity_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelMES_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelMesIssueMgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelModelCore_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelMROCore_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelNX0tcin_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelNXP0pid_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelPartition_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelPenetrationmgmt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelPkgArt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelPlp0ProdLinePlan_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelPMI_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelProductVariant_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelRealization_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelScdt_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelScmCc_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelServiceEventManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelServiceProcessing_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelServiceRequest_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelSmdsysmodeling_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelSpecMgr_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelSSPSPRAlignment_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelStockMaterial_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelSystemsEngineering_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelTcae_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelTransactionProcessing_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelVendorManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelWeldManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStrongModelWorkPackageManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStructureManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaStructureManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaSvcProcessingLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaSvcProcessingStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaSvcRequestLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaSvcRequestStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaSystemsEngineeringLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaSystemsEngineeringStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaTranslationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaTranslationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaVendorManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaVendorManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaVisualizationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaVisualizationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaWireHarnessLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaWireHarnessStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaWorkflowLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/TcSoaWorkflowStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/tctp_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/teamcenter_sso_applib.jar"/>
<classpathentry kind="lib" path="soalib/teamcenter_sso_common.jar"/>
<classpathentry kind="lib" path="soalib/teamcenter_sso_ldapcustom.jar"/>
<classpathentry kind="lib" path="soalib/teamcenter_sso_webtoolkit.jar"/>
<classpathentry kind="lib" path="soalib/Tgm0SoaStrongModelTargetManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Tgm0SoaTargetManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Tgm0SoaTargetManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Tm0SoaStrongModelTestManagement_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Tm0SoaTestManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Tm0SoaTestManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Val0SoaNXValidationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Val0SoaNXValidationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Val0SoaStrongModelNXValidation_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Val1SoaCfgValidationLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Val1SoaCfgValidationStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Val1SoaStrongModelCfgValidation_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/WdM0SoaWeldManagementLoose_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/WdM0SoaWeldManagementStrong_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/Wnb0SoaStrongModelWeightandBalance_13000.0.0.jar"/>
<classpathentry kind="lib" path="soalib/ws-commons-util-1.0.2.jar"/>
<classpathentry kind="lib" path="soalib/xercesImpl.jar"/>
<classpathentry kind="lib" path="soalib/xml-apis.jar"/>
<classpathentry kind="lib" path="soalib/xmlrpc-client-3.1.3.jar"/>
<classpathentry kind="lib" path="soalib/xmlrpc-common-3.1.3.jar"/>
<classpathentry kind="lib" path="soalib/xmlrpc-server-3.1.3.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

@ -31,3 +31,4 @@ Bundle-ClassPath: sqlServerLib/sqljdbc4.jar,
poi_lib/poi-ooxml-schemas-3.17.jar,
poi_lib/poi-scratchpad-3.17.jar,
poi_lib/xmlbeans-2.6.0.jar
Import-Package: com.teamcenter.services.loose.core._2011_06

1
bin/.gitignore vendored

@ -1 +0,0 @@
/com/

@ -0,0 +1 @@
LD6_NewProdForm.FORMJAVARENDERING=com.langtech.plm.form.LD6_NewProdForm

@ -9,6 +9,24 @@
id="com.langtech.plm.performancemanagement.commands.category"
name="Sample Category">
</category>
<command
categoryId="com.langtech.plm.project.CalculateHandler"
name="计算材料定额"
id="com.langtech.plm.project.CalculateHandler">
</command>
<command
categoryId="com.langtech.plm.bg.QDRWHandler"
name="变更任务分配表启动任务"
id="com.langtech.plm.bg.QDRWHandler">
</command>
<command
categoryId="com.langtech.plm.bg.RWFPHandler"
name="查看任务分配表"
id="com.langtech.plm.bg.RWFPHandler">
</command>
<command
categoryId="com.langtech.plm.batchRename.BatchRenameHandler"
name="批量修改时间表任务名称"
@ -32,7 +50,7 @@
</command>
<command
categoryId="com.langtech.plm.template.TemplateHandler"
name="插入模板"
name="生成工序卡"
id="com.langtech.plm.template.TemplateHandler">
</command>
@ -41,9 +59,31 @@
name="提取属性到Word、Excel"
id="com.langtech.plm.tqsx.PropertyToWordOrExcelCommand">
</command>
<command
categoryId="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeCommand"
name="修改配方生效时间"
id="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeCommand">
</command>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="com.langtech.plm.bg.QDRWHandler"
commandId="com.langtech.plm.bg.QDRWHandler">
</handler>
<handler
class="com.langtech.plm.bg.RWFPHandler"
commandId="com.langtech.plm.bg.RWFPHandler">
</handler>
<handler
class="com.langtech.plm.project.CalculateHandler"
commandId="com.langtech.plm.project.CalculateHandler">
</handler>
<handler
class="com.langtech.plm.batchRename.BatchRenameHandler"
commandId="com.langtech.plm.batchRename.BatchRenameHandler">
@ -69,6 +109,11 @@
class="com.langtech.plm.tqsx.KHandler"
commandId="com.langtech.plm.tqsx.PropertyToWordOrExcelCommand">
</handler>
<handler
class="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeHandler"
commandId="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeCommand">
</handler>
</extension>
<extension
point="org.eclipse.ui.menus">
@ -76,7 +121,7 @@
locationURI="menu:org.eclipse.ui.main.menu?after=additions">
<menu
id="com.langtech.plm.performancemanagement.menus.sampleMenu"
label="二开菜单"
label="设计管理"
mnemonic="M">
<command
commandId="com.langtech.plm.synchronize.SynchronizeHandler"
@ -84,12 +129,30 @@
mnemonic="S">
</command>
<command
commandId="com.langtech.plm.template.TemplateHandler"
id="com.langtech.plm.template.TemplateHandler"
commandId="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeCommand"
id="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeHandler"
mnemonic="S">
</command>
</menu>
<menu
id="com.langtech.plm.performancemanagement.menus.sampleMenu2"
label="变更管理"
mnemonic="M">
<command
commandId="com.langtech.plm.bg.RWFPHandler"
id="com.langtech.plm.bg.RWFPHandler"
mnemonic="S">
</command>
<command
commandId="com.langtech.plm.bg.QDRWHandler"
id="com.langtech.plm.bg.QDRWHandler"
mnemonic="S">
</command>
</menu>
<menu
id="com.langtech.plm.performancemanagement.menus.sampleMenu1"
@ -106,15 +169,29 @@
id="com.langtech.plm.createProjectStruct.CreateProjectStructHandler"
mnemonic="S">
</command>
<command
</menu>
</menuContribution>
<menuContribution locationURI="menu:cn.net.connor.std.processedit.mainmenu?after=additions">
<command
commandId="com.langtech.plm.mpart.MpartHandler"
id="com.langtech.plm.mpart.MpartHandler"
mnemonic="S">
</command>
</menu>
</menuContribution>
<command
commandId="com.langtech.plm.project.CalculateHandler"
id="com.langtech.plm.project.CalculateHandler"
mnemonic="S">
</command>
<command
commandId="com.langtech.plm.template.TemplateHandler"
id="com.langtech.plm.template.TemplateHandler"
mnemonic="S">
</command>
</menuContribution>
<menuContribution locationURI="popup:org.eclipse.ui.popup.any?after=additions">
<command

@ -0,0 +1,72 @@
package com.langtech.plm.bg;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
public class CheckHeaderCellRenderer implements TableCellRenderer {
DefaultTableModel tableModel;
JTableHeader tableHeader;
final JCheckBox selectBox;
public CheckHeaderCellRenderer(final JTable table) {
this.tableModel = (DefaultTableModel) table.getModel();
this.tableHeader = table.getTableHeader();
selectBox = new JCheckBox(tableModel.getColumnName(0));
selectBox.setSelected(false);
tableHeader.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() > 0) {
// 获得选中列
int selectColumn = tableHeader.columnAtPoint(e.getPoint());
if (selectColumn == 0) {
boolean value = !selectBox.isSelected();
selectBox.setSelected(value);
// tableModel.selectAllOrNull(value);
tableHeader.repaint();
if(value) {
for(int i=0;i<table.getRowCount();i++) {
table.setValueAt("1", i, 0);
}
}else {
for(int i=0;i<table.getRowCount();i++) {
table.setValueAt("0", i, 0);
}
}
}
}
}
});
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// TODO Auto-generated method stub
String valueStr = (String) value;
JLabel label = new JLabel(valueStr);
label.setHorizontalAlignment(SwingConstants.CENTER); // 表头标签剧中
selectBox.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中
selectBox.setBorderPainted(true);
JComponent component = (column == 0) ? selectBox : label;
component.setForeground(tableHeader.getForeground());
component.setBackground(tableHeader.getBackground());
component.setFont(tableHeader.getFont());
component.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return component;
}
}

@ -0,0 +1,250 @@
package com.langtech.plm.bg;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DbPool {
public static Connection connection = null;
public static PreparedStatement ps = null;
public static ResultSet rs = null;
private static DbPool instance = null;
public static synchronized Connection getConnection(String url, String name) {
if (instance == null) {
instance = new DbPool();
}
return instance._getConnection(url, name);
}
private Connection _getConnection(String url, String name) {
try {
String sDBDriver = null;
String sConnection = null;
String sUser = null;
String sPassword = null;
Properties p = new Properties();
// InputStream is = getClass().getResourceAsStream(
// "/sqlconn.properties");
// p.load(is);
sDBDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
sConnection = "jdbc:sqlserver://" + url + ":1433; DatabaseName=" + name;// p.getProperty("Connection", "2");
sUser = "infodba";// p.getProperty("User", "");
sPassword = "infodba";// p.getProperty("Password", "");
if (sDBDriver == null || sConnection == null || sUser == null || sPassword == null) {
System.out.println("请检查数据库首选项是否配置正确");
}
Class.forName(sDBDriver);
connection = DriverManager.getConnection(sConnection, sUser, sPassword);
return connection;
} catch (Exception se) {
System.out.println(se);
}
return null;
}
public final static ResultSet read(String sql, Object[] argments) throws SQLException {
return DbPool.rs = DbPool.getPs(argments, sql).executeQuery();
}
/**
* Statement
*/
public final static PreparedStatement getPs(Object[] argments, String sql) throws SQLException {
return getPs(sql, argments);
}
/**
* Statement
*/
public final static PreparedStatement getPs(String sql, Object[] argments) throws SQLException {
DbPool.ps = DbPool.connection.prepareStatement(sql);
if (argments != null) {
for (int i = 0; i < argments.length; i++) {
DbPool.ps.setObject(i + 1, argments[i]);
}
}
return DbPool.ps;
}
/**
*
*/
public final static ResultSet read(String sql) throws SQLException {
return read(sql, null);
}
public static void executeUpdateSql(String sql) throws SQLException {
Statement st = connection.createStatement();
try {
connection.setAutoCommit(false);
// System.out.println("sql===" + sql);
int i = st.executeUpdate(sql);
} catch (SQLException e) {
System.out.println(e.getMessage());
if (st != null)
st.close();
connection.rollback();
connection.close();
} finally {
if (st != null)
st.close();
// connection.close();
}
}
public static void executeDeleteSql(String sql) throws SQLException {
Statement st = connection.createStatement();
try {
connection.setAutoCommit(false);
// System.out.println("sql===" + sql);
st.executeUpdate(sql);
connection.commit();
} catch (SQLException e) {
if (st != null)
st.close();
connection.rollback();
connection.close();
} finally {
if (st != null)
st.close();
connection.close();
}
}
/**
*
*/
public final static int write(String sql, Object[] argments) {
return update(sql, argments);
}
/**
* (Connection)
*/
public final static int update(String sql, Object[] argments) {
int i = -1;
try {
i = DbPool.getPs(argments, sql).executeUpdate();
DbPool.connection.commit();
} catch (SQLException e) {
e.printStackTrace();
} finally {
free(DbPool.rs, DbPool.ps);
}
return i;
}
public static ResultSet executeSelectSql(String sql) throws SQLException {
Statement st = connection.createStatement();
try {
connection.setAutoCommit(false);
// System.out.println("sql===" + sql);
rs = st.executeQuery(sql);
// conn.commit();
} catch (SQLException e) {
if (st != null)
st.close();
connection.rollback();
connection.close();
}
return rs;
}
/**
*
*/
public final static void free(ResultSet resultSet) {
free(resultSet, null, null);
}
/**
*
*/
public final static void free(Statement statement) {
free(null, statement, null);
}
/**
*
*/
public final static void free(Connection connection) {
free(null, null, connection);
}
/**
*
*/
public final static void free(ResultSet resultSet, Statement statement) {
free(resultSet, statement, null);
}
/**
*
*/
public final static void free(Statement statement, Connection connection) {
free(null, statement, connection);
}
/**
* ()
*/
public final static void free() {
free(DbPool.rs, DbPool.ps);
}
/**
* ()
*/
public final static void freeAll() {
free(DbPool.rs, DbPool.ps, DbPool.connection);
}
/**
* ()
*/
public final static void free(ResultSet resultSet, Statement statement, Connection connection) {
try {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} finally {
try {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}

@ -0,0 +1,153 @@
package com.langtech.plm.bg;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map.Entry;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.PropertyLayout;
public class QDRWChooseDialog extends JFrame implements ActionListener {
private JComboBox<String> objectComboBox = new JComboBox<String>();
private JButton okButton = new JButton("确定");
private JButton concelButton = new JButton("取消");
private String[] strings;
private AbstractAIFUIApplication app;
private HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
public QDRWChooseDialog(String[] strings,AbstractAIFUIApplication app) {
// TODO Auto-generated constructor stub
this.strings = strings;
this.app = app;
initUI();
}
public void initUI() {
// TODO Auto-generated method stub
try {
this.setTitle("请选择变更模板");
this.setLayout(new BorderLayout());
JPanel topPanel = getTopPanel();
JPanel btnPanel = getBtnPanel();
this.add(topPanel, BorderLayout.NORTH);
// this.add(pane,BorderLayout.CENTER);
this.add(btnPanel, BorderLayout.SOUTH);
this.setPreferredSize(new Dimension(350, 150));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); // 获取屏幕尺寸
int screenWidth = screenSize.width; // 获取屏幕宽度
int screenHeight = screenSize.height; // 获取屏幕高度
int x = (screenWidth - 350) / 2; // 计算Frame的左上角x坐标
int y = (screenHeight - 150) / 2; // 计算Frame的左上角y坐标
this.setLocation(x, y); // 设置Frame的位置
// this.setLocationRelativeTo(null);
this.createActionEvent();
this.pack();
// this.validate();
this.setVisible(true);
// this.setAlwaysOnTop(true);
//设置下拉值
for (int i = 0; i < strings.length; i++) {
String[] split = strings[i].split("=");
objectComboBox.addItem(split[0]);
ArrayList<String> list = new ArrayList<String>();
list.add(split[1]);
list.add(split[2]);
list.add(split[3]);
map.put(split[0], list);
}
} catch (Exception e) {
e.printStackTrace();
return;
}
}
// 添加监听
public void createActionEvent() {
this.okButton.addActionListener(this);
this.concelButton.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object source = e.getSource();
System.out.println("source==>+" + source);
if (this.okButton.equals(source)) {
String selectedItem = (String) objectComboBox.getSelectedItem();
ArrayList<String> arrayList = map.get(selectedItem);
new QDRWDialog((TCSession)app.getSession(),arrayList.get(0),arrayList.get(1),selectedItem,arrayList.get(2));
System.out.println("newnewnwenew");
this.dispose();
} else if (this.concelButton.equals(source)) {
this.dispose();
}
}
private JPanel getBtnPanel() {
JPanel topPanel = new JPanel();
topPanel.setLayout(new PropertyLayout());
topPanel.add("1.1.center", new JLabel(""));
topPanel.add("2.1.center", new JLabel(" "));
topPanel.add("2.2.center", okButton);
topPanel.add("2.3.center", new JLabel(""));
topPanel.add("2.4.center", concelButton);
topPanel.add("3.1.center", new JLabel(""));
topPanel.add("4.1.center", new JLabel(""));
return topPanel;
}
// 查询部分
private JPanel getTopPanel() {
// TODO Auto-generated method stub
JPanel topPanel = new JPanel();
topPanel.setLayout(new PropertyLayout());
topPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
topPanel.add("1.1.left.center", new JLabel(""));
topPanel.add("2.1.left.center", new JLabel(""));
topPanel.add("3.1.left.center", new JLabel(""));
topPanel.add("4.1.left.center", new JLabel(""));
topPanel.add("5.1.left.center", new JLabel(" 变更模板:"));
topPanel.add("5.2.left.center", objectComboBox);
return topPanel;
}
}

@ -0,0 +1,936 @@
package com.langtech.plm.bg;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.RowSorter;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.ListOfValuesInfo;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentListOfValues;
import com.teamcenter.rac.kernel.TCComponentListOfValuesType;
import com.teamcenter.rac.kernel.TCComponentProcessType;
import com.teamcenter.rac.kernel.TCComponentProject;
import com.teamcenter.rac.kernel.TCComponentTaskTemplate;
import com.teamcenter.rac.kernel.TCComponentTaskTemplateType;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCProperty;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.DateButton;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.PropertyLayout;
import com.teamcenter.soa.client.model.LovValue;
public class QDRWDialog extends JFrame implements ActionListener {
private Map<String, JTextField> textMap = new HashMap<>();
private TCSession session;
private JTable table;
private String[] header;
private ArrayList<String> gsPrefTopLine;
private LinkedHashMap<Integer, String> colorMap = new LinkedHashMap<Integer, String>();
private LinkedHashMap<String, String> gsPrefMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> fieldsMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> cfdjPref = new LinkedHashMap<String, String>();
private LinkedHashMap<Integer, String> lovPositionMap = new LinkedHashMap<Integer, String>();
private LinkedHashMap<String, Integer> positionFieldMap = new LinkedHashMap<String, Integer>();
private LinkedHashMap<Integer, Integer> widtheMap = new LinkedHashMap<Integer, Integer>();
// public static final int[] HEADERWIDTH = new int[] { 50, 100, 200, 200, 100,
// 100, 80, 80, 100, 150, 150, 150, 150,150, 150, 150, 150, 150, 150 };
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private DefaultTableModel dtm1;
private JComboBox<String> cfdJComboBox = new JComboBox<String>();
private DateButton jhksB;
private DateButton jhksS;
private DateButton jhwcB;
private DateButton jhwcS;
private JTextField idField = new JTextField(30);
private JButton ssButton = new JButton("搜索");
private JButton ckButton = new JButton("查看任务分配表");
private JButton qrqdButton = new JButton("确认启动");
private JButton gbButton = new JButton("关闭");
private static ArrayList<String> dateConnList = new ArrayList<String>();
private String pref;
private String taskName;
private ArrayList<Integer> canWriteColume = new ArrayList<Integer>();
private ArrayList<String> sqlField;
private QDRWTableColorRender QDRWTableColorRender;
LinkedHashMap<String, LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> valueMap;
private Connection conn = null;
private String tamplateName;
private String chooseType;
public QDRWDialog(TCSession session, String pref, String taskName,String tamplateName,String chooseType) {
// TODO Auto-generated constructor stub
this.session = session;
this.pref = pref;
this.taskName = taskName;
this.tamplateName = tamplateName;
this.chooseType = chooseType;
initUI();
}
public void initUI() {
// TODO Auto-generated method stub
this.setTitle("任务分配表");
this.setLayout(new BorderLayout());
String[] prefs = session.getPreferenceService().getStringValues(pref);
if (prefs == null || prefs.length <= 0) {
MessageBox.post("首选项“" + pref + "”未配置!", "提示 ", MessageBox.INFORMATION);
return;
}
String[] split2 = prefs[0].split(";");
for (int j = 0; j < split2.length; j++) {
String[] split3 = split2[j].split("=");
positionFieldMap.put(split3[0], j);
if (split3.length == 3) {
if (split3[1].contains("#")) {
String[] split = split3[1].split("#");
fieldsMap.put(split3[0], split[1]);
colorMap.put(j + 1, split3[0]);
} else {
fieldsMap.put(split3[0], split3[1]);
}
if (split3[2].contains("%")) {
String[] split4 = split3[2].split("%");
widtheMap.put(j + 1, Integer.parseInt(split4[0]));
canWriteColume.add(j);
} else {
widtheMap.put(j + 1, Integer.parseInt(split3[2]));
}
}
else if (split3.length == 4) {
fieldsMap.put(split3[0], split3[1]);
// System.out.println("split3[2]========" + split3[2]);
if (split3[2].contains("%")) {
String[] split4 = split3[2].split("%");
widtheMap.put(j, Integer.parseInt(split4[0]));
// System.out.println("split4[0]========" + split4[0]);
canWriteColume.add(j);
} else {
widtheMap.put(j, Integer.parseInt(split3[2]));
}
lovPositionMap.put(j, split3[3]);
}
}
System.out.println("canWriteColume=====" + canWriteColume.size());
System.out.println("fieldsMap=====" + fieldsMap);
System.out.println("positionMap=====" + lovPositionMap);
System.out.println("widtheMap=====" + widtheMap);
Collection<String> valuesCollection = fieldsMap.values();
// 创建一个新的列表来保存所有的值
List<String> valuesList = new ArrayList<>(valuesCollection);
// 在列表的第一个位置插入新的 String 值
valuesList.add(0, "");
// 如果需要,可以将列表转回集合
Collection<String> updatedValuesCollection = valuesList;
// 将集合转换为数组
header = updatedValuesCollection.toArray(new String[0]);
System.out.println("header===============" + header.length);
JPanel topPanel = getTopPanel();
JScrollPane pane = getTablePanel();
pane.setBorder(BorderFactory.createTitledBorder(""));
// JPanel btnPanel = getRightPanel();
JPanel bottomPane = getBottomPanel();
this.add(topPanel, BorderLayout.NORTH);
this.add(pane, BorderLayout.CENTER);
this.add(bottomPane, BorderLayout.SOUTH);
this.createActionEvent();
this.pack();
this.setPreferredSize(new Dimension(1850, 1000));
this.validate();
this.setVisible(true);
// 设置窗口在屏幕中心
// Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
// int x = (int) screensize.getWidth() / 2 - window.getWidth() / 2;
// int y = (int) screensize.getHeight() / 2 - window.getHeight() / 2;
this.setLocationRelativeTo(null);
// 设置列宽
TableColumnModel colModel = table.getColumnModel();
for (Entry<Integer, Integer> map : widtheMap.entrySet()) {
colModel.getColumn(map.getKey()).setPreferredWidth(map.getValue());
}
}
public void createActionEvent() {
this.ssButton.addActionListener(this);
this.ckButton.addActionListener(this);
this.gbButton.addActionListener(this);
this.qrqdButton.addActionListener(this);
}
// 查询部分
private JPanel getTopPanel() {
// TODO Auto-generated method stub
JPanel topPanel = new JPanel();
topPanel.setLayout(new PropertyLayout());
jhksB = new DateButton(null, "yyyy-MM-dd", false, false, false);
jhksB.setDate("未设置日期");
jhksS = new DateButton(null, "yyyy-MM-dd", false, false, false);
jhksS.setDate("未设置日期");
jhwcB = new DateButton(null, "yyyy-MM-dd", false, false, false);
jhwcB.setDate("未设置日期");
jhwcS = new DateButton(null, "yyyy-MM-dd", false, false, false);
jhwcS.setDate("未设置日期");
topPanel.add("1.1.left.center", new JLabel("ID "));
topPanel.add("1.2.left.center", idField);
topPanel.add("1.3.left.center", new JLabel(" 计划开始晚于 "));
topPanel.add("1.4.left.center", jhksB);
topPanel.add("1.5.left.center", new JLabel(" 计划开始早于 "));
topPanel.add("1.6.left.center", jhksS);
topPanel.add("1.7.left.center", new JLabel(" 计划完成晚于 "));
topPanel.add("1.8.left.center", jhwcB);
topPanel.add("1.9.left.center", new JLabel(" 计划完成早于 "));
topPanel.add("1.10.left.center", jhwcS);
topPanel.add("2.1.left.center", new JLabel(" "));
return topPanel;
}
// 查询部分
private JPanel getBottomPanel() {
// TODO Auto-generated method stub
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new PropertyLayout());
bottomPanel.add("1.1.left.center", new JLabel(" "));
bottomPanel.add("1.2.left.center", ssButton);
bottomPanel.add("1.3.left.center", new JLabel(" "));
bottomPanel.add("1.4.left.center", ckButton);
bottomPanel.add("1.5.left.center", new JLabel(" "));
bottomPanel.add("1.6.left.center", qrqdButton);
bottomPanel.add("1.7.left.center", new JLabel(" "));
bottomPanel.add("1.8.left.center", gbButton);
return bottomPanel;
}
private JScrollPane getTablePanel() {
// TODO Auto-generated method stub
table = getjTable(null, null, header, null, false);
table.setRowHeight(30);
// table.setPreferredSize(new Dimension(1500,400));
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // 设置表格的自动调整模式为关闭自动调整
// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//设置JTable的列宽随着列表内容的大小进行调整
// table.setPreferredSize(new Dimension(1200,400));
// 设置自定义渲染器
QDRWTableColorRender = new QDRWTableColorRender();
table.setDefaultRenderer(Object.class, QDRWTableColorRender);
JScrollPane pane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
table.getTableHeader().setDefaultRenderer(new CheckHeaderCellRenderer(table));
table.getColumnModel().getColumn(0).setCellRenderer(new TableCellCheckboxRenderer(table));
// for (Entry<Integer, String> map : lovPositionMap.entrySet()) {
// JComboBox<String> jComboBox = new JComboBox<String>();
// String value = map.getValue();
// if(value.contains(",")) {
// String[] split = value.split(",");
// for (int i = 0; i < split.length; i++) {
// jComboBox.addItem(split[i]);
// }
// }else {
// jComboBox.addItem(value);
// }
// table.getColumnModel().getColumn(map.getKey()).setCellEditor(new DefaultCellEditor(jComboBox));
// }
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// 添加鼠标监听器
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 || e.getClickCount() == 1) {
// TODO Auto-generated method stub
int selectColumn = table.getTableHeader().columnAtPoint(e.getPoint());
int selectedRow = table.rowAtPoint(e.getPoint());
if (selectColumn == 0) {
Object valueAt = table.getValueAt(selectedRow, selectColumn);
if (valueAt.toString().equals("1")) {
table.setValueAt("0", selectedRow, selectColumn);
} else {
table.setValueAt("1", selectedRow, selectColumn);
}
}
}
}
});
}
});
pane.setPreferredSize(new Dimension(1800, 850));
pane.setViewportView(table);// 为scrollPane指定显示对象为table
return pane;
}
/***
* Jtable
*
* @param partsTable
* @param dtm
* @param titleNames
* @param values
* @return
*/
public JTable getjTable(JTable partsTable, DefaultTableModel dtm, Object[] titleNames, Object[][] values,
Boolean isTable2) {
// int simpleLen = 100;
// int totleLen = 1000;
if (partsTable == null) {
partsTable = new JTable(this.getTableModel(dtm, titleNames, values));
partsTable.setRowHeight(20);
partsTable.getTableHeader().setReorderingAllowed(false);
partsTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(partsTable.getModel());
partsTable.setRowSorter(sorter);
// for (int i = 0; i < titleNames.length; i++) {
// if(i==2) {
// partsTable.getColumnModel().getColumn(i).setPreferredWidth(200);
// }else {
// partsTable.getColumnModel().getColumn(i).setPreferredWidth(120);
// }
//
// }
}
return partsTable;
}
public DefaultTableModel getTableModel(DefaultTableModel dtm, Object[] titleNames, Object[][] values) {
dtm1 = null;
if (dtm == null) {
dtm1 = new DefaultTableModel(values, titleNames) {
@Override
public boolean isCellEditable(int row, int column) {
if (column == 0) {
return true;
} else {
return false;
}
}
};
}
return dtm1;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object source = e.getSource();
System.out.println("source==>+" + source);
if (source.equals(this.gbButton)) {
dispose();
} else if (source.equals(this.ckButton)) {
int selectedRow = table.getSelectedRow();
if (selectedRow < 0) {
MessageBox.post("请选择某一行!", "提示", 2);
}
String selectId = (String) table.getValueAt(selectedRow, 1);
String selectType = (String) table.getValueAt(selectedRow, 2);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new QDRWRWFPDialog(session, selectType, selectId);
// d.setModal(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} else if (source.equals(this.qrqdButton)) {
String[] value = session.getPreferenceService().getStringValues("LD_dbinfo2");
if (value == null || value.length == 0) {
MessageBox.post("首选项LD_dbinfo2配置有误请检查。", "提示", 2);
return;
} else {
Collections.addAll(dateConnList, value);
}
conn = getConn();
int count = 0;
for (int i = 0; i < table.getRowCount(); i++) {
if (table.getValueAt(i, 0).toString().equals("1")) {
String id = table.getValueAt(i, 1).toString();
TCComponentItemRevision rev = null;
try {
System.out.println("id============="+id);
TCComponent[] tcComponentsById = getTCComponentsById(session,id);
if(tcComponentsById != null && tcComponentsById.length > 0) {
System.out.println("tcComponentsById.length============="+tcComponentsById.length);
TCComponentItem item = (TCComponentItem)tcComponentsById[0];
rev = item.getLatestItemRevision();
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> linkedHashMap = valueMap.get(id);
for (Entry<Integer, String> map : colorMap.entrySet()) {
boolean isProsess = false;
String prefValue = map.getValue();
String[] split = prefValue.split("\\.");
ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(split[0]);
String RWXDSJ = "";
String QQRW = "";
String SFSJGG = "";
String GGPSNR = "";
for (int j = 0; j < arrayList.size(); j++) {
if (arrayList.get(j).containsKey("RWXDSJ")) {
RWXDSJ = arrayList.get(j).get("RWXDSJ");
}
if (arrayList.get(j).containsKey("QQRW")) {
QQRW = arrayList.get(j).get("QQRW");
}
if (arrayList.get(j).containsKey("SFSJGG")) {
SFSJGG = arrayList.get(j).get("SFSJGG");
}
if (arrayList.get(j).containsKey("GGPSNR")) {
GGPSNR = arrayList.get(j).get("GGPSNR");
}
}
System.out.println("RWXDSJ======="+RWXDSJ);
System.out.println("QQRW======="+QQRW);
System.out.println("SFSJGG======="+SFSJGG);
if (RWXDSJ == null || RWXDSJ.isEmpty()) {
if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("否")) {
isProsess = true;
} else if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("是")
&& (QQRW == null || QQRW.isEmpty())) {
isProsess = true;
} else if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("是")
&& (QQRW != null && !QQRW.isEmpty())) {
// 找前驱任务
ArrayList<Integer> judgeList = new ArrayList<Integer>();
dgRW(linkedHashMap, QQRW,judgeList);
if(judgeList.size() == 0) {
isProsess = true;
}
}
}
System.out.println("taskName========="+taskName);
System.out.println("isProsess========"+isProsess);
if(isProsess && taskName != null && !taskName.isEmpty() && rev != null) {
try {
CreateProcess(session,rev,taskName,GGPSNR,split[0],id);
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
count++;
}
}
if (count == 0) {
MessageBox.post("请勾选数据!", "提示 ", MessageBox.INFORMATION);
if(conn != null) {
try {
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
return;
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
MessageBox.post("启动完成!", "提示 ", MessageBox.INFORMATION);
} else if (source.equals(this.ssButton)) {
table.removeAll();
dtm1.setRowCount(0);
String condition = "";
String ids = idField.getText();
String jhksBStr = jhksB.getText();
String jhksSStr = jhksS.getText();
String jhwcBStr = jhwcB.getText();
String jhwcSStr = jhwcS.getText();
System.out.println("jhksBStr=======" + jhksBStr);
if (!jhksBStr.contains("未设置")) {
condition += "and JHKS >= '" + jhksBStr + "' ";
}
if (!jhksSStr.contains("未设置")) {
condition += "and JHKS <= '" + jhksSStr + "' ";
}
if (!jhwcBStr.contains("未设置")) {
condition += "and JHJS >= '" + jhwcBStr + "' ";
}
if (!jhwcSStr.contains("未设置")) {
condition += "and JHJS <= '" + jhwcSStr + "' ";
}
if (ids != null && !ids.isEmpty()) {
if (ids.contains(";")) {
String[] split = ids.split(";");
StringBuilder sqlIn = new StringBuilder();
sqlIn.append("(");
for (int i = 0; i < split.length; i++) {
sqlIn.append("'" + split[i] + "',");
}
// 去掉最后一个,
sqlIn.setLength(sqlIn.length() - 1);
sqlIn.append(")");
System.out.println("sqlIn======================" + sqlIn.toString());
condition += "and ID IN " + sqlIn.toString();
} else {
condition += "and ID='" + ids + "' ";
}
}
String[] value = session.getPreferenceService().getStringValues("LD_dbinfo2");
if (value == null || value.length == 0) {
MessageBox.post("首选项LD_dbinfo2配置有误请检查。", "提示", 2);
return;
} else {
Collections.addAll(dateConnList, value);
}
sqlField = new ArrayList<String>();
Set<String> keySet = fieldsMap.keySet();
String fieldsSql = "";
for (String string : keySet) {
String[] split = string.split("\\.");
fieldsSql += split[1] + ",";
sqlField.add(split[1]);
}
fieldsSql = fieldsSql.substring(0, fieldsSql.length() - 1);
System.out.println("fieldsSql==========" + fieldsSql);
//System.out.println("condition===================" + condition);
if (condition == null || condition.isEmpty()) {
MessageBox.post("请填写条件!", "提示", 2);
return;
}
String sqlIdString = "SELECT ID FROM LY_CHANGETASSKFORM_DETAILS where TEMPLATENAME = '"+tamplateName+ "' and OBJECTTYPE = '"+ chooseType + "' " + condition;
System.out.println("sqlIdString=========" + sqlIdString);
conn = getConn();
PreparedStatement stmt = null;
String selectIds = "";
String lastCondition = "";
// 查ID
try {
stmt = conn.prepareStatement(sqlIdString);
ResultSet result = stmt.executeQuery();
while (result.next()) {
String id = result.getString("ID");
if (!selectIds.contains(id)) {
selectIds += id + ";";
}
}
if (selectIds != null && !selectIds.isEmpty()) {
if (selectIds.contains(";")) {
String[] split = selectIds.split(";");
StringBuilder sqlIn = new StringBuilder();
sqlIn.append("(");
for (int i = 0; i < split.length; i++) {
sqlIn.append("'" + split[i] + "',");
}
// 去掉最后一个,
sqlIn.setLength(sqlIn.length() - 1);
sqlIn.append(")");
//System.out.println("sqlIn======================" + sqlIn.toString());
lastCondition += "and ID IN " + sqlIn.toString();
} else {
lastCondition += "and ID='" + ids + "' ";
}
}
} catch (SQLException e1) {
e1.printStackTrace();
}
// 存数据的map
valueMap = new LinkedHashMap<String, LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>>();
// String sqlString = "SELECT " + fieldsSql + " FROM LY_CHANGETASSKFORM_DETAILS
// where 1=1 "+lastCondition;
String sqlString = "SELECT * FROM LY_CHANGETASSKFORM_DETAILS where 1=1 " + lastCondition;
System.out.println("sqlString======" + sqlString);
if(lastCondition.isEmpty()) {
MessageBox.post("未查到数据!", "提示", 2);
return;
}else {
try {
stmt = conn.prepareStatement(sqlString);
ResultSet result = stmt.executeQuery();
ResultSetMetaData metaData = result.getMetaData();
int columnCount = metaData.getColumnCount();
while (result.next()) {
String id = result.getString("ID");
String xh = result.getString("XH");
LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> tempMap1 = null;
if (valueMap.containsKey(id)) {
tempMap1 = valueMap.get(id);
} else {
tempMap1 = new LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>();
}
ArrayList<LinkedHashMap<String, String>> tempList = new ArrayList<LinkedHashMap<String, String>>();
for (int i = 1; i <= columnCount; i++) {
// 获取列名
String columnName = metaData.getColumnName(i); // 获取实际的列名
// 获取列的值
String columnValue = result.getString(i); // 使用 getObject() 获取列的值
LinkedHashMap<String, String> fieldMap = new LinkedHashMap<String, String>();
fieldMap.put(columnName,
columnValue == null ? columnValue : validateAndFormatDate(columnValue));
tempList.add(fieldMap);
}
tempMap1.put(xh, tempList);
valueMap.put(id, tempMap1);
}
//System.out.println(valueMap.toString());
QDRWTableColorRender.valueMap = valueMap;
QDRWTableColorRender.colorMap = colorMap;
for (Entry<String, LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> map : valueMap
.entrySet()) {
ArrayList<String> tableList = new ArrayList<String>();
tableList.add("0");
for (Entry<String, String> tempMap : fieldsMap.entrySet()) {
String pref = tempMap.getKey();
String[] split = pref.split("\\.");
LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> value2 = map.getValue();
ArrayList<LinkedHashMap<String, String>> arrayList = value2.get(split[0]);
if (arrayList != null) {
for (int i = 0; i < arrayList.size(); i++) {
LinkedHashMap<String, String> linkedHashMap = arrayList.get(i);
if (linkedHashMap.containsKey(split[1])) {
tableList.add(linkedHashMap.get(split[1]));
}
}
}
}
dtm1.addRow(tableList.toArray(new Object[0]));
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
// 获取数据库连接
public static Connection getConn() {
Connection conn = null;
try {
conn = DbPool.getConnection(dateConnList.get(0), dateConnList.get(1));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public String validateAndFormatDate(String input) {
// 定义输入和输出的日期格式
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// 尝试解析输入的日期时间字符串
LocalDateTime dateTime = LocalDateTime.parse(input, inputFormatter);
// 转换为只包含日期的LocalDate对象
LocalDate date = dateTime.toLocalDate();
// 格式化结果日期为字符串
return date.format(outputFormatter);
} catch (DateTimeParseException e) {
// 如果解析失败,说明输入不符合指定格式,返回原始字符串
return input;
}
}
// // 自定义渲染器
// static class CustomColorRenderer extends DefaultTableCellRenderer {
// public LinkedHashMap<String,LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> valueMap;
// public LinkedHashMap<Integer, String> colorMap;
//
//
// @Override
// public Component getTableCellRendererComponent(JTable table, Object value,
// boolean isSelected, boolean hasFocus,
// int row, int column) {
// // 调用父类方法获取默认渲染组件
// Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
//
// String id = (String)table.getValueAt(row, 1);
// LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> linkedHashMap = valueMap.get(id);
// System.out.println("colorMap======"+colorMap.toString());
// for (Entry<Integer, String> map : colorMap.entrySet()) {
// Integer columnColor = map.getKey();
// if(column == 4 && row == 1) {
// System.out.println("columnColor========"+columnColor);
// String prefValue = map.getValue();
// String[] split = prefValue.split("\\.");
// ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(split[0]);
// String sjwcsj = "";
// String jhks = "";
// String jhjs = "";
//
// for (int i = 0; i < arrayList.size(); i++) {
//
// if(arrayList.get(i).containsKey("SJWCSJ")) {
// sjwcsj = arrayList.get(i).get("SJWCSJ");
// }
// if(arrayList.get(i).containsKey("JHKS")) {
// jhks = arrayList.get(i).get("JHKS");
// }
// if(arrayList.get(i).containsKey("JHJS")) {
// jhjs = arrayList.get(i).get("JHJS");
// }
// }
// System.out.println("sjwcsj========"+sjwcsj);
// System.out.println("jhks========"+jhks);
// System.out.println("jhjs========"+jhjs);
// if(sjwcsj != null && !sjwcsj.isEmpty()) {
// c.setBackground(Color.GREEN);
// }else {
// if(jhjs != null && !jhjs.isEmpty() && jhks != null && !jhks.isEmpty()) {
// if(isNotAfterCurrentDate(jhjs)) {
// c.setBackground(Color.RED);
//
//
// System.out.println("row==="+row+"===column==="+column);
// }else {
// //setBackground(Color.YELLOW);
// c.setBackground(Color.YELLOW);
// }
// }
// }
// }
//
// }
//
//
// return c;
// }
// }
//
public void dgRW(LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> linkedHashMap, String xhs,
ArrayList<Integer> judgeList) {
if (xhs.contains(",")) {
String[] split = xhs.split(",");
for (int z = 0; z < split.length; z++) {
ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(split[z]);
String SJWCSJ = "";
String SFSJGG = "";
String QQRW = "";
for (int i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).containsKey("SFSJGG")) {
SFSJGG = arrayList.get(i).get("SFSJGG");
}
if (arrayList.get(i).containsKey("SJWCSJ")) {
SJWCSJ = arrayList.get(i).get("SJWCSJ");
}
if (arrayList.get(i).containsKey("QQRW")) {
QQRW = arrayList.get(i).get("QQRW");
}
}
System.out.println("---SJWCSJ=======" + SFSJGG);
System.out.println("---SFSJGG=======" + SFSJGG);
System.out.println("---QQRW=======" + SFSJGG);
if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("是")) {
if (SJWCSJ == null || SJWCSJ.isEmpty()) {
judgeList.add(0);
}
} else if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("否") && QQRW != null
&& !QQRW.isEmpty()) {
dgRW(linkedHashMap, QQRW, judgeList);
}
}
} else {
ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(xhs);
String SJWCSJ = "";
String SFSJGG = "";
String QQRW = "";
for (int i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).containsKey("SFSJGG")) {
SFSJGG = arrayList.get(i).get("SFSJGG");
}
if (arrayList.get(i).containsKey("SJWCSJ")) {
SJWCSJ = arrayList.get(i).get("SJWCSJ");
}
if (arrayList.get(i).containsKey("QQRW")) {
QQRW = arrayList.get(i).get("QQRW");
}
}
System.out.println("---SJWCSJ=======" + SJWCSJ);
System.out.println("---SFSJGG=======" + SFSJGG);
System.out.println("---QQRW=======" + QQRW);
if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("是")) {
if (SJWCSJ == null || SJWCSJ.isEmpty()) {
judgeList.add(0);
}
} else if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("否") && QQRW != null && !QQRW.isEmpty()) {
dgRW(linkedHashMap, QQRW, judgeList);
}
}
}
public void CreateProcess(TCSession session, TCComponent target, String processName, String rwmc,String xh,String id)
throws TCException {
try {
TCComponentProcessType processType = (TCComponentProcessType) session.getTypeComponent("Job");
TCComponentTaskTemplateType taskTemplateType = (TCComponentTaskTemplateType) session
.getTypeComponent("EPMTaskTemplate");
TCComponentTaskTemplate taskTemplate = taskTemplateType.find(processName, 0);
if (taskTemplate != null) {
String name = target.getProperty("object_string");
TCComponent create = processType.create(processName + "" + name + "_" + rwmc, "", taskTemplate,
new TCComponent[] { target }, new int[] { 1 });
//System.out.println("uid===================" + create.getUid());
//System.out.println("type==" + create.getType());
//System.out.println("type==" + create.getStringProperty("object_type"));
String updateSql = "update LY_CHANGETASSKFORM_DETAILS set WFUID = '"+create.getUid()+"' where ID = '"+id+"' and XH = '"+xh+"'";
try {
PreparedStatement prepareStatement = conn.prepareStatement(updateSql);
boolean execute = prepareStatement.execute();
System.out.println("execute=="+execute+"|updateSql===="+updateSql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (TCException var7) {
var7.printStackTrace();
throw var7;
}
}
public static TCComponent[] getTCComponentsById(TCSession session, String id) throws Exception {
return session.search("零组件...", new String[] { "零组件 ID" }, new String[] { id });
}
}

@ -0,0 +1,50 @@
package com.langtech.plm.bg;
import javax.swing.SwingUtilities;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
public class QDRWHandler extends AbstractHandler {
private AbstractAIFUIApplication app;
private TCSession session;
// private InterfaceAIFComponent target;
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
app = AIFUtility.getCurrentApplication();
session = (TCSession) app.getSession();
String[] templates = session.getPreferenceService().getStringValues("Connor_TaskFormSummary_Config");
if(templates != null && templates.length > 0) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new QDRWChooseDialog(templates,app);
//d.setModal(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}else {
MessageBox.post("请配置首选项“Connor_TaskFormSummary_Config”", "提示 ", MessageBox.INFORMATION);
}
return null;
}
}

@ -0,0 +1,639 @@
package com.langtech.plm.bg;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.RowSorter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.ListOfValuesInfo;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentListOfValues;
import com.teamcenter.rac.kernel.TCComponentListOfValuesType;
import com.teamcenter.rac.kernel.TCComponentProject;
import com.teamcenter.rac.kernel.TCComponentUser;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCProperty;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.DateButton;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.PropertyLayout;
import com.teamcenter.soa.client.model.LovValue;
import k.util.KOrgDialog;
public class QDRWRWFPDialog extends JFrame implements ActionListener {
private Map<String, JTextField> textMap = new HashMap<>();
private TCSession session;
private JTable table;
private String[] header;
private ArrayList<String> gsPrefTopLine;
private LinkedHashMap<String, String> gsPrefMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> fieldsMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> cfdjPref = new LinkedHashMap<String, String>();
private LinkedHashMap<Integer, String> lovPositionMap = new LinkedHashMap<Integer, String>();
private LinkedHashMap<String, Integer> positionFieldMap = new LinkedHashMap<String, Integer>();
private LinkedHashMap<Integer, Integer> widtheMap = new LinkedHashMap<Integer, Integer>();
// public static final int[] HEADERWIDTH = new int[] { 50, 100, 200, 200, 100,
// 100, 80, 80, 100, 150, 150, 150, 150,150, 150, 150, 150, 150, 150 };
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private DefaultTableModel dtm1;
private JButton yyButton = new JButton("应用");
private JButton gbButton = new JButton("关闭");
private JComboBox<String> cfdJComboBox = new JComboBox<String>();
private DateButton cfsjButton;
private JButton tzsjButton = new JButton("调整时间");
private static ArrayList<String> dateConnList = new ArrayList<String>();
private String type;
private String id;
private String objectString;
private boolean readOnly;
private ArrayList<Integer> canWriteColume = new ArrayList<Integer>();
private ArrayList<Integer> choosePersonColume = new ArrayList<Integer>();
public QDRWRWFPDialog(TCSession session, String type, String id) {
// TODO Auto-generated constructor stub
this.session = session;
this.type = type;
this.id = id;
//this.objectString = objectString;
//this.readOnly = readOnly;
initUI();
}
public void initUI() {
// TODO Auto-generated method stub
yyButton.setEnabled(false);
tzsjButton.setEnabled(false);
this.setTitle(objectString+"变更任务分配表");
this.setLayout(new BorderLayout());
String[] cfdj = session.getPreferenceService().getStringValues("Connor_ChangeTaskForm_TriggerLevelMapping");
if (cfdj == null || cfdj.length <= 0) {
MessageBox.post("请配置首选项“Connor_ChangeTaskForm_TriggerLevelMapping”", "提示 ", MessageBox.INFORMATION);
return;
}
for (int i = 0; i < cfdj.length; i++) {
String[] split = cfdj[i].split("=");
if(split[0].equals(type)) {
String[] split2 = split[1].split(";");
for (int j = 0; j < split2.length; j++) {
String[] split3 = split2[j].split("\\|");
cfdjPref.put(split3[0],split3[1]);
cfdJComboBox.addItem(split3[0]);
}
break;
}
}
//获取首选项匹配的类型
String[] fields = session.getPreferenceService().getStringValues("Connor_ECRECNForm_Datbase_Config");
if (fields == null || fields.length <= 0) {
MessageBox.post("请配置首选项“Connor_ECRECNForm_Datbase_Config”", "提示 ", MessageBox.INFORMATION);
return;
}
for (int i = 0; i < fields.length; i++) {
if(fields[i].contains(type)) {
String[] split = fields[i].split("\\|");
if(split.length == 2) {
String[] split2 = split[1].split(";");
for (int j = 0; j < split2.length; j++) {
String[] split3 = split2[j].split("=");
positionFieldMap.put(split3[0],j);
if(split3.length == 3) {
fieldsMap.put(split3[0],split3[1]);
if(split3[2].contains("%")) {
String[] split4 = split3[2].split("%");
widtheMap.put(j, Integer.parseInt(split4[0]));
canWriteColume.add(j);
}else if(split3[2].contains("#")) {
String[] split4 = split3[2].split("#");
widtheMap.put(j, Integer.parseInt(split4[0]));
choosePersonColume.add(j);
canWriteColume.add(j);
}else {
widtheMap.put(j, Integer.parseInt(split3[2]));
}
}else if(split3.length == 4) {
fieldsMap.put(split3[0],split3[1]);
System.out.println("split3[2]========"+split3[2]);
if(split3[2].contains("%")) {
String[] split4 = split3[2].split("%");
widtheMap.put(j, Integer.parseInt(split4[0]));
System.out.println("split4[0]========"+split4[0]);
canWriteColume.add(j);
}else if(split3[2].contains("#")) {
String[] split4 = split3[2].split("#");
widtheMap.put(j, Integer.parseInt(split4[0]));
choosePersonColume.add(j);
canWriteColume.add(j);
}else {
widtheMap.put(j, Integer.parseInt(split3[2]));
}
lovPositionMap.put(j,split3[3]);
}
}
}
}
}
System.out.println("choosePersonColume====="+choosePersonColume.size());
System.out.println("canWriteColume====="+canWriteColume.size());
System.out.println("fieldsMap====="+fieldsMap);
System.out.println("positionMap====="+lovPositionMap);
System.out.println("widtheMap====="+widtheMap);
if(fieldsMap.size() == 0) {
MessageBox.post("该类型未匹配到首选项!", "提示 ", MessageBox.INFORMATION);
return;
}
Collection<String> valuesCollection = fieldsMap.values();
// 将集合转换为数组
header = valuesCollection.toArray(new String[0]);
JPanel topPanel = getTopPanel();
JScrollPane pane = getTablePanel();
pane.setBorder(BorderFactory.createTitledBorder(""));
// JPanel btnPanel = getRightPanel();
JPanel bottomPane = getBottomPanel();
this.add(topPanel, BorderLayout.NORTH);
this.add(pane, BorderLayout.CENTER);
this.add(bottomPane, BorderLayout.SOUTH);
this.createActionEvent();
this.pack();
this.setPreferredSize(new Dimension(1850, 1000));
this.validate();
this.setVisible(true);
// 设置窗口在屏幕中心
// Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
// int x = (int) screensize.getWidth() / 2 - window.getWidth() / 2;
// int y = (int) screensize.getHeight() / 2 - window.getHeight() / 2;
this.setLocationRelativeTo(null);
//设置列宽
TableColumnModel colModel = table.getColumnModel();
for (Entry<Integer, Integer> map : widtheMap.entrySet()) {
colModel.getColumn(map.getKey()).setPreferredWidth(map.getValue());
}
String[] value = session.getPreferenceService().getStringValues("LD_dbinfo2");
if (value == null || value.length == 0) {
MessageBox.post("首选项LD_dbinfo2配置有误请检查。", "提示", 2);
return;
} else {
Collections.addAll(dateConnList, value);
}
Set<String> keySet = fieldsMap.keySet();
String fieldsSql = "";
for (String string : keySet) {
fieldsSql += string + ",";
}
fieldsSql = fieldsSql.substring(0, fieldsSql.length() - 1);
System.out.println("fieldsSql=========="+fieldsSql);
String sqlString = "SELECT " + fieldsSql + " FROM LY_CHANGETASSKFORM_DETAILS where ID='" + id + "'";
System.out.println(sqlString);
Connection conn = getConn();
PreparedStatement stmt = null;
try{
stmt = conn.prepareStatement(sqlString);
ResultSet result = stmt.executeQuery();
while (result.next()) {
ArrayList<String> arList = new ArrayList<String>();
for (int i = 0; i < fieldsMap.size(); i++) {
//System.out.println("result.getString(i+1)==========="+result.getString(i+1));
arList.add(result.getString(i+1) == null? result.getString(i+1) : validateAndFormatDate(result.getString(i+1)));
}
dtm1.addRow(arList.toArray(new Object[0]));
}
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
if(stmt != null) {
stmt.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void createActionEvent() {
this.yyButton.addActionListener(this);
this.gbButton.addActionListener(this);
this.tzsjButton.addActionListener(this);
}
// 查询部分
private JPanel getTopPanel() {
// TODO Auto-generated method stub
JPanel topPanel = new JPanel();
topPanel.setLayout(new PropertyLayout());
topPanel.add("1.1.left.center", new JLabel("触发等级 "));
topPanel.add("1.2.left.center", cfdJComboBox);
topPanel.add("1.3.left.center", new JLabel(" 触发时间 "));
cfsjButton = new DateButton(null, "yyyy-MM-dd", false, false, false);
cfsjButton.setDate("未设置日期");
topPanel.add("1.4.left.center", cfsjButton);
topPanel.add("1.5.left.center", new JLabel(" "));
topPanel.add("1.6.left.center", tzsjButton);
topPanel.add("2.1.left.center", new JLabel(" "));
return topPanel;
}
// 查询部分
private JPanel getBottomPanel() {
// TODO Auto-generated method stub
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new PropertyLayout());
bottomPanel.add("1.1.left.center", new JLabel(" "));
bottomPanel.add("1.2.left.center", yyButton);
bottomPanel.add("1.3.left.center", new JLabel(" "));
bottomPanel.add("1.4.left.center", gbButton);
return bottomPanel;
}
private JScrollPane getTablePanel() {
// TODO Auto-generated method stub
table = getjTable(null, null, header, null, false);
table.setRowHeight(30);
// table.setPreferredSize(new Dimension(1500,400));
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // 设置表格的自动调整模式为关闭自动调整
// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//设置JTable的列宽随着列表内容的大小进行调整
// table.setPreferredSize(new Dimension(1200,400));
JScrollPane pane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
for (Entry<Integer, String> map : lovPositionMap.entrySet()) {
JComboBox<String> jComboBox = new JComboBox<String>();
String value = map.getValue();
if (value.contains(",")) {
String[] split = value.split(",");
for (int i = 0; i < split.length; i++) {
jComboBox.addItem(split[i]);
}
} else {
jComboBox.addItem(value);
}
table.getColumnModel().getColumn(map.getKey()).setCellEditor(new DefaultCellEditor(jComboBox));
}
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 || e.getClickCount() == 1) { // 判断是否双击并且是在第二列
int row = table.rowAtPoint(e.getPoint());
int column = table.columnAtPoint(e.getPoint());
System.out.println("column========"+column);
if (choosePersonColume.contains(column)) {
System.out.println("1111111111111111111111111111111");
try {
TCComponentUser user = new KOrgDialog("").getUser();
System.out.println("user============"+user.getUserName());
table.setValueAt(user.getUserName()+"("+user.getUserId()+")", row, column);
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
});
pane.setPreferredSize(new Dimension(1800, 850));
pane.setViewportView(table);// 为scrollPane指定显示对象为table
return pane;
}
/***
* Jtable
*
* @param partsTable
* @param dtm
* @param titleNames
* @param values
* @return
*/
public JTable getjTable(JTable partsTable, DefaultTableModel dtm, Object[] titleNames, Object[][] values,
Boolean isTable2) {
// int simpleLen = 100;
// int totleLen = 1000;
if (partsTable == null) {
partsTable = new JTable(this.getTableModel(dtm, titleNames, values));
partsTable.setRowHeight(20);
partsTable.getTableHeader().setReorderingAllowed(false);
partsTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(partsTable.getModel());
partsTable.setRowSorter(sorter);
// for (int i = 0; i < titleNames.length; i++) {
// if(i==2) {
// partsTable.getColumnModel().getColumn(i).setPreferredWidth(200);
// }else {
// partsTable.getColumnModel().getColumn(i).setPreferredWidth(120);
// }
//
// }
}
return partsTable;
}
public DefaultTableModel getTableModel(DefaultTableModel dtm, Object[] titleNames, Object[][] values) {
dtm1 = null;
if (dtm == null) {
dtm1 = new DefaultTableModel(values, titleNames) {
@Override
public boolean isCellEditable(int row, int column) {
if (canWriteColume.size() > 0) {
for (int i = 0; i < canWriteColume.size(); i++) {
if (canWriteColume.get(i) == column) {
return true;
}
}
}
return false;
}
};
}
return dtm1;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object source = e.getSource();
System.out.println("source==>+" + source);
if (source.equals(this.gbButton)) {
dispose();
} else if (source.equals(this.yyButton)) {
// 保存数据
Connection conn = getConn();
PreparedStatement stmt = null;
//遍历一遍判断是否涉及更改
Integer sfsjgg = positionFieldMap.get("SFSJGG");
for (int i = 0; i < table.getRowCount(); i++) {
String valueAt = (String)table.getValueAt(i, sfsjgg);
System.out.println("valueAt============="+valueAt);
if(valueAt == null || valueAt.isEmpty()) {
int row = i+1;
MessageBox.post("第"+row+"行的是否涉及变更未填写!", "提示", 2);
return;
}
}
for (int i = 0; i < table.getRowCount(); i++) {
StringBuilder updateSql = new StringBuilder();
updateSql.append("update LY_CHANGETASSKFORM_DETAILS set ");
for (Entry<String, Integer> map : positionFieldMap.entrySet()) {
updateSql.append(map.getKey());
String valueAt = (String) table.getValueAt(i, map.getValue());
if (valueAt == null || valueAt.isEmpty()) {
updateSql.append("=");
updateSql.append("null,");
} else {
updateSql.append("='");
updateSql.append(table.getValueAt(i, map.getValue()));
updateSql.append("',");
}
}
// 去掉最后一个,
updateSql.deleteCharAt(updateSql.length() - 1);
updateSql.append(" where ID='" + id + "' and XH='" + table.getValueAt(i, 0) + "'");
try {
stmt = conn.prepareStatement(updateSql.toString());
System.out.println("updateSql=========" + updateSql.toString());
stmt.execute();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
MessageBox.post("应用完成!", "提示", 2);
} else if (source.equals(this.tzsjButton)) {
gsPrefTopLine = new ArrayList<String>();
String selectedItem = (String) cfdJComboBox.getSelectedItem();
if (selectedItem == null || selectedItem.isEmpty()) {
MessageBox.post("请选择触发等级!", "提示", 2);
return;
}
Date date = cfsjButton.getDate();
if (date == null) {
MessageBox.post("请选择触发时间!", "提示", 2);
return;
}
String cfsjDate = dateFormat.format(date);
String pref = cfdjPref.get(selectedItem);
if (pref == null || pref.isEmpty()) {
MessageBox.post("未配置触发等级相关的首选项!", "提示", 2);
return;
}
String[] calculateTime = session.getPreferenceService().getStringValues(pref);
if (calculateTime == null || calculateTime.length <= 0) {
MessageBox.post("请配置首选项“" + pref + "”", "提示 ", MessageBox.INFORMATION);
return;
}
for (int i = 0; i < calculateTime.length; i++) {
String[] split = calculateTime[i].split("\\|");
if (i == 0) {
for (int j = 0; j < split.length; j++) {
gsPrefTopLine.add(split[j]);
}
} else {
gsPrefMap.put(split[0], calculateTime[i]);
}
}
System.out.println(positionFieldMap + "==================positionFieldMap");
System.out.println("gsPrefTopLine----------------" + gsPrefTopLine.size());
Integer xh = positionFieldMap.get(gsPrefTopLine.get(0));
// 表里table 开始计算
for (int i = 0; i < table.getRowCount(); i++) {
String xhStr = table.getValueAt(i, xh).toString();
String gsStr = gsPrefMap.get(xhStr);
if (gsStr != null && !gsStr.isEmpty()) {
String[] split = gsStr.split("\\|");
for (int j = 1; j < gsPrefTopLine.size(); j++) {
// 如果有值
System.out.println("gsPrefTopLine.get(j)========" + gsPrefTopLine.get(j));
Integer colume = positionFieldMap.get(gsPrefTopLine.get(j));
if (colume != null) {
System.out.println(positionFieldMap.get(gsPrefTopLine.get(j))
+ "=================positionFieldMap.get(gsPrefTopLine.get(j))");
// 处理公式
String gs = split[j];
System.out.println("gs========" + gs);
if (gs.equals("N")) {
table.setValueAt(cfsjDate, i, colume);
} else {
String[] split2 = gs.split("N");
String time = calculateDate(cfsjDate, Integer.parseInt(split2[1]));
System.out.println("time============" + time);
table.setValueAt(time, i, colume);
}
}
}
}
}
// 调用应用按钮
yyButton.doClick();
MessageBox.post("调整时间完成!", "提示", 2);
}
}
// 获取数据库连接
public static Connection getConn() {
Connection conn = null;
try {
conn = DbPool.getConnection(dateConnList.get(0), dateConnList.get(1));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static String calculateDate(String dateString, int daysToAdd) {
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 解析输入的日期字符串
LocalDate date;
try {
date = LocalDate.parse(dateString, formatter);
} catch (DateTimeParseException e) {
throw new IllegalArgumentException("Invalid date format. Please use yyyy-MM-dd.", e);
}
// 增加或减少天数
LocalDate resultDate = date.plusDays(daysToAdd);
// 格式化结果日期为字符串
return resultDate.format(formatter);
}
public String validateAndFormatDate(String input) {
// 定义输入和输出的日期格式
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// 尝试解析输入的日期时间字符串
LocalDateTime dateTime = LocalDateTime.parse(input, inputFormatter);
// 转换为只包含日期的LocalDate对象
LocalDate date = dateTime.toLocalDate();
// 格式化结果日期为字符串
return date.format(outputFormatter);
} catch (DateTimeParseException e) {
// 如果解析失败,说明输入不符合指定格式,返回原始字符串
return input;
}
}
}

@ -0,0 +1,93 @@
package com.langtech.plm.bg;
import java.awt.Color;
import java.awt.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import javax.swing.JTable;
public class QDRWTableColorRender extends TableColorRender {
public LinkedHashMap<String,LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> valueMap;
public LinkedHashMap<Integer, String> colorMap;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
String id = (String)table.getValueAt(row, 1);
LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> linkedHashMap = valueMap.get(id);
//System.out.println("colorMap======"+colorMap.toString());
for (Entry<Integer, String> map : colorMap.entrySet()) {
Integer columnColor = map.getKey();
if(column == columnColor) {
//System.out.println("columnColor========"+columnColor);
String prefValue = map.getValue();
String[] split = prefValue.split("\\.");
ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(split[0]);
String sjwcsj = "";
String RWXDSJ = "";
String jhjs = "";
for (int i = 0; i < arrayList.size(); i++) {
if(arrayList.get(i).containsKey("SJWCSJ")) {
sjwcsj = arrayList.get(i).get("SJWCSJ");
}
if(arrayList.get(i).containsKey("RWXDSJ")) {
RWXDSJ = arrayList.get(i).get("RWXDSJ");
}
if(arrayList.get(i).containsKey("JHJS")) {
jhjs = arrayList.get(i).get("JHJS");
}
}
//System.out.println("sjwcsj========"+sjwcsj);
//System.out.println("jhks========"+jhks);
//System.out.println("jhjs========"+jhjs);
if(sjwcsj != null && !sjwcsj.isEmpty()) {
renderer.setBackground(Color.GREEN);
}else {
if(jhjs != null && !jhjs.isEmpty() && RWXDSJ != null && !RWXDSJ.isEmpty()) {
if(isNotAfterCurrentDate(jhjs)) {
renderer.setBackground(Color.RED);
// System.out.println("row==="+row+"===column==="+column);
}else {
//setBackground(Color.YELLOW);
renderer.setBackground(Color.GRAY);
}
}
}
}
}
return renderer;
}
public static boolean isNotAfterCurrentDate(String dateStr) {
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// 解析字符串为 LocalDate 对象
LocalDate inputDate = LocalDate.parse(dateStr, formatter);
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 比较两个日期
return !inputDate.isAfter(currentDate); // 返回 true 如果输入日期 <= 当前日期
} catch (DateTimeParseException e) {
// 处理解析异常
System.out.println("Invalid date format: " + e.getMessage());
return false; // 或者你也可以选择抛出异常,或者根据需求做其他处理
}
}
}

@ -0,0 +1,642 @@
package com.langtech.plm.bg;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.RowSorter;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.ListOfValuesInfo;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentListOfValues;
import com.teamcenter.rac.kernel.TCComponentListOfValuesType;
import com.teamcenter.rac.kernel.TCComponentProject;
import com.teamcenter.rac.kernel.TCComponentUser;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCProperty;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.DateButton;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.PropertyLayout;
import com.teamcenter.soa.client.model.LovValue;
import k.util.KOrgDialog;
public class RWFPDialog extends JFrame implements ActionListener {
private Map<String, JTextField> textMap = new HashMap<>();
private TCSession session;
private JTable table;
private String[] header;
private ArrayList<String> gsPrefTopLine;
private LinkedHashMap<String, String> gsPrefMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> fieldsMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> cfdjPref = new LinkedHashMap<String, String>();
private LinkedHashMap<Integer, String> lovPositionMap = new LinkedHashMap<Integer, String>();
private LinkedHashMap<String, Integer> positionFieldMap = new LinkedHashMap<String, Integer>();
private LinkedHashMap<Integer, Integer> widtheMap = new LinkedHashMap<Integer, Integer>();
// public static final int[] HEADERWIDTH = new int[] { 50, 100, 200, 200, 100,
// 100, 80, 80, 100, 150, 150, 150, 150,150, 150, 150, 150, 150, 150 };
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private DefaultTableModel dtm1;
private JButton yyButton = new JButton("应用");
private JButton gbButton = new JButton("关闭");
private JComboBox<String> cfdJComboBox = new JComboBox<String>();
private DateButton cfsjButton;
private JButton tzsjButton = new JButton("调整时间");
private static ArrayList<String> dateConnList = new ArrayList<String>();
private String type;
private String id;
private String objectString;
private boolean readOnly;
private ArrayList<Integer> canWriteColume = new ArrayList<Integer>();
private ArrayList<Integer> choosePersonColume = new ArrayList<Integer>();
public RWFPDialog(TCSession session, String type, String id, String objectString, boolean readOnly) {
// TODO Auto-generated constructor stub
this.session = session;
this.type = type;
this.id = id;
this.objectString = objectString;
this.readOnly = readOnly;
initUI();
}
public void initUI() {
// TODO Auto-generated method stub
if(readOnly) {
yyButton.setEnabled(false);
tzsjButton.setEnabled(false);
}
this.setTitle(objectString+"变更任务分配表");
this.setLayout(new BorderLayout());
String[] cfdj = session.getPreferenceService().getStringValues("Connor_ChangeTaskForm_TriggerLevelMapping");
if (cfdj == null || cfdj.length <= 0) {
MessageBox.post("请配置首选项“Connor_ChangeTaskForm_TriggerLevelMapping”", "提示 ", MessageBox.INFORMATION);
return;
}
for (int i = 0; i < cfdj.length; i++) {
String[] split = cfdj[i].split("=");
if(split[0].equals(type)) {
String[] split2 = split[1].split(";");
for (int j = 0; j < split2.length; j++) {
String[] split3 = split2[j].split("\\|");
cfdjPref.put(split3[0],split3[1]);
cfdJComboBox.addItem(split3[0]);
}
break;
}
}
//获取首选项匹配的类型
String[] fields = session.getPreferenceService().getStringValues("Connor_ECRECNForm_Datbase_Config");
if (fields == null || fields.length <= 0) {
MessageBox.post("请配置首选项“Connor_ECRECNForm_Datbase_Config”", "提示 ", MessageBox.INFORMATION);
return;
}
for (int i = 0; i < fields.length; i++) {
if(fields[i].contains(type)) {
String[] split = fields[i].split("\\|");
if(split.length == 2) {
String[] split2 = split[1].split(";");
for (int j = 0; j < split2.length; j++) {
String[] split3 = split2[j].split("=");
positionFieldMap.put(split3[0],j);
if(split3.length == 3) {
fieldsMap.put(split3[0],split3[1]);
if(split3[2].contains("%")) {
String[] split4 = split3[2].split("%");
widtheMap.put(j, Integer.parseInt(split4[0]));
canWriteColume.add(j);
}else if(split3[2].contains("#")) {
String[] split4 = split3[2].split("#");
widtheMap.put(j, Integer.parseInt(split4[0]));
choosePersonColume.add(j);
canWriteColume.add(j);
}else {
widtheMap.put(j, Integer.parseInt(split3[2]));
}
}else if(split3.length == 4) {
fieldsMap.put(split3[0],split3[1]);
System.out.println("split3[2]========"+split3[2]);
if(split3[2].contains("%")) {
String[] split4 = split3[2].split("%");
widtheMap.put(j, Integer.parseInt(split4[0]));
System.out.println("split4[0]========"+split4[0]);
canWriteColume.add(j);
}else if(split3[2].contains("#")) {
String[] split4 = split3[2].split("#");
widtheMap.put(j, Integer.parseInt(split4[0]));
choosePersonColume.add(j);
canWriteColume.add(j);
}else {
widtheMap.put(j, Integer.parseInt(split3[2]));
}
lovPositionMap.put(j,split3[3]);
}
}
}
}
}
System.out.println("choosePersonColume====="+choosePersonColume.size());
System.out.println("canWriteColume====="+canWriteColume.size());
System.out.println("fieldsMap====="+fieldsMap);
System.out.println("positionMap====="+lovPositionMap);
System.out.println("widtheMap====="+widtheMap);
if(fieldsMap.size() == 0) {
MessageBox.post("该类型未匹配到首选项!", "提示 ", MessageBox.INFORMATION);
return;
}
Collection<String> valuesCollection = fieldsMap.values();
// 将集合转换为数组
header = valuesCollection.toArray(new String[0]);
JPanel topPanel = getTopPanel();
JScrollPane pane = getTablePanel();
pane.setBorder(BorderFactory.createTitledBorder(""));
// JPanel btnPanel = getRightPanel();
JPanel bottomPane = getBottomPanel();
this.add(topPanel, BorderLayout.NORTH);
this.add(pane, BorderLayout.CENTER);
this.add(bottomPane, BorderLayout.SOUTH);
this.createActionEvent();
this.pack();
this.setPreferredSize(new Dimension(1850, 1000));
this.validate();
this.setVisible(true);
// 设置窗口在屏幕中心
// Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
// int x = (int) screensize.getWidth() / 2 - window.getWidth() / 2;
// int y = (int) screensize.getHeight() / 2 - window.getHeight() / 2;
this.setLocationRelativeTo(null);
//设置列宽
TableColumnModel colModel = table.getColumnModel();
for (Entry<Integer, Integer> map : widtheMap.entrySet()) {
colModel.getColumn(map.getKey()).setPreferredWidth(map.getValue());
}
String[] value = session.getPreferenceService().getStringValues("LD_dbinfo2");
if (value == null || value.length == 0) {
MessageBox.post("首选项LD_dbinfo2配置有误请检查。", "提示", 2);
return;
} else {
Collections.addAll(dateConnList, value);
}
Set<String> keySet = fieldsMap.keySet();
String fieldsSql = "";
for (String string : keySet) {
fieldsSql += string + ",";
}
fieldsSql = fieldsSql.substring(0, fieldsSql.length() - 1);
System.out.println("fieldsSql=========="+fieldsSql);
String sqlString = "SELECT " + fieldsSql + " FROM LY_CHANGETASSKFORM_DETAILS where ID='" + id + "'";
System.out.println(sqlString);
Connection conn = getConn();
PreparedStatement stmt = null;
try{
stmt = conn.prepareStatement(sqlString);
ResultSet result = stmt.executeQuery();
while (result.next()) {
ArrayList<String> arList = new ArrayList<String>();
for (int i = 0; i < fieldsMap.size(); i++) {
//System.out.println("result.getString(i+1)==========="+result.getString(i+1));
arList.add(result.getString(i+1) == null? result.getString(i+1) : validateAndFormatDate(result.getString(i+1)));
}
dtm1.addRow(arList.toArray(new Object[0]));
}
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
if(stmt != null) {
stmt.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void createActionEvent() {
this.yyButton.addActionListener(this);
this.gbButton.addActionListener(this);
this.tzsjButton.addActionListener(this);
}
// 查询部分
private JPanel getTopPanel() {
// TODO Auto-generated method stub
JPanel topPanel = new JPanel();
topPanel.setLayout(new PropertyLayout());
topPanel.add("1.1.left.center", new JLabel("触发等级 "));
topPanel.add("1.2.left.center", cfdJComboBox);
topPanel.add("1.3.left.center", new JLabel(" 触发时间 "));
cfsjButton = new DateButton(null, "yyyy-MM-dd", false, false, false);
cfsjButton.setDate("未设置日期");
topPanel.add("1.4.left.center", cfsjButton);
topPanel.add("1.5.left.center", new JLabel(" "));
topPanel.add("1.6.left.center", tzsjButton);
topPanel.add("2.1.left.center", new JLabel(" "));
return topPanel;
}
// 查询部分
private JPanel getBottomPanel() {
// TODO Auto-generated method stub
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new PropertyLayout());
bottomPanel.add("1.1.left.center", new JLabel(" "));
bottomPanel.add("1.2.left.center", yyButton);
bottomPanel.add("1.3.left.center", new JLabel(" "));
bottomPanel.add("1.4.left.center", gbButton);
return bottomPanel;
}
private JScrollPane getTablePanel() {
// TODO Auto-generated method stub
table = getjTable(null, null, header, null, false);
table.setRowHeight(30);
// table.setPreferredSize(new Dimension(1500,400));
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // 设置表格的自动调整模式为关闭自动调整
// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//设置JTable的列宽随着列表内容的大小进行调整
// table.setPreferredSize(new Dimension(1200,400));
JScrollPane pane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
for (Entry<Integer, String> map : lovPositionMap.entrySet()) {
JComboBox<String> jComboBox = new JComboBox<String>();
String value = map.getValue();
if (value.contains(",")) {
String[] split = value.split(",");
for (int i = 0; i < split.length; i++) {
jComboBox.addItem(split[i]);
}
} else {
jComboBox.addItem(value);
}
table.getColumnModel().getColumn(map.getKey()).setCellEditor(new DefaultCellEditor(jComboBox));
}
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 || e.getClickCount() == 1) { // 判断是否双击并且是在第二列
int row = table.rowAtPoint(e.getPoint());
int column = table.columnAtPoint(e.getPoint());
System.out.println("column========"+column);
if (choosePersonColume.contains(column)) {
System.out.println("1111111111111111111111111111111");
try {
TCComponentUser user = new KOrgDialog("").getUser();
System.out.println("user============"+user.getUserName());
table.setValueAt(user.getUserName()+"("+user.getUserId()+")", row, column);
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
});
pane.setPreferredSize(new Dimension(1800, 850));
pane.setViewportView(table);// 为scrollPane指定显示对象为table
return pane;
}
/***
* Jtable
*
* @param partsTable
* @param dtm
* @param titleNames
* @param values
* @return
*/
public JTable getjTable(JTable partsTable, DefaultTableModel dtm, Object[] titleNames, Object[][] values,
Boolean isTable2) {
// int simpleLen = 100;
// int totleLen = 1000;
if (partsTable == null) {
partsTable = new JTable(this.getTableModel(dtm, titleNames, values));
partsTable.setRowHeight(20);
partsTable.getTableHeader().setReorderingAllowed(false);
partsTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(partsTable.getModel());
partsTable.setRowSorter(sorter);
// for (int i = 0; i < titleNames.length; i++) {
// if(i==2) {
// partsTable.getColumnModel().getColumn(i).setPreferredWidth(200);
// }else {
// partsTable.getColumnModel().getColumn(i).setPreferredWidth(120);
// }
//
// }
}
return partsTable;
}
public DefaultTableModel getTableModel(DefaultTableModel dtm, Object[] titleNames, Object[][] values) {
dtm1 = null;
if (dtm == null) {
dtm1 = new DefaultTableModel(values, titleNames) {
@Override
public boolean isCellEditable(int row, int column) {
if (canWriteColume.size() > 0) {
for (int i = 0; i < canWriteColume.size(); i++) {
if (canWriteColume.get(i) == column) {
return true;
}
}
}
return false;
}
};
}
return dtm1;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object source = e.getSource();
System.out.println("source==>+" + source);
if (source.equals(this.gbButton)) {
dispose();
} else if (source.equals(this.yyButton)) {
// 保存数据
Connection conn = getConn();
PreparedStatement stmt = null;
//遍历一遍判断是否涉及更改
Integer sfsjgg = positionFieldMap.get("SFSJGG");
for (int i = 0; i < table.getRowCount(); i++) {
String valueAt = (String)table.getValueAt(i, sfsjgg);
System.out.println("valueAt============="+valueAt);
if(valueAt == null || valueAt.isEmpty()) {
int row = i+1;
MessageBox.post("第"+row+"行的是否涉及变更未填写!", "提示", 2);
return;
}
}
for (int i = 0; i < table.getRowCount(); i++) {
StringBuilder updateSql = new StringBuilder();
updateSql.append("update LY_CHANGETASSKFORM_DETAILS set ");
for (Entry<String, Integer> map : positionFieldMap.entrySet()) {
updateSql.append(map.getKey());
String valueAt = (String) table.getValueAt(i, map.getValue());
if (valueAt == null || valueAt.isEmpty()) {
updateSql.append("=");
updateSql.append("null,");
} else {
updateSql.append("='");
updateSql.append(table.getValueAt(i, map.getValue()));
updateSql.append("',");
}
}
// 去掉最后一个,
updateSql.deleteCharAt(updateSql.length() - 1);
updateSql.append(" where ID='" + id + "' and XH='" + table.getValueAt(i, 0) + "'");
try {
stmt = conn.prepareStatement(updateSql.toString());
System.out.println("updateSql=========" + updateSql.toString());
stmt.execute();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
MessageBox.post("应用完成!", "提示", 2);
} else if (source.equals(this.tzsjButton)) {
gsPrefTopLine = new ArrayList<String>();
String selectedItem = (String) cfdJComboBox.getSelectedItem();
if (selectedItem == null || selectedItem.isEmpty()) {
MessageBox.post("请选择触发等级!", "提示", 2);
return;
}
Date date = cfsjButton.getDate();
if (date == null) {
MessageBox.post("请选择触发时间!", "提示", 2);
return;
}
String cfsjDate = dateFormat.format(date);
String pref = cfdjPref.get(selectedItem);
if (pref == null || pref.isEmpty()) {
MessageBox.post("未配置触发等级相关的首选项!", "提示", 2);
return;
}
String[] calculateTime = session.getPreferenceService().getStringValues(pref);
if (calculateTime == null || calculateTime.length <= 0) {
MessageBox.post("请配置首选项“" + pref + "”", "提示 ", MessageBox.INFORMATION);
return;
}
for (int i = 0; i < calculateTime.length; i++) {
String[] split = calculateTime[i].split("\\|");
if (i == 0) {
for (int j = 0; j < split.length; j++) {
gsPrefTopLine.add(split[j]);
}
} else {
gsPrefMap.put(split[0], calculateTime[i]);
}
}
System.out.println(positionFieldMap + "==================positionFieldMap");
System.out.println("gsPrefTopLine----------------" + gsPrefTopLine.size());
Integer xh = positionFieldMap.get(gsPrefTopLine.get(0));
// 表里table 开始计算
for (int i = 0; i < table.getRowCount(); i++) {
String xhStr = table.getValueAt(i, xh).toString();
String gsStr = gsPrefMap.get(xhStr);
if (gsStr != null && !gsStr.isEmpty()) {
String[] split = gsStr.split("\\|");
for (int j = 1; j < gsPrefTopLine.size(); j++) {
// 如果有值
System.out.println("gsPrefTopLine.get(j)========" + gsPrefTopLine.get(j));
Integer colume = positionFieldMap.get(gsPrefTopLine.get(j));
if (colume != null) {
System.out.println(positionFieldMap.get(gsPrefTopLine.get(j))
+ "=================positionFieldMap.get(gsPrefTopLine.get(j))");
// 处理公式
String gs = split[j];
System.out.println("gs========" + gs);
if (gs.equals("N")) {
table.setValueAt(cfsjDate, i, colume);
} else {
String[] split2 = gs.split("N");
String time = calculateDate(cfsjDate, Integer.parseInt(split2[1]));
System.out.println("time============" + time);
table.setValueAt(time, i, colume);
}
}
}
}
}
// 调用应用按钮
yyButton.doClick();
MessageBox.post("调整时间完成!", "提示", 2);
}
}
// 获取数据库连接
public static Connection getConn() {
Connection conn = null;
try {
conn = DbPool.getConnection(dateConnList.get(0), dateConnList.get(1));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static String calculateDate(String dateString, int daysToAdd) {
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 解析输入的日期字符串
LocalDate date;
try {
date = LocalDate.parse(dateString, formatter);
} catch (DateTimeParseException e) {
throw new IllegalArgumentException("Invalid date format. Please use yyyy-MM-dd.", e);
}
// 增加或减少天数
LocalDate resultDate = date.plusDays(daysToAdd);
// 格式化结果日期为字符串
return resultDate.format(formatter);
}
public String validateAndFormatDate(String input) {
// 定义输入和输出的日期格式
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// 尝试解析输入的日期时间字符串
LocalDateTime dateTime = LocalDateTime.parse(input, inputFormatter);
// 转换为只包含日期的LocalDate对象
LocalDate date = dateTime.toLocalDate();
// 格式化结果日期为字符串
return date.format(outputFormatter);
} catch (DateTimeParseException e) {
// 如果解析失败,说明输入不符合指定格式,返回原始字符串
return input;
}
}
}

@ -0,0 +1,114 @@
package com.langtech.plm.bg;
import javax.swing.SwingUtilities;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
public class RWFPHandler extends AbstractHandler {
private AbstractAIFUIApplication app;
private TCSession session;
// private InterfaceAIFComponent target;
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
app = AIFUtility.getCurrentApplication();
session = (TCSession) app.getSession();
// target = app.getTargetComponent();
// if (target == null || !(target instanceof TCComponentFolder)) {
// MessageBox.post(app.getDesktop(), "请选择系统总目录文件夹进行导入!", "导入位置选择", MessageBox.WARNING);
// return null;
// }
//判断是否可编辑
boolean readOnly = true;
String userId = "";
try {
userId = session.getUser().getUserId();
} catch (TCException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
String[] templates = session.getPreferenceService().getStringValues("Connor_TaskForm_ChangeDateButton_User");
if(templates != null && templates.length > 0 && userId != null && !userId.isEmpty()) {
if(templates[0].contains(userId)) {
readOnly = false;
}
}
final boolean readOnlyFinal = readOnly;
InterfaceAIFComponent target = app.getTargetComponent();
if(target instanceof TCComponentItem) {
TCComponentItem item = (TCComponentItem)target;
String type = item.getType();
try {
String id = item.getStringProperty("item_id");
String objectString = item.getStringProperty("object_string");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new RWFPDialog(session,type,id,objectString,readOnlyFinal);
//d.setModal(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else if(target instanceof TCComponentItemRevision){
TCComponentItemRevision rev = (TCComponentItemRevision)target;
TCComponentItem item = null;
try {
item = rev.getItem();
} catch (TCException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String type = item.getType();
try {
String id = item.getStringProperty("item_id");
String objectString = item.getStringProperty("object_string");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new RWFPDialog(session,type,id,objectString,readOnlyFinal);
//d.setModal(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else {
MessageBox.post(app.getDesktop(), "请选择正确对象!", "提示", MessageBox.WARNING);
return null;
}
return null;
}
}

@ -0,0 +1,54 @@
package com.langtech.plm.bg;
import java.awt.Component;
import java.util.List;
import javax.swing.JCheckBox;
import javax.swing.JRadioButton;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.EventListenerList;
import javax.swing.table.TableCellRenderer;
import com.teamcenter.rac.treetable.JTreeTable;
public class TableCellCheckboxRenderer extends JCheckBox implements
TableCellRenderer {
private List<Integer> processRows;
protected EventListenerList listenerList = new EventListenerList();
protected ChangeEvent changeEvent = new ChangeEvent(this);
//private TestTreeTableModel tableModel;
public List<Integer> getProcessRows() {
return processRows;
}
public void setProcessRows(List<Integer> processRows) {
this.processRows = processRows;
}
public TableCellCheckboxRenderer(final JTable table) {
}
public TableCellCheckboxRenderer(final JTreeTable table) {
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub
this.setHorizontalAlignment(SwingConstants.CENTER);// ±íÍ·±êÇ©¾çÖÐ
// this.setBorderPainted(true);
if(value != null)
{
this.setSelected(value.toString().equals("1"));
}
else
{
this.setSelected(false);
}
return this;
}
}

@ -0,0 +1,71 @@
package com.langtech.plm.bg;
import java.awt.Color;
import java.awt.Component;
import java.util.HashMap;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
public class TableColorRender implements TableCellRenderer {
//
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
//IntegerÁÐ String±êʶ ColorÑÕÉ«
public HashMap<Integer, HashMap<String, Color>> allForegroundInfos = new HashMap<Integer, HashMap<String, Color>>();
public HashMap<Integer, Integer> allFColorColumn = new HashMap<Integer, Integer>();
//IntegerÁÐ String±êʶ ColorÑÕÉ«
public HashMap<Integer, HashMap<String, Color>> allBackgroundInfos = new HashMap<Integer, HashMap<String, Color>>();
public HashMap<Integer, Integer> allBColorColumn = new HashMap<Integer, Integer>();
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (value != null && value instanceof String) {
Color foreground = table.getForeground();
Color background = table.getBackground();
if (isSelected) {
background = new Color(10, 36, 106);
}
Boolean bSetFG = false;
Integer infoCol = allFColorColumn.get(column);
if (infoCol != null) {
HashMap<String, Color> fgc = allForegroundInfos.get(infoCol);
if (fgc != null) {
String infoValue = table.getValueAt(row, infoCol).toString();
Color color = fgc.get(infoValue);
if (color != null) {
foreground = color;
bSetFG = true;
}
}
}
Boolean bSetBG = false;
infoCol = allBColorColumn.get(column);
if (infoCol != null) {
HashMap<String, Color> bgc = allBackgroundInfos.get(infoCol);
if (bgc != null) {
String infoValue = table.getValueAt(row, infoCol).toString();
Color color = bgc.get(infoValue);
if (color != null) {
background = color;
bSetBG = true;
}
}
}
if (!bSetFG && !bSetBG && isSelected) {
foreground = Color.WHITE;
}
renderer.setForeground(foreground);
renderer.setBackground(background);
}
return renderer;
}
}

@ -17,11 +17,14 @@ public class CheckBoxTreeNodeSelectionListener extends MouseAdapter
int y = event.getY();
int row = tree.getRowForLocation(x, y);
TreePath path = tree.getPathForRow(row);
System.out.println(path);
if(path != null)
{
CheckBoxTreeNode node = (CheckBoxTreeNode)path.getLastPathComponent();
System.out.println(node);
if(node != null)
{
boolean isSelected = !node.isSelected();
node.setSelected(isSelected);
((DefaultTreeModel)tree.getModel()).nodeStructureChanged(node);

@ -7,6 +7,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.JButton;
@ -44,7 +46,7 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
private JTree jtree;
private JButton okButton;
private JButton celButton;
private HashMap<String, String> preMap = new HashMap<String, String>();
private HashMap<String, ArrayList<String>> preMap = new HashMap<String, ArrayList<String>>();
public static final String preName = "connor_LY6_FolderTemp";
@ -90,11 +92,15 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
if(prefVal.contains("=")) {
String[] split = prefVal.split("=");
modelBox.addItem(split[0]);
preMap.put(split[0], split[1]);
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(split[1]);
arrayList.add(split[2]);
arrayList.add(split[3]);
preMap.put(split[0], arrayList);
}
}
}
nameLabel = new JLabel("成品图号:");
nameLabel = new JLabel("项目名称");
nameField = new JTextField();
nameField.setPreferredSize(new Dimension(200,30));
JPanel topPanel = new JPanel();
@ -131,7 +137,8 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
* @param tree
*/
private void initTree(JTree tree){
String puid = preMap.get(modelBox.getSelectedItem());
ArrayList<String> list = preMap.get(modelBox.getSelectedItem());
String puid = list.get(0);
TCComponent component;
try {
component = session.stringToComponent(puid);
@ -214,18 +221,19 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
ArrayList<String> list = preMap.get(modelBox.getSelectedItem());
if (name.isEmpty()) {
MessageBox.post("请填写成品图号", "提示 ", MessageBox.INFORMATION);
MessageBox.post("请填写项目名称", "提示 ", MessageBox.INFORMATION);
} else {
TCComponentFolderType folderType;
try {
KUtil.setByPass(true);
folderType = (TCComponentFolderType) session.getTypeComponent("LD6_CusProdFolder");
folderType = (TCComponentFolderType) session.getTypeComponent(list.get(1));
TCComponentFolder folder = KUtil.createFolderBySOA(folderType.getTypeName(), name);
//TCComponentFolder folder = folderType.create(name, "", "LD6_CusProdFolder");
target.add("contents", folder);
CheckBoxTreeNode root = (CheckBoxTreeNode) jtree.getModel().getRoot();
createFolderStruct(root,folder,(TCComponentFolderType) session.getTypeComponent("LD6_ProjMaFolder"),true);
createFolderStruct(root,folder,(TCComponentFolderType) session.getTypeComponent(list.get(2)),true);
KUtil.setByPass(false);
disposeDialog();
} catch (Exception e1) {
@ -239,6 +247,15 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
if(event.getStateChange() == ItemEvent.SELECTED) {
//ÖØÐÂË¢ÐÂÊ÷
jtree.setModel(null);
// 获取并移除所有的 MouseListener
MouseListener[] mouseListeners = jtree.getMouseListeners();
for (MouseListener listener : mouseListeners) {
jtree.removeMouseListener(listener);
}
// 重新验证和重绘
jtree.revalidate();
jtree.repaint();
initTree(jtree);
}else if(event.getStateChange() == ItemEvent.DESELECTED){

@ -0,0 +1,94 @@
package com.langtech.plm.modifyEffectiveTime;
import org.jdesktop.swingx.JXDatePicker;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.EventObject;
public class DatePickerEditor extends AbstractCellEditor implements TableCellEditor {
private JXDatePicker datePicker;
private JTable table;
private int row;
private int column;
public DatePickerEditor() {
datePicker = new JXDatePicker();
// 设置日期格式
datePicker.setFormats(new SimpleDateFormat("yyyy-MM-dd"));
datePicker.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
fireEditingStopped();
}
});
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
this.table = table;
this.row = row;
this.column = column;
System.out.println("getTableCellEditorComponent: "+value);
if (value instanceof Date) {
datePicker.setDate((Date) value);
} else {
datePicker.setDate(null);
}
return datePicker;
}
@Override
public Object getCellEditorValue() {
try {
// 获取用户输入的文本
String text = datePicker.getEditor().getText();
if (text.trim().isEmpty()) {
return null;
}
// 尝试将输入解析为日期
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.setLenient(false); // 严格解析日期格式
return format.parse(text);
} catch (Exception e) {
// 如果解析失败,打印错误信息并返回当前日期选择器的值
System.err.println("Invalid date format: " + e.getMessage());
}
// 返回日期选择器当前的值
return datePicker.getDate();
}
@Override
public boolean isCellEditable(EventObject anEvent) {
return true;
}
@Override
public boolean stopCellEditing() {
System.out.println("stopCellEditing: " + datePicker.getDate());
fireEditingStopped();
return true;
}
@Override
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
@Override
public void cancelCellEditing() {
super.cancelCellEditing();
}
}

@ -0,0 +1,265 @@
package com.langtech.plm.modifyEffectiveTime;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import org.jdesktop.swingx.JXDatePicker;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.kernel.TCUserService;
import com.teamcenter.rac.util.MessageBox;
public class ModifyEffectiveTimeDialog extends JFrame implements Runnable {
private JTable table;
private JButton okButton;
private boolean flag;
private final String title;
private final String[] columnNames;
private Object[][] data;
private int[] dateIndex;
private boolean pass;
public static void main(String[] args) {
}
public ModifyEffectiveTimeDialog(String title, Object... args) {
this.title = title;
this.columnNames = (String[]) args[0];
this.data = (Object[][]) args[1];
this.dateIndex = (int[]) args[2];
this.pass = (boolean) args[3];
}
@Override
public void run() {
// TODO Auto-generated method stub
initUI();
}
public void setWithHeight(int with, int height) {
this.setSize(with, height);
}
public void initUI() {
this.setTitle(title);
// 初始化所有信息
initializationComponent();
// 添加内容到JFrame 并设置它的位置
JPanel bottomPanel = getBottomPanel();
// 创建表格和滚动条
JPanel tableScrollPane = createTable();
tableScrollPane.setPreferredSize(new Dimension(700, 200)); // 设置滚动条的大小
this.getContentPane().add(tableScrollPane, BorderLayout.CENTER);
this.getContentPane().add(bottomPanel, BorderLayout.SOUTH);
// 设置窗口居中
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// 设置可见性
this.setVisible(true);
}
public void initializationComponent() {
okButton = new JButton("应用");
okButton.setEnabled(pass);
}
public JPanel createTable() {
JPanel panel = new JPanel(new BorderLayout(10, 10));
panel.setBorder(new EmptyBorder(20, 20, 10, 20));
// 创建 DefaultTableModel 实例
DefaultTableModel model = new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int row, int column) {
if (column == 0) {
return false;
}
return true;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 1) {
return Date.class;
}
return super.getColumnClass(columnIndex);
}
};
table = new JTable(model);
// 设置行高
table.setRowHeight(25); // 设置行高为30像素
table.setFont(new Font("微软雅黑", Font.PLAIN, 12));
// 禁用列重排序
table.getTableHeader().setReorderingAllowed(false);
// 禁用自动调整列宽
// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// 设置表格填满视口高度
// table.setFillsViewportHeight(true);
// 设置列宽
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(0).setPreferredWidth(300);
columnModel.getColumn(1).setPreferredWidth(143);
table.removeColumn(columnModel.getColumn(columnModel.getColumnCount() - 1));
// 自定义渲染器,使所有列居中对齐
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
((JLabel) c).setHorizontalAlignment(SwingConstants.CENTER); // 设置文本居中对齐
return c;
}
};
// 应用居中对齐渲染器
for (int i = 0; i < columnModel.getColumnCount(); i++) {
columnModel.getColumn(i).setCellRenderer(centerRenderer);
}
// 自定义渲染器
TableCellRenderer dateRenderer = (JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
int column) -> {
JXDatePicker datePicker = new JXDatePicker();
if (value instanceof Date) {
datePicker.setFormats(new SimpleDateFormat("yyyy-MM-dd"));
datePicker.setDate((Date) value);
}
return datePicker;
};
// 自定义编辑器
TableCellEditor dateEditor = new DatePickerEditor();
// 为 IssueDate 和 MaterialDeliveryTime 列设置日期选择器
for (int index : dateIndex) {
// 设置渲染器和编辑器
table.getColumnModel().getColumn(index).setCellRenderer(dateRenderer);
table.getColumnModel().getColumn(index).setCellEditor(dateEditor);
}
// 创建 JScrollPane 并设置水平滚动条始终可见
JScrollPane scrollPane = new JScrollPane(table);
// scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
// 添加表格到中心区域
panel.add(scrollPane, BorderLayout.CENTER);
return panel;
}
public JPanel getBottomPanel() {
// TODO Auto-generated method stub
JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 70, 10));
bottomPanel.setBorder(BorderFactory.createEmptyBorder(-10, 0, 10, 0));
bottomPanel.add(this.okButton);
// 添加监听
okButton.addActionListener(e -> {
flag = true;
List<String[]> tableData = getTableData();
if (tableData != null) {
tableData.forEach(rowData -> {
System.out.println(Arrays.toString(rowData));
});
}
if (flag) {
MessageBox.post("修改成功! ", "Info", MessageBox.INFORMATION);
this.dispose(); // 关闭窗口
} else {
MessageBox.post("生效时间不允许超出两行", "Error", MessageBox.ERROR);
}
});
return bottomPanel;
}
public List<String[]> getTableData() {
DefaultTableModel model = (DefaultTableModel) table.getModel();
int rowCount = model.getRowCount();
int columnCount = model.getColumnCount();
List<String[]> tableData = new ArrayList<>();
int count = 0;
for (int row = 0; row < rowCount; row++) {
Object obj = model.getValueAt(row, 1);
if (obj instanceof Date && obj != null) {
count++;
if (count == 3) {
flag = false;
return null;
}
}
}
setByPass(true);
try {
for (int row = 0; row < rowCount; row++) {
String name = (String) model.getValueAt(row, 0);
Object obj = model.getValueAt(row, 1);
System.out.println("name: " + name + " || date: " + obj);
TCComponentItemRevision rev = (TCComponentItemRevision) model.getValueAt(row, 2);
rev.setDateProperty("ly6_deadline", (Date) obj);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
MessageBox.post(e.getMessage(), "Error", MessageBox.ERROR);
}
setByPass(false);
return tableData;
}
@SuppressWarnings("deprecation")
public void setByPass(boolean pass) {
TCUserService userservice = null;
if (userservice == null) {
userservice = ((TCSession) AIFUtility.getCurrentApplication().getSession()).getUserService();
}
Object[] obj = new Object[1];
obj[0] = "origin";
try {
if (pass) {
userservice.call("CONNOR_open_bypass", obj);
System.out.println("旁路已开启");
} else {
userservice.call("CONNOR_close_bypass", obj);
System.out.println("旁路已关闭");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,165 @@
package com.langtech.plm.modifyEffectiveTime;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentBOMWindow;
import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCPreferenceService;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
public class ModifyEffectiveTimeHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent arg0) throws ExecutionException {
AbstractAIFApplication app = AIFUtility.getCurrentApplication();
TCSession session = (TCSession) app.getSession();
TCPreferenceService preferenceService = session.getPreferenceService();
String[] preValues = preferenceService.getStringValues("LY__FormulaDeadLine_Config");
if ((preValues != null && preValues.length < 3) || preValues == null) {
MessageBox.post("LY__FormulaDeadLine_Config配置错误", "Error", MessageBox.ERROR);
return null;
}
String[] types = preValues[0].split(";");
String[] childTypes = preValues[1].split(";");
String[] permissionPeo = preValues[2].split(";");
TCComponent targetComponent = (TCComponent)app.getTargetComponent();
String targetType = "";
try {
if(targetComponent instanceof TCComponentItemRevision) {
targetType = targetComponent.getType();
}else if(targetComponent instanceof TCComponentBOMLine) {
targetType = ((TCComponentBOMLine) targetComponent).getItemRevision().getType();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
boolean isExist = false;
System.out.println("当前类型:" + targetType);
for (String type : types) {
System.out.println("当前配置类型:" + type);
if (type.equals(targetType)) {
isExist = true;
break;
}
}
if (!isExist) {
MessageBox.post("请选择指定类型的牌号版本执行修改配方生效日期功能", "Error", MessageBox.ERROR);
return null;
}
boolean pass = false;
String userName = session.getUserName();
System.out.println("当前用户:" + userName);
for (String name : permissionPeo) {
System.out.println("当前配置用户:" + name);
if (userName.equals(name)) {
pass = true;
break;
}
}
Object[][] data = null;
try {
List<TCComponentItemRevision> revList = getChildBom(session, targetComponent, childTypes);
data = new Object[revList.size()][];
for (int i = 0; i < revList.size(); i++) {
TCComponentItemRevision tempRev = revList.get(i);
Object[] tempData = new Object[3];
tempData[0] = tempRev.getProperty("object_string");
tempData[1] = parseDate(tempRev.getProperty("ly6_deadline"));
tempData[2] = tempRev;
data[i] = tempData;
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 表格列标题
String[] columnNames = new String[] { "对象", "生效时间", "TCComponent" };
int[] dateIndex = new int[] { 1 };
ModifyEffectiveTimeDialog dialog = new ModifyEffectiveTimeDialog("修改配方生效时间", columnNames, data, dateIndex,
pass);
dialog.setWithHeight(500, 300);
new Thread(dialog).start();
return null;
}
public List<TCComponentItemRevision> getChildBom(TCSession session, TCComponent targetComponent,
String[] childTypes) throws TCException {
// TODO Auto-generated method stub
TCComponentBOMLine topLine = null;
if (targetComponent instanceof TCComponentItemRevision) {
TCComponentItemRevision rev = (TCComponentItemRevision) targetComponent;
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
topLine = view.setWindowTopLine(rev.getItem(), rev, null, null);
} else if (targetComponent instanceof TCComponentBOMLine) {
topLine = ((TCComponentBOMLine) targetComponent);
}
boolean hasChildren = topLine.hasChildren();
List<TCComponentItemRevision> revList = new ArrayList<TCComponentItemRevision>();
if (!hasChildren) {
return revList;
}
String revType = "";
AIFComponentContext[] childrena = topLine.getChildren();
for (AIFComponentContext children : childrena) {
TCComponentBOMLine component = (TCComponentBOMLine) children.getComponent();
TCComponentItemRevision itemRevision = component.getItemRevision();
// revType = itemRevision.getProperty("object_type");
revType = itemRevision.getType();
System.out.println("子类对象类型getType()获取的值:" + revType);
for (String type : childTypes) {
System.out.println("子类配置对象类型:" + type);
if (revType.equals(type)) {
revList.add(itemRevision);
break;
}
}
}
return revList;
}
public Date parseDate(String dateString) {
if (dateString == null || dateString.isEmpty()) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
}

@ -30,17 +30,24 @@ public class CheckHeaderCellRenderer implements TableCellRenderer {
// »ñµÃÑ¡ÖÐÁÐ
int selectColumn = tableHeader.columnAtPoint(e.getPoint());
if (selectColumn == 0) {
System.out.println("selectColumn == 0selectColumn == 0selectColumn == 0");
boolean value = !selectBox.isSelected();
selectBox.setSelected(value);
// tableModel.selectAllOrNull(value);
tableHeader.repaint();
if(value) {
for(int i=0;i<table.getRowCount();i++) {
table.setValueAt("1", i, 0);
if(table.getValueAt(i, 5).equals("×ÔÖÆ")) {
table.setValueAt("1", i, 0);
}
}
}else {
for(int i=0;i<table.getRowCount();i++) {
table.setValueAt("0", i, 0);
if(table.getValueAt(i, 5).equals("×ÔÖÆ")) {
table.setValueAt("0", i, 0);
}
}
}

@ -15,7 +15,7 @@ public class DialogFrame extends JDialog {
private JComboBox<String> comboBox;
private Object syncObject;
public DialogFrame(JFrame owner,JComboBox<String> comboBox,ArrayList<String> list) {
super(owner, "Dialog Window", true); // 模态对话框
super(owner, "选择已有M", true); // 模态对话框
this.comboBox = comboBox;
this.syncObject = syncObject;
JButton button = new JButton("È·¶¨");

File diff suppressed because it is too large Load Diff

@ -9,9 +9,12 @@ import org.eclipse.core.commands.ExecutionException;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentSchedule;
import com.teamcenter.rac.kernel.TCComponentScheduleTask;
import com.teamcenter.rac.kernel.TCComponentTask;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
@ -30,23 +33,69 @@ public class MpartHandler extends AbstractHandler{
public void run() {
InterfaceAIFComponent[] targetComponent = app.getTargetComponents();
ArrayList<TCComponentItemRevision> arrayList = new ArrayList<TCComponentItemRevision>();
for (int i = 0; i < targetComponent.length; i++) {
InterfaceAIFComponent component = targetComponent[i];
if(component instanceof TCComponentItemRevision) {
arrayList.add((TCComponentItemRevision)component);
String[] types = session.getPreferenceService().getStringValues("LY6_EPartType");
if(types != null && types.length > 0) {
for (int i = 0; i < targetComponent.length; i++) {
InterfaceAIFComponent component = targetComponent[i];
if(component instanceof TCComponentItemRevision) {
String type = component.getType();
System.out.println("type================"+type);
if(types[0].contains(type)) {
arrayList.add((TCComponentItemRevision)component);
}
}else if(component instanceof TCComponentTask) {
TCComponentTask task = (TCComponentTask)component;
try {
TCComponent[] targets = task.getRelatedComponents("root_target_attachments");
for(TCComponent attachment:targets) {
if(attachment instanceof TCComponentItemRevision) {
String type = attachment.getType();
System.out.println("type================"+type);
if(types[0].contains(type)) {
arrayList.add((TCComponentItemRevision)attachment);
}
}
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(component instanceof TCComponentBOMLine) {
TCComponentBOMLine bomLine = (TCComponentBOMLine)component;
try {
TCComponentItemRevision itemRevision = bomLine.getItemRevision();
String type = itemRevision.getType();
System.out.println("type2================"+type);
if(types[0].contains(type)) {
arrayList.add((TCComponentItemRevision)itemRevision);
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
System.out.println("arrayList.size()==========="+arrayList.size());
if(arrayList.size() > 0) {
try {
new MpartDialog(session,arrayList);
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("arrayList.size()==========="+arrayList.size());
if(arrayList.size() > 0) {
try {
new MpartDialog(session,arrayList);
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
MessageBox.post("未获取到对象!", "提示 ", MessageBox.INFORMATION);
return;
}
}else {
MessageBox.post("请配置首选项LY6_EPartType", "提示 ", MessageBox.INFORMATION);
return;
}

@ -40,7 +40,7 @@ public class TableCellCheckboxRenderer extends JCheckBox implements
// TODO Auto-generated method stub
this.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中
// this.setBorderPainted(true);
System.out.println("valuevaluevalue==="+value);
if(value != null)
{
this.setSelected(value.toString().equals("1"));

@ -0,0 +1,743 @@
package com.langtech.plm.project;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentBOMWindow;
import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
import com.teamcenter.rac.kernel.TCComponentDataset;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentMEOP;
import com.teamcenter.rac.kernel.TCComponentMEOPRevision;
import com.teamcenter.rac.kernel.TCComponentTcFile;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCPreferenceService;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.PropertyLayout;
import com.teamcenter.rac.util.UIUtilities;
public class CalculateDialog extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private AbstractAIFApplication application;
private TCComponentMEOPRevision meop;
private TCSession session;
TCComponentItemRevision rawMaterialRevision;
//打印界面控件
//图纸零件轮廓直径D
private JLabel zjdLabel;
private JTextField zjdTextField;
//图纸零件轮廓长
private JLabel lkcLabel;
private JTextField lkcTextField;
//切断用长度
private JLabel qdycdLabel;
private JTextField qdycdTextField;
//车端面用长度
private JLabel cdmycdLabel;
private JTextField cdmycdTextField;
//夹头用长度
private JLabel jtycdLabel;
private JTextField jtycdTextField;
//可制零件数
private JLabel kzljsLabel;
private JTextField kzljsTextField;
//规格
private JLabel ggLabel;
private JTextField ggTextField;
//材料牌号
private JLabel clphLabel;
private JTextField clphTextField;
//计算结果控件
//总长
private JLabel zcLabel;
private JTextField zcTextField;
//单件长度
private JLabel djcdLabel;
private JTextField djcdTextField;
//单件重量
private JLabel djzlLabel;
private JTextField djzlTextField;
//标准工时
private JLabel bzgsLabel;
private JTextField bzgsTextField;
//辅助工时
private JLabel fzgsLabel;
private JTextField fzgsTextField;
//计算按钮
private JButton calculateButton;
//同步按钮
private JButton syncButton;
//取消按钮
private JButton celButton;
//密度
private String density;
//横截面
private String crossSection;
//辅助时间
private String auxiliaryTime;
//固定时间
private String fixedTime;
//切割时间
private String cuttingTime;
public CalculateDialog(AbstractAIFApplication application,TCComponentMEOPRevision meop) throws TCException {
this.application = application;
this.meop = meop;
this.session = (TCSession) application.getSession();
initUI();
getProperties(this.meop);
}
private JPanel getTopPanel() {
JPanel centerPanel = new JPanel(new PropertyLayout());
centerPanel.add("1.1.left.top",this.zjdLabel);
centerPanel.add("1.2.left.top",this.zjdTextField);
centerPanel.add("2.1.left.top",this.lkcLabel);
centerPanel.add("2.2.left.top",this.lkcTextField);
centerPanel.add("3.1.left.top",this.qdycdLabel);
centerPanel.add("3.2.left.top",this.qdycdTextField);
centerPanel.add("4.1.left.top",this.cdmycdLabel);
centerPanel.add("4.2.left.top",this.cdmycdTextField);
centerPanel.add("5.1.left.top",this.jtycdLabel);
centerPanel.add("5.2.left.top",this.jtycdTextField);
centerPanel.add("6.1.left.top",this.kzljsLabel);
centerPanel.add("6.2.left.top",this.kzljsTextField);
centerPanel.add("7.1.left.top",this.ggLabel);
centerPanel.add("7.2.left.top",this.ggTextField);
centerPanel.add("8.1.left.top",this.clphLabel);
centerPanel.add("8.2.left.top",this.clphTextField);
centerPanel.add("1.3.left.top",this.zcLabel);
centerPanel.add("1.4.left.top",this.zcTextField);
centerPanel.add("2.3.left.top",this.djcdLabel);
centerPanel.add("2.4.left.top",this.djcdTextField);
centerPanel.add("3.3.left.top",this.djzlLabel);
centerPanel.add("3.4.left.top",this.djzlTextField);
centerPanel.add("4.3.left.top",this.bzgsLabel);
centerPanel.add("4.4.left.top",this.bzgsTextField);
centerPanel.add("5.3.left.top",this.fzgsLabel);
centerPanel.add("5.4.left.top",this.fzgsTextField);
centerPanel.add("6.3.left.top",this.calculateButton);
return centerPanel;
}
/**
*
*/
private void setPanelProperties() {
this.zjdLabel = new JLabel("图纸零件轮廓直径D");
this.lkcLabel = new JLabel("图纸零件轮廓长");
this.qdycdLabel = new JLabel("切断用长度");
this.cdmycdLabel = new JLabel("车端面用长度");
this.jtycdLabel = new JLabel("夹头用长度");
this.kzljsLabel = new JLabel("可制零件数");
this.ggLabel = new JLabel("规格");
this.clphLabel = new JLabel("材料牌号");
this.zcLabel = new JLabel("总长");
this.djcdLabel = new JLabel("单件长度");
this.djzlLabel = new JLabel("单件重量");
this.bzgsLabel = new JLabel("标准工时");
this.fzgsLabel = new JLabel("辅助工时");
this.zjdTextField = new JTextField(32);
this.lkcTextField = new JTextField(32);
this.qdycdTextField = new JTextField(32);
this.cdmycdTextField = new JTextField(32);
this.jtycdTextField = new JTextField(32);
this.kzljsTextField = new JTextField(32);
this.ggTextField = new JTextField(32);
this.ggTextField.setEditable(false);
this.ggTextField.setBackground(new Color(200, 200, 200));
this.clphTextField = new JTextField(32);
this.clphTextField.setEditable(false);
this.ggTextField.setBackground(new Color(200, 200, 200));
this.zcTextField = new JTextField(32);
this.djcdTextField = new JTextField(32);
this.djzlTextField = new JTextField(32);
this.bzgsTextField = new JTextField(32);
this.fzgsTextField = new JTextField(32);
this.calculateButton = new JButton("计算");
this.syncButton = new JButton("同步");
this.celButton = new JButton("取消");
}
/**
*
* @return
*/
private JPanel getButtomPanel() {
JPanel bottomPanel = new JPanel(new FlowLayout(1));
// bottomPanel.add(this.calculateButton);
bottomPanel.add(this.syncButton);
bottomPanel.add(this.celButton);
return bottomPanel;
}
/**
*
*/
private void initUI() {
this.setTitle("材料定额及工时计算");
this.setSize(500, 500);
this.setLayout(new BorderLayout());
setPanelProperties();
JPanel centerPanel = getTopPanel();
JPanel bottomPanel = getButtomPanel();
this.add(centerPanel,BorderLayout.CENTER);
this.add(bottomPanel,BorderLayout.SOUTH);
//添加事件
this.calculateButton.addActionListener(this);
this.syncButton.addActionListener(this);
this.celButton.addActionListener(this);
//放到屏幕中央
UIUtilities.centerToScreen(this);
this.setVisible(true);
}
/**
* MEOP
* @param meop
* @throws TCException
*/
private void getProperties(TCComponentMEOPRevision meop) throws TCException {
String outlineDiameter = meop.getStringProperty("ly6_outlineDiameter");
String outlineLength = meop.getStringProperty("ly6_outlineLength");
String cuttingLength = meop.getStringProperty("ly6_cuttingLength");
String transverseLength = meop.getStringProperty("ly6_transverseLength");
String colletLength = meop.getStringProperty("ly6_colletLength");
String manufacturingQuantity =meop.getStringProperty("ly6_manufacturableQuantity");
//规格和牌号单独从bomline下的子项中取得
String specifications = null;
String brandNum = null;
// String specifications = meop.getStringProperty("ly6_specifications");
// String brandNum = meop.getStringProperty("ly6_material");
TCComponentItem item = meop.getItem();
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
// 创建视图:传入参数-版本规则(精确、具有状态···),不给则获取默认规则
TCComponentBOMWindow view = winType.create(null);
// 发送BOM创建BOM。将item对象发送到BOM即为创建了一个BOM行 args:item对象 版本对象 ...
TCComponentBOMLine topBomLine = view.setWindowTopLine(item, meop, null, null);
topBomLine.lock();
if (topBomLine.hasChildren()) {
System.out.println("dialog当前对象存在bom子行");
AIFComponentContext[] childrens = topBomLine.getChildren();
int tag = 0;
for (AIFComponentContext children : childrens) {
TCComponentBOMLine bomLine = (TCComponentBOMLine)children.getComponent();
TCComponentItemRevision itemRevision = bomLine.getItemRevision();
String childType = itemRevision.getType();
System.out.println("当前通过bomline子项获取到子项类型"+childType);
if (childType.equals("LY6_RawMaterial") || childType.equals("LY6_RawMaterialRevision")) {
System.out.println("成功获取到当前对象关联的“原材料”对象!");
specifications = itemRevision.getStringProperty("ly6_specifications");
brandNum = itemRevision.getStringProperty("ly6_material");
System.out.println("获取到规格:"+specifications);
System.out.println("获取到牌号:"+brandNum);
tag ++;
break;
}
}
if (tag == 0) {//bomline的子项中没有类型为LY6_RawMaterialRevision的对象
MessageBox.post("未绑定原材料对象","提示",MessageBox.INFORMATION);
//todo burangjisuan
topBomLine.unlock();
view.close();
//关闭
this.setVisible(false);
//释放
this.dispose();
return;
}
}else {
MessageBox.post("未绑定原材料对象","提示",MessageBox.INFORMATION);
//todo burangjisuan
topBomLine.unlock();
view.close();
//关闭
this.setVisible(false);
//释放
this.dispose();
return;
}
topBomLine.unlock();
view.close();
this.zjdTextField.setText(outlineDiameter != null ? outlineDiameter : "");
this.lkcTextField.setText(outlineLength != null ? outlineLength : "");
this.qdycdTextField.setText(cuttingLength != null ? cuttingLength : "");
this.cdmycdTextField.setText(transverseLength != null ? transverseLength : "");
this.jtycdTextField.setText(colletLength != null ? colletLength : "");
this.kzljsTextField.setText(manufacturingQuantity != null ? manufacturingQuantity : "");
this.ggTextField.setText(specifications != null ? specifications : "");
this.clphTextField.setText(brandNum != null ? brandNum : "");
}
/**
*
* @return
*/
private String calculateTotalLength() {
// 获取各个 TextField 的内容
String lkcText = this.lkcTextField.getText();
String qdycdText = this.qdycdTextField.getText();
String cdmycdText = this.cdmycdTextField.getText();
String kzljsText = this.kzljsTextField.getText();
String jtycdText = this.jtycdTextField.getText();
// 将字符串转换为数值
double lkcValue = Double.parseDouble(lkcText);
double qdycdValue = Double.parseDouble(qdycdText);
double cdmycdValue = Double.parseDouble(cdmycdText);
double kzljsValue = Double.parseDouble(kzljsText);
double jtycdValue = Double.parseDouble(jtycdText);
// 计算结果
double result = (lkcValue + qdycdValue + cdmycdValue) * kzljsValue + jtycdValue;
System.out.println("图纸轮廓长:"+lkcValue+"切断用长度:"+qdycdValue+"车端面用长度:"+cdmycdValue+"可制零件数:"+kzljsValue+"夹头用长度:"+jtycdValue);
// double cm = result / 10.0;
String formattedCm = String.format("%.2f", result);
return formattedCm;
}
/**
*
* @return
*/
private String calculateSingleLength(){
String zcText = this.zcTextField.getText();
String kzljsText = this.kzljsTextField.getText();
double zcValue = Double.parseDouble(zcText);
double kzljsValue = Double.parseDouble(kzljsText);
if (kzljsValue == 0){
System.out.println("可制零件数 is 0");
}
double result = zcValue / kzljsValue;
System.out.println("总长:"+zcValue+"可制零件数:"+kzljsValue);
// double cm = result / 10.0;
String format = String.format("%.2f", result);
return format;
}
private void downLoadFile(File file) throws Exception {
FileInputStream inputStream = new FileInputStream(file);
// 指定文件保存的本地路径
String localFilePath = "C:\\"+file.getName();
try {
// 创建目标路径
Path path = Paths.get(localFilePath);
// 将输入流写入到本地文件
Files.copy(inputStream, path);
System.out.println("文件已成功保存: "+localFilePath);
} catch (Exception e) {
e.printStackTrace();
System.out.println("保存文件时发生错误!");
} finally {
// 关闭输入流以释放资源
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* uidEXCEL
* uiditem
* EXCEL
* @throws Exception
*/
private void getDataset(){
System.out.println("getDataset");
TCPreferenceService preferenceService = session.getPreferenceService();
String itemId = preferenceService.getStringValue("LY6_MEOPTypeTime");
InterfaceAIFComponent[] resultComponents;
try {
resultComponents = session.search("零组件...", new String[] {"零组件 ID"}, new String[] {itemId});
InterfaceAIFComponent component = resultComponents[0];
if (component instanceof TCComponentItem){
TCComponentItem item = (TCComponentItem) component;
//读取item下已发布最新版本规范关系下的MSEXCEL数据集
TCComponentItemRevision[] releasedItemRevisions = item.getReleasedItemRevisions();
int releaseRevNum = releasedItemRevisions.length;
if (releaseRevNum == 0) {
System.out.println("错误:当前对象下不存在发布版本");
}
TCComponentItemRevision tcComponentItemRevision = releasedItemRevisions[releaseRevNum - 1];
//获取当前版本的规范关系下的数据集
TCComponent[] referenceListProperty = tcComponentItemRevision.getReferenceListProperty("IMAN_specification");
if(referenceListProperty.length>0) {
System.out.println("规范关系下的数据集数量:"+referenceListProperty.length);
//获取第一个数据集下具体的引用文件
TCComponentTcFile[] tcFiles = ((TCComponentDataset)referenceListProperty[0]).getTcFiles();
if (tcFiles.length > 0) {
// System.out.println("数据集下引用文件的数量" + tcFiles.length);
File file = tcFiles[0].getFmsFile();
// if (file.exists()) {
// System.out.println("开始下载!");
// downLoadFile(file);
// }
System.out.println("获取到数据集文件:"+file.getName());
// 根据横截面积获取数据集-excel表中对应的条目数据辅助时间、固定时间、切割时间
FileInputStream fis = new FileInputStream(file);
Workbook workbook = new HSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
//从第3条开始逐行数据(前两条是标题和首行栏)
for (int i = 2; i < sheet.getPhysicalNumberOfRows(); i++) {
Row row = sheet.getRow(i);
//获取表中每行的第一个值,即:直径
// double diam = row.getCell(0).getNumericCellValue();
String diam = row.getCell(0).getStringCellValue();
// 根据规格匹配数据集表中的直径
if (diam.equals(this.ggTextField.getText())){
// if (diam == Double.parseDouble(this.ggTextField.getText())){
System.out.println("=========》直径匹配成功!开始获取辅助工时和标准工时"+"=========》当前行号:"+(i+1)+",当前行的直径:"+diam);
//获取第11列的值标准工时
this.bzgsTextField.setText(row.getCell(10).getStringCellValue());
//获取第12列的值辅助工时
this.fzgsTextField.setText(row.getCell(11).getStringCellValue());
break;
}
}
workbook.close();
}else {
System.out.println("获取数据集文件失败!");
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @return
*/
private String calculateAssistTime() {
String result = null;
double kzljsNum = Double.parseDouble(this.kzljsTextField.getText());
if (kzljsNum > 0){
double auxiliaryTimeNum = Double.parseDouble(this.auxiliaryTime);
double fixedTimeNum = Double.parseDouble(this.fixedTime);
double resultNum = Math.round((auxiliaryTimeNum + fixedTimeNum) / kzljsNum / 60 * 100.0) / 100.0;
System.out.println("辅助时间:"+auxiliaryTimeNum+",固定时间:"+fixedTimeNum+",可制零件数:"+kzljsNum);
result = String.valueOf(resultNum);
}
return result;
}
/**
*
* @return
*/
private String calculateStandardTime() {
String result = null;
double kzljsNum = Double.parseDouble(this.kzljsTextField.getText());
if (kzljsNum > 0){
System.out.println("=========>获取到的切割时间:"+this.cuttingTime);
double cuttingTimeNum = Double.parseDouble(this.cuttingTime);
double resultNum = Math.round((cuttingTimeNum / kzljsNum / 60) * 100.0) / 100.0;
System.out.println("切割时间:"+cuttingTimeNum+",可制零件数:"+kzljsNum);
result = String.valueOf(resultNum);
}
return result;
}
/**
*
* @throws TCException
*/
private void getDensityAndCrossSection() throws TCException {
System.out.println("=========>开始获取密度和横截面getDensityAndCrossSection");
// 1.获取当前选中MEOP对象的BOM行
TCComponentMEOP meopItem = (TCComponentMEOP) meop.getItem();
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) this.session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
TCComponentBOMLine bomLine = view.setWindowTopLine(meopItem, meop, null, null);
// 2.遍历BOM行根据“规格”和“材料”检索符合要求的唯一原材料对象
throughBomline(bomLine);
view.close();
}
/**
* bomlinebom
* @param topBomLine BOM
*/
private void throughBomline(TCComponentBOMLine topBomLine) throws TCException{
// 3.获取原材料对象的密度和横截面
boolean hasChildren = topBomLine.hasChildren();
if (hasChildren) {
AIFComponentContext[] childrens = topBomLine.getChildren();
for (AIFComponentContext children : childrens) {
TCComponentBOMLine bomLine = (TCComponentBOMLine) children.getComponent();
//获取当前bom的事例类型若是投料则到当前bom对应的是原材料对象
String propertyValue = bomLine.getProperty("bl_occ_type");
if ("投料".equals(propertyValue)) {
//通过原材料对象获取密度和横截面
this.rawMaterialRevision = bomLine.getItemRevision();
String densityString = rawMaterialRevision.getProperty("ly6_density");
String crossSectionString = rawMaterialRevision.getProperty("ly6_crossSection");
System.out.println("==========》成功取得当前原材料对象对应的密度:"+densityString+",横截面:"+crossSectionString);
this.density = densityString != null ? densityString : "";
this.crossSection = crossSectionString != null ? crossSectionString : "";
System.out.println("000");
break;
}
throughBomline(bomLine);
}
}
}
/**
*
* @return
* @throws TCException
*/
private String calculateWeight(){
System.out.println("calculateWeight");
//通过获取当前选中对象的bom下关联的原材料对象获取其密度和横截面
try {
getDensityAndCrossSection();
} catch (TCException e) {
e.printStackTrace();
}
//获取横截面和密度、单件长度,计算单件重量
double crossSectionNum = Double.parseDouble(this.crossSection);
double densityNum = 0;
if (this.density.contentEquals("")) {
densityNum = 0;
}else {
densityNum = Double.parseDouble(this.density);
}
double siglengthNum = Double.parseDouble(this.djcdTextField.getText());
double result = crossSectionNum * densityNum * siglengthNum;
System.out.println("横截面:"+crossSectionNum+",密度:"+densityNum+",单件长度:"+siglengthNum);
double kg = result / 10000.0;
String formattedKg = String.format("%.2f", kg);
return formattedKg;
}
/**
*
* @throws TCException
*/
private void saveProperty() throws TCException {
try {
meop.setProperty("ly6_specifications", this.ggTextField.getText() == null ? "" : this.ggTextField.getText());
// rawMaterialRevision.setProperty("ly6_specifications", this.ggTextField.getText() == null ? "" : this.ggTextField.getText());
meop.setProperty("ly6_totalLenght", this.zcTextField.getText() == null ? "" : this.zcTextField.getText());
meop.setProperty("ly6_singleLength", this.djcdTextField.getText() == null ? "" : this.djcdTextField.getText());
meop.setProperty("ly6_weight", this.djzlTextField.getText() == null ? "" : this.djzlTextField.getText());
meop.setProperty("ly6_standardTime", this.bzgsTextField.getText() == null ? "" : this.bzgsTextField.getText());
meop.setProperty("ly6_auxiliaryTime", this.fzgsTextField.getText() == null ? "" : this.fzgsTextField.getText());
// rawMaterialRevision.setProperty("ly6_material", this.clphTextField.getText() == null ? "" : this.clphTextField.getText());
meop.setProperty("ly6_brandNum", this.clphTextField.getText() == null ? "" : this.clphTextField.getText());
meop.setProperty("ly6_outlineDiameter", this.zjdTextField.getText() == null ? "" : this.zjdTextField.getText());
meop.setProperty("ly6_outlineLength", this.lkcTextField.getText() == null ? "" : this.lkcTextField.getText());
meop.setProperty("ly6_cuttingLength", this.qdycdTextField.getText() == null ? "" : this.qdycdTextField.getText());
meop.setProperty("ly6_transverseLength", this.cdmycdTextField.getText()== null ? "" : this.cdmycdTextField.getText());
meop.setProperty("ly6_colletLength", this.jtycdTextField.getText() == null ? "" : this.jtycdTextField.getText());
meop.setProperty("ly6_manufacturableQuantity", this.kzljsTextField.getText() == null ? "" : this.kzljsTextField.getText());
}catch (Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
}
/**
* M
* @throws TCException
*/
private void checkMaterial() throws TCException {
try {
System.out.println("开始检查M物料下的挂载情况·········");
boolean isGZ=false;
TCComponent[] whereUsed = meop.whereUsed((short) 0);
for (TCComponent tcComponent : whereUsed) {
//获取到当前工序对象的父级对象-tcComponent
String mepRevisionType = tcComponent.getStringProperty("object_type");
//获取首选项中的工艺对象类型,进行匹配
TCSession session = (TCSession) this.application.getSession();
TCPreferenceService preferenceService = session.getPreferenceService();
//根据首选项的名称-C8MyPreference,获取首选项值
String value = preferenceService.getStringValue("LY6_MEPType");
String[] strings = value.split(",");
for (int i = 0; i < whereUsed.length; i++) {
//工艺对象类型匹配,进行:原材料对象比对
if (strings[i].equals(mepRevisionType)) {
System.out.println("========>工艺类型匹配成功");
if (tcComponent instanceof TCComponentItemRevision) {
System.out.println("====>获取到的工艺对象:"+tcComponent.getObjectString());
TCComponentItemRevision mepRevision = (TCComponentItemRevision) tcComponent;
//获取工艺对象下的物料/制造对象:relatedRevision\\relatedItem
TCComponent relatedComponent = mepRevision.getRelatedComponent("IMAN_METarget");
TCComponentItemRevision relatedRevision = (TCComponentItemRevision) relatedComponent;
TCComponentItem relatedItem = relatedRevision.getItem();
//检查当前物料对象下是否挂在了原材料对象
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
//获取物料对象/制造对象对应的bomline
TCComponentBOMLine bomLine = view.setWindowTopLine(relatedItem, relatedRevision, null, null);
//遍历该物料制造对象的bomline下是否挂在了原材料对象
if (bomLine.hasChildren()) {
AIFComponentContext[] childrens = bomLine.getChildren();
for(AIFComponentContext children:childrens) {
TCComponentBOMLine childrenBomLine = (TCComponentBOMLine) children.getComponent();
TCComponentItemRevision itemRevision = childrenBomLine.getItemRevision();
String uidTag = itemRevision.getUid();
String materialRevUid = this.rawMaterialRevision.getUid();
if (uidTag.equals(materialRevUid)) {
System.out.println("M物料对象下已经挂载原材料对象············");
//M物料对象下挂载了原材料对象
isGZ = true;
break;
}
}
}
//M物料对象下没有挂载原材料对象
if (!isGZ) {
System.out.println("M物料对象下没有挂载原材料对象开始挂载······");
view.lock();
TCComponentItem materialItem = this.rawMaterialRevision.getItem();
bomLine.add(materialItem,this.rawMaterialRevision,null,false,"");
bomLine.save();
view.unlock();
}
// BOMWindow用完后必须关闭
view.close();
}else {
System.out.println("非版本对象异常");
}
break;
}
}
}
}catch (Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
}
}
/**
*
*/
@Override
public void actionPerformed(ActionEvent e) {
Object sourceObject = e.getSource();
//如果点击“计算”按钮
if(sourceObject.equals(this.calculateButton)) {
try {
//长度计算
this.zcTextField.setText(calculateTotalLength());
this.djcdTextField.setText(calculateSingleLength());
// 单件重量计算
this.djzlTextField.setText(calculateWeight());
// 工时计算
getDataset();
// this.bzgsTextField.setText(calculateStandardTime());
// this.fzgsTextField.setText(calculateAssistTime());
}catch (Exception e1){
MessageBox.post("计算失败,请检查属性或手动维护", "提示", MessageBox.ERROR);
e1.printStackTrace();
}
} else if (sourceObject.equals(this.syncButton)) {
//如果点击“同步”按钮,属性反写
try {
saveProperty();
//检查M物料
checkMaterial();
MessageBox.post("同步成功", "结果", MessageBox.INFORMATION);
this.setVisible(false);
this.dispose();
} catch (TCException e1) {
e1.printStackTrace();
}
}else {
//如果点击“取消”按钮
//关闭
this.setVisible(false);
//释放
this.dispose();
}
}
}

@ -0,0 +1,121 @@
package com.langtech.plm.project;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentMEOP;
import com.teamcenter.rac.kernel.TCComponentMEOPRevision;
import com.teamcenter.rac.kernel.TCPreferenceService;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.List;
public class CalculateHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent arg0) throws ExecutionException {
AbstractAIFApplication app = AIFUtility.getCurrentApplication();
TCSession session = (TCSession) app.getSession();
try {
new Thread(){
@Override
public void run() {
// TODO 1.获取选中对象类型和工序名称
//获取选中对象的拼接字符串
InterfaceAIFComponent selectComponent = app.getTargetContext().getComponent();
// 获取选中对象的类型和名称
String type = selectComponent.getType();
String name;
boolean existTag = false;
InterfaceAIFComponent[] resultComponents = null;
System.out.println("当前选中对象类型type"+type);
try {
//TODO 获取选中对象的type如果是Mfg0BvrOperation则说明是工艺构建器下的对象可通过真实名称bl_item_item_id获取选中对象的零组件ID以此获得该零组件的类型
if (type.equals("Mfg0BvrOperation")) {
List<String> entryNames = new ArrayList<String>();
List<String> entryValues = new ArrayList<String>();
String lzj_id = selectComponent.getProperty("bl_item_item_id");
String lzj_rev = selectComponent.getProperty("bl_rev_item_revision_id");
System.out.println("工艺构建器下选中对象的零组件ID="+lzj_id);
entryNames.add("零组件 ID");
entryNames.add("版本");
entryValues.add(lzj_id);
entryValues.add(lzj_rev);
resultComponents = session.search(
"零组件版本...",
entryNames.toArray(new String[entryNames.size()]),
entryValues.toArray(new String[entryNames.size()]));
if(resultComponents != null) {
type = resultComponents[0].getType();
System.out.println("获取到制造工艺规划器下对象的类型="+type);
}else {
MessageBox.post("没有查询到制造工艺规划器下对象对应的零组件","查询结果",MessageBox.INFORMATION);
}
}
name = selectComponent.getProperty("object_name");
// 2.获取首选项字符串数组,并遍历比较(当前选中对象的类型+工序名称拼接字符串)
TCPreferenceService preferenceService = session.getPreferenceService();
//根据首选项的名称-C8MyPreference,获取首选项值
String[] preferenceValues = preferenceService.getStringValues("LY6_MEOPType");
if (preferenceValues == null) {
MessageBox.post("首选项为空,请先设置首选项!","提示",MessageBox.INFORMATION);
}
for (String string : preferenceValues){
System.out.println("首选项LY6_MEOPType配置的信息string"+string);
if (type.equals(string)){
System.out.println("当前选中对象的类型与首选项配置类型匹配:"+type+"==>"+string);
existTag = true;
break;
}
}
if (!existTag){
//3.如果和首选项中的值不匹配,则弹出提示框,提示“对象类型不正确”,并返回
System.out.println("对象类型不正确当前选中对象type="+type);
MessageBox.post("对象类型不正确","提示",MessageBox.INFORMATION);
}else {
System.out.println("选中对象类型匹配!");
TCComponentMEOPRevision rev = null;
if(selectComponent.getType().equals("Mfg0BvrOperation")) {
rev = (TCComponentMEOPRevision)resultComponents[0];
}else {
//判断选中对象的是item还是版本item则获取最新版本
if (selectComponent instanceof TCComponentMEOP) {
// System.out.println("当前选中对象为TCComponentMEOP");
TCComponentMEOP meopType = (TCComponentMEOP) selectComponent;
rev = (TCComponentMEOPRevision) meopType.getLatestItemRevision();
}else if (selectComponent instanceof TCComponentMEOPRevision) {
// System.out.println("当前选中对象为TCComponentMEOPRevision");
rev = (TCComponentMEOPRevision) selectComponent;
}
}
// System.out.println("========》选中的对象类型:"+type);
new CalculateDialog(app,rev);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

@ -5,6 +5,8 @@ import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@ -185,17 +187,19 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String[] split2 = split[i].split(":");
String[] selectSplit = split2[1].split("\\.");
System.out.println("selectSplit[0]==="+selectSplit[0]);
System.out.println("--------------------------------");
if (selectSplit[0].equals("item")) {
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevItem.getStringProperty(selectSplit[1]);
System.out.println("value===="+value);
} else if (selectSplit[2].equals("date")) {
} else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevItem.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}else if (selectSplit[2].equals("date")) {
dateValue = selectRevItem.getDateProperty(selectSplit[1]);
}
@ -206,6 +210,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -213,6 +219,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -221,19 +229,25 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
} else if (selectSplit[0].equals("rev")) {
}else if (selectSplit[0].equals("rev")) {
System.out.println("0000000000000000000000000");
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
System.out.println("selectSplit[2]====================="+selectSplit[2]);
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRev.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) {
dateValue = selectRev.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
System.out.println("1111111111111111111111");
Double tempDoubleValue = selectRev.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}
// 获取目标对象要更新哪个属性
@ -243,6 +257,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -250,6 +266,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -258,6 +276,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
@ -265,13 +285,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevForm.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) {
dateValue = selectRevForm.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevForm.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}
// 获取目标对象要更新哪个属性
@ -281,6 +303,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -288,6 +312,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -296,6 +322,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
@ -306,17 +334,19 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String[] split2 = field.split(":");
String[] selectSplit = split2[1].split("\\.");
System.out.println("selectSplit[0]==="+selectSplit[0]);
System.out.println("--------------------------------");
if (selectSplit[0].equals("item")) {
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevItem.getStringProperty(selectSplit[1]);
System.out.println("value===="+value);
} else if (selectSplit[2].equals("date")) {
} else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevItem.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}else if (selectSplit[2].equals("date")) {
dateValue = selectRevItem.getDateProperty(selectSplit[1]);
}
@ -327,6 +357,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -334,6 +366,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -342,19 +376,25 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
} else if (selectSplit[0].equals("rev")) {
}else if (selectSplit[0].equals("rev")) {
System.out.println("0000000000000000000000000");
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
System.out.println("selectSplit[2]====================="+selectSplit[2]);
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRev.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) {
dateValue = selectRev.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
System.out.println("1111111111111111111111");
Double tempDoubleValue = selectRev.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}
// 获取目标对象要更新哪个属性
@ -364,6 +404,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -371,6 +413,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -379,6 +423,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
@ -386,13 +432,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevForm.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) {
dateValue = selectRevForm.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevForm.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}
// 获取目标对象要更新哪个属性
@ -402,6 +450,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -409,6 +459,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -417,14 +469,16 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
}
}
} else {
// 解析属性
System.out.println("field==="+field);
if (field.contains(",")) {// 判断是否多个
@ -433,17 +487,19 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String[] split2 = split[i].split(":");
String[] selectSplit = split2[1].split("\\.");
System.out.println("selectSplit[0]==="+selectSplit[0]);
System.out.println("--------------------------------");
if (selectSplit[0].equals("item")) {
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevItem.getStringProperty(selectSplit[1]);
System.out.println("value===="+value);
} else if (selectSplit[2].equals("date")) {
} else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevItem.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}else if (selectSplit[2].equals("date")) {
dateValue = selectRevItem.getDateProperty(selectSplit[1]);
}
@ -454,6 +510,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -461,6 +519,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -469,19 +529,25 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
} else if (selectSplit[0].equals("rev")) {
}else if (selectSplit[0].equals("rev")) {
System.out.println("0000000000000000000000000");
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
System.out.println("selectSplit[2]====================="+selectSplit[2]);
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRev.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) {
dateValue = selectRev.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
System.out.println("1111111111111111111111");
Double tempDoubleValue = selectRev.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}
// 获取目标对象要更新哪个属性
@ -491,6 +557,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -498,6 +566,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -506,6 +576,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
@ -513,13 +585,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevForm.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) {
dateValue = selectRevForm.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevForm.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}
// 获取目标对象要更新哪个属性
@ -529,6 +603,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -536,6 +612,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -544,6 +622,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
@ -554,17 +634,19 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String[] split2 = field.split(":");
String[] selectSplit = split2[1].split("\\.");
System.out.println("selectSplit[0]==="+selectSplit[0]);
System.out.println("--------------------------------");
if (selectSplit[0].equals("item")) {
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevItem.getStringProperty(selectSplit[1]);
System.out.println("value===="+value);
} else if (selectSplit[2].equals("date")) {
} else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevItem.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}else if (selectSplit[2].equals("date")) {
dateValue = selectRevItem.getDateProperty(selectSplit[1]);
}
@ -575,6 +657,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -582,6 +666,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -590,19 +676,25 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
} else if (selectSplit[0].equals("rev")) {
}else if (selectSplit[0].equals("rev")) {
System.out.println("0000000000000000000000000");
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
System.out.println("selectSplit[2]====================="+selectSplit[2]);
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRev.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) {
dateValue = selectRev.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
System.out.println("1111111111111111111111");
Double tempDoubleValue = selectRev.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}
// 获取目标对象要更新哪个属性
@ -612,6 +704,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -619,6 +713,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -627,6 +723,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
@ -634,13 +732,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String value = "";
Date dateValue = null;
if(dateValue != null && value.isEmpty()) {
value = sdf.format(dateValue);
}
Double doubleValue = 0d;
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevForm.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) {
dateValue = selectRevForm.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevForm.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}
// 获取目标对象要更新哪个属性
@ -650,6 +750,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rev")) {
@ -657,6 +759,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
}
} else if (targetSplit[0].equals("rm")) {
@ -665,13 +769,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
}
}
}
}
}
MessageBox.post("修改成功!", "提示", 2);
this.dispose();
@ -717,4 +823,18 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
return topPanel;
}
public double truncateDouble(int scale,double value) {
// 使用 BigDecimal 进行精确控制
System.out.println("value========"+value);
System.out.println("scale=========="+scale);
BigDecimal bd = new BigDecimal(Double.toString(value));
// 设置小数位数并使用 RoundingMode.DOWN 进行截断
bd = bd.setScale(scale, RoundingMode.DOWN);
// 返回格式化后的 double 值
System.out.println("bd.doubleValue()============"+bd.doubleValue());
return bd.doubleValue();
}
}

@ -7,6 +7,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@ -25,6 +26,8 @@ import javax.swing.table.DefaultTableModel;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentDataset;
import com.teamcenter.rac.kernel.TCComponentDatasetType;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
@ -47,20 +50,21 @@ public class TemplateDialog extends JFrame implements ActionListener {
private JButton concelButton = new JButton("取消");
private HashMap<String, String> map = new HashMap<String, String>();
HashMap<String, TCComponentItemRevision> objectMap = new HashMap<String, TCComponentItemRevision>();
private String type;
public TemplateDialog(TCSession session, TCComponentItemRevision rev) throws TCException {
public TemplateDialog(TCSession session, TCComponentItemRevision rev, String type) throws TCException {
// TODO Auto-generated constructor stub
this.session = session;
this.rev = rev;
this.type = type;
initUI();
}
private void initUI() {
// TODO Auto-generated method stub
try {
company.setPreferredSize(new Dimension(200,30));
template.setPreferredSize(new Dimension(200,30));
company.setPreferredSize(new Dimension(200, 30));
template.setPreferredSize(new Dimension(200, 30));
this.setTitle("工序模版");
this.setLayout(new BorderLayout());
@ -88,40 +92,52 @@ public class TemplateDialog extends JFrame implements ActionListener {
// this.setAlwaysOnTop(true);
String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateType");
for (int i = 0; i < pref.length; i++) {
String[] split = pref[i].split(":");
company.addItem(split[0]);
map.put(split[0], split[1]);
if (pref[i].contains(type)) {
System.out.println("pref[i]======="+pref[i]+"type========="+type);
String[] split10 = pref[i].split("\\|");
System.out.println("split10========"+split10.length);
if (split10.length == 2) {
String[] split11 = split10[1].split(";");
System.out.println("split11==============="+split11.length);
for (int j = 0; j < split11.length; j++) {
String[] split = split11[j].split(":");
System.out.println("split=============="+split.length);
company.addItem(split[0]);
map.put(split[0], split[1]);
}
}
}
}
String mrselectitem = (String)company.getSelectedItem();
String mrselectitem = (String) company.getSelectedItem();
String mrValue = map.get(mrselectitem);
String[] split = mrValue.split(",");
for (int i = 0; i < split.length; i++) {
template.addItem(split[i]);
}
//下拉值联动
// 下拉值联动
company.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
template.removeAllItems();
String selectedItem = (String) company.getSelectedItem();
System.out.println("Selected Item: " + selectedItem);
// 在这里可以执行其他操作
String value = map.get(selectedItem);
String[] split = value.split(",");
for (int i = 0; i < split.length; i++) {
template.addItem(split[i]);
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
template.removeAllItems();
String selectedItem = (String) company.getSelectedItem();
System.out.println("Selected Item: " + selectedItem);
// 在这里可以执行其他操作
String value = map.get(selectedItem);
String[] split = value.split(",");
for (int i = 0; i < split.length; i++) {
template.addItem(split[i]);
}
}
}
}
});
}
});
} catch (Exception e) {
e.printStackTrace();
return;
@ -142,33 +158,55 @@ public class TemplateDialog extends JFrame implements ActionListener {
Object source = e.getSource();
System.out.println("source==>+" + source);
if (this.okButton.equals(source)) {
String templateString = (String)template.getSelectedItem();
String companyString = (String)company.getSelectedItem();
System.out.println("templateString==="+templateString);
System.out.println("companyString==="+companyString);
if(companyString.isEmpty()) {
String templateString = (String) template.getSelectedItem();
String companyString = (String) company.getSelectedItem();
System.out.println("templateString===" + templateString);
System.out.println("companyString===" + companyString);
if (companyString.isEmpty()) {
MessageBox.post("请选择公司!", "提示 ", MessageBox.INFORMATION);
return;
}
if(templateString.isEmpty()) {
if (templateString.isEmpty()) {
MessageBox.post("请选择模板!", "提示 ", MessageBox.INFORMATION);
return;
}
//调用查询获取模板的dwg数据集
// 调用查询获取模板的dwg数据集
try {
TCComponent[] items = session.search("零组件...", new String[] { "零组件 ID" }, new String[] {templateString});
System.out.println("items.length===="+items.length);
TCComponent[] items = session.search("零组件...", new String[] { "零组件 ID" },
new String[] { templateString });
System.out.println("items.length====" + items.length);
TCComponentItem item = null;
if(items.length > 0) {
item = (TCComponentItem)items[0];
if (items.length > 0) {
item = (TCComponentItem) items[0];
}
TCComponentItemRevision latestItemRevision = item.getLatestItemRevision();
TCComponent[] relatedComponent = latestItemRevision.getRelatedComponents("IMAN_specification");
System.out.println("relatedComponent========"+relatedComponent.length);
System.out.println("relatedComponent========" + relatedComponent.length);
String name = rev.getStringProperty("item_id")+"_"+rev.getStringProperty("object_name")+"_工序卡.dwg";
System.out.println("name================"+name);
for (int i = 0; i < relatedComponent.length; i++) {
rev.add("IMAN_specification",relatedComponent[i]);
if(relatedComponent[i] instanceof TCComponentDataset) {
TCComponentDataset dataset = (TCComponentDataset)relatedComponent[i];
// TCComponentDataset saveAs = dataset.saveAs(name);
//
// TCComponent datasetref_c = dataset.getRelatedComponent("ref_list");
// System.out.println("datasetref_c==============="+datasetref_c.getUid());
TCComponent ref_c = dataset.getRelatedComponent("ref_list");
// System.out.println("ref_c====="+ref_c.getUid());
File fmsFile = dataset.getTcFiles()[0].getFmsFile();
System.out.println("fmsFile================"+fmsFile.getAbsolutePath());
TCComponentDataset createDataset = createDataset(name,fmsFile.getAbsolutePath(),session,"LD6_CAD2","LD6_cad2");
//String original_file_name = ref_c.getStringProperty("original_file_name");
//String[] split = original_file_name.split("\\.");
createDataset.getRelatedComponent("ref_list").setProperty("original_file_name", name);
rev.add("IMAN_specification", createDataset);
}
}
MessageBox.post("模板插入成功!", "提示 ", MessageBox.INFORMATION);
this.dispose();
@ -176,8 +214,8 @@ public class TemplateDialog extends JFrame implements ActionListener {
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//挂在数据集
}
// 挂在数据集
} else if (this.concelButton.equals(source)) {
this.dispose();
}
@ -213,10 +251,20 @@ public class TemplateDialog extends JFrame implements ActionListener {
topPanel.add("6.1.left.center", new JLabel(""));
topPanel.add("7.1.left.center", new JLabel(""));
topPanel.add("8.1.left.center", new JLabel(" 模板:"));
topPanel.add("8.2.left.center", template);
return topPanel;
}
public static TCComponentDataset createDataset(String datasetName, String path, TCSession session, String type,
String ref) throws TCException {
TCComponentDatasetType tccomponentDatasetType = (TCComponentDatasetType) session.getTypeComponent("Dataset");
TCComponentDataset tccomponentDataset = tccomponentDatasetType.create(datasetName, "", type);
tccomponentDataset.lock();
tccomponentDataset.setFiles(new String[] { path }, new String[] { ref });
tccomponentDataset.save();
tccomponentDataset.unlock();
return tccomponentDataset;
}
}

@ -7,9 +7,11 @@ import org.eclipse.core.commands.ExecutionException;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentSchedule;
import com.teamcenter.rac.kernel.TCComponentScheduleTask;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
@ -28,7 +30,9 @@ public class TemplateHandler extends AbstractHandler{
@Override
public void run() {
InterfaceAIFComponent targetComponent = app.getTargetComponent();
String type = targetComponent.getType();
System.out.println("type==========="+type);
if(targetComponent instanceof TCComponentItemRevision) {
try {
String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateObject");
@ -43,19 +47,53 @@ public class TemplateHandler extends AbstractHandler{
TCComponentItemRevision rev = (TCComponentItemRevision)targetComponent;
String object_type = rev.getStringProperty("object_type");
if(types.contains(object_type)) {
new TemplateDialog(session,rev);
new TemplateDialog(session,rev,object_type);
}else {
MessageBox.post("请选择首选项LY6_MEOP_TemplateObject中匹配的对象","提示",2);
return;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(type.equals("Mfg0BvrOperation")){
TCComponent com = (TCComponent) targetComponent;
try {
TCComponent rev = com.getRelatedComponent("bl_line_object");
if(rev instanceof TCComponentItemRevision) {
try {
String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateObject");
String types = "";
if(pref.length > 0) {
types = pref[0];
}else {
MessageBox.post("请配置首选项LY6_MEOP_TemplateObject","提示",2);
return;
}
TCComponentItemRevision revision = (TCComponentItemRevision)rev;
String object_type = rev.getStringProperty("object_type");
if(types.contains(object_type)) {
new TemplateDialog(session,revision,object_type);
}else {
MessageBox.post("请选择首选项LY6_MEOP_TemplateObject中匹配的对象","提示",2);
return;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
MessageBox.post("请选择版本对象!","提示",2);
return;

@ -27,6 +27,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.aspose.words.Bookmark;
import com.aspose.words.Document;
import com.aspose.words.Field;
import com.aspose.words.SaveFormat;
import com.teamcenter.rac.aif.AIFDesktop;
import com.teamcenter.rac.aif.AbstractAIFApplication;
@ -56,12 +57,16 @@ public class PropertyToWordOrExcelOperation extends KOperation {
new Thread().sleep(1000);
InterfaceAIFComponent targetComponent = app.getTargetComponent();
TCComponentItemRevision revision = (TCComponentItemRevision) targetComponent;
// 获取首选项里的值
String[] prefVals = KUtil.getPrefVals(session, preName);
if(prefVals == null || prefVals.length == 0) {
KUtil.info(AIFDesktop.getActiveDesktop(), preName + "该首选项未配置,请联系管理员!");
return false;
}
String relatioin = prefVals[0];
// 获取版本对象下的数据集对象
TCComponent[] relatedComponents = revision.getRelatedComponents(relatioin);
if(relatedComponents == null || relatedComponents.length == 0) {
KUtil.info(AIFDesktop.getActiveDesktop(), "选中对象的 " + relatioin + " 关系下没有数据集");
@ -76,9 +81,12 @@ public class PropertyToWordOrExcelOperation extends KOperation {
nameMap.put(split[1],split[0]);
}
}
// 遍历数据集
for (TCComponent tcComponent : relatedComponents) {
if (tcComponent instanceof TCComponentDataset) {
TCComponentDataset dataset = (TCComponentDataset) tcComponent;
// 工具包中获取系统临时变量的路径
File datasetFile = KUtil.getDatasetFile(dataset);
String type = tcComponent.getType();
String datasetType = "";
@ -198,15 +206,20 @@ public class PropertyToWordOrExcelOperation extends KOperation {
private String dealWord2(File datasetFile, TCComponentItemRevision revision, HashMap<String, String> nameMap,String type) throws FileNotFoundException, Exception {
String path = datasetFile.getAbsolutePath();
Document document2 = new Document(new FileInputStream(path));
OutputStream outputStream = null;
String newPath = path.replace(".doc", "temp.doc");
outputStream = new FileOutputStream(newPath);
Map<String, String> dataMap = new HashMap<>();
for(String key : nameMap.keySet()) {
String preConfigValue = getPreConfigValue(revision,nameMap,nameMap.get(key));
System.out.println("dataMap("+key+","+preConfigValue+")");
dataMap.put(key, preConfigValue);
}
// 遍历文档中所有的书签
for (Bookmark bookmark : document2.getRange().getBookmarks()) {
String bookmarkName = bookmark.getName();
System.out.println("书签名:"+bookmarkName);
@ -216,6 +229,21 @@ public class PropertyToWordOrExcelOperation extends KOperation {
bookmark.setText(dataMap.get(bookmarkName));
}
}
// 遍历文档中的所有域
for (Field field : document2.getRange().getFields()) {
// 获取域的名称
String fieldName = field.getFieldCode();
System.out.println("域名:" + fieldName);
for(String key : dataMap.keySet()) {
// 根据字段类型或其他条件设置值
if(fieldName.contains(key)) {// 假设您想处理表单输入域
System.out.println("添加内容");
field.setResult(dataMap.get(key)); // 设置域的值
}
}
}
if(type.equals("doc")) {
document2.save(outputStream, SaveFormat.DOC);
}else if(type.equals("docx")) {

Loading…
Cancel
Save