Commit 36b43985 authored by hanfeng's avatar hanfeng

总业绩统计

parent e2c062c2
......@@ -5,13 +5,16 @@ import cn.hutool.core.util.ObjectUtil;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.xxfc.platform.order.contant.enumerate.AccountTypeEnum;
import com.xxfc.platform.order.contant.enumerate.BookkeepingTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.pojo.Achievement;
import com.xxfc.platform.order.pojo.QueryCriteria;
import com.xxfc.platform.order.pojo.ReturnOrderAmount;
import com.xxfc.platform.order.pojo.TotalOrderRevenue;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import io.swagger.models.auth.In;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
......@@ -25,7 +28,9 @@ import javax.servlet.ServletOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 总业绩报表service层
......@@ -166,17 +171,21 @@ public class TotalPerformanceBiz {
*/
public void exportEntry(QueryCriteria queryCriteria, String name, ServletOutputStream outputStream) throws IOException {
XSSFWorkbook hssfWorkbook = new XSSFWorkbook();
XSSFSheet sheet = hssfWorkbook.createSheet("收入");
CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook);
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("收入");
CellStyle generalCellStyle = createGeneralCellStyle(wb);
XSSFRow row1 = sheet.createRow(0);
String[] head = new String[]{"下单时间", "订单ID", "订单类型", "应收金额", "优惠金额", "实收金额", "客户姓名", "客户手机号", "邀约人/身份", "要约人手机号", "业绩所属公司", "支付方式"};
createHeader(row1, 0, head, generalCellStyle);
createHeader(row1, head, generalCellStyle);
List<Achievement> achievements = baseOrderBiz.entryStatisticalData(queryCriteria);
if (CollectionUtil.isEmpty(achievements)) {
throw new BaseException("无数据");
}
List<String[]> achievementArray = getAchievementArrays(achievements, 12);
//计算合计
HashMap<Integer, BigDecimal> map = Maps.newHashMap();
List<String[]> achievementArray = getAchievementArrays(achievements, 12,map);
createCellData(sheet, 1, generalCellStyle, achievementArray);
......@@ -188,18 +197,20 @@ public class TotalPerformanceBiz {
cell1.setCellValue("合计");
//第五列求和
int[] cel = new int[]{3, 4, 5};
sum(sheet, lastRowNum, cel);
hssfWorkbook.write(outputStream);
hssfWorkbook.close();
sum(rown, cel,map);
wb.write(outputStream);
wb.close();
}
public void sum(XSSFSheet sheet, int lastRowNum, int[] cel) {
for (int i : cel) {
String colString = CellReference.convertNumToColString(i);
//该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
String sumstring = "SUM(" + colString + "2:" + colString + (lastRowNum) + ")";
sheet.getRow(lastRowNum).createCell(i).setCellFormula(sumstring);
public void sum(XSSFRow row, int[] cel, Map<Integer, BigDecimal> map) {
for (int i = 0; i < cel.length; i++) {
// String colString = CellReference.convertNumToColString(i);
// //该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
// String sumstring = "SUM(" + colString + "2:" + colString + (lastRowNum) + ")";
// sheet.getRow(lastRowNum).createCell(i).setCellFormula(sumstring);
XSSFCell cell = row.createCell(cel[i]);
cell.setCellValue(map.get(i).toString());
}
}
......@@ -211,7 +222,10 @@ public class TotalPerformanceBiz {
* @param length
* @return
*/
private List<String[]> getAchievementArrays(List<Achievement> achievements, int length) {
private List<String[]> getAchievementArrays(List<Achievement> achievements, int length, Map<Integer, BigDecimal> map) {
BigDecimal totalReceivable =BigDecimal.ZERO;
BigDecimal totalReality =BigDecimal.ZERO;
BigDecimal totalDiscount =BigDecimal.ZERO;
ArrayList<String[]> arrayList = Lists.newArrayList();
for (Achievement achievement : achievements) {
String[] data = new String[length];
......@@ -219,8 +233,11 @@ public class TotalPerformanceBiz {
data[1] = achievement.getNo();
data[2] = achievement.getType();
data[3] = achievement.getOrderAmount().toString();
totalReceivable=totalReceivable.add(achievement.getOrderAmount());
data[4] = achievement.getFavorablePrice().toString();
totalReality=totalReality.add(achievement.getFavorablePrice());
data[5] = achievement.getRealAmount().toString();
totalDiscount=totalDiscount.add(achievement.getRealAmount());
data[6] = achievement.getRealname();
data[7] = achievement.getUsername();
data[8] = String.format("%s/%s", achievement.getParentRealname() == null ? "" : achievement.getParentRealname(), achievement.getPositionName() == null ? "" : achievement.getPositionName());
......@@ -229,6 +246,11 @@ public class TotalPerformanceBiz {
data[11] = achievement.getPayWay();
arrayList.add(data);
}
map.put(0,totalReceivable);
map.put(1,totalReality);
map.put(2,totalDiscount);
return arrayList;
}
......@@ -241,17 +263,18 @@ public class TotalPerformanceBiz {
* @param outputStream
*/
public void exportAccount(QueryCriteria queryCriteria, String name, ServletOutputStream outputStream) throws IOException {
XSSFWorkbook hssfWorkbook = new XSSFWorkbook();
XSSFSheet sheet = hssfWorkbook.createSheet("支出");
CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook);
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("支出");
CellStyle generalCellStyle = createGeneralCellStyle(wb);
XSSFRow row1 = sheet.createRow(0);
String[] head = new String[]{"退款日期", "订单ID", "订单类型", "退还类型", "退还押金", "客户名", "客户手机号"};
createHeader(row1, 0, head, generalCellStyle);
createHeader(row1, head, generalCellStyle);
HashMap<String, BigDecimal> map = Maps.newHashMap();
List<ReturnOrderAmount> returnOrderAmounts = outStatisticalData(queryCriteria);
List<String[]> achievementArray = getReturnOrderAmountArrays(returnOrderAmounts, 7);
List<String[]> achievementArray = getReturnOrderAmountArrays(returnOrderAmounts, 7,map);
if (CollectionUtil.isEmpty(achievementArray)) {
throw new BaseException("无数据");
}
......@@ -263,15 +286,16 @@ public class TotalPerformanceBiz {
//设置第一列
XSSFCell cell1 = rown.createCell(0);
cell1.setCellValue("合计");
cell1.setCellStyle(generalCellStyle);
//第五列求和
String colString = CellReference.convertNumToColString(4);
//该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
String sumstring = "SUM(" + colString + "2:" + colString + (lastRowNum) + ")";
sheet.getRow(lastRowNum).createCell(4).setCellFormula(sumstring);
hssfWorkbook.write(outputStream);
hssfWorkbook.close();
// String colString = CellReference.convertNumToColString(4);
// //该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
// String sumstring = "SUM(" + colString + "2:" + colString + (lastRowNum) + ")";
XSSFCell cell = sheet.getRow(lastRowNum).createCell(4);
cell.setCellValue(map.get("totalRefund").toString());
cell.setCellStyle(generalCellStyle);
wb.write(outputStream);
wb.close();
}
/**
......@@ -281,7 +305,8 @@ public class TotalPerformanceBiz {
* @param length
* @return
*/
private List<String[]> getReturnOrderAmountArrays(List<ReturnOrderAmount> returnOrderAmounts, int length) {
private List<String[]> getReturnOrderAmountArrays(List<ReturnOrderAmount> returnOrderAmounts, int length,Map<String,BigDecimal> map) {
BigDecimal totalRefund = BigDecimal.ZERO;
ArrayList<String[]> arrayList = Lists.newArrayList();
for (ReturnOrderAmount returnOrderAmount : returnOrderAmounts) {
String[] data = new String[length];
......@@ -290,36 +315,37 @@ public class TotalPerformanceBiz {
data[2] = returnOrderAmount.getType();
data[3] = returnOrderAmount.getRefundInstruction();
data[4] = returnOrderAmount.getRefundAmount().toString();
totalRefund=totalRefund.add(returnOrderAmount.getRefundAmount());
data[5] = returnOrderAmount.getRealname();
data[6] = returnOrderAmount.getUsername();
arrayList.add(data);
}
map.put("totalRefund",totalRefund);
return arrayList;
}
private CellStyle createGeneralCellStyle(XSSFWorkbook hssfWorkbook) {
CellStyle cellStyleGeneral = createHeaderCellStyle(hssfWorkbook);
private CellStyle createGeneralCellStyle(XSSFWorkbook wb) {
CellStyle cellStyleGeneral = createHeaderCellStyle(wb);
cellStyleGeneral.setWrapText(true);
XSSFFont generalFont = createFont(hssfWorkbook);
XSSFFont generalFont = createFont(wb);
generalFont.setBold(false);
cellStyleGeneral.setFont(generalFont);
return cellStyleGeneral;
}
private void createHeader(Row row, int cellStartIndex, String[] header, CellStyle cellStyle) {
private void createHeader(Row row, String[] header, CellStyle cellStyle) {
for (int i = 0; i < header.length; i++) {
Cell cell = row.createCell(cellStartIndex);
Cell cell = row.createCell(i);
cell.setCellValue(header[i]);
cell.setCellStyle(cellStyle);
cellStartIndex += 1;
}
}
private CellStyle createHeaderCellStyle(XSSFWorkbook hssfWorkbook) {
XSSFCellStyle cellStyleHeader = hssfWorkbook.createCellStyle();
XSSFDataFormat dataFormat = hssfWorkbook.createDataFormat();
private CellStyle createHeaderCellStyle(XSSFWorkbook wb) {
XSSFCellStyle cellStyleHeader = wb.createCellStyle();
XSSFDataFormat dataFormat = wb.createDataFormat();
cellStyleHeader.setDataFormat(dataFormat.getFormat("#,##0.00"));
cellStyleHeader.setAlignment(HorizontalAlignment.CENTER);
cellStyleHeader.setVerticalAlignment(VerticalAlignment.CENTER);
......@@ -329,26 +355,29 @@ public class TotalPerformanceBiz {
cellStyleHeader.setBorderTop(CellStyle.BORDER_THIN);
cellStyleHeader.setBorderRight(CellStyle.BORDER_THIN);
XSSFFont headerFont = createFont(hssfWorkbook);
XSSFFont headerFont = createFont(wb);
cellStyleHeader.setFont(headerFont);
return cellStyleHeader;
}
private XSSFFont createFont(XSSFWorkbook hssfWorkbook) {
XSSFFont font = hssfWorkbook.createFont();
private XSSFFont createFont(XSSFWorkbook wb) {
XSSFFont font = wb.createFont();
font.setFontName("黑体");
font.setBold(true);
return font;
}
private void createCellData(Sheet sheet, int startRowIndex, CellStyle cellStyle, List<String[]> memberOrderList) {
for (String[] data : memberOrderList) {
Row row = sheet.createRow(startRowIndex++);
createHeader(row, 0, data, cellStyle);
createHeader(row, data, cellStyle);
}
}
}
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