Commit 20d4885b by peterchu

fix:

1. 对接销售明细报表业务
parent ba02c925
......@@ -84,5 +84,11 @@
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
<orderEntry type="library" name="Maven: com.yutu.comm:yutu_common:1.0.37" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastJson:1.2.7" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel:2.2.6" level="project" />
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.2.2" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -127,6 +127,13 @@
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<!-- 使用 common 包中的 NoteResult -->
<dependency>
<groupId>com.yutu.comm</groupId>
<artifactId>yutu_common</artifactId>
<version>1.0.37</version>
</dependency>
</dependencies>
<build>
......
......@@ -27,12 +27,28 @@ public class DownLoadController {
@Autowired
private PrivateFreightService privateFreightService;
/**
* 获取销售数据
* @param requestBody
* @return
*/
@RequestMapping(value = "download/getSaleDetailData.do",method = RequestMethod.POST)
@RequestMapping(value = "download/getSaleDetailData",method = RequestMethod.POST)
public Response getSaleDetail(@RequestBody String requestBody){
return downLoadService.getSaleDetailReportData(requestBody);
}
......@@ -41,16 +57,17 @@ public class DownLoadController {
* @param requestBody
* @return
*/
@RequestMapping(value = "download/saleDetailReport.do",method = RequestMethod.POST)
@RequestMapping(value = "download/saleDetailReport",method = RequestMethod.POST)
public Response saleDetailReport(@RequestBody String requestBody){
return downLoadService.downLoadSaleDetailReport(requestBody);
}
/**
* 下载销售报表(符合查询条件时,直接从数据库SaleDetail表中直接下载获取报表数据)
* 快速导出报表(新)
* @param requestBody
* @return
*/
@RequestMapping(value = "download/saleDetailReportFromAutoSource.do",method = RequestMethod.POST)
@RequestMapping(value = "download/saleDetailReportFromAutoSource",method = RequestMethod.POST)
public Response saleDetailReportFromAutoSource(@RequestBody String requestBody){
return downLoadService.downLoadSaleDetailFromAutoSource(requestBody);
}
......@@ -61,6 +78,7 @@ public class DownLoadController {
*/
@RequestMapping(value = "parse/toSaleDetail",method = RequestMethod.POST)
public Response parseToSaleDetail(@RequestBody String requestBody){
System.out.println("---------------");
return downLoadService.parseToSaleDetail(requestBody);
}
/**
......@@ -68,7 +86,7 @@ public class DownLoadController {
* @param requestBody
* @return
*/
@RequestMapping(value = "download/saleRules.do",method = RequestMethod.POST)
@RequestMapping(value = "download/saleRules",method = RequestMethod.POST)
public Response downLoadSaleRules(@RequestBody String requestBody){
logger.info("下载加价规则,参数:"+requestBody);
return downLoadService.downLoadSaleRules(requestBody);
......@@ -94,7 +112,7 @@ public class DownLoadController {
/**
* 按照指定条件导出私有运价底价配置
*/
@RequestMapping(value = "privateFreight/download.do",method = RequestMethod.POST)
@RequestMapping(value = "privateFreight/download",method = RequestMethod.POST)
public Response exportPrivateFreight(@RequestBody String requestBody){
return privateFreightService.exportPrivateFreight(requestBody);
}
......
package com.yutu.base.controller;
import com.yutu.base.entity.Response;
import com.yutu.base.service.SaleDetailService;
import com.yutu.comm.entity.exception.NoteResult;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 报表管理:
* 销售明细报表
* 销售汇总报表
* 20210319111255
*/
@RestController
@RequestMapping("statementApi/")
public class StatementController {
private Logger logger = Logger.getLogger("download");
@Autowired
private SaleDetailService saleDetailService;
/**
* 销售明细报表页面 获取销售明细数据
* @param requestBody
* @return
*/
@RequestMapping(value = "salesDetail/getSalesDetailList",method = RequestMethod.POST)
public NoteResult getSalesDetailList(@RequestBody String requestBody){
return saleDetailService.getSalesDetailList(requestBody);
}
/**
* 下载销售报表(符合查询条件时,直接从数据库SaleDetail表中直接下载获取报表数据)
* 销售明细报表 导出报表(新)
* @param requestBody
* @return
*/
@RequestMapping(value = "salesDetail/downloadSalesDetailReport",method = RequestMethod.POST)
public NoteResult saleDetailReportFromAutoSource(@RequestBody String requestBody){
return saleDetailService.downloadSalesDetailReportExcel(requestBody);
}
}
......@@ -17,7 +17,7 @@ public class UploadController {
@Autowired
private UploadService uploadService;
@RequestMapping(value = "upload/saleRules.do",method = RequestMethod.POST)
@RequestMapping(value = "upload/saleRules",method = RequestMethod.POST)
public Response uploadSaleRules(@RequestBody String requestBody){
logger.info("上传销售规则,参数:"+requestBody);
Response response = uploadService.uploadSaleRules(requestBody);
......@@ -25,7 +25,7 @@ public class UploadController {
return response;
}
@RequestMapping(value = "privateFreight/upload.do",method = RequestMethod.POST)
@RequestMapping(value = "privateFreight/upload",method = RequestMethod.POST)
public Response uploadPrivateFreight(@RequestBody String requestBody){
logger.info("上传私有运价底价配置,参数:"+requestBody);
Response response = uploadService.uploadPrivateFreight(requestBody);
......
......@@ -2,7 +2,7 @@ package com.yutu.base.entity;
import java.io.Serializable;
public class NoteResult implements Serializable {
public class NoteResult<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 状态码 0-成功 2-失败
......@@ -19,13 +19,13 @@ public class NoteResult implements Serializable {
/**
* 设置要返回的具体数据
*/
private Object data;//返回的数据
private T data;//返回的数据
public NoteResult() {
}
public NoteResult(int status, String msg, Object data) {
public NoteResult(int status, String msg, T data) {
this.status = status;
this.msg = msg;
this.data = data;
......@@ -35,7 +35,7 @@ public class NoteResult implements Serializable {
return data;
}
public void setData(Object data) {
public void setData(T data) {
this.data = data;
}
......@@ -63,6 +63,66 @@ public class NoteResult implements Serializable {
this.info = info;
}
/**
* 状态值 枚举
*/
public static enum Status {
SUCCEED(200, "SUCCESS"), // 成功的状态
FAILED(400, "FAILED"), // 失败的状态
ERROR(300, "ERROR"), // 出错的状态
NONE, //
TICKET_DATE_ERROR,//航班日期错误
FLIGHT_INFO_ERROR,//航程信息错误
PASSENGER_INFO_ERROR,//乘客信息错误
SERVER_INTRRNAL_ERROR;//服务内部错误
private Integer status;
private String msg;
private Status() {
}
private Status(Integer status){
this.status = status;
}
private Status(Integer status, String msg) {
this.status = status;
this.msg = msg;
}
public Integer getStatus() {
return status;
}
public String getMsg(){
return msg;
}
}
public static NoteResult success(){
NoteResult noteResult = new NoteResult();
noteResult.setStatus(Status.SUCCEED.getStatus());
noteResult.setMsg(Status.SUCCEED.getMsg());
noteResult.setData(new Object());
return noteResult;
}
public static NoteResult success(Object data){
NoteResult noteResult = new NoteResult();
noteResult.setStatus(Status.SUCCEED.getStatus());
noteResult.setMsg(Status.SUCCEED.getMsg());
noteResult.setData(data);
return noteResult;
}
public static NoteResult error(String errorMessage){
NoteResult noteResult = new NoteResult();
noteResult.setStatus(Status.ERROR.getStatus());
noteResult.setMsg(errorMessage);
noteResult.setData(new Object());
return noteResult;
}
@Override
public String toString() {
return "NoteResult [status=" + status + ", msg=" + msg + ", info="
......
......@@ -52,15 +52,26 @@ public class Response implements Serializable{
}
public static enum Status {
SUCCEED,
FAILED,
NONE,
SUCCEED(200), // 成功的状态
FAILED(400), // 失败的状态
NONE, //
TICKET_DATE_ERROR,//航班日期错误
FLIGHT_INFO_ERROR,//航程信息错误
PASSENGER_INFO_ERROR,//乘客信息错误
SERVER_INTRRNAL_ERROR;//服务内部错误
public Integer getStatus() {
return status;
}
private Integer status;
private Status() {
}
private Status(Integer status) {
this.status = status;
}
}
@Override
......
......@@ -14,12 +14,12 @@ public class SaleDetail implements Serializable {
private String id;
private String key;//唯一标识 customerId_fromDate_toDate
private Date createTime;//创建时间
private Date updateTime;//更新时间
private String createTime;//创建时间
private String updateTime;//更新时间
private Integer sortIndex;
private Date createOrderTime; // sheet.addCell(new Label(0,0,"生单时间",wcf2));
private Date ticketTime; // sheet.addCell(new Label(1,0,"出票时间",wcf2));
private String createOrderTime; // sheet.addCell(new Label(0,0,"生单时间",wcf2));
private String ticketTime; // sheet.addCell(new Label(1,0,"出票时间",wcf2));
private String outerOrderNo; // sheet.addCell(new Label(2,0,"订单号",wcf2));
private String channel; // sheet.addCell(new Label(3,0,"销售渠道",wcf2));
private String store; // sheet.addCell(new Label(4,0,"销售店铺",wcf2));
......@@ -50,14 +50,14 @@ public class SaleDetail implements Serializable {
private String policyCode; // sheet.addCell(new Label(29,0,"政策编码",wcf2));
private String orderStatus; // sheet.addCell(new Label(30,0,"订单状态",wcf2));
private String operator; // sheet.addCell(new Label(31,0,"出票人",wcf2));
private Date purchaseTime; // sheet.addCell(new Label(32,0,"采购时间",wcf2));
private String purchaseTime; // sheet.addCell(new Label(32,0,"采购时间",wcf2));
private String orderValueAdded; // sheet.addCell(new Label(33,0,"附加产品",wcf2));
private String orderValueAddedSpecific; // sheet.addCell(new Label(34,0,"附加产品规格",wcf2));
private String remark; // sheet.addCell(new Label(35,0,"备注",wcf2));
private String officalReceivedPaymentStatus; // sheet.addCell(new Label(36,0,"财务-回款状态",wcf2));
private Double officalActualExpendAmount; // sheet.addCell(new Label(37,0,"财务-实际支出金额",wcf2));
private Double officalBalance; // sheet.addCell(new Label(38,0,"财务-补差",wcf2));
private Date officalRateAdjustDate; // sheet.addCell(new Label(39,0,"财务-外币调整日期",wcf2));
private String officalRateAdjustDate; // sheet.addCell(new Label(39,0,"财务-外币调整日期",wcf2));
private String passengerNames; //采购信息本次采购的乘客姓名
private Integer adultCount; //采购的成人数量
......@@ -95,19 +95,19 @@ public class SaleDetail implements Serializable {
this.key = key;
}
public Date getCreateTime() {
public String getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
......@@ -120,20 +120,20 @@ public class SaleDetail implements Serializable {
}
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
public Date getCreateOrderTime() {
public String getCreateOrderTime() {
return createOrderTime;
}
public void setCreateOrderTime(Date createOrderTime) {
public void setCreateOrderTime(String createOrderTime) {
this.createOrderTime = createOrderTime;
}
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
public Date getTicketTime() {
public String getTicketTime() {
return ticketTime;
}
public void setTicketTime(Date ticketTime) {
public void setTicketTime(String ticketTime) {
this.ticketTime = ticketTime;
}
......@@ -380,11 +380,11 @@ public class SaleDetail implements Serializable {
}
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
public Date getPurchaseTime() {
public String getPurchaseTime() {
return purchaseTime;
}
public void setPurchaseTime(Date purchaseTime) {
public void setPurchaseTime(String purchaseTime) {
this.purchaseTime = purchaseTime;
}
......@@ -436,11 +436,11 @@ public class SaleDetail implements Serializable {
this.officalBalance = officalBalance;
}
public Date getOfficalRateAdjustDate() {
public String getOfficalRateAdjustDate() {
return officalRateAdjustDate;
}
public void setOfficalRateAdjustDate(Date officalRateAdjustDate) {
public void setOfficalRateAdjustDate(String officalRateAdjustDate) {
this.officalRateAdjustDate = officalRateAdjustDate;
}
......@@ -455,7 +455,7 @@ public class SaleDetail implements Serializable {
public SaleDetail() {
}
public SaleDetail(String id, String key, Date createTime, Date updateTime, Integer sortIndex, Date createOrderTime, Date ticketTime, String outerOrderNo, String channel, String store, String tairLine, String flightTime, String flightNumber, String tripType, String pnrType, String pnr, Integer passengerCount, Double salePrice, Double luggagePrice, Integer points, String purchaseCurrency, Double purchasePrice_local, Double purchasePrice_rmb, Double transactionDetail_local, Double transactionDetail_rmb, String payMethod, String cardNumber, Double profit, String transactionNumber, String orderValueAddedNo, String purchaseChannel, String purchaseAccount, String purchaseOrderNo, String policyType, String policyCode, String orderStatus, String operator, Date purchaseTime, String orderValueAdded, String orderValueAddedSpecific, String remark, String officalReceivedPaymentStatus, Double officalActualExpendAmount, Double officalBalance, Date officalRateAdjustDate, String passengerNames, Integer adultCount, Integer childCount) {
public SaleDetail(String id, String key, String createTime, String updateTime, Integer sortIndex, String createOrderTime, String ticketTime, String outerOrderNo, String channel, String store, String tairLine, String flightTime, String flightNumber, String tripType, String pnrType, String pnr, Integer passengerCount, Double salePrice, Double luggagePrice, Integer points, String purchaseCurrency, Double purchasePrice_local, Double purchasePrice_rmb, Double transactionDetail_local, Double transactionDetail_rmb, String payMethod, String cardNumber, Double profit, String transactionNumber, String orderValueAddedNo, String purchaseChannel, String purchaseAccount, String purchaseOrderNo, String policyType, String policyCode, String orderStatus, String operator, String purchaseTime, String orderValueAdded, String orderValueAddedSpecific, String remark, String officalReceivedPaymentStatus, Double officalActualExpendAmount, Double officalBalance, String officalRateAdjustDate, String passengerNames, Integer adultCount, Integer childCount) {
this.id = id;
this.key = key;
this.createTime = createTime;
......
......@@ -33,9 +33,9 @@ public class DownLoadService {
@Value("${spring.urlConfig.productServiceUrl}")
private String productServiceUrl;
@Value("${spring.pathConfig.saleReportExcelPath}")
private String saleReportExcelPath;
private String saleReportExcelPath;
@Value("${spring.pathConfig.saleDetailReportExcelPath}")
private String saleDetailReportExcelPath;
private String saleDetailReportExcelPath;
@Autowired
private SaleDetailReportService saleDetailReportService;
......@@ -44,25 +44,27 @@ public class DownLoadService {
/**
* 获取销售数据
*
* @param requestBody
* @return
*/
public Response getSaleDetailReportData(String requestBody){
if(StringUtils.isBlank(requestBody)){
public Response getSaleDetailReportData(String requestBody) {
if (StringUtils.isBlank(requestBody)) {
return Response.error("参数不能为空 [requestBody]");
}
logger.info("开始获取数据,参数:" + requestBody);
long beginTime = System.currentTimeMillis();
String result = HttpsSendData.getPost(overseasAirTicketUrl+"orderInfo/getReportExcelData.do",requestBody);
if(StringUtils.isBlank(result)){
// String result = HttpsSendData.getPost(overseasAirTicketUrl+"orderInfo/getReportExcelData.do",requestBody);
String result = HttpsSendData.getPost(overseasAirTicketUrl + "order/getReportExcelData", requestBody);
if (StringUtils.isBlank(result)) {
return Response.error("获取数据失败");
}
JSONObject resultObj = JSONObject.parseObject(result);
if(resultObj.getInteger("status") != 0){
if (resultObj.getInteger("status") != 0) {
return Response.error("获取数据失败");
}
logger.info("获取数据成功,共用时:" + (System.currentTimeMillis()-beginTime));
Map<String,String> resultMap = resultObj.getObject("data",Map.class);
logger.info("获取数据成功,共用时:" + (System.currentTimeMillis() - beginTime));
Map<String, String> resultMap = resultObj.getObject("data", Map.class);
Response response = new Response();
response.setStatus(Response.Status.SUCCEED);
response.setData(resultMap);
......@@ -72,88 +74,92 @@ public class DownLoadService {
/**
* 下载销售报表
*
* @param requestBody
* @return
*/
public Response downLoadSaleDetailReport(String requestBody){
if(StringUtils.isBlank(requestBody)){
public Response downLoadSaleDetailReport(String requestBody) {
if (StringUtils.isBlank(requestBody)) {
return Response.error("参数不能为空 [requestBody]");
}
String customerId = JSONObject.parseObject(requestBody).getString("customerId");
logger.info("开始获取数据,参数:" + requestBody);
long beginTime = System.currentTimeMillis();
String result = HttpsSendData.getPost(overseasAirTicketUrl+"orderInfo/getReportExcelData.do",requestBody);
if(StringUtils.isBlank(result)){
String result = HttpsSendData.getPost(overseasAirTicketUrl + "order/getReportExcelData", requestBody);
if (StringUtils.isBlank(result)) {
return Response.error("获取数据失败");
}
JSONObject resultObj = JSONObject.parseObject(result);
if(resultObj.getInteger("status") != 0){
if (resultObj.getInteger("status") != 0) {
return Response.error("获取数据失败");
}
logger.info("获取数据成功,共用时:" + (System.currentTimeMillis()-beginTime));
logger.info("获取数据成功,共用时:" + (System.currentTimeMillis() - beginTime));
logger.info("开始解析数据生成报表 ...");
Map<String,String> resultMap = resultObj.getObject("data",Map.class);
Map<String, String> resultMap = resultObj.getObject("data", Map.class);
Response response = new Response();
try{
final String filePath = saleDetailReportExcelPath + customerId + "/SalesDetailReport/";//指定文件保存路径
try {
final String filePath = saleDetailReportExcelPath + customerId + "/SalesDetailReport/";//指定文件保存路径
String path = saleDetailReportService.createExcel(resultMap, filePath, "");
response.setStatus(Response.Status.SUCCEED);
response.setData(path);
response.setErrorMessage("生成成功,总用时:"+(System.currentTimeMillis()-beginTime)+"ms");
logger.info("生成销售明细报表,总用时:"+(System.currentTimeMillis()-beginTime)+"ms");
response.setErrorMessage("生成成功,总用时:" + (System.currentTimeMillis() - beginTime) + "ms");
logger.info("生成销售明细报表,总用时:" + (System.currentTimeMillis() - beginTime) + "ms");
return response;
}catch (Exception e){
logger.error("生成报表发生异常",e);
} catch (Exception e) {
logger.error("生成报表发生异常", e);
return Response.error("生成报表发生异常");
}
}
/**
* 下载加价规则
* 下载加价规则 包含数据
*
* @param requestBody
* @return
*/
public Response downLoadSaleRules(String requestBody){
public Response downLoadSaleRules(String requestBody) {
JSONObject requestObj = JSONObject.parseObject(requestBody);
String customerId = requestObj.getString("customerId");
long beginTime = System.currentTimeMillis();
//请求运价直连工程获取源数据
String result=HttpsSendData.getPost(productServiceUrl+"SaleRules/findByCustomerId.do", requestBody);
if(StringUtils.isBlank(result)){
String result = HttpsSendData.getPost(productServiceUrl + "SaleRules/findByCustomerId", requestBody);
if (StringUtils.isBlank(result)) {
return Response.error("获取加价规则源数据异常");
}
JSONObject resultObj = JSONObject.parseObject(result);
if(resultObj.getInteger("status") != 0){
if (resultObj.getInteger("status") != 0) {
return Response.error("获取加价规则源数据失败");
}
JSONArray dataArr = resultObj.getJSONArray("data");
if(dataArr.size() == 0){
if (dataArr.size() == 0) {
return Response.error("加价规则源数据共 0 条");
}
List<SaleRules> saleRules = new ArrayList<>();
for(int i=0;i<dataArr.size();i++){
for (int i = 0; i < dataArr.size(); i++) {
JSONObject data = dataArr.getJSONObject(i);
SaleRules saleRule = new SaleRules(data.getString("id"),data.getString("customerId"),data.getString("channelId"),
data.getString("store"),data.getString("ruleCode"),data.getString("carrier"),data.getString("org"),
data.getString("dst"),data.getInteger("routeType"),data.getInteger("policyType"),data.getString("policyDesc"),
data.getInteger("point"),data.getInteger("costPrice"),data.getString("saleSdate"),data.getString("saleEdate"),
data.getString("ticketDays"),data.getString("tripSdate"),data.getString("tripEdate"),data.getInteger("status"),
data.getInteger("maxPrice"),data.getInteger("minPrice"),data.getInteger("minProfit"),
data.getBigDecimal("adultPricePoint"),data.getInteger("adultAddPrice"),data.getInteger("adultAddTax"),data.getBigDecimal("adultTaxPoint"),
data.getBigDecimal("childPricePoint"),data.getInteger("childAddPrice"),data.getInteger("childAddTax"),data.getBigDecimal("childTaxPoint"),
data.getString("operator"),data.getDate("createTime"),data.getDate("updateTime"),data.getInteger("deleted"),
data.getString("notApplicableFlightNum"),data.getString("applyFlightNum"),data.getInteger("remainCabinNum"),data.getString("cabinCode"),
data.getString("flightCycle"),data.getDouble("floorPrice"),data.getDouble("floorTax"),data.getInteger("fitShare"),data.getString("fitNationality"),
data.getString("disFitNationality"),data.getString("ageRange"),data.getString("attention"));
SaleRules saleRule = new SaleRules(data.getString("id"), data.getString("customerId"), data.getString("channelId"),
data.getString("store"), data.getString("ruleCode"), data.getString("carrier"), data.getString("org"),
data.getString("dst"), data.getInteger("routeType"), data.getInteger("policyType"), data.getString("policyDesc"),
data.getInteger("point"), data.getInteger("costPrice"), data.getString("saleSdate"), data.getString("saleEdate"),
data.getString("ticketDays"), data.getString("tripSdate"), data.getString("tripEdate"), data.getInteger("status"),
data.getInteger("maxPrice"), data.getInteger("minPrice"), data.getInteger("minProfit"),
data.getBigDecimal("adultPricePoint"), data.getInteger("adultAddPrice"), data.getInteger("adultAddTax"), data.getBigDecimal("adultTaxPoint"),
data.getBigDecimal("childPricePoint"), data.getInteger("childAddPrice"), data.getInteger("childAddTax"), data.getBigDecimal("childTaxPoint"),
data.getString("operator"), data.getDate("createTime"), data.getDate("updateTime"), data.getInteger("deleted"),
data.getString("notApplicableFlightNum"), data.getString("applyFlightNum"), data.getInteger("remainCabinNum"), data.getString("cabinCode"),
data.getString("flightCycle"), data.getDouble("floorPrice"), data.getDouble("floorTax"), data.getInteger("fitShare"), data.getString("fitNationality"),
data.getString("disFitNationality"), data.getString("ageRange"), data.getString("attention"));
saleRules.add(saleRule);
}
String filePath = saleReportExcelPath+customerId+"/SaleRulesExcel\\";
String filePath = saleReportExcelPath + customerId + "/SaleRulesExcel\\";
File temp = new File(filePath);
if (!temp.exists()) { temp.mkdir(); }
if (!temp.exists()) {
temp.mkdir();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
String date = sdf.format(new Date());
File file = new File(date+"~销售规则.xls");
File file = new File(date + "~销售规则.xls");
FileOutputStream os = null;
HSSFWorkbook book = null;
try {
......@@ -189,7 +195,7 @@ public class DownLoadService {
font.setFontHeight((short) 200);
cellStyleTitle.setFont(font);
//创建标题行
Row title = sheet.createRow(0);
Row title = sheet.createRow(0);
title.setRowStyle(cellStyleTitle);
title.createCell(0).setCellValue("渠道");
title.createCell(1).setCellValue("店铺编码");
......@@ -215,12 +221,12 @@ public class DownLoadService {
title.createCell(21).setCellValue("最低利润值");
title.createCell(22).setCellValue("成人加点");
title.createCell(23).setCellValue("成人留钱");
title.createCell(24).setCellValue("成人加税");
title.createCell(25).setCellValue("成人加税点");
// title.createCell(24).setCellValue("成人加税");
// title.createCell(25).setCellValue("成人加税点");
title.createCell(26).setCellValue("儿童加点");
title.createCell(27).setCellValue("儿童留钱");
title.createCell(28).setCellValue("儿童加税");
title.createCell(29).setCellValue("儿童加税点");
// title.createCell(28).setCellValue("儿童加税");
// title.createCell(29).setCellValue("儿童加税点");
title.createCell(30).setCellValue("舱位代码");
title.createCell(31).setCellValue("销售规则Id");
title.createCell(32).setCellValue("航班周期");
......@@ -233,234 +239,226 @@ public class DownLoadService {
title.createCell(39).setCellValue("购票需知");
//遍历销售规则数据列表
for (int i = 0; i < saleRules.size(); i++) {
Row r = sheet.createRow(i+1);
Row r = sheet.createRow(i + 1);
Cell channelIdCell = r.createCell(0);
channelIdCell.setCellStyle(cellStyle);
if (saleRules.get(i).getChannelId()==null) {
if (saleRules.get(i).getChannelId() == null) {
channelIdCell.setCellValue("*");
}else{
} else {
channelIdCell.setCellValue(saleRules.get(i).getChannelId());
}
Cell store = r.createCell(1);
store.setCellStyle(cellStyle);
if (saleRules.get(i).getStore()==null) {
if (saleRules.get(i).getStore() == null) {
store.setCellValue("*");
}else{
} else {
store.setCellValue(saleRules.get(i).getStore());
}
Cell ruleCode = r.createCell(2);
ruleCode.setCellStyle(cellStyle);
if (saleRules.get(i).getRuleCode()==null) {
if (saleRules.get(i).getRuleCode() == null) {
ruleCode.setCellValue("");
}else{
} else {
ruleCode.setCellValue(saleRules.get(i).getRuleCode());
}
Cell carrierCell = r.createCell(3);
carrierCell.setCellStyle(cellStyle);
if (saleRules.get(i).getCarrier()==null) {
if (saleRules.get(i).getCarrier() == null) {
carrierCell.setCellValue("");
}else{
} else {
carrierCell.setCellValue(saleRules.get(i).getCarrier());
}
Cell orgCell = r.createCell(4);
orgCell.setCellStyle(cellStyle);
if (saleRules.get(i).getOrg()==null) {
if (saleRules.get(i).getOrg() == null) {
orgCell.setCellValue("*");
}else{
} else {
orgCell.setCellValue(saleRules.get(i).getOrg());
}
Cell dstCell = r.createCell(5);
dstCell.setCellStyle(cellStyle);
if (saleRules.get(i).getDst()==null) {
if (saleRules.get(i).getDst() == null) {
dstCell.setCellValue("*");
}else{
} else {
dstCell.setCellValue(saleRules.get(i).getDst());
}
Cell applyFlightNumCell = r.createCell(6);
applyFlightNumCell.setCellStyle(cellStyle);
if (StringUtils.isBlank(saleRules.get(i).getApplyFlightNum())) {
applyFlightNumCell.setCellValue("");
}else{
} else {
applyFlightNumCell.setCellValue(saleRules.get(i).getApplyFlightNum());
}
Cell notApplicableFlightNumCell = r.createCell(7);
notApplicableFlightNumCell.setCellStyle(cellStyle);
if (StringUtils.isBlank(saleRules.get(i).getNotApplicableFlightNum())) {
notApplicableFlightNumCell.setCellValue("");
}else{
} else {
notApplicableFlightNumCell.setCellValue(saleRules.get(i).getNotApplicableFlightNum());
}
Cell routeTypeCell = r.createCell(8);
routeTypeCell.setCellStyle(cellStyle);
if (saleRules.get(i).getRouteType()==null) {
if (saleRules.get(i).getRouteType() == null) {
routeTypeCell.setCellValue("不限");
}else if (saleRules.get(i).getRouteType()==0) {
} else if (saleRules.get(i).getRouteType() == 0) {
routeTypeCell.setCellValue("不限");
}else if (saleRules.get(i).getRouteType()==1) {
} else if (saleRules.get(i).getRouteType() == 1) {
routeTypeCell.setCellValue("单程");
}else if (saleRules.get(i).getRouteType()==2) {
} else if (saleRules.get(i).getRouteType() == 2) {
routeTypeCell.setCellValue("往返");
}else{
} else {
routeTypeCell.setCellValue("不限");
}
Cell policyType = r.createCell(9);
policyType.setCellStyle(cellStyle);
if (saleRules.get(i).getPolicyType()==null) {
if (saleRules.get(i).getPolicyType() == null) {
policyType.setCellValue("普通");
}else if (saleRules.get(i).getPolicyType()==1) {
} else if (saleRules.get(i).getPolicyType() == 1) {
policyType.setCellValue("普通");
}else if (saleRules.get(i).getPolicyType()==2) {
} else if (saleRules.get(i).getPolicyType() == 2) {
policyType.setCellValue("积分");
}else if (saleRules.get(i).getPolicyType()==3) {
} else if (saleRules.get(i).getPolicyType() == 3) {
policyType.setCellValue("普通促销");
}else if (saleRules.get(i).getPolicyType()==4) {
} else if (saleRules.get(i).getPolicyType() == 4) {
policyType.setCellValue("扣位");
}else if (saleRules.get(i).getPolicyType()==5) {
} else if (saleRules.get(i).getPolicyType() == 5) {
policyType.setCellValue("促销积分");
}else if (saleRules.get(i).getPolicyType()==6) {
} else if (saleRules.get(i).getPolicyType() == 6) {
policyType.setCellValue("AG");
}else if (saleRules.get(i).getPolicyType()==7) {
} else if (saleRules.get(i).getPolicyType() == 7) {
policyType.setCellValue("私有运价");
}else{
} else {
policyType.setCellValue("普通");
}
Cell policyDesc = r.createCell(10);
policyDesc.setCellStyle(cellStyle);
if (saleRules.get(i).getPolicyDesc()==null) {
if (saleRules.get(i).getPolicyDesc() == null) {
policyDesc.setCellValue("");
}else{
} else {
policyDesc.setCellValue(saleRules.get(i).getPolicyDesc());
}
Cell point = r.createCell(11);
point.setCellStyle(cellStyle);
if (saleRules.get(i).getPoint()==null) {
if (saleRules.get(i).getPoint() == null) {
point.setCellValue("");
}else{
} else {
point.setCellValue(saleRules.get(i).getPoint());
}
Cell costPrice = r.createCell(12);
costPrice.setCellStyle(cellStyle);
if (saleRules.get(i).getCostPrice()==null) {
if (saleRules.get(i).getCostPrice() == null) {
costPrice.setCellValue("");
}else{
} else {
costPrice.setCellValue(saleRules.get(i).getCostPrice());
}
Cell saleSdate = r.createCell(13);
saleSdate.setCellStyle(cellStyle);
if (saleRules.get(i).getSaleSdate()==null) {
if (saleRules.get(i).getSaleSdate() == null) {
saleSdate.setCellValue("");
}else{
} else {
saleSdate.setCellValue(saleRules.get(i).getSaleSdate());
}
Cell saleEdate = r.createCell(14);
saleEdate.setCellStyle(cellStyle);
if (saleRules.get(i).getSaleEdate()==null) {
if (saleRules.get(i).getSaleEdate() == null) {
saleEdate.setCellValue("");
}else{
} else {
saleEdate.setCellValue(saleRules.get(i).getSaleEdate());
}
Cell ticketDays = r.createCell(15);
ticketDays.setCellStyle(cellStyle);
if (saleRules.get(i).getTicketDays()==null) {
if (saleRules.get(i).getTicketDays() == null) {
ticketDays.setCellValue("");
}else{
} else {
ticketDays.setCellValue(saleRules.get(i).getTicketDays());
}
Cell tripSdate = r.createCell(16);
tripSdate.setCellStyle(cellStyle);
if (saleRules.get(i).getTripSdate()==null) {
if (saleRules.get(i).getTripSdate() == null) {
tripSdate.setCellValue("");
}else{
} else {
tripSdate.setCellValue(saleRules.get(i).getTripSdate());
}
Cell tripEdate = r.createCell(17);
tripEdate.setCellStyle(cellStyle);
if (saleRules.get(i).getTripEdate()==null) {
if (saleRules.get(i).getTripEdate() == null) {
tripEdate.setCellValue("");
}else{
} else {
tripEdate.setCellValue(saleRules.get(i).getTripEdate());
}
Cell statusCell = r.createCell(18);
statusCell.setCellStyle(cellStyle);
if (saleRules.get(i).getStatus()==null) {
if (saleRules.get(i).getStatus() == null) {
statusCell.setCellValue("禁用");
}else if (saleRules.get(i).getStatus()==0) {
} else if (saleRules.get(i).getStatus() == 0) {
statusCell.setCellValue("禁用");
}else if (saleRules.get(i).getStatus()==1) {
} else if (saleRules.get(i).getStatus() == 1) {
statusCell.setCellValue("启用");
}else{
} else {
statusCell.setCellValue("禁用");
}
Cell minPrice = r.createCell(19);
minPrice.setCellStyle(cellStyle);
if (saleRules.get(i).getMinPrice()==null) {
if (saleRules.get(i).getMinPrice() == null) {
minPrice.setCellValue("");
}else{
} else {
minPrice.setCellValue(saleRules.get(i).getMinPrice());
}
Cell maxPrice = r.createCell(20);
maxPrice.setCellStyle(cellStyle);
if (saleRules.get(i).getMaxPrice()==null) {
if (saleRules.get(i).getMaxPrice() == null) {
maxPrice.setCellValue("");
}else{
} else {
maxPrice.setCellValue(saleRules.get(i).getMaxPrice());
}
Cell minProfit = r.createCell(21);
minProfit.setCellStyle(cellStyle);
if (saleRules.get(i).getMinProfit()==null) {
if (saleRules.get(i).getMinProfit() == null) {
minProfit.setCellValue("");
}else{
} else {
minProfit.setCellValue(saleRules.get(i).getMinProfit());
}
Cell adultPricePoint = r.createCell(22);
adultPricePoint.setCellStyle(cellStyle);
if (saleRules.get(i).getAdultPricePoint()==null) {
if (saleRules.get(i).getAdultPricePoint() == null) {
adultPricePoint.setCellValue(0.0);
}else{
} else {
adultPricePoint.setCellValue(saleRules.get(i).getAdultPricePoint().toString());
}
Cell adultAddPrice = r.createCell(23);
adultAddPrice.setCellStyle(cellStyle);
if (saleRules.get(i).getAdultAddPrice()==null) {
if (saleRules.get(i).getAdultAddPrice() == null) {
adultAddPrice.setCellValue(0);
}else{
} else {
adultAddPrice.setCellValue(saleRules.get(i).getAdultAddPrice());
}
// Cell adultAddTax = r.createCell(24);
// adultAddTax.setCellStyle(cellStyle);
// if (saleRules.get(i).getAdultAddTax()==null) {
// adultAddTax.setCellValue(0);
// }else{
// adultAddTax.setCellValue(saleRules.get(i).getAdultAddTax());
// }
// Cell adultTaxPoint = r.createCell(23);
// adultTaxPoint.setCellStyle(cellStyle);
// if (saleRules.get(i).getAdultPricePoint()==null) {
......@@ -469,6 +467,14 @@ public class DownLoadService {
// adultTaxPoint.setCellValue(saleRules.get(i).getAdultPricePoint().toString());
// }
// Cell adultAddTax = r.createCell(24);
// adultAddTax.setCellStyle(cellStyle);
// if (saleRules.get(i).getAdultAddTax()==null) {
// adultAddTax.setCellValue(0);
// }else{
// adultAddTax.setCellValue(saleRules.get(i).getAdultAddTax());
// }
// Cell adultTaxPoint = r.createCell(25);
// adultTaxPoint.setCellStyle(cellStyle);
// if (saleRules.get(i).getAdultTaxPoint()==null) {
......@@ -479,17 +485,17 @@ public class DownLoadService {
Cell childPricePoint = r.createCell(26);
childPricePoint.setCellStyle(cellStyle);
if (saleRules.get(i).getChildPricePoint()==null) {
if (saleRules.get(i).getChildPricePoint() == null) {
childPricePoint.setCellValue(0.0);
}else{
} else {
childPricePoint.setCellValue(saleRules.get(i).getChildPricePoint().toString());
}
Cell childAddPrice = r.createCell(27);
childAddPrice.setCellStyle(cellStyle);
if (saleRules.get(i).getChildAddPrice()==null) {
if (saleRules.get(i).getChildAddPrice() == null) {
childAddPrice.setCellValue(0);
}else{
} else {
childAddPrice.setCellValue(saleRules.get(i).getChildAddPrice());
}
......@@ -515,7 +521,7 @@ public class DownLoadService {
Cell saleRuleId = r.createCell(31);
saleRuleId.setCellStyle(cellStyle);
if (saleRuleId!=null) {
if (saleRuleId != null) {
saleRuleId.setCellValue(saleRules.get(i).getId());
}
......@@ -523,7 +529,7 @@ public class DownLoadService {
flightCycle.setCellStyle(cellStyle);
if (StringUtils.isBlank(saleRules.get(i).getFlightCycle())) {
flightCycle.setCellValue("");
}else{
} else {
flightCycle.setCellValue(saleRules.get(i).getFlightCycle());
}
......@@ -531,7 +537,7 @@ public class DownLoadService {
floorPrice.setCellStyle(cellStyle);
if (saleRules.get(i).getFloorPrice() == null) {
floorPrice.setCellValue("");
}else{
} else {
floorPrice.setCellValue(saleRules.get(i).getFloorPrice());
}
......@@ -539,7 +545,7 @@ public class DownLoadService {
floorTax.setCellStyle(cellStyle);
if (saleRules.get(i).getFloorTax() == null) {
floorTax.setCellValue("");
}else{
} else {
floorTax.setCellValue(saleRules.get(i).getFloorTax());
}
......@@ -547,12 +553,12 @@ public class DownLoadService {
fitShare.setCellStyle(cellStyle);
if (saleRules.get(i).getFitShare() == null) {
fitShare.setCellValue("");
}else{
if(saleRules.get(i).getFitShare() == 1){
} else {
if (saleRules.get(i).getFitShare() == 1) {
fitShare.setCellValue("适用");
}else if(saleRules.get(i).getFitShare() == 0){
} else if (saleRules.get(i).getFitShare() == 0) {
fitShare.setCellValue("不适用");
}else {
} else {
fitShare.setCellValue(saleRules.get(i).getFitShare());
}
}
......@@ -561,7 +567,7 @@ public class DownLoadService {
fitNationality.setCellStyle(cellStyle);
if (saleRules.get(i).getFitNationality() == null) {
fitNationality.setCellValue("");
}else{
} else {
fitNationality.setCellValue(saleRules.get(i).getFitNationality());
}
......@@ -569,7 +575,7 @@ public class DownLoadService {
fitNationality.setCellStyle(cellStyle);
if (saleRules.get(i).getDisFitNationality() == null) {
disFitNationality.setCellValue("");
}else{
} else {
disFitNationality.setCellValue(saleRules.get(i).getDisFitNationality());
}
......@@ -577,7 +583,7 @@ public class DownLoadService {
ageRange.setCellStyle(cellStyle);
if (saleRules.get(i).getAgeRange() == null) {
ageRange.setCellValue("");
}else{
} else {
ageRange.setCellValue(saleRules.get(i).getAgeRange());
}
......@@ -585,38 +591,38 @@ public class DownLoadService {
attention.setCellStyle(cellStyle);
if (saleRules.get(i).getAttention() == null) {
attention.setCellValue("");
}else{
} else {
attention.setCellValue(saleRules.get(i).getAttention());
}
}
//创建输出流
os = new FileOutputStream(filePath+file);
os = new FileOutputStream(filePath + file);
//将book中的数据写出
book.write(os);
}catch (Exception e) {
logger.error("fail:",e);
}finally {
} catch (Exception e) {
logger.error("fail:", e);
} finally {
try {
if(book!=null){
if (book != null) {
book.close();
}
if(os!=null){
if (os != null) {
os.close();
}
}catch (Exception e){
logger.error("关闭流异常",e);
} catch (Exception e) {
logger.error("关闭流异常", e);
}
}
Response response = new Response();
response.setStatus(Response.Status.SUCCEED);
response.setData(filePath+file);
response.setData(filePath + file);
return response;
}
public static HSSFWorkbook getBook(File file) {
HSSFWorkbook book = null ;
HSSFWorkbook book = null;
try {
book = new HSSFWorkbook(new FileInputStream(file));
} catch (FileNotFoundException e) {
......@@ -657,52 +663,59 @@ public class DownLoadService {
return result;
}
public Response parseToSaleDetail(String requestBody){
public Response parseToSaleDetail(String requestBody) {
logger.info("自动报表任务请求解析报表。。。");
if(StringUtils.isBlank(requestBody)){
if (StringUtils.isBlank(requestBody)) {
return Response.error("参数为空");
}
JSONObject obj = JSONObject.parseObject(requestBody);
Map<String, String> params = JSONObject.parseObject(obj.getString("data"), new TypeReference<Map<String, String>>(){});
Map<String, String> params = JSONObject.parseObject(obj.getString("data"), new TypeReference<Map<String, String>>() {
});
String key = obj.getString("info");
//将Map解析为报表内容对象
List<SaleDetail> saleDetailList = new ArrayList<>();
try{
try {
//解析主逻辑
saleDetailList = parseToSaleDetail.parseToSaleDetailMain(params,key);
}catch (Exception e){
logger.error("[自动报表] 解析Map到SaleDetail List 出现异常",e);
saleDetailList = parseToSaleDetail.parseToSaleDetailMain(params, key);
} catch (Exception e) {
logger.error("[自动报表] 解析Map到SaleDetail List 出现异常", e);
}
logger.info("自动报表任务解析数据完成,解析结果:saleDetailList.size() = " + saleDetailList.size());
return Response.success(saleDetailList);
}
public Response downLoadSaleDetailFromAutoSource(String requestBody){
/**
* 快速导出报表(新)
*
* @param requestBody
* @return
*/
public Response downLoadSaleDetailFromAutoSource(String requestBody) {
String keyList = JSONObject.parseObject(requestBody).getString("keyList");
logger.info("[AutoSource] 从saleDetail表数据中直接下载报表,keyList="+keyList);
logger.info("[AutoSource] 从saleDetail表数据中直接下载报表,keyList=" + keyList);
long beginTime = System.currentTimeMillis();
Map<String,String> params = new HashMap<>();
params.put("keyList",keyList);
String result = HttpsSendData.send(overseasAirTicketUrl + "autoSaleDetai/findByKeyList.do",params);
Map<String, String> params = new HashMap<>();
params.put("keyList", keyList);
String result = HttpsSendData.send(overseasAirTicketUrl + "autoSaleDetai/findByKeyList", params);
NoteResult noteResult = JSONObject.parseObject(result, NoteResult.class);
if(noteResult.getStatus() != 0){
logger.error("[AutoSource] 从saleDetail表中查询报表数据失败,keyList="+keyList);
return Response.error("[AutoSource] 从saleDetail表中查询报表数据失败,key="+keyList);
if (noteResult.getStatus() != 0) {
logger.error("[AutoSource] 从saleDetail表中查询报表数据失败,keyList=" + keyList);
return Response.error("[AutoSource] 从saleDetail表中查询报表数据失败,key=" + keyList);
}
List<SaleDetail> saleDetails = JSONArray.parseArray(JSONArray.toJSONString(noteResult.getData()),SaleDetail.class);
List<SaleDetail> saleDetails = JSONArray.parseArray(JSONArray.toJSONString(noteResult.getData()), SaleDetail.class);
Response response = new Response();
logger.info("[AutoSource] 获取数据库表数据,总用时:"+(System.currentTimeMillis()-beginTime)+"ms");
try{
String customerId = keyList.substring(0,keyList.indexOf("_"));
final String filePath = saleDetailReportExcelPath + customerId + "/SalesDetailReport/";//指定文件保存路径
String path = parseToSaleDetail.createSaleDetailReport(saleDetails,filePath);
logger.info("[AutoSource] 获取数据库表数据,总用时:" + (System.currentTimeMillis() - beginTime) + "ms");
try {
String customerId = keyList.substring(0, keyList.indexOf("_"));
final String filePath = saleDetailReportExcelPath + customerId + "/SalesDetailReport/";//指定文件保存路径
String path = parseToSaleDetail.createSaleDetailReport(saleDetails, filePath);
response.setStatus(Response.Status.SUCCEED);
response.setData(path);
response.setErrorMessage("[AutoSource] 生成报表成功,总用时:"+(System.currentTimeMillis()-beginTime)+"ms");
logger.info("[AutoSource] 生成销售明细报表,总用时:"+(System.currentTimeMillis()-beginTime)+"ms");
response.setErrorMessage("[AutoSource] 生成报表成功,总用时:" + (System.currentTimeMillis() - beginTime) + "ms");
logger.info("[AutoSource] 生成销售明细报表,总用时:" + (System.currentTimeMillis() - beginTime) + "ms");
return response;
}catch (Exception e){
logger.error("[AutoSource] 生成报表发生异常",e);
} catch (Exception e) {
logger.error("[AutoSource] 生成报表发生异常", e);
return Response.error("[AutoSource] 生成报表发生异常");
}
}
......
......@@ -6,6 +6,7 @@ import com.yutu.base.entity.Response;
import com.yutu.base.entity.SaleDetail;
import com.yutu.base.entity.Store;
import com.yutu.base.entity.User;
import com.yutu.base.utils.DateUtil;
import io.swagger.models.auth.In;
import jxl.CellView;
import jxl.Workbook;
......@@ -60,8 +61,9 @@ public class ParseToSaleDetail extends BaseService{
SaleDetail temp = new SaleDetail();
temp.setId(UUID.randomUUID().toString());
temp.setCreateTime(new Date());
temp.setUpdateTime(new Date());
temp.setCreateTime(DateUtil.DateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
// temp.setUpdateTime(new Date());
temp.setUpdateTime(DateUtil.DateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
temp.setKey(key);//标识
temp.setOfficalReceivedPaymentStatus("");
temp.setOfficalActualExpendAmount(0.0);
......@@ -87,10 +89,11 @@ public class ParseToSaleDetail extends BaseService{
String passengerIds = purchObj.getString("passengerIds");//乘客id
int flightSize = flightInfoIds.replace(",","").length()/36;//行程段数
int passengerSize = passengerIds.replace(",","").length()/36;//乘客人量
String route = purchObj.getString("routeType");
// String route = purchObj.getString("routeType");
// String route = orderArr.get(0).getString("routeType");
String orderTripType = "";//订单行程类型
String routeType = convertRouteType(route);//采购行程类型
String ticketType = convertRouteType(route);//票号类型
String routeType = convertTripTypeNum(route);//采购行程类型
String ticketType = convertTripTypeNum(route);//票号类型
String points = purchObj.getString("points");//使用积分
String localCurrency = purchObj.getString("localCurrencyCode");//采购币种
String currency = purchObj.getString("currencyCode");//采购币种
......@@ -127,7 +130,8 @@ public class ParseToSaleDetail extends BaseService{
saleDetailList.get(num).setPurchaseAccount(purchaseAccount);//26
saleDetailList.get(num).setPurchaseOrderNo(purchaseOrderNo);//27
saleDetailList.get(num).setOperator(trueName);//31
saleDetailList.get(num).setPurchaseTime(purchObj.getDate("purchaseTime"));//32
// saleDetailList.get(num).setPurchaseTime(purchObj.getDate("purchaseTime"));//32
saleDetailList.get(num).setPurchaseTime(purchObj.getString("purchaseTime"));//32
saleDetailList.get(num).setOrderValueAdded(orderType);//33
saleDetailList.get(num).setRemark(remarkText);//35
saleDetailList.get(num).setPurchasePrice_local(Double.parseDouble(localTotalPrice));//16
......@@ -164,8 +168,12 @@ public class ParseToSaleDetail extends BaseService{
SaleDetail temp1 = new SaleDetail();
temp1.setId(UUID.randomUUID().toString());
temp1.setCreateTime(new Date());
temp1.setUpdateTime(new Date());
// temp1.setCreateTime(new Date());
// temp1.setUpdateTime(new Date());
temp1.setCreateTime(DateUtil.DateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
temp1.setUpdateTime(DateUtil.DateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
temp1.setKey(key);//标识
temp1.setOfficalReceivedPaymentStatus("");
temp1.setOfficalActualExpendAmount(0.0);
......@@ -192,8 +200,9 @@ public class ParseToSaleDetail extends BaseService{
String policySource = orderObj.getString("policySource");//政策信息
status = convertOrderStatus(orderStatus);
saleDetailList.get(num+count_saleOrder-1).setCreateOrderTime(orderObj.getDate("createTime"));//0
saleDetailList.get(num+count_saleOrder-1).setTicketTime(orderObj.getDate("ticketTime"));//1
saleDetailList.get(num+count_saleOrder-1).setCreateOrderTime(orderObj.getString("createTime"));//0
// saleDetailList.get(num+count_saleOrder-1).setTicketTime(orderObj.getDate("ticketTime"));//1
saleDetailList.get(num+count_saleOrder-1).setTicketTime(orderObj.getString("ticketTime"));//1
saleDetailList.get(num+count_saleOrder-1).setOuterOrderNo(outerOrderNo);//2
saleDetailList.get(num+count_saleOrder-1).setChannel(store.getChannelCode());//3
saleDetailList.get(num+count_saleOrder-1).setStore(store.getStoreShortName());//4
......@@ -415,8 +424,10 @@ public class ParseToSaleDetail extends BaseService{
SaleDetail temp2 = new SaleDetail();
temp2.setId(UUID.randomUUID().toString());
temp2.setCreateTime(new Date());
temp2.setUpdateTime(new Date());
// temp2.setCreateTime(new Date());
// temp2.setUpdateTime(new Date());
temp2.setCreateTime(DateUtil.DateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
temp2.setUpdateTime(DateUtil.DateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
temp2.setKey(key);//标识
temp2.setOfficalReceivedPaymentStatus("");
temp2.setOfficalActualExpendAmount(0.0);
......@@ -496,8 +507,10 @@ public class ParseToSaleDetail extends BaseService{
if(count_saleOrder==1 && count_transDetail>1){
for(int repeat = 0;repeat < (count_transDetail-count_saleOrder) ;repeat++){
saleDetailList.get(num + repeat +1).setCreateTime(createTime);
saleDetailList.get(num + repeat +1).setTicketTime(ticketTime);
// saleDetailList.get(num + repeat +1).setCreateTime(createTime);
// saleDetailList.get(num + repeat +1).setTicketTime(ticketTime);
saleDetailList.get(num + repeat +1).setCreateTime(DateUtil.DateToStr(createTime, "yyyy-MM-dd HH:mm:ss"));
saleDetailList.get(num + repeat +1).setTicketTime(DateUtil.DateToStr(ticketTime, "yyyy-MM-dd HH:mm:ss"));
saleDetailList.get(num + repeat +1).setOuterOrderNo(outerOrderNo);
saleDetailList.get(num + repeat +1).setChannel("");
saleDetailList.get(num + repeat +1).setStore("");
......@@ -626,6 +639,17 @@ public class ParseToSaleDetail extends BaseService{
}
return key;
}
public String convertTripTypeNum(String key){
switch (key) {
case "1":key = "单程";
break;
case "2":key = "往返";
break;
default:key ="";
break;
}
return key;
}
public String convertOrderType(String key){
switch (key) {
case "ticket":key = "";
......@@ -642,12 +666,18 @@ public class ParseToSaleDetail extends BaseService{
return key;
}
/**
* 快速导出报表(新)
* @param saleDetails
* @param filePath
* @return
*/
public String createSaleDetailReport(List<SaleDetail> saleDetails,String filePath){
logger.info("开始生成报表");
File files = new File(filePath);
if (!files.exists()) { files.mkdir(); }
WritableWorkbook workbook = null;
String file = filePath + new SimpleDateFormat("yyMMddHHmmss").format(new Date())+".xls";
String file = filePath + new SimpleDateFormat("yyMMddHHmmss").format(new Date())+".xlsx";
try{
workbook = Workbook.createWorkbook(new File(file));
......@@ -788,19 +818,22 @@ public class ParseToSaleDetail extends BaseService{
}
if(saleDetail.getCreateOrderTime()!=null){
sheet.addCell(new Label(0,i+1,date_alt(String.valueOf(saleDetail.getCreateOrderTime().getTime())),wcf2));
// sheet.addCell(new Label(0,i+1,date_alt(String.valueOf(saleDetail.getCreateOrderTime().getTime())),wcf2));
sheet.addCell(new Label(0,i+1,date_alt(saleDetail.getCreateOrderTime()),wcf2));
}else{
if(saleDetails.get(i-1) != null){
if(saleDetail.getOuterOrderNo().equals(saleDetails.get(i-1).getOuterOrderNo())){
if(saleDetails.get(i-1).getCreateOrderTime() != null){
saleDetail.setCreateOrderTime(saleDetails.get(i-1).getCreateOrderTime());
}
sheet.addCell(new Label(0,i+1,date_alt(String.valueOf(saleDetails.get(i-1).getCreateOrderTime().getTime())),wcf2));
// sheet.addCell(new Label(0,i+1,date_alt(String.valueOf(saleDetails.get(i-1).getCreateOrderTime().getTime())),wcf2));
sheet.addCell(new Label(0,i+1,date_alt(String.valueOf(saleDetails.get(i-1).getCreateOrderTime())),wcf2));
}
}
}
if(saleDetail.getTicketTime()!=null){
sheet.addCell(new Label(1,i+1,date_alt(String.valueOf(saleDetail.getTicketTime().getTime())),wcf2));
// sheet.addCell(new Label(1,i+1,date_alt(String.valueOf(saleDetail.getTicketTime().getTime())),wcf2));
sheet.addCell(new Label(1,i+1,date_alt(saleDetail.getTicketTime()),wcf2));
}
if(saleDetail.getOuterOrderNo()!=null){
sheet.addCell(new Label(2,i+1,saleDetail.getOuterOrderNo(),wcf2));
......@@ -924,7 +957,8 @@ public class ParseToSaleDetail extends BaseService{
sheet.addCell(new Label(33,i+1,saleDetail.getOperator(),wcf2));
}
if(saleDetail.getPurchaseTime()!=null){
sheet.addCell(new Label(34,i+1,date_alt(String.valueOf(saleDetail.getPurchaseTime().getTime())),wcf2));
// sheet.addCell(new Label(34,i+1,date_alt(String.valueOf(saleDetail.getPurchaseTime().getTime())),wcf2));
sheet.addCell(new Label(34,i+1,date_alt(String.valueOf(saleDetail.getPurchaseTime())),wcf2));
}
if(saleDetail.getOrderValueAdded()!=null){
sheet.addCell(new Label(35,i+1,saleDetail.getOrderValueAdded(),wcf2));
......@@ -977,9 +1011,12 @@ public class ParseToSaleDetail extends BaseService{
}finally{
try{
workbook.write();
workbook.close();
}catch (Exception e){
}catch (Exception e){
e.printStackTrace();
logger.error("写出Execl异常",e);
}
}
return file;
......
package com.yutu.base.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yutu.base.entity.Response;
import com.yutu.base.entity.SaleDetail;
import com.yutu.base.utils.HttpsSendData;
import com.yutu.comm.entity.exception.NoteResult;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Service;
......@@ -12,67 +17,206 @@ import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
/**
* 销售明细报表相关操作
*/
@Service
public class SaleDetailService implements CommandLineRunner {
@Value("${spring.urlConfig.overseasAirTicketUrl}")
private String overseasAirTicketUrl;
@Value("${spring.urlConfig.statementApiUrl}")
private String statementApiUrl;
@Value("${spring.pathConfig.saleDetailReportExcelPath}")
private String saleDetailReportExcelPath;
@Value("${spring.urlConfig.productServiceUrl}")
private String productServiceUrl;
@Autowired
private ParseToSaleDetail parseToSaleDetail;
private static Logger logger = Logger.getLogger("saleDetail");
/**
* 获取销售明细报表数据
* 参数:
* startTime endTime 采购时间
* creatStartTime creatEndTime 生单时间
* ticketStartTime ticketEndTime 出票时间
*
*
*
* @param requestBody
* @return
*/
public NoteResult getSalesDetailList(String requestBody) {
NoteResult noteResult = new NoteResult();
if (StringUtils.isBlank(requestBody)) {
noteResult.setStatus(300);
noteResult.setMsg("参数不能为空 [requestBody]");
return noteResult;
}
logger.info("开始获取数据,参数:" + requestBody);
long beginTime = System.currentTimeMillis();
// String result = HttpsSendData.getPost(overseasAirTicketUrl+"orderInfo/getReportExcelData.do",requestBody); autoSaleDetai/findByKeyList
// String result = HttpsSendData.getPost(statementApiUrl + "saledetail/getSaleDetailList", requestBody);
String result = "{\"status\":0,\"msg\":\"查询成功\",\"data\":[{\"id\":\"00027727-2e16-485a-b1b3-f13d5079645a\",\"key\":\"df0286f1-eaac-11e7-adf4-a4badb3682ff_2018-10-25_2018-10-26\",\"createTime\":\"2018-12-21 09:41:41\",\"updateTime\":\"2018-12-21 09:41:41\",\"createOrderTime\":\"2018-10-24 16:24:26\",\"ticketTime\":\"2018-10-25 00:55:41\",\"outerOrderNo\":\"1380889117689\",\"channel\":\"Taobao\",\"store\":\"tbml\",\"tairLine\":\"HKT-DMK\",\"flightTime\":\"1544358000000\",\"flightNumber\":\"FD3028\",\"tripType\":\"单程\",\"pnrType\":\"去程\",\"pnr\":\"BWSTUZ\",\"passengerCount\":1,\"salePrice\":128,\"luggagePrice\":0,\"points\":0,\"purchaseCurrency\":\"CNY\",\"purchasePrice_local\":92,\"purchasePrice_rmb\":92,\"transactionDetail_local\":92,\"transactionDetail_rmb\":92,\"payMethod\":\"支付宝huochepiao3\",\"cardNumber\":\"支付宝huochepiao3\",\"profit\":36,\"transactionNumber\":\" \",\"orderValueAddedNo\":\" \",\"purchaseChannel\":\"艺龙\",\"purchaseAccount\":\"18513092060----huidarui\",\"purchaseOrderNo\":\"IT7JP5181024MO515179\",\"policyType\":\"普通促销\",\"policyCode\":\"TGJ泰国-中国\",\"orderStatus\":\"已出票\",\"operator\":\"曹坤祥\",\"purchaseTime\":\"2018-10-24 19:01:39\",\"orderValueAdded\":\" \",\"orderValueAddedSpecific\":\" \",\"remark\":\" \",\"officalReceivedPaymentStatus\":\" \",\"officalActualExpendAmount\":0,\"officalBalance\":0,\"officalRateAdjustDate\":null,\"passengerNames\":null,\"adultCount\":1,\"childCount\":0,\"sortIndex\":438}],\"info\":null}";
if (StringUtils.isBlank(result)) {
// return Response.error("获取数据失败");
noteResult.setStatus(300);
noteResult.setMsg("获取数据失败");
noteResult.setData(new HashMap<String, String>());
return noteResult;
}
JSONObject resultObj = JSONObject.parseObject(result);
if (resultObj.getInteger("status") != 0) {
// return Response.error("获取数据失败");
noteResult.setMsg("获取数据失败");
return noteResult;
}
logger.info("获取数据成功,共用时:" + (System.currentTimeMillis() - beginTime));
// Map<String, String> resultMap = resultObj.getObject("data", Map.class);
noteResult.setStatus(200);
// com.alibaba.fastjson.JSONException: can not cast to : java.util.Map
// noteResult.setData(resultMap);
noteResult.setData(resultObj.getObject("data", Object.class));
noteResult.setMsg("获取成功");
return noteResult;
}
/**
* 获取销售明细报表数据,并将其处理为 Excel
* @param requestBody
* @return
*/
public NoteResult downloadSalesDetailReportExcel(String requestBody){
NoteResult noteResult ;
System.out.println(requestBody);
String keyList = JSONObject.parseObject(requestBody).getString("keyList");
logger.info("[AutoSource] 从saleDetail表数据中直接下载报表,keyList="+keyList);
long beginTime = System.currentTimeMillis();
Map<String,String> params = new HashMap<>();
params.put("keyList", keyList);
// String result = HttpsSendData.send(statementApiUrl + "saledetail/getSaleDetailList",params);
String result = "{\"status\":200,\"msg\":\"查询成功\",\"data\":[{\"id\":\"00027727-2e16-485a-b1b3-f13d5079645a\",\"key\":\"df0286f1-eaac-11e7-adf4-a4badb3682ff_2018-10-25_2018-10-26\",\"createTime\":\"2018-12-21 09:41:41\",\"updateTime\":\"2018-12-21 09:41:41\",\"createOrderTime\":\"2018-10-24 16:24:26\",\"ticketTime\":\"2018-10-25 00:55:41\",\"outerOrderNo\":\"1380889117689\",\"channel\":\"Taobao\",\"store\":\"tbml\",\"tairLine\":\"HKT-DMK\",\"flightTime\":\"1544358000000\",\"flightNumber\":\"FD3028\",\"tripType\":\"单程\",\"pnrType\":\"去程\",\"pnr\":\"BWSTUZ\",\"passengerCount\":1,\"salePrice\":128,\"luggagePrice\":0,\"points\":0,\"purchaseCurrency\":\"CNY\",\"purchasePrice_local\":92,\"purchasePrice_rmb\":92,\"transactionDetail_local\":92,\"transactionDetail_rmb\":92,\"payMethod\":\"支付宝huochepiao3\",\"cardNumber\":\"支付宝huochepiao3\",\"profit\":36,\"transactionNumber\":\" \",\"orderValueAddedNo\":\" \",\"purchaseChannel\":\"艺龙\",\"purchaseAccount\":\"18513092060----huidarui\",\"purchaseOrderNo\":\"IT7JP5181024MO515179\",\"policyType\":\"普通促销\",\"policyCode\":\"TGJ泰国-中国\",\"orderStatus\":\"已出票\",\"operator\":\"曹坤祥\",\"purchaseTime\":\"2018-10-24 19:01:39\",\"orderValueAdded\":\" \",\"orderValueAddedSpecific\":\" \",\"remark\":\" \",\"officalReceivedPaymentStatus\":\" \",\"officalActualExpendAmount\":0,\"officalBalance\":0,\"officalRateAdjustDate\":null,\"passengerNames\":null,\"adultCount\":1,\"childCount\":0,\"sortIndex\":438}],\"info\":null}";
noteResult = JSONObject.parseObject(result, NoteResult.class);
if(noteResult.getStatus() != 200){
logger.error("[AutoSource] 从saleDetail表中查询报表数据失败,keyList="+keyList);
noteResult.setMsg("[AutoSource] 从saleDetail表中查询报表数据失败,key="+keyList);
noteResult.setStatus(300); // 获取失败状态值
return noteResult;
}
List<SaleDetail> saleDetails = JSONArray.parseArray(JSONArray.toJSONString(noteResult.getData()), SaleDetail.class);
Response response = new Response();
logger.info("[AutoSource] 获取数据库表数据,总用时:"+(System.currentTimeMillis()-beginTime)+"ms");
try{
// String customerId = keyList.substring(0,keyList.indexOf("_"));
String customerId = JSONObject.parseObject(requestBody).getString("customerId");
final String filePath = saleDetailReportExcelPath + customerId + "/SalesDetailReport/";//指定文件保存路径
String path = parseToSaleDetail.createSaleDetailReport(saleDetails,filePath);
noteResult.setStatus(Response.Status.SUCCEED.getStatus());
noteResult.setData(path);
noteResult.setMsg("[AutoSource] 生成报表成功,总用时:"+(System.currentTimeMillis()-beginTime)+"ms");
logger.info("[AutoSource] 生成销售明细报表,总用时:"+(System.currentTimeMillis()-beginTime)+"ms");
return noteResult;
}catch (Exception e){
logger.error("[AutoSource] 生成报表发生异常",e);
noteResult.setMsg("[AutoSource] 生成报表发生异常");
return noteResult;
}
}
//任务消息队列,元素 调用AirTicket工程刷新SaleDetail表数据 的参数Map<String,String>
public static BlockingQueue<Map<String,String>> updateSaleDetailQueue = new LinkedBlockingDeque<>();
public static BlockingQueue<Map<String, String>> updateSaleDetailQueue = new LinkedBlockingDeque<>();
//提供入队列方法
public static void setUpdateSaleDetailQueue(Map<String,String> paramsMap) {
try{
public static void setUpdateSaleDetailQueue(Map<String, String> paramsMap) {
try {
updateSaleDetailQueue.put(paramsMap);
}catch (Exception e){
} catch (Exception e) {
logger.error("updateSaleDetailQueue 队列,入队列异常,参数:" + paramsMap);
}
}
/**
* 采购信息更新时,更新报表数据,以队列方式执行
*
* @param requestBody
* @return
*/
public Response updateSaleDetail(String requestBody){
public Response updateSaleDetail(String requestBody) {
System.out.println(requestBody);
if(StringUtils.isBlank(requestBody)){
if (StringUtils.isBlank(requestBody)) {
return Response.error("[updateSaleDetail] 参数不合法,requestBody=null");
}
JSONObject reqObj = JSONObject.parseObject(requestBody);
String customerId = reqObj.getString("customerId");
String startTime = reqObj.getString("startTime");
String endTime = reqObj.getString("endTime");
if(StringUtils.isBlank(customerId) || StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime)){
if (StringUtils.isBlank(customerId) || StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime)) {
return Response.error("[updateSaleDetail] 参数不合法");
}
try{
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date endDate = sdf.parse(endTime);
if(endDate.getTime() > new Date().getTime()){
return Response.error("[updateSaleDetail] 当天订单采购信息修改不触发刷新报表数据,endTime="+endTime);
if (endDate.getTime() > new Date().getTime()) {
return Response.error("[updateSaleDetail] 当天订单采购信息修改不触发刷新报表数据,endTime=" + endTime);
}
Map<String,String> paramsMap = new HashMap<>();
paramsMap.put("customerId",customerId);
paramsMap.put("startTime",startTime);
paramsMap.put("endTime",endTime);
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("customerId", customerId);
paramsMap.put("startTime", startTime);
paramsMap.put("endTime", endTime);
setUpdateSaleDetailQueue(paramsMap);//入队列
logger.info("[updateSaleDetail] 采购信息变动,刷新报表数据任务已加入队列,参数:"+paramsMap);
logger.info("[updateSaleDetail] 当前队列长度 updateSaleDetailQueue.size()="+updateSaleDetailQueue.size());
logger.info("[updateSaleDetail] 采购信息变动,刷新报表数据任务已加入队列,参数:" + paramsMap);
logger.info("[updateSaleDetail] 当前队列长度 updateSaleDetailQueue.size()=" + updateSaleDetailQueue.size());
return Response.success("[updateSaleDetail] 已加入队列");
}catch (Exception e){
logger.error("updateSaleDetail 发生异常",e);
} catch (Exception e) {
logger.error("updateSaleDetail 发生异常", e);
}
return Response.error("未知原因失败");
}
......@@ -83,21 +227,21 @@ public class SaleDetailService implements CommandLineRunner {
}
//消费响应消息队列
private void consumeUpdateSaleDetailQueue(){
private void consumeUpdateSaleDetailQueue() {
ExecutorService threadPool = Executors.newFixedThreadPool(1);
Runnable consumeTask = new Runnable() {
@Override
public void run() {
while (true){
logger.info("[updateSaleDetailQueue] 刷新报表队列 当前长度:"+updateSaleDetailQueue.size());
Map<String,String> map = null;
while (true) {
logger.info("[updateSaleDetailQueue] 刷新报表队列 当前长度:" + updateSaleDetailQueue.size());
Map<String, String> map = null;
try {
//调用AirTicket工程刷新SaleDetail表数据
map = updateSaleDetailQueue.take();
HttpsSendData.send(overseasAirTicketUrl+"autoSaleDetai/updateSaleDetail.do",map);
logger.info("刷新报表已执行,参数:"+map);
}catch (Exception e) {
logger.error("刷新报表队列执行任务时异常,参数"+map);
HttpsSendData.send(overseasAirTicketUrl + "autoSaleDetai/updateSaleDetail.do", map);
logger.info("刷新报表已执行,参数:" + map);
} catch (Exception e) {
logger.error("刷新报表队列执行任务时异常,参数" + map);
}
}
}
......
......@@ -6,8 +6,8 @@ spring:
polestarLogsServicesUrl: 'http://127.0.0.1:8089/'
dataApiUrl: 'http://127.0.0.1:38071/iffs-data-api/'
pathConfig:
saleReportExcelPath: 'F:/overseasCheetah_ExcelFile/'
saleDetailReportExcelPath: 'F:\\overseasCheetah_ExcelFile/'
saleDetailReportExcelPath: 'D:\\polestar_ExcelFile/'
saleReportExcelPath: 'D:/polestar_ExcelFile/'
server:
port: 8066
compression:
......
......@@ -6,8 +6,8 @@ spring:
polestarLogsServicesUrl: 'http://192.168.0.88:8055/'
dataApiUrl: 'http://14.18.207.103:38071/iffs-data-api/'
pathConfig:
saleReportExcelPath: 'E:/overseasCheetah_ExcelFile/'
saleDetailReportExcelPath: 'E:\\overseasCheetah_ExcelFile/'
saleDetailReportExcelPath: 'D:\\polestar_ExcelFile/'
saleReportExcelPath: 'D:/polestar_ExcelFile/'
server:
port: 8333
compression:
......
spring:
urlConfig:
overseasCheetahUrl: 'http://127.0.0.1:18092/polestar/'
overseasAirTicketUrl: 'http://127.0.0.1:18071/OverseasAirTicket/'
# overseasAirTicketUrl: 'http://127.0.0.1:18071/OverseasAirTicket/'
overseasAirTicketUrl: 'http://192.168.11.158:8080/ordercenterApi/'
productServiceUrl: 'http://127.0.0.1:28071/20160907_InterfaceConnected/'
polestarLogsServicesUrl: 'http://127.0.0.1:8089/'
dataApiUrl: 'http://14.18.207.91:38071/iffs-data-api/'
statementApiUrl: 'http://192.168.11.158:8080/ordercenterApi/'
pathConfig:
saleDetailReportExcelPath: 'D:\\overseasCheetah_ExcelFile/'
saleReportExcelPath: 'D:/overseasCheetah_ExcelFile/'
saleDetailReportExcelPath: 'D:\\polestar_ExcelFile/' # 销售明细报表导出保存的本地路径
saleReportExcelPath: 'D:/polestar_ExcelFile/' #
server:
port: 8066
compression:
......
报表服务备忘记录 polestar-statement-services
报表服务备忘记录 polestar-statement-services
......@@ -6,4 +6,73 @@
[INFO]2020-12-09 11:36:50[uploadSaleRules][上传销售规则,参数:{"customerId":"2cb3aa90-7530-11e9-b14b-c81f66ba6a47","filePath":"D:\\\\webService\\\\overseasCheetah_ExcelFile/2cb3aa90-7530-11e9-b14b-c81f66ba6a47/SalesRulesUpLoad/20201209\\1607483667248workpolicy.xlsx","operator":"%E7%8E%8B%E7%A6%B9"}]
2. 接口参数模板
D:\pc\Project\polestar\polestar-statement-services\.idea\httpRequests\http-requests-log.http
3.
3. 下载销售明细报表数据 ,参数
[INFO]2021-03-16 17:17:29[getSaleDetailReportData][开始获取数据,参数:{
"customerId": "2cb3aa90-7530-11e9-b14b-c81f66ba6a47",
"endTime_Tic": "2021-03-08 00:00:00",
"orderStatus": "4",
"requestId": "",
"startTime_Tic": "2021-03-07 00:00:00",
"tableName": "orderinfo,orderpassenger,orderflightinfo,orderpurchase,orderinsurance,ordervalueadded,transactiondetail,transactiondetail_old"
}]
{
    "status": 0,
    "msg": "查询成功",
    "data": [
        {
            "id": "00027727-2e16-485a-b1b3-f13d5079645a",
            "key": "df0286f1-eaac-11e7-adf4-a4badb3682ff_2018-10-25_2018-10-26",
            "createTime": "2018-12-21 09:41:41",
            "updateTime": "2018-12-21 09:41:41",
            "createOrderTime": "2018-10-24 16:24:26",
            "ticketTime": "2018-10-25 00:55:41",
            "outerOrderNo": "1380889117689",
            "channel": "Taobao",
            "store": "tbml",
            "tairLine": "HKT-DMK",
            "flightTime": "1544358000000",
            "flightNumber": "FD3028",
            "tripType": "单程",
            "pnrType": "去程",
            "pnr": "BWSTUZ",
            "passengerCount": 1,
            "salePrice": 128.0,
            "luggagePrice": 0.0,
            "points": 0,
            "purchaseCurrency": "CNY",
            "purchasePrice_local": 92.0,
            "purchasePrice_rmb": 92.0,
            "transactionDetail_local": 92.0,
            "transactionDetail_rmb": 92.0,
            "payMethod": "支付宝huochepiao3",
            "cardNumber": "支付宝huochepiao3",
            "profit": 36.0,
            "transactionNumber": " ",
            "orderValueAddedNo": " ",
            "purchaseChannel": "艺龙",
            "purchaseAccount": "18513092060----huidarui",
            "purchaseOrderNo": "IT7JP5181024MO515179",
            "policyType": "普通促销",
            "policyCode": "TGJ泰国-中国",
            "orderStatus": "已出票",
            "operator": "曹坤祥",
            "purchaseTime": "2018-10-24 19:01:39",
            "orderValueAdded": " ",
            "orderValueAddedSpecific": " ",
            "remark": " ",
            "officalReceivedPaymentStatus": " ",
            "officalActualExpendAmount": 0.0,
            "officalBalance": 0.0,
            "officalRateAdjustDate": null,
            "passengerNames": null,
            "adultCount": null,
            "childCount": null,
            "sortIndex": 438
        }
    ],
    "info": null
}
\ No newline at end of file
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