Эх сурвалжийг харах

Merge branch 'feat-20231031-newtasktype64'

lixuesong 1 жил өмнө
parent
commit
66ea14c73e
23 өөрчлөгдсөн 866 нэмэгдсэн , 103 устгасан
  1. 7 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java
  2. 41 6
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaDistributionController.java
  3. 49 4
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaHospitalController.java
  4. 57 7
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaPharmacyController.java
  5. 0 2
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmPayOffController.java
  6. 2 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmDaDistribution.java
  7. 2 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmDaHospital.java
  8. 2 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmDaPharmacy.java
  9. 5 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/input/WmScorePackageSettleInput.java
  10. 95 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/excel/BatchDistributionExcelModel.java
  11. 59 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/excel/BatchHospitalExcelModel.java
  12. 35 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/excel/BatchPharmacyExcelModel.java
  13. 0 9
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageMapper.java
  14. 8 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaDistributionService.java
  15. 10 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaHospitalService.java
  16. 9 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaPharmacyService.java
  17. 129 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaDistributionServiceImpl.java
  18. 130 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaHospitalServiceImpl.java
  19. 105 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaPharmacyServiceImpl.java
  20. 1 7
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java
  21. 1 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskContentServiceImpl.java
  22. 16 67
      hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageMapper.xml
  23. 103 0
      hnqz-upms/hnqz-upms-biz/src/test/java/com/qunzhixinxi/hnqz/admin/ManualImportSurveyInfoTest.java

+ 7 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -273,6 +273,13 @@ public class ApiController {
 			connfigMap.put("56", getTaskContentConfigByTaskTypeId("56"));
 			// 57首营管理-药店
 			connfigMap.put("57", getTaskContentConfigByTaskTypeId("57"));
+		} else if ("1".equals(taskTypeId) || "2".equals(taskTypeId) || "3".equals(taskTypeId) || "4".equals(taskTypeId) || "64".equals(taskTypeId)) {
+			// 1,医院科室推广会 2,区域学术沙龙 3,城市卫星会 4,省级学科年会 64,线上科室会
+			connfigMap.put("1", getTaskContentConfigByTaskTypeId("1"));
+			connfigMap.put("2", getTaskContentConfigByTaskTypeId("2"));
+			connfigMap.put("3", getTaskContentConfigByTaskTypeId("3"));
+			connfigMap.put("4", getTaskContentConfigByTaskTypeId("4"));
+			connfigMap.put("64", getTaskContentConfigByTaskTypeId("64"));
 		} else {
 			connfigMap = getTaskContentConfigByTaskTypeId(taskTypeId);
 		}

+ 41 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaDistributionController.java

@@ -17,26 +17,27 @@
 
 package com.qunzhixinxi.hnqz.admin.controller;
 
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.pig4cloud.plugin.excel.annotation.RequestExcel;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaDistribution;
 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.service.SysDictItemService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDistributionService;
-import com.qunzhixinxi.hnqz.admin.service.WmDaHospitalService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 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.log.annotation.SysLog;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -50,6 +51,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -60,6 +62,7 @@ import java.util.Map;
  * @author gaoyanng
  * @date 2020-06-25 23:35:42
  */
+@Slf4j
 @RestController
 @AllArgsConstructor
 @RequestMapping("/wmdadistribution")
@@ -68,8 +71,6 @@ public class WmDaDistributionController {
 
 	private final WmDaDistributionService wmDaDistributionService;
 
-	private final WmDaHospitalService wmDaHospitalService;
-
 	private final WmTaskService wmTaskService;
 
 	private final WmTaskContentService wmTaskContentService;
@@ -326,4 +327,38 @@ public class WmDaDistributionController {
 		return wmDaDistributionService.updateByApproval(map);
 
 	}
+
+	/**
+	 * 商业公司批量导入
+	 *
+	 * @param excelModelList 药店列表
+	 * @return {@link R}<{@link ?}> 结果
+	 */
+	@SysLog("商业公司批量导入")
+	@PostMapping(value = "/batch")
+	public R<?> batchImport(@RequestExcel List<BatchDistributionExcelModel> excelModelList) {
+		// 参数校验
+		if (CollectionUtils.isEmpty(excelModelList)) {
+			log.error("空报表,不能上传");
+			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);
+		}
+	}
 }

