Browse Source

增加车辆表

晋江
OCEAN 1 month ago
parent
commit
51c5c808db
5 changed files with 154 additions and 118 deletions
  1. +3
    -117
      tcp_client/config.toml
  2. +150
    -0
      tcp_server/src/main.rs
  3. +1
    -1
      tcp_server/target/.rustc_info.json
  4. BIN
      tcp_server/target/debug/tcp_server.exe
  5. BIN
      tcp_server/target/debug/tcp_server.pdb

+ 3
- 117
tcp_client/config.toml View File

@@ -15,127 +15,13 @@ retry_delay_secs = 2
[database]
host = "10.180.4.100"
port = 5432
name = "Auseft_new_web"
name = "Auseft_old"
user = "postgres"
password = "Auseft@2025qwer"

# 要同步的表配置
[[tables]]
name = "comm_bch_batch"
query = "SELECT id, tenant_id, supply_id, material_id, batch_record_id, sample_type, related_code, batching_start_time, batching_end_time, batching_start_ticket, batching_end_ticket, batching_quantity, batching_weight::text, batching_code, batching_code_creator, batching_code_creation_time, preparation_code, preparation_code_creator, preparation_code_creation_time, assay_code, assay_code_creator, assay_code_creation_time, creator_id, creation_time, last_modifier_id, last_modification_reason, last_modification_time, deleted, deleter_id, deletion_reason, deletion_time, source_type FROM comm_bch_batch"
incremental = false
key_field = "UpdateTime"



[[tables]]
name = "comm_bch_delivering_sampling"
query = "SELECT id, tenant_id, supply_id, material_id, sample_type, operation_type, business_type, delivering_type, delivering_code, delivering_quantity, delivering_unit, delivering_weight::text as delivering_weight, delivering_weights, delivering_remark, deliverer, delivery_time, sampling, sampling_type, sampling_code, sampling_quantity, sampling_unit, sampling_weight::text as sampling_weight, sampling_weights, sampling_remark, sampler, sample_time, creator_id, creation_time, last_modifier_id, last_modification_reason, last_modification_time, deleted, deleter_id, deletion_reason, deletion_time FROM comm_bch_delivering_sampling "
incremental = false
key_field = "UpdateTime"


[[tables]]
name = "comm_sp_delivering_sampling"
query = "SELECT id, tenant_id, supply_id, material_id, sample_type, bch_ds_id, operation_type, business_type, delivering_type, delivering_code, delivering_quantity, delivering_unit, delivering_weight::text as delivering_weight, delivering_weights, delivering_remark, deliverer, delivery_time, sampling, sampling_type, sampling_code, sampling_quantity, sampling_unit, sampling_weight::text as sampling_weight, sampling_weights, sampling_remark, sampler, sample_time, creator_id, creation_time, last_modifier_id, last_modification_reason, last_modification_time, deleted, deleter_id, deletion_reason, deletion_time FROM comm_sp_delivering_sampling "
incremental = false
key_field = "UpdateTime"



[[tables]]
name = "hy_record"
query = "SELECT id, hy_code, type, hy_check, hy_approve, check_time, approve_time, approve_user, check_user, hy_time, hy_values, accept_time, accept_user, mt::text as mt, mad::text as mad, aad::text as aad, ad::text as ad, vad::text as vad, vd::text as vd, var::text as var, vdaf::text as vdaf, fcad::text as fcad, st_ar::text as st_ar, st_ad::text as st_ad, st_d::text as st_d, had::text as had, hd::text as hd, qb_ad::text as qb_ad, qgr_ad::text as qgr_ad, qgr_d::text as qgr_d, qnet_ar_mj_kg::text as qnet_ar_mj_kg, qnet_ar_j_cal::text as qnet_ar_j_cal, v::text as v, aar::text as aar, qnet_ar::text as qnet_ar, qnet_ar1::text as qnet_ar1, crc::text as crc, st_daf::text as st_daf, cad ::text as cad, cd::text as cd, isauto, hy_type, isnormal FROM hy_record where hy_approve=0 and accept_time >= NOW() - INTERVAL '10 days' "
incremental = false
key_field = "UpdateTime"


