From 7ea47db47d3e039e25531cd511d8d7b1342ccfc0 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期三, 23 十月 2024 20:04:54 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 137 +++++--- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java | 4 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java | 36 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java | 72 ++++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java | 28 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml | 4 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java | 44 ++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java | 15 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java | 1 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java | 26 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java | 6 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java | 13 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java | 2 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 7 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 45 ++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java | 9 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java | 1 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java | 5 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 264 ++++++++++++++--- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderChargingInfo.java | 19 + ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 17 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java | 2 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/StrategyPriceVO.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java | 73 +++- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 10 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 21 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java | 8 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java | 3 33 files changed, 691 insertions(+), 195 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java index 9d3b023..b0deac8 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java @@ -59,6 +59,11 @@ public R<TAppCoupon> getAppCouponById(Long id) { return R.fail("根据id获取优惠券领取记录失败:" + throwable.getMessage()); } + + @Override + public R updateAppCoupon(TAppCoupon appCoupon) { + return R.fail("修改用户优惠券失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java index ceeb10c..9444f2b 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java @@ -62,4 +62,13 @@ */ @PostMapping(value = "/t-app-coupon/getAppCouponById") R<TAppCoupon> getAppCouponById(@RequestParam("id") Long id); + + + /** + * 修改用户优惠券 + * @param appCoupon + * @return + */ + @PostMapping(value = "/t-app-coupon/updateAppCoupon") + R updateAppCoupon(@RequestBody TAppCoupon appCoupon); } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/StrategyPriceVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/StrategyPriceVO.java index dcddb54..690ea5e 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/StrategyPriceVO.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/StrategyPriceVO.java @@ -23,7 +23,7 @@ @ApiModelProperty(value = "服务费折扣") private BigDecimal serviceFeeDiscount; - @ApiModelProperty(value = "折扣") + @ApiModelProperty(value = "模板折扣几折") private BigDecimal discount; } diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java index e00f706..58d5b85 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java @@ -26,6 +26,7 @@ private Integer insertion_status; // 是否插枪(0:否,1:是) private BigDecimal output_voltage; // 输出电压,精确到小数点后一位;待机置零 private BigDecimal output_current; // 输出电流,精确到小数点后一位;待机置零 + private BigDecimal power; // 功率 private Integer gun_line_temperature; // 枪线温度,整形,偏移量-50;待机置零 private String gun_line_code; // 枪线编码,没有置零 private Integer soc; // SOC待机置零;交流桩置零 diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java index 2a3ecf5..6bbb818 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java @@ -55,6 +55,9 @@ @ApiModelProperty(value = "1未出账2已出账") @TableField("status") private Integer status; + @ApiModelProperty(value = "账单类型 1充电算帐单 2账号结算帐单") + @TableField("billType") + private Integer billType; @ApiModelProperty(value = "1日结2月结") @TableField("orderState") private Integer orderState; diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java index 59b6847..57bc9ba 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java @@ -36,6 +36,10 @@ private Long chargingSecond; @ApiModelProperty(value = "充电电流 度") private BigDecimal chargingCapacity; + @ApiModelProperty(value = "充电电流 度") + private BigDecimal electricity; + @ApiModelProperty(value = "充电到账金额") + private BigDecimal orderAmount; @ApiModelProperty(value = "车牌号") private String licensePlate; @ApiModelProperty(value = "客户手机号") diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java index f4f6ee2..48a0b5c 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java @@ -23,8 +23,7 @@ private Long chargingSecond; @ApiModelProperty(value = "平台手续费") private BigDecimal platFormMoney; - @ApiModelProperty(value = "三方平台分佣") - private BigDecimal commission; + @ApiModelProperty(value = "车牌号") private String licensePlate; @ApiModelProperty(value = "手机号") diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java index b991d8e..a02ee90 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java @@ -13,7 +13,8 @@ @ApiModelProperty(value = "uid") private String uid; - + @ApiModelProperty(value = "orderIdStr") + private String orderIdStr; @ApiModelProperty(value = "充电订单") private TChargingOrder chargingOrder; diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java index 4b138c6..7944129 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java @@ -109,7 +109,7 @@ TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData(); SiteInfoVO data = chargingPileClient.getSiteInfoByNumber1(chargingPile.getCode().toString()).getData(); data.setChargingGunId(id); - data.setSiteId(chargingGun.getId()); + data.setSiteId(chargingGun.getSiteId()); data.setChargeMode(chargingGun.getChargeMode()); List<TAppUserCar> cars = appUserCarService.list(new QueryWrapper<TAppUserCar>() .eq("app_user_id",tokenService.getLoginUserApplet().getUserId()) @@ -308,5 +308,16 @@ TAppCoupon appCoupon = tAppCouponService.getById(id); return R.ok(appCoupon); } + + /** + * 修改用户优惠券 + * @param appCoupon + * @return + */ + @PostMapping("/updateAppCoupon") + public R updateAppCoupon(@RequestBody TAppCoupon appCoupon){ + tAppCouponService.updateById(appCoupon); + return R.ok(); + } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java index 6c8218b..dd40be3 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java @@ -73,7 +73,7 @@ //拿到单位列表 String[] split = ids.split(","); - List<TAppUserTag> list = appUserTagService.lambdaQuery().in(TAppUserTag::getUserTagId).list(); + List<TAppUserTag> list = appUserTagService.lambdaQuery().in(TAppUserTag::getUserTagId,split).list(); if (!list.isEmpty()){ return R.fail("当前标签已有用户获取,无法删除"); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java index 8626df8..85ec054 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java @@ -1,9 +1,13 @@ package com.ruoyi.account.service.impl; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.TInviteUser; import com.ruoyi.account.mapper.TInviteUserMapper; import com.ruoyi.account.service.TInviteUserService; +import com.ruoyi.other.api.domain.TIntegralRule; +import com.ruoyi.other.api.feignClient.IntegralRuleClient; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -19,12 +23,19 @@ @Service public class TInviteUserServiceImpl extends ServiceImpl<TInviteUserMapper, TInviteUser> implements TInviteUserService { + @Autowired + private IntegralRuleClient integralRuleClient; + @Override public void saveInviteUser(Long appUserId, Long beInvitedAppUserId) { + // 查询邀请用户获得积分配置 + TIntegralRule integralRule = integralRuleClient.getSet().getData(); + JSONObject jsonObject = JSONObject.parseObject(integralRule.getInviteUsersToEarnPoints()); TInviteUser inviteUser = new TInviteUser(); - inviteUser.setAppUserId(appUserId); - inviteUser.setBeInvitedAppUserId(beInvitedAppUserId); + inviteUser.setAppUserId(beInvitedAppUserId); + inviteUser.setBeInvitedAppUserId(appUserId); inviteUser.setCreateTime(LocalDateTime.now()); + inviteUser.setAward(jsonObject.getInteger("num1")); this.save(inviteUser); } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java index 94abbc7..aaf608f 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.chargingPile.api.dto.TAccountingStrategyDTO; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.BatchSetAccountingStrategy; @@ -14,6 +15,7 @@ import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.SteategyPassDto; +import com.ruoyi.common.core.enums.status.AppUserStatusEnum; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; @@ -62,6 +64,9 @@ private ISiteService siteService; @Autowired private SysUserClient sysUserClient; + + @Resource + private IntegrationClient integrationClient; @Autowired @@ -116,7 +121,7 @@ accountingStrategyService.save(dto); if(null != dto.getSiteId()){ //下发硬件数据 - List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).list(); + List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list(); for (TChargingPile tChargingPile : list) { integrationClient.setupBillingModel1(tChargingPile.getCode()); } @@ -142,6 +147,9 @@ Boolean flag1 = accountingStrategyDetailService.isStrategyPriceConsistent(dto.getAccountingStrategyDetails()); if(!flag1){ return AjaxResult.error("同阶段费率值需一致"); + } + if(Objects.isNull(dto.getDiscount())){ + accountingStrategyService.update(Wrappers.<TAccountingStrategy>lambdaUpdate().set(TAccountingStrategy::getDiscount, null).eq(TAccountingStrategy::getId, dto.getId())); } // 判断修改的计费策略是否为已通过 if(null != dto.getAuditStatus() && (dto.getAuditStatus() == 3 || dto.getAuditStatus() == 4)){ @@ -173,11 +181,6 @@ }); accountingStrategyDetailService.saveBatch(accountingStrategyDetails); } - //下发硬件数据 - List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).list(); - for (TChargingPile tChargingPile : list) { - integrationClient.setupBillingModel1(tChargingPile.getCode()); - } }else { // 删除计费策略明细信息 accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) @@ -187,6 +190,14 @@ // 添加明细 dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId())); accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails()); + } + + if(null != dto.getSiteId()){ + //下发硬件数据 + List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list(); + for (TChargingPile tChargingPile : list) { + integrationClient.setupBillingModel1(tChargingPile.getCode()); + } } return AjaxResult.success(); } @@ -318,8 +329,7 @@ return AjaxResult.ok(accountingStrategyService.pageList(query)); } - @Resource - private IntegrationClient integrationClient; + @ApiOperation(tags = {"后台-申请表单-计费模板审核"},value = "审核") @PostMapping(value = "/auth/pass") diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java index 8156686..7fb53ff 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java @@ -10,11 +10,17 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.feignClient.SysUserClient; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; +import java.util.Objects; /** * <p> @@ -30,7 +36,27 @@ @Resource private TRepairService repairService; - + @Resource + private TokenService tokenService; + @Autowired + private SysUserClient userClient; + + /** + * 添加故障报修管理 + */ + @Log(title = "添加故障报修管理", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE) + @ApiOperation(tags = {"小程序-故障报修"},value = "添加故障报修管理") + @PostMapping(value = "/add") + public AjaxResult<String> add(@Validated @RequestBody TRepair dto) { + Long userId = tokenService.getLoginUserApplet().getUserId(); + // 查询报修人员信息 + SysUser user = userClient.getSysUser(userId).getData(); + if(Objects.nonNull(user)){ + dto.setRepairman(user.getUserName()); + } + repairService.add(dto); + return AjaxResult.success(); + } @ResponseBody @GetMapping("/getRepairList") diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java index 4f85479..02edf11 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java @@ -24,4 +24,10 @@ * @return */ List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, String siteId); + + /** + * 添加报修记录 + * @param dto + */ + void add(TRepair dto); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java index 728a9f4..7ee4de8 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java @@ -145,9 +145,9 @@ user.setDelFlag("0"); user.setRoleId(partner.getRoleId().longValue()); user.setRoleType(2); - user.setObjectId(partner.getId()); //添加新数据 this.save(partner); + user.setObjectId(partner.getId()); R r = sysUserClient.addSysUser(user); if(200 != r.getCode()){ throw new RuntimeException(r.getMsg()); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java index 8029ad5..8228a4c 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java @@ -24,6 +24,7 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.integration.api.feignClient.IntegrationClient; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; @@ -38,6 +39,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -75,6 +77,9 @@ private SysUserRoleClient sysUserRoleClient; @Resource private TParkingLotService parkingLotService; + + @Resource + private IntegrationClient integrationClient; @@ -233,9 +238,9 @@ if(StringUtils.isEmpty(site.getAddress())){ return AjaxResult.error("详细地址不能为空"); } - if(StringUtils.isEmpty(site.getLon()) || StringUtils.isEmpty(site.getLat())){ - return AjaxResult.error("地图位置不能为空"); - } +// if(StringUtils.isEmpty(site.getLon()) || StringUtils.isEmpty(site.getLat())){ +// return AjaxResult.error("地图位置不能为空"); +// } if(StringUtils.isEmpty(site.getPhone())){ return AjaxResult.error("站点电话不能为空"); } @@ -288,7 +293,7 @@ TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); if(Objects.nonNull(vip) && vip.getType() == 2){ list.forEach(item -> { - item.setVipElectrovalence(vip.getDiscount().multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal())); + item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal())); }); } } @@ -370,7 +375,7 @@ TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); if(Objects.nonNull(vip) && vip.getType() == 2){ list.forEach(item -> { - item.setVipElectrovalence(vip.getDiscount().multiply(item.getElectrovalence())); + item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal())); }); } } @@ -394,5 +399,11 @@ tChargingGun.setAccountingStrategyId(accountingStrategyId); } chargingGunService.updateBatchById(list); + + //下发硬件数据 + List<TChargingPile> list1 = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, id).eq(TChargingPile::getDelFlag, 0).list(); + for (TChargingPile tChargingPile : list1) { + integrationClient.setupBillingModel1(tChargingPile.getCode()); + } } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java index a8cc5e0..57d3f7e 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java @@ -135,7 +135,7 @@ // 查询最高折扣的会员 TVip monthlyCardDiscount = vipClient.getVipInfoByType(3).getData(); strategyPriceVO.setServiceFeeDiscount(monthlyCardDiscount.getMonthlyCardDiscount()); - // 查询最高抵扣的会员 + // 查询最高优惠的会员 TVip maximumDeduction = vipClient.getVipInfoByType(1).getData(); strategyPriceVO.setMaxDiscountAmount(maximumDeduction.getMaximumDeduction()); // 查询最低起步价会员 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java index 2fa9813..9bead20 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java @@ -109,6 +109,7 @@ notification.setContent(data); break; } + this.save(notification); } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index 1c55a4d..eca82dd 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -298,8 +298,14 @@ List<TChargingGun> chargingGunList = chargingGuns.stream().filter(gun -> gun.getChargingPileId().equals(item.getId())).collect(Collectors.toList()); for (TChargingGun chargingGun : chargingGunList) { if(chargingGun.getStatus().equals(4)){ - // TODO 查询正在充电的单子的实时记录 - chargingGun.setSoc(100); + // 查询正在充电的单子的实时记录 + TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(chargingGun.getId()).getData(); + if(Objects.nonNull(chargingOrder)){ + UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); + chargingGun.setSoc(uploadRealTimeMonitoringData.getSoc()); + }else { + chargingGun.setSoc(100); + } } if(chargingGun.getStatus().equals(5)){ chargingGun.setSoc(100); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java index d348ebb..3832dc5 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java @@ -3,14 +3,24 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; +import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TRepair; import com.ruoyi.chargingPile.mapper.TRepairMapper; +import com.ruoyi.chargingPile.service.ISiteService; +import com.ruoyi.chargingPile.service.TChargingPileNotificationService; +import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.chargingPile.service.TRepairService; +import com.ruoyi.common.core.constant.MsgConstants; +import com.ruoyi.common.core.utils.HttpUtils; +import com.ruoyi.common.core.utils.MsgUtil; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; @@ -22,10 +32,15 @@ * @author xiaochen * @since 2024-08-08 */ +@Slf4j @Service public class TRepairServiceImpl extends ServiceImpl<TRepairMapper, TRepair> implements TRepairService { - - + @Autowired + private ISiteService siteService; + @Autowired + private TChargingPileService chargingPileService; + @Autowired + private TChargingPileNotificationService chargingPileNotificationService; /** * 获取报修记录列表 * @param name @@ -36,4 +51,21 @@ public List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, String siteId) { return this.baseMapper.getRepairList(pageInfo, name, siteId); } + + @Override + public void add(TRepair dto) { + // 故障短信提醒 + Site site = siteService.getById(dto.getSiteId()); + TChargingPile chargingPile = chargingPileService.getById(dto.getChargingPileId()); + String siteName = site.getName(); + String reqStr = MsgUtil.faultMsg(site.getPhone(), site.getName(), chargingPile.getNumber() + ""); + String result = HttpUtils.post(MsgConstants.SEND_URL, reqStr); + log.info("故障短信提醒:{}",result); + if(siteName.length()>10){ + siteName = siteName.substring(0,10); + } + chargingPileNotificationService.saveData(4,dto.getSiteId(),dto.getChargingPileId(),site.getPhone(),"检测到"+siteName+"..."+chargingPile.getNumber()+"号桩设备离线,请及时查看处理!"); + dto.setRepairTime(LocalDateTime.now()); + this.save(dto); + } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml index 2c96080..1073452 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml @@ -285,8 +285,10 @@ left join ( select a.accounting_strategy_id, + a.service_charge AS serviceCharge, + a.electrovalence AS electrovalenceOriginal, (a.electrovalence+a.service_charge) AS electrovalence, - ((a.electrovalence+a.service_charge)*b.discount) AS vipElectrovalence + (a.electrovalence+(a.service_charge*b.discount)) AS vipElectrovalence from t_accounting_strategy_detail a left join diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml index 5ffee38..3cb2293 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml @@ -43,7 +43,7 @@ AND tpr.code LIKE concat('%',#{query.code},'%') </if> <if test="query.licensePlate != null and query.licensePlate != ''"> - AND tpr.licensePlate LIKE concat('%',#{query.licensePlate},'%') + AND tpr.license_plate LIKE concat('%',#{query.licensePlate},'%') </if> <if test="query.lotIds != null and query.lotIds.size()>0"> AND tpr.parking_lot_id IN diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java index d9b3c8d..6288179 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java @@ -73,18 +73,13 @@ public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) { AccountListVO accountListVO = new AccountListVO(); ChargingBillVO res = chargingBillService.chargingBillList1(dto); - - ChargingBillVO res1 = chargingBillService.chargingBillList1(dto); - List<ChargingBillListVO> records = res1.getList().getRecords(); + List<ChargingBillListVO> records = res.getList().getRecords(); accountListVO.setBillCount(records.size()); - accountListVO.setTotalAmount( - res1.getPaymentAmount().subtract(res1.getRefundAmount()==null?BigDecimal.ZERO:res1.getRefundAmount()) - .subtract(res1.getCommissionAmount()==null?BigDecimal.ZERO:res1.getCommissionAmount()) - .subtract(res1.getSharingAmount()==null?BigDecimal.ZERO:res1.getSharingAmount())); - accountListVO.setPaymentAmount(res1.getPaymentAmount()); - accountListVO.setRefundAmount(res1.getRefundAmount()); - accountListVO.setCommissionAmount(res1.getCommissionAmount()); - accountListVO.setSharingAmount(res1.getSharingAmount()); + accountListVO.setTotalAmount(res.getOrderAmount()); + accountListVO.setPaymentAmount(res.getPaymentAmount()); + accountListVO.setRefundAmount(res.getRefundAmount()); + accountListVO.setCommissionAmount(res.getCommissionAmount()); + accountListVO.setSharingAmount(res.getSharingAmount()); accountListVO.setList(res.getList()); return R.ok(accountListVO); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 429e443..6dc6368 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -248,7 +248,7 @@ @ResponseBody @GetMapping(value = "/pay/order/charging") @ApiOperation(value = "充电信息", tags = {"管理后台-支付订单-订单信息"}) - public R refundDetail(Long orderId) { + public R<PayOrderChargingInfo> refundDetail(Long orderId) { PayOrderChargingInfo payOrderChargingInfo = new PayOrderChargingInfo(); TChargingOrder byId = chargingOrderService.getById(orderId); List<Site> data = siteClient.getSiteByIds(Collections.singletonList(byId.getSiteId())).getData(); @@ -261,7 +261,20 @@ List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData(); payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate()); } - return R.ok(); + payOrderChargingInfo.setTChargingOrder(byId); + + Long count = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId).count(); + payOrderChargingInfo.setPeriodCount(count); + if (byId.getAppUserCarId()!=null) { + List<Long> carid = new ArrayList<>(); + carid.add(byId.getAppUserCarId()); + R<List<TAppUserCar>> carByIds = appUserCarClient.getCarByIds(carid); + payOrderChargingInfo.setCarNum(carByIds.getData().get(0).getLicensePlate()); + } + payOrderChargingInfo.setStartTime(byId.getStartTime()); + payOrderChargingInfo.setEndTime(byId.getEndTime()); + payOrderChargingInfo.setTimeCount(payOrderChargingInfo.calculateDuration()); + return R.ok(payOrderChargingInfo); } @ResponseBody @@ -315,10 +328,10 @@ TChargingOrder byId = chargingOrderService.getById(strategyId); ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO(); - chargingOrderInfoVO.setCdElectronic(byId.getCurrent()!=null?byId.getCurrent()+"":""); - chargingOrderInfoVO.setCdVoltage(byId.getVoltage()!=null?byId.getVoltage()+"":""); - chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()!=null?byId.getTotalElectricity()+"":""); - chargingOrderInfoVO.setTotalPower(byId.getPower()!=null?byId.getPower()+"":""); + chargingOrderInfoVO.setCdElectronic(byId.getCurrent()!=null?byId.getCurrent().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":""); + chargingOrderInfoVO.setCdVoltage(byId.getVoltage()!=null?byId.getVoltage().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":""); + chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()!=null?byId.getTotalElectricity().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":""); + chargingOrderInfoVO.setTotalPower(byId.getPower()!=null?byId.getPower().setScale(2, BigDecimal.ROUND_HALF_DOWN)+"":""); if (byId.getAppUserCarId()!=null){ List<TAppUserCar> data = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData(); if (!data.isEmpty()){ @@ -331,16 +344,20 @@ // 时段总服务费 BigDecimal bigDecimal = new BigDecimal("0"); List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, strategyId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); + for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : list) { + if (byId.getVipDiscountAmount()!=null){ + BigDecimal multiply = byId.getVipDiscountAmount().divide(byId.getServiceCharge(), 2) + .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); + tChargingOrderAccountingStrategy.setVipDiscount(multiply); + } bigDecimal = bigDecimal.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); - tChargingOrderAccountingStrategy.setVipDiscount( - tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice() - .subtract(tChargingOrderAccountingStrategy.getPeriodServicePrice()) - ); - tChargingOrderAccountingStrategy.setCouponDiscount( - tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice() - .subtract(tChargingOrderAccountingStrategy.getPeriodServicePrice()) - ); + + if (byId.getCouponDiscountAmount()!=null){ + BigDecimal multiply = byId.getCouponDiscountAmount().divide(byId.getServiceCharge(), 2) + .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); + tChargingOrderAccountingStrategy.setCouponDiscount(multiply); + } } chargingOrderInfoVO.setList(list); return AjaxResult.success(chargingOrderInfoVO); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderChargingInfo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderChargingInfo.java index 0c6b0c9..32db2d9 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderChargingInfo.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderChargingInfo.java @@ -2,9 +2,10 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.order.api.model.TChargingOrder; import io.swagger.annotations.ApiModelProperty; import lombok.Data; - +import java.time.Duration; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -34,4 +35,20 @@ private BigDecimal orderAmount; @ApiModelProperty(value = "车牌") private String carNum; + private TChargingOrder tChargingOrder; + private Long periodCount; + private String timeCount; + public String calculateDuration() { + if (startTime == null || endTime == null) { + return "00:00:00"; + } + + Duration duration = Duration.between(startTime, endTime); + long totalSeconds = duration.getSeconds(); + long hours = totalSeconds / 3600; + long minutes = (totalSeconds % 3600) / 60; + long seconds = totalSeconds % 60; + + return String.format("%02d:%02d:%02d", hours, minutes, seconds); + } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java index f955e49..99363fb 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java @@ -29,8 +29,10 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; import java.time.temporal.TemporalAdjusters; import java.util.Arrays; import java.util.List; @@ -71,7 +73,10 @@ startTime2 = split[1]; } PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); + PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999); List<ChargingBillListVO> list = this.baseMapper.chargingBillList1(pageInfo,dto,startTime1,startTime2); + List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList1(pageInfo1,dto,startTime1,startTime2); + chargingBillVO.setOrderCount(list1.size()); BigDecimal paymentAmountTotal = new BigDecimal("0"); BigDecimal orderAmountTotal = new BigDecimal("0"); BigDecimal electrovalenceTotal = new BigDecimal("0"); @@ -109,15 +114,20 @@ chargingBillListVO.setUid(chargingBillListVO.getId().toString()); // 根据账单的出账时间 查询上个月的充电订单 - LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); +// LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); + // todo 临时修改为查询昨天的充电订单 + LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); // 账单周期 chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); // 获取 LocalDate 对象 LocalDate date = localDate.toLocalDate(); - // 获取该月份的第一天 - LocalDate firstDayOfMonth = date.withDayOfMonth(1); - // 获取该月份的最后一天 - LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); +// // 获取该月份的第一天 +// LocalDate firstDayOfMonth = date.withDayOfMonth(1); +// // 获取该月份的最后一天 +// LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); + // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 + LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN); + LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX); QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .between("create_time", firstDayOfMonth, lastDayOfMonth) .eq("status", 5) @@ -189,7 +199,7 @@ } BigDecimal add = tChargingOrder.getElectrovalence().add(tChargingOrder.getServiceCharge()); tChargingOrder.setTotalAmount(add.toString()); - tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount().toString()); + tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount()!=null?tChargingOrder.getCouponDiscountAmount().toString():"0"); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(tChargingOrder.getCode()).getData(); if (data5!=null){ if (data5.getTime_remaining()!=null){ @@ -226,54 +236,38 @@ } if (data3!=null)tChargingOrder.setUserName(data3.getName()); // 累加实收金额 支付金额减去退款金额 - if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ - paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount()); - paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount()); - - }else if (tChargingOrder.getPaymentAmount()!=null){ + if (tChargingOrder.getPaymentAmount()!=null){ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); - paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); } // 累加订单金额 if (tChargingOrder.getOrderAmount()!=null){ orderAmount = orderAmount.add(tChargingOrder.getOrderAmount()); - orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount()); } // 累加累计电费 if (tChargingOrder.getElectrovalence()!=null){ electrovalence = electrovalence.add(tChargingOrder.getElectrovalence()); - electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); } - if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){ + if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus()!=null && tChargingOrder.getRefundStatus()== 2){ refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); } // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge()); - serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge()); } // 累加平台手续费 - if (tChargingOrder.getCommissionAmount()!=null){ - commissionAmount = commissionAmount.add(tChargingOrder.getCommissionAmount()); - commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getCommissionAmount()); + if (tChargingOrder.getServiceCharge()!=null){ + commissionAmount = commissionAmount.add(tChargingOrder.getServiceCharge().multiply(BigDecimal.valueOf(0.006)) + .setScale(2,RoundingMode.HALF_DOWN)); } // 累加平台分佣 if (tChargingOrder.getSharingAmount()!=null){ sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()); - sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount()); } // 累加充电度数 if (tChargingOrder.getChargingCapacity()!=null){ chargingCapacity = chargingCapacity.add(tChargingOrder.getChargingCapacity()); - chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getChargingCapacity()); } - // 累加优惠金额 - if (tChargingOrder.getCouponDiscountAmount()!=null){ - discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount()); - } - if (tChargingOrder.getVipDiscountAmount()!=null){ - discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount()); - } + } // 将chargingSecond 这是以秒为单位存放的总秒数 将其转化为xx小时xx分钟xx秒 int hours = chargingSecond / 3600; @@ -291,6 +285,7 @@ .subtract(chargingBillVO.getSharingAmount()==null?BigDecimal.ZERO:chargingBillVO.getSharingAmount())); chargingBillListVO.setPaymentAmount(paymentAmount == null?BigDecimal.ZERO:paymentAmount); chargingBillListVO.setOrderAmount(orderAmount == null?BigDecimal.ZERO:orderAmount); + chargingBillListVO.setRefundAmount(refundAmount == null?BigDecimal.ZERO:orderAmount); chargingBillListVO.setElectrovalence(electrovalence == null?BigDecimal.ZERO:electrovalence); chargingBillListVO.setServiceCharge(serviceCharge == null?BigDecimal.ZERO:serviceCharge); chargingBillListVO.setCommissionAmount(commissionAmount == null?BigDecimal.ZERO:commissionAmount); @@ -314,6 +309,85 @@ chargingBillListVO.setOrderCount(tChargingOrders.size()); // 充电时间秒 chargingBillListVO.setChargingSecond(chargingSecond); + } + for (ChargingBillListVO chargingBillListVO : list1) { + LocalDateTime billTime = chargingBillListVO.getBillTime(); + // 将其转化为yyyy-MM格式字符串 + chargingBillVO.setCreateTime(billTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + // 将billTime减去一个月 转化为yyyy-MM格式字符串 + chargingBillVO.setBillWeek(billTime.minusMonths(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); + + chargingBillListVO.setUid(chargingBillListVO.getId().toString()); +// LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); + // todo 临时修改为查询昨天的充电订单 + LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); + // 账单周期 + chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); + // 获取 LocalDate 对象 + LocalDate date = localDate.toLocalDate(); +// // 获取该月份的第一天 +// LocalDate firstDayOfMonth = date.withDayOfMonth(1); +// // 获取该月份的最后一天 +// LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); + // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 + LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN); + LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX); + QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() + .between("create_time", firstDayOfMonth, lastDayOfMonth) + .eq("status", 5) + .eq("recharge_payment_status", 2); + if (chargingBillListVO.getType() == 2) { + eq.eq("site_id", chargingBillListVO.getSiteId()); + } + List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq); + orderCount+=tChargingOrders.size(); + chargingBillVO.setCategory(""); + chargingBillVO.setExportList(tChargingOrders); + for (TChargingOrder tChargingOrder : tChargingOrders) { + + // 累加实收金额 支付金额减去退款金额 + if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ + paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); + + }else if (tChargingOrder.getPaymentAmount()!=null){ + paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); + } + // 累加订单金额 + if (tChargingOrder.getOrderAmount()!=null){ + orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount()); + } + // 累加累计电费 + if (tChargingOrder.getElectrovalence()!=null){ + electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); + } + if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus()!=null&& tChargingOrder.getRefundStatus()==2){ + refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); + } + // 累加累计服务费 + if (tChargingOrder.getServiceCharge()!=null){ + serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge()); + } + // 累加平台手续费 + if (tChargingOrder.getServiceCharge()!=null){ + commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.006"))); + } + // 累加平台分佣 + if (tChargingOrder.getSharingAmount()!=null){ + sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount()); + } + // 累加充电度数 + if (tChargingOrder.getElectricity()!=null){ + + chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getElectricity()); + } + // 累加优惠金额 + if (tChargingOrder.getCouponDiscountAmount()!=null){ + discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount()); + } + if (tChargingOrder.getVipDiscountAmount()!=null){ + discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount()); + } + } } chargingBillVO.setChargingCapacity(chargingCapacityTotal); chargingBillVO.setPaymentAmount(paymentAmountTotal); @@ -341,7 +415,9 @@ startTime2 = split[1]; } PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); + PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999); List<ChargingBillListVO> list = this.baseMapper.chargingBillList(pageInfo,dto,startTime1,startTime2); + List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList(pageInfo1,dto,startTime1,startTime2); BigDecimal paymentAmountTotal = new BigDecimal("0"); BigDecimal orderAmountTotal = new BigDecimal("0"); BigDecimal electrovalenceTotal = new BigDecimal("0"); @@ -379,15 +455,20 @@ chargingBillListVO.setUid(chargingBillListVO.getId().toString()); // 根据账单的出账时间 查询上个月的充电订单 - LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); +// LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); + // todo 临时修改为查询昨天的充电订单 + LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); // 账单周期 chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); // 获取 LocalDate 对象 LocalDate date = localDate.toLocalDate(); - // 获取该月份的第一天 - LocalDate firstDayOfMonth = date.withDayOfMonth(1); - // 获取该月份的最后一天 - LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); +// // 获取该月份的第一天 +// LocalDate firstDayOfMonth = date.withDayOfMonth(1); +// // 获取该月份的最后一天 +// LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); + // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 + LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN); + LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX); QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .between("create_time", firstDayOfMonth, lastDayOfMonth) .eq("status", 5) @@ -497,22 +578,18 @@ if (data3!=null)tChargingOrder.setUserName(data3.getName()); // 累加实收金额 支付金额减去退款金额 if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ - paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount()); - paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount()); + paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); }else if (tChargingOrder.getPaymentAmount()!=null){ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); - paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); } // 累加订单金额 if (tChargingOrder.getOrderAmount()!=null){ orderAmount = orderAmount.add(tChargingOrder.getOrderAmount()); - orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount()); } // 累加累计电费 if (tChargingOrder.getElectrovalence()!=null){ electrovalence = electrovalence.add(tChargingOrder.getElectrovalence()); - electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); } if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() !=null && tChargingOrder.getRefundStatus() == 2){ refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); @@ -520,29 +597,18 @@ // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge()); - serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge()); } // 累加平台手续费 - if (tChargingOrder.getCommissionAmount()!=null){ - commissionAmount = commissionAmount.add(tChargingOrder.getCommissionAmount()); - commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getCommissionAmount()); + if (tChargingOrder.getServiceCharge()!=null){ + commissionAmount = commissionAmount.add(tChargingOrder.getServiceCharge().multiply(BigDecimal.valueOf(0.006)).setScale(2,RoundingMode.HALF_DOWN)); } // 累加平台分佣 if (tChargingOrder.getSharingAmount()!=null){ sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()); - sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount()); } // 累加充电度数 if (tChargingOrder.getChargingCapacity()!=null){ chargingCapacity = chargingCapacity.add(tChargingOrder.getChargingCapacity()); - chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getChargingCapacity()); - } - // 累加优惠金额 - if (tChargingOrder.getCouponDiscountAmount()!=null){ - discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount()); - } - if (tChargingOrder.getVipDiscountAmount()!=null){ - discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount()); } } // 将chargingSecond 这是以秒为单位存放的总秒数 将其转化为xx小时xx分钟xx秒 @@ -556,7 +622,7 @@ chargingBillListVO.setPaymentAmount(paymentAmount); chargingBillListVO.setOrderAmount(orderAmount); chargingBillListVO.setElectrovalence(electrovalence); - chargingBillListVO.setServiceCharge(serviceCharge); + chargingBillListVO.setServiceCharge(serviceCharge.setScale(2,RoundingMode.HALF_DOWN)); chargingBillListVO.setCommissionAmount(commissionAmount); chargingBillListVO.setSharingAmount(sharingAmount); chargingBillListVO.setChargingCapacity(chargingCapacity); @@ -576,6 +642,98 @@ // 充电时间秒 chargingBillListVO.setChargingSecond(chargingSecond); } + for (ChargingBillListVO chargingBillListVO : list1) { + LocalDateTime billTime = chargingBillListVO.getBillTime(); + // 将其转化为yyyy-MM格式字符串 + chargingBillVO.setCreateTime(billTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + // 将billTime减去一个月 转化为yyyy-MM格式字符串 + chargingBillVO.setBillWeek(billTime.minusMonths(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); + + chargingBillListVO.setUid(chargingBillListVO.getId().toString()); + // 根据账单的出账时间 查询上个月的充电订单 +// LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); + // todo 临时修改为查询昨天的充电订单 + LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); + // 账单周期 + chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); + // 获取 LocalDate 对象 + LocalDate date = localDate.toLocalDate(); +// // 获取该月份的第一天 +// LocalDate firstDayOfMonth = date.withDayOfMonth(1); +// // 获取该月份的最后一天 +// LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); + // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 + LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN); + LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX); + QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() + .between("create_time", firstDayOfMonth, lastDayOfMonth) + .eq("status", 5) + .eq("recharge_payment_status", 2); + if (chargingBillListVO.getType() == 2) { + eq.eq("site_id", chargingBillListVO.getSiteId()); + } + List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq); + int chargingSecond = 0; + BigDecimal paymentAmount = new BigDecimal("0"); + BigDecimal orderAmount = new BigDecimal("0"); + BigDecimal electrovalence = new BigDecimal("0"); + BigDecimal serviceCharge = new BigDecimal("0"); + BigDecimal commissionAmount = new BigDecimal("0"); + BigDecimal sharingAmount = new BigDecimal("0"); + BigDecimal chargingCapacity = new BigDecimal("0"); + orderCount+=tChargingOrders.size(); + for (TChargingOrder tChargingOrder : tChargingOrders) { + // 累加实收金额 支付金额减去退款金额 + if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ + paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); + paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); + + }else if (tChargingOrder.getPaymentAmount()!=null){ + paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); + paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); + } + // 累加订单金额 + if (tChargingOrder.getOrderAmount()!=null){ + orderAmount = orderAmount.add(tChargingOrder.getOrderAmount()); + orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount()); + } + // 累加累计电费 + if (tChargingOrder.getElectrovalence()!=null){ + electrovalence = electrovalence.add(tChargingOrder.getElectrovalence()); + electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); + } + if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() !=null && tChargingOrder.getRefundStatus() == 2){ + refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); + } + // 累加累计服务费 + if (tChargingOrder.getServiceCharge()!=null){ + serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge()); + serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge()); + } + // 累加平台手续费 + if (tChargingOrder.getServiceCharge()!=null){ + commissionAmount = commissionAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.006")).setScale(2, RoundingMode.HALF_DOWN)); + commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.006")).setScale(2, RoundingMode.HALF_DOWN)); + } + // 累加平台分佣 + if (tChargingOrder.getSharingAmount()!=null){ + sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()); + sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount()); + } + // 累加充电度数 + if (tChargingOrder.getElectricity()!=null){ + chargingCapacity = chargingCapacity.add(tChargingOrder.getElectricity()); + chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getElectricity()); + } + // 累加优惠金额 + if (tChargingOrder.getCouponDiscountAmount()!=null){ + discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount()); + } + if (tChargingOrder.getVipDiscountAmount()!=null){ + discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount()); + } + } + } chargingBillVO.setChargingCapacity(chargingCapacityTotal); chargingBillVO.setPaymentAmount(paymentAmountTotal); chargingBillVO.setOrderAmount(orderAmountTotal); @@ -585,8 +743,6 @@ chargingBillVO.setCommissionAmount(commissionAmountTotal); chargingBillVO.setSharingAmount(sharingAmountTotal); chargingBillVO.setDiscount(discountTotal); - - pageInfo.setRecords(list); chargingBillVO.setList(pageInfo); return chargingBillVO; diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index caa7495..87c895b 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -889,57 +889,48 @@ //处理用户标签数据 List<TUserTag> data = userTagClient.getAllUserTag().getData(); //累计充电次数 - long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()) - .eq(TChargingOrder::getRechargePaymentStatus, 2).isNotNull(TChargingOrder::getPaymentAmount).eq(TChargingOrder::getDelFlag, 0)); List<TUserTag> userTagList1 = data.stream().filter(s -> s.getStandardCondition() == 1).collect(Collectors.toList()); - int old_times = 0; - Integer userTagId = null; for (TUserTag tUserTag : userTagList1) { Integer times = JSON.parseObject(tUserTag.getConditions()).getInteger("times"); - //加上本次充电 - //获取最大值标签 - if((count1 + 1) >= times && old_times < times){ - userTagId = tUserTag.getId(); - old_times = times; - } - } - if(null != userTagId){ TAppUserTag appUserTag = new TAppUserTag(); appUserTag.setAppUserId(chargingOrder.getAppUserId()); - appUserTag.setUserTagId(userTagId); + appUserTag.setUserTagId(tUserTag.getId()); TAppUserTag data1 = appUserTagClient.getUserTag(appUserTag).getData(); - if(null == data1){ + + String start = tUserTag.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + String end = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()) + .eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getStartTime, start, end).eq(TChargingOrder::getDelFlag, 0)); + if(null == data1 && count1 >= times){ data1 = new TAppUserTag(); data1.setAppUserId(chargingOrder.getAppUserId()); - data1.setUserTagId(userTagId); + data1.setUserTagId(tUserTag.getId()); data1.setCreateTime(LocalDateTime.now()); appUserTagClient.addUserTag(data1); } } - //充电评率 + //充电频率 List<TUserTag> userTagList2 = data.stream().filter(s -> s.getStandardCondition() == 2).collect(Collectors.toList()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (TUserTag tUserTag : userTagList2) { TAppUserTag appUserTag = new TAppUserTag(); appUserTag.setAppUserId(chargingOrder.getAppUserId()); appUserTag.setUserTagId(tUserTag.getId()); TAppUserTag data1 = appUserTagClient.getUserTag(appUserTag).getData(); - if(null == data1){ - Integer day = JSON.parseObject(tUserTag.getConditions()).getInteger("day"); - Integer times = JSON.parseObject(tUserTag.getConditions()).getInteger("times"); - Calendar start = Calendar.getInstance(); - start.set(Calendar.DAY_OF_YEAR, start.get(Calendar.DAY_OF_YEAR) + day); - count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()) - .eq(TChargingOrder::getRechargePaymentStatus, 2).isNotNull(TChargingOrder::getPaymentAmount) - .between(TChargingOrder::getStartTime, sdf.format(start.getTime()), sdf.format(new Date())).eq(TChargingOrder::getDelFlag, 0)); - //加上本次充电 - if(count1 >= times){ - data1 = new TAppUserTag(); - data1.setAppUserId(chargingOrder.getAppUserId()); - data1.setUserTagId(tUserTag.getId()); - data1.setCreateTime(LocalDateTime.now()); - appUserTagClient.addUserTag(data1); - } + + Integer day = JSON.parseObject(tUserTag.getConditions()).getInteger("day"); + Integer times = JSON.parseObject(tUserTag.getConditions()).getInteger("times"); + LocalDateTime endTime = LocalDateTime.now(); + endTime.plusDays(day); + String start = tUserTag.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + String end = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()) + .eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getStartTime, start, end).eq(TChargingOrder::getDelFlag, 0)); + if(null == data1 && count1 >= times){ + data1 = new TAppUserTag(); + data1.setAppUserId(chargingOrder.getAppUserId()); + data1.setUserTagId(tUserTag.getId()); + data1.setCreateTime(LocalDateTime.now()); + appUserTagClient.addUserTag(data1); } } } @@ -1073,6 +1064,7 @@ endTime2 = split[1]; } PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); + PageInfo<ChargingOrderVO> pageInfo1 = new PageInfo<>(1,9999999); if (StringUtils.hasLength(dto.getPhone())){ List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); @@ -1083,12 +1075,15 @@ dto.setUserIds(data); } List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); + List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2); BigDecimal total = new BigDecimal("0"); long time = 0L; BigDecimal income = new BigDecimal("0"); BigDecimal electronicMoney = new BigDecimal("0"); BigDecimal serviceMoney = new BigDecimal("0"); for (ChargingOrderVO chargingOrderVO : list) { + chargingOrderVO.setCommissionAmount(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006"))); + chargingOrderVO.setPlatFormMoney(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006"))); chargingOrderVO.setUid(chargingOrderVO.getId()+""); TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData(); TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData(); @@ -1100,10 +1095,6 @@ } if (data2!=null && data3!=null){ chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName()); - - } - if (chargingOrderVO.getChargingCapacity()!=null){ - total = total.add(chargingOrderVO.getElectricity()); } // 充电订单 明细记录 List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() @@ -1112,14 +1103,6 @@ if (data5!=null){ long l = data5.getCumulative_charging_time() * 60L; chargingOrderVO.setChargingSecond(l); - time+=l; - } - electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()); - serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()); - - income = income.add(chargingOrderVO.getServiceCharge().add(chargingOrderVO.getElectrovalence())); - if (chargingOrderVO.getRefundAmount()!=null){ - income = income.subtract(chargingOrderVO.getRefundAmount()); } // 充电时段数 int size = chargingOrderId.size(); @@ -1139,6 +1122,27 @@ } } + } + for (ChargingOrderVO chargingOrderVO : list1) { + if (chargingOrderVO.getChargingCapacity()!=null){ + total = total.add(chargingOrderVO.getElectricity()); + } + // 充电订单 明细记录 + List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() + .eq("charging_order_id", chargingOrderVO.getId())); + UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData(); + if (data5!=null){ + long l = data5.getCumulative_charging_time() * 60L; + chargingOrderVO.setChargingSecond(l); + time+=l; + } + electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()); + serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()); + + income = income.add(chargingOrderVO.getOrderAmount()); + + + } tCharingOrderVO.setTotal(total); tCharingOrderVO.setTime(time); @@ -1252,7 +1256,7 @@ dto.setUserIds(carIds); } } - if (StringUtils.hasLength(dto.getPhone())){ + if (StringUtils.hasLength(dto.getLicensePlate())){ List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData(); if(data!=null){ if (!data.isEmpty()){ @@ -1270,6 +1274,12 @@ PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); for (ChargingOrderListVO chargingOrderListVO : list) { + chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity()); + chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getOrderAmount()); + BigDecimal bigDecimal = new BigDecimal("0.006"); + if (chargingOrderListVO.getServiceCharge()!=null){ + chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getServiceCharge().multiply(bigDecimal)); + } chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount().subtract(chargingOrderListVO.getResidualAmount())); chargingOrderListVO.setUid(chargingOrderListVO.getId()+""); List<Integer> integers = new ArrayList<>(); @@ -1327,6 +1337,9 @@ BigDecimal gu = new BigDecimal("0"); BigDecimal total = new BigDecimal("0"); for (TChargingOrderAccountingStrategy temp : list2) { + if (temp.getChargingCapacity() == null){ + temp.setChargingCapacity(BigDecimal.ZERO); + } switch (temp.getType()) { case 1: jian = jian.add(temp.getChargingCapacity()); @@ -1387,9 +1400,9 @@ BigDecimal ping = new BigDecimal("0"); BigDecimal gu = new BigDecimal("0"); for (ChargingOrderListVO chargingOrderListVO : list1) { - if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getChargingCapacity()); + if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity()); - if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount()); + if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getOrderAmount()); if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence()); if (chargingOrderListVO.getServiceCharge()!=null)serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge()); List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery() @@ -1476,6 +1489,12 @@ TChargingOrder chargingOrder= this.getById(uid); ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO(); + + chargingOrderListInfoVO.setStatus(chargingOrder.getStatus()); + BigDecimal bigDecimal = new BigDecimal("0.006"); + if (chargingOrder.getServiceCharge()!=null){ + chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getServiceCharge().multiply(bigDecimal)); + } chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence()); chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge()); if (chargingOrder.getElectrovalence()!=null && chargingOrder.getServiceCharge()!=null){ @@ -1515,6 +1534,13 @@ if (chargingOrder.getCode()!=null){ List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData(); if (data6!=null){ + for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { + if (uploadRealTimeMonitoringData.getOutput_current()!=null&& + uploadRealTimeMonitoringData.getOutput_voltage()!=null){ + uploadRealTimeMonitoringData.setPower(uploadRealTimeMonitoringData.getOutput_voltage() + .multiply(uploadRealTimeMonitoringData.getOutput_current())); + } + } if (!data6.isEmpty()){ // 第一条数据soc为开始 最后一条数据soc为结束soc chargingOrderListInfoVO.setStartSoc(data6.get(0).getSoc().toString()); @@ -1782,6 +1808,9 @@ order.setCouponDiscountAmount(couponDiscountAmount); payAmount = payAmount.subtract(couponDiscountAmount); } + + appCoupon.setStatus(2); + appCouponClient.updateAppCoupon(appCoupon); }else{ order.setAppCouponId(null); order.setCouponDiscountAmount(BigDecimal.ZERO); @@ -1804,6 +1833,9 @@ order.setCouponDiscountAmount(divide); payAmount = payAmount.subtract(divide); } + + appCoupon.setStatus(2); + appCouponClient.updateAppCoupon(appCoupon); }else{ order.setAppCouponId(null); order.setCouponDiscountAmount(BigDecimal.ZERO); @@ -2592,12 +2624,13 @@ info.setRefundAmount(chargingOrder.getRefundAmount()); LocalDateTime startTime = chargingOrder.getStartTime(); LocalDateTime endTime = chargingOrder.getEndTime(); - info.setStartDay(startTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " 周" + startTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE)); + info.setStartDay(startTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " " + startTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE)); info.setStartHour(startTime.format(DateTimeFormatter.ofPattern("HH:mm"))); - info.setEndDay(endTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " 周" + endTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE)); + info.setEndDay(endTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " " + endTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE)); info.setEndHour(endTime.format(DateTimeFormatter.ofPattern("HH:mm"))); - int hour = endTime.getHour() - startTime.getHour(); - int second = endTime.getMinute() - startTime.getMinute(); + long time = (endTime.toEpochSecond(ZoneOffset.UTC) - startTime.toEpochSecond(ZoneOffset.UTC)) / 60; + long hour = time / 60; + long second = time % 60; info.setDuration(0 == hour ? String.format("%s分钟", second) : String.format("%s小时%s分钟", hour, second)); return info; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java index 544e9ff..e294a86 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java @@ -76,6 +76,7 @@ TShoppingOrder tShoppingOrder = shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null); setGoodsInfo(item,tShoppingOrder); } + item.setOrderIdStr(item.getOrderId().toString()); }); list.forEach(e->e.setUid(e.getId().toString())); pageInfo.setRecords(list); @@ -98,6 +99,7 @@ TShoppingOrder tShoppingOrder = shoppingOrderMapper.selectById(orderAppeal.getOrderId()); setGoodsInfo(orderAppealVO,tShoppingOrder); } + orderAppealVO.setOrderIdStr(orderAppealVO.getOrderId().toString()); return orderAppealVO; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java index a3e47c7..dba9058 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java @@ -162,9 +162,11 @@ public List<OrderInvoiceList> getMyOrderInvoiceList(GetOrderInvoiceList query) { Long userId = tokenService.getLoginUserApplet().getUserId(); Integer pageCurr = (query.getPageCurr() - 1) * query.getPageSize(); - List<TOrderInvoice> list = this.list(new LambdaQueryWrapper<TOrderInvoice>().eq(TOrderInvoice::getAppUserId, userId) - .eq(TOrderInvoice::getStatus, query.getStatus()).orderByDesc(TOrderInvoice::getCreateTime) - .last(" limit " + pageCurr + ", " + query.getPageSize())); + LambdaQueryWrapper<TOrderInvoice> wrapper = new LambdaQueryWrapper<TOrderInvoice>().eq(TOrderInvoice::getAppUserId, userId); + if(query.getStatus() != 1){ + wrapper.eq(TOrderInvoice::getStatus, query.getStatus()); + } + List<TOrderInvoice> list = this.list(wrapper.orderByDesc(TOrderInvoice::getCreateTime).last(" limit " + pageCurr + ", " + query.getPageSize())); List<OrderInvoiceList> pageList = new ArrayList<>(); for (TOrderInvoice tOrderInvoice : list) { OrderInvoiceList orderInvoiceList = new OrderInvoiceList(); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java index 7f8b25f..05e1997 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java @@ -102,7 +102,10 @@ PageInfo<TActivityStatisticslVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); + PageInfo<TActivityStatisticslVO> pageInfo1 = new PageInfo<>(1,9999999); List<TActivityStatisticslVO> list = this.baseMapper.activityStatistics(pageInfo,dto); + List<TActivityStatisticslVO> list1 = this.baseMapper.activityStatistics(pageInfo1,dto); + list.sort((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime())); // 优惠券金额 BigDecimal coupon = new BigDecimal("0"); @@ -113,7 +116,76 @@ // 赠送会员 BigDecimal grantVip = new BigDecimal("0"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + for (TActivityStatisticslVO tActivityStatisticslVO : list1) { + // 判断享有了哪些类型 + switch (tActivityStatisticslVO.getOrderType()){ + case 1: + StringBuilder stringBuilder = new StringBuilder(); + // 充电订单 优惠券金额大于0 + if (tActivityStatisticslVO.getCouponDiscountAmount()!=null + && + (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ + coupon = coupon.add(tActivityStatisticslVO.getCouponDiscountAmount()); + stringBuilder.append("优惠券抵扣").append("+"); + } + if (tActivityStatisticslVO.getVipDiscountAmount()!=null &&(tActivityStatisticslVO.getVipDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ + discount = discount.add(tActivityStatisticslVO.getVipDiscountAmount()); + stringBuilder.append("会员抵扣").append("+"); + } + if (stringBuilder.length()>0){ + stringBuilder.deleteCharAt(stringBuilder.length()-1); + tActivityStatisticslVO.setType(stringBuilder.toString()); + } + tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); + break; + case 2: + StringBuilder stringBuilder1 = new StringBuilder(); + + // 购物订单 优惠券金额大于0 + if (tActivityStatisticslVO.getCouponDiscountAmount()!=null + && + (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ + coupon = coupon.add(tActivityStatisticslVO.getCouponDiscountAmount()); + stringBuilder1.append("优惠券抵扣").append("+"); + } + if (tActivityStatisticslVO.getVipDiscountAmount()!=null + && + (tActivityStatisticslVO.getVipDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ + discount = discount.add(tActivityStatisticslVO.getVipDiscountAmount()); + stringBuilder1.append("会员抵扣").append("+"); + } + if (stringBuilder1.length()>0){ + stringBuilder1.deleteCharAt(stringBuilder1.length()-1); + } + tActivityStatisticslVO.setType(stringBuilder1.toString()); + tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); + break; + case 3: + // 会员订单 优惠金额大于0 + if (tActivityStatisticslVO.getVipDiscountAmount()!=null + && + (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ + vipActivity = vipActivity.add(tActivityStatisticslVO.getVipDiscountAmount()); + } + tActivityStatisticslVO.setType("会员活动"); + tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); + break; + case 4: + // 赠送会员订单 如果支付金额为0 那么就是后台赠送的会员 + if (tActivityStatisticslVO.getPaymentAmount().compareTo(BigDecimal.ZERO)==0){ + grantVip = grantVip.add(tActivityStatisticslVO.getOrderAmount()); + tActivityStatisticslVO.setType("赠送会员"); + tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); + }else{ + // 赠送 + grantVip = grantVip.add(tActivityStatisticslVO.getVipDiscountAmount()); + tActivityStatisticslVO.setType("赠送会员"); + tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); + } + break; + } + } for (TActivityStatisticslVO tActivityStatisticslVO : list) { // 判断享有了哪些类型 switch (tActivityStatisticslVO.getOrderType()){ diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java index fdd88a3..a1e684f 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java @@ -49,9 +49,9 @@ @Scheduled(cron = "0 0 12 1 * ?") +//@Scheduled(fixedRate = 60000) public void taskMonth() { try { - System.err.println("执行定时任务生成账单"); // 获取上个月的开始和结束日期 LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1). withDayOfMonth(2); @@ -71,33 +71,70 @@ tChargingBill.setBillTime(LocalDateTime.now()); tChargingBill.setStatus(1); tChargingBill.setOrderState(2); + tChargingBill.setBillType(1); + System.err.println("定时任务生成充电算帐单:全站"); chargingBillService.save(tChargingBill); - // 每月二号给每个站点生成上月账单 + // 生成一次全站订单 + TChargingBill tChargingBill1 = new TChargingBill(); + // 订单生成规则JSD+20231201(账单所属月份)+1131304205(随机10位数)+001(当月账单序号,每月重置) + Random random1 = new Random(); + String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 + .mapToObj(String::valueOf) + .collect(Collectors.joining()); // 将其连接成一个字符串 + tChargingBill1.setCode("JSD"+string+randomDigits1 ); + tChargingBill1.setType(1); + tChargingBill1.setSiteId(0); + tChargingBill1.setBillTime(LocalDateTime.now()); + tChargingBill1.setStatus(1); + tChargingBill1.setOrderState(2); + tChargingBill1.setBillType(2); + System.err.println("定时任务生成账户结算帐单:全站"); + chargingBillService.save(tChargingBill1); + System.err.println("定时任务生成各个站点结算帐单"); List<Integer> collect = siteClient.getSiteAll().getData().stream().map(Site::getId).collect(Collectors.toList()); + // 充电算帐单 List<TChargingBill> tChargingBills = new ArrayList<>(); + // 账户结算账单 + List<TChargingBill> tChargingBills1 = new ArrayList<>(); for (int i = 0; i < collect.size(); i++) { - TChargingBill tChargingBill1 = new TChargingBill(); - Random random1 = new Random(); - String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 + TChargingBill tChargingBill2 = new TChargingBill(); + Random random2 = new Random(); + String randomDigits2 = random2.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 .mapToObj(String::valueOf) .collect(Collectors.joining()); // 将其连接成一个字符串 - tChargingBill1.setCode("JSD"+string+randomDigits1+(i+1) ); - tChargingBill1.setType(2); - tChargingBill1.setSiteId(collect.get(i)); - tChargingBill1.setBillTime(LocalDateTime.now()); - tChargingBill1.setStatus(1); - tChargingBill1.setOrderState(2); - tChargingBills.add(tChargingBill1); + tChargingBill2.setCode("JSD"+string+randomDigits2+(i+1) ); + tChargingBill2.setType(2); + tChargingBill2.setSiteId(collect.get(i)); + tChargingBill2.setBillTime(LocalDateTime.now()); + tChargingBill2.setBillType(1); + tChargingBill2.setStatus(1); + tChargingBill2.setOrderState(2); + tChargingBills.add(tChargingBill2); + TChargingBill tChargingBill3 = new TChargingBill(); + Random random3 = new Random(); + String randomDigits3 = random3.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 + .mapToObj(String::valueOf) + .collect(Collectors.joining()); // 将其连接成一个字符串 + tChargingBill3.setCode("JSD"+string+randomDigits3+(i+1) ); + tChargingBill3.setType(2); + tChargingBill3.setSiteId(collect.get(i)); + tChargingBill3.setBillTime(LocalDateTime.now()); + tChargingBill3.setBillType(1); + tChargingBill3.setStatus(1); + tChargingBill3.setOrderState(2); + tChargingBills1.add(tChargingBill3); } System.err.println("列表"+tChargingBills); if (!tChargingBills.isEmpty())chargingBillService.saveBatch(tChargingBills); + if (!tChargingBills1.isEmpty())chargingBillService.saveBatch(tChargingBills1); } catch (Exception e) { e.printStackTrace(); } } - // 每个月最后一天23点执行的定时任务 - @Scheduled(cron = "0 0 12 1 * ?") + + // 每天晚上23:59:59执行的定时任务 + @Scheduled(cron = "0 0 23 1 * ?") public void taskLastDay() { try { // 获取上个月的开始和结束日期 @@ -110,10 +147,10 @@ LocalDateTime endDateTime = lastDayOfLastMonth.atTime(23, 59, 59); // 设定到最后一秒 // 构建查询条件 LambdaQueryWrapper<TChargingBill> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.ge(TChargingBill::getBillTime, - Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant())) - .le(TChargingBill::getBillTime, - Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录 +// queryWrapper.ge(TChargingBill::getBillTime, +// Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant())) +// .le(TChargingBill::getBillTime, +// Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录 List<TChargingBill> list = chargingBillService.list(queryWrapper); for (TChargingBill tChargingBill : list) { tChargingBill.setStatus(2); diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml index 8a0d431..1b22fd9 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml @@ -92,6 +92,9 @@ <if test="req.status != null "> and t1.status = #{req.status} </if> + <if test="req.orderSource != null and req.orderSource != 1 "> + and t1.orderSource = #{req.orderSource} + </if> <if test="req.siteId != null "> and t1.site_id = #{req.siteId} </if> @@ -108,6 +111,7 @@ and (t1.end_time between #{endTime1} and #{endTime2}) </if> and t1.del_flag = 0 + order by t1.create_time desc </select> <select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto"> SELECT o.*,i.phone FROM (SELECT @@ -873,6 +877,9 @@ <if test="endTime1 != null and endTime1!=''"> and (t1.end_time between #{endTime1} and #{endTime2}) </if> + AND t1.del_flag = 0 + and t1.start_time IS NOT NULL + order by t1.create_time desc </select> <select id="chargingListNoPage" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO"> select t1.* from t_charging_order t1 diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java index af162fb..53be1bb 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java @@ -2,11 +2,15 @@ import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.account.api.dto.SendCouponDto; import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.feignClient.AppUserVipDetailClient; import com.ruoyi.account.api.model.TAppUser; +import com.ruoyi.account.api.model.TAppUserVipDetail; +import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; @@ -222,6 +226,9 @@ @Resource private AppUserClient appUserClient; + @Resource + private AppUserVipDetailClient vipDetailClient; + @ApiOperation(value = "当前生效会员信息", tags = {"小程序-个人中心"}) @GetMapping("/recent/vipInfo") public R<List<VipInfoDto>> recentVipInfo() { @@ -230,7 +237,16 @@ if (data.getVipEndTime()!=null&&data.getVipEndTime().isAfter(LocalDateTime.now())) { List<VipInfoDto> vipInfoDtos = new ArrayList<>(); - List<TVip> vips = vipService.lambdaQuery().eq(TVip::getId, data.getVipId()).list(); + +// List<TVip> vips = vipService.lambdaQuery().eq(TVip::getId, data.getVipId()).list(); + List<TVip> vips = new ArrayList<>(); + GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); + getAppUserVipDetail.setAppUserId(userId); + getAppUserVipDetail.setVipId(data.getVipId()); + TAppUserVipDetail data1 = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); + String vipJson = data1.getVipJson(); + TVip tVip = JSON.parseObject(vipJson, TVip.class); + vips.add(tVip); LocalDateTime now = LocalDateTime.now(); for (TVip vip : vips) { VipInfoDto vipInfoDto = new VipInfoDto(); @@ -255,19 +271,20 @@ vipInfoDto.setMallExclusivePrice(vip.getMallExclusivePrice()); vipInfoDto.setName(vip.getName()); vipInfoDto.setId(vip.getId()); - List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class); - List<VipCouponDto> vipCouponDtos = new ArrayList<>(); - if (!javaList.isEmpty()) { - for (SendCouponDto sendCouponDto : javaList) { - VipCouponDto vipCouponDto = new VipCouponDto(); - TCoupon byId = couponService.getById(sendCouponDto.getId()); - vipCouponDto.setNum(sendCouponDto.getNumber()); - vipCouponDto.setTCoupon(byId); - vipCouponDtos.add(vipCouponDto); + if (vip.getCoupon()!=null) { + List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class); + List<VipCouponDto> vipCouponDtos = new ArrayList<>(); + if (!javaList.isEmpty()) { + for (SendCouponDto sendCouponDto : javaList) { + VipCouponDto vipCouponDto = new VipCouponDto(); + TCoupon byId = couponService.getById(sendCouponDto.getId()); + vipCouponDto.setNum(sendCouponDto.getNumber()); + vipCouponDto.setTCoupon(byId); + vipCouponDtos.add(vipCouponDto); + } } - } - vipInfoDto.setVipCouponDtos(vipCouponDtos); + vipInfoDto.setVipCouponDtos(vipCouponDtos); //计算总折扣 BigDecimal total = BigDecimal.ZERO; @@ -280,9 +297,12 @@ total.add(tCoupon.getDiscountAmount()); } } + vipInfoDto.setTotalDiscount(total); + vipInfoDto.setTimeAmount(vip.getMaximumDeduction().multiply(BigDecimal.valueOf(vip.getDiscountTimes()))); vipInfoDtos.add(vipInfoDto); + } } return R.ok(vipInfoDtos); -- Gitblit v1.7.1