+ 49 - 4
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaHospitalController.java

@@ -17,29 +17,39 @@
 
 package com.qunzhixinxi.hnqz.admin.controller;
 
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.pig4cloud.plugin.excel.annotation.RequestExcel;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaHospital;
 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.service.WmDaHospitalService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 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.log.annotation.SysLog;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -50,6 +60,7 @@ import java.util.Map;
  * @author gaoyanng
  * @date 2020-06-25 23:35:42
  */
+@Slf4j
 @RestController
 @AllArgsConstructor
 @RequestMapping("/wmdahospital" )
@@ -293,4 +304,38 @@ public class WmDaHospitalController {
 		wmDaHospitalService.parseAddress();
 		return R.ok();
 	}
+
+	/**
+	 * 医院批量导入
+	 *
+	 * @param excelModelList 药店列表
+	 * @return {@link R}<{@link ?}> 结果
+	 */
+	@SysLog("医院批量导入")
+	@PostMapping(value = "/batch")
+	public R<?> batchImport(@RequestExcel List<BatchHospitalExcelModel> excelModelList) {
+		// 参数校验
+		if (CollectionUtils.isEmpty(excelModelList)) {
+			log.error("空报表,不能上传");
+			return R.failed("空报表,不能上传");
+		}
+
+		// 实际的处理业务
+		Map<String, String> errorMap = wmDaHospitalService.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);
+		}
+	}
 }

+ 57 - 7
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaPharmacyController.java

@@ -17,23 +17,38 @@
 
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qunzhixinxi.hnqz.admin.entity.*;
+import com.pig4cloud.plugin.excel.annotation.RequestExcel;
+import com.qunzhixinxi.hnqz.admin.entity.WmDaPharmacy;
+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.service.WmDaPharmacyService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
-import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.security.access.prepost.PreAuthorize;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -44,6 +59,7 @@ import java.util.Map;
  * @author pigx code generator
  * @date 2020-09-23 21:17:34
  */
+@Slf4j
 @RestController
 @AllArgsConstructor
 @RequestMapping("/wmdapharmacy")
@@ -252,4 +268,38 @@ public class WmDaPharmacyController {
 		return wmDaPharmacyService.updateByapproval(map);
 	}
 
+	/**
+	 * 药店批量导入
+	 *
+	 * @param excelModelList 药店列表
+	 * @return {@link R}<{@link ?}> 结果
+	 */
+	@SysLog("药店批量导入")
+	@PostMapping(value = "/batch")
+	public R<?> batchImport(@RequestExcel List<BatchPharmacyExcelModel> excelModelList) {
+		// 参数校验
+		if (CollectionUtils.isEmpty(excelModelList)) {
+			log.error("空报表,不能上传");
+			return R.failed("空报表,不能上传");
+		}
+
+		// 实际的处理业务
+		Map<String, String> errorMap = wmDaPharmacyService.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);
+		}
+	}
+
 }

+ 0 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmPayOffController.java

@@ -15,7 +15,6 @@ import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
-import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleInput;
@@ -27,7 +26,6 @@ import com.qunzhixinxi.hnqz.admin.enums.PackageFinishStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SettleStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
-import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptSubService;
 import com.qunzhixinxi.hnqz.admin.service.SysDictItemService;

+ 2 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmDaDistribution.java

