|
|
@@ -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);
|
|
|
+ }
|
|
|
}
|