Commit 8d531142 by 黄森林

PC端订单管理受理单,快递单导入功能

parent 3f095ebb
package com.winsun.mapper;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Component;
import com.baomidou.mybatisplus.mapper.BaseMapper;
......@@ -22,4 +24,30 @@ public interface OrderMapper extends BaseMapper<Order> {
@Select("select * from `hhr_order_history` where order_id = #{oredrId}")
List<Map<String,Object>> selectOrderHis(String oredrId);
@Update("update `hhr_order` set order_status = #{orderStatus}, accept_name = #{acceptName}," +
" accept_result = #{acceptResult}, accept_comment = #{acceptComment}, accept_date = #{acceptDate} " +
" where order_number = #{orderNumber}")
Integer updateOrderSUByOrderNumberIsNotNull(@Param("orderNumber") String orderNumber,@Param("orderStatus") String orderStatus,
@Param("acceptName") String acceptName,@Param("acceptResult") String acceptResult,
@Param("acceptComment") String acceptComment,@Param("acceptDate") Date acceptDate);
@Update("update `hhr_order` set order_status = #{orderStatus}, accept_name = #{acceptName}," +
" accept_result = #{acceptResult}, accept_date = #{acceptDate} " +
" where order_number = #{orderNumber}")
Integer updateOrderSUByOrderNumberIsNull(@Param("orderNumber") String orderNumber,@Param("orderStatus") String orderStatus,
@Param("acceptName") String acceptName,@Param("acceptResult") String acceptResult,
@Param("acceptDate") Date acceptDate);
@Update("update `hhr_order` set order_status = #{orderStatus},company = #{company},kuaidi_order = #{kuaidiOrder},send_type = #{sendType} where order_number = #{orderNumber}")
Integer updateOrderKDIsNotNull(@Param("orderNumber") String orderNumber,@Param("company") String company,@Param("kuaidiOrder") String kuaidiOrder,@Param("sendType") String sendType,@Param("orderStatus") String orderStatus);
@Update("update `hhr_order` set order_status = #{orderStatus},send_type = #{sendType} where order_number = #{orderNumber}")
Integer updateOrderKDIsNull(@Param("orderNumber") String orderNumber,@Param("sendType") String sendType,@Param("orderStatus") String orderStatus);
@Select("select id from `hhr_order` where order_number = #{orderNumber}")
String selectIdByOrderNumber(String orderNumber);
@Select("select xb_order_id xbOrderId from `hhr_order` where order_number = #{orderNumber}")
String selectxbOrderIdByOrderNumber(String orderNumber);
}
package com.winsun.utils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 导入Excel文件(支持“XLS”和“XLSX”格式)
* @author
* @version
*/
public class ImportExcel {
private static Logger log = LoggerFactory.getLogger(ImportExcel.class);
/**
* 工作薄对象
*/
private Workbook wb;
/**
* 工作表对象
*/
private Sheet sheet;
/**
* 标题行号
*/
private int headerNum;
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(String fileName, int headerNum)
throws InvalidFormatException, IOException {
this(new File(fileName), headerNum);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(File file, int headerNum)
throws InvalidFormatException, IOException {
this(file, headerNum, 0);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(String fileName, int headerNum, int sheetIndex)
throws InvalidFormatException, IOException {
this(new File(fileName), headerNum, sheetIndex);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(File file, int headerNum, int sheetIndex)
throws InvalidFormatException, IOException {
this(file.getName(), new FileInputStream(file), headerNum, sheetIndex);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(MultipartFile multipartFile, int headerNum, int sheetIndex)
throws InvalidFormatException, IOException {
this(multipartFile.getOriginalFilename(), multipartFile.getInputStream(), headerNum, sheetIndex);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public ImportExcel(String fileName, InputStream is, int headerNum, int sheetIndex)
throws InvalidFormatException, IOException {
if (StringUtils.isBlank(fileName)){
throw new RuntimeException("导入文档为空!");
}else if(fileName.toLowerCase().endsWith("xls")){
this.wb = new HSSFWorkbook(is);
}else if(fileName.toLowerCase().endsWith("xlsx")){
this.wb = new XSSFWorkbook(is);
}else{
throw new RuntimeException("文档格式不正确!");
}
if (this.wb.getNumberOfSheets()<sheetIndex){
throw new RuntimeException("文档中没有工作表!");
}
this.sheet = this.wb.getSheetAt(sheetIndex);
this.headerNum = headerNum;
log.debug("Initialize success.");
}
/**
* 获取行对象
* @param rownum
* @return
*/
public Row getRow(int rownum){
return this.sheet.getRow(rownum);
}
/**
* 获取数据行号
* @return
*/
public int getDataRowNum(){
return headerNum+1;
}
/**
* 获取最后一个数据行号
* @return
*/
public int getLastDataRowNum(){
return this.sheet.getLastRowNum()+headerNum;
}
/**
* 获取最后一个列号
* @return
*/
public int getLastCellNum(){
return this.getRow(headerNum).getLastCellNum();
}
/**
* 获取单元格值
* @param row 获取的行
* @param column 获取单元格列号
* @return 单元格值
*/
public Object getCellValue(Row row, int column){
Object val = "";
try{
Cell cell = row.getCell(column);
if (cell != null){
if (cell.getCellType() == CellType.NUMERIC){
val = cell.getNumericCellValue();
// DecimalFormat df = new DecimalFormat("0");
// val = df.format(cell.getNumericCellValue());
}else if (cell.getCellType() == CellType.STRING){
val = cell.getStringCellValue();
}else if (cell.getCellType() == CellType.FORMULA){
val = cell.getCellFormula();
}else if (cell.getCellType() == CellType.BOOLEAN){
val = cell.getBooleanCellValue();
}else if (cell.getCellType() == CellType.ERROR){
val = cell.getErrorCellValue();
}
}
}catch (Exception e) {
return val;
}
return val;
}
public List<List<String>> getDataList(){
List<List<String>> data = new ArrayList<>();
int sum = sheet.getLastRowNum();
Row fristCount = sheet.getRow(0);
int cellCount = fristCount.getLastCellNum();
for(int i=headerNum;i<=sum;i++){
Row row = sheet.getRow(i);
List<String> list = new ArrayList<>();
for(int j=0;j<cellCount;j++){
String result = "";
result = getCellValue(row, j).toString();
list.add(result.trim());
}
data.add(list);
}
return data;
}
public List<Map<String,Object>> getDataListMap(){
List<Map<String,Object>> data = new ArrayList<>();
int sum = sheet.getLastRowNum();
for(int i=headerNum;i<=sum;i++){
Row row = sheet.getRow(i);
if(row!=null && row.getCell(0)!=null && !"".equals(row.getCell(0))){
Map<String,Object> map = new LinkedHashMap<String,Object>();
int cellCount = row.getLastCellNum();
for(int j=0;j<cellCount;j++){
String result = "";
result = getCellValue(row, j).toString();
map.put(index[j], result);
}
data.add(map);
}
}
return data;
}
static String[] index = {"a","b","c","d","e","f","g","h","i","j","k","l","m"
,"n","o","p","q","r","s","t","u","v","w","x","y","z"
,"aa","ab","ac","ad","ae","af","ag","ah","ai","aj","ak","al","am"
,"an","ao","ap","aq","ar","as","at","au","av","aw","ax","ay","az"
,"ba","bb","bc","bd","be","bf","bg","bh","bi","bj","bk","bl","bm"
,"bn","bo","bp","bq","br","bs","bt","bu","bv","bw","bx","by","bz"
,"ca","cb","cc","cd","ce","cf","cg","ch","ci","cj","ck","cl","cm"
,"cn","co","cp","cq","cr","cs","ct","cu","cv","cw","cx","cy","cz"};
// /**
// * 导入测试
// */
// public static void main(String[] args) throws Throwable {
//
// ImportExcel ei = new ImportExcel("target/export.xlsx", 1);
//
// for (int i = ei.getDataRowNum(); i < ei.getLastDataRowNum(); i++) {
// Row row = ei.getRow(i);
// for (int j = 0; j < ei.getLastCellNum(); j++) {
// Object val = ei.getCellValue(row, j);
// System.out.print(val+", ");
// }
// System.out.print("\n");
// }
//
// }
}
package com.winsun.controller;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
......@@ -17,15 +13,17 @@ import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.winsun.auth.core.util.DateUtil;
import com.winsun.bean.*;
import com.winsun.mapper.AppMapper;
import com.winsun.mapper.SchoolMapper;
import com.winsun.mapper.SysUserMapper;
import com.winsun.utils.ImportExcel;
import com.winsun.utils.YrymReportUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -42,6 +40,7 @@ import com.winsun.constant.OrderStatus;
import com.winsun.mapper.OrderMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author: dongyp
......@@ -52,18 +51,25 @@ import lombok.extern.slf4j.Slf4j;
@RequestMapping("/order")
public class OrderController extends BaseController {
private static final int HEADER_NUM = -1;
private static final int SHEET_INDEX = 0;
private static OrderMapper orderMapper;
private static SchoolMapper schoolMapper;
private static SysUserMapper sysUserMapper;
private static AppMapper appMapper;
@Autowired
public OrderController(OrderMapper orderMapper) {
public OrderController(OrderMapper orderMapper, SchoolMapper schoolMapper, SysUserMapper sysUserMapper, AppMapper appMapper) {
OrderController.orderMapper = orderMapper;
OrderController.schoolMapper = schoolMapper;
OrderController.sysUserMapper = sysUserMapper;
OrderController.appMapper = appMapper;
}
@Autowired
private SchoolMapper schoolMapper;
@Autowired
private SysUserMapper sysUserMapper;
/**
* @param createTimeStart 订单创建时间开始
......@@ -79,7 +85,6 @@ public class OrderController extends BaseController {
* @param hehuorenName 合伙人姓名
* @param orderStatus 订单状态
* @param customerName 客户姓名
* @param pageIndex
* @param pageSize
* @return
*/
......@@ -341,7 +346,7 @@ public class OrderController extends BaseController {
//周
Wrapper<Order> weekWrapper = commonWrapper.clone();
if (StringUtils.isNotBlank(endTime)) {
weekWrapper.addFilter("DATE(success_time) >= DATE_SUB(DATE('"+endTime+"'), INTERVAL 7 DAY)");
weekWrapper.addFilter("DATE(success_time) >= DATE_SUB(DATE('" + endTime + "'), INTERVAL 7 DAY)");
} else {
weekWrapper.addFilter("DATE(success_time) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)");
}
......@@ -349,7 +354,7 @@ public class OrderController extends BaseController {
//月
Wrapper<Order> monthWrapper = commonWrapper.clone();
if (StringUtils.isNotBlank(endTime)) {
monthWrapper.addFilter("DATE(success_time) >= DATE_SUB(DATE('"+endTime+"'), INTERVAL 30 DAY)");
monthWrapper.addFilter("DATE(success_time) >= DATE_SUB(DATE('" + endTime + "'), INTERVAL 30 DAY)");
} else {
monthWrapper.addFilter("DATE(success_time) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)");
}
......@@ -369,4 +374,373 @@ public class OrderController extends BaseController {
YrymReportUtils.setAllSum(resultList);
return resultList;
}
/**
* 受理订单
*
* @param file 上传的数据文件
* @return
*/
@Permission(menuname = "上传数据", value = "importDate", method = RequestMethod.POST)
public ResponseData<String> updateDatas(@RequestParam(name = "file") MultipartFile file) {
StringBuffer error = new StringBuffer();
if (!StringUtils.endsWithAny(file.getOriginalFilename(), "xlsx", "xls")) {
return ResponseData.error("手工上传数据仅支持Excel文件,其他格式不支持!");
}
ShiroUser user = getShiroUser();
// 当前是否有数据权限
boolean hasDataPermission = user.getRoleNames().stream().anyMatch(data -> StringUtils.equalsAny(data, "活动上单员", "数据管理员", "超级管理员"));
if (!hasDataPermission) {
return ResponseData.error("无数据权限!");
}
ImportExcel importExcel = null;
try {
importExcel = new ImportExcel(file, HEADER_NUM, SHEET_INDEX);
} catch (Exception e) {
log.info("受理单导入异常", e.getMessage());
return ResponseData.error("导入异常!");
}
List<Map<String, Object>> listMap = importExcel.getDataListMap();
if (listMap.size() == 1) {
return ResponseData.error("文件不能为空");
}
if (!listMap.get(0).get("a").toString().equals("订单编号(必填)")) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("b").toString().equals("受理结果(必填)")) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("c").toString().equals("受理人(必填)")) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("d").toString().equals("备注(受理不成功需填写不成功原因)")) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (listMap.get(0).size() != 4) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
//校验数据
try {
//校验数据
for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> temp = listMap.get(i);
if (!temp.containsKey("a")) {
return ResponseData.error("第" + (i + 1) + "行的订单编号不能为空");
}
if (StringUtils.isBlank(temp.get("a").toString())) {
return ResponseData.error("第" + (i + 1) + "行的订单编号不能为空");
}
if (!temp.containsKey("b")) {
return ResponseData.error("第" + (i + 1) + "行的受理结果不能为空");
}
if (StringUtils.isBlank(temp.get("b").toString())) {
return ResponseData.error("第" + (i + 1) + "行的受理结果不能为空");
}
if (!temp.containsKey("c")) {
return ResponseData.error("第" + (i + 1) + "行的受理人不能为空");
}
if (StringUtils.isBlank(temp.get("c").toString())) {
return ResponseData.error("第" + (i + 1) + "行的受理人不能为空");
}
if ("受理不成功".equals(temp.get("b").toString())) {
if (!temp.containsKey("d")) {
return ResponseData.error("第" + (i + 1) + "行的备注不能为空");
}
if (StringUtils.isBlank(temp.get("d").toString())) {
return ResponseData.error("第" + (i + 1) + "行的备注不能为空");
}
}
}
//检查excel表中是否有重复人员编号
int size = listMap.size();
Set<String> accountSet = new HashSet<>(size);
for (int i = 0; i < size; i++) {
Map<String, Object> temp = listMap.get(i);
accountSet.add((String) temp.get("a"));
}
if (accountSet.size() != size) {
return ResponseData.error("文件中有重复的订单编号,请确认订单编号不能重复!");
}
} catch (Exception e) {
log.info("受理单导入异常", e.getMessage());
return ResponseData.error("导入异常!");
}
int number = 0;
Date acceptDate = new Date();
for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> map = listMap.get(i);
String orderNumber = map.get("a").toString();
String acceptResult = map.get("b").toString();
String acceptName = map.get("c").toString();
String acceptComment = null;
String orderStatus = null;
String status = null;
if (StringUtils.isNotBlank(map.get("d").toString())) {
acceptComment = map.get("d").toString();
}
if ("受理成功".equals(map.get("b").toString())) {
orderStatus = "已完成";
status = "受理成功";
} else {
orderStatus = "异常单";
status = "受理失败," + acceptComment;
}
Integer integer = null;
if (StringUtils.isNotBlank(acceptComment)) {
integer = orderMapper.updateOrderSUByOrderNumberIsNotNull(orderNumber, orderStatus, acceptName, acceptResult, acceptComment, acceptDate);
} else {
integer = orderMapper.updateOrderSUByOrderNumberIsNull(orderNumber, orderStatus, acceptName, acceptResult, acceptDate);
}
if (integer == 1) {
number++;
String id = orderMapper.selectIdByOrderNumber(orderNumber);
appMapper.inserOrderHis(id, status, acceptDate, user.getName());
} else {
error.append("第" + (i + 1) + "行的更新失败,");
}
}
error.append("成功更新" + number + "条数据!");
return ResponseData.success(error.toString(), "导入完成");
}
/**
* 上传快递清单
*
* @param file 上传的数据文件
* @return
*/
@Permission(menuname = "上传快递清单", value = "importExpressDelivery", method = RequestMethod.POST)
public ResponseData<String> importExpressDelivery(@RequestParam(name = "file") MultipartFile file) {
StringBuffer error = new StringBuffer();
if (!StringUtils.endsWithAny(file.getOriginalFilename(), "xlsx", "xls")) {
return ResponseData.error("手工上传数据仅支持Excel文件,其他格式不支持!");
}
ShiroUser user = getShiroUser();
// 当前是否有数据权限
boolean hasDataPermission = user.getRoleNames().stream().anyMatch(data -> StringUtils.equalsAny(data, "活动上单员", "数据管理员", "超级管理员"));
if (!hasDataPermission) {
return ResponseData.error("无数据权限!");
}
ImportExcel importExcel = null;
try {
importExcel = new ImportExcel(file, HEADER_NUM, SHEET_INDEX);
} catch (Exception e) {
log.info("快递单导入异常", e.getMessage());
return ResponseData.error("导入异常!");
}
List<Map<String, Object>> listMap = importExcel.getDataListMap();
if (listMap.size() == 0) {
return ResponseData.error("文件不能为空");
}
if (listMap.get(0).size() != 4) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("a").toString().equals("订单编号(必填)")) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("b").toString().equals("快递方式(必填)")) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("c").toString().equals("快递公司(快递方式为快递必须填写)")) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("d").toString().equals("快递单号(快递方式为快递必须填写)")) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
//校验数据
try {
//校验数据
for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> temp = listMap.get(i);
if (!temp.containsKey("a")) {
return ResponseData.error("第" + (i + 1) + "行的订单编号不能为空");
}
if (StringUtils.isBlank(temp.get("a").toString())) {
return ResponseData.error("第" + (i + 1) + "行的订单编号不能为空");
}
if (!temp.containsKey("b")) {
return ResponseData.error("第" + (i + 1) + "行的快递方式不能为空");
}
if (StringUtils.isBlank(temp.get("b").toString())) {
return ResponseData.error("第" + (i + 1) + "行的快递方式不能为空");
}
if ("快递".equals(temp.get("b").toString())) {
if (!temp.containsKey("c")) {
return ResponseData.error("第" + (i + 1) + "行的快递公司不能为空");
}
if (!temp.containsKey("d")) {
return ResponseData.error("第" + (i + 1) + "行的快递单号不能为空");
}
if (StringUtils.isBlank(temp.get("c").toString())) {
return ResponseData.error("第" + (i + 1) + "行的快递公司不能为空");
}
if (StringUtils.isBlank(temp.get("d").toString())) {
return ResponseData.error("第" + (i + 1) + "行的快递单号不能为空");
}
}
}
//检查excel表中是否有重复人员编号
int size = listMap.size();
Set<String> accountSet = new HashSet<>(size);
for (int i = 0; i < size; i++) {
Map<String, Object> temp = listMap.get(i);
accountSet.add((String) temp.get("a"));
}
if (accountSet.size() != size) {
return ResponseData.error("文件中有重复的订单编号,请确认订单编号不能重复!");
}
} catch (Exception e) {
log.info("快递单导入异常", e.getMessage());
return ResponseData.error("导入异常!");
}
int number = 0;
for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> map = listMap.get(i);
String orderNumber = map.get("a").toString();
String sendType = map.get("b").toString();
String company = null;
String kuaidiOrder = null;
String orderStatus = null;
String xbOrderId = orderMapper.selectxbOrderIdByOrderNumber(orderNumber);
if (StringUtils.isNotBlank(xbOrderId)) {
orderStatus = "待活体";
} else {
orderStatus = "已完成";
}
if ("快递".equals(map.get("b").toString())) {
company = map.get("c").toString();
kuaidiOrder = map.get("d").toString();
}
Integer integer = null;
if (StringUtils.isBlank(company) || StringUtils.isBlank(kuaidiOrder)) {
integer = orderMapper.updateOrderKDIsNull(orderNumber, sendType, orderStatus);
} else {
integer = orderMapper.updateOrderKDIsNotNull(orderNumber, company, kuaidiOrder, sendType, orderStatus);
}
if (integer == 1) {
number++;
String id = orderMapper.selectIdByOrderNumber(orderNumber);
appMapper.inserOrderHis(id, "发货中,快递方式:" + sendType, new Date(), user.getName());
} else {
error.append("第" + (i + 1) + "行的更新失败,");
}
}
error.append("成功更新" + number + "条数据!");
return ResponseData.success(error.toString(), "导入完成");
}
/**
* 受理订单模板下载
*
* @return
*/
@Permission(menuname = "受理单导入模板", method = RequestMethod.POST, value = "downloadMoBan")
public ResponseData downloadMoBan() {
ArrayList<String> columns = new ArrayList<>();
columns.add("订单编号(必填)");
columns.add("受理结果(必填)");
columns.add("受理人(必填)");
columns.add("备注(受理不成功需填写不成功原因)");
ServletOutputStream os = null;
XSSFWorkbook workbook = new XSSFWorkbook();
try {
//创建工作表
XSSFSheet sheet = workbook.createSheet("一人一码受理单");
sheet.setColumnWidth(0, 5000);
sheet.setColumnWidth(2, 4000);
sheet.setColumnWidth(1, 4000);
sheet.setColumnWidth(3, 9000);
//下拉选项
List<String> fengju = new ArrayList<>();
fengju.add("受理不成功");
fengju.add("受理成功");
sheet = this.getXSSFSheet(sheet, fengju, 1, 1);
//添加表头
final XSSFRow row = sheet.createRow(0);
XSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
columns.forEach(val -> {
XSSFCell cell = row.createCell(Math.max(row.getLastCellNum(), 0));
cell.setCellValue(val);
});
HttpServletResponse response = getHttpServletResponse();
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;fileName=data.xlsx");
os = response.getOutputStream();
workbook.write(os);
os.flush();
} catch (IOException e) {
log.error("受理单模板文件出错!" + e.getMessage(), e);
} finally {
IOUtils.closeQuite(workbook, os);
}
return ResponseData.error("受理单模板出错");
}
@Permission(menuname = "快递导入模板", method = RequestMethod.POST, value = "downloadMoBanKD")
public ResponseData downloadMoBanKD() {
ArrayList<String> columns = new ArrayList<>();
columns.add("订单编号(必填)");
columns.add("快递方式(必填)");
columns.add("快递公司(快递方式为快递必须填写)");
columns.add("快递单号(快递方式为快递必须填写)");
ServletOutputStream os = null;
XSSFWorkbook workbook = new XSSFWorkbook();
try {
//创建工作表
XSSFSheet sheet = workbook.createSheet("快递清单");
sheet.setColumnWidth(0, 5000);
sheet.setColumnWidth(2, 9000);
sheet.setColumnWidth(1, 4000);
sheet.setColumnWidth(3, 9000);
//下拉选项
List<String> fengju = new ArrayList<>();
fengju.add("快递");
fengju.add("送货上门");
sheet = this.getXSSFSheet(sheet, fengju, 1, 1);
//添加表头
final XSSFRow row = sheet.createRow(0);
XSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
columns.forEach(val -> {
XSSFCell cell = row.createCell(Math.max(row.getLastCellNum(), 0));
cell.setCellValue(val);
});
HttpServletResponse response = getHttpServletResponse();
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;fileName=data.xlsx");
os = response.getOutputStream();
workbook.write(os);
os.flush();
} catch (IOException e) {
log.error("快递模板文件出错!" + e.getMessage(), e);
} finally {
IOUtils.closeQuite(workbook, os);
}
return ResponseData.error("快递模板出错");
}
XSSFSheet getXSSFSheet(XSSFSheet sheet, List<String> datas, int firstcol, int lastcol) {
if (datas.size() == 0) {
return sheet;
}
String[] strdata = new String[datas.size()];
for (int i = 0; i < datas.size(); i++) {
strdata[i] = datas.get(i);
}
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
XSSFDataValidationConstraint dvConstraint1 = (XSSFDataValidationConstraint) dvHelper.createExplicitListConstraint(strdata);
CellRangeAddressList addressList = new CellRangeAddressList(1, 20000, firstcol, lastcol);
XSSFDataValidation validation = (XSSFDataValidation) dvHelper.createValidation(dvConstraint1, addressList);
sheet.addValidationData(validation);
return sheet;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment