Просмотр исходного кода

手动同步口袋助理会员

wjj 8 часов назад
Родитель
Сommit
9bdef1a727

+ 24 - 0
fs-company/src/main/java/com/fs/company/controller/his/FsImportMemberController.java

@@ -0,0 +1,24 @@
+package com.fs.company.controller.his;
+
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.his.service.IFsImportMemberService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/company/importMember")
+public class FsImportMemberController extends BaseController {
+
+    @Autowired
+    private IFsImportMemberService fsImportMemberService;
+
+
+    @PostMapping("/syncKdzlMember")
+    public AjaxResult syncKdzlMember(){
+        fsImportMemberService.syncKdzlMemberInfo();
+        return AjaxResult.success("口袋助理会员信息同步任务已启动,正在后台执行");
+    }
+}

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/IFsImportMemberService.java

@@ -71,4 +71,9 @@ public interface IFsImportMemberService extends IService<FsImportMember>{
      * 批量添加待销售认领客户信息
      * */
     int batchAddCompanyCustomer();
+
+    /**
+     * 同步口袋助理会员信息
+     */
+    void syncKdzlMemberInfo();
 }

+ 109 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsImportMemberServiceImpl.java

@@ -1,7 +1,6 @@
 package com.fs.his.service.impl;
 
 import java.io.IOException;
-import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -9,15 +8,22 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSON;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.his.dto.MemberExcelDTO;
 import com.fs.his.listenner.MemberImportListener;
+import com.fs.kdzl.dto.Custm;
+import com.fs.kdzl.dto.Property;
+import com.fs.kdzl.service.KdzlService;
 import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import com.fs.qw.mapper.FsCompanyCustomerMapper;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import com.fs.his.mapper.FsImportMemberMapper;
 import com.fs.his.domain.FsImportMember;
@@ -35,10 +41,16 @@ import org.springframework.web.multipart.MultipartFile;
 @Slf4j
 @Service
 public class FsImportMemberServiceImpl extends ServiceImpl<FsImportMemberMapper, FsImportMember> implements IFsImportMemberService {
-
+    Logger logger= LoggerFactory.getLogger(getClass());
     @Autowired
     private FsCompanyCustomerMapper fsCompanyCustomerMapper;
 
+    @Autowired
+    private FsImportMemberMapper importMemberMapper;
+
+    @Autowired
+    private KdzlService kdzlService;
+
     /**
      * 查询导入会员
      * 
@@ -215,4 +227,99 @@ public class FsImportMemberServiceImpl extends ServiceImpl<FsImportMemberMapper,
         // 6. 批量修改导入会员状态
         return baseMapper.batchUpdateCompletionStatus(allProcessedIds);
     }
+
+    @Override
+    @Async
+    public void syncKdzlMemberInfo() {
+        logger.info("开始同步会员信息...");
+        int totalCount = 0;
+
+        while (true) {
+            List<Custm> custms = kdzlService.exportCustomers();
+            logger.info("本次获取会员信息数量:{}", custms.size());
+
+            if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(custms)) {
+                logger.info("未获取到会员数据,同步结束");
+                break;
+            }
+
+            totalCount += custms.size();
+            logger.info("累计已同步会员数量:{}", totalCount);
+
+            for (Custm custm : custms) {
+                try {
+                    FsImportMember member = importMemberMapper.selectFsImportMemberByMemberId(custm.getCustmid());
+                    if (member == null) {
+                        member = new FsImportMember();
+                        member.setKdzlMemberId(custm.getCustmid());
+                        member.setKdzlMemberJson(JSON.toJSONString(custm));
+                        member.setMemberName(custm.getName());
+                        member.setCreateTime(new Date());
+
+                        if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(custm.getContacts())) {
+                            com.fs.kdzl.dto.Contact contact = custm.getContacts().get(0);
+                            if (contact != null && com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(contact.getMobiles())) {
+                                member.setMemberPhone(contact.getMobiles().get(0));
+                            }
+                        }
+
+                        member.setAddress(custm.getAddr());
+
+                        if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(custm.getProperties())) {
+                            for (Property property : custm.getProperties()) {
+                                switch (property.getProp_name()) {
+                                    case "现病史":
+                                        member.setPresentIllness(property.getProp_value());
+                                        break;
+                                    case "现用药情况":
+                                        member.setCurrentMedication(property.getProp_value());
+                                        break;
+                                    case "过敏史":
+                                        member.setAllergyHistory(property.getProp_value());
+                                        break;
+                                }
+                            }
+                        }
+                    } else {
+                        member.setKdzlMemberJson(JSON.toJSONString(custm));
+                        member.setUpdateTime(new Date());
+                        member.setStatus(0);
+
+                        if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(custm.getProperties())) {
+                            for (Property property : custm.getProperties()) {
+                                switch (property.getProp_name()) {
+                                    case "现病史":
+                                        member.setPresentIllness(property.getProp_value());
+                                        break;
+                                    case "现用药情况":
+                                        member.setCurrentMedication(property.getProp_value());
+                                        break;
+                                    case "过敏史":
+                                        member.setAllergyHistory(property.getProp_value());
+                                        break;
+                                }
+                            }
+                        }
+                    }
+
+                    if (member.getId() == null) {
+                        importMemberMapper.insertFsImportMember(member);
+                    } else {
+                        importMemberMapper.updateFsImportMember(member);
+                    }
+                } catch (Exception e) {
+                    log.error("同步会员信息失败,custmid: {}, 错误: {}", custm.getCustmid(), e.getMessage());
+                }
+            }
+
+            if (custms.size() < 2000) {
+                logger.info("本次获取数据量小于2000,所有会员数据已同步完毕");
+                break;
+            }
+
+            logger.info("本次获取数据量等于2000,继续获取下一页数据...");
+        }
+
+        logger.info("会员信息同步完成,总共同步数量:{}", totalCount);
+    }
 }