Quellcode durchsuchen

Fix METER_WORK_MONITOR Tarantool field indexes and harden write-path logging.

Align dirty/updated_at to live format (66/67) so doUpdateWf and updateLastTime stop failing type checks; add MonitorRTDB tracing and env-aligned RTDB settings.

Co-authored-by: Cursor <cursoragent@cursor.com>
bhb vor 2 Tagen
Ursprung
Commit
2a848bca7c

+ 289 - 0
db/sql/monitor_data.sql

@@ -0,0 +1,289 @@
+prompt PL/SQL Developer import file
+prompt Created on 2026年7月22日 by 花宝男朋友
+set feedback off
+set define off
+prompt Creating METER_WORK_MONITOR...
+create table METER_WORK_MONITOR
+(
+  point_no                 VARCHAR2(20) not null,
+  point_name               VARCHAR2(40),
+  valid_wgt                VARCHAR2(1) default 1,
+  valid_carno              VARCHAR2(1) default 1,
+  valid_tare_time          VARCHAR2(1) default 1,
+  valid_time_interval      VARCHAR2(1) default 1,
+  valid_park_status        VARCHAR2(1) default 1,
+  valid_exceed_wgt         VARCHAR2(1) default 1,
+  valid_prediction_diff    VARCHAR2(1) default 1,
+  valid_flag               VARCHAR2(1) default 1,
+  valid_mat_time           VARCHAR2(1) default 1,
+  car_monitor              VARCHAR2(1) default 0,
+  car_monitor_lvl          NUMBER default 0,
+  is_help                  VARCHAR2(1) default 0,
+  is_take_over             VARCHAR2(1) default 0,
+  led_writer               VARCHAR2(200),
+  print_num                NUMBER(4) default 0,
+  collection_code          VARCHAR2(20),
+  is_over_wgt              VARCHAR2(40) default 0,
+  user_no                  VARCHAR2(20),
+  monitor_user_no          VARCHAR2(20),
+  set_car                  VARCHAR2(20),
+  led_keep                 VARCHAR2(1) default 0,
+  rfid_car                 VARCHAR2(20),
+  photo_car                VARCHAR2(20),
+  scan_car                 VARCHAR2(20),
+  edit_car                 VARCHAR2(20),
+  car_err                  VARCHAR2(1) default 0,
+  wgt_err                  VARCHAR2(1) default 0,
+  last_time                DATE,
+  stop_over_time           VARCHAR2(1),
+  msg_info                 VARCHAR2(400),
+  wgt                      NUMBER(10) default 0,
+  is_remote                VARCHAR2(1),
+  weigh_instrument_model   VARCHAR2(60),
+  weigh_instrument_param   VARCHAR2(100),
+  moxa_ip                  VARCHAR2(20),
+  moxa_port                VARCHAR2(10),
+  valid_lianda             VARCHAR2(1) default 1,
+  is_open_scanning         VARCHAR2(1) default 0,
+  valid_is_pre             VARCHAR2(1) default 0,
+  user_ip                  VARCHAR2(30),
+  power_state              VARCHAR2(1) default 0,
+  dvr_state                VARCHAR2(1) default 0,
+  moxa_state               VARCHAR2(1) default 0,
+  plc_state                VARCHAR2(1) default 0,
+  left_infrared_ray_state  VARCHAR2(1) default 0,
+  right_infrared_ray_state VARCHAR2(1) default 0,
+  amplifier_state          VARCHAR2(1) default 0,
+  lamp_state               VARCHAR2(1) default 0,
+  spot_type_no             VARCHAR2(20) default 0,
+  red_green_light_state    VARCHAR2(1) default 0,
+  front_infrared_ray_state VARCHAR2(1) default 0,
+  rear_infrared_ray_state  VARCHAR2(1) default 0,
+  rfid_state               VARCHAR2(1) default 0,
+  valid_area               VARCHAR2(1) default 1,
+  weight_status            VARCHAR2(2) default 0,
+  ferroalloy_confirm       VARCHAR2(1) default 0,
+  ferroalloy_result        VARCHAR2(200),
+  zero_state               VARCHAR2(1) default 0,
+  zero_weight              NUMBER,
+  is_zero_state            VARCHAR2(1) default 1,
+  is_valid_scan            VARCHAR2(1) default 1,
+  is_enable_sound          VARCHAR2(1) default 1,
+  photo_car2               VARCHAR2(20)
+)
+;
+comment on table METER_WORK_MONITOR
+  is '计量监控表';
+comment on column METER_WORK_MONITOR.point_no
+  is '计量点编号';
+comment on column METER_WORK_MONITOR.point_name
+  is '计量点';
+comment on column METER_WORK_MONITOR.valid_wgt
+  is '验证重量  0不验证  1验证';
+comment on column METER_WORK_MONITOR.valid_carno
+  is '验证车号  0不验证  1验证';
+comment on column METER_WORK_MONITOR.valid_tare_time
+  is '验证回皮时间  0不验证  1验证';
+comment on column METER_WORK_MONITOR.valid_time_interval
+  is '验证时间间隔  0不验证  1验证';
+comment on column METER_WORK_MONITOR.valid_park_status
+  is '验证对射(实时数据库停车位置)  0不验证  1验证';
+comment on column METER_WORK_MONITOR.valid_exceed_wgt
+  is '验证危化品超重  0不验证  1验证';
+comment on column METER_WORK_MONITOR.valid_prediction_diff
+  is '验证毛皮超差  0不验证  1验证';
+comment on column METER_WORK_MONITOR.valid_flag
+  is '是否有效 1有效 0无效';
+comment on column METER_WORK_MONITOR.valid_mat_time
+  is '验证物料可计量时间段 0不验证  1验证';
+comment on column METER_WORK_MONITOR.car_monitor
+  is '是否进行车号修正 0不修正 1修正';
+comment on column METER_WORK_MONITOR.car_monitor_lvl
+  is '车号修正级别1-3(1=修正1位;2=修正连续的2位;3=修正连续的3位)';
+comment on column METER_WORK_MONITOR.is_help
+  is '0未呼叫,1呼叫待接听,2呼叫已接听';
+comment on column METER_WORK_MONITOR.is_take_over
+  is '0智能终端,1远程计量呼叫(派位阶段),2远程接管';
+comment on column METER_WORK_MONITOR.led_writer
+  is '写入LED的值';
+comment on column METER_WORK_MONITOR.print_num
+  is '打印纸张';
+comment on column METER_WORK_MONITOR.collection_code
+  is '与实时库对应的采集点';
+comment on column METER_WORK_MONITOR.is_over_wgt
+  is '有值时为计量完成';
+comment on column METER_WORK_MONITOR.user_no
+  is '接管终端用户';
+comment on column METER_WORK_MONITOR.monitor_user_no
+  is '监控用户';
+comment on column METER_WORK_MONITOR.set_car
+  is '重置车号';
+comment on column METER_WORK_MONITOR.led_keep
+  is '0不读取LED_WRITER的值,1读取';
+comment on column METER_WORK_MONITOR.rfid_car
+  is 'rfid车号';
+comment on column METER_WORK_MONITOR.photo_car
+  is '抓拍车号';
+comment on column METER_WORK_MONITOR.scan_car
+  is '扫描车号';
+comment on column METER_WORK_MONITOR.edit_car
+  is '修正车号';
+comment on column METER_WORK_MONITOR.car_err
+  is '车号异常 0正常 1异常';
+comment on column METER_WORK_MONITOR.wgt_err
+  is '重量异常 0正常 1异常';
+comment on column METER_WORK_MONITOR.last_time
+  is '最后在线时间,由于时间不一定准,所以使用旧数据时间与当前时间比如果连续30次相同则认为掉线';
+comment on column METER_WORK_MONITOR.stop_over_time
+  is '0正常 1停留超时';
+comment on column METER_WORK_MONITOR.msg_info
+  is '现场终端提示信息';
+comment on column METER_WORK_MONITOR.wgt
+  is '现场显示的重量';
+comment on column METER_WORK_MONITOR.is_remote
+  is '是否是监控界面点击的远程 0否 1是';
+comment on column METER_WORK_MONITOR.weigh_instrument_model
+  is '称重仪表型号';
+comment on column METER_WORK_MONITOR.weigh_instrument_param
+  is '称重仪表参数';
+comment on column METER_WORK_MONITOR.moxa_ip
+  is 'MOXA卡IP';
+comment on column METER_WORK_MONITOR.moxa_port
+  is 'MOXA卡端口';
+comment on column METER_WORK_MONITOR.valid_lianda
+  is '验证联达  0不验证  1验证';
+comment on column METER_WORK_MONITOR.is_open_scanning
+  is '现场扫码器是否正常连接(0=连接异常,1=连接正常)';
+comment on column METER_WORK_MONITOR.valid_is_pre
+  is '委托异常  0正常  1异常';
+comment on column METER_WORK_MONITOR.user_ip
+  is '接管用户IP';
+comment on column METER_WORK_MONITOR.power_state
+  is '衡器电源状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.dvr_state
+  is '硬盘录像机状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.moxa_state
+  is 'MOXA状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.plc_state
+  is 'PLC状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.left_infrared_ray_state
+  is '红外对射状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.right_infrared_ray_state
+  is '红外对射状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.amplifier_state
+  is '功放状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.lamp_state
+  is '照明灯状态(0关闭的 1打开的)';
+comment on column METER_WORK_MONITOR.spot_type_no
+  is '站点类型';
+comment on column METER_WORK_MONITOR.red_green_light_state
+  is '红绿灯状态(0绿灯 1红灯)';
+comment on column METER_WORK_MONITOR.front_infrared_ray_state
+  is '前红外光栅状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.rear_infrared_ray_state
+  is '后红外光栅状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.rfid_state
+  is 'rfid状态(0正常 1异常)';
+comment on column METER_WORK_MONITOR.valid_area
+  is '允许异地结净     0不验证  1验证';
+comment on column METER_WORK_MONITOR.weight_status
+  is '重量是否稳定     0不稳定    1稳定';
+comment on column METER_WORK_MONITOR.ferroalloy_confirm
+  is '铁合金确认       0未确认  1已确认';
+comment on column METER_WORK_MONITOR.ferroalloy_result
+  is '铁合金确认结果 0保存失败 1保存成功';
+comment on column METER_WORK_MONITOR.zero_state
+  is '零点报警         0不报警  1报警';
+comment on column METER_WORK_MONITOR.zero_weight
+  is '零点重量';
+comment on column METER_WORK_MONITOR.is_zero_state
+  is '验证零点报警    0:不验证   1:验证';
+comment on column METER_WORK_MONITOR.is_valid_scan
+  is '允许扫码计量(0:允许;1:不允许,数据库默认为1)';
+comment on column METER_WORK_MONITOR.is_enable_sound
+  is '是否播放声音(0:不播放;1:播放)';
+comment on column METER_WORK_MONITOR.photo_car2
+  is '抓拍车号2';
+alter table METER_WORK_MONITOR
+  add constraint MONITOR_PK primary key (POINT_NO);
+
+prompt Disabling triggers for METER_WORK_MONITOR...
+alter table METER_WORK_MONITOR disable all triggers;
+prompt Loading METER_WORK_MONITOR...
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0038', '吉瑞渣厂150t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR18', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:08', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT1111', '实训室', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR50', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('06-08-2025 13:26:36', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.99', '0', '1', '1', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '0', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0128', '东铝二期氧化铝库1号汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR23', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:06', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.107', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0129', '东铝二期氧化铝库2号汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR24', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:04', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.99', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0104', '东铝二期120t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR12', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:12', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.101', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JTS0001', '镜铁山150t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR68', null, null, null, null, '0', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:14', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.102.0.166', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '0', '1', '1', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0041', '东铝一期120t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR15', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:07', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.105', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0001', '1#公路汽车衡南秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR01', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:07', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.105', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0006', '8#门汽车衡西秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR05', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:09', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0005', '8#门汽车衡东秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR06', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:09', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.104', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0007', '9#门汽车衡东秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR03', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:06', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0008', '9#门汽车衡西秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '1', null, 0, 'CAR04', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('20-07-2026 15:47:04', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0010', '不锈钢汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR17', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:08', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.105', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0032', '汇丰不锈钢工业园150t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR21', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 18:28:25', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.3.78', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0138', '物流园汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '1', null, 0, 'CAR69', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('19-06-2026 02:02:35', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 75, null, null, null, null, null, '1', '0', '0', '10.130.0.103', '0', '0', '0', '0', '0', '0', '0', '1', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '1', 72, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0136', '润源兴源门150t汽车衡北秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR71', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:13', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.100.248.87', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0137', '润源兴源门150t汽车衡南秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR77', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:13', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0135', '润源废钢100t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR73', null, null, null, null, '0', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:12', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0139', '储运新一料场汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR70', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:09', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.100.248.87', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0020', '1#公路汽车衡北秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR02', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:09', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.104', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0034', '5#门汽车衡南秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '1', null, 0, 'CAR08', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('10-07-2026 09:43:54', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.101', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0035', '5#门汽车衡北秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR09', null, null, null, null, '1', null, '甘B02800F', null, null, '0', '0', to_date('22-07-2026 19:03:59', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 79800, null, null, null, null, null, '1', '0', '0', '10.130.0.104', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('LX0001', '陇西50t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR60', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:10', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 30780, null, null, null, null, null, '1', '0', '0', '10.130.2.229', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '0', '1', '1', '0', '0', '0', 0, '1', '1', '1', '甘JGL005');
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('LX0002', '陇西100t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR61', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('03-06-2026 07:48:03', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.2.247', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '0', '1', '1', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('LX0003', '陇西120t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR62', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:03', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.2.145', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '0', '1', '1', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JTS0002', '铜选厂120t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR67', null, null, '0015780', null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:12', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.230.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '0', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0047', '嘉北4#门汽车衡东秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR10', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:10', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0052', '吉瑞200t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR19', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:04', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0023', '废钢汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR16', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 11:00:18', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.133.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0026', '铁合金汽车衡北秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '1', '走', 0, 'CAR14', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('28-06-2026 09:05:51', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.104', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0027', '铁合金汽车衡南秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR13', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:10', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.104', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0031', '200万料场汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '1', null, 0, 'CAR07', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('25-06-2026 10:33:57', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.105', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0060', '葫芦山汽车衡', '1', '1', '1', '1', '1', '1', '1', '0', '1', '0', 0, '0', '0', null, 0, 'CAR06', '20220825174721437924', null, 'test01', null, '0', null, null, null, null, '0', '0', to_date('21-07-2022 09:17:45', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.130.0.97', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', null, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0048', '嘉北4#门汽车衡西秤', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR11', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:06', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '192.168.129.1', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+insert into METER_WORK_MONITOR (point_no, point_name, valid_wgt, valid_carno, valid_tare_time, valid_time_interval, valid_park_status, valid_exceed_wgt, valid_prediction_diff, valid_flag, valid_mat_time, car_monitor, car_monitor_lvl, is_help, is_take_over, led_writer, print_num, collection_code, is_over_wgt, user_no, monitor_user_no, set_car, led_keep, rfid_car, photo_car, scan_car, edit_car, car_err, wgt_err, last_time, stop_over_time, msg_info, wgt, is_remote, weigh_instrument_model, weigh_instrument_param, moxa_ip, moxa_port, valid_lianda, is_open_scanning, valid_is_pre, user_ip, power_state, dvr_state, moxa_state, plc_state, left_infrared_ray_state, right_infrared_ray_state, amplifier_state, lamp_state, spot_type_no, red_green_light_state, front_infrared_ray_state, rear_infrared_ray_state, rfid_state, valid_area, weight_status, ferroalloy_confirm, ferroalloy_result, zero_state, zero_weight, is_zero_state, is_valid_scan, is_enable_sound, photo_car2)
+values ('JT0127', '汇丰公司150t汽车衡', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', 0, '0', '0', null, 0, 'CAR22', null, null, null, null, '1', null, null, null, null, '0', '0', to_date('22-07-2026 19:04:09', 'dd-mm-yyyy hh24:mi:ss'), '0', null, 0, null, null, null, null, null, '1', '0', '0', '10.100.248.87', '0', '0', '0', '0', '0', '0', '0', '0', '001002001', '0', '0', '0', '2', '1', '0', '0', '0', '0', 0, '1', '1', '1', null);
+commit;
+prompt 35 records loaded
+prompt Enabling triggers for METER_WORK_MONITOR...
+alter table METER_WORK_MONITOR enable all triggers;
+set feedback on
+set define on
+prompt Done.

+ 5 - 5
docs/spec/monitor/01-tarantool-schema.md

@@ -5,7 +5,7 @@
 - Engine:`memtx`
 - Space 名:`METER_WORK_MONITOR`
 - PK:`POINT_NO`(format 第 1 字段,string)
-- 字段顺序与 Oracle DDL [`db/sql/meter_work_monitor.sql`](../../../db/sql/meter_work_monitor.sql) **严格一致**(共 66 列业务字段)
+- 字段顺序与 Oracle 业务列一致;线上实测为 **65 列业务字段** + `_dirty` + `_updated_at`(共 67)。
 
 ## 类型映射
 
@@ -19,8 +19,8 @@
 
 | 字段 | 位置 | 类型 | 说明 |
 |------|------|------|------|
-| `_dirty` | 67 | boolean | Job 增量同步标记 |
-| `_updated_at` | 68 | number | 最近写入毫秒时间戳 |
+| `_dirty` | 66 | boolean | Job 增量同步标记 |
+| `_updated_at` | 67 | number | 最近写入毫秒时间戳 |
 
 ## 字段序号(1-based,供 update ops)
 
@@ -58,8 +58,8 @@
 | 30 | LAST_TIME | 63 | IS_VALID_SCAN |
 | 31 | STOP_OVER_TIME | 64 | IS_ENABLE_SOUND |
 | 32 | MSG_INFO | 65 | PHOTO_CAR2 |
-| 33 | WGT | 66 | (业务字段结束) |
-| 67 | \_dirty | 68 | \_updated_at |
+| 33 | WGT | 66 | \_dirty |
+| 67 | \_updated_at | | |
 
 ## 冷启动
 

+ 3 - 2
docs/spec/monitor/03-write-path.md

@@ -20,13 +20,14 @@
 ## updateLastTime
 
 1. 校验 `pointNo`。
-2. 优先 `update` 字段 30=`LAST_TIME`(epoch ms)、67=`_dirty`、68=`_updated_at`。
+2. 优先 `update` 字段 30=`LAST_TIME`(epoch ms)、66=`_dirty`、67=`_updated_at`。
 3. 若行不存在:尝试 Oracle 读入灌一条再 update,或 fallback Oracle。
 4. 成功返回 `pointNo`;失败返回 `""`。
 
 ## 编解码
 
-- 由 `MeterWorkMonitorTupleCodec` 负责 `MeterWorkMonitor` ↔ `List<?>`(68 元组)。
+- 由 `MeterWorkMonitorTupleCodec` 负责 `MeterWorkMonitor` ↔ `List<?>`(**67** 元组:65 业务 + `_dirty` + `_updated_at`)。
+- 线上 format:`66=_dirty(boolean)`,`67=_updated_at(number)`。
 - `LAST_TIME`:`Date.getTime()` ↔ Long。
 - null 字符串在 tuple 中写空串或 box.NULL 策略:业务 string 字段用 `""` / number 用 `0` / date 用 `null`(box.NULL)。
 

+ 1 - 1
docs/spec/monitor/ddl/meter_work_monitor.lua

@@ -92,7 +92,7 @@ s:create_index('primary', {
 s:create_index('dirty', {
     type = 'tree',
     unique = false,
-    parts = { 67, 'boolean' },
+    parts = { 66, 'boolean' },
     if_not_exists = true,
 })
 

+ 10 - 0
src/main/java/com/steerinfo/filter/SecurityFilter.java

@@ -3,6 +3,7 @@ package com.steerinfo.filter;
 import cn.hutool.json.JSONObject;
 import com.alibaba.fastjson.JSON;
 import com.steerinfo.framework.controller.RESTfulResult;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.DigestUtils;
@@ -23,6 +24,10 @@ import java.util.*;
 @WebFilter("/*")
 public class SecurityFilter implements Filter {
 
+    /** TODO[TEMP-AUTH-OFF] 默认 false 便于联调;测试完改配置为 true */
+    @Value("${security.verification.enabled:true}")
+    private boolean verificationEnabled;
+
     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
     }
@@ -35,6 +40,11 @@ public class SecurityFilter implements Filter {
         String path = request.getRequestURI();
         String method = request.getMethod();
         StringBuffer url = request.getRequestURL();
+        // TODO[TEMP-AUTH-OFF] 临时关闭 verificationCode 校验
+        if (!verificationEnabled) {
+            filterChain.doFilter(servletRequest, servletResponse);
+            return;
+        }
         //不拦截
         ///apifox导入请求路径:v2/api-docs
         if (path.contains("/v1/meterbasecars/appregister")

+ 24 - 4
src/main/java/com/steerinfo/meterwork/meterworkmonitor/controller/MeterWorkMonitorController.java

@@ -11,6 +11,8 @@ import com.steerinfo.meterwork.meterworkmonitor.service.IMeterWorkMonitorService
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -35,6 +37,8 @@ import java.util.*;
 @RequestMapping("/${api.version}/meterworkmonitors")
 public class MeterWorkMonitorController extends BaseRESTfulController {
 
+    private static final Logger log = LoggerFactory.getLogger(MeterWorkMonitorController.class);
+
     @Autowired
     IMeterWorkMonitorService meterWorkMonitorService;
 
@@ -169,14 +173,22 @@ public class MeterWorkMonitorController extends BaseRESTfulController {
     //@RequiresPermissions("meterworkmonitor:update")
     @PostMapping(value = "/doUpdateWf", produces = "application/json;charset=UTF-8")
     public RESTfulResult update(@RequestBody MeterWorkMonitor model) {
+        long start = System.currentTimeMillis();
+        String reqPointNo = model == null ? null : model.getPointNo();
+        log.info("[MonitorRTDB] doUpdateWf enter pointNo={}", reqPointNo);
         try {
             String pointNo = meterWorkMonitorService.doUpdateWf(model);
-            if (pointNo.isEmpty()) {
+            if (pointNo == null || pointNo.isEmpty()) {
+                log.warn("[MonitorRTDB] doUpdateWf fail pointNo={} costMs={}",
+                        reqPointNo, System.currentTimeMillis() - start);
                 return failed(null, "修改失败");
             }
+            log.info("[MonitorRTDB] doUpdateWf ok pointNo={} costMs={}",
+                    pointNo, System.currentTimeMillis() - start);
             return success(pointNo);
         } catch (Exception ex) {
-            ex.printStackTrace();
+            log.error("[MonitorRTDB] doUpdateWf exception pointNo={} costMs={}",
+                    reqPointNo, System.currentTimeMillis() - start, ex);
             throw new MarkerMetException(500, "操作异常!!");
         }
     }
@@ -189,14 +201,22 @@ public class MeterWorkMonitorController extends BaseRESTfulController {
     //@RequiresPermissions("meterworkmonitor:update")
     @PostMapping(value = "/doUpdateWfBySpotNo", produces = "application/json;charset=UTF-8")
     public RESTfulResult updateLastTime(@RequestBody MeterWorkMonitor model) {
+        long start = System.currentTimeMillis();
+        String reqPointNo = model == null ? null : model.getPointNo();
+        log.info("[MonitorRTDB] updateLastTime enter pointNo={}", reqPointNo);
         try {
             String pointNo = meterWorkMonitorService.updateLastTime(model);
-            if (pointNo.isEmpty()) {
+            if (pointNo == null || pointNo.isEmpty()) {
+                log.warn("[MonitorRTDB] updateLastTime fail pointNo={} costMs={}",
+                        reqPointNo, System.currentTimeMillis() - start);
                 return failed(null, "修改失败");
             }
+            log.info("[MonitorRTDB] updateLastTime ok pointNo={} costMs={}",
+                    pointNo, System.currentTimeMillis() - start);
             return success(pointNo);
         } catch (Exception ex) {
-            ex.printStackTrace();
+            log.error("[MonitorRTDB] updateLastTime exception pointNo={} costMs={}",
+                    reqPointNo, System.currentTimeMillis() - start, ex);
             throw new MarkerMetException(500, "操作异常!!");
         }
     }

+ 2 - 4
src/main/java/com/steerinfo/meterwork/meterworkmonitor/rtdb/MeterWorkMonitorRtdbBootstrap.java

@@ -7,8 +7,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 
@@ -21,8 +20,7 @@ import java.util.List;
  */
 @Component
 @Order(100)
-@ConditionalOnBean(MeterWorkMonitorRtdbRepository.class)
-@ConditionalOnProperty(name = "rtdb.monitor.bootstrap-enabled", havingValue = "true", matchIfMissing = false)
+@ConditionalOnExpression("'${rtdb.monitor.enabled:true}' == 'true' && '${rtdb.monitor.bootstrap-enabled:false}' == 'true'")
 public class MeterWorkMonitorRtdbBootstrap implements ApplicationRunner {
 
     private static final Logger log = LoggerFactory.getLogger(MeterWorkMonitorRtdbBootstrap.class);

+ 35 - 11
src/main/java/com/steerinfo/meterwork/meterworkmonitor/rtdb/MeterWorkMonitorRtdbRepository.java

@@ -5,9 +5,10 @@ import com.steerinfo.meterwork.rtdb.RtdbClientPool;
 import com.steerinfo.rtdb.Client;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Repository;
 
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -17,7 +18,7 @@ import java.util.List;
  * METER_WORK_MONITOR Tarantool 访问封装。
  */
 @Repository
-@ConditionalOnBean(RtdbClientPool.class)
+@ConditionalOnProperty(name = "rtdb.monitor.enabled", havingValue = "true", matchIfMissing = true)
 public class MeterWorkMonitorRtdbRepository {
 
     private static final Logger log = LoggerFactory.getLogger(MeterWorkMonitorRtdbRepository.class);
@@ -35,31 +36,54 @@ public class MeterWorkMonitorRtdbRepository {
     }
 
     public MeterWorkMonitor getByPointNo(String pointNo) {
-        return pool.execute(client -> {
+        long start = System.currentTimeMillis();
+        MeterWorkMonitor result = pool.execute(client -> {
             List<?> raw = callResult(client, SPACE_GET, pointNo);
             List<?> tuple = unwrapTuple(raw);
             return MeterWorkMonitorTupleCodec.fromTuple(tuple);
         });
+        log.debug("[MonitorRTDB] tarantool get pointNo={} hit={} costMs={}",
+                pointNo, result != null && result.getPointNo() != null, System.currentTimeMillis() - start);
+        return result;
     }
 
     public void replace(MeterWorkMonitor model, boolean dirty) {
+        long start = System.currentTimeMillis();
+        String pointNo = model == null ? null : model.getPointNo();
         List<Object> tuple = MeterWorkMonitorTupleCodec.toTuple(model, dirty);
-        pool.execute(client -> {
-            client.syncOps().call(SPACE_REPLACE, tuple);
-            return null;
-        });
+        try {
+            pool.execute(client -> {
+                client.syncOps().call(SPACE_REPLACE, tuple);
+                return null;
+            });
+            log.info("[MonitorRTDB] tarantool replace ok pointNo={} dirty={} tupleSize={} costMs={}",
+                    pointNo, dirty, tuple.size(), System.currentTimeMillis() - start);
+        } catch (RuntimeException e) {
+            log.error("[MonitorRTDB] tarantool replace fail pointNo={} dirty={} costMs={}",
+                    pointNo, dirty, System.currentTimeMillis() - start, e);
+            throw e;
+        }
     }
 
     public void updateLastTime(String pointNo, long lastTimeMs) {
+        long start = System.currentTimeMillis();
         List<List<?>> ops = Arrays.asList(
                 Arrays.asList("=", MeterWorkMonitorTupleCodec.IDX_LAST_TIME, lastTimeMs),
                 Arrays.asList("=", MeterWorkMonitorTupleCodec.IDX_DIRTY, true),
                 Arrays.asList("=", MeterWorkMonitorTupleCodec.IDX_UPDATED_AT, System.currentTimeMillis())
         );
-        pool.execute(client -> {
-            client.syncOps().call(SPACE_UPDATE, pointNo, ops);
-            return null;
-        });
+        try {
+            pool.execute(client -> {
+                client.syncOps().call(SPACE_UPDATE, pointNo, ops);
+                return null;
+            });
+            log.info("[MonitorRTDB] tarantool update LAST_TIME ok pointNo={} lastTimeMs={} costMs={}",
+                    pointNo, lastTimeMs, System.currentTimeMillis() - start);
+        } catch (RuntimeException e) {
+            log.error("[MonitorRTDB] tarantool update LAST_TIME fail pointNo={} lastTimeMs={} costMs={}",
+                    pointNo, lastTimeMs, System.currentTimeMillis() - start, e);
+            throw e;
+        }
     }
 
     public void clearDirty(String pointNo) {

+ 7 - 4
src/main/java/com/steerinfo/meterwork/meterworkmonitor/rtdb/MeterWorkMonitorTupleCodec.java

@@ -7,15 +7,18 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * MeterWorkMonitor ↔ Tarantool tuple(66 业务字段 + _dirty + _updated_at)。
+ * MeterWorkMonitor ↔ Tarantool tuple(65 业务字段 + _dirty + _updated_at)。
+ * 与线上 space format 对齐:66=_dirty(boolean), 67=_updated_at(number)。
  */
 public final class MeterWorkMonitorTupleCodec {
 
-    public static final int FIELD_COUNT = 68;
+    public static final int FIELD_COUNT = 67;
     public static final int IDX_POINT_NO = 1;
     public static final int IDX_LAST_TIME = 30;
-    public static final int IDX_DIRTY = 67;
-    public static final int IDX_UPDATED_AT = 68;
+    /** 1-based Tarantool field no */
+    public static final int IDX_DIRTY = 66;
+    /** 1-based Tarantool field no */
+    public static final int IDX_UPDATED_AT = 67;
 
     private MeterWorkMonitorTupleCodec() {
     }

+ 0 - 2
src/main/java/com/steerinfo/meterwork/meterworkmonitor/scheduler/MeterWorkMonitorSyncScheduler.java

@@ -4,7 +4,6 @@ import com.steerinfo.meterwork.meterworkmonitor.service.MeterWorkMonitorSyncServ
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -13,7 +12,6 @@ import org.springframework.stereotype.Component;
  * Tarantool METER_WORK_MONITOR → Oracle 定时回写。
  */
 @Component
-@ConditionalOnBean(MeterWorkMonitorSyncService.class)
 @ConditionalOnProperty(name = "meter.monitor.sync.enabled", havingValue = "true", matchIfMissing = false)
 public class MeterWorkMonitorSyncScheduler {
 

+ 2 - 2
src/main/java/com/steerinfo/meterwork/meterworkmonitor/service/MeterWorkMonitorSyncService.java

@@ -5,7 +5,7 @@ import com.steerinfo.meterwork.meterworkmonitor.model.MeterWorkMonitor;
 import com.steerinfo.meterwork.meterworkmonitor.rtdb.MeterWorkMonitorRtdbRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -16,7 +16,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
  * 将 Tarantool METER_WORK_MONITOR 脏数据回写 Oracle。
  */
 @Service
-@ConditionalOnBean(MeterWorkMonitorRtdbRepository.class)
+@ConditionalOnExpression("'${rtdb.monitor.enabled:true}' == 'true' && '${meter.monitor.sync.enabled:false}' == 'true'")
 public class MeterWorkMonitorSyncService {
 
     private static final Logger log = LoggerFactory.getLogger(MeterWorkMonitorSyncService.class);

+ 46 - 9
src/main/java/com/steerinfo/meterwork/meterworkmonitor/service/impl/MeterWorkMonitorServiceImpl.java

@@ -85,76 +85,113 @@ public class MeterWorkMonitorServiceImpl extends BaseServiceImpl<MeterWorkMonito
 
     @Override
     public String doUpdateWf(MeterWorkMonitor model) {
+        long start = System.currentTimeMillis();
         try {
             Assert.isTrue(model != null && StringUtils.isNotEmpty(model.getPointNo()), "秤点编号为空");
-            if (isRtdbWriteEnabled()) {
+            boolean rtdbEnabled = isRtdbWriteEnabled();
+            log.info("[MonitorRTDB] doUpdateWf service start pointNo={} rtdbEnabled={}",
+                    model.getPointNo(), rtdbEnabled);
+            if (rtdbEnabled) {
                 try {
                     MeterWorkMonitor existing = meterWorkMonitorRtdbRepository.getByPointNo(model.getPointNo());
+                    String source;
                     if (existing == null || existing.getPointNo() == null) {
                         existing = meterWorkMonitorMapper.selectByPrimaryKey(model.getPointNo());
-                    }
-                    if (existing == null || existing.getPointNo() == null) {
-                        existing = model;
+                        if (existing == null || existing.getPointNo() == null) {
+                            existing = model;
+                            source = "request";
+                        } else {
+                            source = "oracle";
+                        }
                     } else {
+                        source = "tarantool";
+                    }
+                    if (!"request".equals(source)) {
                         MeterWorkMonitorTupleCodec.mergeNonNull(existing, model);
                     }
+                    log.info("[MonitorRTDB] doUpdateWf replace Tarantool pointNo={} baseSource={} dirty=true",
+                            existing.getPointNo(), source);
                     meterWorkMonitorRtdbRepository.replace(existing, true);
+                    log.info("[MonitorRTDB] doUpdateWf Tarantool ok pointNo={} costMs={}",
+                            existing.getPointNo(), System.currentTimeMillis() - start);
                     return existing.getPointNo();
                 } catch (Exception rtdbEx) {
-                    log.error("doUpdateWf write Tarantool failed, pointNo={}", model.getPointNo(), rtdbEx);
+                    log.error("[MonitorRTDB] doUpdateWf Tarantool failed pointNo={} fallbackOracle={} costMs={}",
+                            model.getPointNo(), isFallbackOracle(), System.currentTimeMillis() - start, rtdbEx);
                     if (isFallbackOracle()) {
                         meterWorkMonitorMapper.updateByPrimaryKeySelective(model);
+                        log.warn("[MonitorRTDB] doUpdateWf fallback Oracle ok pointNo={} costMs={}",
+                                model.getPointNo(), System.currentTimeMillis() - start);
                         return model.getPointNo();
                     }
                     return "";
                 }
             }
+            log.info("[MonitorRTDB] doUpdateWf write Oracle (rtdb disabled) pointNo={}", model.getPointNo());
             meterWorkMonitorMapper.updateByPrimaryKeySelective(model);
             return model.getPointNo();
         } catch (Exception ex) {
-            log.error("doUpdateWf failed", ex);
+            log.error("[MonitorRTDB] doUpdateWf failed pointNo={} costMs={}",
+                    model == null ? null : model.getPointNo(), System.currentTimeMillis() - start, ex);
             return "";
         }
     }
 
     @Override
     public String updateLastTime(MeterWorkMonitor model) {
+        long start = System.currentTimeMillis();
         try {
             Assert.isTrue(Objects.nonNull(model) && StringUtils.isNotEmpty(model.getPointNo()), "秤点编号为空");
             Date now = new Date();
-            if (isRtdbWriteEnabled()) {
+            boolean rtdbEnabled = isRtdbWriteEnabled();
+            log.info("[MonitorRTDB] updateLastTime service start pointNo={} rtdbEnabled={} lastTimeMs={}",
+                    model.getPointNo(), rtdbEnabled, now.getTime());
+            if (rtdbEnabled) {
                 try {
                     MeterWorkMonitor existing = meterWorkMonitorRtdbRepository.getByPointNo(model.getPointNo());
                     if (existing == null || existing.getPointNo() == null) {
                         existing = meterWorkMonitorMapper.selectByPrimaryKey(model.getPointNo());
                         if (existing == null || existing.getPointNo() == null) {
+                            log.warn("[MonitorRTDB] updateLastTime miss both Tarantool and Oracle pointNo={} costMs={}",
+                                    model.getPointNo(), System.currentTimeMillis() - start);
                             return "";
                         }
                         existing.setLastTime(now);
+                        log.info("[MonitorRTDB] updateLastTime miss Tarantool, replace from Oracle pointNo={}",
+                                model.getPointNo());
                         meterWorkMonitorRtdbRepository.replace(existing, true);
                     } else {
+                        log.info("[MonitorRTDB] updateLastTime update Tarantool LAST_TIME pointNo={} lastTimeMs={}",
+                                model.getPointNo(), now.getTime());
                         meterWorkMonitorRtdbRepository.updateLastTime(model.getPointNo(), now.getTime());
                     }
+                    log.info("[MonitorRTDB] updateLastTime Tarantool ok pointNo={} costMs={}",
+                            model.getPointNo(), System.currentTimeMillis() - start);
                     return model.getPointNo();
                 } catch (Exception rtdbEx) {
-                    log.error("updateLastTime write Tarantool failed, pointNo={}", model.getPointNo(), rtdbEx);
+                    log.error("[MonitorRTDB] updateLastTime Tarantool failed pointNo={} fallbackOracle={} costMs={}",
+                            model.getPointNo(), isFallbackOracle(), System.currentTimeMillis() - start, rtdbEx);
                     if (isFallbackOracle()) {
                         MeterWorkMonitor tempModel = meterWorkMonitorMapper.selectByPrimaryKey(model.getPointNo());
                         Assert.isTrue(tempModel != null && tempModel.getPointNo() != null, "未查询到秤点信息");
                         tempModel.setLastTime(now);
                         meterWorkMonitorMapper.updateByPrimaryKeySelective(tempModel);
+                        log.warn("[MonitorRTDB] updateLastTime fallback Oracle ok pointNo={} costMs={}",
+                                tempModel.getPointNo(), System.currentTimeMillis() - start);
                         return tempModel.getPointNo();
                     }
                     return "";
                 }
             }
+            log.info("[MonitorRTDB] updateLastTime write Oracle (rtdb disabled) pointNo={}", model.getPointNo());
             MeterWorkMonitor tempModel = meterWorkMonitorMapper.selectByPrimaryKey(model.getPointNo());
             Assert.isTrue(tempModel != null && tempModel.getPointNo() != null, "未查询到秤点信息");
             tempModel.setLastTime(now);
             meterWorkMonitorMapper.updateByPrimaryKeySelective(tempModel);
             return tempModel.getPointNo();
         } catch (Exception ex) {
-            log.error("updateLastTime failed", ex);
+            log.error("[MonitorRTDB] updateLastTime failed pointNo={} costMs={}",
+                    model == null ? null : model.getPointNo(), System.currentTimeMillis() - start, ex);
             return "";
         }
     }

+ 6 - 1
src/main/resources/application-dev.properties

@@ -20,10 +20,15 @@ access.token.ttl=604800000
 refresh.token.ttl=1814400000
 #;/${api.version}/sys/**/export;/${api.version}/sys/**/import;/**,auth
 # \u62E6\u622A\u5668\u9644\u52A0\u914D\u7F6E\uFF1A\u6BCF\u4E2Aurl\u8DEF\u5F84\u4EE5;\u5206\u9694\uFF1Burl\u7684\u9017\u53F7\u540Eauth\u8868\u793A\u9700\u8981\u8BA4\u8BC1\u540E\u624D\u80FD\u8BBF\u95EE\uFF0C\u6CA1\u6709\u6216\u8005anon\u8868\u793A\u4E0D\u6821\u9A8C
-shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,auth
+# TODO[TEMP-AUTH-OFF] 测试完成后改回: /**,auth
+# shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,auth
+shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,anon
 # \u62E6\u622A\u5668\u9644\u52A0\u914D\u7F6E\uFF1A\u6BCF\u4E2Aurl\u8DEF\u5F84\u4EE5;\u5206\u9694\uFF1Burl\u7684\u9017\u53F7\u540Eauth\u8868\u793A\u8BA4\u8BC1\u540E\u624D\u80FD\u8BBF\u95EE\uFF0C\u6CA1\u6709\u6216\u8005anon\u8868\u793A\u4E0D\u6821\u9A8C
 shiro.chains.append=/swagger**;/idmg/**;/ktr/;/${api.version}/sysposts/list/user**;/webjars/**;/v2/api**;/images/**;/configuration/**;
 
+# TODO[TEMP-AUTH-OFF] 测试完成后改回 true
+security.verification.enabled=false
+
 # Redis\u7F13\u5B58\u914D\u7F6E
 cache.level=1
 #Redis\u7F13\u5B58\u914D\u7F6E

+ 6 - 1
src/main/resources/application-prod.properties

@@ -20,10 +20,15 @@ access.token.ttl=604800000
 refresh.token.ttl=1814400000
 #;/${api.version}/sys/**/export;/${api.version}/sys/**/import;/**,auth
 # \u62E6\u622A\u5668\u9644\u52A0\u914D\u7F6E\uFF1A\u6BCF\u4E2Aurl\u8DEF\u5F84\u4EE5;\u5206\u9694\uFF1Burl\u7684\u9017\u53F7\u540Eauth\u8868\u793A\u9700\u8981\u8BA4\u8BC1\u540E\u624D\u80FD\u8BBF\u95EE\uFF0C\u6CA1\u6709\u6216\u8005anon\u8868\u793A\u4E0D\u6821\u9A8C
-shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,auth
+# TODO[TEMP-AUTH-OFF] 测试完成后改回: /**,auth
+# shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,auth
+shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,anon
 # \u62E6\u622A\u5668\u9644\u52A0\u914D\u7F6E\uFF1A\u6BCF\u4E2Aurl\u8DEF\u5F84\u4EE5;\u5206\u9694\uFF1Burl\u7684\u9017\u53F7\u540Eauth\u8868\u793A\u8BA4\u8BC1\u540E\u624D\u80FD\u8BBF\u95EE\uFF0C\u6CA1\u6709\u6216\u8005anon\u8868\u793A\u4E0D\u6821\u9A8C
 shiro.chains.append=/swagger**;/idmg/**;/ktr/;/${api.version}/sysposts/list/user**;/webjars/**;/v2/api**;/images/**;/configuration/**;
 
+# TODO[TEMP-AUTH-OFF] 测试完成后改回 true
+security.verification.enabled=false
+
 # Redis\u7F13\u5B58\u914D\u7F6E
 cache.level=1
 #Redis\u7F13\u5B58\u914D\u7F6E

+ 11 - 6
src/main/resources/application.properties

@@ -20,10 +20,15 @@ access.token.ttl=604800000
 refresh.token.ttl=1814400000
 #;/${api.version}/sys/**/export;/${api.version}/sys/**/import;/**,auth
 # \u62E6\u622A\u5668\u9644\u52A0\u914D\u7F6E\uFF1A\u6BCF\u4E2Aurl\u8DEF\u5F84\u4EE5;\u5206\u9694\uFF1Burl\u7684\u9017\u53F7\u540Eauth\u8868\u793A\u9700\u8981\u8BA4\u8BC1\u540E\u624D\u80FD\u8BBF\u95EE\uFF0C\u6CA1\u6709\u6216\u8005anon\u8868\u793A\u4E0D\u6821\u9A8C
-shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,auth
+# TODO[TEMP-AUTH-OFF] 测试完成后改回: /**,auth
+# shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,auth
+shiro.chains=/auth/login/**;/ktr/;/${api.version}/sys/**/export;/${api.version}/syspromachineauths/verify**;/${api.version}/sys/**/import;/**,anon
 # \u62E6\u622A\u5668\u9644\u52A0\u914D\u7F6E\uFF1A\u6BCF\u4E2Aurl\u8DEF\u5F84\u4EE5;\u5206\u9694\uFF1Burl\u7684\u9017\u53F7\u540Eauth\u8868\u793A\u8BA4\u8BC1\u540E\u624D\u80FD\u8BBF\u95EE\uFF0C\u6CA1\u6709\u6216\u8005anon\u8868\u793A\u4E0D\u6821\u9A8C
 shiro.chains.append=/swagger**;/idmg/**;/ktr/;/${api.version}/sysposts/list/user**;/webjars/**;/v2/api**;/images/**;/configuration/**;
 
+# TODO[TEMP-AUTH-OFF] 测试完成后改回 true(启用 verificationCode 校验)
+security.verification.enabled=false
+
 # Redis\u7F13\u5B58\u914D\u7F6E
 cache.level=1
 #Redis\u7F13\u5B58\u914D\u7F6E
@@ -73,9 +78,9 @@ openfeign.dil.url= ${DIL_URL:192.168.107.61:8000}
 #multiple.datasource.master.password=Lims123789
 
 multiple.datasource.master.driver-class-name=oracle.jdbc.driver.OracleDriver
-multiple.datasource.master.url=jdbc:oracle:thin:@10.99.200.87:1521/jgwzjl
-multiple.datasource.master.username=lims
-multiple.datasource.master.password=lims_2021
+multiple.datasource.master.url=jdbc:oracle:thin:@192.168.3.34:1521/PTDB
+multiple.datasource.master.username=sso
+multiple.datasource.master.password=sso
 
 multiple.datasource.master.initial-size=50
 multiple.datasource.master.min-idle=50
@@ -133,8 +138,8 @@ server.connection-timeout=20000
 logging.level.com=debug
 
 # Tarantool / METER_WORK_MONITOR 内存加速
-rtdb.host=172.22.42.3
-rtdb.port=2101
+rtdb.host=192.168.3.28
+rtdb.port=2002
 rtdb.username=guest
 rtdb.password=
 rtdb.pool.size=8