Browse Source

pda模块模块过站修复

hbx 1 week ago
parent
commit
5d70269b45

+ 85 - 0
db/cz060_cz061_routing_align.sql

@@ -0,0 +1,85 @@
+-- =====================================================================
+-- CZ060/CZ061 工艺路线对齐脚本(幂等可重复执行)
+-- 依据:《鑫政CZ060&061现场布线说明表 - 副本.xlsx》 + PDA图标 cz060_icon_100~119 的工序号
+-- 内容:
+--   1) CZ060 工位名称对齐(060表 OP100/OP105 等 20 处名称互换修正,主码+A同步,不动 quality/repeat)
+--   2) CZ060 人工清洁 OP155 → OP166(PDA图标105指向 OP166)
+--   3) CZ060 新增 OP176 TIG手工焊(060表第二处TIG,位于抽芯拉铆OP175与支架安装OP180之间)、OP270 出货
+--   4) CZ061 新增 OP160 支架安装(061表 OP180 重复行修正,位于OP155与OP170之间)
+--   5) 生产模板同步
+--   6) 跳站配置:CZ060/CZ061 非 PDA 工位(含A变体)允许跳过,PDA工位之间保持防流出
+-- 说明:工位/模板数据即时生效;sys_config 直插数据库需重启服务或后台"系统配置"页面重新保存一次触发缓存刷新
+-- =====================================================================
+
+-- ---------- 1. CZ060 工位名称对齐(line_id=2102288813172203520) ----------
+UPDATE mes_line_process SET title='前膨胀梁打码', update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP100','OP100A');
+UPDATE mes_line_process SET title='预拼锁付',   update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP105','OP105A');
+UPDATE mes_line_process SET title='拉铆',       update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP150','OP150A');
+UPDATE mes_line_process SET title='箱体气密一序', update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP160','OP160A');
+UPDATE mes_line_process SET title='水道气密一序', update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP165','OP165A');
+UPDATE mes_line_process SET title='抽芯拉铆',   update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP175','OP175A');
+UPDATE mes_line_process SET title='支架安装',   update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP180','OP180A');
+UPDATE mes_line_process SET title='白件GP12',   update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP185','OP185A');
+UPDATE mes_line_process SET title='检具',       update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP190','OP190A');
+UPDATE mes_line_process SET title='氦检',       update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP205','OP205A');
+UPDATE mes_line_process SET title='箱体气密二序', update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP210','OP210A');
+UPDATE mes_line_process SET title='水道气密二序', update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP215','OP215A');
+UPDATE mes_line_process SET title='贴pc条',     update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP230','OP230A');
+UPDATE mes_line_process SET title='涂胶',       update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP235','OP235A');
+UPDATE mes_line_process SET title='全检',       update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP240','OP240A');
+UPDATE mes_line_process SET title='GP12成品检验', update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP245','OP245A');
+UPDATE mes_line_process SET title='CCD检测',    update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP250','OP250A');
+UPDATE mes_line_process SET title='绝缘耐压测试', update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP255','OP255A');
+UPDATE mes_line_process SET title='成品打包',   update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP260','OP260A');
+UPDATE mes_line_process SET title='入库',       update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno IN ('OP265','OP265A');
+
+-- ---------- 2. CZ060 人工清洁 OP155 → OP166 ----------
+UPDATE mes_line_process SET oprno='OP166',  sorts=166, update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno='OP155';
+UPDATE mes_line_process SET oprno='OP166A', update_by='system', update_date=NOW() WHERE line_id='2102288813172203520' AND oprno='OP155A';
+UPDATE mes_template_items  SET oprno='OP166', `rank`=166, update_by='system', update_date=NOW() WHERE template_id='2102266346164490240' AND oprno='OP155';
+
+-- ---------- 3. CZ060 新增 OP176 TIG手工焊、OP270 出货(幂等) ----------
+DELETE FROM mes_line_process WHERE id IN ('2026101517000001','2026101517000002','2026101517000003','2026101517000004');
+INSERT INTO mes_line_process (id, line_id, oprno, title, status, sorts, pid, quality, `repeat`, create_by, create_date, update_by, update_date) VALUES
+('2026101517000001','2102288813172203520','OP176', 'TIG手工焊','0',176, NULL,                  '1','0','system',NOW(),'system',NOW()),
+('2026101517000002','2102288813172203520','OP176A','TIG手工焊','0',176, '2026101517000001','0','0','system',NOW(),'system',NOW()),
+('2026101517000003','2102288813172203520','OP270', '出货',    '0',270, NULL,                  '1','0','system',NOW(),'system',NOW()),
+('2026101517000004','2102288813172203520','OP270A','出货',    '0',270, '2026101517000003','0','0','system',NOW(),'system',NOW());
+DELETE FROM mes_template_items WHERE id IN ('2026101517000011','2026101517000012');
+INSERT INTO mes_template_items (id, template_id, oprno, craft, title, status, `rank`, create_by, create_date, update_by, update_date) VALUES
+('2026101517000011','2102266346164490240','OP176','100000','工位结果','0',176,'system',NOW(),'system',NOW()),
+('2026101517000012','2102266346164490240','OP270','100000','工位结果','0',270,'system',NOW(),'system',NOW());
+
+-- ---------- 4. CZ061 新增 OP160 支架安装(幂等) ----------
+DELETE FROM mes_line_process WHERE id IN ('2026101517000005','2026101517000006');
+INSERT INTO mes_line_process (id, line_id, oprno, title, status, sorts, pid, quality, `repeat`, create_by, create_date, update_by, update_date) VALUES
+('2026101517000005','2102288695354204160','OP160', '支架安装','0',160, NULL,                  '1','0','system',NOW(),'system',NOW()),
+('2026101517000006','2102288695354204160','OP160A','支架安装','0',160, '2026101517000005','0','0','system',NOW(),'system',NOW());
+DELETE FROM mes_template_items WHERE id='2026101517000013';
+INSERT INTO mes_template_items (id, template_id, oprno, craft, title, status, `rank`, create_by, create_date, update_by, update_date) VALUES
+('2026101517000013','2102266410110849024','OP160','100000','工位结果','0',160,'system',NOW(),'system',NOW());
+
+-- ---------- 5. 跳站配置(幂等):非 PDA 工位允许跳过,PDA 工位之间保持防流出 ----------
+-- CZ060 PDA工位(不在清单内,保持拦截):OP065,OP090,OP100,OP125,OP140,OP166,OP175,OP180,OP185,OP190,
+--                                       OP195,OP220,OP225,OP230,OP235,OP240,OP245,OP260,OP265,OP270
+-- CZ061 PDA工位(不在清单内):OP125,OP140,OP155,OP160,OP190,OP195,OP225,OP230,OP235,OP240,OP245,OP260,OP265,OP270,OP275
+DELETE FROM js_sys_config WHERE config_key IN ('mes.pass.oprno.cz060','mes.pass.oprno.cz061');
+INSERT INTO js_sys_config (id, config_name, config_key, config_value, is_sys, create_by, create_date, update_by, update_date, remarks) VALUES
+('2026101517000021','CZ060跳过的工站','mes.pass.oprno.cz060',
+ 'OP035,OP035A,OP040,OP040A,OP045,OP045A,OP050,OP050A,OP055,OP055A,OP060,OP060A,OP070,OP070A,OP075,OP075A,OP080,OP080A,OP085,OP085A,OP095,OP095A,OP105,OP105A,OP110,OP110A,OP115,OP115A,OP120,OP120A,OP130,OP130A,OP135,OP135A,OP145,OP145A,OP150,OP150A,OP160,OP160A,OP165,OP165A,OP170,OP170A,OP176,OP176A,OP200,OP200A,OP205,OP205A,OP210,OP210A,OP215,OP215A,OP250,OP250A',
+ '0','system',NOW(),'system',NOW(),'非PDA工位允许跳过(设备未到位),设备联网后从清单移除'),
+('2026101517000022','CZ061跳过的工站','mes.pass.oprno.cz061',
+ 'OP035,OP035A,OP040,OP040A,OP045,OP045A,OP050,OP050A,OP055,OP055A,OP060,OP060A,OP065,OP065A,OP070,OP070A,OP075,OP075A,OP080,OP080A,OP085,OP085A,OP090,OP090A,OP095,OP095A,OP100,OP100A,OP105,OP105A,OP110,OP110A,OP115,OP115A,OP120,OP120A,OP130,OP130A,OP135,OP135A,OP145,OP145A,OP150,OP150A,OP165,OP165A,OP170,OP170A,OP175,OP175A,OP180,OP180A,OP185,OP185A,OP200,OP200A,OP205,OP205A,OP210,OP210A,OP215,OP215A,OP220,OP220A,OP250,OP250A,OP255,OP255A',
+ '0','system',NOW(),'system',NOW(),'非PDA工位允许跳过(设备未到位),设备联网后从清单移除');
+
+-- ---------- 6. 验证 ----------
+SELECT p.oprno, p.title, p.quality, p.`repeat` FROM mes_line_process p JOIN mes_line l ON p.line_id=l.id WHERE l.sn='CZ060' ORDER BY CAST(SUBSTRING(p.oprno,3) AS UNSIGNED);
+SELECT p.oprno, p.title FROM mes_line_process p JOIN mes_line l ON p.line_id=l.id WHERE l.sn='CZ061' AND p.oprno LIKE 'OP160%';
+SELECT config_key, CHAR_LENGTH(config_value) AS len FROM js_sys_config WHERE config_key IN ('mes.pass.oprno.cz060','mes.pass.oprno.cz061');
+SELECT template_id, COUNT(*) AS items FROM mes_template_items WHERE template_id IN ('2102266346164490240','2102266410110849024') GROUP BY template_id;
+
+-- ---------- 7. 测试期开关:CZ060/CZ061 防呆全部=否,重复工作全部=是(主码+A变体,XT线不受影响) ----------
+UPDATE mes_line_process SET quality='0', `repeat`='1', update_by='system', update_date=NOW()
+WHERE line_id IN ('2102288813172203520','2102288695354204160');
+SELECT l.sn, p.quality, p.`repeat`, COUNT(*) AS cnt FROM mes_line_process p JOIN mes_line l ON p.line_id=l.id
+WHERE l.sn IN ('CZ060','CZ061') GROUP BY l.sn, p.quality, p.`repeat`;

