提交
This commit is contained in:
1 parent
848517479d
commit
d2290eb92c
20 files changed
+497
-807
No files matched your search
@@ -2782,7 +2782,9 @@ def set_task_outputs(
|
||||
BizCellProduct.id == cp_id, BizCellProduct.del_flag == 0
|
||||
).first()
|
||||
if product:
|
||||
# 作废并软删:避免同编码再入库时留下 voided+frozen 双行,污染各类选择器
|
||||
product.product_status = "voided"
|
||||
product.del_flag = 1
|
||||
product.update_by = user_id
|
||||
product.update_time = now
|
||||
db.add(product)
|
||||
|
||||
@@ -2844,9 +2844,9 @@
|
||||
"crud_production_task_rationale_2513",
|
||||
"crud_production_task_rationale_2636",
|
||||
"crud_production_task_rationale_2694",
|
||||
"crud_production_task_rationale_2897",
|
||||
"crud_production_task_rationale_3022",
|
||||
"crud_production_task_rationale_3203",
|
||||
"crud_production_task_rationale_2899",
|
||||
"crud_production_task_rationale_3024",
|
||||
"crud_production_task_rationale_3205",
|
||||
"crud_production_task_rationale_460",
|
||||
"crud_production_task_rationale_479",
|
||||
"crud_production_task_rationale_579",
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,7 +1,7 @@
|
||||
# Graph Report - app (2026-08-20)
|
||||
|
||||
## Corpus Check
|
||||
- Large corpus: 262 files · ~313,525 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
- Large corpus: 262 files · ~313,532 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
|
||||
## Summary
|
||||
- 5425 nodes · 29863 edges · 43 communities detected
|
||||
|
||||
+284
-284
File diff suppressed because it is too large.
Load diff
@@ -105,7 +105,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py": 1782894693.7808309,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_usage.py": 1781513732.7796721,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sop_document.py": 1779265721.9928973,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py": 1785240038.2612407,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py": 1787212916.0972161,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py": 1782890475.769446,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py": 1779265661.482352,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_production_reception.py": 1782722028.9202535,
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
-- 质检物料月初模板:模板行字段改为可空(维护时可不全填,确认入库时再校验)
|
||||
-- MySQL 5.7;已建表环境执行本脚本
|
||||
|
||||
ALTER TABLE `biz_qc_material_month_template`
|
||||
MODIFY COLUMN `material_code` varchar(64) NOT NULL DEFAULT '' COMMENT '物料编码',
|
||||
MODIFY COLUMN `material_name` varchar(200) NOT NULL DEFAULT '' COMMENT '物料名称',
|
||||
MODIFY COLUMN `catalog_no` varchar(128) DEFAULT NULL COMMENT '货号',
|
||||
MODIFY COLUMN `batch_no` varchar(128) DEFAULT NULL COMMENT '批号',
|
||||
MODIFY COLUMN `manufacturer` varchar(200) DEFAULT NULL COMMENT '厂家',
|
||||
MODIFY COLUMN `unit_price` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '单价(元)',
|
||||
MODIFY COLUMN `amount` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '金额(元)',
|
||||
MODIFY COLUMN `in_qty` decimal(18,4) NOT NULL DEFAULT 0.0000 COMMENT '默认入库数量',
|
||||
MODIFY COLUMN `expire_date` date DEFAULT NULL COMMENT '默认过期日期';
|
||||
@@ -1,30 +0,0 @@
|
||||
-- 质检物料库:月初入库模板
|
||||
-- MySQL 5.7 / utf8mb4;可重复执行需人工判断表是否已存在
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `biz_qc_material_month_template` (
|
||||
`id` varchar(64) NOT NULL COMMENT '主键ID',
|
||||
`material_id` varchar(64) DEFAULT NULL COMMENT '关联 biz_qc_material.id,可空',
|
||||
`material_code` varchar(64) NOT NULL DEFAULT '' COMMENT '物料编码',
|
||||
`material_name` varchar(200) NOT NULL DEFAULT '' COMMENT '物料名称',
|
||||
`spec_model` varchar(200) DEFAULT NULL COMMENT '规格型号',
|
||||
`unit` varchar(32) DEFAULT NULL COMMENT '单位',
|
||||
`catalog_no` varchar(128) DEFAULT NULL COMMENT '货号',
|
||||
`batch_no` varchar(128) DEFAULT NULL COMMENT '批号',
|
||||
`manufacturer` varchar(200) DEFAULT NULL COMMENT '厂家',
|
||||
`unit_price` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '单价(元)',
|
||||
`amount` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '金额(元)',
|
||||
`in_qty` decimal(18,4) NOT NULL DEFAULT 0.0000 COMMENT '默认入库数量',
|
||||
`expire_date` date DEFAULT NULL COMMENT '默认过期日期',
|
||||
`tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
|
||||
`order_num` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
|
||||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_qc_mmt_tenant` (`tenant_no`, `del_flag`, `order_num`),
|
||||
KEY `idx_qc_mmt_material` (`material_id`, `del_flag`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='质检物料月初入库模板';
|
||||
@@ -1,91 +0,0 @@
|
||||
-- 入库放行审核:生产 / 质检菜单(sys_menu)
|
||||
-- MySQL 5.7;可重复执行
|
||||
-- 市场 → 细胞存储 原菜单(biz:storageReleaseReview:list)保持不变
|
||||
-- 不写入 sys_role_menu:由管理员在角色管理中勾选新菜单
|
||||
|
||||
SET @tenant_no = CONVERT('zkxw' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @prm_id = CONVERT('PRM00000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @qcm_id = CONVERT('QCM00000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
-- 注意:954…001 已占用「生产任务组合模版」,生产侧入库放行用 955…001
|
||||
SET @menu_prod = CONVERT('95500000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @menu_qc = CONVERT('70000000000000000000000000000014' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 1) 生产 → 生产管理 → 入库放行审核
|
||||
INSERT INTO sys_menu (
|
||||
id, menu_name, parent_id, menu_type, path, component, perms,
|
||||
is_frame, visible, status, tenant_no, order_num, remark,
|
||||
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
||||
)
|
||||
SELECT
|
||||
@menu_prod,
|
||||
'入库放行审核',
|
||||
@prm_id,
|
||||
'C',
|
||||
'storage-release-review',
|
||||
'/quality-inspection/storage-release-review/index',
|
||||
'production:storageReleaseReview:list',
|
||||
1, '1', '1', @tenant_no, 4,
|
||||
'生产侧入库放行审核(仅审生产结论;双通过后可入库)',
|
||||
NULL, '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu m
|
||||
WHERE m.id COLLATE utf8mb4_unicode_ci = @menu_prod
|
||||
OR m.perms COLLATE utf8mb4_unicode_ci = 'production:storageReleaseReview:list'
|
||||
);
|
||||
|
||||
UPDATE sys_menu
|
||||
SET
|
||||
menu_name = '入库放行审核',
|
||||
parent_id = @prm_id,
|
||||
menu_type = 'C',
|
||||
path = 'storage-release-review',
|
||||
component = '/quality-inspection/storage-release-review/index',
|
||||
perms = 'production:storageReleaseReview:list',
|
||||
visible = '1',
|
||||
status = '1',
|
||||
order_num = 4,
|
||||
remark = '生产侧入库放行审核(仅审生产结论;双通过后可入库)',
|
||||
del_flag = 0,
|
||||
update_time = NOW()
|
||||
WHERE id COLLATE utf8mb4_unicode_ci = @menu_prod;
|
||||
|
||||
-- 2) 质检 → 质检管理 → 入库放行审核
|
||||
INSERT INTO sys_menu (
|
||||
id, menu_name, parent_id, menu_type, path, component, perms,
|
||||
is_frame, visible, status, tenant_no, order_num, remark,
|
||||
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
||||
)
|
||||
SELECT
|
||||
@menu_qc,
|
||||
'入库放行审核',
|
||||
@qcm_id,
|
||||
'C',
|
||||
'storage-release-review',
|
||||
'/quality-inspection/storage-release-review/index',
|
||||
'quality:storageReleaseReview:list',
|
||||
1, '1', '1', @tenant_no, 3,
|
||||
'质检侧入库放行审核(仅审质检结论;双通过后可入库)',
|
||||
NULL, '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu m
|
||||
WHERE m.id COLLATE utf8mb4_unicode_ci = @menu_qc
|
||||
OR m.perms COLLATE utf8mb4_unicode_ci = 'quality:storageReleaseReview:list'
|
||||
);
|
||||
|
||||
UPDATE sys_menu
|
||||
SET
|
||||
menu_name = '入库放行审核',
|
||||
parent_id = @qcm_id,
|
||||
menu_type = 'C',
|
||||
path = 'storage-release-review',
|
||||
component = '/quality-inspection/storage-release-review/index',
|
||||
perms = 'quality:storageReleaseReview:list',
|
||||
visible = '1',
|
||||
status = '1',
|
||||
order_num = 3,
|
||||
remark = '质检侧入库放行审核(仅审质检结论;双通过后可入库)',
|
||||
del_flag = 0,
|
||||
update_time = NOW()
|
||||
WHERE id COLLATE utf8mb4_unicode_ci = @menu_qc;
|
||||
@@ -1,111 +0,0 @@
|
||||
-- 入库放行审核:给指定角色授权(sys_role_menu)
|
||||
-- MySQL 5.7;可重复执行
|
||||
-- 研发主管 → 生产侧入库放行审核
|
||||
-- 质量主管 → 质检侧入库放行审核
|
||||
-- 祖先菜单(生产/生产管理、质检/质检管理)若已有则不重复插入
|
||||
|
||||
SET @tenant_no = CONVERT('zkxw' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
-- 研发主管
|
||||
SET @role_rd = CONVERT('2668804724054AB6A45DF35D2108138B' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
-- 质量主管
|
||||
SET @role_qa = CONVERT('35DD110367764827ACCCFEEBA1E21699' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
-- 生产入库放行
|
||||
SET @menu_prod = CONVERT('95500000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
-- 质检入库放行
|
||||
SET @menu_qc = CONVERT('70000000000000000000000000000014' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @top_prod = CONVERT('TOP00000000000000000000000000002' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @prm_id = CONVERT('PRM00000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @top_qc = CONVERT('TOP00000000000000000000000000003' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @qcm_id = CONVERT('QCM00000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @web_root = CONVERT('2' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 软删恢复
|
||||
UPDATE sys_role_menu
|
||||
SET del_flag = 0, update_time = NOW(), remark = 'grant storage release dual-gate'
|
||||
WHERE tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
AND del_flag = 1
|
||||
AND (
|
||||
(role_id COLLATE utf8mb4_unicode_ci = @role_rd AND menu_id COLLATE utf8mb4_unicode_ci IN (@web_root, @top_prod, @prm_id, @menu_prod))
|
||||
OR
|
||||
(role_id COLLATE utf8mb4_unicode_ci = @role_qa AND menu_id COLLATE utf8mb4_unicode_ci IN (@web_root, @top_qc, @qcm_id, @menu_qc))
|
||||
);
|
||||
|
||||
-- 研发主管:Web 根 + 生产 + 生产管理 + 生产入库放行
|
||||
INSERT INTO sys_role_menu (
|
||||
id, role_id, menu_id, tenant_no, order_num, remark,
|
||||
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
||||
)
|
||||
SELECT
|
||||
UPPER(MD5(CONCAT(x.role_id, '|', x.menu_id))),
|
||||
x.role_id,
|
||||
x.menu_id,
|
||||
@tenant_no,
|
||||
0,
|
||||
'grant storage release dual-gate',
|
||||
'admin',
|
||||
'',
|
||||
NOW(),
|
||||
NULL,
|
||||
NOW(),
|
||||
0
|
||||
FROM (
|
||||
SELECT @role_rd AS role_id, @web_root AS menu_id
|
||||
UNION ALL SELECT @role_rd, @top_prod
|
||||
UNION ALL SELECT @role_rd, @prm_id
|
||||
UNION ALL SELECT @role_rd, @menu_prod
|
||||
) x
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM sys_role r
|
||||
WHERE r.id COLLATE utf8mb4_unicode_ci = x.role_id AND r.del_flag = 0
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM sys_menu m
|
||||
WHERE m.id COLLATE utf8mb4_unicode_ci = x.menu_id AND m.del_flag = 0
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_menu rm
|
||||
WHERE rm.role_id COLLATE utf8mb4_unicode_ci = x.role_id
|
||||
AND rm.menu_id COLLATE utf8mb4_unicode_ci = x.menu_id
|
||||
AND rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
AND rm.del_flag = 0
|
||||
);
|
||||
|
||||
-- 质量主管:Web 根 + 质检 + 质检管理 + 质检入库放行
|
||||
INSERT INTO sys_role_menu (
|
||||
id, role_id, menu_id, tenant_no, order_num, remark,
|
||||
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
||||
)
|
||||
SELECT
|
||||
UPPER(MD5(CONCAT(x.role_id, '|', x.menu_id))),
|
||||
x.role_id,
|
||||
x.menu_id,
|
||||
@tenant_no,
|
||||
0,
|
||||
'grant storage release dual-gate',
|
||||
'admin',
|
||||
'',
|
||||
NOW(),
|
||||
NULL,
|
||||
NOW(),
|
||||
0
|
||||
FROM (
|
||||
SELECT @role_qa AS role_id, @web_root AS menu_id
|
||||
UNION ALL SELECT @role_qa, @top_qc
|
||||
UNION ALL SELECT @role_qa, @qcm_id
|
||||
UNION ALL SELECT @role_qa, @menu_qc
|
||||
) x
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM sys_role r
|
||||
WHERE r.id COLLATE utf8mb4_unicode_ci = x.role_id AND r.del_flag = 0
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM sys_menu m
|
||||
WHERE m.id COLLATE utf8mb4_unicode_ci = x.menu_id AND m.del_flag = 0
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_menu rm
|
||||
WHERE rm.role_id COLLATE utf8mb4_unicode_ci = x.role_id
|
||||
AND rm.menu_id COLLATE utf8mb4_unicode_ci = x.menu_id
|
||||
AND rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
AND rm.del_flag = 0
|
||||
);
|
||||
@@ -1,42 +0,0 @@
|
||||
-- 入库放行审核:生产/质检双闸门
|
||||
-- MySQL 5.7;历史拷贝条件见下方 UPDATE 的 WHERE(可重复执行)
|
||||
|
||||
ALTER TABLE `biz_storage_release_review`
|
||||
ADD COLUMN `qc_review_conclusion` VARCHAR(16) DEFAULT NULL COMMENT '质检侧结论 tg/btg/NULL待审' AFTER `review_time`,
|
||||
ADD COLUMN `qc_review_remark` VARCHAR(512) DEFAULT NULL COMMENT '质检侧审核备注' AFTER `qc_review_conclusion`,
|
||||
ADD COLUMN `qc_review_attachments` VARCHAR(4000) DEFAULT NULL COMMENT '质检侧审核附件(逗号分隔URL)' AFTER `qc_review_remark`,
|
||||
ADD COLUMN `qc_review_by` VARCHAR(64) DEFAULT NULL COMMENT '质检侧审核人ID' AFTER `qc_review_attachments`,
|
||||
ADD COLUMN `qc_review_by_name` VARCHAR(64) DEFAULT NULL COMMENT '质检侧审核人姓名' AFTER `qc_review_by`,
|
||||
ADD COLUMN `qc_review_time` DATETIME DEFAULT NULL COMMENT '质检侧审核时间' AFTER `qc_review_by_name`,
|
||||
ADD COLUMN `prod_review_conclusion` VARCHAR(16) DEFAULT NULL COMMENT '生产侧结论 tg/btg/NULL待审' AFTER `qc_review_time`,
|
||||
ADD COLUMN `prod_review_remark` VARCHAR(512) DEFAULT NULL COMMENT '生产侧审核备注' AFTER `prod_review_conclusion`,
|
||||
ADD COLUMN `prod_review_attachments` VARCHAR(4000) DEFAULT NULL COMMENT '生产侧审核附件(逗号分隔URL)' AFTER `prod_review_remark`,
|
||||
ADD COLUMN `prod_review_by` VARCHAR(64) DEFAULT NULL COMMENT '生产侧审核人ID' AFTER `prod_review_attachments`,
|
||||
ADD COLUMN `prod_review_by_name` VARCHAR(64) DEFAULT NULL COMMENT '生产侧审核人姓名' AFTER `prod_review_by`,
|
||||
ADD COLUMN `prod_review_time` DATETIME DEFAULT NULL COMMENT '生产侧审核时间' AFTER `prod_review_by_name`;
|
||||
|
||||
ALTER TABLE `biz_storage_release_review`
|
||||
ADD KEY `idx_srr_dual_conclusion` (`tenant_no`, `qc_review_conclusion`, `prod_review_conclusion`, `del_flag`);
|
||||
|
||||
-- 旧单人结论只落到质检侧;已入库状态不改
|
||||
UPDATE `biz_storage_release_review`
|
||||
SET
|
||||
`qc_review_conclusion` = `review_conclusion`,
|
||||
`qc_review_remark` = `review_remark`,
|
||||
`qc_review_attachments` = `review_attachments`,
|
||||
`qc_review_by` = `review_by`,
|
||||
`qc_review_by_name` = `review_by_name`,
|
||||
`qc_review_time` = `review_time`
|
||||
WHERE `del_flag` = 0
|
||||
AND (`qc_review_conclusion` IS NULL OR `qc_review_conclusion` = '')
|
||||
AND `review_conclusion` IS NOT NULL
|
||||
AND `review_conclusion` <> '';
|
||||
|
||||
-- 按双闸门重算汇总(旧「仅质检通过」汇总变为 NULL)
|
||||
UPDATE `biz_storage_release_review`
|
||||
SET `review_conclusion` = CASE
|
||||
WHEN `prod_review_conclusion` = 'tg' AND `qc_review_conclusion` = 'tg' THEN 'tg'
|
||||
WHEN `prod_review_conclusion` = 'btg' OR `qc_review_conclusion` = 'btg' THEN 'btg'
|
||||
ELSE NULL
|
||||
END
|
||||
WHERE `del_flag` = 0;
|
||||
@@ -1,42 +0,0 @@
|
||||
-- 市场 → 细胞存储 → 入库放行审核:取消全部角色授权 + 菜单软删
|
||||
-- MySQL 5.7;可重复执行
|
||||
-- 目标菜单:id=70000000000000000000000000000011
|
||||
-- perms=biz:storageReleaseReview:list
|
||||
-- 不影响生产/质检侧入库放行审核菜单与授权
|
||||
|
||||
SET @tenant_no = CONVERT('zkxw' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @menu_market = CONVERT('70000000000000000000000000000011' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 1) 取消任意角色对该菜单的授权(软删 sys_role_menu)
|
||||
UPDATE sys_role_menu
|
||||
SET
|
||||
del_flag = 1,
|
||||
update_time = NOW(),
|
||||
remark = 'revoke market storage release review (overview offline)'
|
||||
WHERE menu_id COLLATE utf8mb4_unicode_ci = @menu_market
|
||||
AND del_flag = 0;
|
||||
|
||||
-- 兼容按 perms 关联(若存在重复/历史 id)
|
||||
UPDATE sys_role_menu rm
|
||||
INNER JOIN sys_menu m
|
||||
ON m.id COLLATE utf8mb4_unicode_ci = rm.menu_id COLLATE utf8mb4_unicode_ci
|
||||
SET
|
||||
rm.del_flag = 1,
|
||||
rm.update_time = NOW(),
|
||||
rm.remark = 'revoke market storage release review (overview offline)'
|
||||
WHERE m.perms COLLATE utf8mb4_unicode_ci = 'biz:storageReleaseReview:list'
|
||||
AND rm.del_flag = 0;
|
||||
|
||||
-- 2) 菜单表虚拟删除
|
||||
UPDATE sys_menu
|
||||
SET
|
||||
del_flag = 1,
|
||||
visible = '0',
|
||||
status = '0',
|
||||
update_time = NOW(),
|
||||
remark = '市场侧入库放行审核暂下线(改由生产/质检入口)'
|
||||
WHERE (
|
||||
id COLLATE utf8mb4_unicode_ci = @menu_market
|
||||
OR perms COLLATE utf8mb4_unicode_ci = 'biz:storageReleaseReview:list'
|
||||
)
|
||||
AND del_flag = 0;
|
||||
@@ -0,0 +1,15 @@
|
||||
-- 细胞产品:历史「产出作废」仅将 product_status 置为 voided、未软删,
|
||||
-- 同编码再入库后留下 voided+frozen 双行,导致各类「质检对象/细胞产品」下拉重复。
|
||||
-- 将仍 del_flag=0 的 voided 行软删,与后续 set_task_outputs 行为对齐。
|
||||
-- 执行前请备份;可先 SELECT 预览。
|
||||
|
||||
-- 预览:
|
||||
-- SELECT id, product_code, product_name, product_status, production_task_id, create_time
|
||||
-- FROM biz_cell_product
|
||||
-- WHERE del_flag = 0 AND product_status = 'voided';
|
||||
|
||||
UPDATE biz_cell_product
|
||||
SET del_flag = 1,
|
||||
update_time = NOW()
|
||||
WHERE del_flag = 0
|
||||
AND product_status = 'voided';
|
||||
@@ -1,5 +0,0 @@
|
||||
-- 临时质检:外部质检对象编号(手写,可空)
|
||||
-- MySQL 5.7
|
||||
|
||||
ALTER TABLE `biz_qc_work_order`
|
||||
ADD COLUMN `external_target_code` varchar(64) DEFAULT NULL COMMENT '外部质检对象编号(手写)' AFTER `cell_product_id`;
|
||||
@@ -20109,14 +20109,14 @@
|
||||
"label": "if()",
|
||||
"file_type": "code",
|
||||
"source_file": "views/quality-inspection/qc-work-order/index.vue",
|
||||
"source_location": "L353"
|
||||
"source_location": "L355"
|
||||
},
|
||||
{
|
||||
"id": "qc_work_order_index_for",
|
||||
"label": "for()",
|
||||
"file_type": "code",
|
||||
"source_file": "views/quality-inspection/qc-work-order/index.vue",
|
||||
"source_location": "L566"
|
||||
"source_location": "L568"
|
||||
},
|
||||
{
|
||||
"id": "views_quality_inspection_qc_work_order_qcworkordertaskresultpanel_vue",
|
||||
@@ -61390,7 +61390,7 @@
|
||||
"relation": "contains",
|
||||
"confidence": "EXTRACTED",
|
||||
"source_file": "views/quality-inspection/qc-work-order/index.vue",
|
||||
"source_location": "L353",
|
||||
"source_location": "L355",
|
||||
"weight": 1.0
|
||||
},
|
||||
{
|
||||
@@ -61399,7 +61399,7 @@
|
||||
"relation": "contains",
|
||||
"confidence": "EXTRACTED",
|
||||
"source_file": "views/quality-inspection/qc-work-order/index.vue",
|
||||
"source_location": "L566",
|
||||
"source_location": "L568",
|
||||
"weight": 1.0
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Graph Report - src (2026-08-20)
|
||||
|
||||
## Corpus Check
|
||||
- Large corpus: 989 files · ~649,506 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
- Large corpus: 989 files · ~649,543 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
|
||||
## Summary
|
||||
- 3536 nodes · 5036 edges · 70 communities detected
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/common/index.ts": 1781272556.3597305,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/directive/directive.d.ts": 1781272556.3601494,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/api/api.d.ts": 1781272556.3606477,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1787191156.0489578,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1787191105.2374692,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1787208239.1977408,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1787208217.4751275,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/store/index.ts": 1781272556.364766,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/router/index.ts": 1782394569.8806834,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/composables/useAttachmentActions.ts": 1783921717.4015942,
|
||||
@@ -527,7 +527,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/reagent/index.vue": 1783326448.9403174,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/index.vue": 1782893853.82419,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ProductionStepBadge.vue": 1783307223.0443783,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts": 1787019566.8583055,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts": 1787212916.097241,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/StepDetailPanel.vue": 1787020117.4362667,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/CompleteProductionTaskDialog.vue": 1782893853.1254928,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskInputEnhancedTable.vue": 1782893853.0951817,
|
||||
@@ -588,7 +588,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process-category/index.vue": 1782893851.5846715,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process-category/OutputTypeTab.vue": 1783326448.9644928,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/index/index.vue": 1782893851.535544,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/index.vue": 1787193664.0060346,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/index.vue": 1787212916.0972576,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskResultPanel.vue": 1785145511.8775067,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderProtocolGroup.vue": 1786971279.6317575,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSingleCard.vue": 1786971268.6215816,
|
||||
@@ -683,7 +683,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue": 1785303426.866327,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseViewDialog.vue": 1782893853.1006944,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewDialog.vue": 1782893853.242398,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue": 1785291644.1620467,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue": 1787212916.0797153,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewCardList.vue": 1785312226.1840794,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/index.vue": 1782893852.991473,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue": 1782893852.9339294,
|
||||
|
||||
+4
-1
@@ -666,7 +666,10 @@
|
||||
pageSize: 100,
|
||||
keyword: cellSearchKeyword.value?.trim() || undefined
|
||||
})
|
||||
cellProductOptions.value = res.list || []
|
||||
// 产出作废后仍 del_flag=0,同编码常残留 voided+frozen 两条;选择器不展示作废项
|
||||
cellProductOptions.value = (res.list || []).filter(
|
||||
(p) => (p.productStatus || '') !== 'voided'
|
||||
)
|
||||
} finally {
|
||||
cellProductLoading.value = false
|
||||
}
|
||||
|
||||
@@ -551,7 +551,9 @@ export function useTaskStepEditor() {
|
||||
const next = { ...cellProductMasterById.value }
|
||||
for (const p of list) if (p?.id) next[p.id] = p
|
||||
cellProductMasterById.value = next
|
||||
// 产出作废后仍 del_flag=0,同编码常残留 voided+frozen 两条;下拉不展示作废项
|
||||
cellProductOptions.value = list
|
||||
.filter((p) => (p.productStatus || '') !== 'voided')
|
||||
.filter((p) => (p.productName || '').trim() || (p.productCode || '').trim())
|
||||
.map((p) => ({
|
||||
id: p.id,
|
||||
|
||||
@@ -326,7 +326,9 @@
|
||||
pageSize: 100,
|
||||
keyword: query?.trim() || undefined
|
||||
})
|
||||
// 产出作废后仍 del_flag=0,同编码常残留 voided+frozen 两条;下拉不展示作废项
|
||||
cellProductOptions.value = (res.list || [])
|
||||
.filter((p) => (p.productStatus || '') !== 'voided')
|
||||
.filter((p) => (p.productName || '').trim() || (p.productCode || '').trim())
|
||||
.map((p) => ({
|
||||
id: p.id,
|
||||
|
||||
Reference in new issue
Block a user