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); } } 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) { 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)){ 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; } 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; } 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; } 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; } 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; } 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; 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); } 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); } } 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); } } } 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 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 )