luodangjia
2024-10-26 4af1e0cab60c25d6c969474b3517b33e2ebcbb9c
Merge remote-tracking branch 'origin/master'

# Conflicts:
# ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
1个文件已添加
10个文件已修改
162 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/CarUtil.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/RptUtils.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/logback.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java
@@ -14,7 +14,7 @@
    @ApiModelProperty(value = "类型(1=开始,2=结束)")
    private Integer type;
    @ApiModelProperty(value = "站点ids 选择全部 不传")
    private List<Integer> siteIds;
    private Integer siteIds;
    @ApiModelProperty(value = "合作商id ")
    private Integer partnerId;
    @ApiModelProperty(value = "开始时间2020-01-01 00:00:00")
@@ -22,4 +22,5 @@
    @ApiModelProperty(value = "结束时间2021-01-01 23:59:59")
    private String endTime;
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.account.mapper.TAppUserMapper;
import com.ruoyi.account.service.TAppUserService;
import com.ruoyi.account.service.TInviteUserService;
import com.ruoyi.account.util.RptUtils;
import com.ruoyi.account.wx.model.WeixinProperties;
import com.ruoyi.account.wx.pojo.AppletUserDecodeData;
import com.ruoyi.common.core.exception.ServiceException;
@@ -18,6 +19,7 @@
import com.ruoyi.system.api.model.LoginUserApplet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
@@ -69,9 +71,10 @@
                    break;
            }
        }
        appUser.setAvatar(appletUserDecodeData.getAvatarUrl());
        appUser.setAvatar(StringUtils.hasLength(appletUserDecodeData.getAvatarUrl())?appletUserDecodeData.getAvatarUrl():"http://221.182.45.100:8090/2024-10-26/logo.png");
        appUser.setName(StringUtils.hasLength(appletUserDecodeData.getNickName())?appletUserDecodeData.getNickName():RptUtils.around(appletUserDecodeData.getPhoneNumber(),3,4));
        appUser.setCity(appletUserDecodeData.getCity());
        appUser.setName(appletUserDecodeData.getNickName());
        appUser.setProvince(appletUserDecodeData.getProvince());
        appUser.setWxOpenid(appletUserDecodeData.getOpenId());
        this.saveOrUpdate(appUser);
@@ -113,6 +116,8 @@
            }
        }
        appUser.setAliOpenid(response.getOpenId());
        appUser.setAvatar("http://221.182.45.100:8090/2024-10-26/logo.png");
        appUser.setName(RptUtils.around(phone,3,4));
        this.saveOrUpdate(appUser);
        if(Objects.nonNull(inviteUserId)){
            inviteUserService.saveInviteUser(appUser.getId(), inviteUserId);
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/CarUtil.java
@@ -877,91 +877,91 @@
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京B\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京C\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京D\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京E\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京F\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京G\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京H\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京J\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京K\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京L\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京M\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"京Y\",\n" +
                "      \"city\": \"北京\",\n" +
                "      \"province\": \"北京\",\n" +
                "      \"Pcode\": \"BJ\",\n" +
                "      \"AreaCode\": \"110110\"\n" +
                "      \"AreaCode\": \"110100\"\n" +
                "    },\n" +
                "    {\n" +
                "      \"Hp\": \"豫A\",\n" +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/RptUtils.java
New file
@@ -0,0 +1,33 @@
package com.ruoyi.account.util;
/**
 * 脱敏工具类
 */
public class RptUtils {
      private static final String SYMBOL = "*";
     /**
      *  脱敏
      * @param str 待脱敏字符串
      * @param left 左边保留多少位
      * @param right 右边保留多少位
      * @return 脱敏结果,除左右外,其余字符将被替换为*
      */
     public static String around(String str, int left, int right){
         if (str == null || (str.length() < left + right +1)){
             return str;
         }
         String regex = String.format("(?<=\\w{%d})\\w(?=\\w{%d})", left, right);
         return str.replaceAll(regex, SYMBOL);
     }
     /**
      * 正则表达式实现金额数据脱敏
      * @param money
      * @return
      */
     public static String getMoney(String money){
         //保留0个数到0个结束
         return around(money,0,0);
     }
 }
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -18,6 +18,7 @@
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
import com.ruoyi.chargingPile.service.*;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
@@ -125,9 +126,11 @@
        Site byId = siteService.getById(one.getSiteId());
        TAccountingStrategy byId1 = accountingStrategyService.getById(byId.getAccountingStrategyId());
        List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId1.getId()).list();
        list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
        for (TAccountingStrategyDetail tAccountingStrategyDetail : list) {
            // 当前时间属于那个阶段 取哪个阶段的电价
            if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){
            if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
                    && DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
                siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
                if(null != byId1.getDiscount()){
                    siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP));
