客商主数据同步修改BUG
This commit is contained in:
+44
-9
@@ -1296,6 +1296,50 @@ public class UserShipperApplicationService {
|
||||
return userShipperMapper.findByCustomerNcCodeAndOrganizationId(customerNcCode, organizationId);
|
||||
}
|
||||
|
||||
/**
|
||||
* MDM 客商同步:按 NC编码 + 公司名称 建立本地委托方索引
|
||||
*/
|
||||
public java.util.Map<String, UserShipperPo> loadMasterDataSyncShipperMap(Long organizationId) {
|
||||
if (organizationId == null) {
|
||||
return new java.util.HashMap<>();
|
||||
}
|
||||
List<UserShipperPo> list = userShipperMapper.listForMasterDataSyncByOrganizationId(organizationId);
|
||||
java.util.Map<String, UserShipperPo> map = new java.util.HashMap<>(list.size() * 2);
|
||||
for (UserShipperPo po : list) {
|
||||
String ncCode = normalizeMasterDataKey(po.getCustomerNcCode());
|
||||
String companyName = resolveMasterDataCompanyName(po);
|
||||
if (StringUtils.isNotEmpty(ncCode) && StringUtils.isNotEmpty(companyName)) {
|
||||
map.putIfAbsent(buildMasterDataMatchKey(ncCode, companyName), po);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
public UserShipperPo findByCustomerNcCodeAndCompanyName(String customerNcCode, String companyName, Long organizationId) {
|
||||
if (StringUtils.isEmpty(customerNcCode) || StringUtils.isEmpty(companyName) || organizationId == null) {
|
||||
return null;
|
||||
}
|
||||
return userShipperMapper.findByCustomerNcCodeAndCompanyName(
|
||||
normalizeMasterDataKey(customerNcCode),
|
||||
normalizeMasterDataKey(companyName),
|
||||
organizationId);
|
||||
}
|
||||
|
||||
public static String buildMasterDataMatchKey(String ncCode, String companyName) {
|
||||
return normalizeMasterDataKey(ncCode) + "|" + normalizeMasterDataKey(companyName);
|
||||
}
|
||||
|
||||
private static String normalizeMasterDataKey(String value) {
|
||||
return value == null ? null : value.trim();
|
||||
}
|
||||
|
||||
private static String resolveMasterDataCompanyName(UserShipperPo po) {
|
||||
if (StringUtils.isNotEmpty(po.getShipperEnterpriseName())) {
|
||||
return normalizeMasterDataKey(po.getShipperEnterpriseName());
|
||||
}
|
||||
return normalizeMasterDataKey(po.getUserNameShipper());
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void addEnterpriseShipperFromMasterData(MdmMerchantRecordDTO record, LoginUser loginUser) {
|
||||
validateMasterDataRecord(record);
|
||||
@@ -1378,15 +1422,6 @@ public class UserShipperApplicationService {
|
||||
if (StringUtils.isEmpty(record.getDesc1())) {
|
||||
throw new ServiceException("公司名称不能为空,CODE=" + record.getCode());
|
||||
}
|
||||
if (StringUtils.isEmpty(record.getDesc14())) {
|
||||
throw new ServiceException("联系人不能为空,CODE=" + record.getCode());
|
||||
}
|
||||
if (StringUtils.isEmpty(record.getDesc15())) {
|
||||
throw new ServiceException("联系电话不能为空,CODE=" + record.getCode());
|
||||
}
|
||||
if (StringUtils.isEmpty(record.getDesc29())) {
|
||||
throw new ServiceException("省市区县不能为空,CODE=" + record.getCode());
|
||||
}
|
||||
}
|
||||
|
||||
private String buildMasterDataUserAccount(String code) {
|
||||
|
||||
+15
-2
@@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Service
|
||||
@@ -132,6 +133,7 @@ public class UserShipperMasterDataSyncService {
|
||||
log.info("开始同步MDM客商, organizationId={}, orgNcCode={}, lastModifyRecordTime={}",
|
||||
organizationId, orgNcCode, lastModifyRecordTime);
|
||||
|
||||
Map<String, UserShipperPo> existingMap = userShipperApplicationService.loadMasterDataSyncShipperMap(organizationId);
|
||||
String maxModifyTime = lastModifyRecordTime;
|
||||
int currentPage = 1;
|
||||
Integer totalPages = null;
|
||||
@@ -147,11 +149,22 @@ public class UserShipperMasterDataSyncService {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
UserShipperPo existing = userShipperApplicationService.findByCustomerNcCodeAndOrganizationId(
|
||||
record.getCode(), organizationId);
|
||||
String ncCode = trimToEmpty(record.getCode());
|
||||
String companyName = trimToEmpty(record.getDesc1());
|
||||
if (StringUtils.isEmpty(ncCode) || StringUtils.isEmpty(companyName)) {
|
||||
resultVo.setSkipCount(resultVo.getSkipCount() + 1);
|
||||
continue;
|
||||
}
|
||||
String matchKey = UserShipperApplicationService.buildMasterDataMatchKey(ncCode, companyName);
|
||||
UserShipperPo existing = existingMap.get(matchKey);
|
||||
if (existing == null) {
|
||||
userShipperApplicationService.addEnterpriseShipperFromMasterData(record, loginUser);
|
||||
resultVo.setAddCount(resultVo.getAddCount() + 1);
|
||||
UserShipperPo added = userShipperApplicationService.findByCustomerNcCodeAndCompanyName(
|
||||
ncCode, companyName, organizationId);
|
||||
if (added != null) {
|
||||
existingMap.put(matchKey, added);
|
||||
}
|
||||
} else {
|
||||
userShipperApplicationService.updateEnterpriseShipperFromMasterData(record, existing, loginUser);
|
||||
resultVo.setUpdateCount(resultVo.getUpdateCount() + 1);
|
||||
|
||||
+6
@@ -45,4 +45,10 @@ public interface UserShipperMapper extends BaseMapper<UserShipperEntity> {
|
||||
|
||||
UserShipperPo findByCustomerNcCodeAndOrganizationId(@Param("customerNcCode") String customerNcCode,
|
||||
@Param("organizationId") Long organizationId);
|
||||
|
||||
List<UserShipperPo> listForMasterDataSyncByOrganizationId(@Param("organizationId") Long organizationId);
|
||||
|
||||
UserShipperPo findByCustomerNcCodeAndCompanyName(@Param("customerNcCode") String customerNcCode,
|
||||
@Param("companyName") String companyName,
|
||||
@Param("organizationId") Long organizationId);
|
||||
}
|
||||
@@ -577,5 +577,44 @@
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<select id="listForMasterDataSyncByOrganizationId" resultType="com.mhd.user.domain.userAggregate.repository.po.UserShipperPo">
|
||||
SELECT b.shipper_id,
|
||||
b.user_id,
|
||||
b.customer_nc_code,
|
||||
b.data_source,
|
||||
a.organization_id AS organizationId,
|
||||
a.organization_name AS organizationName,
|
||||
b.shipper_enterprise_name,
|
||||
b.user_name_shipper,
|
||||
b.emergency_contact_name,
|
||||
b.emergency_contact_phone
|
||||
FROM "USER" a
|
||||
INNER JOIN user_shipper b ON a.user_id = b.user_id
|
||||
WHERE a.del_flag = 1
|
||||
AND b.del_flag = 1
|
||||
AND a.organization_id = #{organizationId}
|
||||
</select>
|
||||
|
||||
<select id="findByCustomerNcCodeAndCompanyName" resultType="com.mhd.user.domain.userAggregate.repository.po.UserShipperPo">
|
||||
SELECT b.shipper_id,
|
||||
b.user_id,
|
||||
b.customer_nc_code,
|
||||
b.data_source,
|
||||
a.organization_id AS organizationId,
|
||||
a.organization_name AS organizationName,
|
||||
b.shipper_enterprise_name,
|
||||
b.user_name_shipper,
|
||||
b.emergency_contact_name,
|
||||
b.emergency_contact_phone
|
||||
FROM "USER" a
|
||||
INNER JOIN user_shipper b ON a.user_id = b.user_id
|
||||
WHERE a.del_flag = 1
|
||||
AND b.del_flag = 1
|
||||
AND b.customer_nc_code = #{customerNcCode}
|
||||
AND b.shipper_enterprise_name = #{companyName}
|
||||
AND a.organization_id = #{organizationId}
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user