diff --git a/xiaoqu-agent-service/src/main/java/me/iiv/agent/mapper/m0/ProperytMapper.java b/xiaoqu-agent-service/src/main/java/me/iiv/agent/mapper/m0/ProperytMapper.java index 62830dc..224c8f7 100644 --- a/xiaoqu-agent-service/src/main/java/me/iiv/agent/mapper/m0/ProperytMapper.java +++ b/xiaoqu-agent-service/src/main/java/me/iiv/agent/mapper/m0/ProperytMapper.java @@ -1,16 +1,32 @@ -package me.iiv.agent.mapper.m0; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import me.iiv.agent.entity.m0.Properyt; - -/** - *

- * 物业表 Mapper 接口 - *

- * - * @author codegen - * @since 2026-09-08 - */ -public interface ProperytMapper extends BaseMapper { - -} +package me.iiv.agent.mapper.m0; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import me.iiv.agent.entity.m0.Properyt; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 物业表 Mapper 接口 + *

+ * + * @author codegen + * @since 2026-09-08 + */ +public interface ProperytMapper extends BaseMapper { + + /** + * 按 id 批量取物业的"所属销售"。 + * + *

来源是物业表的 userId / userName 两列(实体未映射,故用显式 SQL)。 + * 独立查询 + 调用方容错:列名或数据异常只丢归属,不影响 properties 变更流。

+ */ + @Select("") + List> selectPropertyOwners(@Param("ids") List ids); +} diff --git a/xiaoqu-agent-service/src/main/java/me/iiv/agent/mcp/sync/PropertiesSyncEntity.java b/xiaoqu-agent-service/src/main/java/me/iiv/agent/mcp/sync/PropertiesSyncEntity.java index 7e1dcd3..a7a0491 100644 --- a/xiaoqu-agent-service/src/main/java/me/iiv/agent/mcp/sync/PropertiesSyncEntity.java +++ b/xiaoqu-agent-service/src/main/java/me/iiv/agent/mcp/sync/PropertiesSyncEntity.java @@ -64,22 +64,57 @@ public class PropertiesSyncEntity extends AbstractSyncEntity implements SyncEnti agents.put(agent.getId(), agent); } } + // 物业"所属销售":优先物业表 userId/userName(实体未映射,独立查询 + 容错)。 + Map ownerIds = new java.util.HashMap<>(); + Map ownerNames = new java.util.HashMap<>(); + try { + List ids = new java.util.ArrayList<>(); + for (Properyt row : list) { + if (row.getId() != null) { + ids.add(row.getId()); + } + } + if (!ids.isEmpty()) { + for (Map owner : properytMapper.selectPropertyOwners(ids)) { + Object pid = owner.get("property_id"); + if (pid == null) { + continue; + } + Long propertyId = Long.valueOf(String.valueOf(pid)); + Object uid = owner.get("user_id"); + Object uname = owner.get("user_name"); + if (uid != null) { + ownerIds.put(propertyId, String.valueOf(uid)); + } + if (uname != null) { + ownerNames.put(propertyId, String.valueOf(uname)); + } + } + } + } catch (Exception enrichmentError) { + // 列名/权限异常时只丢归属,不能让整条 properties 流失败。 + org.slf4j.LoggerFactory.getLogger(PropertiesSyncEntity.class) + .warn("物业所属销售富化失败,跳过归属: {}", enrichmentError.getMessage()); + } List rows = new ArrayList<>(); for (Properyt row : list) { long mt = ChangesEngine.effectiveTs(row.getModifyTime(), row.getCreateTime()); - rows.add(new SyncRow(toItem(row, mt, agents.get(row.getAgentId())), mt, row.getId())); + rows.add(new SyncRow(toItem(row, mt, agents.get(row.getAgentId()), + ownerIds.get(row.getId()), ownerNames.get(row.getId())), mt, row.getId())); } return rows; } - private Map toItem(Properyt row, long mt, me.iiv.agent.entity.m0.Agent agent) { + private Map toItem(Properyt row, long mt, me.iiv.agent.entity.m0.Agent agent, + String ownerUserId, String ownerUserName) { boolean deleted = row.getSoftDelete() != null && row.getSoftDelete() == 1; Date effective = row.getModifyTime() != null ? row.getModifyTime() : row.getCreateTime(); return SyncChangeSchemas.toMap(new SyncChangeSchemas.PropertyChange( stableId(row.getId()), row.getCustomerId(), row.getName(), row.getJinideName(), row.getIdentificationNumber(), row.getSerialnumber(), stableId(row.getSupervisorId()), stableId(row.getAgentId()), - stableId(row.getCreateId()), + ownerUserId == null ? stableId(row.getCreateId()) : ownerUserId, + ownerUserName, agent == null ? null : stableId(agent.getSaleId()), agent == null ? null : agent.getSaleName(), deleted ? "INACTIVE" : "ACTIVE", diff --git a/xiaoqu-agent-service/src/main/java/me/iiv/agent/mcp/sync/SyncChangeSchemas.java b/xiaoqu-agent-service/src/main/java/me/iiv/agent/mcp/sync/SyncChangeSchemas.java index cf2d606..03d2617 100644 --- a/xiaoqu-agent-service/src/main/java/me/iiv/agent/mcp/sync/SyncChangeSchemas.java +++ b/xiaoqu-agent-service/src/main/java/me/iiv/agent/mcp/sync/SyncChangeSchemas.java @@ -49,7 +49,8 @@ final class SyncChangeSchemas { @JsonProperty("external_customer_no") String externalCustomerNo, @JsonProperty("supervisor_id") String supervisorId, @JsonProperty("agent_id") String agentId, - @JsonProperty("create_id") String createId, + @JsonProperty("sale_user_id") String saleUserId, + @JsonProperty("sale_user_name") String saleUserName, @JsonProperty("sale_id") String saleId, @JsonProperty("sale_name") String saleName, String status,