|
@@ -16,6 +16,8 @@
|
|
|
*/
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
+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;
|
|
@@ -24,10 +26,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
|
|
|
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.BatchHospitalExcelModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.BatchPharmacyExcelModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmDaHospitalMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmTaskContentMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDictItemService;
|
|
@@ -38,8 +44,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;
|
|
@@ -58,6 +66,7 @@ import java.util.stream.Collectors;
|
|
|
* @author gaoyanng
|
|
|
* @date 2020-06-25 23:35:42
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class WmDaHospitalServiceImpl extends ServiceImpl<WmDaHospitalMapper, WmDaHospital> implements WmDaHospitalService {
|
|
@@ -761,4 +770,125 @@ public class WmDaHospitalServiceImpl extends ServiceImpl<WmDaHospitalMapper, WmD
|
|
|
return wmDaHospital;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 批量导入
|
|
|
+ *
|
|
|
+ * @param excelModelList 医院列表
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, String> batchByExcel(List<BatchHospitalExcelModel> excelModelList) {
|
|
|
+
|
|
|
+ // 变量
|
|
|
+ Map<String, String> errorMap = new HashMap<>();
|
|
|
+ List<WmDaHospital> currentList = new ArrayList<>();
|
|
|
+
|
|
|
+ // 获取操作员
|
|
|
+ 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 (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());
|
|
|
+ errorMap(errorMap, "名称为空", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ hospital.setYymc(name);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验地址
|
|
|
+ String address = StrUtil.cleanBlank(excelModel.getName());
|
|
|
+ if (StrUtil.isBlank(address)) {
|
|
|
+ log.error("{} 地址为空", name);
|
|
|
+ errorMap(errorMap, "地址为空", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ hospital.setAddress(address);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验医院规模
|
|
|
+ String grade = StrUtil.cleanBlank(excelModel.getGrade());
|
|
|
+ if (StrUtil.isBlank(grade)) {
|
|
|
+ log.error("{} 医院规模为空", name);
|
|
|
+ errorMap(errorMap, "医院规模为空", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ hospital.setYygm(grade);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验医院性质
|
|
|
+ String type = StrUtil.cleanBlank(excelModel.getType());
|
|
|
+ if (StrUtil.isBlank(type)) {
|
|
|
+ log.error("{} 医院性质为空", name);
|
|
|
+ errorMap(errorMap, "医院性质为空", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ hospital.setYyxz(type);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 重复校验
|
|
|
+ int count = this.count(Wrappers.<WmDaHospital>lambdaQuery()
|
|
|
+ .eq(WmDaHospital::getYymc, name)
|
|
|
+ .eq(WmDaHospital::getDelFlag, DelEnum.NOT_DEL.val()));
|
|
|
+ if (count > 0) {
|
|
|
+ log.error("{} 已存在", name);
|
|
|
+ errorMap(errorMap, "名称已存在", excelModel.getNumber());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 记录正确的结果
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ hospital.setCreateTime(now);
|
|
|
+ hospital.setCreateUser(creator.getId());
|
|
|
+ // 根据地址转换经纬度
|
|
|
+ WmDaHospital latAndLng = this.getLatAndLng(address);
|
|
|
+ if (latAndLng == null) {
|
|
|
+ log.error("{} 经纬度转换失败", name);
|
|
|
+ errorMap(errorMap, "经纬度转换失败", excelModel.getNumber());
|
|
|
+ } else {
|
|
|
+ hospital.setProvince(latAndLng.getProvince());
|
|
|
+ hospital.setCity(latAndLng.getCity());
|
|
|
+ hospital.setArea(latAndLng.getArea());
|
|
|
+ }
|
|
|
+ hospital.setWebsite(excelModel.getWebsite());
|
|
|
+ hospital.setYbczs(excelModel.getBedsNumber());
|
|
|
+
|
|
|
+ currentList.add(hospital);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传结果
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|