From e1527c5bd0ab5419a0b860b17657f1e5f1d6fd52 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 15 Jan 2026 14:11:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=A3=9F=E5=A0=82=E8=8F=9C=E5=93=81?= =?UTF-8?q?=E8=B4=AD=E4=B9=B0=E7=BB=9F=E8=AE=A1(=E6=8C=89=E6=9C=88?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/dto/order/HardCarDto.java | 6 + .../vo/order/HardCanteenProductTotalVo.java | 3 + .../order/HardCanteenTotalController.java | 26 ++++- .../hard/mapper/order/HardCarMapper.java | 2 + .../hard/service/HardCanteenTotalService.java | 18 ++- .../order/HardCanteenTotalServiceImpl.java | 106 +++++++++++++++++- .../file/食堂菜品购买统计(按月).xlsx | Bin 0 -> 10004 bytes .../resources/mapper/order/HardCarMapper.xml | 92 ++++++++++++++- 8 files changed, 240 insertions(+), 13 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/食堂菜品购买统计(按月).xlsx diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java index e246c21de..ee90b9d10 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java @@ -11,6 +11,12 @@ public class HardCarDto extends HardCarEntity { private Long orderId; + /** + * 0 yyyy-MM-dd + * 1 yyyy-MM + */ + private String createTimeType = "0"; + private String createTimeStr; private LocalDate[] createTimeList; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCanteenProductTotalVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCanteenProductTotalVo.java index 3543aa620..0e168fcf1 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCanteenProductTotalVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCanteenProductTotalVo.java @@ -27,6 +27,9 @@ public class HardCanteenProductTotalVo { @Schema(description = "购买日期(年月日)") private LocalDateTime createTime; + @Schema(description = "购买日期自定义格式") + private String createTimeStr; + @Schema(description = "用餐时间段(早中晚)") private String hourType; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java index 30a0826d9..a1fda9eff 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; @@ -21,6 +22,7 @@ import com.bsd.pjcloud.hard.service.HardCanteenTotalService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.HttpHeaders; @@ -82,7 +84,7 @@ public class HardCanteenTotalController { return R.ok(canteenTotalService.productLikeTop(dto)); } - /* ************************************* start app start ************************************* */ + /* ************************************* end app end ************************************* */ @Operation(summary = "根据部门 食堂菜品购买统计", description = "根据部门 食堂菜品购买统计") @PostMapping("/proudct-total-by-dept") public R> productTotalByDept(@ParameterObject Page page, @RequestBody HardOrderDto dto) { @@ -90,17 +92,37 @@ public class HardCanteenTotalController { return R.ok(canteenTotalService.productTotalByDept(page, dto, dataScope)); } - @Operation(summary = "食堂菜品购买统计", description = "食堂菜品购买统计") + @Operation(summary = "食堂菜品购买统计(按天统计)", description = "食堂菜品购买统计(按天统计)") @PostMapping("/proudct-total") public R> productTotal(@ParameterObject Page page, @RequestBody HardOrderDto dto) { DataScope dataScope = null; return R.ok(canteenTotalService.productTotal(page, dto, dataScope)); } + @Operation(summary = "食堂菜品购买统计(按月统计)", description = "食堂菜品购买统计(按月统计)") + @PostMapping("/proudct-total-by-month") + public R> productTotalByMonth(@ParameterObject Page page, @RequestBody HardOrderDto dto) { + DataScope dataScope = null; + return R.ok(canteenTotalService.productTotalByMonth(page, dto, dataScope)); + } + @Operation(summary = "菜品出售统计", description = "菜品出售统计") @PostMapping("/proudct-query") public R> proudctQuery(@ParameterObject Page page, @RequestBody HardCarDto dto) { return R.ok(canteenTotalService.proudctQuery(page, dto)); } + @Operation(summary = "食堂菜品购买统计导出(按天统计)", description = "食堂菜品购买统计导出(按天统计)") + @PostMapping("/proudct-total-export-by-day") + @SysLog("食堂菜品购买统计导出(按天统计)") + public void productTotalExportByDay(HttpServletResponse response, @RequestBody HardOrderDto dto) { + canteenTotalService.productTotalExportByDay(response, dto); + } + + @Operation(summary = "食堂菜品购买统计导出(按月统计)", description = "食堂菜品购买统计导出(按月统计)") + @PostMapping("/proudct-total-export-by-month") + @SysLog("食堂菜品购买统计导出(按月统计)") + public void productTotalExportByMonth(HttpServletResponse response, @RequestBody HardOrderDto dto) { + canteenTotalService.productTotalExportByMonth(response, dto); + } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java index 477c6b4fe..ed6021c03 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java @@ -34,6 +34,8 @@ public interface HardCarMapper extends PjcloudBaseMapper { Page productTotal(Page page, @Param("dto") HardOrderDto dto, DataScope dataScope); + Page productTotalByMonth(Page page, @Param("dto") HardOrderDto dto, DataScope dataScope); + Page proudctQuery(Page page, @Param("dto") HardCarDto dto); List listByDept(@Param("dto") HardOrderDto dto, DataScope dataScope); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java index 52a674546..db494d2ce 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java @@ -13,6 +13,7 @@ import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByCanteenVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByClassifyVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductLikeTopVo; +import jakarta.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -40,10 +41,15 @@ public interface HardCanteenTotalService { List productTotalByDept(Page page, HardOrderDto dto, DataScope dataScope); /** - * 食堂菜品购买统计 + * 食堂菜品购买统计(按天统计) */ Page productTotal(Page page, HardOrderDto dto, DataScope dataScope); + /** + * 食堂菜品购买部门统计(按月统计) + */ + Page productTotalByMonth(Page page, HardOrderDto dto, DataScope dataScope); + /** * 菜品出售统计 */ @@ -53,4 +59,14 @@ public interface HardCanteenTotalService { * 食堂菜品购买部门统计 */ List listByDept(HardOrderDto dto, DataScope dataScope); + + /** + * 食堂菜品购买统计导出(按天统计) + */ + void productTotalExportByDay(HttpServletResponse response, HardOrderDto dto); + + /** + * 食堂菜品购买统计导出(按月统计) + */ + void productTotalExportByMonth(HttpServletResponse response, HardOrderDto dto); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java index 887988981..63d562968 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java @@ -1,9 +1,15 @@ package com.bsd.pjcloud.hard.service.impl.order; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.json.JSONUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.enums.WriteDirectionEnum; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.fill.FillConfig; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; @@ -13,6 +19,7 @@ import com.bsd.pjcloud.common.core.constant.enums.MerchantTypeEnum; import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.constant.order.HardHourTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.constant.total.DateRangeTypeEnum; import com.bsd.pjcloud.hard.api.dto.order.HardCarDto; @@ -30,20 +37,19 @@ import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.HardCanteenTotalService; import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.TemporalAdjusters; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -168,7 +174,7 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService { } /** - * 食堂菜品购买统计 + * 食堂菜品购买统计(按天统计) */ @Override public Page productTotal(Page page, HardOrderDto dto, DataScope dataScope) { @@ -183,6 +189,25 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService { return pageList; } + /** + * 食堂菜品购买部门统计(按月统计) + */ + @Override + public Page productTotalByMonth(Page page, HardOrderDto dto, DataScope dataScope) { + dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + Page pageList = hardCarMapper.productTotalByMonth(page, dto, dataScope); + if (ObjectUtil.isNotEmpty(pageList)) { + for (HardCanteenProductTotalVo v : pageList.getRecords()) { + if (ObjectUtil.isEmpty(v.getCreateTime()) && ObjectUtil.isNotEmpty(v.getCreateTimeStr())) { + v.setCreateTime(LocalDateTimeUtil.parse(v.getCreateTimeStr() + "-01", DatePattern.NORM_DATE_PATTERN)); + } + LocalDate localDate = v.getCreateTime().toLocalDate(); + v.setUniqueCode(localDate + "_" + v.getHourType()); + } + } + return pageList; + } + /** * 菜品出售统计 */ @@ -236,6 +261,75 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService { return list; } + /** + * 食堂菜品购买统计导出(按天统计) + */ + @Override + public void productTotalExportByDay(HttpServletResponse response, HardOrderDto dto) { + dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/设备交易金额汇总.xlsx")).build()) { + + } catch (Exception e) { + e.printStackTrace(); + log.error("|食堂菜品购买统计导出(按天统计)|导出数据异常error:{}", e.getMessage()); + } + } + + /** + * 食堂菜品购买统计导出(按月统计) + */ + @Override + public void productTotalExportByMonth(HttpServletResponse response, HardOrderDto dto) { + dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/食堂菜品购买统计(按月).xlsx")).build()) { + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build(); + + long currentPage = 1L; + long pageSize = 200L; + while (true) { + Page page = productTotalByMonth(new Page(currentPage, pageSize), dto, null); + if (ObjectUtil.isEmpty(page) || ObjectUtil.isEmpty(page.getRecords())) break; + // 填充数据 + List records = page.getRecords(); + // 月份 + List> mounthList = records.stream().map(v -> { + LocalDateTime createTime = v.getCreateTime(); + String createTimeStr = LocalDateTimeUtil.format(createTime, DatePattern.NORM_MONTH_PATTERN); + return Map.of("createTimeStr", createTimeStr); + }).toList(); + excelWriter.fill(mounthList, fillConfig, writeSheet); + // 早 + List morningList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.MORNING.getType())).toList(); + excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(morningList), fillConfig, writeSheet); + // 中 + List noonList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.NOONING.getType())).toList(); + excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(noonList), fillConfig, writeSheet); + // 晚 + List nightList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.NIGHT.getType())).toList(); + excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(nightList), fillConfig, writeSheet); + if (ObjectUtil.isEmpty(page.getPages()) || page.getCurrent() > page.getPages()) break; + currentPage++; + } + excelWriter.fill(new HashMap<>(), writeSheet); + } catch (Exception e) { + e.printStackTrace(); + log.error("|食堂菜品购买统计导出(按月统计)|导出数据异常error:{}", e.getMessage()); + } + } + + private List> productTotalExportByMonthToDefaulColExcelMap(List records) { + List> list = new LinkedList<>(); + if (ObjectUtil.isEmpty(records)) return list; + for (HardCanteenProductTotalVo i : records) { + LinkedHashMap map = new LinkedHashMap<>(); + map.put("totalPrice", BigDecimal.valueOf(i.getTotalPrice()).divide(BigDecimal.valueOf(1000), 2, RoundingMode.HALF_UP).toString()); + map.put("timeCount", String.valueOf(i.getTimeCount())); + list.add(map); + } + return list; + } + /** * 为HardCanteenProductTotalVo增加部门信息 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/食堂菜品购买统计(按月).xlsx b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/食堂菜品购买统计(按月).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b7e321ff0ffc373821b6d4cf7446bdebb5bdafc9 GIT binary patch literal 10004 zcma)C1ymec(#D-2!QI{6g1bYIAi>?;-5~=62<{%-B?+#By9b{T+$H!A$?lWv+dcn1 zXS!#4O1i(>ReihaQ_QuLi_72X>%1>e#PY2+Bihbc; zsA2&J1LJ@I14I3*n4yCMlZUNMW?ZK%BrAr*RnQ}9tvx#r=``e1vgR^Cpb#NlIw+_V6Pe&*{y| zWa)Woc8kD+ZPHA`k+|TBLYzQth?Z6v4L?>VCre|Pb(xx&AQ1ibbt@8kJPMoXus~<) zJDU%ob?f{>kPFLir4NGF7)Q00EndOjaOnvag0x|_@thZBs|q{kzxGa!?=3=~Z`@y> z99%Fltux&0R3vwAEAK(F?m(*S!+Z(qL5qIdRoI8u<*6kp?X}$r^xx67L}V@(d_vdy30<_mqHApLWcmzmbi9gEFbhWLs=^&g!I3h; zQXX=(_(+zn(FUNesi@UhTsy6CaI31RBW&B}xaQS&zgORj7Mz&()*t~Dc!}iby)Dd^>P7@%!1EXH?3?*P_=_>d??69&4_T*nlqv~#?Ryv4MANk_tL z_@3dX8;z{-y#5@Nvw-#*bO-c)M21e*PJ(VimT7V{!nmMV>3h3fA`+f3JPI0f)=0RA zOFov#2i|e|m&N5@MQ#=Qn_oAs1@nBqYQ&4SU6Qn2>_5JS_tRPxx>WC$b^Wpt5GC(0 zh|DsVA{sy^Pg6EldvJ3t`ADKb_wsZm_!rQF)ur#UYsbuCWF^3 zTUE6Yu7cuJU%}Bq`ax!`bI~xe1`T#Wv(LH4NhZI)t=5j<>J7I7y-9BGw47;;l5|9` zN%`T#acHpl%BjU;RCzf0t6uj;#*$afN}W3QO1f_I2L85VHtapFnBx zi0o_6fw^>dxG>L!aAEbzb#Gs{4hjwMy2h7_?W;9}aLGvrau{YYW4!DD zYOU2aj8D#aqHKDSK=)Umakh0@`YW`Xi?j7z7+%#lHcDP*%MiU1@uu{#>{(9iu~Xp^ zr-0lKXnZv46)Z^ufmq_7TkQUu%AqJrc-25W$1TuIaP)DeZz5wIjv0*M zTfYy~QQgK}`*;}lj-=X@pAWSwNm~X=IwOV3L3||@mc*|ZnzDYlk^E~w>JK$eZTPxs;D9sI^YC(_2!)x zWVMKkRu1wy1WFN;E`T2IY?m)YwxIZlXS1XrxZZ8xwo2-z8NdSQ}=Gh&J+zhFx z9CwQ6y3vA99?WUxTQhLK$10*|=or^-? z_tD&N%nA1q{gIrxNJV?nDsmwB`;cwR&59HFw6qK~cPvBt8L16LuwYqw=uw4RQTLM~ z43G%Iu2tb(;0K9e1tEYM^>_kAybLWcc-mEp4o6xG3deS2_$FeWOqAVrnJqUqVe#{r zwvJL5(?%t{Zow903G2pZiSymCD5?fhl*Q#zEXFuaV>Fgk+hs#yv{*E5#yoQv6RMGI z+U<0$M)6sIgnTM4`3fs!vehIK2-fUwJx2%lA)R%DkXx8-2j=o6=&mvT_YKzB(VgP!bE6bMvw7d2P>#C|+N%x{X^0i66I4r$V3>aZgj- z%&e}-S1JP;4HKnyv>Nk57pJs9=rLr&wUFhOOOca7n*u`3<1%ASoV(N4&2m|YYXIjN zfq>&q5Rp78k>l;0(HY8r56|ak{Zn|lSeV+H{`Ra7xw%F90SyM$_7ru`3GxrIpTa+5 z?m%lK7M~NNo%}=yu(fhXG1BigW7BZGE9$&AuW`QM)eUo>tLWqksuE%B*#jTJ!{q5kGTEnE{==sE^-nrkD)i(Ax6T(_3{3yGUpZUCKN15cGRnBIAhwn)=Way z5JL*4TBPD*+hLC&ik8!X(TIHZ@$~UbCyW_4bn!_RX%z^oqpb6;`_R!B(7h!XRtD0Z zN|rtJ9TW8hg6}?As1Rk4Ey9UhMPy!_K;pt+z{3;c85a1jk3J+4)+ZyXd=iv7V9oHdvG&`9vd{WVVDc2)WM-i+CojSWuVTAB3^ITd;<4T5_-lj8CJ%H}k>(0W3vV^=`9*$x2htLGXcY3gVu1AXfeJ)gvZ>OsC1s}e~Vskwt9|=8N z7mwWu)8rLOFt>S}?$uEyIlQA>OMd~d<|R6wOW5v@ z;6bN>Stgnx#O3e6cNX_;rg95*4;Onp2Co`91sM_ zp&gD*M*2Gm);Ttz@?DH9i1ff7Twtw7MbGhA3ZDRJN-~8K{nRQrQEE{k+mTX(E74N){Saa*Czhe-?x87q_ z-vBLLPa*mfhN)iMS#*BT{;cRCubMazvZD-s+n)W z8Ymdw72@?dQm}+cEonH?IbY8>FCJVDG1!0{wc|1uEoo1ZND($-BaV$Vx%$33TYsw9 zBMdQ{=|hW!u2F0`)^aQ-FF%l)W zr|-))6I~z|ddH8X3Ix%7Hi;Bn3|O6}rs_#R(p$G7CRO9^L8vc4cl# zrR5eCyTD{7loJm?_@r48XI`^`-kCY4{Z*-lQ zGL>GaHb_hCIGO0_QDa`tWJZDU6pNagLj+tX9A z4nxMD>pu`3#BaWemz*$7G@C+$j_wH? zfh#awbeiV0T_~)L4v&&vB7_%iI~*;7=U&p;G2rF9opiI{{4`AWY5=9rMkqHY!)3XZ;ui$%g5 ziu27A%^2+mi?Nn7i*N`;w=o)Ksb+)thjJ;86YOEIxvidt(DWL%y3;~>loiu<+$*>E zJrS>k`0rn8&rrmUq&N`T6e3QQZrgppXeMokH4RZI*h+@);`*; zxAEGogZM5Tpef#5aqIHP)5p%dyfS!`pyWXu2iN(r!3Z#cPXGvlll{j-sCm!~Z^c6`1c zwSBoA)q9(b595bg@^Ovz+>8k-1Us+b4yRk`_N$g?4#yUySx^Fw;7jPLgsUTs%=b#G zp&k%n0cAL|+D&Mpr5|O2XXNWc($i&uFxH!ci! z;jG1T@zhVq-z!m6PT4@g95I=f!ZO8ro3qe_-wL+{(Y?wW;#iJ-=eF{Mj_=2*s+t0> z2w!QF3glNdG!=d19g0W`ZeeWAGL)xhp(moKE`klq+6%`L8NE^5SqVxgV7*I)8Jf-v zZ>s~ge%12G-7DCc>4LBIA@Vt{O;>pTh({@;)3+Oah|E}^oHtn~%3<;TZsf9sa<>kC zmfDg?q84wS41a`qBH4fwiYfn5on+C}?StIqV?gYd3L6_*1~C|{I583 z@w74h8DIx*mtyfXas8z>{Bd}LU_*?@dXpCp?dC5Ir4z|8;sV}-N$7dE@Eh&3ZaRL} zQKNkyCam&aIY3xFa*{3t7CnaqFR|#}+{pYY(m(Jh<5R|w$EdE`=1?=)?fa7-K3A*P zqxT+XgO007cBzLzCm0>dYo`W^)Zmz@2AFW2Li<&g!I5~5)5T!BB{!HYjh!BX#7Z0g zYq@mtqaLm*;?yE)@OPaSWiBAk?r2%lX?y8?>v=mu7Q7&hy*urz|^7%fvC^-(seS8(-~p)G{80oYKkMkM`|_L-yMe&*$vc zl!a%kv-W+qchxlqowp2ily01RY4iguY3ArFJ%`9vCghgVgB@45y~#^90kA6?GVkSor&wyrhne~Py&;2IJtVz|%)zPhwE zFyFYM9aIb2wzI#?07tCN6a6rdelRkTK3UO-JR?qpw#(DFDNB??m?yuAwCFp<%<6eF zggr()t}12g4wcwLt;Ts8qY;;5vI@}=pNy&B2cXavWY%Xz40UKneFvFmZE@DS0AR%j z@m(Dol$qeD|1ih-^r1Xnbzx-)bsj2EVUTW$o)=nDF-qtA61UP`^G6PN^B0j;Oj=HQ z6xutT);J*MWMD=cXt<1VQ9u#Tb(t)4Kt}8hd^|8iEICMaMmbtClgC|8on)XsC;nyN z?uJ8<4=x;s8=m*fCyi4iMC2R$EGC7>)zfl*&D*59sA3!#Us2CCLpijfrX0!?Yes2I zjVi{KS`uAn=r-WT>#iU-UCHs0S{we|w`KL4(Dseoxy47RhaCYZs>eQ?CUDD@;7GF4 ziDjs=*@A`Vxl4j^n2SXqava{q8Or7MZmfg-&`;2%US$#>A}IYg!IhpiqDSqD{5F^c z4tn3vO&hd7w^3+Cf%^}|HM}N&+Rl_7;aA*$145W^BvD)YYwB~n2u@RUY!z;nGNKqG zGv3?%7FM~Z@M*<{%T*yUnYkV2)U}~x4pTY*v&F~015FX1d=2YaleZHfiQ)j^hxp<0 zL=Aj13V%vN$x}^qv&9`PAKS_*o?+<+*)9O6iefk#y2(>y(xUt?hg{GtP8x8NAT$=a z$gk<)+2h;eS(r-@!OE!Uk$?UmzplbD;{%2m9t3W>8Ad7~Bt_>iHRa zOvT9Q9zAKk z!KjHQsege`5Nm1zS$Ab~1jF72hNtathuG@A_NJd2X1)qxjdv$mUU@}aVBPF^DRM>8 zv~TwJ#7r#I#@Ph!kO(q;I5d$_RI(_~dEhMV>0$)U=|TjY)6;&`+ISAP+bjYu7W@!R zOvG!TAaW^HhOC++fvTzkS6!8%pTz(-g$e&{wH|^sg63+S?N(HADn7@xD5r#tqPD_J_a_{kGkuzx^Z1I`!q@S@ z*dn=?7moH}6_QQ5dIXO`ys9Jwzl zbs~*6q;ekNkc3BL=|U%ypPf)kTr+0MWF#>p%?_fn-g=z^uEQQ}$YwsmK{XOW!yRxm z;Q86DY zAd_pii{^rtdr>BZ106t+_yl>22!f17@dzqB(zI*SL3ELeC=OO4iQ_<13uxUR&?#q^AuF)4Qch1IDM#S_F2}L8mrW(}4(@=Ffwj zRnQ~5G#hjlE!vFq9;Pe$#Zq$T*gCn%G2Ym3OJQv!Uenu528j_gGlPzl)UV|(kJA)& zucs{5inq63#>;?-g!@sWS=;wZ@nJ8j&&HekR*Hgw%T`8 z6(6JD16vVw3J2=Ui(^+Mw_oAtaP7BU)d||zyhHoieztLaKQQL+c6n$o$|gM!G2Grm z_LUL~$a_DxIZ&4!0=32{F07<6I_P;FJ|+x2w~s?*voiWTVH{M)@v>m)s#FNBP=rt9 z!#QYyp|FZ5k8~4(Dw@bRYU1wpa3OfCsND-=khIlDa#J6`wi!0iPn;=uf49Frm3-9Z z%O|IFvkJ%}YD`Jwz5lL1df56Bf#R*9Bv{>ikVmHA^%-dHNZ#Mw{$@pAjBk=x!sTHZ zlRZswwcY))^GFPVPb@|{j+BPG^*$vTCK=Pvk&{%=#}OUl;*2I!QW7Fm1u+6l z0sN`zrG?WNKx2iu&H|;Ogw@AL5|kH6K}7tpKEGg)>33=1#4Q>=+zq+qD?R}c@0~5K z>LK1i0f+$YWa|m~;=~=N1mL2951e-|O$iC6eSJIt9cJ#_W=qx!Fs-f7f>)qi<1l9S z8J(zxxO&~hdQUAq!uL+_Qi_xHOoJxQJ_=-WVvtf$5er2Ro>?e|SnzzgpTZu?5~mQr z!XU+>%Jy@*x#ABv8Au2>CvI`Sc^8Xgvu+2AL?!ViGI3Y4p!UOHSU&<_3My{AcH#Jk zO6ZRg^SX6bXmY|pE(qs5FL=8Sy+ChHC?xb&^qSmmbr_sSh>``_3VGPG;#2WK9!<=dY1D5S&4!Ws?kj~68jl+ z%{++8S-1qu4B0CK6n@E7-|KczP0*v^J3zi@pc;;Ws1laHyA1of6VXuw&zc_b(<;@! zt)~65+95PgL+S*r2OjbC(MSnIt^4U~cs3+O;T*xZo4koi-0qis&L~~3Cdjw9hphab z;JySmWM{j%3roIv3B(g66(9B#oiMRhc-6p7=Ojf^ID!(2I~7vvi~8;6k?fj#%ox)K zv(-T_)JHRDqPidlN<>la#m!yM=w(%i_155Z0IHQWvOVZP6npSB7xZOG%&GDO(Ed0$ zsNl_IE_J6T+o1zn@tZpmEhnu`%TiF+x)vSRr}vefYKYL(ZS(+mzR>7<_f7{1QEb(V z?&|AG59l*7{Vm7~deI+o#BwEC+kk7xoa;gw| zbwe;x((O@deYt47^aaiLle*E^obJm*Jx%*V7vK#t(niqaT)9q+l$LGce4V~_q^xmV zr+^p29_hM_k|E4oONR%PpSyvvO(*F-@!Waqve#?NMC-K5#D@FU`%}f%MF!0>M&EWb zHRQJ{t3fqT>`tp;@4l^@G)gh^`ECMh6zB*6$Km=e=P7CraDEn@F74l1&@hXQXA3s6 zAom)YIS9$96A!fxf!4g2%_!~5s1{=3TQX2?{2Ey?W$}Zr!E;7k#~Q-SD1u+?s9O3I zngQ=BIrF>qUTmZxK}1fjH^&cnV7)0^8Q&YxsMF;JwARk5?tRPDkYn1r<*%)w=1y;z zRn#`v3=B%OvRF>}EP!eh7ylYE9W>B#lIcj9VI?yWjqpWKFk&wS?;vi$5#}xFTelu~ z**@5wcgG2oNVFVVGJ@yOQM5Z0lIZKzz7}{%mhM%JDDvJIk@>HwQ^i*;myCa0f2i&o zw@gRKCkyVUc_-4w9@|<*j)T_yI62=y61jiGb>8YLM$29HWu&$!t)W(LX*oD!a&dWy z{k&AwwiSAfqP@S?k--}Kb|j%xZ{mK{G;oR7#MaoPn>oK(WCIy}+x60}EJRS3a_-GU zj=HdIH4R4|Ta+KO*{%P7uWiFTy(8&6ncDo`QS#<-Yk7S7Z}q8Of%u0E)3ann{FrPH z3u@m{&=KlZn}Rzg+JXx+*}j5_Z$OIt<2cpJc&&rBRuL73>CdpSsn=WSt3D=Q@Rv#S zSc_s>f?QRCgzbTDZ7Rn;9&eU|q{~}pAU)L_x}d)7o*LbT1aAp^SY)Dzd+Vb*&KAy3 zn_xMyqoypJ&Ce-O%qwI}9?aEhr))QPD%qD!q^uy&yFwS?{RPI6C$#0--oA8ibnR7Y zzStN$JxDDs)79oZCLq`+f4&{{LIMVccg)FEaOlWgHoUyTj1gHvH#FsS)Yosi?T!qo z{kn?8QIt6&*TPd%-@7{FCUokDr1?T9^Y$Jo*!p`wNuGk7`qECPjAics9m{|93H}LA zpv{8Q{u7L!pWwuM+CP8R19H``OVOp<7q?eY*cp{kPr(vsd=wwm16{=g0FnlL*<%*8`hrc!vr<1E5iT}z|3Dx99+AZ?F1=w1gp80ZexcQw&BR6y96Grw z>*LQHZ*v}8daKGXG-tqN-R0m%E>K~Va3F-#^p- z_d?Cb6K!Ynr$P<#Q$OXom!czPZ|7oa=c2FX>0s*o_PJP7@nJ|2f)yj|imI)AIO`7{eNCFFIN2P~%!WbMT9jTMU)Y)4Qj;cU4Kt$;&JEjWGkDLBE1yl*|( z1k0!gsuPo0hrM?zKU1sRnrf;xG8chBry7GiU6$s#_a;SP)SZTX@%>4OO zNs=%gq8ysqcw@P6Vju-66|zv)qlp~xy3-G){Kgxj4TyxMWOfw1B&{v^AA=4y;!qb^ zWSP?Y^8KhHG&W%IoHJRMhaU;vwO+){!aOVsW4#hlbSVk=Zr|<bkVnTXXTZm<7b)j7o+9(nR%KVFmN!E zr>#EeKhD!H1OMF1e$F_*#xpqvNc3m^`McBKGtjfnFQ@x|==_YB|K;pCB!7)(XV2p= zq@BO}`<=G)Ed0wK^Y{+`I5{rp0S|F3HQk=A~<^Lst~Pdfrn zWQTvMj{k1q_e$TN77CttLC+TcsQdl@uYDi(r|Q33y??($esA{v>G9{;*s0Ie!``v3p{ literal 0 HcmV?d00001 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 245a299b8..030735631 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -42,7 +42,21 @@ a.del_flag = '0' - and DATE_FORMAT(a.create_time, '%Y-%m-%d') = #{dto.createTimeStr} + + + + + and DATE_FORMAT(a.create_time, '%Y-%m-%d') = #{dto.createTimeStr} + + + and DATE_FORMAT(a.create_time, '%Y-%m') = #{dto.createTimeStr} + + + + + and DATE_FORMAT(a.create_time, '%Y-%m-%d') = #{dto.createTimeStr} + + and o.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]} @@ -129,7 +143,7 @@ from hard_car a inner join hard_parent_car p on a.parent_car_id = p.id and p.del_flag = '0' inner join hard_order o on o.parent_car_id = p.id and o.del_flag = '0' and o.hour_type is not null and - o.hour_type not in ('-1') + o.hour_type not in ('-1','null') @@ -186,7 +200,77 @@ group by DATE_FORMAT(a.create_time, '%Y-%m-%d'), o.hour_type - order by DATE_FORMAT(a.create_time, '%Y-%m-%d') desc, o.hour_type; + order by DATE_FORMAT(a.create_time, '%Y-%m-%d') desc, o.hour_type + + +