@@ -168,9 +171,11 @@
        Site byId = siteService.getById(one.getSiteId());
        TAccountingStrategy byId1 = accountingStrategyService.getById(byId.getAccountingStrategyId());
        List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId1.getId()).list();
        list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
        for (TAccountingStrategyDetail tAccountingStrategyDetail : list) {
            // 当前时间属于那个阶段 取哪个阶段的电价
            if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){
            if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
                    && DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
                siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
                if(null != byId1.getDiscount()){
                    siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP));
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -10,12 +10,14 @@
import com.ruoyi.chargingPile.service.*;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalTime;
import java.util.List;
import java.util.Objects;
@@ -100,10 +102,16 @@
    public R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId){
        Site site = siteService.getById(siteId);
        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
        TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
                .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
        return R.ok(one);
        List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
        list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
        for (TAccountingStrategyDetail accountingStrategyDetail : list) {
            if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
                    && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
                return R.ok(accountingStrategyDetail);
            }
        }
        return R.ok();
    }
    /**
     * 通过桩id查询当前时段使用的策略明细
@@ -123,19 +131,31 @@
                .eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)
                .last("LIMIT 1"));
        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(chargingGun.getAccountingStrategyId());
        TAccountingStrategyDetail one;
        TAccountingStrategyDetail one = null;
        if(Objects.nonNull(accountingStrategy)){
            one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
                    .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
            List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
            list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
            for (TAccountingStrategyDetail accountingStrategyDetail : list) {
                if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
                        && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
                    return R.ok(accountingStrategyDetail);
                }
            }
        }else {
            Site site = siteService.getById(chargingPile.getSiteId());
            accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
            one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
                    .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
            List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
            list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
            for (TAccountingStrategyDetail accountingStrategyDetail : list) {
                if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
                        && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
                    return R.ok(accountingStrategyDetail);
        }
        return R.ok(one);
            }
        }
        return R.ok();
    }
    /**
     * 校验充电桩计费模版是否准确
ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml
@@ -58,11 +58,11 @@
    </appender>
    <!-- 系统模块日志级别控制  -->
    <logger name="com.ruoyi" level="debug" />
    <logger name="com.ruoyi" level="info" />
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="debug" />
    <root level="debug">
    <root level="info">
        <appender-ref ref="console" />
    </root>
    
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
@@ -71,10 +71,10 @@
            query.addCriteria(Criteria.where("transaction_serial_number").regex(mongoChargingOrderQuery.getCode(), "i")); // "i" 表示不区分大小写
        }
        if (mongoChargingOrderQuery.getOrderType() !=null){
            query.addCriteria(Criteria.where("order_type").is(mongoChargingOrderQuery.getOrderType()));
            query.addCriteria(Criteria.where("orderType").is(mongoChargingOrderQuery.getOrderType()));
        }
        if (mongoChargingOrderQuery.getSiteId() != null){
            query.addCriteria(Criteria.where("site_id").is(mongoChargingOrderQuery.getSiteId()));
            query.addCriteria(Criteria.where("siteId").is(mongoChargingOrderQuery.getSiteId()));
        }
        if (mongoChargingOrderQuery.getChargingPileCode() != null && !mongoChargingOrderQuery.getChargingPileCode().isEmpty()) {
            query.addCriteria(Criteria.where("charging_pile_code").is(mongoChargingOrderQuery.getChargingPileCode()));
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2435,6 +2435,18 @@
    @Override
    public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) {
        if (StringUtils.hasLength(dto.getStartTime())){
            dto.setType(1);
            String[] split = dto.getStartTime().split(" - ");
            dto.setStartTime(split[0]);
            dto.setEndTime(split[1]);
        }
        if (StringUtils.hasLength(dto.getEndTime())){
            dto.setType(2);
            String[] split = dto.getStartTime().split(" - ");
            dto.setStartTime(split[0]);
            dto.setEndTime(split[1]);
        }
        PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
        List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
        for (TSettlementConfirm tSettlementConfirm : list) {
ruoyi-service/ruoyi-order/src/main/resources/logback.xml
@@ -60,9 +60,9 @@
    <!-- 系统模块日志级别控制  -->
    <logger name="com.ruoyi" level="info" />
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="debug" />
    <logger name="org.springframework" level="warn" />
    <root level="debug">
    <root level="info">
        <appender-ref ref="console" />
    </root>
    
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml
@@ -13,22 +13,16 @@
select t1.* from
                t_settlement_confirm t1
where 1=1
        <if test="req.type != null ">
            and t1.type = #{req.type}
        </if>
        <if test="req.partnerId != null ">
            and t1.partnerId = #{req.partnerId}
            and t1.partner_id = #{req.partnerId}
        </if>
        <if test="req.siteIds != null ">
            and t1.site_id = #{req.siteIds}
        </if>
        <if test="req.type == 1 ">
            <if test="req.startTime != null and req.startTime!=''">
                and (t1.start_time between #{req.startTime} and #{req.endTime}
            </if>
        </if>
        <if test="req.siteIds != null and req.siteIds.size() > 0">
            AND t1.site_id IN
            <foreach collection="req.siteIds" item="siteId" open="(" separator="," close=")">
                #{siteId}
            </foreach>
        </if>
        <if test="req.type == 2 ">
            <if test="req.startTime != null and req.startTime!=''">