Administrator
2024-06-18 1b899d65b9f9250c690f65673a974fdb3833582e
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
12个文件已修改
2个文件已添加
223 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealTimingReportV202404.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/ToRtuConstantTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/virtualCard/VirtualCardCtrl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/virtualCard/VirtualCardSv.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/virtualCard/dto/DtoVcRecharge.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java
@@ -2,11 +2,13 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard;
import com.dy.pipIrrGlobal.voSe.VoVcRecharge;
import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * @author ZhuBaoMin
@@ -77,4 +79,17 @@
     * @return
     */
    void updateVcCardNoUseStateByIntakeId(@Param("intakeId")Long intakeId) ;
    /**
     * 获取虚拟卡充值记录
     * @return
     */
    List<VoVcRecharge> getVcRechargeRecords(Map<?, ?> params);
    /**
     * 获取虚拟卡充值记录数
     * @param params
     * @return
     */
    Long getRechargeRecordCount(Map<?, ?> params);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java
New file
@@ -0,0 +1,51 @@
package com.dy.pipIrrGlobal.voSe;
import com.dy.common.po.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
/**
 * @author :WuZeYu
 * @Date :2024/6/17  11:24
 * @LastEditTime :2024/6/17  11:24
 * @Description
 */
@Data
public class VoVcRecharge implements BaseEntity {
    @Schema(title = "充值ID")
    private Long id;
    @Schema(description = "虚拟卡ID")
    private Long vcId;
    @Schema(description = "农户ID")
    private Long clientId;
    @Schema(description = "钱包余额")
    private Double money;
    @Schema(description = "充值后余额")
    private Double afterRecharge;
    @Schema(description = "订单号")
    private String orderNumber;
    @Schema(description = "充值金额")
    private Integer rechargeAmount;
    @Schema(description = "下单时间")
    private Date orderTime;
    @Schema(description = "充值完成时间")
    private Date rechargeTime;
    @Schema(description = "订单状态")
    private Byte orderState;
    @Schema(description = "订单状态")
    private String orderStateName;
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
@@ -223,4 +223,35 @@
    LIMIT 0,1
  </select>
  <!--获取虚拟卡充值记录-->
  <select id="getVcRechargeRecords" resultType="com.dy.pipIrrGlobal.voSe.VoVcRecharge" >
    SELECT
      CAST(id AS char) AS id,
      CAST(vc_id AS char) AS vcId,
      CAST(client_id AS char) AS clientId,
      money,
      after_recharge AS afterRecharge,
      order_number AS orderNumber,
      recharge_amount AS rechargeAmount,
      order_time AS orderTime,
      recharge_time AS rechargeTime,
      order_state AS orderState,
      (CASE
      WHEN order_state = 1 THEN "未支付"
      WHEN order_state = 2 THEN "已支付"
      END) AS orderStateName
    FROM se_vc_recharge
    where order_state = 2
    order by recharge_time DESC
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
    </if>
  </select>
  <select id="getRechargeRecordCount" resultType="java.lang.Long">
    SELECT
      COUNT(*)
    FROM se_vc_recharge
    where order_state = 2
  </select>
</mapper>
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
@@ -161,6 +161,12 @@
            if(ServerProperties.cacheUpDownDataMaxCount <= ServerProperties.cacheUpDownDataWarnCount){
                throw new Exception("cacheUpDownDataMaxCount必须大于cacheUpDownDataWarnCount") ;
            }
            //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2_100
            ServerProperties.disconnectedByNoUpDataMinutes =  0L + conf.getSetAttrPlusInt(doc, "config.base", "disconnectedByNoUpDataMinutes", null, 1, 100, null) ;
            if(ServerProperties.disconnectedByNoUpDataMinutes < 1 || ServerProperties.disconnectedByNoUpDataMinutes > 100){
                throw new Exception("disconnectedByNoUpDataMinutes取值必须是1~100") ;
            }
            ServerProperties.disconnectedByNoUpDataMinutes = ServerProperties.disconnectedByNoUpDataMinutes * 60 * 1000 ;
            //设置ID生成器的后缀
            IDLongGenerator.setSuffix(ServerProperties.dbDataIdSuffix.intValue());
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java
@@ -33,4 +33,7 @@
    //上下行数据缓存队列中缓存数据个数的最大值,这个与实体项目所接水表数相关
    public static Integer cacheUpDownDataMaxCount = 1100000 ;
    //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2000_100000
    public static Long disconnectedByNoUpDataMinutes = 3000L ;
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java
@@ -9,4 +9,5 @@
    public String protocolName ;//通信协议名称
    public Long lastDownComTime ;//上次下发命令时刻(毫秒时刻 System.currentTimeMillis())
    public Long lastUpDataTime ;//上次收到上行数据时刻(毫秒时刻 System.currentTimeMillis())
    public Long lastUpDataTimeForOnlineCtrl ;//上次收到上行数据时刻(毫秒时刻 System.currentTimeMillis()),用于上线情况控制
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
@@ -2,12 +2,10 @@
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.Map.Entry;
import com.dy.common.util.DateTime;
import org.apache.mina.core.session.IoSession;
import com.dy.rtuMw.server.ServerProperties;
@@ -189,27 +187,54 @@
        TcpSession tcpSe = sessionTable.get(rtuAddr) ;
        if(tcpSe != null){
            tcpSe.lastUpDataTime = System.currentTimeMillis() ;
            tcpSe.lastUpDataTimeForOnlineCtrl = System.currentTimeMillis() ;
        }
    }
    
    /**
     * 更新上行数据时刻
     * 当上行数据时刻已经过去一定时长,上行数据时刻清空
     * 当一定时间内没有上行数据,则认为RTU离线
     */
    public static void updateUpDataTime(Long now){
    public static void updateRtuStatus(Long now){
        synchronized (sessionTable){
            Iterator<TcpSession> it = sessionTable.values().iterator() ;
            Set<Map.Entry<String, TcpSession>> entrySet = sessionTable.entrySet() ;
            Iterator<Map.Entry<String, TcpSession>> it = entrySet.iterator() ;
            Map.Entry<String, TcpSession> entry ;
            TcpSession tcpSe ;
            while(it.hasNext()){
                tcpSe = it.next() ;
                entry = it.next() ;
                tcpSe = entry.getValue();
                if(tcpSe.lastUpDataTime != null){
                    if(now - tcpSe.lastUpDataTime > ServerProperties.lastUpDataTimeLive){
                        tcpSe.lastUpDataTime = null ;
                    }
                }
                if(tcpSe.lastUpDataTimeForOnlineCtrl != null){
                    if(tcpSe.ioSession != null && tcpSe.ioSession.isConnected()){
                        if(now - tcpSe.lastUpDataTimeForOnlineCtrl > ServerProperties.disconnectedByNoUpDataMinutes){
                            tcpSe.ioSession.closeNow() ;
            }
        }
    }
            }
        }
    }
//    public static void updateRtuStatus(Long now){
//        synchronized (sessionTable){
//            Iterator<TcpSession> it = sessionTable.values().iterator() ;
//            TcpSession tcpSe ;
//            while(it.hasNext()){
//                tcpSe = it.next() ;
//                if(tcpSe.lastUpDataTime != null){
//                    if(now - tcpSe.lastUpDataTime > ServerProperties.lastUpDataTimeLive){
//                        tcpSe.lastUpDataTime = null ;
//                    }
//                }
//            }
//        }
//    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java
@@ -36,7 +36,7 @@
        Object subD = d.getSubData();
        if (subD != null) {
            DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD;
            if (dV1_0_1 != null && dV1_0_1.subData != null) {
            if (dV1_0_1 != null && dV1_0_1.subData != null && dV1_0_1.subData instanceof DataCdC0Vo) {
                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                DbSv sv = (DbSv) objs[0];
                PrController controller = (PrController) objs[1];
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealTimingReportV202404.java
@@ -48,7 +48,7 @@
        }
    }
    /**
     * 处理阀开工作报数据
     * 处理阀上报数据
     * @param sv 服务
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
@@ -61,7 +61,7 @@
    }
    /**
     * 保存或更新控制器工作报最新数据
     * 保存或更新控制器该上报最新数据
     * @param sv 服务bean
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
@@ -86,7 +86,7 @@
    }
    /**
     * 保存控制器工作报历史数据
     * 保存或更新控制器该上报历史数据
     * @param sv 服务bean
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/ToRtuConstantTask.java
@@ -37,7 +37,7 @@
     * 处理TCP缓存中的各个TCP Session的上行数据时刻
     */
    private void dealTcpSession(){
        TcpSessionCache.updateUpDataTime(System.currentTimeMillis() ) ;
        TcpSessionCache.updateRtuStatus(System.currentTimeMillis() ) ;
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -16,6 +16,7 @@
        dbDataIdSuffix:数据库数据id生成器的id后缀,0是默认的后缀,一般web系统应用,数据中间件id后缀大于等于1 
        cacheUpDownDataWarnCount:上下行数据缓存队列中缓存数据个数的报警量,这个与现实项目所接水表数相关
        cacheUpDownDataMaxCount:上下行数据缓存队列中缓存数据个数的最大值,这个与现实项目所接水表数相关
        disconnectedByNoUpDataMinutes:没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2_100
         -->
        <base 
            isLowPower="false"
@@ -28,6 +29,7 @@
            dbDataIdSuffix="0"
            cacheUpDownDataWarnCount="100000"
            cacheUpDownDataMaxCount="110000"
            disconnectedByNoUpDataMinutes="3"
        />
        
        <!-- 
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/virtualCard/VirtualCardCtrl.java
@@ -3,11 +3,15 @@
import com.dy.common.aop.SsoAop;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard;
import com.dy.pipIrrGlobal.voPr.VoController;
import com.dy.pipIrrGlobal.voSe.VoVcRecharge;
import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
import com.dy.pipIrrSell.result.SellResultCode;
import com.dy.pipIrrSell.util.PayHelper;
import com.dy.pipIrrSell.virtualCard.dto.DtoRegist;
import com.dy.pipIrrSell.virtualCard.dto.DtoVcRecharge;
import com.dy.pipIrrSell.virtualCard.enums.LastOperateENUM;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
@@ -248,4 +252,19 @@
    //    return BaseResponseUtils.buildSuccess(true) ;
    //}
    /**
     * 获取虚拟卡充值记录
     * @return
     */
    @GetMapping(path = "/getVcRechargeRecords")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoVcRecharge>>> getVcRechargeRecords(DtoVcRecharge dtoVcRecharge){
        try {
            QueryResultVo<List<VoVcRecharge>> res = virtualCardSv.getVcRechargeRecords(dtoVcRecharge);
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取虚拟卡充值记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/virtualCard/VirtualCardSv.java
@@ -2,24 +2,30 @@
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoSe.*;
import com.dy.pipIrrGlobal.pojoSe.SeVcRecharge;
import com.dy.pipIrrGlobal.pojoSe.SeVcRefund;
import com.dy.pipIrrGlobal.pojoSe.SeVcRefundItem;
import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard;
import com.dy.pipIrrGlobal.voPr.VoController;
import com.dy.pipIrrGlobal.voSe.VoOrders;
import com.dy.pipIrrGlobal.voSe.VoVcRecharge;
import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
import com.dy.pipIrrSell.result.SellResultCode;
import com.dy.pipIrrSell.virtualCard.dto.DtoVcRecharge;
import com.dy.pipIrrSell.virtualCard.dto.DtoVirtualCard;
import com.dy.pipIrrSell.virtualCard.enums.LastOperateENUM;
import com.dy.pipIrrSell.virtualCard.enums.OrderStateENUM;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @author ZhuBaoMin
@@ -325,4 +331,23 @@
    public Long getRefundIdByRefundNumber(String refundNumber) {
        return seVcRefundItemMapper.getRefundIdByRefundNumber(refundNumber);
    }
    /**
     * 获取虚拟卡充值记录
     * @param dtoVcRecharge
     * @return
     */
    public QueryResultVo<List<VoVcRecharge>> getVcRechargeRecords(DtoVcRecharge dtoVcRecharge){
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(dtoVcRecharge);
        Long itemTotal = seVirtualCardMapper.getRechargeRecordCount(params);
        QueryResultVo<List<VoVcRecharge>> rsVo = new QueryResultVo<>();
        rsVo.pageSize = dtoVcRecharge.pageSize;
        rsVo.pageCurr = dtoVcRecharge.pageCurr;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = seVirtualCardMapper.getVcRechargeRecords(params);
        return rsVo;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/virtualCard/dto/DtoVcRecharge.java
New file
@@ -0,0 +1,21 @@
package com.dy.pipIrrSell.virtualCard.dto;
import com.dy.common.webUtil.QueryConditionVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.hibernate.validator.constraints.Length;
/**
 * @author :WuZeYu
 * @Date :2024/6/17  17:15
 * @LastEditTime :2024/6/17  17:15
 * @Description
 */
@Data
@Schema(name = "虚拟卡充值记录查询条件")
public class DtoVcRecharge extends QueryConditionVo {
//    @Schema(description = "订单状态", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
//    @Length(message = "订单状态不大于{max},不小于{min}", min = 1, max = 2)
//    private Byte orderState;
}