+ 49 - 39
db/mes_icons_cz060.sql

@@ -1,52 +1,58 @@
+-- 功能模块新增:鑫政 CZ060 新线 PDA 过站模块(安卓端 case 100~119,2026-10 新方案)
 -- 数据库:MySQL(mes_cloud_xz),执行后即生效,无需重启服务
+-- 变更说明(对比旧方案 100~117 共 18 条):
+--   1. 102:后膨胀梁打码 → 前膨胀梁打码(OP105 → OP100)
+--   2. 107:检具(OP185) → 支架安装(OP180),原 107 起的工序整体后移一位
+--   3. 100/101 备注工序号改为 OP065A / OP090A;105/106 工序号改为 OP166 / OP175
+--   4. 新增 118 入库(OP265)、119 出货(OP270),共 20 条
+-- 幂等:先按 id 精确删除本批数据再插入,可重复执行,不影响其它功能模块图标
 -- 说明:
 --   1. title 只存中文工序名,oprno 等信息由安卓端按 mode 硬编码,故 OP 信息记入 remark 备查
 --   2. auth 为 PDA 图标显示权限串(/js/a/mes/mesIcons/icons 按 subject.isPermitted(auth) 过滤)
 
 SET @pda_auth = 'mes:pda:cz060'; -- 如 PDA 角色已有现成权限串,改成查到的值即可
 