@@ -19,6 +19,7 @@ package com.qunzhixinxi.hnqz.admin.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.annotations.ApiModel;
@@ -175,6 +176,7 @@ public class WmDaDistribution extends Model<WmDaDistribution> {
 	/**
 	 * 是否删除
 	 */
+	@TableLogic
 	@ApiModelProperty(value = "是否删除")
 	private Integer delFlag;
 	/**

+ 2 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmDaHospital.java

@@ -18,6 +18,7 @@
 package com.qunzhixinxi.hnqz.admin.entity;
 
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.annotations.ApiModel;
@@ -188,6 +189,7 @@ private static final long serialVersionUID = 1L;
     /**
      * 是否删除
      */
+	@TableLogic
     @ApiModelProperty(value="是否删除")
     private String delFlag;
     /**

+ 2 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmDaPharmacy.java

@@ -18,6 +18,7 @@
 package com.qunzhixinxi.hnqz.admin.entity;
 
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.annotations.ApiModel;
@@ -89,6 +90,7 @@ private static final long serialVersionUID = 1L;
     /**
      * 是否删除
      */
+	@TableLogic
     @ApiModelProperty(value="是否删除")
     private String delFlag;
     /**

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/input/WmScorePackageSettleInput.java

@@ -103,4 +103,9 @@ public class WmScorePackageSettleInput implements Serializable {
 	 */
 	private String userNames;
 
+	/**
+	 * 结算状态
+	 */
+	private String settleStatus;
+
 }

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

@@ -0,0 +1,95 @@
+package com.qunzhixinxi.hnqz.admin.entity.model.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 商业公司excel批量导入model
+ *
+ * @author lixuesong
+ * @date 2023/11/01
+ */
+@Data
+public class BatchDistributionExcelModel implements Serializable {
+	private static final long serialVersionUID = 7791901612996151931L;
+
+	/**
+	 * 行编号
+	 */
+	@ExcelProperty(index = 0)
+	private String number;
+
+	/**
+     * 名称
+	 */
+	@ExcelProperty(index = 1)
+	private String name;
+
+    /**
+     * 地址
+	 */
+	@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;
+}

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

@@ -0,0 +1,59 @@
+package com.qunzhixinxi.hnqz.admin.entity.model.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 医院excel批量导入model
+ *
+ * @author lixuesong
+ * @date 2023/11/01
+ */
+@Data
+public class BatchHospitalExcelModel implements Serializable {
+	private static final long serialVersionUID = -8891226221432742335L;
+
+	/**
+	 * 行编号
+	 */
+	@ExcelProperty(index = 0)
+	private String number;
+
+	/**
+     * 名称
+	 */
+	@ExcelProperty(index = 1)
+	private String name;
+
+    /**
+     * 地址
+	 */
+	@ExcelProperty(index = 2)
+	private String address;
+
+	/**
+	 * 医院规模
+	 */
+	@ExcelProperty(index = 3)
+	private String grade;
+
+	/**
+	 * 医院性质
+	 */
+	@ExcelProperty(index = 4)
+	private String type;
+
+	/**
+	 * 医院官网
+	 */
+	@ExcelProperty(index = 5)
+	private String website;
+
+	/**
+	 * 院病床总数(张)
+	 */
+	@ExcelProperty(index = 6)
+	private String bedsNumber;
+}

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

@@ -0,0 +1,35 @@
+package com.qunzhixinxi.hnqz.admin.entity.model.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 药店excel批量导入model
+ *
+ * @author lixuesong
+ * @date 2023/11/01
+ */
+@Data
+public class BatchPharmacyExcelModel implements Serializable {
+	private static final long serialVersionUID = 463822341690953480L;
+
+	/**
+	 * 行编号
+	 */
+	@ExcelProperty(index = 0)
+	private String number;
+
+	/**
+	 * 名称
+	 */
+	@ExcelProperty(index = 1)
+	private String name;
+
+	/**
+	 * 地址
+	 */
+	@ExcelProperty(index = 2)
+	private String address;
+}

+ 0 - 9
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageMapper.java

