Administrator
2024-07-24 6497e0daf1d0afc3da65a11d389c740e79427a78
2024-07-24 朱宝民 整点报历史记录查询、管理卡创建
6个文件已修改
8个文件已添加
670 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java
@@ -2,8 +2,11 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmOnHourReportHistory;
import com.dy.pipIrrGlobal.pojoRm.RmOnHourReportLast;
import com.dy.pipIrrGlobal.voRm.VoOnHour;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
 * @Author: liurunyu
@@ -53,4 +56,18 @@
     * @return update count
     */
    int updateByPrimaryKey(RmOnHourReportHistory record);
    /**
     * 根据指定条件获取整点报历史记录数量
     * @param params
     * @return
     */
    Long getOnHourReportsCount_history(Map<?, ?> params);
    /**
     * 根据指定条件获取整点报历史记录
     * @param params
     * @return
     */
    List<VoOnHour> getOnHourReports_history(Map<?, ?> params);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java
New file
@@ -0,0 +1,35 @@
package com.dy.pipIrrGlobal.daoSe;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoSe.SeManagerCard;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * @author ZhuBaoMin
 * @date 2024-07-24 10:36
 * @LastEditTime 2024-07-24 10:36
 * @Description
 */
@Mapper
public interface SeManagerCardMapper extends BaseMapper<SeManagerCard> {
    int deleteByPrimaryKey(Long id);
    int insert(SeManagerCard record);
    int insertSelective(SeManagerCard record);
    SeManagerCard selectByPrimaryKey(Long id);
    int updateByPrimaryKeySelective(SeManagerCard record);
    int updateByPrimaryKey(SeManagerCard record);
    /**
     * 根据行政区划串模糊查询管理卡编号
     * @param areaCode
     * @return
     */
    String getManagerCardNumOfMax(@Param("areaCode") String areaCode);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java
New file
@@ -0,0 +1,72 @@
package com.dy.pipIrrGlobal.pojoSe;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import org.hibernate.validator.constraints.Length;
import java.util.Date;
/**
 * @author ZhuBaoMin
 * @date 2024-07-24 10:36
 * @LastEditTime 2024-07-24 10:36
 * @Description
 */
/**
 * 管理员水卡表
 */
@TableName(value = "se_manager_card", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class SeManagerCard implements BaseEntity {
    public static final long serialVersionUID = 202407241040001L;
    /**
    * 主键
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    private Long id;
    /**
    * 卡片地址
    */
    @NotBlank(message = "卡片地址不能为空")
    private String cardAddr;
    /**
    * 卡片编号
    */
    @NotBlank(message = "卡片编号不能为空")
    private String cardNum;
    /**
    * 卡片类型;2-管理科,4-开关阀卡,5清空卡
    */
    @NotNull(message = "卡片类型不能为空")
    private Byte cardType;
    /**
    * 开卡时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
    * 备注信息
    */
    @Length(max = 200)
    private String remarks;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java
New file
@@ -0,0 +1,75 @@
package com.dy.pipIrrGlobal.voRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-07-23 17:12
 * @LastEditTime 2024-07-23 17:12
 * @Description 整点报数据视图对象
 */
@Data
public class VoOnHour {
    private static final long serialVersionUID = 202407231713001L;
    /**
     * 取水口ID
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    private Long intakeId;
    /**
     * 取水口编号
     */
    private String intakeNum;
    /**
     * 阀控器地址
     */
    private String rtuAddr;
    /**
     * 数据接收时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String receiveTime;
    /**
     * 瞬时流量
     */
    private Double instantAmount;
    /**
     * 累计流量
     */
    private Double totalAmount;
    /**
     * 损失流量,从当日0时到当前的漏损累计流量
     */
    private Double lossAmount;
    /**
     * 水压
     */
    private Double waterPress;
    /**
     * 蓄电池电压
     */
    private Double batteryVolt;
    /**
     * 信号强度
     */
    private Integer signalValue;
    /**
     * 水价
     */
    private Double waterPrice;
}
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -136,6 +136,8 @@
    projectNo: 10
    #控制器类型
    controllerType: 57
    #默认行政区划编码(天津-天津市-武清区-京滨工业园-大禹节水)
    divisionCode: 120114403100
#通讯协议
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
@@ -194,4 +194,58 @@
      water_price = #{waterPrice,jdbcType=FLOAT}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--根据指定条件获取整点报历史记录数量-->
  <select id="getOnHourReportsCount_history" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM rm_on_hour_report_history oh
    INNER JOIN pr_intake inta ON inta.id = oh.intake_id
    <where>
      <if test = "intakeName != null and intakeName !=''">
        AND inta.name LIKE CONCAT('%',#{intakeName},'%')
      </if>
      <if test = "rtuAddr != null and rtuAddr !=''">
        AND oh.rtu_addr LIKE CONCAT('%',#{rtuAddr},'%')
      </if>
      <if test = "timeStart != null and timeStop != null">
        AND oh.dt BETWEEN #{timeStart} AND #{timeStop}
      </if>
    </where>
  </select>
  <!--根据指定条件获取整点报历史记录-->
  <select id="getOnHourReports_history" resultType="com.dy.pipIrrGlobal.voRm.VoOnHour">
    SELECT
      oh.intake_id AS intakeId,
      inta.`name` AS intakeNum,
      oh.rtu_addr AS rtuAddr,
      oh.dt AS receiveTime,
      oh.instant_amount AS instantAmount,
      oh.total_amount AS totalAmount,
      oh.loss_amount AS lossAmount,
      oh.water_press AS waterPress,
      oh.battery_volt AS batteryVolt,
      oh.signal_value AS signalValue,
      oh.water_price AS waterPrice
    FROM rm_on_hour_report_history oh
        INNER JOIN pr_intake inta ON inta.id = oh.intake_id
    <where>
      <if test = "intakeNum != null and intakeNum !=''">
        AND inta.name LIKE CONCAT('%',#{intakeNum},'%')
      </if>
      <if test = "rtuAddr != null and rtuAddr !=''">
        AND oh.rtu_addr LIKE CONCAT('%',#{rtuAddr},'%')
      </if>
      <if test = "timeStart != null and timeStop != null">
        AND oh.dt BETWEEN #{timeStart} AND #{timeStop}
      </if>
    </where>
    ORDER BY oh.dt DESC
    <trim prefix="limit " >
      <if test="start != null and count != null">
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
      </if>
    </trim>
  </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml
New file
@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoSe.SeManagerCardMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
    <!--@mbg.generated-->
    <!--@Table se_manager_card-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="card_addr" jdbcType="VARCHAR" property="cardAddr" />
    <result column="card_num" jdbcType="VARCHAR" property="cardNum" />
    <result column="card_type" jdbcType="TINYINT" property="cardType" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, card_addr, card_num, card_type, create_time, remarks
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from se_manager_card
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from se_manager_card
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
    <!--@mbg.generated-->
    insert into se_manager_card (id, card_addr, card_num,
      card_type, create_time, remarks
      )
    values (#{id,jdbcType=BIGINT}, #{cardAddr,jdbcType=VARCHAR}, #{cardNum,jdbcType=VARCHAR},
      #{cardType,jdbcType=TINYINT}, #{createTime,jdbcType=TIMESTAMP}, #{remarks,jdbcType=VARCHAR}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
    <!--@mbg.generated-->
    insert into se_manager_card
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="cardAddr != null">
        card_addr,
      </if>
      <if test="cardNum != null">
        card_num,
      </if>
      <if test="cardType != null">
        card_type,
      </if>
      <if test="createTime != null">
        create_time,
      </if>
      <if test="remarks != null">
        remarks,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="cardAddr != null">
        #{cardAddr,jdbcType=VARCHAR},
      </if>
      <if test="cardNum != null">
        #{cardNum,jdbcType=VARCHAR},
      </if>
      <if test="cardType != null">
        #{cardType,jdbcType=TINYINT},
      </if>
      <if test="createTime != null">
        #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="remarks != null">
        #{remarks,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
    <!--@mbg.generated-->
    update se_manager_card
    <set>
      <if test="cardAddr != null">
        card_addr = #{cardAddr,jdbcType=VARCHAR},
      </if>
      <if test="cardNum != null">
        card_num = #{cardNum,jdbcType=VARCHAR},
      </if>
      <if test="cardType != null">
        card_type = #{cardType,jdbcType=TINYINT},
      </if>
      <if test="createTime != null">
        create_time = #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="remarks != null">
        remarks = #{remarks,jdbcType=VARCHAR},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
    <!--@mbg.generated-->
    update se_manager_card
    set card_addr = #{cardAddr,jdbcType=VARCHAR},
      card_num = #{cardNum,jdbcType=VARCHAR},
      card_type = #{cardType,jdbcType=TINYINT},
      create_time = #{createTime,jdbcType=TIMESTAMP},
      remarks = #{remarks,jdbcType=VARCHAR}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--根据行政区划串模糊查询管理卡编号-->
  <select id="getManagerCardNumOfMax"  resultType="java.lang.String">
    SELECT card_num
    FROM se_manager_card
    WHERE card_num LIKE CONCAT(#{areaCode},'%')
    ORDER BY card_num desc
    LIMIT 0,1
  </select>
</mapper>
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java
New file
@@ -0,0 +1,45 @@
package com.dy.pipIrrRemote.report;
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.voRm.VoOnHour;
import com.dy.pipIrrRemote.report.qo.ReportQO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * @author ZhuBaoMin
 * @date 2024-07-23 16:01
 * @LastEditTime 2024-07-23 16:01
 * @Description 各类数据报控制类
 */
@Slf4j
@RestController
@RequestMapping(path = "report")
@RequiredArgsConstructor
public class ReportCtrl {
    private final ReportSv reportSv;
    /**
     * 根据指定条件获取整点报历史记录
     * @param qo
     * @return
     */
    @GetMapping(path = "/on_hour_report_history")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoOnHour>>> getOnHourReportHistory(ReportQO qo){
        try {
            return BaseResponseUtils.buildSuccess(reportSv.getOnHourReportsHistory(qo));
        } catch (Exception e) {
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
New file
@@ -0,0 +1,72 @@
package com.dy.pipIrrRemote.report;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoRm.*;
import com.dy.pipIrrGlobal.voRm.VoOnHour;
import com.dy.pipIrrRemote.report.qo.ReportQO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * @author ZhuBaoMin
 * @date 2024-07-23 16:02
 * @LastEditTime 2024-07-23 16:02
 * @Description 各类数据报服务类
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class ReportSv {
    // 阀控器整点报DAO
    private final RmOnHourReportHistoryMapper rmOnHourReportHistoryMapper;
    private final RmOnHourReportLastMapper rmOnHourReportLastMapper;
    // 阀控器开关阀报DAO
    private final RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
    private final RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper;
    // 阀控器定时报DAO
    private final RmTimingReportHistoryMapper rmTimingReportHistoryMapper;
    private final RmTimingReportLastMapper rmTimingReportLastMapper;
    // 工作报DAO
    private final RmWorkReportHistoryMapper rmWorkReportHistoryMapper;
    private final RmWorkReportLastMapper rmWorkReportLastMapper;
    /**
     * 根据指定条件获取整点报历史记录
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoOnHour>> getOnHourReportsHistory(ReportQO qo) {
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
            timeStart = timeStart + " 00:00:00";
            qo.setTimeStart(timeStart);
        }
        if(timeStop != null) {
            timeStop = timeStop + " 23:59:59";
            qo.setTimeStop(timeStop);
        }
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
        Long itemTotal = rmOnHourReportHistoryMapper.getOnHourReportsCount_history(params);
        QueryResultVo<List<VoOnHour>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmOnHourReportHistoryMapper.getOnHourReports_history(params);
        return rsVo ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java
New file
@@ -0,0 +1,40 @@
package com.dy.pipIrrRemote.report.qo;
import com.dy.common.webUtil.QueryConditionVo;
import lombok.*;
/**
 * @author ZhuBaoMin
 * @date 2024-07-23 16:31
 * @LastEditTime 2024-07-23 16:31
 * @Description
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ReportQO extends QueryConditionVo {
    /**
     * 取水口编号
     */
    private String intakeNum;
    /**
     * 阀控器地址
     */
    private String rtuAddr;
    /**
     * 查询开始日期
     */
    private String timeStart;
    /**
     * 查询结束日期
     */
    private String timeStop;
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -10,6 +10,7 @@
import com.dy.pipIrrGlobal.pojoBa.BaClient;
import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.pojoSe.SeManagerCard;
import com.dy.pipIrrGlobal.util.AmountToChinese;
import com.dy.pipIrrGlobal.voSe.VoActiveCard;
import com.dy.pipIrrGlobal.voSe.VoOperate;
@@ -31,6 +32,7 @@
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.BindingResult;
@@ -55,6 +57,8 @@
    private final CardOperateSv cardOperateSv;
    private final ClientCardSv clientCardSv;
    @Value("${project.divisionCode}")
    private String divisionCode;
    /**
     * 开卡
     * @param po 开卡传入对象
@@ -748,6 +752,57 @@
    }
    /**
     * 创建管理卡
     * @param po
     * @param bindingResult
     * @return
     */
    @PostMapping(path = "create_manager_card", consumes = MediaType.APPLICATION_JSON_VALUE)
    @Transactional(rollbackFor = Exception.class)
    @SsoAop()
    public BaseResponse<Boolean> createManagerCard(@RequestBody @Valid ManagerCard po, BindingResult bindingResult){
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        /**
         * 根据行政区划串(divisionCode)在管理卡表中针对卡片编号(cardNum)进行模糊查询
         * 如果顺序号已经达到最大值,提示用户联系系统管理员
         * 如果顺序号未达到最大值,则加1
         * cardNum为新的卡号
         */
        String cardNum = Optional.ofNullable(cardOperateSv.getManagerCardNumOfMax(divisionCode)).orElse("");
        if(cardNum != null && cardNum.trim().length() > 0) {
            Integer number = Integer.parseInt(cardNum.substring(12));
            number = number + 1;
            if(number > 65535) {
                return BaseResponseUtils.buildErrorMsg(SellResultCode.CARD_NUMBER_OVERRUN.getMessage());
            }
            cardNum = cardNum.substring(0, 12) + String.format("%05d", number);
        } else {
            cardNum = divisionCode + "00001";
        }
        SeManagerCard seManagerCard = new SeManagerCard();
        seManagerCard.setCardAddr(po.getCardAddr());
        seManagerCard.setCardNum(cardNum);
        seManagerCard.setCardType(po.getCardType());
        seManagerCard.setCreateTime(new Date());
        seManagerCard.setRemarks(po.getRemarks());
        Long managerCardId = cardOperateSv.addManagerCard(seManagerCard);
        if(managerCardId == 0) {
            return BaseResponseUtils.buildErrorMsg(SellResultCode.CREATE_MANAGER_CARD_ERROR.getMessage());
        }
        return BaseResponseUtils.buildSuccess(cardNum);
        //Map map = new HashMap();
        //map.put("cardNum", cardNum);
        //return BaseResponseUtils.buildSuccess(map) ;
    }
    /**
     * 获取充值记录
     * @param vo
     * @return
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -7,12 +7,10 @@
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoBa.BaSettingsMapper;
import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
import com.dy.pipIrrGlobal.daoSe.SeGeneralMapper;
import com.dy.pipIrrGlobal.daoSe.*;
import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.pojoSe.SeManagerCard;
import com.dy.pipIrrGlobal.voSe.*;
import com.dy.pipIrrSell.cardOperate.dto.DtoRecharge;
import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
@@ -56,6 +54,9 @@
    @Autowired
    private BaSettingsMapper baSettingsMapper;
    @Autowired
    private SeManagerCardMapper seManagerCardMapper;
    /**
     * 添加开卡记录
@@ -88,16 +89,36 @@
    public Long getAreaCodeById(Long clientId) {
        return seClientMapper.getAreaCodeById(clientId);
    }
    /**
     * 根据行政区划串模块查询水卡编号,开卡使用
     * @param areaCode
     * @return
     */
    String getCardNumOfMax(String areaCode) {
    public String getCardNumOfMax(String areaCode) {
        return seClientCardMapper.getCardNumOfMax(areaCode);
    }
    /**
     * 根据行政区划串模糊查询管理卡编号,创建管理卡使用
     * @param areaCode
     * @return
     */
    public String getManagerCardNumOfMax(String areaCode) {
        return seManagerCardMapper.getManagerCardNumOfMax(areaCode);
    }
    /**
     * 创建管理卡
     * @param po
     * @return
     */
    public Long addManagerCard(SeManagerCard po) {
        seManagerCardMapper.insert(po);
        return po.getId();
    }
    /**
     * 根据农户编号获取农户ID,开卡使用
     * @param clientNum
     * @return
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java
New file
@@ -0,0 +1,33 @@
package com.dy.pipIrrSell.cardOperate.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-07-24 11:25
 * @LastEditTime 2024-07-24 11:25
 * @Description 管理卡传输对象
 */
@Data
public class ManagerCard {
    public static final long serialVersionUID = 202407241125001L;
    /**
     * 水卡地址,仅保存,无业务
     */
    @NotBlank(message = "水卡地址不能为空")
    private String cardAddr;
    /**
     * 卡片类型,2-管理科,4-开关阀卡,5-清空卡
     */
    private Byte cardType;
    /**
     * 备注信息
     */
    private String remarks;
}
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
@@ -28,13 +28,12 @@
    No_ActiveCards(10009, "没有符合条件的开卡数据"),
    No_RECHARGES(10010, "没有符合条件的充值数据"),
    No_ReissueCards(10011, "没有符合条件的补卡数据"),
    No_CANCELS(10010, "没有符合条件的注销数据"),
    PARAMS_ERROR(10010, "操作类型参数错误"),
    THE_CARD_NOT_EXIST(10012, "没有符合条件的水卡"),
    THE_CARD_NOT_SUPPORT_THIS_OPERATION(10013, "水卡状态不支持当前操作"),
    THE_FEE_CANNOT_BE_REFUNDED(10014, "原卡挂失时已退款,补卡时不能补费用"),
    No_CANCELS(10012, "没有符合条件的注销数据"),
    PARAMS_ERROR(10013, "操作类型参数错误"),
    CREATE_MANAGER_CARD_ERROR(10014, "创建管理卡失败"),
    THE_CARD_NOT_EXIST(10015, "没有符合条件的水卡"),
    THE_CARD_NOT_SUPPORT_THIS_OPERATION(10016, "水卡状态不支持当前操作"),
    THE_FEE_CANNOT_BE_REFUNDED(10017, "原卡挂失时已退款,补卡时不能补费用"),
    /**
     * 充值