From 6497e0daf1d0afc3da65a11d389c740e79427a78 Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期三, 24 七月 2024 14:08:11 +0800
Subject: [PATCH] 2024-07-24 朱宝民 整点报历史记录查询、管理卡创建

---
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java       |   45 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java |   33 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java      |   19 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml                             |  124 ++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java   |   31 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java                   |   72 ++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java |   55 ++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java      |   40 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java                          |   75 ++++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml                     |   54 ++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java       |   13 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java         |   72 ++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java              |   35 ++
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                     |    2 
 14 files changed, 657 insertions(+), 13 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java
index edcde57..1eaa921 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java
+++ b/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);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java
new file mode 100644
index 0000000..6df948a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java
@@ -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);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java
new file mode 100644
index 0000000..6bf4d99
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java
@@ -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;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java
new file mode 100644
index 0000000..26dece0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java
@@ -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;
+
+    /**
+     * 鍙栨按鍙D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long intakeId;
+
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    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;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 7cabb1f..82bc8e4 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -136,6 +136,8 @@
     projectNo: 10
     #鎺у埗鍣ㄧ被鍨�
     controllerType: 57
+    #榛樿琛屾斂鍖哄垝缂栫爜锛堝ぉ娲�-澶╂触甯�-姝︽竻鍖�-浜花宸ヤ笟鍥�-澶х鑺傛按锛�
+    divisionCode: 120114403100
 
 
 #閫氳鍗忚
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
index a06bd6d..dab83eb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
+++ b/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>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml
new file mode 100644
index 0000000..dc41740
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml
@@ -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>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java
new file mode 100644
index 0000000..e3cdcda
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java
@@ -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()) ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
new file mode 100644
index 0000000..ed17765
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
@@ -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 {
+    // 闃�鎺у櫒鏁寸偣鎶AO
+    private final RmOnHourReportHistoryMapper rmOnHourReportHistoryMapper;
+    private final RmOnHourReportLastMapper rmOnHourReportLastMapper;
+
+    // 闃�鎺у櫒寮�鍏抽榾鎶AO
+    private final RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
+    private final RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper;
+
+    // 闃�鎺у櫒瀹氭椂鎶AO
+    private final RmTimingReportHistoryMapper rmTimingReportHistoryMapper;
+    private final RmTimingReportLastMapper rmTimingReportLastMapper;
+
+    // 宸ヤ綔鎶AO
+    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 ;
+    }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java
new file mode 100644
index 0000000..92b88f6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java
@@ -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 {
+
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    private String intakeNum;
+
+    /**
+     * 闃�鎺у櫒鍦板潃
+     */
+    private String rtuAddr;
+
+    /**
+     * 鏌ヨ寮�濮嬫棩鏈�
+     */
+    private String timeStart;
+
+    /**
+     * 鏌ヨ缁撴潫鏃ユ湡
+     */
+    private String timeStop;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
index 5cb744f..c0d55cf 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
+++ b/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
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
index 84cc589..5ff8607 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
+++ b/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
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java
new file mode 100644
index 0000000..0b28e12
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java
@@ -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;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
index 23112df..7dc0cf8 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
+++ b/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, "鍘熷崱鎸傚け鏃跺凡閫�娆撅紝琛ュ崱鏃朵笉鑳借ˉ璐圭敤"),
 
     /**
      * 鍏呭��

--
Gitblit v1.8.0