From 4e9903b1b62cefbbeadeb0acddfd6b2748423d46 Mon Sep 17 00:00:00 2001
From: "xiaodong.hu" <1075471126@qq.com>
Date: Wed, 16 Aug 2023 13:18:55 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8E=E5=AE=8C=E5=96=84?=
=?UTF-8?q?=E7=BA=BF=E7=B4=A2=E5=AF=BC=E5=85=A5=E4=B8=8E=E6=96=B0=E5=A2=9E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../store/constants/ExcelErrorConstants.java | 12 +-
.../com/cool/store/enums/ErrorCodeEnum.java | 11 ++
.../resources/mapper/HyOpenAreaInfoMapper.xml | 2 +-
.../cool/store/entity/HyPartnerLineDO.java | 13 +-
.../cool/store/request/AddLineRequest.java | 4 +-
.../service/impl/LineHighSeasServiceImpl.java | 126 +++++++++++-------
.../com/cool/store/utils/poi/ExcelUtil.java | 43 +++++-
.../store/utils/poi/constant/Constants.java | 4 +
.../cool/store/config/BodyWrapperFilter.java | 16 ++-
.../controller/LineHighSeasController.java | 16 +--
10 files changed, 162 insertions(+), 85 deletions(-)
diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/ExcelErrorConstants.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/ExcelErrorConstants.java
index 046477b12..54019b856 100644
--- a/coolstore-partner-common/src/main/java/com/cool/store/constants/ExcelErrorConstants.java
+++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/ExcelErrorConstants.java
@@ -13,16 +13,16 @@ public class ExcelErrorConstants {
public static final String MOBILE_EXIST= "手机号已存在";
- public static final String LIVEAREA_LOSE= "常驻区域缺失";
+ public static final String LIVE_AREA_LOSE = "常驻区域缺失";
- public static final String LIVEAREA_FORMAT_ERROR= "常驻区域格式错误";
+ public static final String LIVE_AREA_FORMAT_ERROR = "常驻区域格式错误";
- public static final String WANTSHOPAREA_LOSE= "意向区域缺失";
+ public static final String WANT_SHOP_AREA_LOSE = "意向区域缺失";
- public static final String WANTSHOPAREA_FORMAT_ERROR= "意向区域格式错误";
+ public static final String WANT_SHOP_AREA_FORMAT_ERROR = "意向区域格式错误";
- public static final String ACCEPTADJUSTTYPE_LOSE= "是否接受调剂缺失";
+ public static final String ACCEPT_ADJUST_TYPE_LOSE = "是否接受调剂缺失";
- public static final String INVESTMENTMANAGER_LOSE= "未找到此招商经理,请核实";
+ public static final String INVESTMENT_MANAGER_LOSE = "未找到此招商经理,请核实";
}
diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
index adeef3eee..7355cb143 100644
--- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
+++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
@@ -82,6 +82,11 @@ public enum ErrorCodeEnum {
INTERVIEW_INTERVIEW_TIME_IS_UNUSABLE(1021114, "当前预约时间不可用,请和线索用户协商其他时间后确定预约时间\n面试人:{0} 手机号:{1}", null),
INTERVIEW_PARTNER_NOT_EXIST(1021115, "线索下的加盟商不存在!", null),
ROOM_STATUS_ERROR(10211156, "当前面试房间状态不允许进行该操作!", null),
+ MOBILE_APP_NOT_ONLINE_ERROR(10211157, "拨出手机APP不在线!", null),
+ CALL_RECORD_NOT_EXIST_ERROR(10211158, "通话记录不存在!", null),
+
+ CREATE_CALL_REQUEST_ERROR(10211158, "创建电话请求失败!", null),
+ CALL_UP_ERROR(10211159, "拨出电话异常!", null),
CONTENT_DUPLICATED(10211200, "动态标题重复!", null),
SIGN_FAIL(600000, "验签失败", null),
GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误!", null),
@@ -89,6 +94,12 @@ public enum ErrorCodeEnum {
INSPECTION_USER_OCCUPY(600002,"当前稽核人已经配置其他战区",null),
INSPECTION_INFO_NOT_EXIST(600005, "稽核信息不存在!", null),
OPEN_AREA_NULL(600006,"归属地区不能为空",null),
+
+ OUTBOUND_NUMBER_EXIST(110001, "该呼出号码已被绑定,请更改后重试", null),
+
+ LABEL_GROUP_IN_USE(120001, "该标签组下存在标签,不可删除;请确保该标签组下标签数量为0后再进行删除", null),
+ LABEL_GROUP_EXIST(120002, "该标签组已存在,请重新输入", null),
+ LABEL_EXIST(120003, "该标签已存在,请重新输入", null),
;
diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml
index 60b212972..4ba49efba 100644
--- a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml
+++ b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml
@@ -307,7 +307,7 @@
SELECT
FROM `hy_open_area_info`
- WHERE area_path= concat('/',#{areaPath},'/') and deleted=0
+ WHERE area_path= concat('/',#{areaPath},'/') and deleted=0 and province_city_flag=0
\ No newline at end of file
diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerLineDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerLineDO.java
index 510a45373..19b6136c6 100644
--- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerLineDO.java
+++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerLineDO.java
@@ -22,7 +22,7 @@ import java.io.Serializable;
@Accessors(chain = true)
public class HyPartnerLineDO implements Serializable {
- @Excel(name = "*姓名(必填)")
+ @Excel(name = "*姓名(必填)" )
@ApiModelProperty("姓名")
private String partnerName;
@@ -30,33 +30,32 @@ public class HyPartnerLineDO implements Serializable {
@ApiModelProperty("手机号")
private String mobile;
- @Excel(name = "*常驻区域(必填)")
+ @Excel(name = "*常驻区域(必填)",width =18)
@ApiModelProperty("常驻区域")
private String liveAreaReplace;
private String liveArea;
- @Excel(name = "*意向区域(必填)")
+ @Excel(name = "*意向区域(必填)",width =18)
@ApiModelProperty("意向区域")
private String wantShopAreaReplace;
private Long wantShopArea;
- @Excel(name = "*是否接受调剂(必填)")
+ @Excel(name = "*是否接受调剂(必填)",width =18)
@ApiModelProperty("是否接受调剂")
private String acceptAdjustTypeReplace;
private Integer acceptAdjustType;
- @Excel(name = "分配招商经理")
+ @Excel(name = "分配招商经理",width =18)
@ApiModelProperty("分配招商经理")
private String investmentManagerReplace;
private String investmentManager;
-
- @Excel(name = "错误信息")
+ @Excel(name = "错误信息",width =26)
@ApiModelProperty("错误信息")
private String errorInfo;
diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AddLineRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AddLineRequest.java
index 6faa4e435..fe83cbcf8 100644
--- a/coolstore-partner-model/src/main/java/com/cool/store/request/AddLineRequest.java
+++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AddLineRequest.java
@@ -6,7 +6,9 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
+import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.List;
@@ -41,7 +43,7 @@ public class AddLineRequest {
/**
* (0不接受调剂、1全国调剂、2省内调剂、3市内调剂)*
*/
- @NotBlank(message = "是否接受调剂不能为空")
+ @NotNull(message = "是否接受调剂不能为空")
@ApiModelProperty("是否接受调剂")
private Integer acceptAdjustType;
diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineHighSeasServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineHighSeasServiceImpl.java
index 4e22a6c42..3e357d8ff 100644
--- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineHighSeasServiceImpl.java
+++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineHighSeasServiceImpl.java
@@ -1,7 +1,8 @@
package com.cool.store.service.impl;
import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.cool.store.constants.ExcelErrorConstants;
import com.cool.store.dao.*;
@@ -22,6 +23,7 @@ import com.cool.store.utils.UUIDUtils;
import com.cool.store.utils.poi.ExcelUtil;
import com.cool.store.utils.poi.constant.Constants;
import lombok.SneakyThrows;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -41,6 +43,13 @@ import java.util.regex.Pattern;
public class LineHighSeasServiceImpl implements LineHighSeasService {
+ @Value("${oss.excelFile.dir:null}")
+ private String dir;
+
+ @Value("${manual.channel.id}")
+ private Integer manual;
+
+
@Resource
private HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
@@ -78,13 +87,14 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
/**
* 新增线索
+ *
* @param request
*/
public void add(AddLineRequest request) {
String partnerId = UUIDUtils.get32UUID();
HyPartnerUserInfoDO resultUser = new HyPartnerUserInfoDO();
resultUser.setUsername(request.getPartnerName()).setMobile(request.getMobile()).setPartnerId(partnerId).setCreateTime(new Date()).setAcceptAdjustType(request.getAcceptAdjustType())
- .setLiveArea(request.getLiveArea()).setWantShopArea(request.getWantShopArea());
+ .setLiveArea(request.getLiveArea()).setWantShopArea(request.getWantShopArea()).setUserChannelId(manual);
hyPartnerUserInfoDAO.insertSelective(resultUser);
HyPartnerLineInfoDO resultLine = new HyPartnerLineInfoDO();
@@ -118,116 +128,123 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseResult importLine(MultipartFile file) {
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ExcelUtil util = new ExcelUtil(HyPartnerLineDO.class);
List lineDOList = util.importExcel(file.getInputStream());
- if (lineDOList.size() > excelMaxSize) {
-
- //上传文件到oss
-// ossServer.uploadFileServer()
- return new ResponseResult(500, "", new ErrorExcelResponse(lineDOList.size(), excelMaxSize, ""));
- }
Map>> styleCells = new HashMap<>(4);
+ if (lineDOList.size() > excelMaxSize) {
+ //超出五百条的excel都标红
+ for (int i = excelMaxSize; i < lineDOList.size() ; i++) {
+ styleCells.put(i,new HashMap<>());
+ }
+ ExcelUtil.setRowStyle(styleCells,ExcelUtil.FONT_RED,7);
+ util.exportExcel(outputStream, lineDOList, "", styleCells);
+ InputStream stream = new ByteArrayInputStream(outputStream.toByteArray());
+ String fileStr = ossServer.uploadFileServer(stream, dir + getExcelName());
+ return new ResponseResult(500, "每次数据最多导入500条,请分批上传", new ErrorExcelResponse(lineDOList.size(), excelMaxSize, fileStr));
+ }
for (int i = 0; i < lineDOList.size(); i++) {
HyPartnerLineDO hyPartnerLineDO = lineDOList.get(i);
if (StringUtil.isEmpty(hyPartnerLineDO.getPartnerName())) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.NAME_LOSE));
- ExcelUtil.setStyleMap(styleCells, i, 1, new String[]{ExcelUtil.FONT_RED});
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.NAME_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.NAME_LOSE));
+ ExcelUtil.setStyleMap(styleCells, i, 0, new String[]{ExcelUtil.FONT_RED});
}
- String mobile = hyPartnerLineDO.getMobile();
+ String mobile = hyPartnerLineDO.getMobile().trim();
//手机号为空
if (StringUtil.isEmpty(mobile)) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.MOBILE_LOSE));
- ExcelUtil.setStyleMap(styleCells, i, 2, new String[]{ExcelUtil.FONT_RED});
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.MOBILE_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.MOBILE_LOSE));
+ ExcelUtil.setStyleMap(styleCells, i, 1, new String[]{ExcelUtil.FONT_RED});
} else {
//手机号格式判断
if (!isPhone(mobile)) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.MOBILE_ERROR));
- ExcelUtil.setStyleMap(styleCells, i, 2, new String[]{ExcelUtil.FONT_RED});
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.MOBILE_ERROR : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.MOBILE_ERROR));
+ ExcelUtil.setStyleMap(styleCells, i, 1, new String[]{ExcelUtil.FONT_RED});
}
//手机号是否已存在
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(mobile);
if (ObjectUtil.isNotNull(hyPartnerUserInfoDO)) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.MOBILE_EXIST));
- ExcelUtil.setStyleMap(styleCells, i, 2, new String[]{ExcelUtil.FONT_RED});
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.MOBILE_EXIST : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.MOBILE_EXIST));
+ ExcelUtil.setStyleMap(styleCells, i, 1, new String[]{ExcelUtil.FONT_RED});
}
}
//常驻区域为空
- String liveArea = hyPartnerLineDO.getLiveAreaReplace();
+ String liveArea = hyPartnerLineDO.getLiveAreaReplace().trim();
if (StringUtil.isEmpty(liveArea)) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.LIVEAREA_LOSE));
- ExcelUtil.setStyleMap(styleCells, i, 3, new String[]{ExcelUtil.FONT_RED});
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.LIVE_AREA_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.LIVE_AREA_LOSE));
+ ExcelUtil.setStyleMap(styleCells, i, 2, new String[]{ExcelUtil.FONT_RED});
} else {
//判断格式是否为错
if (ObjectUtil.isNull(hyOpenAreaInfoDAO.selectByAreaPath(liveArea))) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.LIVEAREA_FORMAT_ERROR));
- ExcelUtil.setStyleMap(styleCells, i, 3, new String[]{ExcelUtil.FONT_RED});
- }else {
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.LIVE_AREA_FORMAT_ERROR : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.LIVE_AREA_FORMAT_ERROR));
+ ExcelUtil.setStyleMap(styleCells, i, 2, new String[]{ExcelUtil.FONT_RED});
+ } else {
hyPartnerLineDO.setLiveArea(liveArea.replace(Constants.FORWARD_SLASH, Constants.SPACE));
}
}
//意向区域
- String wantShopArea = hyPartnerLineDO.getWantShopAreaReplace();
+ String wantShopArea = hyPartnerLineDO.getWantShopAreaReplace().trim();
if (StringUtil.isEmpty(wantShopArea)) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.WANTSHOPAREA_LOSE));
- ExcelUtil.setStyleMap(styleCells, i, 4, new String[]{ExcelUtil.FONT_RED});
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.WANT_SHOP_AREA_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.WANT_SHOP_AREA_LOSE));
+ ExcelUtil.setStyleMap(styleCells, i, 3, new String[]{ExcelUtil.FONT_RED});
} else {
//判断格式是否为错
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectByAreaPath(wantShopArea);
if (ObjectUtil.isNull(hyOpenAreaInfoDO)) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.WANTSHOPAREA_FORMAT_ERROR));
- ExcelUtil.setStyleMap(styleCells, i, 4, new String[]{ExcelUtil.FONT_RED});
- }else {
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.WANT_SHOP_AREA_FORMAT_ERROR : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.WANT_SHOP_AREA_FORMAT_ERROR));
+ ExcelUtil.setStyleMap(styleCells, i, 3, new String[]{ExcelUtil.FONT_RED});
+ } else {
hyPartnerLineDO.setWantShopArea(hyOpenAreaInfoDO.getId());
}
}
//是否接受调剂
- String acceptAdjustType = hyPartnerLineDO.getAcceptAdjustTypeReplace();
+ String acceptAdjustType = hyPartnerLineDO.getAcceptAdjustTypeReplace().trim();
if (StringUtil.isEmpty(acceptAdjustType)) {
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE));
+ ExcelUtil.setStyleMap(styleCells, i, 4, new String[]{ExcelUtil.FONT_RED});
+ }else {
Integer enumByName = AcceptAdjustTypeEnum.findEnumByName(acceptAdjustType);
- if(ObjectUtil.isNull(enumByName)){
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.ACCEPTADJUSTTYPE_LOSE));
- ExcelUtil.setStyleMap(styleCells, i, 5, new String[]{ExcelUtil.FONT_RED});
- }else {
+ if (ObjectUtil.isNull(enumByName)) {
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.ACCEPT_ADJUST_TYPE_LOSE));
+ ExcelUtil.setStyleMap(styleCells, i, 4, new String[]{ExcelUtil.FONT_RED});
+ } else {
hyPartnerLineDO.setAcceptAdjustType(enumByName);
}
}
//分配招商经理
- String investmentManager = hyPartnerLineDO.getInvestmentManagerReplace();
+ String investmentManager = hyPartnerLineDO.getInvestmentManagerReplace().trim();
if (StringUtil.isNotEmpty(investmentManager)) {
//判断是否能够查询的到
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByInvestmentManager(investmentManager);
if (ObjectUtil.isNull(enterpriseUserDO)) {
- hyPartnerLineDO.setErrorInfo(hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.INVESTMENTMANAGER_LOSE));
- ExcelUtil.setStyleMap(styleCells, i, 6, new String[]{ExcelUtil.FONT_RED});
- }else {
+ hyPartnerLineDO.setErrorInfo(StringUtil.isEmpty(hyPartnerLineDO.getErrorInfo()) ? ExcelErrorConstants.INVESTMENT_MANAGER_LOSE : hyPartnerLineDO.getErrorInfo().concat(Constants.SEMICOLON).concat(ExcelErrorConstants.INVESTMENT_MANAGER_LOSE));
+ ExcelUtil.setStyleMap(styleCells, i, 5, new String[]{ExcelUtil.FONT_RED});
+ } else {
hyPartnerLineDO.setInvestmentManager(enterpriseUserDO.getUserId());
}
}
}
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
util.exportExcel(outputStream, lineDOList, "", styleCells);
InputStream stream = new ByteArrayInputStream(outputStream.toByteArray());
- String fileStr = ossServer.uploadFileServer(stream, "");
+ String fileStr = ossServer.uploadFileServer(stream, dir + getExcelName());
if (styleCells.size() != 0) {
- return new ResponseResult(500, "", new ErrorExcelResponse(lineDOList.size(), styleCells.size(), fileStr));
+ return new ResponseResult(500, "共上传" + lineDOList.size() + "条线索,其中" + styleCells.size() + "条存在异常", new ErrorExcelResponse(lineDOList.size(), styleCells.size(), fileStr));
}
for (HyPartnerLineDO hyPartnerLineDO : lineDOList) {
AddLineRequest addLineRequest = new AddLineRequest();
- BeanUtil.copyProperties(addLineRequest,hyPartnerLineDO);
+ BeanUtil.copyProperties(hyPartnerLineDO, addLineRequest);
addLineRequest.setWantShopArea(hyPartnerLineDO.getWantShopArea().toString());
add(addLineRequest);
}
- return new ResponseResult(200, "", new ErrorExcelResponse(lineDOList.size(), styleCells.size(), fileStr));
+ return new ResponseResult(200, "共上传" + lineDOList.size() + "条线索", new ErrorExcelResponse(lineDOList.size(), styleCells.size(), fileStr));
}
-
/**
* @param phone 字符串类型的手机号
- * 传入手机号,判断后返回
- * true为手机号,false相反
- */
- private boolean isPhone(String phone) {
- String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
+ * 传入手机号,判断后返回
+ * true为手机号,false相反
+ * */
+ public static boolean isPhone(String phone) {
+ String regex = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$";
if (phone.length() != 11) {
return false;
} else {
@@ -236,4 +253,15 @@ public class LineHighSeasServiceImpl implements LineHighSeasService {
return m.matches();
}
}
+
+ /**
+ * 获取excel名称
+ *
+ * @return
+ */
+ private String getExcelName() {
+ String format = DateUtil.format(new Date(), "yyyyMMdd").concat(Constants.D_LINE).concat(IdUtil.simpleUUID().substring(0, 10));
+ return format.concat(Constants.POMINT).concat(Constants.EXCEL_XLSX);
+ }
+
}
diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/ExcelUtil.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/ExcelUtil.java
index 8f67c2435..d75cd4fd2 100644
--- a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/ExcelUtil.java
+++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/ExcelUtil.java
@@ -2,6 +2,7 @@ package com.cool.store.utils.poi;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcel;
+import com.aliyun.openservices.shade.com.google.common.collect.Lists;
import com.cool.store.annotation.Excel;
import com.cool.store.annotation.Excels;
import com.cool.store.utils.poi.constant.Constants;
@@ -14,6 +15,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -177,6 +179,39 @@ public class ExcelUtil {
throw new IOException("文件sheet不存在");
}
+ int num = sheet.getLastRowNum();
+ //删除的空行(包含空白行和带有格式的空行)
+ int bk = 0;
+ //记录空白行的集合
+ List nums = Lists.newArrayList();
+ for (int i = 1; i <= num; i++) {
+ Row row = sheet.getRow(i);
+ boolean flag = false;
+ //带有格式的空白行
+ if (row != null) {
+ for (Cell cell : row) {
+ //判断该单元格是否全为空
+ if (StringUtils.isNotEmpty(cell.toString())) {
+ flag = true;
+ break;
+ }
+ }
+ if (!flag) {
+ nums.add(i);
+ bk++;
+ }
+ //空白行
+ } else {
+ nums.add(i);
+ bk++;
+ }
+ }
+ //删除无效数据行(空白行,带格式的空白行)
+ for (Integer n : nums) {
+ if (sheet.getRow(n) != null) {
+ sheet.removeRow(sheet.getRow(n));
+ }
+ }
int rows = sheet.getPhysicalNumberOfRows();
if (rows > 0) {
@@ -485,7 +520,7 @@ public class ExcelUtil {
//默认样式
CellStyle cellStyle = cell.getRow().getSheet().getWorkbook().createCellStyle();
cellStyle.cloneStyleFrom(styles.get("data"));
- if(stylePan){
+ if(stylePan&&!CollectionUtils.isEmpty(styleCells)){
if (styleCells.containsKey(lineNumber)) {
Map> columnMap = styleCells.get(lineNumber);
if (columnMap.containsKey(column)) {
@@ -587,13 +622,13 @@ public class ExcelUtil {
*
* @param styleMap
* @param style
- * @param columNumCount 总列数
+ * @param columnNumCount 总列数
*/
- public static void setRowStyle(Map>> styleMap, String style, int columNumCount) {
+ public static void setRowStyle(Map>> styleMap, String style, int columnNumCount) {
for (Integer row : styleMap.keySet()) {
boolean pan = false;
Map> integerListMap = styleMap.get(row);
- for (int i = 0; i <= columNumCount; i++) {
+ for (int i = 0; i <= columnNumCount; i++) {
if (pan) {
continue;
}
diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/constant/Constants.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/constant/Constants.java
index c4e8ee514..65536d4a0 100644
--- a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/constant/Constants.java
+++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/constant/Constants.java
@@ -102,6 +102,10 @@ public class Constants
* 图片格式
*/
public static final String IMAGE_JPG = "jpg";
+ /**
+ * 图片格式
+ */
+ public static final String EXCEL_XLSX = "xlsx";
/**
* 图片格式
*/
diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/config/BodyWrapperFilter.java b/coolstore-partner-webb/src/main/java/com/cool/store/config/BodyWrapperFilter.java
index 561d9b3c3..623a40a60 100644
--- a/coolstore-partner-webb/src/main/java/com/cool/store/config/BodyWrapperFilter.java
+++ b/coolstore-partner-webb/src/main/java/com/cool/store/config/BodyWrapperFilter.java
@@ -19,13 +19,17 @@ public class BodyWrapperFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
ServletRequest requestWrapper = null;
- if(servletRequest instanceof HttpServletRequest) {
- requestWrapper = new CustomHttpServletRequestWrapper((HttpServletRequest) servletRequest);
- }
- if(requestWrapper == null) {
+ if (org.springframework.util.StringUtils.hasLength(servletRequest.getContentType()) && servletRequest.getContentType().contains("multipart/form-data")) {
filterChain.doFilter(servletRequest, servletResponse);
- } else {
- filterChain.doFilter(requestWrapper, servletResponse);
+ }else {
+ if (servletRequest instanceof HttpServletRequest) {
+ requestWrapper = new CustomHttpServletRequestWrapper((HttpServletRequest) servletRequest);
+ }
+ if (requestWrapper == null) {
+ filterChain.doFilter(servletRequest, servletResponse);
+ } else {
+ filterChain.doFilter(requestWrapper, servletResponse);
+ }
}
}
}
\ No newline at end of file
diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/LineHighSeasController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/LineHighSeasController.java
index 8c4f5cf08..f8e55fea2 100644
--- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/LineHighSeasController.java
+++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/LineHighSeasController.java
@@ -1,22 +1,17 @@
package com.cool.store.controller;
-import com.cool.store.entity.HyPartnerLineDO;
import com.cool.store.exception.ApiException;
import com.cool.store.request.AddLineRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.LineHighSeasService;
-import com.cool.store.utils.poi.ExcelUtil;
import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.validation.Valid;
-import java.util.List;
/**
* @Author: hxd
@@ -28,21 +23,20 @@ import java.util.List;
public class LineHighSeasController {
- @Resource
+ @Autowired
private LineHighSeasService lineHighSeasService;
@PostMapping("/add")
@ApiOperation("新建线索")
public ResponseResult addLine(@RequestBody @Valid AddLineRequest request) throws ApiException {
-
return ResponseResult.success(lineHighSeasService.addLine(request));
}
- @PostMapping("/import")
+ @PostMapping(value = "/import")
@ApiOperation("批量导入线索")
- public ResponseResult importLine(MultipartFile file) throws Exception {
+ public ResponseResult importLine(@RequestParam(value = "file") MultipartFile file) throws Exception {
return lineHighSeasService.importLine(file);
}
}