null

System.out.println(null);

 

-----------> compilation error

 

System.out.println((Object)null);

 

-----------> output null

 

 

资源下载链接为: https://pan.quark.cn/s/502b0f9d0e26 在进行STM32F103C8T6与HC - 06蓝牙模块、PC端以及ROS(机器人操作系统)的串口通信测试时,我们编写了以下程序。 硬件连接 将STM32F103C8T6的USART1的TX(PA9)引脚与HC - 06的RX引脚相连,同时将USART1的RX(PA10)引脚与HC - 06的TX引脚相连,以实现两者之间的串口通信。 另外,通过串口转USB模块(如CH340等)将STM32F103C8T6与PC端连接起来,方便在PC端进行通信数据的发送和接收。 程序功能 初始化USART1,设置波特率为9600,用于与HC - 06通信。同时,初始化USART2(连接串口转USB模块),波特率同样设置为9600,用于与PC端通信。 在主循环中,STM32F103C8T6不断检测USART1和USART2是否有数据接收。当从USART1(HC - 06)接收到数据时,将数据暂存到一个缓冲区中,然后通过USART2发送给PC端。反之,当从USART2(PC端)接收到数据时,也暂存到缓冲区,再通过USART1发送给HC - 06。这样就实现了STM32F103C8T6作为中间节点,将HC - 06与PC端的数据进行转发。 硬件连接 HC - 06蓝牙模块通过串口与STM32F103C8T6连接,如上所述。 程序功能(蓝牙通信部分) HC - 06在默认状态下会自动进入配对模式,等待与手机或其他蓝牙设备配对。当配对成功后,它会将从蓝牙设备接收到的数据通过串口发送给STM32F103C8T6。同时,它也会将STM32F103C8T6发送过来的数据转发给已配对的蓝牙设备。在本测试程序中,主要关注其与STM32F103C8T6之间的串口通信功能,确保数据能够正确地在两者之间传输。 硬件连接 通过串口
内容概要:本文详细介绍了一个基于两个单片机串行通信的电子密码锁项目。项目背景指出随着信息技术的发展,电子密码锁因其高可靠性、低成本等优势成为主流选择。项目采用主控和辅助两个单片机分别负责不同功能模块,并通过串行通信(如UART协议)实现数据交互。主控单片机处理密码输入验证、用户界面显示等,辅助单片机负责锁控制。系统还涉及多级安全防护、低功耗设计、友好的用户界面等特性。项目挑战包括确保通信稳定、提升密码验证安全性、优化电源管理和用户交互设计等。项目创新点在于双单片机协同工作、串行通信协议优化、多级安全防护以及低功耗设计。; 适合人群:对嵌入式系统开发有一定了解,特别是对单片机编程、串行通信协议、密码锁设计感兴趣的工程师或学生。; 使用场景及目标:①适用于家庭安防、商业办公、银行金融、智能酒店、医疗行业等需要高安全性的场所;②帮助开发者掌握双单片机协同工作的原理,提高系统的稳定性和安全性;③通过实际项目加深对串行通信协议的理解,掌握密码锁系统的软硬件设计方法。; 阅读建议:建议读者结合实际硬件设备进行实践操作,重点理解串行通信协议的设计与实现,同时关注密码验证的安全性设计和电源管理优化。此外,可以通过提供的代码示例加深对各功能模块的理解,并尝试修改和优化代码以适应不同的应用场景。
--DATE:2023-10-27 --CONTENT:KMPLM-6979 新增与优化变更配置项管理和菜单入口 by 薛启宽 DECLARE VN INT; BEGIN SELECT COUNT(1) INTO VN FROM plm_cls_define WHERE CCLSID = 754; IF VN = 0 THEN insert into plm_cls_define (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (754, 750, 'EbomChangeIssue', null, null, 'ECI', 'EBOM问题报告', 'PLM_EbomChangeIssue', '5,7,70,251,750,754', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 1, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define WHERE CCLSID = 755; IF VN = 0 THEN insert into plm_cls_define (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (755, 750, 'PbomChangeIssue', null, null, 'PCI', 'PBOM问题报告', 'PLM_PbomChangeIssue', '5,7,70,251,750,755', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 2, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define WHERE CCLSID = 756; IF VN = 0 THEN insert into plm_cls_define (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (756, 751, 'EbomChangeRequest', null, null, 'ECR', 'EBOM变更申请', 'PLM_EbomChangeRequest', '5,7,70,251,751,756', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 1, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define WHERE CCLSID = 757; IF VN = 0 THEN insert into plm_cls_define (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (757, 751, 'PbomChangeRequest', null, null, 'PCR', 'PBOM变更申请', 'PLM_PbomChangeRequest', '5,7,70,251,751,757', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 2, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define WHERE CCLSID = 758; IF VN = 0 THEN insert into plm_cls_define (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (758, 752, 'EbomChangeOrder', null, null, 'ECO', 'EBOM变更指令', 'PLM_EbomChangeOrder', '5,7,70,251,752,758', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 1, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define WHERE CCLSID = 759; IF VN = 0 THEN insert into plm_cls_define (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (759, 752, 'PbomChangeOrder', null, null, 'PCO', 'PBOM变更指令', 'PLM_PbomChangeOrder', '5,7,70,251,752,759', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 2, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define WHERE CCLSID = 760; IF VN = 0 THEN insert into plm_cls_define (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (760, 753, 'EbomChangeActivity', null, null, 'ECA', 'EBOM变更活动', 'PLM_EbomChangeActivity', '5,7,70,251,753,760', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 3, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define WHERE CCLSID = 761; IF VN = 0 THEN insert into plm_cls_define (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (761, 753, 'PbomChangeActivity', null, null, 'PCA', 'PBOM变更活动', 'PLM_PbomChangeActivity', '5,7,70,251,753,761', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 2, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define_edit WHERE CCLSID = 754; IF VN = 0 THEN insert into plm_cls_define_edit (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (754, 750, 'EbomChangeIssue', null, null, 'ECI', 'EBOM问题报告', 'PLM_EbomChangeIssue', '5,7,70,251,750,754', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 1, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define_edit WHERE CCLSID = 755; IF VN = 0 THEN insert into plm_cls_define_edit (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (755, 750, 'PbomChangeIssue', null, null, 'PCI', 'PBOM问题报告', 'PLM_PbomChangeIssue', '5,7,70,251,750,755', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 2, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define_edit WHERE CCLSID = 756; IF VN = 0 THEN insert into plm_cls_define_edit (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (756, 751, 'EbomChangeRequest', null, null, 'ECR', 'EBOM变更申请', 'PLM_EbomChangeRequest', '5,7,70,251,751,756', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 1, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define_edit WHERE CCLSID = 757; IF VN = 0 THEN insert into plm_cls_define_edit (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (757, 751, 'PbomChangeRequest', null, null, 'PCR', 'PBOM变更申请', 'PLM_PbomChangeRequest', '5,7,70,251,751,757', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 2, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define_edit WHERE CCLSID = 758; IF VN = 0 THEN insert into plm_cls_define_edit (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (758, 752, 'EbomChangeOrder', null, null, 'ECO', 'EBOM变更指令', 'PLM_EbomChangeOrder', '5,7,70,251,752,758', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 1, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define_edit WHERE CCLSID = 759; IF VN = 0 THEN insert into plm_cls_define_edit (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (759, 752, 'PbomChangeOrder', null, null, 'PCO', 'PBOM变更指令', 'PLM_PbomChangeOrder', '5,7,70,251,752,759', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 2, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define_edit WHERE CCLSID = 760; IF VN = 0 THEN insert into plm_cls_define_edit (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (760, 753, 'EbomChangeActivity', null, null, 'ECA', 'EBOM变更活动', 'PLM_EbomChangeActivity', '5,7,70,251,753,760', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 3, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; SELECT COUNT(1) INTO VN FROM plm_cls_define_edit WHERE CCLSID = 761; IF VN = 0 THEN insert into plm_cls_define_edit (CCLSID, CPCLSID, CCLSNAME, CCLSEXECNAME, CCLSSHORTHANDNAME, CCLSSIGN, CNAME, CTABLENAME, CPATH, CSTATE, CLEVEL, CREMARK, CICONID, CISSUBSIDIARY, CISHARD, CCANINSTANTIATION, CENCODEUNIQUE, CVERSION, CMASTERCLSID, CREVISIONCLSID, CREVISION, CRESERVE, CLIFEMODELID, CVERRULEID, CIFTIMEVALID, CIFBATCHVALID, CIFSEQVALID, CDOMAINID, CISLEAFCLS, CCODEPROPID, CUNIQUERANGE, CCODERULEID, CHASCOPY, CPARTVIEWID, CBOMUSAGECLSID, CUSEPARTVIEW, CTYPE, CDISPLAYED, CUI_DISPLAYED, CIS_SUPPORT_WORKFLOW, CIS_SUPPORT_PERMISSION, CIS_SUPPORT_ASSOCIATION, CIS_SUPPORT_GLOBAL_QUERY, CSCHEMEID, CAPPLICATION_TYPE, CSUPPORT_VALIDITY, CINDEX, CIS_DISPLAYED_IN_FOLDER, CIS_SUPPORT_ATTACHMENT, CIS_SUPPORT_NEWVERSION, CATTACHNUM, CVEREXCEPT, CVERPREFIX, CSERVICE, CREVISIONNUM, CREVISIONRULE) values (761, 753, 'PbomChangeActivity', null, null, 'PCA', 'PBOM变更活动', 'PLM_PbomChangeActivity', '5,7,70,251,753,761', 1, null, null, null, 0, 1, 1, null, 0, null, null, null, 1, null, null, null, null, null, 0, 0, null, null, null, 0, 0, 0, 1, null, null, null, null, null, null, null, null, 0, null, 2, 1, 1, null, 999, null, null, ',7900,', null, 1); END IF; COMMIT; END; /
05-17
### PLM系统中EBOM和PBOM变更管理的表定义及数据初始化 在产品生命周期管理(PLM)系统中,工程物料清单(EBOM, Engineering Bill of Materials)和工艺物料清单(PBOM, Process Bill Of Materials)是核心组成部分。为了支持EBOM和PBOM的变更管理,需要设计一系列数据库表来跟踪变更请求、审批状态、变更历史以及其他相关活动。以下是基于SQL脚本的设计方案。 --- #### 数据库表设计 ##### 1. 变更申请表 (`Change_Request`) 该表用于记录所有的变更请求信息。 ```sql CREATE TABLE Change_Request ( Request_ID INT PRIMARY KEY AUTO_INCREMENT, Title VARCHAR(255) NOT NULL, Description TEXT, Created_By INT NOT NULL REFERENCES User(User_ID), Created_Date DATETIME DEFAULT CURRENT_TIMESTAMP, Status ENUM('Draft', 'Submitted', 'Approved', 'Rejected') DEFAULT 'Draft', BOM_Type ENUM('EBOM', 'PBOM') NOT NULL -- 表明变更涉及 EBOM 或 PBOM ); ``` ##### 2. 变更指令表 (`Change_Order`) 该表用于记录批准后的变更指令及其执行情况。 ```sql CREATE TABLE Change_Order ( Order_ID INT PRIMARY KEY AUTO_INCREMENT, Request_ID INT UNIQUE NOT NULL REFERENCES Change_Request(Request_ID), Issued_By INT NOT NULL REFERENCES User(User_ID), Issued_Date DATETIME DEFAULT CURRENT_TIMESTAMP, Execution_Status ENUM('Pending', 'In Progress', 'Completed') DEFAULT 'Pending' ); ``` ##### 3. 变更活动日志表 (`Change_Activity_Log`) 该表用于记录每次变更的具体操作细节。 ```sql CREATE TABLE Change_Activity_Log ( Log_ID INT PRIMARY KEY AUTO_INCREMENT, Order_ID INT NOT NULL REFERENCES Change_Order(Order_ID), Activity_Description TEXT NOT NULL, Performed_By INT NOT NULL REFERENCES User(User_ID), Perform_Date DATETIME DEFAULT CURRENT_TIMESTAMP ); ``` ##### 4. 物料版本控制表 (`Part_Version_Control`) 该表用于追踪物料的不同版本及其与变更的关系。 ```sql CREATE TABLE Part_Version_Control ( Version_ID INT PRIMARY KEY AUTO_INCREMENT, Part_Number VARCHAR(50) NOT NULL, Version_Number DECIMAL(5, 2) NOT NULL, Effective_Date DATE NOT NULL, Obsolete_Date DATE, Associated_Change_Order INT REFERENCES Change_Order(Order_ID), UNIQUE (Part_Number, Version_Number) ); ``` ##### 5. BOM结构表 (`BOM_Structure`) 该表用于存储当前有效的EBOM/PBOM结构。 ```sql CREATE TABLE BOM_Structure ( Structure_ID INT PRIMARY KEY AUTO_INCREMENT, Parent_Part_Number VARCHAR(50) NOT NULL, Child_Part_Number VARCHAR(50) NOT NULL, Quantity_Per_Parent DECIMAL(10, 3) NOT NULL, BOM_Type ENUM('EBOM', 'PBOM') NOT NULL, Effective_Version INT REFERENCES Part_Version_Control(Version_ID), FOREIGN KEY (Parent_Part_Number) REFERENCES Parts(Part_Number), FOREIGN KEY (Child_Part_Number) REFERENCES Parts(Part_Number) ); ``` ##### 6. 零件基础信息表 (`Parts`) 该表用于存储零件的基础属性。 ```sql CREATE TABLE Parts ( Part_Number VARCHAR(50) PRIMARY KEY, Name VARCHAR(255) NOT NULL, Category VARCHAR(100), Manufacturer VARCHAR(100), Specification TEXT ); ``` --- #### 初始数据加载 以下是一些示例SQL语句,展示如何向上述表格中插入初始数据。 ##### 插入零件基本信息 ```sql INSERT INTO Parts (Part_Number, Name, Category, Manufacturer, Specification) VALUES ('PART001', 'Engine Block', 'Mechanical', 'ABC Corp.', 'High-performance engine block'); ``` ##### 创建一个新的变更请求 ```sql INSERT INTO Change_Request (Title, Description, Created_By, BOM_Type) VALUES ('Update Engine Specifications', 'Modify the specifications of PART001 to support higher RPMs', 101, 'EBOM'); ``` ##### 将变更请求转化为变更指令 ```sql INSERT INTO Change_Order (Request_ID, Issued_By) SELECT Request_ID, 102 FROM Change_Request WHERE Request_ID = 1 AND Status = 'Approved'; ``` ##### 记录变更活动 ```sql INSERT INTO Change_Activity_Log (Order_ID, Activity_Description, Performed_By) VALUES (1, 'Updated specification field for PART001', 103); ``` ##### 更新物料版本 ```sql INSERT INTO Part_Version_Control (Part_Number, Version_Number, Effective_Date, Associated_Change_Order) VALUES ('PART001', 2.0, '2023-09-01', 1); ``` ##### 修改BOM结构 ```sql UPDATE BOM_Structure SET Effective_Version = (SELECT Version_ID FROM Part_Version_Control WHERE Part_Number = 'PART001' AND Version_Number = 2.0) WHERE Child_Part_Number = 'PART001'; ``` --- ### 总结 通过上述表结构设计和SQL脚本,可以有效地管理和追溯EBOM和PBOM的变更过程。这种设计方案不仅涵盖了变更申请、审批、执行的历史记录,还提供了详细的物料版本控制能力[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值