|
@@ -16,6 +16,7 @@
|
|
|
*/
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
@@ -23,11 +24,14 @@ import com.alibaba.csp.sentinel.util.StringUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.dto.UserDTO;
|
|
|
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.BatchPharmacyExcelModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmDaPharmacyMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmTaskContentMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
|
|
@@ -36,12 +40,16 @@ 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.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -52,6 +60,7 @@ import java.util.Map;
|
|
|
* @author pigx code generator
|
|
|
* @date 2020-09-23 21:17:34
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmDaPharmacy> implements WmDaPharmacyService {
|
|
@@ -435,6 +444,74 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 批量导入
|
|
|
+ *
|
|
|
+ * @param excelModelList 药店列表
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, String> batchByExcel(List<BatchPharmacyExcelModel> excelModelList) {
|
|
|
+
|
|
|
+ // 变量
|
|
|
+ Map<String, String> errorMap = new HashMap<>();
|
|
|
+ List<WmDaPharmacy> currentList = new ArrayList<>();
|
|
|
+
|
|
|
+ // 获取操作员
|
|
|
+ HnqzUser creator = SecurityUtils.getUser();
|
|
|
+
|
|
|
+ log.info("开始校验数据:{}", excelModelList);
|
|
|
+ // 业务值校验
|
|
|
+ for (BatchPharmacyExcelModel excelModel : excelModelList) {
|
|
|
+ WmDaPharmacy pharmacy = new WmDaPharmacy();
|
|
|
+ // 校验名称
|
|
|
+ String name = StrUtil.cleanBlank(excelModel.getName());
|
|
|
+ if (StrUtil.isBlank(name)) {
|
|
|
+ log.error("姓名为空");
|
|
|
+ errorMap(errorMap, "名称为空", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ pharmacy.setPharmacyName(name);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验地址
|
|
|
+ String address = StrUtil.cleanBlank(excelModel.getName());
|
|
|
+ if (StrUtil.isBlank(address)) {
|
|
|
+ log.error("地址为空");
|
|
|
+ errorMap(errorMap, "地址为空", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ pharmacy.setAddress(address);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 重复校验
|
|
|
+ int count = this.count(Wrappers.<WmDaPharmacy>lambdaQuery()
|
|
|
+ .eq(WmDaPharmacy::getPharmacyName, name)
|
|
|
+ .eq(WmDaPharmacy::getDelFlag, DelEnum.NOT_DEL.val()));
|
|
|
+ if (count > 0) {
|
|
|
+ log.error("{} 已存在", name);
|
|
|
+ errorMap(errorMap, "名称已存在", excelModel.getNumber());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 记录正确的结果
|
|
|
+ pharmacy.setProvince("");
|
|
|
+ pharmacy.setCity("");
|
|
|
+ pharmacy.setArea("");
|
|
|
+ //更新审核信息
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ pharmacy.setCreateTime(now);
|
|
|
+ pharmacy.setCreateUser(creator.getId());
|
|
|
+ // 根据地址转换经纬度
|
|
|
+ this.convertToLatAndLong(pharmacy);
|
|
|
+ currentList.add(pharmacy);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传结果
|
|
|
+ if (CollUtil.isEmpty(errorMap)) {
|
|
|
+ currentList.forEach(this::save);
|
|
|
+ }
|
|
|
+
|
|
|
+ return errorMap;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据地址转换经纬度
|
|
|
*
|
|
@@ -456,5 +533,19 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 封装错误信息
|
|
|
+ *
|
|
|
+ * @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);
|
|
|
+ }
|
|
|
|
|
|
}
|