Explorar o código

feat: 商业公司批量导入

lixuesong hai 1 ano
pai
achega
0ebf127575

+ 17 - 19
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaDistributionController.java

@@ -329,7 +329,7 @@ public class WmDaDistributionController {
 	}
 
 	/**
-	 * 商业公司批量导入 TODO
+	 * 商业公司批量导入
 	 *
 	 * @param excelModelList 药店列表
 	 * @return {@link R}<{@link ?}> 结果
@@ -343,24 +343,22 @@ public class WmDaDistributionController {
 			return R.failed("空报表,不能上传");
 		}
 
-//		// 实际的处理业务
-//		Map<String, String> errorMap = wmDaDistributionService.batchByExcel(excelModelList);
-//
-//		// 返回上传结果
-//		Map<String, Object> result = new HashMap<>(3);
-//		if (CollectionUtil.isEmpty(errorMap)) {
-//			result.put("code", "SUCCESS");
-//			result.put("message", "上传成功");
-//			result.put("data", null);
-//			return R.ok(result);
-//		} else {
-//			log.error("上传数据错误,{}", JSONUtil.toJsonStr(errorMap));
-//			result.put("code", "FAILURE");
-//			result.put("message", "上传数据错误");
-//			result.put("data", errorMap);
-//			return R.failed(result);
-//		}
+		// 实际的处理业务
+		Map<String, String> errorMap = wmDaDistributionService.batchByExcel(excelModelList);
 
-		return R.ok();
+		// 返回上传结果
+		Map<String, Object> result = new HashMap<>(3);
+		if (CollectionUtil.isEmpty(errorMap)) {
+			result.put("code", "SUCCESS");
+			result.put("message", "上传成功");
+			result.put("data", null);
+			return R.ok(result);
+		} else {
+			log.error("上传数据错误,{}", JSONUtil.toJsonStr(errorMap));
+			result.put("code", "FAILURE");
+			result.put("message", "上传数据错误");
+			result.put("data", errorMap);
+			return R.failed(result);
+		}
 	}
 }

+ 60 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/excel/BatchDistributionExcelModel.java

@@ -32,4 +32,64 @@ public class BatchDistributionExcelModel implements Serializable {
 	 */
 	@ExcelProperty(index = 2)
 	private String address;
+
+	/**
+	 * 公司规模
+	 */
+	@ExcelProperty(index = 3)
+	private String size;
+
+	/**
+	 * 统一社会信用代码
+	 */
+	@ExcelProperty(index = 4)
+	private String code;
+
+	/**
+	 * 公司注册地
+	 */
+	@ExcelProperty(index = 5)
+	private String registeredAddress;
+
+	/**
+	 * 注册资本
+	 */
+	@ExcelProperty(index = 6)
+	private String registeredCapital;
+
+	/**
+	 * GSP证书编号
+	 */
+	@ExcelProperty(index = 7)
+	private String certificateNumber;
+
+	/**
+	 * 法定代表人
+	 */
+	@ExcelProperty(index = 8)
+	private String legalRepresentative;
+
+	/**
+	 * 药品信息化追溯体系
+	 */
+	@ExcelProperty(index = 9)
+	private String medicineTraceability;
+
+	/**
+	 * 药品信息化追溯体系介绍
+	 */
+	@ExcelProperty(index = 10)
+	private String medicineTraceabilityDesc;
+
+	/**
+	 * 公司简介
+	 */
+	@ExcelProperty(index = 11)
+	private String companyProfile;
+
+	/**
+	 * 经营优势
+	 */
+	@ExcelProperty(index = 12)
+	private String advantages;
 }

+ 12 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/excel/BatchHospitalExcelModel.java

@@ -44,4 +44,16 @@ public class BatchHospitalExcelModel implements Serializable {
 	 */
 	@ExcelProperty(index = 4)
 	private String type;
+
+	/**
+	 * 医院官网
+	 */
+	@ExcelProperty(index = 5)
+	private String website;
+
+	/**
+	 * 院病床总数(张)
+	 */
+	@ExcelProperty(index = 6)
+	private String bedsNumber;
 }

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaDistributionService.java

@@ -20,6 +20,7 @@ package com.qunzhixinxi.hnqz.admin.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaDistribution;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.BatchDistributionExcelModel;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 
 import java.util.List;
@@ -48,4 +49,11 @@ public interface WmDaDistributionService extends IService<WmDaDistribution> {
 	 */
     void parseAddress();
 
+	/**
+	 * 批量导入
+	 *
+	 * @param excelModelList 商业公司列表
+	 * @return 结果
+	 */
+	Map<String, String> batchByExcel(List<BatchDistributionExcelModel> excelModelList);
 }

+ 129 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaDistributionServiceImpl.java

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

+ 22 - 7
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaHospitalServiceImpl.java

@@ -787,13 +787,27 @@ public class WmDaHospitalServiceImpl extends ServiceImpl<WmDaHospitalMapper, WmD
 		HnqzUser creator = SecurityUtils.getUser();
 
 		log.info("开始校验数据:{}", excelModelList);
