|
|
@@ -2,9 +2,7 @@ package com.goafanti.order.service.impl;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
-import java.io.OutputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
@@ -13,7 +11,6 @@ import java.util.Map;
|
|
|
import java.util.UUID;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
@@ -21,11 +18,6 @@ import org.apache.poi.ss.usermodel.Cell;
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
|
import org.apache.poi.ss.usermodel.Workbook;
|
|
|
-import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
-import org.apache.poi.xssf.usermodel.XSSFCell;
|
|
|
-import org.apache.poi.xssf.usermodel.XSSFCellStyle;
|
|
|
-import org.apache.poi.xssf.usermodel.XSSFRow;
|
|
|
-import org.apache.poi.xssf.usermodel.XSSFSheet;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -49,22 +41,15 @@ import com.goafanti.common.model.TOrderNew;
|
|
|
import com.goafanti.common.model.TOrderTask;
|
|
|
import com.goafanti.common.model.TemporaryReceivables;
|
|
|
import com.goafanti.common.utils.DateUtils;
|
|
|
-import com.goafanti.common.utils.ExportExcelUtil;
|
|
|
import com.goafanti.common.utils.LoggerUtils;
|
|
|
import com.goafanti.core.mybatis.BaseMybatisDao;
|
|
|
import com.goafanti.core.mybatis.page.Pagination;
|
|
|
import com.goafanti.core.shiro.token.TokenManager;
|
|
|
-import com.goafanti.order.bo.OrderListBo;
|
|
|
import com.goafanti.order.bo.ReceivablesListBo;
|
|
|
-import com.goafanti.order.bo.TOrderInvoiceBo;
|
|
|
import com.goafanti.order.bo.TOrderNewBo;
|
|
|
import com.goafanti.order.bo.TemporaryReceivablesBo;
|
|
|
-import com.goafanti.order.enums.ApprovalNewState;
|
|
|
import com.goafanti.order.enums.BonusSubject;
|
|
|
-import com.goafanti.order.enums.LiquidationNewState;
|
|
|
-import com.goafanti.order.enums.ProcessStatus;
|
|
|
import com.goafanti.order.enums.ReceivablesStatus;
|
|
|
-import com.goafanti.order.enums.TransactionSubject;
|
|
|
import com.goafanti.order.service.FundManageOrderService;
|
|
|
import com.goafanti.order.service.OrderBillService;
|
|
|
import com.goafanti.order.service.OrderInvoiceService;
|
|
|
@@ -484,253 +469,4 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
|
|
|
}
|
|
|
return cellValue;
|
|
|
}
|
|
|
-
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Override
|
|
|
- public void exportReceivables(HttpServletResponse response,OrderListBo order, Integer pageSize, Integer pageNo) throws Exception {
|
|
|
- OutputStream out = response.getOutputStream();
|
|
|
- // 财务专员自己的id
|
|
|
- order.setFinanceId(TokenManager.getAdminId());
|
|
|
- //order.setProcessStatus(3);//分配给自己 改为前端 传3未分配 4已分配
|
|
|
- order.setOrderStatus(2);//营销管理员审核通过
|
|
|
- if(pageSize==null||pageSize<0)pageSize=9999;
|
|
|
- if(pageNo==null||pageNo<0)pageNo=1;
|
|
|
- Pagination<OrderListBo> p=(Pagination<OrderListBo>) fundManageOrderService.financeList(order, pageNo, pageSize).get("pagination");
|
|
|
- List<OrderListBo> list=(List<OrderListBo>)p.getList() ;
|
|
|
- if(list.isEmpty())throw new BusinessException(new Error("数据是空的。","数据是空的。"));
|
|
|
- try {
|
|
|
- //设计表头
|
|
|
- String[] comment = {"订单编号", "合同编号","客户名称","订单部门","订单负责人","签单日期","下单日期",
|
|
|
- "签单金额(万元)", "已开票金额(万元)", "已收金额(万元)","总成本(万元)","已付成本(万元)",
|
|
|
- "最近收款(万元)","最近收款时间","结算状态","订单流程","是否特批"};
|
|
|
- String fileName = "收款结算列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
|
|
|
- XSSFWorkbook wb =exportTemplateInfoS(comment,"收款结算",list,0);
|
|
|
- //根据列表编写文档
|
|
|
-
|
|
|
- //返回名称及参数
|
|
|
- response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1"));
|
|
|
- response.setContentType("application/octet-stream;charset=utf-8");
|
|
|
- // 返回数据流
|
|
|
- wb.write(out);
|
|
|
- out.flush();
|
|
|
- out.close();
|
|
|
- } catch (Exception e) {
|
|
|
- throw new BusinessException(new Error("表格生成错误。"));
|
|
|
- }finally {
|
|
|
- out.flush();
|
|
|
- out.close();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Override
|
|
|
- public void exportInvoice(HttpServletResponse response, String orderNo, Integer pageSize, Integer pageNo)throws Exception {
|
|
|
-
|
|
|
- OutputStream out = response.getOutputStream();
|
|
|
- if(pageSize==null||pageSize<0)pageSize=9999;
|
|
|
- if(pageNo==null||pageNo<0)pageNo=1;
|
|
|
- List<TOrderInvoiceBo>list=(List<TOrderInvoiceBo>) orderInvoiceService.salesmanOrderInvoiceList( orderNo, pageNo,pageSize).getList();
|
|
|
-// if(list.isEmpty())throw new BusinessException(new Error("数据是空的。"));
|
|
|
- try {
|
|
|
- //设计表头
|
|
|
- String[] comment = {"编号","订单编号","开票金额(万元)","申请时间","开票状态"};
|
|
|
- String fileName = orderNo+"开票记录列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
|
|
|
- //type 0 收款 1开票 2流水
|
|
|
- XSSFWorkbook wb =exportTemplateInfoS(comment,"开票记录",list,1);
|
|
|
- //根据列表编写文档
|
|
|
-
|
|
|
- //返回名称及参数
|
|
|
- response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1"));
|
|
|
- response.setContentType("application/octet-stream;charset=utf-8");
|
|
|
- // 返回数据流
|
|
|
- wb.write(out);
|
|
|
- out.flush();
|
|
|
- out.close();
|
|
|
- } catch (Exception e) {
|
|
|
- throw new BusinessException(new Error("表格生成错误。"));
|
|
|
- }finally {
|
|
|
- out.flush();
|
|
|
- out.close();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Override
|
|
|
- public void exportMyBill(HttpServletResponse response, TOrderBillNew billNew, Integer pageSize, Integer pageNo)throws Exception {
|
|
|
-
|
|
|
- OutputStream out = response.getOutputStream();
|
|
|
- if(pageSize==null||pageSize<0)pageSize=9999;
|
|
|
- if(pageNo==null||pageNo<0)pageNo=1;
|
|
|
-
|
|
|
- List<TOrderBillNew>list=(List<TOrderBillNew>) orderBillService.myBillList(billNew,pageNo, pageSize).getList();
|
|
|
- try {
|
|
|
- //设计表头
|
|
|
- String[] comment = {"订单编号","合同编号","收款时间","财务流水时间","财务流水号","金额(万元)","收款方","付款方","流水科目","平台流水号","收款类型","备注"};
|
|
|
- String fileName = (billNew.getOrderNo()==null?"":billNew.getOrderNo())+"流水记录列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
|
|
|
- //type 0 收款 1开票 2流水
|
|
|
- XSSFWorkbook wb =exportTemplateInfoS(comment,"流水记录",list,2);
|
|
|
- //根据列表编写文档
|
|
|
- //返回名称及参数
|
|
|
- response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1"));
|
|
|
- response.setContentType("application/octet-stream;charset=utf-8");
|
|
|
- // 返回数据流
|
|
|
- wb.write(out);
|
|
|
- } catch (Exception e) {
|
|
|
- throw new BusinessException(new Error("表格生成错误。"));
|
|
|
- }finally {
|
|
|
- out.flush();
|
|
|
- out.close();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param comment
|
|
|
- * @param fileName
|
|
|
- * @param list
|
|
|
- * @param type 0收款 1开票 2流水
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static XSSFWorkbook exportTemplateInfoS(String[] comment,String fileName,List<?> list,Integer type){
|
|
|
-
|
|
|
- //map 数据 ,comment表头 (列名称)
|
|
|
- //1,创建一个workbook,对应的是一个excel文件
|
|
|
- XSSFWorkbook wb = new XSSFWorkbook();
|
|
|
- //遍历map
|
|
|
- XSSFSheet sheet = wb.createSheet(fileName);
|
|
|
- //3。创建一个row
|
|
|
- XSSFRow row = sheet.createRow(0);
|
|
|
- //4.创建一个cell
|
|
|
- XSSFCell cell = row.createCell(0);
|
|
|
- cell.setCellValue(fileName+"列表");
|
|
|
- XSSFCellStyle style1 = ExportExcelUtil.setCellStyle1(wb);//标题
|
|
|
- XSSFCellStyle style2 = ExportExcelUtil.setCellStyle2(wb);//正文
|
|
|
- cell.setCellStyle(style1);
|
|
|
- //合并列
|
|
|
- sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, comment.length-1));//合并单元格
|
|
|
- //设置其他单位格式
|
|
|
- //创建表头
|
|
|
- XSSFRow row2 = sheet.createRow(1);
|
|
|
- for(int i = 0; i < comment.length; i++){
|
|
|
- sheet.setColumnWidth(i, 3000);//设置列宽
|
|
|
- XSSFCell c = row2.createCell(i);
|
|
|
- c.setCellValue(comment[i]);
|
|
|
- c.setCellStyle(style2);
|
|
|
- }
|
|
|
- switch (type) {
|
|
|
- case 0:
|
|
|
- addSettlementReceivablesList(comment, list, sheet);
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- addSettlementInvoiceList(comment, list, sheet);
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- addSettlementMyBillList(comment, list, sheet);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return wb;
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- private static void addSettlementMyBillList(String[] comment, List<?> list, XSSFSheet sheet) {
|
|
|
- for (TOrderBillNew ob : (List<TOrderBillNew>)list) {
|
|
|
- //新增一行
|
|
|
- XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
|
|
|
- for (int i = 0; i < comment.length; i++) {
|
|
|
- //当前列的只
|
|
|
- String o = "";
|
|
|
- switch (comment[i]) {
|
|
|
-// String[] comment = {"订单编号","合同编号","收款时间","财务流水时间","财务流水号","金额(万元)","收款方","付款方","流水科目","平台流水号","收款类型","备注"};
|
|
|
- case "订单编号": o = ob.getOrderNo(); break;
|
|
|
- case "合同编号": o = ob.getContractNo(); break;
|
|
|
- case "收款时间": o = ob.getCreateTimes(); break;
|
|
|
- case "财务流水时间": o = ob.getFinancialPayTimes(); break;
|
|
|
- case "财务流水号": o = ob.getFinancialPayNo(); break;
|
|
|
- case "金额(万元)": o = ob.getTransactionAmount().toString(); break;
|
|
|
- case "收款方": o = ob.getPayeeName(); break;
|
|
|
- case "付款方": o = ob.getPayerName(); break;
|
|
|
- case "流水科目": o = TransactionSubject.getValueByCode(ob.getTransactionSubject()); break;
|
|
|
- case "平台流水号": o = ob.getBillNo(); break;
|
|
|
- case "收款类型":
|
|
|
- if(ob.getType()==0) {
|
|
|
- o = "手工收款"; break;
|
|
|
- }else if(ob.getType()==1) {
|
|
|
- o = "批量收款"; break;
|
|
|
- }
|
|
|
- case "备注": o = ob.getRemarks(); break;
|
|
|
- default: o = ""; break;
|
|
|
- }
|
|
|
- XSSFCell c = r.createCell(i);
|
|
|
- c.setCellValue(o);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- private static void addSettlementInvoiceList(String[] comment, List<?> list, XSSFSheet sheet) {
|
|
|
- for (TOrderInvoiceBo ob : (List<TOrderInvoiceBo>)list) {
|
|
|
- //新增一行
|
|
|
- XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
|
|
|
- for (int i = 0; i < comment.length; i++) {
|
|
|
- //当前列的只
|
|
|
- String o = "";
|
|
|
- switch (comment[i]) {
|
|
|
-// String[] comment = {"编号","订单编号","开票金额(万元)","申请时间","开票状态"};
|
|
|
- case "编号": o = ob.getId().toString(); break;
|
|
|
- case "订单编号": o = ob.getOrderno(); break;
|
|
|
- case "开票金额(万元)": o = ob.getAmount().toString(); break;
|
|
|
- case "申请时间": o = ob.getCreateTime(); break;
|
|
|
- case "开票状态":
|
|
|
-// 状态 0未提交 1处理中 2通过 3拒绝 4 撤销
|
|
|
- switch(ob.getStatus()) {
|
|
|
- case 1 :o = "处理中"; break;
|
|
|
- case 2 :o = "通过"; break;
|
|
|
- }
|
|
|
- break;
|
|
|
- default: o = ""; break;
|
|
|
- }
|
|
|
- XSSFCell c = r.createCell(i);
|
|
|
- c.setCellValue(o);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- private static void addSettlementReceivablesList(String[] comment, List<?> list, XSSFSheet sheet) {
|
|
|
- for (OrderListBo ob : (List<OrderListBo>)list) {
|
|
|
- //新增一行
|
|
|
- XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
|
|
|
- for (int i = 0; i < comment.length; i++) {
|
|
|
- //当前列的只
|
|
|
- String o = "";
|
|
|
- switch (comment[i]) {
|
|
|
-// "订单编号", "合同编号","客户名称","订单部门","订单负责人","签单日期","下单日期",
|
|
|
-// "签单金额(万元)", "已开票金额(万元)", "已收金额(万元)","最近收款(万元)","结算状态","订单流程","是否特批"}
|
|
|
- case "订单编号": o = ob.getOrderNo().toString(); break;
|
|
|
- case "合同编号": o = ob.getContractNo(); break;
|
|
|
- case "客户名称": o = ob.getBuyerName(); break;
|
|
|
- case "订单部门": o = ob.getDepartmentName(); break;
|
|
|
- case "订单负责人": o = ob.getSellerName(); break;
|
|
|
- case "签单日期": o = ob.getSignTime(); break;
|
|
|
- case "下单日期": o = ob.getCreateTime(); break;
|
|
|
- case "签单金额(万元)":o=ob.getSignTotalAmount().toString();break;
|
|
|
- case "已开票金额(万元)":o=ob.getInvoiceAmount().toString();break;
|
|
|
- case "已收金额(万元)":o=ob.getActuallyTotalAmount().toString();break;
|
|
|
- case "总成本(万元)":o=ob.getCostAmount().toString();break;
|
|
|
- case "已付成本(万元)":o=ob.getPaymentAmount().toString();break;
|
|
|
- case "最近收款(万元)":o=ob.getFinalReceivables().toString();break;
|
|
|
- case "最近收款时间":o=ob.getFinalReceivablesTime();break;
|
|
|
- case "结算状态":o=LiquidationNewState.getValueByCode(ob.getLiquidationStatus());break;
|
|
|
- case "订单流程":o=ProcessStatus.getValueByCode(ob.getProcessStatus());break;
|
|
|
- case "是否特批":o=ApprovalNewState.getValueByCode(ob.getApproval());break;
|
|
|
- default: o = ""; break;
|
|
|
- }
|
|
|
- XSSFCell c = r.createCell(i);
|
|
|
- c.setCellValue(o);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
}
|