@@ -145,15 +145,6 @@ public interface WmScorePackageMapper extends DataScopeMapper<WmScorePackage> {
 	 */
 	Page<WmScorePackageSettleOutput> listPackageSettleList(Page<WmScorePackageSettleOutput> page, @Param("query") WmScorePackageSettleInput input);
 
-	/**
-	 * 积分包结算管理2
-	 *
-	 * @param page
-	 * @param input
-	 * @return
-	 */
-	Page<WmScorePackageSettleOutput> listPackageSettleList2(Page<WmScorePackageSettleOutput> page, @Param("query") WmScorePackageSettleInput input);
-
 	/**
 	 * 结算包结算列表
 	 *

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

+ 10 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaHospitalService.java

@@ -20,6 +20,8 @@ package com.qunzhixinxi.hnqz.admin.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaHospital;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.BatchHospitalExcelModel;
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.BatchPharmacyExcelModel;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 
 import java.util.List;
@@ -58,4 +60,12 @@ public interface WmDaHospitalService extends IService<WmDaHospital> {
 	 */
 	void parseAddress();
 
+	/**
+	 * 批量导入
+	 *
+	 * @param excelModelList 医院列表
+	 * @return 结果
+	 */
+	Map<String, String> batchByExcel(List<BatchHospitalExcelModel> excelModelList);
+
 }

+ 9 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaPharmacyService.java

@@ -19,6 +19,7 @@ package com.qunzhixinxi.hnqz.admin.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaPharmacy;
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.BatchPharmacyExcelModel;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 
 import java.util.List;
@@ -50,4 +51,12 @@ public interface WmDaPharmacyService extends IService<WmDaPharmacy> {
 	 * 批量转换经纬度
 	 */
 	void parseAddress();
+
+	/**
+	 * 批量导入
+	 *
+	 * @param excelModelList 药店列表
+	 * @return 结果
+	 */
+    Map<String, String> batchByExcel(List<BatchPharmacyExcelModel> 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);
+	}
 }

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

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

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

