添加与完善线索导入与新增

This commit is contained in:
xiaodong.hu
2023-08-16 13:18:55 +08:00
parent d1cd47bc96
commit 4e9903b1b6
10 changed files with 162 additions and 85 deletions

View File

@@ -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 = "未找到此招商经理,请核实";
}

View File

@@ -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),
;

View File

@@ -307,7 +307,7 @@
SELECT
<include refid="Base_Column_List"></include>
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
</select>
</mapper>

View File

@@ -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;

View File

@@ -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;

View File

@@ -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<HyPartnerLineDO> util = new ExcelUtil<HyPartnerLineDO>(HyPartnerLineDO.class);
List<HyPartnerLineDO> lineDOList = util.importExcel(file.getInputStream());
if (lineDOList.size() > excelMaxSize) {
//上传文件到oss
// ossServer.uploadFileServer()
return new ResponseResult(500, "", new ErrorExcelResponse(lineDOList.size(), excelMaxSize, ""));
}
Map<Integer, Map<Integer, List<String>>> 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);
}
}

View File

@@ -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<T> {
throw new IOException("文件sheet不存在");
}
int num = sheet.getLastRowNum();
//删除的空行(包含空白行和带有格式的空行)
int bk = 0;
//记录空白行的集合
List<Integer> 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<T> {
//默认样式
CellStyle cellStyle = cell.getRow().getSheet().getWorkbook().createCellStyle();
cellStyle.cloneStyleFrom(styles.get("data"));
if(stylePan){
if(stylePan&&!CollectionUtils.isEmpty(styleCells)){
if (styleCells.containsKey(lineNumber)) {
Map<Integer, List<String>> columnMap = styleCells.get(lineNumber);
if (columnMap.containsKey(column)) {
@@ -587,13 +622,13 @@ public class ExcelUtil<T> {
*
* @param styleMap
* @param style
* @param columNumCount 总列数
* @param columnNumCount 总列数
*/
public static void setRowStyle(Map<Integer, Map<Integer, List<String>>> styleMap, String style, int columNumCount) {
public static void setRowStyle(Map<Integer, Map<Integer, List<String>>> styleMap, String style, int columnNumCount) {
for (Integer row : styleMap.keySet()) {
boolean pan = false;
Map<Integer, List<String>> integerListMap = styleMap.get(row);
for (int i = 0; i <= columNumCount; i++) {
for (int i = 0; i <= columnNumCount; i++) {
if (pan) {
continue;
}

View File

@@ -102,6 +102,10 @@ public class Constants
* 图片格式
*/
public static final String IMAGE_JPG = "jpg";
/**
* 图片格式
*/
public static final String EXCEL_XLSX = "xlsx";
/**
* 图片格式
*/

View File

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

View File

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