Commit e2c062c2 authored by hanfeng's avatar hanfeng

总业绩统计

parent 26d915ea
...@@ -40,25 +40,26 @@ public class TotalPerformanceBiz { ...@@ -40,25 +40,26 @@ public class TotalPerformanceBiz {
/** /**
* 入账数据统计 * 入账数据统计
* @param queryCriteria 查询条件
* *
* @param queryCriteria 查询条件
*/ */
public TotalOrderRevenue entryStatisticalData(QueryCriteria queryCriteria) { public TotalOrderRevenue entryStatisticalData(QueryCriteria queryCriteria) {
//获取总数据 //获取总数据
TotalOrderRevenue totalOrderRevenue = incomeDataProcessing(queryCriteria); TotalOrderRevenue totalOrderRevenue = incomeDataProcessing(queryCriteria);
//设置订单明细并分页 //设置订单明细并分页
getAchievementPageInfo(totalOrderRevenue,queryCriteria); getAchievementPageInfo(totalOrderRevenue, queryCriteria);
return totalOrderRevenue ; return totalOrderRevenue;
} }
/** /**
* 核算总收益 * 核算总收益
* @return *
* @param queryCriteria * @param queryCriteria
* @return
*/ */
private TotalOrderRevenue incomeDataProcessing( QueryCriteria queryCriteria) { private TotalOrderRevenue incomeDataProcessing(QueryCriteria queryCriteria) {
List<Achievement> achievements = baseOrderBiz.entryStatisticalData(queryCriteria); List<Achievement> achievements = baseOrderBiz.entryStatisticalData(queryCriteria);
if (CollectionUtil.isEmpty(achievements)) { if (CollectionUtil.isEmpty(achievements)) {
...@@ -67,37 +68,39 @@ public class TotalPerformanceBiz { ...@@ -67,37 +68,39 @@ public class TotalPerformanceBiz {
//应收总额 //应收总额
BigDecimal totalReceivables = BigDecimal.ZERO; BigDecimal totalReceivables = BigDecimal.ZERO;
//优惠总额 //优惠总额
BigDecimal discount=BigDecimal.ZERO; BigDecimal discount = BigDecimal.ZERO;
//实收总额 //实收总额
BigDecimal actual =BigDecimal.ZERO; BigDecimal actual = BigDecimal.ZERO;
for (Achievement achievement : achievements) { for (Achievement achievement : achievements) {
totalReceivables=totalReceivables.add(achievement.getOrderAmount()); totalReceivables = totalReceivables.add(achievement.getOrderAmount());
actual=actual.add(achievement.getRealAmount()); actual = actual.add(achievement.getRealAmount());
discount=discount.add(achievement.getOrderAmount().subtract(achievement.getRealAmount())); discount = discount.add(achievement.getOrderAmount().subtract(achievement.getRealAmount()));
} }
return TotalOrderRevenue return TotalOrderRevenue
.builder() .builder()
.orderSum(achievements.size()) .orderSum(achievements.size())
.totalReceivables(totalReceivables) .totalReceivables(totalReceivables)
.discount(discount) .discount(discount)
.actual(actual) .actual(actual)
.build(); .build();
} }
/** /**
* 设置支出明细 * 设置支出明细
*
* @param totalOrderRevenue * @param totalOrderRevenue
* @param queryCriteria 条件 * @param queryCriteria 条件
*/ */
private void getAchievementPageInfo(TotalOrderRevenue totalOrderRevenue, QueryCriteria queryCriteria){ private void getAchievementPageInfo(TotalOrderRevenue totalOrderRevenue, QueryCriteria queryCriteria) {
PageInfo<Achievement> achievementPageInfo = baseOrderBiz.getAchievementPageInfo(queryCriteria); PageInfo<Achievement> achievementPageInfo = baseOrderBiz.getAchievementPageInfo(queryCriteria);
totalOrderRevenue.setAchievements(achievementPageInfo); totalOrderRevenue.setAchievements(achievementPageInfo);
} }
/** /**
* 获取支出明细 * 获取支出明细
*
* @param queryCriteria * @param queryCriteria
* @return * @return
*/ */
...@@ -108,11 +111,12 @@ public class TotalPerformanceBiz { ...@@ -108,11 +111,12 @@ public class TotalPerformanceBiz {
return Lists.newArrayList(); return Lists.newArrayList();
} }
//拆分明细 //拆分明细
return splitReturnOrderAmountList(returnOrderAmounts); return splitReturnOrderAmountList(returnOrderAmounts);
} }
/** /**
* 进行对支出记录拆分,拆分为-押金、订单和违章 * 进行对支出记录拆分,拆分为-押金、订单和违章
*
* @param returnOrderAmounts * @param returnOrderAmounts
* @return * @return
*/ */
...@@ -125,25 +129,23 @@ public class TotalPerformanceBiz { ...@@ -125,25 +129,23 @@ public class TotalPerformanceBiz {
BigDecimal depositAmount = accountDetailStr.getDepositAmount(); BigDecimal depositAmount = accountDetailStr.getDepositAmount();
//订单退还 //订单退还
BigDecimal orderAmount = accountDetailStr.getOrderAmount(); BigDecimal orderAmount = accountDetailStr.getOrderAmount();
//判断押金退还是否大于0 if (OrderTypeEnum.RENT_VEHICLE.getCode().equals(returnOrderAmount.getTypeInt())&&depositAmount.compareTo(BigDecimal.ZERO) > 0) {
if ( depositAmount.compareTo(BigDecimal.ZERO)>0) { //判断押金退还是否大于0
ReturnOrderAmount returnOrderAmountClone = ObjectUtil.clone(returnOrderAmount); ReturnOrderAmount returnOrderAmountClone = ObjectUtil.clone(returnOrderAmount);
//判断是违章还是租车 //判断是违章还是租车
if (OrderTypeEnum.RENT_VEHICLE.equals(returnOrderAmount.getTypeInt())) {
if (AccountTypeEnum.OUT_RESIDUE_DEPOSIT.getCode().equals(returnOrderAmount.getAccountType())) { if (AccountTypeEnum.OUT_RESIDUE_DEPOSIT.getCode().equals(returnOrderAmount.getAccountType())) {
returnOrderAmountClone.setRefundInstruction("违章押金"); returnOrderAmountClone.setRefundInstruction("违章押金");
returnOrderAmountClone.setRefundAmount(accountDetailStr.getDepositAmount()); returnOrderAmountClone.setRefundAmount(accountDetailStr.getDepositAmount());
}else { } else {
returnOrderAmountClone.setRefundInstruction("租车押金"); returnOrderAmountClone.setRefundInstruction("租车押金");
returnOrderAmountClone.setRefundAmount(accountDetailStr.getDepositAmount()); returnOrderAmountClone.setRefundAmount(accountDetailStr.getDepositAmount());
} }
} arrayList.add(returnOrderAmountClone);
arrayList.add(returnOrderAmountClone);
} }
//判断订单退款是否大于0 //判断订单退款是否大于0
if (orderAmount.compareTo(BigDecimal.ZERO)>0) { if (orderAmount.compareTo(BigDecimal.ZERO) > 0) {
ReturnOrderAmount returnOrderAmountClone = ObjectUtil.clone(returnOrderAmount); ReturnOrderAmount returnOrderAmountClone = ObjectUtil.clone(returnOrderAmount);
returnOrderAmountClone.setRefundInstruction("订单退款"); returnOrderAmountClone.setRefundInstruction("订单退款");
returnOrderAmountClone.setRefundAmount(accountDetailStr.getOrderAmount()); returnOrderAmountClone.setRefundAmount(accountDetailStr.getOrderAmount());
...@@ -157,6 +159,7 @@ public class TotalPerformanceBiz { ...@@ -157,6 +159,7 @@ public class TotalPerformanceBiz {
/** /**
* 导出入账记录 * 导出入账记录
*
* @param queryCriteria * @param queryCriteria
* @param name * @param name
* @param outputStream * @param outputStream
...@@ -167,25 +170,25 @@ public class TotalPerformanceBiz { ...@@ -167,25 +170,25 @@ public class TotalPerformanceBiz {
XSSFSheet sheet = hssfWorkbook.createSheet("收入"); XSSFSheet sheet = hssfWorkbook.createSheet("收入");
CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook); CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook);
XSSFRow row1 = sheet.createRow(0); XSSFRow row1 = sheet.createRow(0);
String[] head =new String[]{"下单时间","订单ID","订单类型","应收金额","优惠金额","实收金额","客户姓名","客户手机号","邀约人/身份","要约人手机号","业绩所属公司","支付方式"}; String[] head = new String[]{"下单时间", "订单ID", "订单类型", "应收金额", "优惠金额", "实收金额", "客户姓名", "客户手机号", "邀约人/身份", "要约人手机号", "业绩所属公司", "支付方式"};
createHeader(row1,0,head,generalCellStyle); createHeader(row1, 0, head, generalCellStyle);
List<Achievement> achievements = baseOrderBiz.entryStatisticalData(queryCriteria); List<Achievement> achievements = baseOrderBiz.entryStatisticalData(queryCriteria);
if (CollectionUtil.isEmpty(achievements)) { if (CollectionUtil.isEmpty(achievements)) {
throw new BaseException("无数据"); throw new BaseException("无数据");
} }
List<String[]> achievementArray =getAchievementArrays(achievements,12); List<String[]> achievementArray = getAchievementArrays(achievements, 12);
createCellData(sheet,1,generalCellStyle,achievementArray); createCellData(sheet, 1, generalCellStyle, achievementArray);
//设置最后一行 //设置最后一行
int lastRowNum = sheet.getLastRowNum(); int lastRowNum = sheet.getLastRowNum();
XSSFRow rown = sheet.createRow(lastRowNum); XSSFRow rown = sheet.createRow(lastRowNum);
//设置第一列 //设置第一列
XSSFCell cell1 = rown.createCell(0); XSSFCell cell1 = rown.createCell(0);
cell1.setCellValue("合计"); cell1.setCellValue("合计");
//第五列求和 //第五列求和
int[] cel= new int[]{3,4,5}; int[] cel = new int[]{3, 4, 5};
sum(sheet, lastRowNum,cel); sum(sheet, lastRowNum, cel);
hssfWorkbook.write(outputStream); hssfWorkbook.write(outputStream);
hssfWorkbook.close(); hssfWorkbook.close();
} }
...@@ -203,36 +206,36 @@ public class TotalPerformanceBiz { ...@@ -203,36 +206,36 @@ public class TotalPerformanceBiz {
/** /**
* 获取入账数组 * 获取入账数组
*
* @param achievements * @param achievements
* @param length * @param length
* @return * @return
*/ */
private List<String[]> getAchievementArrays(List<Achievement> achievements, int length) { private List<String[]> getAchievementArrays(List<Achievement> achievements, int length) {
ArrayList<String[]> arrayList = Lists.newArrayList(); ArrayList<String[]> arrayList = Lists.newArrayList();
for (Achievement achievement : achievements) { for (Achievement achievement : achievements) {
String [] data= new String[length]; String[] data = new String[length];
data[0]=achievement.getCrtTime(); data[0] = achievement.getCrtTime();
data[1]=achievement.getNo(); data[1] = achievement.getNo();
data[2]=achievement.getType(); data[2] = achievement.getType();
data[3]=achievement.getOrderAmount().toString(); data[3] = achievement.getOrderAmount().toString();
data[4]=achievement.getFavorablePrice().toString(); data[4] = achievement.getFavorablePrice().toString();
data[5]=achievement.getRealAmount().toString(); data[5] = achievement.getRealAmount().toString();
data[6]=achievement.getRealname(); data[6] = achievement.getRealname();
data[7]=achievement.getUsername(); data[7] = achievement.getUsername();
data[8]=String.format("%s/%s",achievement.getParentRealname()==null?"":achievement.getParentRealname(),achievement.getPositionName()==null?"":achievement.getPositionName()); data[8] = String.format("%s/%s", achievement.getParentRealname() == null ? "" : achievement.getParentRealname(), achievement.getPositionName() == null ? "" : achievement.getPositionName());
data[9]=achievement.getParentUsername(); data[9] = achievement.getParentUsername();
data[10]=achievement.getCompanyName(); data[10] = achievement.getCompanyName();
data[11]=achievement.getPayWay(); data[11] = achievement.getPayWay();
arrayList.add(data); arrayList.add(data);
} }
return arrayList; return arrayList;
} }
/** /**
* 导出支出 * 导出支出
*
* @param queryCriteria * @param queryCriteria
* @param name * @param name
* @param outputStream * @param outputStream
...@@ -243,63 +246,59 @@ public class TotalPerformanceBiz { ...@@ -243,63 +246,59 @@ public class TotalPerformanceBiz {
CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook); CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook);
XSSFRow row1 = sheet.createRow(0); XSSFRow row1 = sheet.createRow(0);
String[] head =new String[]{"退款日期","订单ID","订单类型","退还类型","退还押金","客户名","客户手机号"}; String[] head = new String[]{"退款日期", "订单ID", "订单类型", "退还类型", "退还押金", "客户名", "客户手机号"};
createHeader(row1,0,head,generalCellStyle); createHeader(row1, 0, head, generalCellStyle);
List<ReturnOrderAmount> returnOrderAmounts = outStatisticalData(queryCriteria); List<ReturnOrderAmount> returnOrderAmounts = outStatisticalData(queryCriteria);
List<String[]> achievementArray =getReturnOrderAmountArrays(returnOrderAmounts,7); List<String[]> achievementArray = getReturnOrderAmountArrays(returnOrderAmounts, 7);
if (CollectionUtil.isEmpty(achievementArray)) { if (CollectionUtil.isEmpty(achievementArray)) {
throw new BaseException("无数据"); throw new BaseException("无数据");
} }
createCellData(sheet,1,generalCellStyle,achievementArray); createCellData(sheet, 1, generalCellStyle, achievementArray);
//设置最后一行 //设置最后一行
int lastRowNum = sheet.getLastRowNum(); int lastRowNum = sheet.getLastRowNum();
XSSFRow rown = sheet.createRow(lastRowNum); XSSFRow rown = sheet.createRow(lastRowNum);
//设置第一列 //设置第一列
XSSFCell cell1 = rown.createCell(0); XSSFCell cell1 = rown.createCell(0);
cell1.setCellValue("合计"); cell1.setCellValue("合计");
//第五列求和 //第五列求和
String colString = CellReference.convertNumToColString(4); String colString = CellReference.convertNumToColString(4);
//该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置) //该求和公式的意思就是:sum(第几列+第几个 : 第几列+需要累计到的第几个单元格位置)
String sumstring = "SUM(" + colString + "2:" + colString + (lastRowNum) + ")"; String sumstring = "SUM(" + colString + "2:" + colString + (lastRowNum) + ")";
sheet.getRow(lastRowNum).createCell(4).setCellFormula(sumstring); sheet.getRow(lastRowNum).createCell(4).setCellFormula(sumstring);
hssfWorkbook.write(outputStream); hssfWorkbook.write(outputStream);
hssfWorkbook.close(); hssfWorkbook.close();
} }
/** /**
* 获取支出数组 * 获取支出数组
*
* @param returnOrderAmounts * @param returnOrderAmounts
* @param length * @param length
* @return * @return
*/ */
private List<String[]> getReturnOrderAmountArrays(List<ReturnOrderAmount> returnOrderAmounts, int length) { private List<String[]> getReturnOrderAmountArrays(List<ReturnOrderAmount> returnOrderAmounts, int length) {
ArrayList<String[]> arrayList = Lists.newArrayList(); ArrayList<String[]> arrayList = Lists.newArrayList();
for (ReturnOrderAmount returnOrderAmount : returnOrderAmounts) { for (ReturnOrderAmount returnOrderAmount : returnOrderAmounts) {
String [] data= new String[length]; String[] data = new String[length];
data[0]=returnOrderAmount.getTime(); data[0] = returnOrderAmount.getTime();
data[1]=returnOrderAmount.getNo(); data[1] = returnOrderAmount.getNo();
data[2]=returnOrderAmount.getType(); data[2] = returnOrderAmount.getType();
data[3]=returnOrderAmount.getRefundInstruction(); data[3] = returnOrderAmount.getRefundInstruction();
data[4]=returnOrderAmount.getRefundAmount().toString(); data[4] = returnOrderAmount.getRefundAmount().toString();
data[5]=returnOrderAmount.getRealname(); data[5] = returnOrderAmount.getRealname();
data[6]=returnOrderAmount.getUsername(); data[6] = returnOrderAmount.getUsername();
arrayList.add(data); arrayList.add(data);
} }
return arrayList; return arrayList;
} }
private CellStyle createGeneralCellStyle(XSSFWorkbook hssfWorkbook) {
private CellStyle createGeneralCellStyle(XSSFWorkbook hssfWorkbook){
CellStyle cellStyleGeneral = createHeaderCellStyle(hssfWorkbook); CellStyle cellStyleGeneral = createHeaderCellStyle(hssfWorkbook);
cellStyleGeneral.setWrapText(true); cellStyleGeneral.setWrapText(true);
XSSFFont generalFont = createFont(hssfWorkbook); XSSFFont generalFont = createFont(hssfWorkbook);
...@@ -309,18 +308,19 @@ public class TotalPerformanceBiz { ...@@ -309,18 +308,19 @@ public class TotalPerformanceBiz {
} }
private void createHeader(Row row, int cellStartIndex, String[] header, CellStyle cellStyle){ private void createHeader(Row row, int cellStartIndex, String[] header, CellStyle cellStyle) {
for (int i =0 ;i<header.length;i++){ for (int i = 0; i < header.length; i++) {
Cell cell = row.createCell(cellStartIndex); Cell cell = row.createCell(cellStartIndex);
cell.setCellValue(header[i]); cell.setCellValue(header[i]);
cell.setCellStyle(cellStyle); cell.setCellStyle(cellStyle);
cellStartIndex+=1; cellStartIndex += 1;
} }
} }
private CellStyle createHeaderCellStyle(XSSFWorkbook hssfWorkbook){ private CellStyle createHeaderCellStyle(XSSFWorkbook hssfWorkbook) {
XSSFCellStyle cellStyleHeader = hssfWorkbook.createCellStyle(); XSSFCellStyle cellStyleHeader = hssfWorkbook.createCellStyle();
cellStyleHeader.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,#0")); XSSFDataFormat dataFormat = hssfWorkbook.createDataFormat();
cellStyleHeader.setDataFormat(dataFormat.getFormat("#,##0.00"));
cellStyleHeader.setAlignment(HorizontalAlignment.CENTER); cellStyleHeader.setAlignment(HorizontalAlignment.CENTER);
cellStyleHeader.setVerticalAlignment(VerticalAlignment.CENTER); cellStyleHeader.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyleHeader.setLocked(false); cellStyleHeader.setLocked(false);
...@@ -336,17 +336,17 @@ public class TotalPerformanceBiz { ...@@ -336,17 +336,17 @@ public class TotalPerformanceBiz {
} }
private XSSFFont createFont(XSSFWorkbook hssfWorkbook){ private XSSFFont createFont(XSSFWorkbook hssfWorkbook) {
XSSFFont font = hssfWorkbook.createFont(); XSSFFont font = hssfWorkbook.createFont();
font.setFontName("黑体"); font.setFontName("黑体");
font.setBold(true); font.setBold(true);
return font; return font;
} }
private void createCellData(Sheet sheet,int startRowIndex,CellStyle cellStyle,List<String[]> memberOrderList){ private void createCellData(Sheet sheet, int startRowIndex, CellStyle cellStyle, List<String[]> memberOrderList) {
for (String[] data : memberOrderList) { for (String[] data : memberOrderList) {
Row row = sheet.createRow(startRowIndex++); Row row = sheet.createRow(startRowIndex++);
createHeader(row,0,data,cellStyle); createHeader(row, 0, 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