|
@@ -28,7 +28,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
@Resource
|
|
@Resource
|
|
|
private UserMapper userMapper;
|
|
private UserMapper userMapper;
|
|
|
@Resource
|
|
@Resource
|
|
|
- private ChildMapper childMapper;
|
|
|
|
|
|
|
+ private FamilyMemberMapper familyMemberMapper;
|
|
|
@Resource
|
|
@Resource
|
|
|
private TeacherMapper teacherMapper;
|
|
private TeacherMapper teacherMapper;
|
|
|
@Resource
|
|
@Resource
|
|
@@ -45,7 +45,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
// ============ 统计结果 ============
|
|
// ============ 统计结果 ============
|
|
|
private int migratedFamilies;
|
|
private int migratedFamilies;
|
|
|
private int migratedParents;
|
|
private int migratedParents;
|
|
|
- private int migratedChildren;
|
|
|
|
|
|
|
+ private int migratedFamilyMemberren;
|
|
|
private int migratedTeachers;
|
|
private int migratedTeachers;
|
|
|
private int migratedOrders;
|
|
private int migratedOrders;
|
|
|
private int migratedResults;
|
|
private int migratedResults;
|
|
@@ -55,7 +55,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
|
|
|
|
|
// ============ ID 映射缓存 ============
|
|
// ============ ID 映射缓存 ============
|
|
|
private final Map<String, Long> sfmsPhoneToFamilyId = new HashMap<>();
|
|
private final Map<String, Long> sfmsPhoneToFamilyId = new HashMap<>();
|
|
|
- private final Map<Long, Long> sfmsClientIdToChildUserId = new HashMap<>();
|
|
|
|
|
|
|
+ private final Map<Long, Long> sfmsClientIdToFamilyMemberUserId = new HashMap<>();
|
|
|
private final Map<Long, Long> sfmsClientIdToFamilyId = new HashMap<>();
|
|
private final Map<Long, Long> sfmsClientIdToFamilyId = new HashMap<>();
|
|
|
private final Map<String, Long> sfmsOpenIdToTeacherUserId = new HashMap<>();
|
|
private final Map<String, Long> sfmsOpenIdToTeacherUserId = new HashMap<>();
|
|
|
|
|
|
|
@@ -68,7 +68,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
// 按依赖顺序执行
|
|
// 按依赖顺序执行
|
|
|
migrateFamilies();
|
|
migrateFamilies();
|
|
|
migrateParentUsers();
|
|
migrateParentUsers();
|
|
|
- migrateChildUsersAndChildren();
|
|
|
|
|
|
|
+ migrateFamilyMemberUsersAndFamilyMemberren();
|
|
|
migrateTeachers();
|
|
migrateTeachers();
|
|
|
migrateGuideFamilies();
|
|
migrateGuideFamilies();
|
|
|
migratePackageOrders();
|
|
migratePackageOrders();
|
|
@@ -78,7 +78,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
|
|
|
|
|
log.info("========== SFMS 数据迁移完成,耗时: {}ms ==========", System.currentTimeMillis() - start);
|
|
log.info("========== SFMS 数据迁移完成,耗时: {}ms ==========", System.currentTimeMillis() - start);
|
|
|
log.info("迁移统计: {} 家庭, {} 家长, {} 孩子, {} 规划师, {} 订单, {} 测评结果, {} 成长档案, {} 成长方案",
|
|
log.info("迁移统计: {} 家庭, {} 家长, {} 孩子, {} 规划师, {} 订单, {} 测评结果, {} 成长档案, {} 成长方案",
|
|
|
- migratedFamilies, migratedParents, migratedChildren, migratedTeachers,
|
|
|
|
|
|
|
+ migratedFamilies, migratedParents, migratedFamilyMemberren, migratedTeachers,
|
|
|
migratedOrders, migratedResults, migratedRecords, migratedPlans);
|
|
migratedOrders, migratedResults, migratedRecords, migratedPlans);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("迁移过程中出错", e);
|
|
log.error("迁移过程中出错", e);
|
|
@@ -91,7 +91,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
private void resetCounters() {
|
|
private void resetCounters() {
|
|
|
migratedFamilies = 0;
|
|
migratedFamilies = 0;
|
|
|
migratedParents = 0;
|
|
migratedParents = 0;
|
|
|
- migratedChildren = 0;
|
|
|
|
|
|
|
+ migratedFamilyMemberren = 0;
|
|
|
migratedTeachers = 0;
|
|
migratedTeachers = 0;
|
|
|
migratedOrders = 0;
|
|
migratedOrders = 0;
|
|
|
migratedResults = 0;
|
|
migratedResults = 0;
|
|
@@ -99,7 +99,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
migratedPlans = 0;
|
|
migratedPlans = 0;
|
|
|
errors.clear();
|
|
errors.clear();
|
|
|
sfmsPhoneToFamilyId.clear();
|
|
sfmsPhoneToFamilyId.clear();
|
|
|
- sfmsClientIdToChildUserId.clear();
|
|
|
|
|
|
|
+ sfmsClientIdToFamilyMemberUserId.clear();
|
|
|
sfmsClientIdToFamilyId.clear();
|
|
sfmsClientIdToFamilyId.clear();
|
|
|
sfmsOpenIdToTeacherUserId.clear();
|
|
sfmsOpenIdToTeacherUserId.clear();
|
|
|
}
|
|
}
|
|
@@ -217,7 +217,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
// 3. 孩子用户 + children 表迁移
|
|
// 3. 孩子用户 + children 表迁移
|
|
|
// ================================================================
|
|
// ================================================================
|
|
|
@Transactional
|
|
@Transactional
|
|
|
- public void migrateChildUsersAndChildren() {
|
|
|
|
|
|
|
+ public void migrateFamilyMemberUsersAndFamilyMemberren() {
|
|
|
log.info("--- 3/9: 迁移孩子用户 ---");
|
|
log.info("--- 3/9: 迁移孩子用户 ---");
|
|
|
try {
|
|
try {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
@@ -261,15 +261,15 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
// 孩子 openid
|
|
// 孩子 openid
|
|
|
String childOpenid = (openid != null && !openid.isEmpty()) ? openid + "_child_" + sfmsClientId : "migrated_child_" + sfmsClientId;
|
|
String childOpenid = (openid != null && !openid.isEmpty()) ? openid + "_child_" + sfmsClientId : "migrated_child_" + sfmsClientId;
|
|
|
|
|
|
|
|
- User existingChildUser = userMapper.selectOne(
|
|
|
|
|
|
|
+ User existingFamilyMemberUser = userMapper.selectOne(
|
|
|
new LambdaQueryWrapper<User>()
|
|
new LambdaQueryWrapper<User>()
|
|
|
.eq(User::getOpenid, childOpenid)
|
|
.eq(User::getOpenid, childOpenid)
|
|
|
.last("LIMIT 1")
|
|
.last("LIMIT 1")
|
|
|
);
|
|
);
|
|
|
- if (existingChildUser != null) {
|
|
|
|
|
- sfmsClientIdToChildUserId.put(sfmsClientId, existingChildUser.getId());
|
|
|
|
|
- if (existingChildUser.getFamilyId() != null) {
|
|
|
|
|
- sfmsClientIdToFamilyId.put(sfmsClientId, existingChildUser.getFamilyId());
|
|
|
|
|
|
|
+ if (existingFamilyMemberUser != null) {
|
|
|
|
|
+ sfmsClientIdToFamilyMemberUserId.put(sfmsClientId, existingFamilyMemberUser.getId());
|
|
|
|
|
+ if (existingFamilyMemberUser.getFamilyId() != null) {
|
|
|
|
|
+ sfmsClientIdToFamilyId.put(sfmsClientId, existingFamilyMemberUser.getFamilyId());
|
|
|
}
|
|
}
|
|
|
count++;
|
|
count++;
|
|
|
if (count % 100 == 0) {
|
|
if (count % 100 == 0) {
|
|
@@ -296,7 +296,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
userMapper.insert(childUser);
|
|
userMapper.insert(childUser);
|
|
|
|
|
|
|
|
// 创建 children 记录
|
|
// 创建 children 记录
|
|
|
- Child child = new Child();
|
|
|
|
|
|
|
+ FamilyMember child = new FamilyMember();
|
|
|
child.setUserId(childUser.getId());
|
|
child.setUserId(childUser.getId());
|
|
|
child.setFamilyId(familyId);
|
|
child.setFamilyId(familyId);
|
|
|
child.setNickname((String) row.get("name"));
|
|
child.setNickname((String) row.get("name"));
|
|
@@ -308,9 +308,9 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
child.setStreakDays(0);
|
|
child.setStreakDays(0);
|
|
|
child.setFocusMaxDaily(3);
|
|
child.setFocusMaxDaily(3);
|
|
|
child.setFocusRemaining(3);
|
|
child.setFocusRemaining(3);
|
|
|
- childMapper.insert(child);
|
|
|
|
|
|
|
+ familyMemberMapper.insert(child);
|
|
|
|
|
|
|
|
- sfmsClientIdToChildUserId.put(sfmsClientId, childUser.getId());
|
|
|
|
|
|
|
+ sfmsClientIdToFamilyMemberUserId.put(sfmsClientId, childUser.getId());
|
|
|
sfmsClientIdToFamilyId.put(sfmsClientId, familyId);
|
|
sfmsClientIdToFamilyId.put(sfmsClientId, familyId);
|
|
|
count++;
|
|
count++;
|
|
|
if (count % 100 == 0) {
|
|
if (count % 100 == 0) {
|
|
@@ -320,8 +320,8 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
log.warn("迁移孩子失败 clientId={}: {}", row.get("crm_client_info_id"), e.getMessage());
|
|
log.warn("迁移孩子失败 clientId={}: {}", row.get("crm_client_info_id"), e.getMessage());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- migratedChildren = count;
|
|
|
|
|
- log.info(" 迁移 {} 个孩子", migratedChildren);
|
|
|
|
|
|
|
+ migratedFamilyMemberren = count;
|
|
|
|
|
+ log.info(" 迁移 {} 个孩子", migratedFamilyMemberren);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("迁移孩子出错", e);
|
|
log.error("迁移孩子出错", e);
|
|
|
errors.add("迁移孩子出错: " + e.getMessage());
|
|
errors.add("迁移孩子出错: " + e.getMessage());
|
|
@@ -460,7 +460,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
for (Map<String, Object> row : rows) {
|
|
for (Map<String, Object> row : rows) {
|
|
|
try {
|
|
try {
|
|
|
long sfmsClientId = ((Number) row.get("client_id")).longValue();
|
|
long sfmsClientId = ((Number) row.get("client_id")).longValue();
|
|
|
- Long userId = sfmsClientIdToChildUserId.get(sfmsClientId);
|
|
|
|
|
|
|
+ Long userId = sfmsClientIdToFamilyMemberUserId.get(sfmsClientId);
|
|
|
Long familyId = sfmsClientIdToFamilyId.get(sfmsClientId);
|
|
Long familyId = sfmsClientIdToFamilyId.get(sfmsClientId);
|
|
|
if (userId == null || familyId == null) continue;
|
|
if (userId == null || familyId == null) continue;
|
|
|
|
|
|
|
@@ -513,13 +513,13 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
for (Map<String, Object> row : rows) {
|
|
for (Map<String, Object> row : rows) {
|
|
|
try {
|
|
try {
|
|
|
long sfmsClientId = ((Number) row.get("client_id")).longValue();
|
|
long sfmsClientId = ((Number) row.get("client_id")).longValue();
|
|
|
- Long childUserId = sfmsClientIdToChildUserId.get(sfmsClientId);
|
|
|
|
|
|
|
+ Long childUserId = sfmsClientIdToFamilyMemberUserId.get(sfmsClientId);
|
|
|
if (childUserId == null) continue;
|
|
if (childUserId == null) continue;
|
|
|
|
|
|
|
|
// 找 child_id
|
|
// 找 child_id
|
|
|
- Child child = childMapper.selectOne(
|
|
|
|
|
- new LambdaQueryWrapper<Child>()
|
|
|
|
|
- .eq(Child::getUserId, childUserId)
|
|
|
|
|
|
|
+ FamilyMember child = familyMemberMapper.selectOne(
|
|
|
|
|
+ new LambdaQueryWrapper<FamilyMember>()
|
|
|
|
|
+ .eq(FamilyMember::getUserId, childUserId)
|
|
|
.last("LIMIT 1")
|
|
.last("LIMIT 1")
|
|
|
);
|
|
);
|
|
|
if (child == null) continue;
|
|
if (child == null) continue;
|
|
@@ -541,11 +541,11 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
DanAssessmentResult result = new DanAssessmentResult();
|
|
DanAssessmentResult result = new DanAssessmentResult();
|
|
|
- result.setChildId(child.getId());
|
|
|
|
|
- result.setChildName(childName);
|
|
|
|
|
- result.setChildBirthday(childBirthday);
|
|
|
|
|
- result.setChildGender(childGender);
|
|
|
|
|
- result.setChildAge(childAge);
|
|
|
|
|
|
|
+ result.setFamilyMemberId(child.getId());
|
|
|
|
|
+ result.setFamilyMemberName(childName);
|
|
|
|
|
+ result.setFamilyMemberBirthday(childBirthday);
|
|
|
|
|
+ result.setFamilyMemberGender(childGender);
|
|
|
|
|
+ result.setFamilyMemberAge(childAge);
|
|
|
result.setTeacherId(teacherUserId != null ? teacherUserId : 0L);
|
|
result.setTeacherId(teacherUserId != null ? teacherUserId : 0L);
|
|
|
result.setAnalysisReport((String) row.get("comm_cont"));
|
|
result.setAnalysisReport((String) row.get("comm_cont"));
|
|
|
result.setProcessDesc((String) row.get("description"));
|
|
result.setProcessDesc((String) row.get("description"));
|
|
@@ -600,7 +600,7 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'nation') cip_nation ON cip_nation.client_id = ci.crm_client_info_id " +
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'nation') cip_nation ON cip_nation.client_id = ci.crm_client_info_id " +
|
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'parentDegree') cip_degree ON cip_degree.client_id = ci.crm_client_info_id " +
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'parentDegree') cip_degree ON cip_degree.client_id = ci.crm_client_info_id " +
|
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'familyStatus') cip_family ON cip_family.client_id = ci.crm_client_info_id " +
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'familyStatus') cip_family ON cip_family.client_id = ci.crm_client_info_id " +
|
|
|
- "LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'singleChild') cip_single ON cip_single.client_id = ci.crm_client_info_id " +
|
|
|
|
|
|
|
+ "LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'singleFamilyMember') cip_single ON cip_single.client_id = ci.crm_client_info_id " +
|
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'schoolScore') cip_score ON cip_score.client_id = ci.crm_client_info_id " +
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'schoolScore') cip_score ON cip_score.client_id = ci.crm_client_info_id " +
|
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'address') cip_address ON cip_address.client_id = ci.crm_client_info_id "
|
|
"LEFT JOIN (SELECT client_id, value FROM crm_client_info_properties WHERE CODE = 'address') cip_address ON cip_address.client_id = ci.crm_client_info_id "
|
|
|
);
|
|
);
|
|
@@ -608,13 +608,13 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
for (Map<String, Object> row : rows) {
|
|
for (Map<String, Object> row : rows) {
|
|
|
try {
|
|
try {
|
|
|
long sfmsClientId = ((Number) row.get("crm_client_info_id")).longValue();
|
|
long sfmsClientId = ((Number) row.get("crm_client_info_id")).longValue();
|
|
|
- Long childUserId = sfmsClientIdToChildUserId.get(sfmsClientId);
|
|
|
|
|
|
|
+ Long childUserId = sfmsClientIdToFamilyMemberUserId.get(sfmsClientId);
|
|
|
Long familyId = sfmsClientIdToFamilyId.get(sfmsClientId);
|
|
Long familyId = sfmsClientIdToFamilyId.get(sfmsClientId);
|
|
|
if (childUserId == null || familyId == null) continue;
|
|
if (childUserId == null || familyId == null) continue;
|
|
|
|
|
|
|
|
- Child child = childMapper.selectOne(
|
|
|
|
|
- new LambdaQueryWrapper<Child>()
|
|
|
|
|
- .eq(Child::getUserId, childUserId)
|
|
|
|
|
|
|
+ FamilyMember child = familyMemberMapper.selectOne(
|
|
|
|
|
+ new LambdaQueryWrapper<FamilyMember>()
|
|
|
|
|
+ .eq(FamilyMember::getUserId, childUserId)
|
|
|
.last("LIMIT 1")
|
|
.last("LIMIT 1")
|
|
|
);
|
|
);
|
|
|
if (child == null) continue;
|
|
if (child == null) continue;
|
|
@@ -628,10 +628,10 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
GrowthRecord record = new GrowthRecord();
|
|
GrowthRecord record = new GrowthRecord();
|
|
|
- record.setChildId(child.getId());
|
|
|
|
|
|
|
+ record.setFamilyMemberId(child.getId());
|
|
|
record.setParentId(parent != null ? parent.getId() : 0L);
|
|
record.setParentId(parent != null ? parent.getId() : 0L);
|
|
|
record.setRecordTitle("历史成长档案 - " + (String) row.get("name"));
|
|
record.setRecordTitle("历史成长档案 - " + (String) row.get("name"));
|
|
|
- record.setChildAge(calcAge((String) row.get("birth_day")));
|
|
|
|
|
|
|
+ record.setFamilyMemberAge(calcAge((String) row.get("birth_day")));
|
|
|
record.setHeight((String) row.get("height"));
|
|
record.setHeight((String) row.get("height"));
|
|
|
record.setWeight((String) row.get("weight"));
|
|
record.setWeight((String) row.get("weight"));
|
|
|
record.setStatus("completed");
|
|
record.setStatus("completed");
|
|
@@ -684,18 +684,18 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
for (Map<String, Object> row : rows) {
|
|
for (Map<String, Object> row : rows) {
|
|
|
try {
|
|
try {
|
|
|
long sfmsClientId = ((Number) row.get("client_id")).longValue();
|
|
long sfmsClientId = ((Number) row.get("client_id")).longValue();
|
|
|
- Long childUserId = sfmsClientIdToChildUserId.get(sfmsClientId);
|
|
|
|
|
|
|
+ Long childUserId = sfmsClientIdToFamilyMemberUserId.get(sfmsClientId);
|
|
|
if (childUserId == null) continue;
|
|
if (childUserId == null) continue;
|
|
|
|
|
|
|
|
- Child child = childMapper.selectOne(
|
|
|
|
|
- new LambdaQueryWrapper<Child>()
|
|
|
|
|
- .eq(Child::getUserId, childUserId)
|
|
|
|
|
|
|
+ FamilyMember child = familyMemberMapper.selectOne(
|
|
|
|
|
+ new LambdaQueryWrapper<FamilyMember>()
|
|
|
|
|
+ .eq(FamilyMember::getUserId, childUserId)
|
|
|
.last("LIMIT 1")
|
|
.last("LIMIT 1")
|
|
|
);
|
|
);
|
|
|
if (child == null) continue;
|
|
if (child == null) continue;
|
|
|
|
|
|
|
|
GrowthPlan plan = new GrowthPlan();
|
|
GrowthPlan plan = new GrowthPlan();
|
|
|
- plan.setChildId(child.getId());
|
|
|
|
|
|
|
+ plan.setFamilyMemberId(child.getId());
|
|
|
plan.setPlanTitle((String) row.get("plan_name"));
|
|
plan.setPlanTitle((String) row.get("plan_name"));
|
|
|
plan.setPlanContent((String) row.get("plan_desc"));
|
|
plan.setPlanContent((String) row.get("plan_desc"));
|
|
|
plan.setStatus("active".equals(row.get("plan_status")) ? "active" : "draft");
|
|
plan.setStatus("active".equals(row.get("plan_status")) ? "active" : "draft");
|
|
@@ -807,13 +807,13 @@ public class DataMigrationService implements DataMigrationServiceInterface {
|
|
|
result.put("success", errors.isEmpty());
|
|
result.put("success", errors.isEmpty());
|
|
|
result.put("migratedFamilies", migratedFamilies);
|
|
result.put("migratedFamilies", migratedFamilies);
|
|
|
result.put("migratedParents", migratedParents);
|
|
result.put("migratedParents", migratedParents);
|
|
|
- result.put("migratedChildren", migratedChildren);
|
|
|
|
|
|
|
+ result.put("migratedFamilyMemberren", migratedFamilyMemberren);
|
|
|
result.put("migratedTeachers", migratedTeachers);
|
|
result.put("migratedTeachers", migratedTeachers);
|
|
|
result.put("migratedOrders", migratedOrders);
|
|
result.put("migratedOrders", migratedOrders);
|
|
|
result.put("migratedResults", migratedResults);
|
|
result.put("migratedResults", migratedResults);
|
|
|
result.put("migratedRecords", migratedRecords);
|
|
result.put("migratedRecords", migratedRecords);
|
|
|
result.put("migratedPlans", migratedPlans);
|
|
result.put("migratedPlans", migratedPlans);
|
|
|
- result.put("total", migratedFamilies + migratedParents + migratedChildren + migratedTeachers
|
|
|
|
|
|
|
+ result.put("total", migratedFamilies + migratedParents + migratedFamilyMemberren + migratedTeachers
|
|
|
+ migratedOrders + migratedResults + migratedRecords + migratedPlans);
|
|
+ migratedOrders + migratedResults + migratedRecords + migratedPlans);
|
|
|
if (!errors.isEmpty()) {
|
|
if (!errors.isEmpty()) {
|
|
|
result.put("errors", errors);
|
|
result.put("errors", errors);
|