规范了update data的构建方式,统一使用build_update_request_data方法来处理更新数据的构建和过滤逻辑。这个方法会根据提供的原始数据、更新数据和对应的schema来生成最终的更新请求数据,同时会自动排除掉未变化的字段和空值字段,从而确保只发送必要的更新信息到后端接口。这种方式不仅简化了代码逻辑,还提高了代码的可维护性和一致性。
This commit is contained in:
@@ -190,7 +190,7 @@ class ConstructionTaskApiHandler(BaseApiHandler):
|
||||
base_update_error = "show_name changed but task_type != QT"
|
||||
|
||||
schema_status_lines.append(
|
||||
self._build_update_schema_status(
|
||||
self.build_update_schema_status(
|
||||
schema_name="ConstructionUpdate",
|
||||
schema=ConstructionUpdate,
|
||||
new_data=data,
|
||||
@@ -238,7 +238,7 @@ class ConstructionTaskApiHandler(BaseApiHandler):
|
||||
plan_update_error = str(e)
|
||||
|
||||
schema_status_lines.append(
|
||||
self._build_update_schema_status(
|
||||
self.build_update_schema_status(
|
||||
schema_name="ConstructionPlanUpdate",
|
||||
schema=ConstructionPlanUpdate,
|
||||
new_data=data,
|
||||
|
||||
@@ -124,9 +124,9 @@ class ConstructionTaskDetailApiHandler(BaseApiHandler):
|
||||
|
||||
origin_data = node.get_origin_data() or {}
|
||||
|
||||
# 使用 _get_schema_diff 检查差异并打印日志
|
||||
# 使用 get_update_schema_diff 作为 update 入口检查差异并打印日志
|
||||
force_steps_update = self._steps_changed(node)
|
||||
diff_fields = self._get_schema_diff(
|
||||
diff_fields = self.get_update_schema_diff(
|
||||
ConstructionDetailUpdate,
|
||||
data,
|
||||
origin_data,
|
||||
@@ -145,7 +145,7 @@ class ConstructionTaskDetailApiHandler(BaseApiHandler):
|
||||
continue
|
||||
|
||||
# 需要完整的 schema 数据(包括必填字段)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
data,
|
||||
origin_data,
|
||||
ConstructionDetailUpdate,
|
||||
|
||||
@@ -256,7 +256,7 @@ class ContractApiHandler(BaseApiHandler):
|
||||
# 过滤出需要更新的字段(排除空值、未变化的字段)
|
||||
origin_data = node.get_origin_data() or {}
|
||||
force_steps_update = self._steps_changed(node)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
new_data=data,
|
||||
original_data=origin_data,
|
||||
schema=ContractUpdate,
|
||||
|
||||
@@ -93,7 +93,7 @@ class ContractChangeApiHandler(BaseApiHandler):
|
||||
|
||||
origin_data = node.get_origin_data() or {}
|
||||
force_steps_update = self._steps_changed(node)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
node_data,
|
||||
origin_data,
|
||||
PostContractChange,
|
||||
|
||||
@@ -140,7 +140,7 @@ class ContractSettlementApiHandler(BaseApiHandler):
|
||||
|
||||
# 1. 基础信息更新 (ContractSettlementUpdate)
|
||||
force_steps_update = self._steps_changed(node)
|
||||
base_diff = self._get_schema_diff(
|
||||
base_diff = self.get_update_schema_diff(
|
||||
ContractSettlementUpdate,
|
||||
data,
|
||||
origin_data,
|
||||
@@ -167,7 +167,7 @@ class ContractSettlementApiHandler(BaseApiHandler):
|
||||
error = f"API error: {e}"
|
||||
|
||||
# 2. 计划信息更新 (ContractSettlementPlanUpdate)
|
||||
plan_diff = self._get_schema_diff(ContractSettlementPlanUpdate, data, origin_data, node.node_id)
|
||||
plan_diff = self.get_update_schema_diff(ContractSettlementPlanUpdate, data, origin_data, node.node_id)
|
||||
if not error and plan_diff:
|
||||
try:
|
||||
plan_model = ContractSettlementPlanUpdate.model_validate(data)
|
||||
|
||||
@@ -122,9 +122,9 @@ class ContractSettlementDetailApiHandler(BaseApiHandler):
|
||||
|
||||
origin_data = node.get_origin_data() or {}
|
||||
|
||||
# 使用 _get_schema_diff 检查差异并打印日志
|
||||
# 使用 get_update_schema_diff 作为 update 入口检查差异并打印日志
|
||||
force_steps_update = self._steps_changed(node)
|
||||
diff_fields = self._get_schema_diff(
|
||||
diff_fields = self.get_update_schema_diff(
|
||||
ContractSettlementDetailUpdate,
|
||||
data,
|
||||
origin_data,
|
||||
@@ -143,7 +143,7 @@ class ContractSettlementDetailApiHandler(BaseApiHandler):
|
||||
continue
|
||||
|
||||
# 需要完整的 schema 数据(包括必填字段)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
data,
|
||||
origin_data,
|
||||
ContractSettlementDetailUpdate,
|
||||
|
||||
@@ -118,7 +118,7 @@ class LarApiHandler(BaseApiHandler):
|
||||
|
||||
for schema, api_func in update_configs:
|
||||
# 获取过滤后的更新数据
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
node_data,
|
||||
origin_data,
|
||||
schema,
|
||||
|
||||
@@ -104,7 +104,7 @@ class LarChangeApiHandler(BaseApiHandler):
|
||||
continue
|
||||
origin_data = node.get_origin_data() or {}
|
||||
force_steps_update = self._steps_changed(node)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
node_data,
|
||||
origin_data,
|
||||
LarChangeUpdateSchema,
|
||||
|
||||
@@ -106,7 +106,7 @@ class MaterialApiHandler(BaseApiHandler):
|
||||
|
||||
# 1. 基础信息更新 (MaterialUpdate)
|
||||
force_steps_update = self._steps_changed(node)
|
||||
base_diff = self._get_schema_diff(
|
||||
base_diff = self.get_update_schema_diff(
|
||||
MaterialUpdate,
|
||||
data,
|
||||
origin_data,
|
||||
@@ -131,7 +131,7 @@ class MaterialApiHandler(BaseApiHandler):
|
||||
error = f"{ERROR_VALIDATION_FAILED}: {e}"
|
||||
|
||||
# 2. 计划信息更新 (MaterialPlanUpdate)
|
||||
plan_diff = self._get_schema_diff(MaterialPlanUpdate, data, origin_data, node.node_id)
|
||||
plan_diff = self.get_update_schema_diff(MaterialPlanUpdate, data, origin_data, node.node_id)
|
||||
if not error and plan_diff:
|
||||
try:
|
||||
plan_model = MaterialPlanUpdate.model_validate(data)
|
||||
|
||||
@@ -144,9 +144,9 @@ class MaterialDetailApiHandler(BaseApiHandler):
|
||||
|
||||
origin_data = node.get_origin_data() or {}
|
||||
|
||||
# 使用 _get_schema_diff 检查差异并打印日志
|
||||
# 使用 get_update_schema_diff 作为 update 入口检查差异并打印日志
|
||||
force_steps_update = self._steps_changed(node)
|
||||
diff_fields = self._get_schema_diff(
|
||||
diff_fields = self.get_update_schema_diff(
|
||||
MaterialDetailUpdate,
|
||||
data,
|
||||
origin_data,
|
||||
@@ -165,7 +165,7 @@ class MaterialDetailApiHandler(BaseApiHandler):
|
||||
continue
|
||||
|
||||
# 需要完整的 schema 数据(包括必填字段)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
data,
|
||||
origin_data,
|
||||
MaterialDetailUpdate,
|
||||
|
||||
@@ -121,7 +121,7 @@ class PersonnelApiHandler(BaseApiHandler):
|
||||
|
||||
# 1. 基础信息更新 (PowerUpdate)
|
||||
force_steps_update = self._steps_changed(node)
|
||||
base_diff = self._get_schema_diff(
|
||||
base_diff = self.get_update_schema_diff(
|
||||
PowerUpdate,
|
||||
data,
|
||||
origin_data,
|
||||
|
||||
@@ -111,9 +111,9 @@ class PersonnelDetailApiHandler(BaseApiHandler):
|
||||
|
||||
origin_data = node.get_origin_data() or {}
|
||||
|
||||
# 使用 _get_schema_diff 检查差异并打印日志
|
||||
# 使用 get_update_schema_diff 作为 update 入口检查差异并打印日志
|
||||
force_steps_update = self._steps_changed(node)
|
||||
diff_fields = self._get_schema_diff(
|
||||
diff_fields = self.get_update_schema_diff(
|
||||
PowerDetailUpdate,
|
||||
data,
|
||||
origin_data,
|
||||
@@ -132,7 +132,7 @@ class PersonnelDetailApiHandler(BaseApiHandler):
|
||||
continue
|
||||
|
||||
# 需要完整的 schema 数据(包括必填字段)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
data,
|
||||
origin_data,
|
||||
PowerDetailUpdate,
|
||||
|
||||
@@ -94,7 +94,7 @@ class PreparationApiHandler(BaseApiHandler):
|
||||
|
||||
origin_data = node.get_origin_data() or {}
|
||||
force_steps_update = self._steps_changed(node)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
node_data,
|
||||
origin_data,
|
||||
PostPreparation,
|
||||
|
||||
@@ -99,7 +99,7 @@ class ProductionApiHandler(BaseApiHandler):
|
||||
|
||||
# 获取过滤后的更新数据
|
||||
force_steps_update = self._steps_changed(node)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
node_data,
|
||||
origin_data,
|
||||
PostProduction,
|
||||
|
||||
@@ -234,7 +234,7 @@ class ProjectApiHandler(BaseApiHandler):
|
||||
|
||||
# 遍历所有更新 schema,检查差异并更新
|
||||
for schema, api_func in update_configs:
|
||||
update_data = self._get_schema_diff(
|
||||
update_data = self.get_update_schema_diff(
|
||||
schema,
|
||||
data,
|
||||
original_data,
|
||||
@@ -244,9 +244,9 @@ class ProjectApiHandler(BaseApiHandler):
|
||||
if not update_data:
|
||||
continue
|
||||
|
||||
# 执行更新(差异已由 _get_schema_diff 打印)
|
||||
# 执行更新(差异已由 get_update_schema_diff 打印)
|
||||
try:
|
||||
full_update_data = self._filter_update_data(
|
||||
full_update_data = self.build_update_request_data(
|
||||
data,
|
||||
original_data,
|
||||
schema,
|
||||
|
||||
@@ -94,7 +94,7 @@ class UnitsApiHandler(BaseApiHandler):
|
||||
|
||||
origin_data = node.get_origin_data() or {}
|
||||
force_steps_update = self._steps_changed(node)
|
||||
update_data = self._filter_update_data(
|
||||
update_data = self.build_update_request_data(
|
||||
node_data,
|
||||
origin_data,
|
||||
PostGeneratorUnits,
|
||||
|
||||
Reference in New Issue
Block a user