[[tables]]
name = "hy_itemdetail"
query = "SELECT * FROM hy_itemdetail where record_id in (select id from hy_record where hy_approve=0 and accept_time >= NOW() - INTERVAL '10 days') "
incremental = false
key_field = "UpdateTime"

[[tables]]
name = "hy_norm"
query = " select id,norm_id,zbvalues::text as zbvalues,itemdetail_id,hy_user,checktime,\"explain\" from hy_norm where itemdetail_id in (SELECT t1.id FROM hy_itemdetail t1 inner join hy_record t2 on t1.record_id=t2.id where t2.hy_approve=0 and t2.accept_time >= NOW() - INTERVAL '10 days')"
incremental = false
key_field = "UpdateTime"


[[tables]]
name = "hy_instrument"
query = "SELECT * FROM \"hy_instrument\""
incremental = false
key_field = "UpdateTime"

[[tables]]
name = "hy_information"
query = "SELECT * FROM \"hy_information\""
incremental = false
key_field = "UpdateTime"



[[tables]]
name = "hy_allot"
query = "SELECT * FROM \"hy_allot\""
incremental = false
key_field = "UpdateTime"

[[tables]]
name = "hy_cytask"
query = "SELECT * FROM \"hy_cytask\""
incremental = false
key_field = "UpdateTime"

[[tables]]
name = "hy_fullwatersample"
query = "select id,qs_code,qs_tonnage::text as qs_tonnage,mt::text as mt,remark,onecode,towcode,fx_code,fx_onecode,fx_twocode from hy_fullwatersample"
incremental = false
key_field = "UpdateTime"

[[tables]]
name = "hy_informationnorm"
query = "SELECT * FROM \"hy_informationnorm\""
incremental = false
key_field = "UpdateTime"







[[tables]]
name = "hy_laboratoryinstrument"
query = "SELECT * FROM \"hy_laboratoryinstrument\""
incremental = false
key_field = "UpdateTime"

[[tables]]
name = "hy_materialanalysis_type"
query = "SELECT * FROM \"hy_materialanalysis_type\""
incremental = false
key_field = "UpdateTime"

[[tables]]
name = "hy_materialdetail"
query = "SELECT * FROM \"hy_materialdetail\""
incremental = false
key_field = "UpdateTime"



[[tables]]
name = "hy_weight_input"
query = "SELECT * FROM \"hy_weight_input\""
incremental = false
key_field = "UpdateTime"


[[tables]]
name = "hy_warmhumid"
query = "select id,laboratoryid,temperature::text as temperature,humidity::text humidity,begintime,endtime, username from hy_warmhumid"
name = "comm_bm_vehicleinfo"
query = "SELECT id, licenseplate, type, grosswt::text as grosswt, tarewt::text as tarewt, owner, dl, supervision, outage, insurancedate, insurancenum, lock, transcompany, createdby, creationtime, modifiedby, modifiedtime, reviewed, reviewedby, reviewedtime, remarks, phonenumber, electronicnumber, rfidmodifiedtime, rfidstop, rfidstopby, rfidstoptime, rfidgrantby, rfidgranttime, samplingpoints, drawbar, carriagelength::text as carriagelength , carriagewidth::text as carriagewidth, carriageheight::text as carriageheight, underbodyheight::text as underbodyheight, frontsampling, backsampling, rod1::text as rod1, rod2::text as rod2, rod3::text as rod3, rod4::text as rod4, rod5::text as rod5, rod6::text as rod6, supplier_id, supplier_name, material_id, material_name FROM public.comm_bm_vehicleinfo"
incremental = false
key_field = "UpdateTime"

+ 150
- 0
tcp_server/src/main.rs View File

@@ -464,6 +464,63 @@ struct HyWeightInput {
information_norm_id: i32
}