@@ -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,15 +40,20 @@ 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;
+import java.util.stream.Collectors;
 
 /**
  * 档案-药店
@@ -52,6 +61,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 +445,87 @@ 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);
+		// 业务值校验
+		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);
+
+			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)) {
+			this.saveBatch(currentList);
+		}
+
+		return errorMap;
+	}
+
 	/**
 	 * 根据地址转换经纬度
 	 *
@@ -456,5 +547,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);
+	}
 
 }

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

@@ -1820,13 +1820,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 	 */
 	@Override
 	public Page<WmScorePackageSettleOutput> listPackageSettleList(Page<WmScorePackageSettleOutput> page, WmScorePackageSettleInput input) {
-		Page<WmScorePackageSettleOutput> settleListPage;
-
-		if (StrUtil.isNotBlank(input.getUserNames())) {
-			settleListPage = wmScorePackageMapper.listPackageSettleList2(page, input);
-		} else {
-			settleListPage = wmScorePackageMapper.listPackageSettleList(page, input);
-		}
+		Page<WmScorePackageSettleOutput> settleListPage = wmScorePackageMapper.listPackageSettleList(page, input);
 
 		List<WmScorePackageSettleOutput> settleList = settleListPage.getRecords();
 		for (WmScorePackageSettleOutput ouPut : settleList) {

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskContentServiceImpl.java

@@ -355,7 +355,7 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 			List<String> taskTypeIds = null;
 			switch (taskTypeId) {
 				case "1":
-					taskTypeIds = CollectionUtil.toList("1", "2", "3", "4");
+					taskTypeIds = CollectionUtil.toList("1", "2", "3", "4", "64");
 					break;
 				case "19":
 					taskTypeIds = CollectionUtil.toList("19");

+ 16 - 67
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageMapper.xml

@@ -1414,68 +1414,6 @@
 
 	<!-- 积分包结算(分页) -->
 	<select id="listPackageSettleList" resultType="com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput">
-		SELECT p.id,
-		       d.name packageEntName,
-		       p.score_package_name,
-		       p.create_time,
-		       p.package_status,
-			   p.package_finish_status,
-			   p.settle_status,
-		       p.invoice_category,
-		       p.settle_amount ,
-		       p.package_type1,
-		       p.score,
-		       p.package_type2,
-		       p.sub_type,
-		       p.source_type,
-		       p.oms_order_sn
-		FROM wm_score_package p, sys_dept d
-		WHERE
-		p.send_package_dept_id = d.dept_id
-		<if test="query.mahSettleDeptId != null">
-			AND p.mah_settle_dept_id = #{query.mahSettleDeptId}
-		</if>
-		<if test="query.mahSettleStep != null">
-			AND p.mah_settle_step = #{query.mahSettleStep.type}
-		</if>
-		<if test="query.sendPackageDeptId != null and query.sendPackageDeptId != ''">
-			AND p.send_package_dept_id= #{query.sendPackageDeptId}
-		</if>
-		<if test="query.scorePackageName != null and query.scorePackageName != ''">
-			AND p.score_package_name like CONCAT('%',#{query.scorePackageName},'%')
-		</if>
-		<if test="query.belongDate != null and query.belongDate != ''">
-			AND p.belong_date= #{query.belongDate}
-		</if>
-		<if test="query.typeid != null and query.typeid != ''">
-			AND p.typeid in (${query.typeid})
-		</if>
-		<if test="query.packageType1 != null and query.packageType1 != ''">
-			AND p.package_type1= #{query.packageType1}
-		</if>
-		<if test="query.packageFinishStatus != null and query.packageFinishStatus != ''">
-			AND p.package_finish_status= #{query.packageFinishStatus}
-		</if>
-		<if test="query.packageType2 != null and query.packageType2 != ''">
-			AND p.package_type2= #{query.packageType2}
-		</if>
-		<if test="query.settleFlag != null and query.settleFlag != ''">
-			AND p.settle_flag= #{query.settleFlag}
-		</if>
-		<if test="query.subType != null and query.subType != ''">
-			AND p.sub_type= #{query.subType}
-		</if>
-		ORDER BY
-		<if test="query.mahSettleStep != null">
-			p.mah_settle_time DESC
-		</if>
-		<if test="query.mahSettleStep == null">
-			p.create_time DESC
-		</if>
-	</select>
-
-	<!-- 积分包结算(分页) -->
-	<select id="listPackageSettleList2" resultType="com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput">
 		SELECT distinct
 		    p.id,
 			d.name packageEntName,
@@ -1493,8 +1431,10 @@
 			p.source_type,
 			p.oms_order_sn
 		FROM wm_score_package p left join sys_dept d on p.send_package_dept_id = d.dept_id
-		left join wm_score_package_status ps on p.id = ps.package_id
-		left join sys_user su on ps.user_id = su.user_id
+		<if test="query.userNames != null">
+			left join wm_score_package_status ps on p.id = ps.package_id
+			left join sys_user su on ps.user_id = su.user_id
+		</if>
 		<where>
 			<if test="query.mahSettleDeptId != null">
 				AND p.mah_settle_dept_id = #{query.mahSettleDeptId}
@@ -1502,6 +1442,9 @@
 			<if test="query.mahSettleStep != null">
 				AND p.mah_settle_step = #{query.mahSettleStep.type}
 			</if>
+			<if test="query.packageEntName != null and query.packageEntName != ''">
+				AND d.name like CONCAT('%',#{query.packageEntName},'%')
+			</if>
 			<if test="query.sendPackageDeptId != null and query.sendPackageDeptId != ''">
 				AND p.send_package_dept_id= #{query.sendPackageDeptId}
 			</if>
@@ -1529,9 +1472,15 @@
 			<if test="query.subType != null and query.subType != ''">
 				AND p.sub_type= #{query.subType}
 			</if>
-			 <if test="query.subjectLocation != null and query.subjectLocation != ''">
-		        AND p.sub_location = #{query.subjectLocation}
-			 </if>
+			<if test="query.subjectLocation != null">
+		        AND p.sub_location = #{query.subjectLocation.type}
+			</if>
+			<if test="query.invoiceCategory != null">
+				AND p.invoice_category = #{query.invoiceCategory}
+			</if>
+			<if test="query.settleStatus != null">
+				AND p.settle_status = #{query.settleStatus}
+			</if>
 			<if test="query.userNames != null">
 				AND su.realname like CONCAT('%',#{query.userNames},'%')
 			</if>

+ 103 - 0
hnqz-upms/hnqz-upms-biz/src/test/java/com/qunzhixinxi/hnqz/admin/ManualImportSurveyInfoTest.java

@@ -0,0 +1,103 @@
+package com.qunzhixinxi.hnqz.admin;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.builder.ExcelReaderBuilder;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.entity.WmDaPharmacy;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
+import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
+import com.qunzhixinxi.hnqz.admin.util.MapUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/**
+ * 手动导入调查信息测试
+ *
+ * @author lixuesong
+ * @date 2023/09/27
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest(classes = {HnqzAdminApplication.class})
+public class ManualImportSurveyInfoTest {
+
+    @Autowired
+    private WmDaPharmacyService wmDaPharmacyService;
+
+//    @Test
+    public void testImport() {
+        ExcelReaderBuilder readerBuilder = EasyExcel.read("D:\\li312\\Desktop\\零售终端门店资料1027.xlsx");
+        List<Object> objects = readerBuilder.doReadAllSync();
+        System.out.println(objects);
+
+		List<WmDaPharmacy> pharmacyList = new ArrayList<>();
+        for (int i = 1; i < objects.size(); i++) {
+
+//            try {
+//                Thread.sleep(200);
+//            } catch (InterruptedException e) {
+//                throw new RuntimeException(e);
+//            }
+
+            LinkedHashMap<Integer, String> map = (LinkedHashMap) objects.get(i);
+            String name = map.get(2);
+            String address = map.get(4);
+
+			int count = wmDaPharmacyService.count(Wrappers.<WmDaPharmacy>lambdaQuery()
+					.eq(WmDaPharmacy::getPharmacyName, name)
+					.eq(WmDaPharmacy::getDelFlag, DelEnum.NOT_DEL.val()));
+			if (count > 0) {
+				System.out.println(name + " 已存在,自动跳过");
+			}
+
+			WmDaPharmacy wmDaPharmacy = new WmDaPharmacy();
+            wmDaPharmacy.setPharmacyName(name);
+            wmDaPharmacy.setAddress(address);
+            wmDaPharmacy.setProvince("");
+            wmDaPharmacy.setCity("");
+            wmDaPharmacy.setArea("");
+            //更新审核信息
+            LocalDateTime now = LocalDateTime.now();
+            wmDaPharmacy.setCreateTime(now);
+            wmDaPharmacy.setCreateUser(-1);
+            // 根据地址转换经纬度
+            this.convertToLatAndLong(wmDaPharmacy);
+
+            System.out.println(String.format("第%s条,%s-%s-%s", i, name, address, wmDaPharmacy));
+
+			pharmacyList.add(wmDaPharmacy);
+        }
+		wmDaPharmacyService.saveBatch(pharmacyList);
+
+
+    }
+
+    /**
+     * 根据地址转换经纬度
+     *
+     * @param wmDaPharmacy
+     */
+    private void convertToLatAndLong(WmDaPharmacy wmDaPharmacy) {
+        String fullAddress = wmDaPharmacy.getProvince() + wmDaPharmacy.getCity() + wmDaPharmacy.getArea()
+                + wmDaPharmacy.getAddress();
+        JSONObject jsonObject = MapUtil.getLatAndLogByName(fullAddress);
+        if (jsonObject != null) {
+            wmDaPharmacy.setProvince(jsonObject.getString("province"));
+            wmDaPharmacy.setCity(jsonObject.getString("city"));
+            wmDaPharmacy.setArea(jsonObject.getString("district"));
+            String location = jsonObject.getString("location");
+            if (null != location && location.split(",").length > 0) {
+                wmDaPharmacy.setLongitude(location.split(",")[0]);
+                wmDaPharmacy.setLatitude(location.split(",")[1]);
+            }
+        }
+    }
+}