|
|
@@ -177,7 +177,7 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
|
|
|
// 将旧接站头表数据同步到新记录:前端未传的字段用旧值补齐
|
|
|
if (CollUtil.isNotEmpty(oldJzList)) {
|
|
|
OrderJzDO oldJzDO = oldJzList.get(0);
|
|
|
- if (newOrderJzDO.getIsJz() == null) {
|
|
|
+ if (newOrderJzDO.getIsJz() == null || newOrderJzDO.getIsJz() >= 0) {
|
|
|
newOrderJzDO.setIsJz(oldJzDO.getIsJz());
|
|
|
}
|
|
|
if (newOrderJzDO.getJzAddress() == null) {
|
|
|
@@ -189,6 +189,7 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
|
|
|
if (newOrderJzDO.getJzLinkPhone() == null) {
|
|
|
newOrderJzDO.setJzLinkPhone(oldJzDO.getJzLinkPhone());
|
|
|
}
|
|
|
+ newOrderJzDO.setDeleted(false);
|
|
|
}
|
|
|
orderJzMapper.insert(newOrderJzDO);
|
|
|
|
|
|
@@ -243,13 +244,15 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
|
|
|
|
|
|
Long newJzId = tradeOrderBO.getOrderJzDO().getId();
|
|
|
|
|
|
- // 1. 构建证件号到新游客ID的映射(从新订单的游客列表中获取)
|
|
|
- Map<String, Long> credentialNoToNewVisitorIdMap = new HashMap<>(16);
|
|
|
+ // 1. 构建证件号和游客姓名到新游客ID的映射(从新订单的游客列表中获取)
|
|
|
+ Map<String, TradeVisitorDO> credentialNoToNewVisitorIdMap = new HashMap<>(16);
|
|
|
+ Map<String, TradeVisitorDO> nameToNewVisitorIdMap = new HashMap<>(16);
|
|
|
tradeOrderBO.getTradeOrderDetailBOList().forEach(detailBO -> {
|
|
|
if (CollUtil.isNotEmpty(detailBO.getTradeVisitorDOList())) {
|
|
|
detailBO.getTradeVisitorDOList().forEach(visitor -> {
|
|
|
- if (visitor.getCredentialNo() != null) {
|
|
|
- credentialNoToNewVisitorIdMap.put(visitor.getCredentialNo(), visitor.getId());
|
|
|
+ if (visitor.getCredentialNo() != null || visitor.getName() != null) {
|
|
|
+ credentialNoToNewVisitorIdMap.put(visitor.getCredentialNo(), visitor);
|
|
|
+ nameToNewVisitorIdMap.put(visitor.getName(), visitor);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -262,15 +265,16 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
|
|
|
newDetail.setId(IdWorker.getId());
|
|
|
newDetail.setJzId(newJzId);
|
|
|
// 通过证件号匹配新游客ID,确保 visitor_id 关联到新订单的游客
|
|
|
- Long newVisitorId = credentialNoToNewVisitorIdMap.get(oldDetail.getIdCard());
|
|
|
- newDetail.setVisitorId(newVisitorId != null ? newVisitorId : oldDetail.getVisitorId());
|
|
|
+ TradeVisitorDO newVisitorId = credentialNoToNewVisitorIdMap.get(oldDetail.getIdCard());
|
|
|
+ TradeVisitorDO newVisitorId2 = nameToNewVisitorIdMap.get(oldDetail.getName());
|
|
|
+ newDetail.setVisitorId(newVisitorId != null ? newVisitorId.getId() : (newVisitorId2 != null ? newVisitorId2.getId() : oldDetail.getVisitorId()) );
|
|
|
newDetail.setBatchNo(oldDetail.getBatchNo());
|
|
|
newDetail.setArriveTime(oldDetail.getArriveTime());
|
|
|
newDetail.setAddress(oldDetail.getAddress());
|
|
|
- newDetail.setName(oldDetail.getName());
|
|
|
- newDetail.setIdCard(oldDetail.getIdCard());
|
|
|
+ newDetail.setName(newVisitorId != null ? newVisitorId.getName() : (newVisitorId2 != null ? newVisitorId2.getName() : oldDetail.getName()));
|
|
|
+ newDetail.setIdCard(newVisitorId != null ? newVisitorId.getCredentialNo() : (newVisitorId2 != null ? newVisitorId2.getCredentialNo() : oldDetail.getIdCard()) );
|
|
|
newDetail.setTenantId(oldDetail.getTenantId());
|
|
|
- newDetail.setPhone(oldDetail.getPhone());
|
|
|
+ newDetail.setPhone(newVisitorId != null ? newVisitorId.getMobile() : (newVisitorId2 != null ? newVisitorId2.getMobile() : oldDetail.getPhone()));
|
|
|
newDetail.setRemark(oldDetail.getRemark());
|
|
|
newDetail.setStatus(oldDetail.getStatus());
|
|
|
newDetail.setSignTime(oldDetail.getSignTime());
|
|
|
@@ -279,6 +283,7 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
|
|
|
newDetail.setSignImage(oldDetail.getSignImage());
|
|
|
newDetail.setExtendOrderNo(oldDetail.getExtendOrderNo());
|
|
|
newDetail.setExtendTicketNo(oldDetail.getExtendTicketNo());
|
|
|
+ newDetail.setDeleted(newVisitorId == null && (newVisitorId2 == null));
|
|
|
newDetail.setDispatchId(oldDetail.getDispatchId());
|
|
|
newJzDetailList.add(newDetail);
|
|
|
}
|