diff --git a/src/main/resources/sql/init_dm_attribute_template_item.sql b/src/main/resources/sql/init_dm_attribute_template_item.sql deleted file mode 100644 index 63957934..00000000 --- a/src/main/resources/sql/init_dm_attribute_template_item.sql +++ /dev/null @@ -1,26 +0,0 @@ -/* - 刀模属性-检验模板:按“物料(刀模)+模板”覆盖检验项目/标准值 - 说明:当物料的检验项目需要随时调整时,不直接使用模板明细,而是将覆盖后的项目写入本表。 -*/ - -if not exists (select 1 from sysobjects where name='dm_attribute_template_item' and xtype='U') -begin - create table dm_attribute_template_item ( - site varchar(32) not null, - bu_no varchar(32) not null, - attribute_no varchar(64) not null, - template_id varchar(64) not null, - item_no varchar(64) not null, - default_value decimal(18,6) null, - max_value decimal(18,6) null, - min_value decimal(18,6) null, - order_id int null, - create_by varchar(64) null, - create_time datetime null, - update_by varchar(64) null, - update_date datetime null, - constraint PK_dm_attribute_template_item primary key (site, bu_no, attribute_no, template_id, item_no) - ); -end -go - diff --git a/src/main/resources/sql/init_dm_method_seq_rule.sql b/src/main/resources/sql/init_dm_method_seq_rule.sql deleted file mode 100644 index 63e1bffe..00000000 --- a/src/main/resources/sql/init_dm_method_seq_rule.sql +++ /dev/null @@ -1,128 +0,0 @@ --- ===================================================== --- 初始化检验方法序列号规则 --- 说明:为不同工厂创建检验方法的序列号规则 --- 使用方法:根据实际工厂编号替换 @site 变量 --- ===================================================== - --- 清理旧数据(可选,谨慎使用) --- DELETE FROM seq_rule WHERE type = 'DM'; - --- 插入检验方法序列号规则 --- 请根据实际情况替换以下 @site 占位符为实际的工厂编号 - --- IQC 来料检验方法 (inspection_type_no = 105) -INSERT INTO seq_rule (site, type, name, prefix, length, current_val, create_date, create_by) -SELECT - site, - 'DM' as type, - '来料检验方法' as name, - 'IQC' as prefix, - 4 as length, - 1 as current_val, - GETDATE() as create_date, - 'SYSTEM' as create_by -FROM ( - SELECT DISTINCT site FROM eam_site WHERE site IS NOT NULL -) AS sites -WHERE NOT EXISTS ( - SELECT 1 FROM seq_rule - WHERE seq_rule.site = sites.site - AND seq_rule.type = 'DM' - AND seq_rule.prefix = 'IQC' -); - --- IPQC 过程检验方法 (inspection_type_no = 101, 102, 103, 104) -INSERT INTO seq_rule (site, type, name, prefix, length, current_val, create_date, create_by) -SELECT - site, - 'DM' as type, - '过程检验方法' as name, - 'IPQC' as prefix, - 4 as length, - 1 as current_val, - GETDATE() as create_date, - 'SYSTEM' as create_by -FROM ( - SELECT DISTINCT site FROM eam_site WHERE site IS NOT NULL -) AS sites -WHERE NOT EXISTS ( - SELECT 1 FROM seq_rule - WHERE seq_rule.site = sites.site - AND seq_rule.type = 'DM' - AND seq_rule.prefix = 'IPQC' -); - --- FAI 首件检验方法 (inspection_type_no = 106) -INSERT INTO seq_rule (site, type, name, prefix, length, current_val, create_date, create_by) -SELECT - site, - 'DM' as type, - '首件检验方法' as name, - 'FAI' as prefix, - 4 as length, - 1 as current_val, - GETDATE() as create_date, - 'SYSTEM' as create_by -FROM ( - SELECT DISTINCT site FROM eam_site WHERE site IS NOT NULL -) AS sites -WHERE NOT EXISTS ( - SELECT 1 FROM seq_rule - WHERE seq_rule.site = sites.site - AND seq_rule.type = 'DM' - AND seq_rule.prefix = 'FAI' -); - --- FQC 最终检验方法 (inspection_type_no = 107) -INSERT INTO seq_rule (site, type, name, prefix, length, current_val, create_date, create_by) -SELECT - site, - 'DM' as type, - '最终检验方法' as name, - 'FQC' as prefix, - 4 as length, - 1 as current_val, - GETDATE() as create_date, - 'SYSTEM' as create_by -FROM ( - SELECT DISTINCT site FROM eam_site WHERE site IS NOT NULL -) AS sites -WHERE NOT EXISTS ( - SELECT 1 FROM seq_rule - WHERE seq_rule.site = sites.site - AND seq_rule.type = 'DM' - AND seq_rule.prefix = 'FQC' -); - --- PQC 出货检验方法 (inspection_type_no = 108) -INSERT INTO seq_rule (site, type, name, prefix, length, current_val, create_date, create_by) -SELECT - site, - 'DM' as type, - '出货检验方法' as name, - 'PQC' as prefix, - 4 as length, - 1 as current_val, - GETDATE() as create_date, - 'SYSTEM' as create_by -FROM ( - SELECT DISTINCT site FROM eam_site WHERE site IS NOT NULL -) AS sites -WHERE NOT EXISTS ( - SELECT 1 FROM seq_rule - WHERE seq_rule.site = sites.site - AND seq_rule.type = 'DM' - AND seq_rule.prefix = 'PQC' -); - --- 查询验证 -SELECT * FROM seq_rule WHERE type = 'DM' ORDER BY site, prefix; - --- ===================================================== --- 编号格式说明: --- IQC-0001, IQC-0002, ... (来料检验方法) --- IPQC-0001, IPQC-0002, ... (过程检验方法) --- FAI-0001, FAI-0002, ... (首件检验方法) --- FQC-0001, FQC-0002, ... (最终检验方法) --- PQC-0001, PQC-0002, ... (出货检验方法) --- ===================================================== diff --git a/src/main/resources/sql/report/qc_subpart_full_port.sql b/src/main/resources/sql/report/qc_subpart_full_port.sql deleted file mode 100644 index 472e23d4..00000000 --- a/src/main/resources/sql/report/qc_subpart_full_port.sql +++ /dev/null @@ -1,349 +0,0 @@ -/* - QC SubPart SQL 移植包(report 模块) - 说明: - 1) 保持同库不改表,仅迁移查询/新增/更新逻辑 SQL。 - 2) 返回风格以当前项目 R 结构为准(code/msg/rows/total/...)。 - 3) 记录号并发规则保留 SQLServer 锁语法:UPDLOCK, HOLDLOCK。 -*/ - -/* 1. 主表查询:/report/qcSubPartQuery/getHeaderList */ -SELECT id, - site, - record_no AS recordNo, - order_no AS orderNo, - seq_no AS seqNo, - citem_code AS citemCode, - item_no AS itemNo, - item_desc AS itemDesc, - work_center_no AS workCenterNo, - bom_rev_no AS bomRevNo, - finished_part_no AS partNo, - finished_part_desc AS partDesc, - sku, - resource_id AS resourceId, - resource_desc AS resourceDesc, - produce_date AS scheduledDate, - qualified_qty AS qtyApprove, - create_by AS createBy, - create_date AS createDate, - update_by AS updateBy, - update_date AS updateDate -FROM qc_subpart_record -WHERE site = :site - AND del_flag = 'N' -ORDER BY create_date DESC; - -/* 2. 明细查询:/report/qcSubPartQuery/getDetailList */ -SELECT id, - site, - header_id AS headerId, - record_no AS recordNo, - sub_part_no AS partNo, - sub_part_desc AS partDesc, - supplier_id AS supplierId, - supplier_name AS supplierName, - model_no AS modelNo, - manufacture_date AS manufactureDate, - sort_no AS sortNo -FROM qc_subpart_record_detail -WHERE site = :site - AND record_no = :recordNo - AND del_flag = 'N' -ORDER BY sort_no ASC; - -/* 3. 新增弹窗主数据:/report/qcSubPartAdd/queryAddMainList */ -SELECT DISTINCT - a.site, - ISNULL(j.sourceBu, '') AS citemCode, - a.orderno AS orderNo, - a.seqno AS seqNo, - a.itemno AS itemNo, - c.operation_desc AS itemDesc, - a.s_workcenterno AS workCenterNo, - d.bomrevno AS bomRevNo, - a.part_no AS partNo, - j.part_desc AS partDesc, - j.sku AS sku, - a.s_resourceid AS resourceId, - re.resource_desc AS resourceDesc, - CAST(a.s_scheduleddate AS DATE) AS scheduledDate, - ISNULL(a.qtyapprove, 0) AS qtyApprove -FROM soscheduledrouting a -INNER JOIN part j - ON a.site = j.site - AND a.part_no = j.part_no -INNER JOIN so_routing c - ON a.site = c.site - AND a.orderno = c.order_no - AND a.itemno = c.item_no -INNER JOIN shoporder d - ON a.site = d.site - AND a.orderno = d.orderno -LEFT JOIN resource re - ON re.Site = a.site - AND re.resource_id = a.s_resourceid -WHERE a.site = :site - AND (:citemCode = '' OR a.site + '_' + j.sourceBu = :citemCode) - AND (:orderNo = '' OR a.orderno LIKE '%' + :orderNo + '%') - AND (:seqNo = '' OR a.seqno LIKE '%' + :seqNo + '%') - AND (:partNo = '' OR a.part_no LIKE '%' + :partNo + '%') - AND (:sku = '' OR j.sku LIKE '%' + :sku + '%') - AND (:startDate IS NULL OR a.s_scheduleddate >= :startDate) - AND (:endDate IS NULL OR :endDate >= a.s_scheduleddate) -ORDER BY a.seqno DESC; - -/* 4. 新增弹窗明细数据:/report/qcSubPartAdd/queryAddDetailList(主查询) */ -SELECT DISTINCT - h.part_no AS partNo, - p.part_desc AS partDesc, - h.supplier_no AS supplierId, - s.SupplierName AS supplierName, - ISNULL(r.model_no, '') AS modelNo, - CAST(r.manufacture_date AS DATE) AS manufactureDate -FROM sfdc_material_hist h -LEFT JOIN part p - ON p.site = h.site - AND p.part_no = h.part_no -LEFT JOIN c_roll_info r - ON r.site = h.site - AND r.roll_no = h.roll_no -LEFT JOIN view_Supplier s - ON s.Site = h.site - AND s.SupplierID = h.supplier_no -WHERE h.site = :site - AND h.assjob_seq_no = :seqNo; - -/* 4.1 新增弹窗明细数据兜底:按历史子件记录回填 */ -SELECT DISTINCT - d.sub_part_no AS partNo, - d.sub_part_desc AS partDesc, - d.supplier_id AS supplierId, - d.supplier_name AS supplierName, - d.model_no AS modelNo, - d.manufacture_date AS manufactureDate -FROM qc_subpart_record_detail d -INNER JOIN qc_subpart_record h - ON h.site = d.site - AND h.id = d.header_id -WHERE h.site = :site - AND h.seq_no = :seqNo - AND h.del_flag = 'N' - AND d.del_flag = 'N' -ORDER BY d.sub_part_no; - -/* 5. 记录号并发锁:saveAddRecord */ -SELECT ISNULL(MAX(CAST(SUBSTRING(record_no, CHARINDEX('_', record_no) + 1, 20) AS INT)), 0) -FROM qc_subpart_record WITH (UPDLOCK, HOLDLOCK) -WHERE site = :site - AND seq_no = :seqNo - AND del_flag = 'N'; - -/* 6. 新增主记录:saveAddRecord */ -INSERT INTO qc_subpart_record( - site, - record_no, - order_no, - seq_no, - citem_code, - item_no, - item_desc, - work_center_no, - bom_rev_no, - finished_part_no, - finished_part_desc, - sku, - resource_id, - resource_desc, - produce_date, - qualified_qty, - create_by, - create_date, - update_by, - update_date, - del_flag -) VALUES ( - :site, - :recordNo, - :orderNo, - :seqNo, - :citemCode, - :itemNo, - :itemDesc, - :workCenterNo, - :bomRevNo, - :partNo, - :partDesc, - :sku, - :resourceId, - :resourceDesc, - :produceDate, - :qualifiedQty, - :username, - GETDATE(), - :username, - GETDATE(), - 'N' -); - -/* 7. 新增明细:saveAddRecord / updateRecord */ -INSERT INTO qc_subpart_record_detail( - site, - header_id, - record_no, - sub_part_no, - sub_part_desc, - supplier_id, - supplier_name, - model_no, - manufacture_date, - sort_no, - create_by, - create_date, - del_flag -) VALUES ( - :site, - :headerId, - :recordNo, - :partNo, - :partDesc, - :supplierId, - :supplierName, - :modelNo, - :manufactureDate, - :sortNo, - :username, - GETDATE(), - 'N' -); - -/* 8. 更新主记录:updateRecord(仅改主表关键字段) */ -UPDATE qc_subpart_record -SET order_no = :orderNo, - item_no = :itemNo, - item_desc = :itemDesc, - work_center_no = :workCenterNo, - bom_rev_no = :bomRevNo, - resource_id = :resourceId, - resource_desc = :resourceDesc, - produce_date = :produceDate, - qualified_qty = :qualifiedQty, - update_by = :username, - update_date = GETDATE() -WHERE site = :site - AND record_no = :recordNo - AND del_flag = 'N'; - -/* 10. 如库表缺字段时,执行以下补列脚本(SQLServer) */ -IF COL_LENGTH('qc_subpart_record', 'order_no') IS NULL -BEGIN - ALTER TABLE qc_subpart_record ADD order_no NVARCHAR(100) NULL; -END; - -IF COL_LENGTH('qc_subpart_record', 'resource_desc') IS NULL -BEGIN - ALTER TABLE qc_subpart_record ADD resource_desc NVARCHAR(200) NULL; -END; - -IF COL_LENGTH('qc_subpart_record', 'item_no') IS NULL -BEGIN - ALTER TABLE qc_subpart_record ADD item_no NVARCHAR(50) NULL; -END; - -IF COL_LENGTH('qc_subpart_record', 'item_desc') IS NULL -BEGIN - ALTER TABLE qc_subpart_record ADD item_desc NVARCHAR(200) NULL; -END; - -IF COL_LENGTH('qc_subpart_record', 'work_center_no') IS NULL -BEGIN - ALTER TABLE qc_subpart_record ADD work_center_no NVARCHAR(100) NULL; -END; - -IF COL_LENGTH('qc_subpart_record', 'bom_rev_no') IS NULL -BEGIN - ALTER TABLE qc_subpart_record ADD bom_rev_no NVARCHAR(50) NULL; -END; - -/* 11. 历史数据回填:按 site + seq_no 回填工单号、设备名称 */ -;WITH source_data AS ( - SELECT - r.id, - a.orderno AS orderNo, - a.itemno AS itemNo, - c.operation_desc AS itemDesc, - a.s_workcenterno AS workCenterNo, - d.bomrevno AS bomRevNo, - CAST(a.s_scheduleddate AS DATE) AS scheduledDate, - eo.ObjectDesc AS resourceDesc, - ROW_NUMBER() OVER ( - PARTITION BY r.id - ORDER BY ISNULL(a.update_date, a.create_date) DESC, a.seqno DESC - ) AS rn - FROM qc_subpart_record r WITH (NOLOCK) - INNER JOIN soscheduledrouting a WITH (NOLOCK) - ON a.site = r.site - AND a.seqno = r.seq_no - LEFT JOIN so_routing c WITH (NOLOCK) - ON c.site = a.site - AND c.order_no = a.orderno - AND c.item_no = a.itemno - LEFT JOIN shoporder d WITH (NOLOCK) - ON d.site = a.site - AND d.orderno = a.orderno - LEFT JOIN eam_object eo WITH (NOLOCK) - ON eo.site = a.site - AND (eo.ResourceID = a.s_resourceid OR eo.ObjectID = a.s_resourceid) - WHERE r.del_flag = 'N' -) -UPDATE r -SET - order_no = CASE - WHEN ISNULL(LTRIM(RTRIM(r.order_no)), '') = '' THEN ISNULL(s.orderNo, '') - ELSE r.order_no - END, - item_no = CASE - WHEN ISNULL(LTRIM(RTRIM(r.item_no)), '') = '' THEN ISNULL(s.itemNo, '') - ELSE r.item_no - END, - item_desc = CASE - WHEN ISNULL(LTRIM(RTRIM(r.item_desc)), '') = '' THEN ISNULL(s.itemDesc, '') - ELSE r.item_desc - END, - work_center_no = CASE - WHEN ISNULL(LTRIM(RTRIM(r.work_center_no)), '') = '' THEN ISNULL(s.workCenterNo, '') - ELSE r.work_center_no - END, - bom_rev_no = CASE - WHEN ISNULL(LTRIM(RTRIM(r.bom_rev_no)), '') = '' THEN ISNULL(s.bomRevNo, '') - ELSE r.bom_rev_no - END, - produce_date = CASE - WHEN r.produce_date IS NULL THEN s.scheduledDate - ELSE r.produce_date - END, - resource_desc = CASE - WHEN ISNULL(LTRIM(RTRIM(r.resource_desc)), '') = '' THEN ISNULL(s.resourceDesc, '') - ELSE r.resource_desc - END, - update_date = GETDATE() -FROM qc_subpart_record r -INNER JOIN source_data s - ON s.id = r.id - AND s.rn = 1 -WHERE r.del_flag = 'N' - AND ( - ISNULL(LTRIM(RTRIM(r.order_no)), '') = '' - OR ISNULL(LTRIM(RTRIM(r.item_no)), '') = '' - OR ISNULL(LTRIM(RTRIM(r.item_desc)), '') = '' - OR ISNULL(LTRIM(RTRIM(r.work_center_no)), '') = '' - OR ISNULL(LTRIM(RTRIM(r.bom_rev_no)), '') = '' - OR r.produce_date IS NULL - OR ISNULL(LTRIM(RTRIM(r.resource_desc)), '') = '' - ); - -/* 9. 更新明细策略:先软删后重建 */ -UPDATE qc_subpart_record_detail -SET del_flag = 'Y' -WHERE site = :site - AND record_no = :recordNo - AND del_flag = 'N';