#[derive(Debug, Deserialize)]
struct CommBmVehicleinfo {
id: i32,
licenseplate: Option<String>,
r#type: Option<String>,
grosswt: Option<Decimal>,
tarewt: Option<Decimal>,
owner: Option<String>,
dl: Option<String>,
#[serde(deserialize_with = "deserialize_string_to_bool")]
supervision: bool,
#[serde(deserialize_with = "deserialize_string_to_bool")]
outage: bool,
insurancedate: Option<NaiveDateTime>,
insurancenum: Option<String>,
#[serde(deserialize_with = "deserialize_string_to_bool")]
lock: bool,
transcompany: Option<i32>,
createdby: Option<String>,
creationtime: Option<NaiveDate>,
modifiedby: Option<String>,
modifiedtime: Option<NaiveDate>,
#[serde(deserialize_with = "deserialize_string_to_bool")]
reviewed: bool,
reviewedby: Option<String>,
reviewedtime: Option<NaiveDateTime>,
remarks: Option<String>,
phonenumber: Option<String>,
electronicnumber: Option<String>,
rfidmodified_by: Option<String>,
rfidmodifiedtime: Option<NaiveDateTime>,
#[serde(deserialize_with = "deserialize_string_to_bool")]
rfidstop: bool,
rfidstopby: Option<String>,
rfidstoptime: Option<NaiveDateTime>,
rfidgrantby: Option<String>,
rfidgranttime: Option<NaiveDate>,
samplingpoints: Option<i32>,
drawbar: Option<i32>,
carriagelength: Option<Decimal>,
carriagewidth: Option<Decimal>,
carriageheight: Option<Decimal>,
underbodyheight: Option<Decimal>,
frontsampling: Option<i32>,
backsampling: Option<i32>,
rod1: Option<Decimal>,
rod2: Option<Decimal>,
rod3: Option<Decimal>,
rod4: Option<Decimal>,
rod5: Option<Decimal>,
rod6: Option<Decimal>,
supplier_id: Option<i32>,
supplier_name: Option<String>,
material_id: Option<i32>,
material_name: Option<String>,
}

#[derive(Debug, Deserialize)]
struct HySpotcheck {
id: i32,
@@ -649,6 +706,84 @@ async fn insert_instrument(client: &tokio_postgres::Client, info: &InstrumentInf
Ok(())
}

async fn insert_vehicle_info(client: &tokio_postgres::Client, info: &CommBmVehicleinfo) -> Result<(), PgError> {
let exists = client
.query_one(
"SELECT EXISTS(SELECT 1 FROM public.comm_bm_vehicleinfo WHERE id = $1)",
&[&info.id],
)
.await?
.get::<_, bool>(0);

if exists {
// 如果记录存在,执行更新操作
client.execute(
"UPDATE public.comm_bm_vehicleinfo
SET licenseplate = $2, type = $3, grosswt = $4, tarewt = $5,
owner = $6, dl = $7, supervision = $8, outage = $9, insurancedate = $10,
insurancenum = $11, lock = $12, transcompany = $13, createdby = $14,
creationtime = $15, modifiedby = $16, modifiedtime = $17, reviewed = $18,
reviewedby = $19, reviewedtime = $20, remarks = $21, phonenumber = $22,
electronicnumber = $23, material_name = $24, rfidmodifiedtime = $25,
rfidstop = $26, rfidstopby = $27, rfidstoptime = $28, rfidgrantby = $29,
rfidgranttime = $30, samplingpoints = $31, drawbar = $32, carriagelength = $33,
carriagewidth = $34, carriageheight = $35, underbodyheight = $36,
frontsampling = $37, backsampling = $38, rod1 = $39, rod2 = $40, rod3 = $41,
rod4 = $42, rod5 = $43, rod6 = $44, supplier_id = $45, supplier_name = $46,
material_id = $47
WHERE id = $1",
&[
&info.id, &info.licenseplate, &info.r#type, &info.grosswt, &info.tarewt,
&info.owner, &info.dl, &info.supervision, &info.outage, &info.insurancedate,
&info.insurancenum, &info.lock, &info.transcompany, &info.createdby,
&info.creationtime, &info.modifiedby, &info.modifiedtime, &info.reviewed,
&info.reviewedby, &info.reviewedtime, &info.remarks, &info.phonenumber,
&info.electronicnumber, &info.material_name, &info.rfidmodifiedtime,
&info.rfidstop, &info.rfidstopby, &info.rfidstoptime, &info.rfidgrantby,
&info.rfidgranttime, &info.samplingpoints, &info.drawbar, &info.carriagelength,
&info.carriagewidth, &info.carriageheight, &info.underbodyheight,
&info.frontsampling, &info.backsampling, &info.rod1, &info.rod2, &info.rod3,
&info.rod4, &info.rod5, &info.rod6, &info.supplier_id, &info.supplier_name,
&info.material_id
],
).await?;
} else {
// 如果记录不存在,执行插入操作
client.execute(
"INSERT INTO public.comm_bm_vehicleinfo (
id, licenseplate, type, grosswt, tarewt, owner, dl,
supervision, outage, insurancedate, insurancenum, lock, transcompany,
createdby, creationtime, modifiedby, modifiedtime, reviewed, reviewedby,
reviewedtime, remarks, phonenumber, electronicnumber,
rfidmodifiedtime, rfidstop, rfidstopby, rfidstoptime, rfidgrantby,
rfidgranttime, samplingpoints, drawbar, carriagelength, carriagewidth,
carriageheight, underbodyheight, frontsampling, backsampling, rod1, rod2,
rod3, rod4, rod5, rod6, supplier_id, supplier_name, material_id, material_name
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15,
$16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28,
$29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41,
$42, $43, $44, $45, $46, $47)",
&[
&info.id, &info.licenseplate, &info.r#type, &info.grosswt, &info.tarewt,
&info.owner, &info.dl, &info.supervision, &info.outage, &info.insurancedate,
&info.insurancenum, &info.lock, &info.transcompany, &info.createdby,
&info.creationtime, &info.modifiedby, &info.modifiedtime, &info.reviewed,
&info.reviewedby, &info.reviewedtime, &info.remarks, &info.phonenumber,
&info.electronicnumber, &info.rfidmodifiedtime,
&info.rfidstop, &info.rfidstopby, &info.rfidstoptime, &info.rfidgrantby,
&info.rfidgranttime, &info.samplingpoints, &info.drawbar, &info.carriagelength,
&info.carriagewidth, &info.carriageheight, &info.underbodyheight,
&info.frontsampling, &info.backsampling, &info.rod1, &info.rod2, &info.rod3,
&info.rod4, &info.rod5, &info.rod6, &info.supplier_id, &info.supplier_name,
&info.material_id, &info.material_name
],
).await?;
}

println!("成功{}车辆信息: ID {}", if exists { "更新" } else { "插入" }, info.id);
Ok(())
}

