فهرست منبع

职业打假人导入

wangxy 1 هفته پیش
والد
کامیت
d1a6cbd92f

+ 19 - 0
fs-admin/src/main/java/com/fs/his/controller/FraudUsersController.java

@@ -5,11 +5,13 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.his.domain.FraudUsers;
 import com.fs.his.service.IFraudUsersService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -61,4 +63,21 @@ public class FraudUsersController extends BaseController {
     public AjaxResult sync() {
         return AjaxResult.success(fraudUsersService.syncFraudUsers());
     }
+
+    @PreAuthorize("@ss.hasPermi('his:fraudUsers:add')")
+    @GetMapping("/importTemplate")
+    public AjaxResult importTemplate() {
+        ExcelUtil<FraudUsers> util = new ExcelUtil<>(FraudUsers.class);
+        return util.importTemplateExcel("职业打假人导入模板");
+    }
+
+    @PreAuthorize("@ss.hasPermi('his:fraudUsers:add')")
+    @Log(title = "职业打假人名单", businessType = BusinessType.IMPORT)
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
+        ExcelUtil<FraudUsers> util = new ExcelUtil<>(FraudUsers.class);
+        List<FraudUsers> list = util.importExcel(file.getInputStream());
+        String message = fraudUsersService.importFraudUsers(list, updateSupport);
+        return AjaxResult.success(message);
+    }
 }

+ 7 - 2
fs-service/src/main/java/com/fs/his/domain/FraudUsers.java

@@ -1,5 +1,6 @@
 package com.fs.his.domain;
 
+import com.fs.common.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -17,18 +18,22 @@ public class FraudUsers implements Serializable {
     private Long id;
 
     /** 名称 */
+    @Excel(name = "名称")
     @ApiModelProperty("名称")
     private String name;
 
     /** 手机号 */
+    @Excel(name = "手机号")
     @ApiModelProperty("手机号")
     private String phone;
 
     /** 地址 */
+    @Excel(name = "地址")
     @ApiModelProperty("地址")
     private String address;
 
-    /** 职位 */
-    @ApiModelProperty("职位")
+    /** 原因 */
+    @Excel(name = "原因")
+    @ApiModelProperty("原因")
     private String position;
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/IFraudUsersService.java

@@ -21,4 +21,9 @@ public interface IFraudUsersService {
     Map<String, Object> syncFraudUsers();
 
     boolean isFraudUser(String phone, String address);
+
+    /**
+     * 导入职业打假人名单(字段允许为空)
+     */
+    String importFraudUsers(List<FraudUsers> fraudUsersList, boolean updateSupport);
 }

+ 96 - 0
fs-service/src/main/java/com/fs/his/service/impl/FraudUsersServiceImpl.java

@@ -277,4 +277,100 @@ public class FraudUsersServiceImpl implements IFraudUsersService {
         companyTagService.insertCompanyTag(companyTag);
         return companyTag.getTagId();
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String importFraudUsers(List<FraudUsers> fraudUsersList, boolean updateSupport) {
+        if (CollUtil.isEmpty(fraudUsersList)) {
+            return "导入数据为空";
+        }
+        int successNum = 0;
+        int failureNum = 0;
+        int skipNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        for (int i = 0; i < fraudUsersList.size(); i++) {
+            FraudUsers row = fraudUsersList.get(i);
+            int rowNum = i + 2;
+            if (isBlankFraudRow(row)) {
+                skipNum++;
+                continue;
+            }
+            try {
+                normalizeImportRow(row);
+                if (StringUtils.isNotEmpty(row.getPhone())) {
+                    String encryptedPhone = normalizeFraudPhone(row.getPhone());
+                    FraudUsers exist = fraudUsersMapper.selectFraudUsersByPhone(encryptedPhone);
+                    if (exist == null && !encryptedPhone.equals(row.getPhone())) {
+                        exist = fraudUsersMapper.selectFraudUsersByPhone(row.getPhone());
+                    }
+                    if (exist != null) {
+                        if (updateSupport) {
+                            row.setId(exist.getId());
+                            updateFraudUsers(row);
+                            successNum++;
+                            successMsg.append("<br/>").append(successNum).append("、第").append(rowNum)
+                                    .append("行更新成功");
+                        } else {
+                            failureNum++;
+                            failureMsg.append("<br/>").append(failureNum).append("、第").append(rowNum)
+                                    .append("行手机号已存在");
+                        }
+                        continue;
+                    }
+                }
+                insertFraudUsers(row);
+                successNum++;
+                successMsg.append("<br/>").append(successNum).append("、第").append(rowNum).append("行导入成功");
+            } catch (Exception e) {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、第" + rowNum + "行导入失败:" + e.getMessage();
+                failureMsg.append(msg);
+            }
+        }
+        if (failureNum > 0) {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            return failureMsg.toString() + (successNum > 0 ? ("<br/>另成功 " + successNum + " 条" + successMsg) : "")
+                    + (skipNum > 0 ? ("<br/>跳过空行 " + skipNum + " 条") : "");
+        }
+        return "恭喜您,数据已全部导入成功!共 " + successNum + " 条" + successMsg
+                + (skipNum > 0 ? ("<br/>跳过空行 " + skipNum + " 条") : "");
+    }
+
+    private boolean isBlankFraudRow(FraudUsers row) {
+        if (row == null) {
+            return true;
+        }
+        return StringUtils.isBlank(row.getName())
+                && StringUtils.isBlank(row.getPhone())
+                && StringUtils.isBlank(row.getAddress())
+                && StringUtils.isBlank(row.getPosition());
+    }
+
+    private void normalizeImportRow(FraudUsers row) {
+        if (row.getName() != null) {
+            row.setName(row.getName().trim());
+            if (row.getName().isEmpty()) {
+                row.setName(null);
+            }
+        }
+        if (row.getPhone() != null) {
+            row.setPhone(row.getPhone().trim());
+            if (row.getPhone().isEmpty()) {
+                row.setPhone(null);
+            }
+        }
+        if (row.getAddress() != null) {
+            row.setAddress(row.getAddress().trim());
+            if (row.getAddress().isEmpty()) {
+                row.setAddress(null);
+            }
+        }
+        if (row.getPosition() != null) {
+            row.setPosition(row.getPosition().trim());
+            if (row.getPosition().isEmpty()) {
+                row.setPosition(null);
+            }
+        }
+    }
 }