+		Map<String, List<BatchHospitalExcelModel>> nameMap = excelModelList.stream()
+				.filter(excelModel -> StrUtil.isNotBlank(excelModel.getName()))
+				.collect(Collectors.groupingBy(BatchHospitalExcelModel::getName));
+
 		// 业务值校验
-		for (BatchHospitalExcelModel excelModel : excelModelList) {
+		for (String nameStr : nameMap.keySet()) {
+			List<BatchHospitalExcelModel> excelModels = nameMap.get(nameStr);
+			if (excelModels.size() > 1) {
+				log.error("名称重复");
+				String idStr = excelModels.stream().map(BatchHospitalExcelModel::getNumber).collect(Collectors.joining(","));
+				errorMap(errorMap, "名称重复", idStr);
+				continue;
+			}
+
+			BatchHospitalExcelModel excelModel = excelModels.get(0);
+
 			WmDaHospital hospital = new WmDaHospital();
 			// 校验名称
 			String name = StrUtil.cleanBlank(excelModel.getName());
 			if (StrUtil.isBlank(name)) {
-				log.error("序号{} 姓名为空", excelModel.getNumber());
+				log.error("序号{} 名为空", excelModel.getNumber());
 				errorMap(errorMap, "名称为空", excelModel.getNumber());
 			} else {
 				hospital.setYymc(name);
@@ -836,7 +850,6 @@ public class WmDaHospitalServiceImpl extends ServiceImpl<WmDaHospitalMapper, WmD
 			}
 
 			// 记录正确的结果
-			//更新审核信息
 			LocalDateTime now = LocalDateTime.now();
 			hospital.setCreateTime(now);
 			hospital.setCreateUser(creator.getId());
@@ -845,11 +858,13 @@ public class WmDaHospitalServiceImpl extends ServiceImpl<WmDaHospitalMapper, WmD
 			if (latAndLng == null) {
 				log.error("{} 经纬度转换失败", name);
 				errorMap(errorMap, "经纬度转换失败", excelModel.getNumber());
+			} else {
+				hospital.setProvince(latAndLng.getProvince());
+				hospital.setCity(latAndLng.getCity());
+				hospital.setArea(latAndLng.getArea());
 			}
-
-			hospital.setProvince(latAndLng.getProvince());
-			hospital.setCity(latAndLng.getCity());
-			hospital.setArea(latAndLng.getArea());
+			hospital.setWebsite(excelModel.getWebsite());
+			hospital.setYbczs(excelModel.getBedsNumber());
 
 			currentList.add(hospital);
 		}

+ 15 - 16
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaPharmacyServiceImpl.java

@@ -463,26 +463,26 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 
 		log.info("开始校验数据:{}", excelModelList);
 		// 业务值校验
-//		Map<String, List<BatchPharmacyExcelModel>> nameMap = excelModelList.stream()
-//				.filter(excelModel -> StrUtil.isNotBlank(excelModel.getName()))
-//				.collect(Collectors.groupingBy(BatchPharmacyExcelModel::getName));
-//		if (CollUtil.isEmpty(nameMap)) {
-//			log.error("数据为空");
-//			errorMap(errorMap, "数据为空", "");
-//			return errorMap;
-//		}
-//		if (nameMap.values().stream().anyMatch(modelList -> modelList.size() > 1)) {
-//			log.error("数据重复");
-//			errorMap(errorMap, "数据重复", "");
-//			return errorMap;
-//		}
+		Map<String, List<BatchPharmacyExcelModel>> nameMap = excelModelList.stream()
+				.filter(excelModel -> StrUtil.isNotBlank(excelModel.getName()))
+				.collect(Collectors.groupingBy(BatchPharmacyExcelModel::getName));
+
+		for (String nameStr : nameMap.keySet()) {
+			List<BatchPharmacyExcelModel> excelModels = nameMap.get(nameStr);
+			if (excelModels.size() > 1) {
+				log.error("名称重复");
+				String idStr = excelModels.stream().map(BatchPharmacyExcelModel::getNumber).collect(Collectors.joining(","));
+				errorMap(errorMap, "名称重复", idStr);
+				continue;
+			}
+
+			BatchPharmacyExcelModel excelModel = excelModels.get(0);
 
-		for (BatchPharmacyExcelModel excelModel : excelModelList) {
 			WmDaPharmacy pharmacy = new WmDaPharmacy();
 			// 校验名称
 			String name = StrUtil.cleanBlank(excelModel.getName());
 			if (StrUtil.isBlank(name)) {
-				log.error("名为空");
+				log.error("名为空");
 				errorMap(errorMap, "名称为空", excelModel.getNumber());
 			} else {
 				pharmacy.setPharmacyName(name);
@@ -510,7 +510,6 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 			pharmacy.setProvince("");
 			pharmacy.setCity("");
 			pharmacy.setArea("");
-			//更新审核信息
 			LocalDateTime now = LocalDateTime.now();
 			pharmacy.setCreateTime(now);
 			pharmacy.setCreateUser(creator.getId());