async fn insert_information(client: &tokio_postgres::Client, info: &InformationInfo) -> Result<(), PgError> {
let exists = client
.query_one(
@@ -1530,6 +1665,21 @@ async fn handle_client(socket: &mut TcpStream, client: &tokio_postgres::Client)
false
}
},
"comm_bm_vehicleinfo" => {
if let Ok(info) = serde_json::from_str::<CommBmVehicleinfo>(data_str) {
println!("接收到车辆信息: {:?}", info);
match insert_vehicle_info(client, &info).await {
Ok(_) => true,
Err(e) => {
eprintln!("插入车辆信息失败: {}", e);
false
}
}
} else {
eprintln!("解析车辆信息失败");
false
}
},
"hy_allot" => {
if let Ok(info) = serde_json::from_str::<HyAllot>(data_str) {
println!("接收到分配信息: {:?}", info);


+ 1
- 1
tcp_server/target/.rustc_info.json View File

@@ -1 +1 @@
{"rustc_fingerprint":12877487731689626790,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.85.0 (4d91de4e4 2025-02-17)\nbinary: rustc\ncommit-hash: 4d91de4e48198da2e33413efdcd9cd2cc0c46688\ncommit-date: 2025-02-17\nhost: x86_64-pc-windows-msvc\nrelease: 1.85.0\nLLVM version: 19.1.7\n","stderr":""},"17313545009459141857":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\qq101\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"13331785392996375709":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\qq101\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""}},"successes":{}}
{"rustc_fingerprint":3807311574931242264,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.85.0 (4d91de4e4 2025-02-17)\nbinary: rustc\ncommit-hash: 4d91de4e48198da2e33413efdcd9cd2cc0c46688\ncommit-date: 2025-02-17\nhost: x86_64-pc-windows-msvc\nrelease: 1.85.0\nLLVM version: 19.1.7\n","stderr":""},"13331785392996375709":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\qq101\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""}},"successes":{}}

BIN
tcp_server/target/debug/tcp_server.exe View File


BIN
tcp_server/target/debug/tcp_server.pdb View File


Loading…
Cancel
Save