Merge remote-tracking branch 'origin/dev_WMS20260401' into dev_WMS20260401
This commit is contained in:
+44
-9
@@ -1296,6 +1296,50 @@ public class UserShipperApplicationService {
|
|||||||
return userShipperMapper.findByCustomerNcCodeAndOrganizationId(customerNcCode, organizationId);
|
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)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void addEnterpriseShipperFromMasterData(MdmMerchantRecordDTO record, LoginUser loginUser) {
|
public void addEnterpriseShipperFromMasterData(MdmMerchantRecordDTO record, LoginUser loginUser) {
|
||||||
validateMasterDataRecord(record);
|
validateMasterDataRecord(record);
|
||||||
@@ -1378,15 +1422,6 @@ public class UserShipperApplicationService {
|
|||||||
if (StringUtils.isEmpty(record.getDesc1())) {
|
if (StringUtils.isEmpty(record.getDesc1())) {
|
||||||
throw new ServiceException("公司名称不能为空,CODE=" + record.getCode());
|
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) {
|
private String buildMasterDataUserAccount(String code) {
|
||||||
|
|||||||
+15
-2
@@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -132,6 +133,7 @@ public class UserShipperMasterDataSyncService {
|
|||||||
log.info("开始同步MDM客商, organizationId={}, orgNcCode={}, lastModifyRecordTime={}",
|
log.info("开始同步MDM客商, organizationId={}, orgNcCode={}, lastModifyRecordTime={}",
|
||||||
organizationId, orgNcCode, lastModifyRecordTime);
|
organizationId, orgNcCode, lastModifyRecordTime);
|
||||||
|
|
||||||
|
Map<String, UserShipperPo> existingMap = userShipperApplicationService.loadMasterDataSyncShipperMap(organizationId);
|
||||||
String maxModifyTime = lastModifyRecordTime;
|
String maxModifyTime = lastModifyRecordTime;
|
||||||
int currentPage = 1;
|
int currentPage = 1;
|
||||||
Integer totalPages = null;
|
Integer totalPages = null;
|
||||||
@@ -147,11 +149,22 @@ public class UserShipperMasterDataSyncService {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
UserShipperPo existing = userShipperApplicationService.findByCustomerNcCodeAndOrganizationId(
|
String ncCode = trimToEmpty(record.getCode());
|
||||||
record.getCode(), organizationId);
|
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) {
|
if (existing == null) {
|
||||||
userShipperApplicationService.addEnterpriseShipperFromMasterData(record, loginUser);
|
userShipperApplicationService.addEnterpriseShipperFromMasterData(record, loginUser);
|
||||||
resultVo.setAddCount(resultVo.getAddCount() + 1);
|
resultVo.setAddCount(resultVo.getAddCount() + 1);
|
||||||
|
UserShipperPo added = userShipperApplicationService.findByCustomerNcCodeAndCompanyName(
|
||||||
|
ncCode, companyName, organizationId);
|
||||||
|
if (added != null) {
|
||||||
|
existingMap.put(matchKey, added);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
userShipperApplicationService.updateEnterpriseShipperFromMasterData(record, existing, loginUser);
|
userShipperApplicationService.updateEnterpriseShipperFromMasterData(record, existing, loginUser);
|
||||||
resultVo.setUpdateCount(resultVo.getUpdateCount() + 1);
|
resultVo.setUpdateCount(resultVo.getUpdateCount() + 1);
|
||||||
|
|||||||
+6
@@ -45,4 +45,10 @@ public interface UserShipperMapper extends BaseMapper<UserShipperEntity> {
|
|||||||
|
|
||||||
UserShipperPo findByCustomerNcCodeAndOrganizationId(@Param("customerNcCode") String customerNcCode,
|
UserShipperPo findByCustomerNcCodeAndOrganizationId(@Param("customerNcCode") String customerNcCode,
|
||||||
@Param("organizationId") Long organizationId);
|
@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
|
LIMIT 1
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
Reference in New Issue
Block a user