|
@@ -17,6 +17,8 @@
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.csp.sentinel.util.StringUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -26,10 +28,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmDaDistribution;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmDaHospital;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmDaPharmacy;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTask;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.BatchDistributionExcelModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.BatchPharmacyExcelModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmDaDistributionMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmTaskContentMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDictItemService;
|
|
@@ -40,8 +46,10 @@ import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
|
|
|
import com.qunzhixinxi.hnqz.admin.util.MapUtil;
|
|
|
import com.qunzhixinxi.hnqz.common.core.util.R;
|
|
|
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -60,6 +68,7 @@ import java.util.stream.Collectors;
|
|
|
* @author gaoyanng
|
|
|
* @date 2020-06-25 23:35:42
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class WmDaDistributionServiceImpl extends ServiceImpl<WmDaDistributionMapper, WmDaDistribution> implements WmDaDistributionService {
|
|
@@ -706,4 +715,124 @@ public class WmDaDistributionServiceImpl extends ServiceImpl<WmDaDistributionMap
|
|
|
|
|
|
return wmDaDistribution;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量导入
|
|
|
+ *
|
|
|
+ * @param excelModelList 商业公司列表
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, String> batchByExcel(List<BatchDistributionExcelModel> excelModelList) {
|
|
|
+ // 变量
|
|
|
+ Map<String, String> errorMap = new HashMap<>();
|
|
|
+ List<WmDaDistribution> currentList = new ArrayList<>();
|
|
|
+
|
|
|
+ // 获取操作员
|
|
|
+ HnqzUser creator = SecurityUtils.getUser();
|
|
|
+
|
|
|
+ log.info("开始校验数据:{}", excelModelList);
|
|
|
+ // 业务值校验
|
|
|
+ Map<String, List<BatchDistributionExcelModel>> nameMap = excelModelList.stream()
|
|
|
+ .filter(excelModel -> StrUtil.isNotBlank(excelModel.getName()))
|
|
|
+ .collect(Collectors.groupingBy(BatchDistributionExcelModel::getName));
|
|
|
+
|
|
|
+ for (String nameStr : nameMap.keySet()) {
|
|
|
+ List<BatchDistributionExcelModel> excelModels = nameMap.get(nameStr);
|
|
|
+ if (excelModels.size() > 1) {
|
|
|
+ log.error("名称重复");
|
|
|
+ String idStr = excelModels.stream().map(BatchDistributionExcelModel::getNumber).collect(Collectors.joining(","));
|
|
|
+ errorMap(errorMap, "名称重复", idStr);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ BatchDistributionExcelModel excelModel = excelModels.get(0);
|
|
|
+
|
|
|
+ WmDaDistribution distribution = new WmDaDistribution();
|
|
|
+ // 校验名称
|
|
|
+ String name = StrUtil.cleanBlank(excelModel.getName());
|
|
|
+ if (StrUtil.isBlank(name)) {
|
|
|
+ log.error("名称为空");
|
|
|
+ errorMap(errorMap, "名称为空", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ distribution.setGsmc(name);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验地址
|
|
|
+ String address = StrUtil.cleanBlank(excelModel.getName());
|
|
|
+ if (StrUtil.isBlank(address)) {
|
|
|
+ log.error("地址为空");
|
|
|
+ errorMap(errorMap, "地址为空", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ distribution.setAddress(address);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 重复校验
|
|
|
+ int count = this.count(Wrappers.<WmDaDistribution>lambdaQuery()
|
|
|
+ .eq(WmDaDistribution::getGsmc, name)
|
|
|
+ .eq(WmDaDistribution::getDelFlag, DelEnum.NOT_DEL.val()));
|
|
|
+ if (count > 0) {
|
|
|
+ log.error("{} 已存在", name);
|
|
|
+ errorMap(errorMap, "名称已存在", excelModel.getNumber());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 记录正确的结果
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ distribution.setCreateTime(now);
|
|
|
+ distribution.setCreateUser(creator.getId());
|
|
|
+ // 根据地址转换经纬度
|
|
|
+ WmDaDistribution latAndLng = this.getLatAndLng(address);
|
|
|
+ if (latAndLng == null) {
|
|
|
+ log.error("{} 经纬度转换失败", name);
|
|
|
+ errorMap(errorMap, "经纬度转换失败", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ distribution.setProvince(latAndLng.getProvince());
|
|
|
+ distribution.setCity(latAndLng.getCity());
|
|
|
+ distribution.setArea(latAndLng.getArea());
|
|
|
+ }
|
|
|
+ // 公司名称
|
|
|
+ distribution.setGsgm(excelModel.getSize());
|
|
|
+ // 统一社会信用代码
|
|
|
+ distribution.setShyshxydm(excelModel.getCode());
|
|
|
+ // 公司注册地
|
|
|
+ distribution.setGszcd(excelModel.getRegisteredAddress());
|
|
|
+ // 注册资本
|
|
|
+ distribution.setZczb(excelModel.getRegisteredCapital());
|
|
|
+ // GSP证书编号
|
|
|
+ distribution.setGspzsbh(excelModel.getCertificateNumber());
|
|
|
+ // 法定代表人
|
|
|
+ distribution.setFrdb(excelModel.getLegalRepresentative());
|
|
|
+ // 药品信息化追溯体系
|
|
|
+ distribution.setMedicineTraceability(excelModel.getMedicineTraceability());
|
|
|
+ // 追溯体系介绍
|
|
|
+ distribution.setMedicineTraceabilityOther(excelModel.getMedicineTraceabilityDesc());
|
|
|
+ // 公司简介
|
|
|
+ distribution.setGsjj(excelModel.getCompanyProfile());
|
|
|
+ // 经营优势
|
|
|
+ distribution.setJyys(excelModel.getAdvantages());
|
|
|
+ currentList.add(distribution);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传结果
|
|
|
+ if (CollUtil.isEmpty(errorMap)) {
|
|
|
+ this.saveBatch(currentList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return errorMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 封装错误信息
|
|
|
+ *
|
|
|
+ * @param errorMap 记录错误信息map
|
|
|
+ * @param key 原因
|
|
|
+ * @param idStr 错误id
|
|
|
+ */
|
|
|
+ private void errorMap(Map<String, String> errorMap, String key, String idStr) {
|
|
|
+ if (errorMap.containsKey(key)) {
|
|
|
+ String val = errorMap.get(key);
|
|
|
+ idStr = String.join(";", val, idStr);
|
|
|
+ }
|
|
|
+ errorMap.put(key, idStr);
|
|
|
+ }
|
|
|
}
|