+-- ============================================================
+-- 1. 删除旧方案数据(按 id 精确删除,仅本批 cz060 图标)
+-- ============================================================
+DELETE FROM mes_icons WHERE id IN (
+  'cz060_icon_100','cz060_icon_101','cz060_icon_102','cz060_icon_103','cz060_icon_104',
+  'cz060_icon_105','cz060_icon_106','cz060_icon_107','cz060_icon_108','cz060_icon_109',
+  'cz060_icon_110','cz060_icon_111','cz060_icon_112','cz060_icon_113','cz060_icon_114',
+  'cz060_icon_115','cz060_icon_116','cz060_icon_117','cz060_icon_118','cz060_icon_119');
+
+-- ============================================================
+-- 2. 插入新方案 20 条(case 100~119)
+-- ============================================================
 INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_100', '封板预装+点焊', '100', 'CZ060-OP65(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_101', '打磨', '101', 'CZ060-OP90(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_102', '后膨胀梁打码', '102', 'CZ060-OP105(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_103', '打磨', '103', 'CZ060-OP125(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_104', '吹铝屑+刮毛刺+清洁', '104', 'CZ060-OP140(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_105', '人工清洁', '105', 'CZ060-OP155(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_106', '抽芯拉铆', '106', 'CZ060-OP160(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_107', '检具', '107', 'CZ060-OP185(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_108', '白件GP12', '108', 'CZ060-OP190(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_109', '喷粉前打包', '109', 'CZ060-OP195(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_110', '总成清洁', '110', 'CZ060-OP220(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_111', '支架、定位销安装', '111', 'CZ060-OP225(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_112', '涂胶', '112', 'CZ060-OP230(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_113', '全检', '113', 'CZ060-OP235(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_114', 'GP12成品检验', '114', 'CZ060-OP240(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_115', '成品打包', '115', 'CZ060-OP255(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_116', '入库', '116', 'CZ060-OP260(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
-INSERT INTO mes_icons (id, title, mode, remark, status, auth, create_by, create_date, update_by, update_date)
-VALUES ('cz060_icon_117', '出货', '117', 'CZ060-OP265(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW());
+VALUES
+('cz060_icon_100', '封板预装+点焊',     '100', 'CZ060-OP065A(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_101', '打磨',             '101', 'CZ060-OP090A(PDA过站)', '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_102', '前膨胀梁打码',      '102', 'CZ060-OP100(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_103', '打磨',             '103', 'CZ060-OP125(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_104', '吹铝屑+刮毛刺+清洁', '104', 'CZ060-OP140(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_105', '人工清洁',          '105', 'CZ060-OP166(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_106', '抽芯拉铆',          '106', 'CZ060-OP175(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_107', '支架安装',          '107', 'CZ060-OP180(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_108', '白件GP12',          '108', 'CZ060-OP185(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_109', '检具',             '109', 'CZ060-OP190(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_110', '喷粉前打包',        '110', 'CZ060-OP195(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_111', '总成清洁',          '111', 'CZ060-OP220(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_112', '支架、定位销安装',   '112', 'CZ060-OP225(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_113', '贴pc条',            '113', 'CZ060-OP230(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_114', '涂胶',             '114', 'CZ060-OP235(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_115', '全检',             '115', 'CZ060-OP240(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_116', 'GP12成品检验',      '116', 'CZ060-OP245(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_117', '成品打包',          '117', 'CZ060-OP260(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_118', '入库',             '118', 'CZ060-OP265(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW()),
+('cz060_icon_119', '出货',             '119', 'CZ060-OP270(PDA过站)',  '0', @pda_auth, 'system', NOW(), 'system', NOW());
+
+-- 执行后核对:
+--   SELECT mode, title, remark FROM mes_icons WHERE auth = @pda_auth ORDER BY CAST(mode AS UNSIGNED);
 
 -- ============================================================
+-- 权限分配(幂等:INSERT IGNORE,重复执行自动跳过已存在记录,可整段重跑)
+-- auth 串 mes:pda:cz060 授权给 system 账号;118/119 沿用同一权限串,无需新增权限
 -- 参照现有先例(OP80打磨按钮菜单 + damo 角色),按 JeeSite 权限链:
 --   js_sys_menu(permission) -> js_sys_role_menu -> js_sys_role -> js_sys_user_role -> 用户
 -- 注:system 为超级管理员,本身绕过权限校验即可看到图标;
@@ -54,7 +60,7 @@ VALUES ('cz060_icon_117', '出货', '117', 'CZ060-OP265(PDA过站)', '0', @p
 -- ============================================================
 
 -- 1. 按钮权限菜单(挂在「APP模块权限」目录 1689510779897856000 下)
-INSERT INTO js_sys_menu (menu_code, parent_code, parent_codes, tree_sort, tree_sorts, tree_leaf, tree_level, tree_names,
+INSERT IGNORE INTO js_sys_menu (menu_code, parent_code, parent_codes, tree_sort, tree_sorts, tree_leaf, tree_level, tree_names,
   menu_name, menu_type, menu_href, menu_target, menu_icon, menu_color, menu_title, permission, weight, is_show,
   sys_code, module_codes, status, create_by, create_date, update_by, update_date)
 VALUES ('2040000000000000001', '1689510779897856000', '0,1689510779897856000,', 2200, '0000009590,0000002200,', 1, 1,
@@ -62,13 +68,13 @@ VALUES ('2040000000000000001', '1689510779897856000', '0,1689510779897856000,',
   'default', 'app', '0', 'system', NOW(), 'system', NOW());
 
 -- 2. 角色:CZ060新线过站
-INSERT INTO js_sys_role (role_code, role_name, view_code, role_type, role_sort, is_sys, user_type, data_scope, biz_scope,
+INSERT IGNORE INTO js_sys_role (role_code, role_name, view_code, role_type, role_sort, is_sys, user_type, data_scope, biz_scope,
   status, create_by, create_date, update_by, update_date, corp_code, corp_name)
 VALUES ('cz060', 'CZ060新线过站', 'cz060', '', 300, '0', 'employee', NULL, NULL,
   '0', 'system', NOW(), 'system', NOW(), '0', 'JeeSite');
 
 -- 3. 角色 -> 按钮权限菜单
-INSERT INTO js_sys_role_menu (role_code, menu_code) VALUES ('cz060', '2040000000000000001');
+INSERT IGNORE INTO js_sys_role_menu (role_code, menu_code) VALUES ('cz060', '2040000000000000001');
 
 -- 4. system 账号 -> 角色
-INSERT INTO js_sys_user_role (user_code, role_code) VALUES ('system', 'cz060');
+INSERT IGNORE INTO js_sys_user_role (user_code, role_code) VALUES ('system', 'cz060');

+ 10 - 0
src/main/java/com/jeesite/modules/mes/web/MesProductRecordController.java

@@ -2492,6 +2492,12 @@ public class MesProductRecordController extends BaseController {
 		Page page1 = new Page<>(request, response);
 		mesProductModifyRecord.setPage(page1);
 		mesProductModifyRecord.setCraft("100000");
+		// 工位号模糊匹配:PDA 传 OP100,库里可能存 OP100A,截前缀后 LIKE 兜底(后续工序同样生效)
+		if (StringUtils.isNotBlank(mesProductModifyRecord.getOprno())) {
+			String oprno = CommonUitl.formatOprno(mesProductModifyRecord.getOprno());
+			mesProductModifyRecord.getSqlMap().getWhere().and("a.oprno", QueryType.LIKE, oprno);
+			mesProductModifyRecord.setOprno(null);
+		}
 		MesSearchDateReq dateMap = CommonUitl.getSearchDate();
 		if(mesProductModifyRecord.getUpdateDate_gte() == null){
 			mesProductModifyRecord.setUpdateDate_gte(dateMap.getStartDate());
@@ -3764,9 +3770,13 @@ public class MesProductRecordController extends BaseController {
 			}
 
 			int op = Integer.valueOf(oprno.substring(2,5));
+			String passoprnos = CommonUitl.getPassOprnos(lineSn); // 跳站配置:与通用前工位检查保持一致
 			for(MesProductRecord mesProductRecord1 : lists){
 				int op2 = Integer.valueOf(mesProductRecord1.getOprno().substring(2,5));
 				if(op2 < op){
+					if(CommonUitl.matchOprnos(passoprnos, mesProductRecord1.getOprno())){
+						continue; // 跳站工位不拦截
+					}
 					if(mesProductRecord1.getContent().equals("UDF")){
 						resp.setMessage("工位"+mesProductRecord1.getOprno()+"未加工,不能打包!");
 						resp.setResult(Global.FALSE);

+ 6 - 6
src/main/resources/config/application.yml

@@ -56,14 +56,14 @@ jdbc:
   driver: com.mysql.cj.jdbc.Driver
 
 #  url: jdbc:mysql://39.106.12.131:3306/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+#  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  url: jdbc:mysql://192.168.17.170:3306/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-#  url: jdbc:mysql://192.168.100.128:3307/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+  url: jdbc:mysql://192.168.100.128:3307/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 
-  username: mes_cloud_xz
-  password: 2hNY3YMe2BGbCXLS
-#  username: root
-#  password: 123456
+#  username: mes_cloud_xz
+#  password: 2hNY3YMe2BGbCXLS
+  username: root
+  password: 123456
 
   testSql: SELECT 1