From 19fd7785705f30d25c6c8e44b9356cc585af68cd Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 19 三月 2025 14:26:41 +0800
Subject: [PATCH] 111
---
server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java | 11 +
server/services/src/main/java/com/doumee/service/business/GoodsorderService.java | 7 +
server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeDetailReportVO.java | 25 +++
server/services/src/main/java/com/doumee/core/utils/DateUtil.java | 24 +++
server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java | 11 +
server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java | 11 +
server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java | 21 +++
server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeReportVO.java | 32 ++++
server/web/src/main/java/com/doumee/task/ScheduleTool.java | 12
server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java | 64 +++++++--
server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java | 7 +
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 147 ++++++++++++++++++--
server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java | 3
server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java | 1
14 files changed, 334 insertions(+), 42 deletions(-)
diff --git a/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java b/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
index f27e18d..753f115 100644
--- a/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
@@ -10,6 +10,7 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.WxBillDetail;
+import com.doumee.dao.business.vo.BikeIncomeReportVO;
import com.doumee.dao.business.vo.DiscountGoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
@@ -31,6 +32,7 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -94,6 +96,7 @@
return ApiResponse.success(goodsorderService.findPage(pageWrap));
}
+
@ApiOperation("绾夸笂浜ゆ槗姹囨�绘暟鎹帴鍙�")
@PostMapping("/getTotalData")
@RequiresPermissions("business:goodsorder:query")
@@ -102,6 +105,8 @@
pageWrap.setEndDate(pageWrap.getEndDate() != null ? pageWrap.getEndDate():pageWrap.getStartDate());
return ApiResponse.success(goodsorderService.getTotalData(pageWrap));
}
+
+
@ApiOperation("璁㈠崟鍒楄〃-瀵煎嚭Excel")
@PostMapping("/exportExcel")
@@ -135,6 +140,7 @@
public ApiResponse<PageData<GoodsorderExportVO>> findPageAccountDetail(@RequestBody PageWrap<Goodsorder> pageWrap) {
return ApiResponse.success(goodsorderService.findAccountDetailPage(pageWrap));
}
+
@ApiOperation("鏀舵鏄庣粏锛堝井淇″璐︽槑缁嗭級_瀵煎嚭Excel")
@PostMapping("/exportAccountDetailExcel")
@RequiresPermissions("business:goodsorder:exportExcel")
@@ -186,4 +192,19 @@
public ApiResponse<GoodsorderCanBanlanceDTO> getGoodsorderCanBanlanceDTO(@RequestParam String orderId){
return ApiResponse.success(goodsorderService.getGoodsorderCanBanlanceDTO(orderId));
}
+
+
+ @ApiOperation("杞﹀瀷鏀跺叆鍒嗘瀽")
+ @PostMapping("/getBikeIncomeReportVOList")
+ public ApiResponse<List<List<String>>> getBikeIncomeReportVOList (@RequestBody Goodsorder goodsorder) {
+ return ApiResponse.success(goodsorderService.getBikeIncomeReportVOList(goodsorder.getStartDate(),goodsorder.getEndDate()));
+ }
+
+
+
+ @ApiOperation("杞﹀瀷鏀跺叆鍒嗘瀽-瀵煎嚭Excel")
+ @PostMapping("/bikeIncomeExportExcel")
+ public void exportExcel (@RequestBody Goodsorder goodsorder, HttpServletResponse response) {
+ goodsorderService.excel(goodsorder.getStartDate(),goodsorder.getEndDate(),response);
+ }
}
diff --git a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
index 6358b59..c6090e0 100644
--- a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
+++ b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -1,5 +1,6 @@
package com.doumee.core.annotation.excel;
+import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.dao.business.model.Goodsorder;
@@ -168,6 +169,21 @@
}
}
}
+
+// public void exportList (List<List<String>> data, String fileName, String sheetName, HttpServletResponse response) {
+// try {
+// String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
+// response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+// response.setContentType("application/octet-stream");
+// response.setHeader("eva-opera-type", "download");
+// response.setHeader("eva-download-filename", encodeFileName);
+// this.exportList(data, sheetName, response.getOutputStream());
+// } catch (IOException e) {
+// throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+// }
+// }
+
+
/**
* 瀵煎嚭鍒版寚瀹氳緭鍑烘祦
* @param os 杈撳嚭娴�
@@ -181,27 +197,47 @@
sheet.createFreezePane(0, 1);
Row header = sheet.createRow(0);
CellStyle hstyle = configHeaderCellStatic(sxssfWorkbook);
- CellStyle cstyle = configCellStatic(sxssfWorkbook);
- List<String> headerList =dataList.get(0);
- for (int i = 0; i < headerList.size(); i++) {
+ for (int i = 0; i < dataList.size(); i++) {
Cell cell = header.createCell(i);
- cell.setCellValue(headerList.get(i));
+ cell.setCellValue(dataList.get(i).get(Constants.ZERO));
// 鍒楀璁剧疆
- sheet.setColumnWidth(i, headerList.get(i).length() * 2 * 256);
+ sheet.setColumnWidth(i, dataList.get(i).get(Constants.ZERO).length() * 2 * 256);
// 璁剧疆鍒楀ご鍗曞厓鏍�
cell.setCellStyle(hstyle);
}
- // 鍒涘缓鏁版嵁璁板綍
- for (int rowIndex = 1; rowIndex < dataList.size(); rowIndex++) {
- Row row = sheet.createRow(rowIndex );
- List<String> rowList = dataList.get(rowIndex);
- for (int i = 0; i < rowList.size(); i++) {
- Cell cell = row.createCell(i);
- cell.setCellValue(rowList.get(i));
- // 鍒楀璁剧疆
- cell.setCellStyle(cstyle);
+
+ //鎬昏鏁�
+ Integer rowSize = dataList.get(Constants.ZERO).size();
+ //鎬诲垪鏁�
+ Integer columnSize = dataList.size();
+ for (int i = 1; i < rowSize; i++) {
+ Row row = sheet.createRow(i);
+ for (int j = 0; j < columnSize; j++) {
+ Cell cell = row.createCell(j);
+ cell.setCellValue(dataList.get(j).get(i));
}
}
+//
+// List<String> headerList =dataList.get(0);
+// for (int i = 0; i < headerList.size(); i++) {
+// Cell cell = header.createCell(i);
+// cell.setCellValue(headerList.get(i));
+// // 鍒楀璁剧疆
+// sheet.setColumnWidth(i, headerList.get(i).length() * 2 * 256);
+// // 璁剧疆鍒楀ご鍗曞厓鏍�
+// cell.setCellStyle(hstyle);
+// }
+// // 鍒涘缓鏁版嵁璁板綍
+// for (int rowIndex = 1; rowIndex < dataList.size(); rowIndex++) {
+// Row row = sheet.createRow(rowIndex );
+// List<String> rowList = dataList.get(rowIndex);
+// for (int i = 0; i < rowList.size(); i++) {
+// Cell cell = row.createCell(i);
+// cell.setCellValue(rowList.get(i));
+// // 鍒楀璁剧疆
+// cell.setCellStyle(cstyle);
+// }
+// }
sxssfWorkbook.write(os);
os.close();
} catch (Exception e) {
diff --git a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
index ca3082d..f585aa6 100644
--- a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -69,6 +69,30 @@
}
+ public static List<Date> getDateList(Date dBegin, Date dEnd) {
+ int i = 1;
+ //鏃ユ湡宸ュ叿绫诲噯澶�
+ DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ //璁剧疆寮�濮嬫椂闂�
+ Calendar calBegin = Calendar.getInstance();
+ calBegin.setTime(dBegin);
+ int weekNumber = calBegin.get(Calendar.DAY_OF_WEEK) - 1;
+ //璁剧疆缁撴潫鏃堕棿
+ Calendar calEnd = Calendar.getInstance();
+ calEnd.setTime(dEnd);
+ //瑁呰繑鍥炵殑鏃ユ湡闆嗗悎瀹瑰櫒
+ List<Date> dateList = new ArrayList<Date>();
+ dateList.add(dBegin);
+ //灏嗙涓�涓湀娣诲姞閲岄潰鍘�
+ while (dEnd.after(calBegin.getTime())) {
+ calBegin.add(Calendar.DAY_OF_MONTH, 1);
+ Date date = calBegin.getTime();
+ dateList.add(date);
+ }
+ return dateList;
+ }
+
+
public static Date StringToDateFormat(String DATE,String format) {
if(StringUtils.isBlank(DATE)){
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
index ac0e439..2d34089 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
@@ -28,6 +28,7 @@
@ApiModelProperty(value = "鍒涘缓鏃堕棿")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ExcelColumn(name="鍒涘缓鏃堕棿",index = 8,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createDate;
@ApiModelProperty(value = "鍒涘缓浜�")
@@ -162,4 +163,14 @@
@ApiModelProperty(value = "鎿嶄綔璁板綍")
@TableField(exist = false)
private List<DiscountLog> optLogList;
+
+ @ApiModelProperty(value = "鏌ヨ寮�濮嬫棩鏈燂紙鍖呭惈锛�", example = "2023-10-01 15:12:01")
+ @TableField(exist = false)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date startCreateDate;
+
+ @ApiModelProperty(value = "鏌ヨ鎴鏃ユ湡锛堝寘鍚級", example = "2023-10-09 15:12:05")
+ @TableField(exist = false)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endCreateDate;
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java b/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
index 8af42cf..e0bf2db 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -103,6 +103,8 @@
private String closeUserId;
@ApiModelProperty(value = "缁撶畻绫诲瀷 0鐢ㄦ埛鑷缁撶畻 1骞冲彴浜哄伐寮哄埗缁撶畻 2绯荤粺鑷姩缁撶畻")
private Integer closeType;
+ @ApiModelProperty(value = "缁撶畻杞﹀瀷缂栫爜")
+ private String paramId;
@ApiModelProperty(value = "鐢ㄦ埛openid" )
@TableField(exist = false)
@ExcelColumn(name="鐢ㄦ埛",index = 1 ,width = 10,align = HorizontalAlignment.CENTER)
@@ -123,11 +125,12 @@
@ExcelColumn(name="閫�鎶奸噾(鍏�)",index = 6,width = 10,align = HorizontalAlignment.CENTER)
private BigDecimal refundMoney;
@ApiModelProperty(value = "楠戣鍗℃姷鎵�(鍒嗭級")
+ @ExcelColumn(name="浼樻儬閲戦",index = 10,width = 10,align = HorizontalAlignment.CENTER)
@TableField(exist = false)
private BigDecimal discountMoney;
@ApiModelProperty(value = "鏈�鍚庨��娆炬椂闂�")
@TableField(exist = false)
- @ExcelColumn(name="閫�娆剧粨绠楁椂闂�",index = 9,width = 10,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @ExcelColumn(name="閫�娆炬椂闂�",index = 9,width = 10,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date refundDate;
@ApiModelProperty(value = "鏈�杩戦獞琛岀姸鎬�")
@TableField(exist = false)
@@ -137,7 +140,6 @@
private Integer closeStatus;
@ApiModelProperty(value = "鎿嶄綔浜�")
- @ExcelColumn(name="鎿嶄綔浜�",index = 9,width = 10,align = HorizontalAlignment.CENTER)
@TableField(exist = false)
private String refundUserName;
@@ -145,4 +147,9 @@
@TableField(exist = false)
private String discountName;
+ @ApiModelProperty(value = "楠戣绫诲瀷")
+ @ExcelColumn(name="璁㈠崟绫诲瀷",index = 11,width = 10,valueMapping = "3=鍗曡溅绫诲瀷;4=鐢佃溅绫诲瀷;",align = HorizontalAlignment.CENTER)
+ @TableField(exist = false)
+ private Integer bikeType;
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeDetailReportVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeDetailReportVO.java
new file mode 100644
index 0000000..8840b4f
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeDetailReportVO.java
@@ -0,0 +1,25 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 璁㈠崟淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/09/27 18:06
+ */
+@Data
+@ApiModel("杞﹀瀷鏀跺叆鍒嗘瀽")
+public class BikeIncomeDetailReportVO {
+
+ @ApiModelProperty(value = "鏀跺叆閲戦")
+ private String totalAmount;
+
+ @ApiModelProperty(value = "鏃ユ湡鍊�")
+ private String dateStr;
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeReportVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeReportVO.java
new file mode 100644
index 0000000..054fa24
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeReportVO.java
@@ -0,0 +1,32 @@
+package com.doumee.dao.business.vo;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 璁㈠崟淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/09/27 18:06
+ */
+@Data
+@ApiModel("杞﹀瀷鏀跺叆鍒嗘瀽")
+public class BikeIncomeReportVO {
+
+ @ApiModelProperty(value = "杞﹀瀷鍚嶇О")
+ private String paramName;
+
+ @ApiModelProperty(value = "杞﹀瀷涓婚敭")
+ private String paramId;
+
+// @ApiModelProperty(value = "琛屾暟鎹敹鍏ュ垪琛�")
+// private List<BikeIncomeDetailReportVO> bikeIncomeDetailReportVOList;
+
+ @ApiModelProperty(value = "琛屾暟鎹敹鍏ュ垪琛�")
+ private List<String> dataList;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
index a994ae9..87bafe0 100644
--- a/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
+++ b/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
@@ -57,4 +57,11 @@
@ExcelColumn(name="閫�娆炬椂闂�",width = 10,index = 5,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date refundDate;
+ @ApiModelProperty(value = "楠戣绫诲瀷")
+ @ExcelColumn(name="璁㈠崟绫诲瀷",index = 8,width = 10,valueMapping = "1=濂楅璁㈠崟;3=鑷杞﹁鍗�;4=鐢靛姩杞﹁鍗�;",align = HorizontalAlignment.CENTER)
+ private Integer bikeType;
+
+ @ApiModelProperty(value = "浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1濂楅鍗¤喘涔�")
+ private Integer type;
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java
index ff943c2..373233b 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java
@@ -35,6 +35,9 @@
@ApiModelProperty(value = "鎶垫墸閲戦")
private BigDecimal disCountMoney;
+ @ApiModelProperty(value = "杞﹁締绫诲瀷缂栫爜")
+ private String paramId;
+
@ApiModelProperty(value = "楠戣璁板綍")
private List<MemberRidesResponse> memberRidesResponseList;
diff --git a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
index 9a570bf..a63ecaa 100644
--- a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
+++ b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -8,6 +8,7 @@
import com.doumee.dao.business.model.DiscountMember;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.MemberRides;
+import com.doumee.dao.business.vo.BikeIncomeReportVO;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
import com.doumee.dao.business.web.request.BackElecBikeRequest;
@@ -20,7 +21,9 @@
import com.wechat.pay.java.service.refund.model.RefundNotification;
import io.swagger.models.auth.In;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
+import java.util.Date;
import java.util.List;
/**
@@ -212,4 +215,8 @@
DiscountMember getUseDiscount(String memberId, Integer driveTime,Integer type);
void autCancel();
+
+ List<List<String>> getBikeIncomeReportVOList(Date startDate , Date endDate);
+
+ void excel(Date startDate , Date endDate, HttpServletResponse response);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
index aab545c..cfad07b 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
@@ -11,10 +11,7 @@
import com.doumee.dao.business.DiscountLogMapper;
import com.doumee.dao.business.DiscountMemberMapper;
import com.doumee.dao.business.join.DiscountMemberJoinMapper;
-import com.doumee.dao.business.model.Discount;
-import com.doumee.dao.business.model.DiscountLog;
-import com.doumee.dao.business.model.DiscountMember;
-import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.*;
import com.doumee.dao.business.web.request.DiscountMemberDTO;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.DiscountMemberService;
@@ -147,6 +144,8 @@
.like(StringUtils.isNotBlank(model.getName()),DiscountMember::getName,model.getName())
.like(StringUtils.isNotBlank(model.getOpenid()),Member::getOpenid,model.getOpenid())
.eq(Objects.nonNull(model.getStatus()),DiscountMember::getStatus,model.getStatus())
+ .ge(Objects.nonNull(model.getStartCreateDate()),DiscountMember::getCreateDate, Utils.Date.getStart(model.getStartCreateDate()))
+ .le(Objects.nonNull(model.getEndCreateDate()),DiscountMember::getCreateDate, Utils.Date.getStart(model.getEndCreateDate()))
.ne(DiscountMember::getStatus,Constants.TWO)
.orderByDesc(DiscountMember::getCode);
return PageData.from(discountMemberJoinMapper.selectJoinPage(page, DiscountMember.class,queryWrapper));
@@ -249,4 +248,8 @@
QueryWrapper<DiscountMember> wrapper = new QueryWrapper<>(discountMember);
return discountMemberMapper.selectCount(wrapper);
}
+
+
+
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 0b3c4a2..f04ec9f 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.constants.Constants;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.Constants;
@@ -28,6 +29,8 @@
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberRides;
+import com.doumee.dao.business.vo.BikeIncomeDetailReportVO;
+import com.doumee.dao.business.vo.BikeIncomeReportVO;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
import com.doumee.dao.business.web.request.*;
@@ -58,10 +61,14 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.math.BigDecimal;
import java.net.InetAddress;
+import java.net.URLEncoder;
import java.net.UnknownHostException;
+import java.nio.charset.Charset;
import java.sql.Ref;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
@@ -199,7 +206,9 @@
MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.selectAll(Goodsorder.class);
queryWrapper.selectAs(Member::getOpenid, Goodsorder::getOpenid);
+ queryWrapper.selectAs(BaseParam::getType, Goodsorder::getBikeType);
queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId);
+ queryWrapper.leftJoin(BaseParam.class, BaseParam::getId ,Goodsorder::getParamId);
queryWrapper.select("(select max(r.done_date) from refund r where r.obj_id=t.id and r.status=2 ) as refund_date");
queryWrapper.select("(select sum(r.money) from refund r where r.obj_id=t.id and r.status=2) as refund_money");
//鏃堕棿娈电瓫閫�
@@ -213,6 +222,9 @@
queryWrapper.eq(Goodsorder::getPayStatus,Constants.ONE);
queryWrapper.orderByAsc(Goodsorder::getPayDate);
goodsorderExportVOIPage = goodsorderJoinMapper.selectJoinPage(page, GoodsorderExportVO.class, queryWrapper);
+
+
+
}else{
MPJLambdaWrapper<Refund> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.selectAs(Refund::getMoney,GoodsorderExportVO::getRefundMoney);
@@ -240,6 +252,7 @@
if (!CollectionUtils.isEmpty(goodsorderExportVOIPage.getRecords())){
goodsorderExportVOIPage.getRecords().forEach(s->{
+ s.setBikeType(s.getType()!=Constants.ZERO?s.getBikeType():Constants.ONE);
s.setMoney(Constants.translateMoney(s.getMoney()));
s.setRefundMoney(Constants.translateMoney(s.getRefundMoney()));
s.setCloseMoney(Constants.translateMoney(s.getCloseMoney()).compareTo(s.getMoney()) > 0 ? s.getMoney() : Constants.translateMoney(s.getCloseMoney()));
@@ -296,11 +309,13 @@
queryWrapper.selectAll(Goodsorder.class);
queryWrapper.selectAs(Member::getOpenid, Goodsorder::getOpenid);
queryWrapper.selectAs(DiscountMember::getName, Goodsorder::getDiscountName);
+ queryWrapper.selectAs(BaseParam::getType, Goodsorder::getBikeType);
queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId);
queryWrapper.leftJoin(DiscountMember.class, DiscountMember::getGoodsorderId ,Goodsorder::getId);
-// queryWrapper.select("(select r.name from discount_member r where r.isdeleted=0 and r.goodsorder_id=t.id limit 1) as discountName");
+ queryWrapper.leftJoin(BaseParam.class, BaseParam::getId ,Goodsorder::getParamId);
queryWrapper.select("(select max(r.done_date) from refund r where r.obj_id=t.id and r.status in(0,2)) as refund_date");
queryWrapper.select("(select sum(r.money) from refund r where r.obj_id=t.id and r.status in(0,2)) as refund_money");
+ queryWrapper.select("(select sum(d.ride_price) from discount_log d where d.goodsorder_id=t.id and d.type = 0) as discountMoney");
//鏃堕棿娈电瓫閫�
if (Objects.nonNull(model.getStartDate())){
queryWrapper.ge(Goodsorder::getPayDate, Utils.Date.getStart(model.getStartDate()));
@@ -333,6 +348,8 @@
queryWrapper.select("(select sum(er.discount_price) from member_rides er where er.ordre_id=t.id and er.isdeleted=0) as discountMoney," +
"(select er.status from member_rides er where er.ordre_id=t.id order by er.create_date desc limit 1) as memberRidesStatus");
+
+
queryWrapper.select("( select s.realname from refund r left join system_user s on r.creator = s.id where r.obj_id = t.id order by r.id desc limit 1 ) ",Goodsorder::getRefundUserName);
if(Objects.nonNull(pageWrap.getModel().getCloseStatus()) && pageWrap.getModel().getCloseStatus().equals(Constants.ZERO)){
queryWrapper.ne(Goodsorder::getStatus,Constants.GOODSORDER_STATUS.CLOSE.getKey());
@@ -627,6 +644,7 @@
freeTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
}catch (Exception e){
}
+
closeMoney = getCloseMoneyByRides(memberRides,freeTime,true,goodsorder.getMoney(),goodsorder.getMemberId(),true).getAmount();
//瀹為檯缁撶畻浠锋牸锛岃褰曞湪鏈�楂樿溅鍨嬭褰曚笂
// memberRides.get(0).setActualPrice(closeMoney);
@@ -674,6 +692,15 @@
memberRidesJoinMapper.updateById(up);
}
}
+ int durationSum = 0;
+ int freeTime = 0;
+ try {
+ freeTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
+ }catch (Exception e){
+ }
+ //鏈�楂樹环鏍艰溅鍨嬬殑楠戣璁板綍
+ MemberRides topRides = this.getMaxRides(memberRides,durationSum,freeTime,true);
+
// BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refund.getMoney()));
//閫�娆句箰琛�
// int type =Constants.formatIntegerNum(refund.getType());
@@ -681,6 +708,7 @@
update.setId(goodsorder.getId());
update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey());
update.setCloseMoney(closeMoney);
+ update.setParamId(Objects.nonNull(topRides)?topRides.getParamId():null);
update.setCloseStatus(Constants.ONE);
update.setCloseDate(new Date());
update.setCloseInfo(Constants.REFUND_TYPE.get(type).getInfo());
@@ -717,6 +745,23 @@
transactionsMapper.insert(transactions);
//淇敼璁㈠崟淇℃伅
goodsorderMapper.updateById(update);
+ }
+
+ public MemberRides getMaxRides(List<MemberRides> memberRides,Integer durationSum,Integer freeTime,boolean isClose){
+ MemberRides topRides =null;
+ for(MemberRides rides : memberRides){
+ if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
+ }
+ durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱
+ if(durationSum-freeTime > 0 ){//鍙畻瓒呭嚭鍏嶈垂鏃堕暱鐨勬暟鎹�
+ if(topRides == null ||( Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())
+ && Constants.formatIntegerNum(rides.getDuration())>0)){
+ topRides = rides;
+ }
+ }
+ }
+ return topRides;
}
/**
* 閫�娆炬垚鍔熷洖璋�
@@ -797,21 +842,8 @@
ridesDetailResponse.setHaveDisCount(Constants.ZERO);
BigDecimal closeMoney = new BigDecimal(0.00);
int durationSum = 0;
- MemberRides topRides =null;
-
- //鍙栨渶楂樿溅鍨嬭绠楁柟妗堢粨绠楄鍗�
- for(MemberRides rides : memberRides){
- if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
- }
- durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱
- if(durationSum-freeTime > 0 ){//鍙畻瓒呭嚭鍏嶈垂鏃堕暱鐨勬暟鎹�
- if(topRides == null ||( Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())
- && Constants.formatIntegerNum(rides.getDuration())>0)){
- topRides = rides;
- }
- }
- }
+ //鏈�楂樹环鏍艰溅鍨嬬殑楠戣璁板綍
+ MemberRides topRides = this.getMaxRides(memberRides,durationSum,freeTime,isClose);
//璁$畻搴斾粯閲戦
if( topRides != null){
@@ -827,6 +859,8 @@
}
}
topRides.setActualPrice(closeMoney);
+ //2025骞�3鏈�18鏃�11:28:38 杩斿洖楠戣浠锋牸鏈�楂樼殑杞﹀瀷
+ ridesDetailResponse.setParamId(topRides.getParamId());
}
//鏌ヨ鏄惁瀛樺湪濂楅淇℃伅
DiscountMember discountMember = this.getUseDiscount(memberId,durationSum,Objects.nonNull(topRides)?topRides.getType():null);
@@ -1641,4 +1675,85 @@
);
}
+
+
+ @Override
+ public List<List<String>> getBikeIncomeReportVOList(Date startDate ,Date endDate){
+ if( (Objects.isNull(startDate)||Objects.isNull(endDate))
+ || startDate.getTime()>endDate.getTime()
+ || DateUtil.daysBetweenDates(endDate,startDate) > 30
+ )
+ {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ System.out.println( DateUtil.daysBetweenDates(endDate,startDate));
+ //鑾峰彇鎵�鏈夎溅鍨嬩俊鎭�
+ List<BaseParam> baseParamList = baseParamMapper.selectList(new QueryWrapper<BaseParam>().lambda().eq(BaseParam::getIsdeleted,Constants.ZERO)
+ .in(BaseParam::getType,Constants.THREE,Constants.FOUR)
+ .orderByAsc(BaseParam::getType,BaseParam::getSortnum)
+ );
+ //鑾峰彇2涓棩鏈熶笅鎵�鏈夊ぉ鏁�
+ List<Date> dateList = DateUtil.getDateList(startDate,endDate);
+ //鏌ヨ鏃ユ湡鍐呯殑鎵�鏈夋暟鎹�
+ List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda().eq(Goodsorder::getType,Constants.ZERO)
+ .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+ .eq(Goodsorder::getStatus,Constants.FOUR)
+ .isNotNull(Goodsorder::getParamId)
+ .ge(Goodsorder::getPayDate, Utils.Date.getStart(startDate))
+ .le( Goodsorder::getPayDate, Utils.Date.getEnd(endDate))
+ );
+
+ List<List<String>> parentList = new ArrayList<>();
+
+ for (BaseParam baseParam:baseParamList) {
+ List<String> dataChildList = new ArrayList<>();
+ dataChildList.add(baseParam.getName()+"(鍏�)");
+ BigDecimal totalAmount = BigDecimal.ZERO;
+ for (Date date:dateList) {
+ BigDecimal amount = goodsorderList.stream()
+ .filter(i->StringUtils.isNotBlank(i.getParamId())&&DateUtil.getShortDateStr(date).equals(DateUtil.getShortDateStr(i.getCreateDate()))&&baseParam.getId().equals(i.getParamId()))
+ .map(i->i.getCloseMoney()).reduce(BigDecimal.ZERO,BigDecimal::add);
+ dataChildList.add(amount.toString());
+ totalAmount = amount.add(totalAmount);
+ }
+ BikeIncomeDetailReportVO detail = new BikeIncomeDetailReportVO();
+ dataChildList.add("锟�"+totalAmount);
+ parentList.add(dataChildList);
+ }
+
+ List<String> dataStrList = new ArrayList<>();
+ dataStrList.add("鏃ユ湡");
+ for (Date date:dateList) {
+ dataStrList.add(DateUtil.getShortDateStr(date));
+ }
+ dataStrList.add("鎬昏");
+ parentList.add(0,dataStrList);
+
+ return parentList;
+
+ }
+
+ @Override
+ public void excel(Date startDate , Date endDate, HttpServletResponse response){
+ List<List<String>> data = this.getBikeIncomeReportVOList(startDate,endDate);
+ try {
+ String fileName = "杞﹀瀷鏀跺叆鍒嗘瀽_"+System.currentTimeMillis();
+ String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
+ response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+ response.setContentType("application/octet-stream");
+ response.setHeader("eva-opera-type", "download");
+ response.setHeader("eva-download-filename", encodeFileName);
+ ExcelExporter.exportList(data, fileName, response.getOutputStream());
+ } catch (IOException e) {
+ throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+ }
+ }
+
+
+
+
+
+
+
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
index 95742af..d96655d 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
@@ -273,6 +273,7 @@
bill.setDiscountRefundFee(new BigDecimal(0.00));
bill.setDiscountRefundCmmsAmt(new BigDecimal(0.00));
bill.setBikeRefundCmmsAmt(new BigDecimal(0.00));
+ bill.setDiscountFee(new BigDecimal(0.00));
return bill;
}
@Override
diff --git a/server/web/src/main/java/com/doumee/task/ScheduleTool.java b/server/web/src/main/java/com/doumee/task/ScheduleTool.java
index 6df7a1c..31f956e 100644
--- a/server/web/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/web/src/main/java/com/doumee/task/ScheduleTool.java
@@ -43,12 +43,12 @@
* 绔欑偣杞﹁締婊℃灦鐜囬璀�
* @throws Exception
*/
-// @Scheduled(fixedDelay = 1000L *20L )
-// public void reSubMqtt() throws Exception {
-// log.info("=====================妫�鏌ユ槸鍚﹂渶瑕侀噸鏂拌闃�===========start============");
-// MqttClientInit.isSubClientValid();
-// log.info("=====================妫�鏌ユ槸鍚﹂渶瑕侀噸鏂拌闃�===========end============");
-// }
+ @Scheduled(fixedDelay = 1000L *20L )
+ public void reSubMqtt() throws Exception {
+ log.info("=====================妫�鏌ユ槸鍚﹂渶瑕侀噸鏂拌闃�===========start============");
+ MqttClientInit.isSubClientValid();
+ log.info("=====================妫�鏌ユ槸鍚﹂渶瑕侀噸鏂拌闃�===========end============");
+ }
@Scheduled(fixedDelay = 1000L * 100L )
--
Gitblit v1.9.3