184 lines
6.4 KiB
Java
184 lines
6.4 KiB
Java
package lingtao.net.service;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
import org.apache.shiro.SecurityUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import lingtao.net.bean.FinanceDifference;
|
|
import lingtao.net.bean.Msg;
|
|
import lingtao.net.bean.SysUser;
|
|
import lingtao.net.dao.FinanceDifferenceMapper;
|
|
import lingtao.net.util.ExcelUtils;
|
|
|
|
@Service
|
|
public class FinanceDifferenceService {
|
|
|
|
@Autowired
|
|
private FinanceDifferenceMapper differenceMapper;
|
|
|
|
public List<FinanceDifference> get(FinanceDifference difference) {
|
|
return differenceMapper.get(difference);
|
|
}
|
|
|
|
public Msg ajaxUploadExcel(MultipartFile file) throws Exception {
|
|
if (file.isEmpty()) {
|
|
throw new Exception("文件不存在!");
|
|
}
|
|
SysUser user = (SysUser) SecurityUtils.getSubject().getPrincipal();
|
|
InputStream in = null;
|
|
List<List<Object>> listob = null;
|
|
List<FinanceDifference> list = new ArrayList<FinanceDifference>(1000);
|
|
try {
|
|
in = file.getInputStream();
|
|
listob = new ExcelUtils().getBankListByExcel(in, file.getOriginalFilename());
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
String openOrderNumber = "";
|
|
String filename = file.getOriginalFilename();
|
|
System.out.println(filename);
|
|
for (int i = 0; i < listob.size(); i++) {
|
|
synchronized (this) {
|
|
FinanceDifference vo = new FinanceDifference();
|
|
List<Object> lo = listob.get(i);
|
|
if (lo.size() == 0 || lo.size() == 1 || lo.get(4) == "") {
|
|
System.out.println("++++++++++++++");
|
|
continue;
|
|
}
|
|
String orderNumber = String.valueOf(lo.get(0)).trim();
|
|
String shopname = String.valueOf(lo.get(1)).trim();
|
|
String wangwang = String.valueOf(lo.get(2)).trim();
|
|
String payTime = String.valueOf(lo.get(3)).trim();
|
|
String price = String.valueOf(lo.get(4)).trim();
|
|
String remark = String.valueOf(lo.get(5)).trim();
|
|
String taobaoStatus = String.valueOf(lo.get(6)).trim();
|
|
SimpleDateFormat formatter = null;
|
|
if (payTime.contains("-")) {
|
|
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
} else if (payTime.contains("/")) {
|
|
formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
|
}
|
|
Date pay_time = formatter.parse(payTime);// 把字符串转为日期格式
|
|
vo.setOrderNumber(orderNumber);
|
|
vo.setShopname(shopname);
|
|
vo.setWangwang(wangwang);
|
|
vo.setPayTime(pay_time);
|
|
vo.setPrice(price);
|
|
vo.setRemark(remark);
|
|
vo.setTaobaoStatus(taobaoStatus);
|
|
try {
|
|
openOrderNumber = cutOrderNumber(remark);
|
|
} catch (Exception e) {
|
|
System.out.println(remark);
|
|
}
|
|
// openOrderNumber = remark.replaceAll("[^(0-9)]", "");
|
|
vo.setOpenOrderNumber(openOrderNumber);
|
|
vo.setFilename(filename);
|
|
vo.setCreator(user.getRealname());
|
|
list.add(vo);
|
|
}
|
|
}
|
|
if (list.size() > 0) {
|
|
differenceMapper.insertForeach(list);
|
|
}
|
|
in.close();
|
|
return Msg.success();
|
|
}
|
|
|
|
private String cutOrderNumber(String remark) {
|
|
// 获取字符串中的数字
|
|
// 这个15是指连续数字的最少个数
|
|
Pattern p = Pattern.compile("\\d{15,}");
|
|
Matcher m = p.matcher(remark);
|
|
String openOrder = "";
|
|
while (m.find()) {
|
|
openOrder = m.group();
|
|
}
|
|
if (remark.contains("S_")) {
|
|
if (remark.contains("C")) {
|
|
return "S_C1_" + openOrder;
|
|
} else {
|
|
return "S_" + openOrder;
|
|
}
|
|
}
|
|
return openOrder;
|
|
}
|
|
|
|
public List<String> getAllFilename(String creator) {
|
|
return differenceMapper.getAllFilename(creator);
|
|
}
|
|
|
|
@SuppressWarnings("resource")
|
|
public void excel(HttpServletResponse response, FinanceDifference difference) throws Exception {
|
|
response.setCharacterEncoding("UTF-8");
|
|
List<FinanceDifference> differencesList = new ArrayList<FinanceDifference>();
|
|
SysUser user = (SysUser) SecurityUtils.getSubject().getPrincipal();
|
|
difference.setCreator(user.getRealname());
|
|
differencesList = get(difference);
|
|
|
|
// 创建excel文件
|
|
HSSFWorkbook wb = new HSSFWorkbook();
|
|
// 创建sheet页
|
|
HSSFSheet sheet = wb.createSheet("总表");
|
|
String filename = "";
|
|
// 创建标题行
|
|
HSSFRow titleRow = sheet.createRow(0);
|
|
titleRow.createCell(0).setCellValue("订单号");
|
|
titleRow.createCell(1).setCellValue("店铺");
|
|
titleRow.createCell(2).setCellValue("旺旺");
|
|
titleRow.createCell(3).setCellValue("付款时间");
|
|
titleRow.createCell(4).setCellValue("金额");
|
|
titleRow.createCell(5).setCellValue("备注");
|
|
titleRow.createCell(6).setCellValue("淘宝状态");
|
|
titleRow.createCell(7).setCellValue("拆分订单");
|
|
titleRow.createCell(8).setCellValue("导入人");
|
|
titleRow.createCell(9).setCellValue("导入日期");
|
|
// 遍历将数据放到excel列中
|
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
for (FinanceDifference differences : differencesList) {
|
|
filename = difference.getFilename();
|
|
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
|
|
dataRow.createCell(0).setCellValue(differences.getOrderNumber());
|
|
dataRow.createCell(1).setCellValue(differences.getShopname());
|
|
dataRow.createCell(3).setCellValue("");
|
|
if (differences.getPayTime() != null) {
|
|
dataRow.createCell(3).setCellValue(formatter.format(differences.getPayTime()));
|
|
}
|
|
dataRow.createCell(2).setCellValue(differences.getWangwang());
|
|
dataRow.createCell(4).setCellValue(differences.getPrice());
|
|
dataRow.createCell(5).setCellValue(differences.getRemark());
|
|
dataRow.createCell(6).setCellValue(differences.getTaobaoStatus());
|
|
dataRow.createCell(7).setCellValue(differences.getOpenOrderNumber());
|
|
dataRow.createCell(8).setCellValue(differences.getCreator());
|
|
dataRow.createCell(9).setCellValue(formatter.format(differences.getCreateDate()));
|
|
}
|
|
|
|
// 设置下载时客户端Excel的名称
|
|
response.setContentType("application/octet-stream;charset=utf-8");
|
|
response.setHeader("Content-Disposition",
|
|
"attachment;filename=" + new String(filename.getBytes(), "iso-8859-1"));// + ".xls"
|
|
|
|
OutputStream ouputStream = response.getOutputStream();
|
|
wb.write(ouputStream);
|
|
ouputStream.flush();
|
|
ouputStream.close();
|
|
}
|
|
|
|
}
|