From 2a934daeb805d64a60100eb6697c32cb7a50aedb Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Fri, 24 May 2024 17:17:44 +0800
Subject: [PATCH] 从业人员导入优化
---
src/main/java/org/springblade/modules/place/service/impl/PlacePractitionerServiceImpl.java | 58 ++++++++-
src/main/java/org/springblade/modules/eCallEventTwo/entity/ECallEventTwoEntity.java | 4
src/main/java/org/springblade/modules/place/excel/ImportPractitionerExcel.java | 95 +++++++++++++++
src/main/java/org/springblade/modules/place/service/IPlacePractitionerService.java | 5
src/main/java/org/springblade/modules/place/excel/PractitionerExcel.java | 106 +++++++++++++++++
src/main/java/org/springblade/modules/place/controller/PlacePractitionerController.java | 58 +++++++-
6 files changed, 309 insertions(+), 17 deletions(-)
diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/entity/ECallEventTwoEntity.java b/src/main/java/org/springblade/modules/eCallEventTwo/entity/ECallEventTwoEntity.java
index bb5f8f3..d322a2f 100644
--- a/src/main/java/org/springblade/modules/eCallEventTwo/entity/ECallEventTwoEntity.java
+++ b/src/main/java/org/springblade/modules/eCallEventTwo/entity/ECallEventTwoEntity.java
@@ -261,6 +261,10 @@
@TableField("tag_redo")
private String tagRedo;
+ @ApiModelProperty(value = "定位地址", example = "")
+ @TableField("location")
+ private String location;
+
@ApiModelProperty(value = "创建人", example = "")
@TableField("create_user_id")
private Long createUserId;
diff --git a/src/main/java/org/springblade/modules/place/controller/PlacePractitionerController.java b/src/main/java/org/springblade/modules/place/controller/PlacePractitionerController.java
index 4ac200c..5044057 100644
--- a/src/main/java/org/springblade/modules/place/controller/PlacePractitionerController.java
+++ b/src/main/java/org/springblade/modules/place/controller/PlacePractitionerController.java
@@ -16,33 +16,36 @@
*/
package org.springblade.modules.place.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
-
-import javax.validation.Valid;
-
-import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.log.logger.BladeLogger;
-import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.jackson.JsonUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.place.entity.PlacePractitionerEntity;
+import org.springblade.modules.place.excel.ImportPractitionerExcel;
+import org.springblade.modules.place.excel.PractitionerExcel;
+import org.springblade.modules.place.service.IPlacePractitionerService;
import org.springblade.modules.place.vo.PlacePractitionerVO;
import org.springblade.modules.place.wrapper.PlacePractitionerWrapper;
-import org.springblade.modules.place.service.IPlacePractitionerService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
-import java.util.Date;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
/**
* 场所从业人员 控制器
@@ -55,6 +58,9 @@
@RequestMapping("blade-placePractitioner/placePractitioner")
@Api(value = "场所从业人员", tags = "场所从业人员接口")
public class PlacePractitionerController {
+
+ private static Logger logger = LoggerFactory.getLogger(PlacePractitionerController.class);
+
private final IPlacePractitionerService placePractitionerService;
private final BladeLogger bladeLogger;
@@ -160,5 +166,35 @@
return R.data(placePractitionerService.countByType(placePractitioner));
}
+ /**
+ * 导入场所数据
+ */
+ @PostMapping("/import-practitioner")
+ public R importPractitioner(MultipartFile file, @RequestParam(value = "isCovered",defaultValue = "0") Integer isCovered) {
+ bladeLogger.info("从业人员信息批量导入", JsonUtil.toJson(isCovered));
+ String data = null;
+ try {
+ List<ImportPractitionerExcel> read = ExcelUtil.read(file, ImportPractitionerExcel.class);
+ data = placePractitionerService.importPractitioner(read, isCovered == 1);
+ } catch (Exception e) {
+ logger.error("导入失败!", e);
+ }
+ return R.data(200, data, "");
+ }
+
+
+ /**
+ * 导出模板
+ */
+ @GetMapping("export-practitioner-template")
+ @ApiOperationSupport(order = 13)
+ @ApiLog("从业人员导出模板")
+ @ApiOperation(value = "从业人员导出模板", notes = "传入place")
+ public void exportPractitionerTemplate(HttpServletResponse response) {
+ List<PractitionerExcel> list = new ArrayList<>();
+ PractitionerExcel importPlaceExcel = new PractitionerExcel();
+ list.add(importPlaceExcel);
+ ExcelUtil.export(response, "从业人员数据" + DateUtil.time(), "从业人员数据表", list, PractitionerExcel.class);
+ }
}
diff --git a/src/main/java/org/springblade/modules/place/excel/ImportPractitionerExcel.java b/src/main/java/org/springblade/modules/place/excel/ImportPractitionerExcel.java
new file mode 100644
index 0000000..dc6b188
--- /dev/null
+++ b/src/main/java/org/springblade/modules/place/excel/ImportPractitionerExcel.java
@@ -0,0 +1,95 @@
+package org.springblade.modules.place.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+import org.springblade.common.excel.ExcelDictConverter;
+import org.springblade.common.excel.ExcelDictItem;
+import org.springblade.common.excel.ExcelDictItemLabel;
+
+import java.io.Serializable;
+
+/**
+ * 场所从业人员 实体类
+ *
+ * @author BladeX
+ * @since 2023-10-28
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class ImportPractitionerExcel implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 场所ID
+ */
+ @ExcelProperty("地址编码")
+ private String houseCode;
+
+ /**
+ * 姓名
+ */
+ @ExcelProperty("姓名")
+ private String name;
+
+ /**
+ * 电话
+ */
+ @ExcelProperty("电话")
+ private String telephone;
+
+ /**
+ * 暂住地
+ */
+ @ExcelProperty("暂住地")
+ private String tempAddress;
+
+ /**
+ * 身份证
+ */
+ @ExcelProperty("身份证")
+ private String idCard;
+
+ /**
+ * 岗位
+ */
+ @ExcelProperty("岗位")
+ private String jobNature;
+
+ /**
+ * 民族
+ */
+ @ColumnWidth(15)
+ @ExcelProperty(value = "民族", converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "nationType")
+ @ExcelDictItem(type = "nationType")
+ private String ethnicity;
+
+ /**
+ * 入职时间
+ */
+ // @ExcelProperty("入职时间")
+ // @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ // @DateTimeFormat("yyyy-MM-dd")
+ // private String employmentTime;
+
+ /**
+ * 离职时间
+ */
+ // @ExcelProperty("离职时间")
+ // @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ // @DateTimeFormat("yyyy-MM-dd")
+ // private String resignationTime;
+
+ /**
+ * 是离职 1:否 2:是
+ */
+ @ExcelProperty("是离职 1:否 2:是")
+ private String resignationFlag;
+
+
+}
diff --git a/src/main/java/org/springblade/modules/place/excel/PractitionerExcel.java b/src/main/java/org/springblade/modules/place/excel/PractitionerExcel.java
new file mode 100644
index 0000000..dde0339
--- /dev/null
+++ b/src/main/java/org/springblade/modules/place/excel/PractitionerExcel.java
@@ -0,0 +1,106 @@
+package org.springblade.modules.place.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import org.springblade.common.excel.ExcelDictConverter;
+import org.springblade.common.excel.ExcelDictItem;
+import org.springblade.common.excel.ExcelDictItemLabel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 场所从业人员 实体类
+ *
+ * @author BladeX
+ * @since 2023-10-28
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class PractitionerExcel implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 场所ID
+ */
+ @ColumnWidth(15)
+ @ExcelProperty(value = "地址编码")
+ private String houseCode;
+
+ /**
+ * 姓名
+ */
+ @ColumnWidth(15)
+ @ExcelProperty(value = "姓名")
+ private String name;
+
+ /**
+ * 电话
+ */
+ @ColumnWidth(15)
+ @ExcelProperty(value = "电话")
+ private String telephone;
+
+ /**
+ * 暂住地
+ */
+ @ColumnWidth(15)
+ @ExcelProperty(value = "暂住地")
+ private String tempAddress;
+
+ /**
+ * 身份证
+ */
+ @ColumnWidth(15)
+ @ExcelProperty(value = "身份证")
+ private String idCard;
+
+ /**
+ * 岗位
+ */
+ @ExcelProperty(value = "岗位")
+ private String jobNature;
+
+ /**
+ * 民族
+ */
+ @ColumnWidth(15)
+ @ExcelProperty(value = "民族", converter = ExcelDictConverter.class)
+ @ExcelDictItemLabel(type = "nationType")
+ @ExcelDictItem(type = "nationType")
+ private String ethnicity;
+
+ /**
+ * 入职时间
+ */
+ // @ColumnWidth(15)
+ // @ExcelProperty(value = "入职时间")
+ // @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ // @DateTimeFormat("yyyy-MM-dd")
+ // private String employmentTime;
+
+ /**
+ * 离职时间
+ */
+ // @ColumnWidth(15)
+ // @ExcelProperty(value = "离职时间")
+ // @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ // @DateTimeFormat("yyyy-MM-dd")
+ // private String resignationTime;
+
+ /**
+ * 是离职 1:否 2:是
+ */
+ @ColumnWidth(15)
+ @ExcelProperty(value = "是离职 1:否 2:是")
+ private String resignationFlag;
+
+}
diff --git a/src/main/java/org/springblade/modules/place/service/IPlacePractitionerService.java b/src/main/java/org/springblade/modules/place/service/IPlacePractitionerService.java
index 3944100..f0582c9 100644
--- a/src/main/java/org/springblade/modules/place/service/IPlacePractitionerService.java
+++ b/src/main/java/org/springblade/modules/place/service/IPlacePractitionerService.java
@@ -18,9 +18,12 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.place.entity.PlacePractitionerEntity;
+import org.springblade.modules.place.excel.ImportPractitionerExcel;
import org.springblade.modules.place.vo.PlacePractitionerVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
/**
* 场所从业人员 服务类
@@ -48,4 +51,6 @@
* @return
*/
Boolean auditing(PlacePractitionerEntity placePractitioner);
+
+ String importPractitioner(List<ImportPractitionerExcel> read, boolean b);
}
diff --git a/src/main/java/org/springblade/modules/place/service/impl/PlacePractitionerServiceImpl.java b/src/main/java/org/springblade/modules/place/service/impl/PlacePractitionerServiceImpl.java
index d2a0b38..cb63fa9 100644
--- a/src/main/java/org/springblade/modules/place/service/impl/PlacePractitionerServiceImpl.java
+++ b/src/main/java/org/springblade/modules/place/service/impl/PlacePractitionerServiceImpl.java
@@ -19,19 +19,22 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.logging.log4j.util.Strings;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.param.CommonParamSet;
import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.modules.place.entity.PlaceEntity;
import org.springblade.modules.place.entity.PlacePractitionerEntity;
+import org.springblade.modules.place.excel.ImportPractitionerExcel;
import org.springblade.modules.place.mapper.PlacePractitionerMapper;
import org.springblade.modules.place.service.IPlacePractitionerService;
+import org.springblade.modules.place.service.IPlaceService;
import org.springblade.modules.place.vo.PlacePractitionerVO;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 场所从业人员 服务实现类
@@ -42,10 +45,13 @@
@Service
public class PlacePractitionerServiceImpl extends ServiceImpl<PlacePractitionerMapper, PlacePractitionerEntity> implements IPlacePractitionerService {
+ @Autowired
+ private IPlaceService placeService;
+
@Override
public IPage<PlacePractitionerVO> selectPlacePractitionerPage(IPage<PlacePractitionerVO> page, PlacePractitionerVO placePractitioner) {
CommonParamSet commonParamSet = new CommonParamSet().invoke(PlacePractitionerVO.class, placePractitioner);
- List<PlacePractitionerVO> placePractitionerVOS = baseMapper.selectPlacePractitionerPage(page, placePractitioner,commonParamSet.getGridCodeList(),
+ List<PlacePractitionerVO> placePractitionerVOS = baseMapper.selectPlacePractitionerPage(page, placePractitioner, commonParamSet.getGridCodeList(),
commonParamSet.getRegionChildCodesList(),
commonParamSet.getIsAdministrator());
return page.setRecords(placePractitionerVOS);
@@ -81,7 +87,47 @@
.set(PlacePractitionerEntity::getConfirmUserId, placePractitioner.getConfirmUserId())
.eq(PlacePractitionerEntity::getPlaceId, placePractitioner.getPlaceId())
.eq(PlacePractitionerEntity::getResignationFlag, 1)
- .eq(PlacePractitionerEntity::getIsDeleted,0));
+ .eq(PlacePractitionerEntity::getIsDeleted, 0));
return update;
}
+
+ @Override
+ public String importPractitioner(List<ImportPractitionerExcel> data, boolean b) {
+ int totalNum = data.size();
+ int importNum = 0;
+ int updateNum = 0;
+ int errorNum = 0;
+ for (ImportPractitionerExcel placeExcel : data) {
+ if (Strings.isBlank(placeExcel.getHouseCode()) || Strings.isBlank(placeExcel.getHouseCode())) {
+ errorNum++;
+ continue;
+ }
+ PlacePractitionerEntity placeEntity = Objects.requireNonNull(BeanUtil.copy(placeExcel, PlacePractitionerEntity.class));
+ // 查询场所是否存在
+ PlaceEntity placeServiceOne = placeService.getOne(Wrappers.<PlaceEntity>lambdaQuery()
+ .eq(PlaceEntity::getHouseCode, placeExcel.getHouseCode()));
+ if (placeServiceOne != null) {
+ placeEntity.setPlaceId(placeServiceOne.getId());
+ boolean save = save(placeEntity);
+ if (save) {
+ importNum++;
+ } else {
+ errorNum++;
+ }
+ } else {
+ errorNum++;
+ continue;
+ }
+ }
+ StringBuilder builder = new StringBuilder("导入完成!");
+ builder.append("其中本次表格共有 ").append(totalNum).append(" 条数据,")
+ .append("成功导入 ").append(importNum).append(" 条数据。");
+ if (updateNum > 0) {
+ builder.append("其中有 ").append(updateNum).append(" 条数据已存在。");
+ }
+ if (errorNum > 0) {
+ builder.append("共有 ").append(errorNum).append(" 条数据由于无企业(店铺)名称信息或无地址编号未导入!");
+ }
+ return builder.toString();
+ }
}
--
Gitblit v1.9.3