|
@@ -1,5 +1,9 @@
|
|
|
package com.yijia.station.controller;
|
|
|
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.DateFormat;
|
|
|
import java.text.ParseException;
|
|
@@ -7,6 +11,8 @@ import java.text.SimpleDateFormat;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
|
|
|
+import com.yijia.common.annotation.Excel;
|
|
|
+import com.yijia.common.config.YiJiaConfig;
|
|
|
import com.yijia.common.core.domain.model.LoginUser;
|
|
|
import com.yijia.common.exception.CustomException;
|
|
|
import com.yijia.common.utils.SecurityUtils;
|
|
@@ -15,6 +21,11 @@ import com.yijia.station.mapper.PayOrderMapper;
|
|
|
import com.yijia.station.service.*;
|
|
|
import com.yijia.station.utils.FeiEPrinterUtil;
|
|
|
import com.yijia.system.service.ISysUserService;
|
|
|
+import org.apache.poi.ss.usermodel.*;
|
|
|
+import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
@@ -42,6 +53,7 @@ import com.yijia.common.core.page.TableDataInfo;
|
|
|
@RequestMapping("/station/structure")
|
|
|
public class StationClassStructureController extends BaseController
|
|
|
{
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(StationClassStructureController.class);
|
|
|
@Autowired
|
|
|
private IStationClassStructureService stationClassStructureService;
|
|
|
@Autowired
|
|
@@ -75,7 +87,6 @@ public class StationClassStructureController extends BaseController
|
|
|
@GetMapping("/listPersonnelStructure")
|
|
|
public TableDataInfo listPersonnelStructure(StationClassStructure stationClassStructure)
|
|
|
{
|
|
|
-
|
|
|
List<StationClassStructure> list = new ArrayList<>();
|
|
|
if(stationClassStructure!=null &&stationClassStructure.getStationId()!=null ){
|
|
|
list = stationClassStructureService.listPersonnelStructure(stationClassStructure);
|
|
@@ -117,9 +128,333 @@ public class StationClassStructureController extends BaseController
|
|
|
@GetMapping("/export")
|
|
|
public AjaxResult export(StationClassStructure stationClassStructure)
|
|
|
{
|
|
|
- List<StationClassStructure> list = stationClassStructureService.selectStationClassStructureExport(stationClassStructure);
|
|
|
- ExcelUtil<StationClassStructure> util = new ExcelUtil<StationClassStructure>(StationClassStructure.class);
|
|
|
- return util.exportExcel(list, "structure");
|
|
|
+ StationClassesSummary stationClassesSummary =new StationClassesSummary();
|
|
|
+ stationClassesSummary.setStationId(stationClassStructure.getStationId());
|
|
|
+ stationClassesSummary.setClassesNo(stationClassStructure.getClassStructureNo());
|
|
|
+ StationClassesSummary summary= stationClassesSummaryService.selectStationClassesSummary(stationClassesSummary);
|
|
|
+ List<StationClassStructure> listPersonnelPay = stationClassStructureService.listPersonnelPayStructure(stationClassStructure);
|
|
|
+ List<StationClassStructure> oillist = stationClassStructureService.listOilStructure(stationClassStructure);
|
|
|
+ List<StationClassStructure> listPersonnel = stationClassStructureService.listPersonnelStructure(stationClassStructure);
|
|
|
+ StationClassStructure listPersonnelPaySum =stationClassStructureService.listPersonnelPayStructureSum(stationClassStructure);
|
|
|
+ StationClassStructure oillistSum =stationClassStructureService.listOilStructureSum(stationClassStructure);
|
|
|
+ StationClassStructure listPersonnelSum =stationClassStructureService.listPersonnelStructureSum(stationClassStructure);
|
|
|
+ AjaxResult ss = exportExcel( summary,listPersonnel,oillist,listPersonnelPay,listPersonnelPaySum,oillistSum,listPersonnelSum, "structure");
|
|
|
+ return ss;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 对list数据源将其里面的数据导入到excel表单
|
|
|
+ *
|
|
|
+ * @param list 导出数据集合
|
|
|
+ * @param sheetName 工作表的名称
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ public AjaxResult exportExcel( StationClassesSummary summary,List<StationClassStructure> listP,List<StationClassStructure> listOil,List<StationClassStructure> list,StationClassStructure listPersonnelPaySum,StationClassStructure oillistSum,StationClassStructure listPersonnelSum, String sheetName)
|
|
|
+ {
|
|
|
+ OutputStream out = null;
|
|
|
+ Workbook wb= new SXSSFWorkbook(500);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Sheet sheet = wb.createSheet("班结数据");
|
|
|
+ sheet.setDefaultColumnWidth(20);//默认列宽20
|
|
|
+ CellStyle style = wb.createCellStyle();
|
|
|
+ CreationHelper createHelper = wb.getCreationHelper();
|
|
|
+ style.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-mm-dd hh:mm:ss"));
|
|
|
+ int rows =listP.size()+listOil.size()+list.size()+10;
|
|
|
+ int personlist =listP.size()+3;
|
|
|
+ int oillist =personlist+3+listOil.size();
|
|
|
+ Cell cell =null;
|
|
|
+ Row row =null;
|
|
|
+ for (int i = 0; i < rows; i++) {
|
|
|
+ if(i == 0) {
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell.setCellValue("班结开始时间:");
|
|
|
+ cell = row.createCell(1);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell.setCellValue(summary.getStartDate());
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell.setCellValue("班结人:");
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell.setCellValue(summary.getClassesMan());
|
|
|
+ }else if(i == 1){// 生成第一行(表头)
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ // 合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(i, i, 0, 5));
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell.setCellValue("按员工汇总");
|
|
|
+ }else {
|
|
|
+ if (i == 2) {
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue("员工姓名");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(1);
|
|
|
+ cell.setCellValue("负责枪号");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue("销量");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue("销额");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue("销售笔数");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ } else if (i > 2 && i < personlist) {
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ int j = i - 3;
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue(listP.get(j).getOilPersonnel());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(1);
|
|
|
+ cell.setCellValue(listP.get(j).getOilGun());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue(listP.get(j).getOrderLiters() + "");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue(listP.get(j).getAmt() + "");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue(listP.get(j).getOrderNo());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ }else if (i == personlist) {
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue("合计");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue(listPersonnelSum.getOrderLiters()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue(listPersonnelSum.getAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue(listPersonnelSum.getOrderNo());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ }else if (i == personlist+1) {
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(i, i, 0, 5));
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell.setCellValue("按油品汇总");
|
|
|
+ } else if (i == personlist + 2) {
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue("油品");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(1);
|
|
|
+ cell.setCellValue("负责枪号");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue("销量");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue("销额");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue("销售笔数");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ } else if (i > personlist+2 && i < oillist) {
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ int j = i - personlist-3;
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue(listOil.get(j).getOilName());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(1);
|
|
|
+ cell.setCellValue(listOil.get(j).getOilGun());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue(listOil.get(j).getOrderLiters().toString());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue(listOil.get(j).getAmt() + "");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue(listOil.get(j).getOrderNo());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ } else if(i==oillist){
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue("合计");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue(oillistSum.getOrderLiters() + "");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue(oillistSum.getAmt() + "");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue(oillistSum.getOrderNo());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ }else if(i==oillist+1){
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(i, i, 0, 11));
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell.setCellValue("按员工/支付方式汇总");
|
|
|
+ }else if(i==oillist+2){
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue("员工姓名");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(1);
|
|
|
+ cell.setCellValue("负责枪号");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue("微信笔数");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue("支付宝笔数");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue("现金笔数");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(5);
|
|
|
+ cell.setCellValue("优惠");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(6);
|
|
|
+ cell.setCellValue("优惠劵");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(7);
|
|
|
+ cell.setCellValue("微信金额");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(8);
|
|
|
+ cell.setCellValue("支付宝金额");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(9);
|
|
|
+ cell.setCellValue("现金金额");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(10);
|
|
|
+ cell.setCellValue("会员卡支付");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ }else if(i<rows-1){
|
|
|
+ int j =i-oillist-3;
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue(list.get(j).getOilPersonnel());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(1);
|
|
|
+ cell.setCellValue(list.get(j).getOilGun());
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue(list.get(j).getWxNum()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue(list.get(j).getZfbNum()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue(list.get(j).getXjNum()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(5);
|
|
|
+ cell.setCellValue(list.get(j).getDiscountAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(6);
|
|
|
+ cell.setCellValue(list.get(j).getDiscountCouponAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(7);
|
|
|
+ cell.setCellValue(list.get(j).getWxAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(8);
|
|
|
+ cell.setCellValue(list.get(j).getZfbAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(9);
|
|
|
+ cell.setCellValue(listP.get(j).getXjAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(10);
|
|
|
+ cell.setCellValue(list.get(j).getMemberAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ }else{
|
|
|
+ row = sheet.createRow(i);
|
|
|
+ cell = row.createCell(0);
|
|
|
+ cell.setCellValue("合计");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(2);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getWxNum()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(3);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getZfbNum()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(4);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getXjNum()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(5);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getDiscountAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(6);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getDiscountCouponAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(7);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getWxAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(8);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getZfbAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(9);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getXjAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ cell = row.createCell(10);
|
|
|
+ cell.setCellValue(listPersonnelPaySum.getMemberAmt()+"");
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String filename = encodingFilename(sheetName);
|
|
|
+ out = new FileOutputStream(getAbsoluteFile(filename));
|
|
|
+ wb.write(out);
|
|
|
+ out.close();// 关闭输出流
|
|
|
+ return AjaxResult.success(filename);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ log.error("导出Excel异常{}", e.getMessage());
|
|
|
+ throw new CustomException("导出Excel失败,请联系网站管理员!");
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ if (wb != null)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ wb.close();
|
|
|
+ }
|
|
|
+ catch (IOException e1)
|
|
|
+ {
|
|
|
+ e1.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (out != null)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ out.close();
|
|
|
+ }
|
|
|
+ catch (IOException e1)
|
|
|
+ {
|
|
|
+ e1.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String encodingFilename(String filename) {
|
|
|
+ filename = UUID.randomUUID().toString() + "_" + filename + ".xlsx";
|
|
|
+ return filename;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getAbsoluteFile(String filename)
|
|
|
+ {
|
|
|
+ String downloadPath = YiJiaConfig.getDownloadPath() + filename;
|
|
|
+ File desc = new File(downloadPath);
|
|
|
+ if (!desc.getParentFile().exists())
|
|
|
+ {
|
|
|
+ desc.getParentFile().mkdirs();
|
|
|
+ }
|
|
|
+ return downloadPath;
|
|
|
}
|
|
|
|
|
|
/**
|