zuoxiao
7 天以前 43a889d3f0c50d139461a60ccaba2eb058d19975
feat(card): 添加未写卡状态并更新相关逻辑

- 在 SeManagementCard 模型中添加未写卡状态(4)
- 在 ManagementCardStateENUM 枚举中添加 UNWRITTEN 状态- 更新 SeClientCardMapper.xml 中的查询逻辑,排除未写卡状态
- 修改 CardSv 中创建管理卡的默认状态为未写卡
- 在 README.md 中添加 ID 生成器的使用说明
5个文件已修改
50 ■■■■■ 已修改文件
README.md 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagementCard.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/ManagementCardStateENUM.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -58,6 +58,47 @@
- **工具集**: Hutool 5.8.22
- **日志框架**: Log4j2 2.20.0
## ID生成器使用说明
系统使用自定义的IDLongGenerator来生成唯一的Long型ID,确保在分布式环境下的ID唯一性。
### IDLongGenerator特性
- **格式**: `年月日时分秒` + `3位自增序列` + `2位系统后缀`
- **长度**: 19位数字(如:20231218104504069**00**)
- **并发性**: 支持同一秒内生成1000个不同ID
- **分布式**: 通过后缀区分不同子系统,避免ID冲突
### 使用方式
```java
// 依赖注入
@Autowired
private IDLongGenerator idLongGenerator;
// 生成ID
Long id = idLongGenerator.generate();
```
### 应用场景
- **管理卡创建**: createManagementCard方法中使用IDLongGenerator生成管理卡ID
- **实体主键**: 所有业务实体的主键ID生成
- **订单号**: 业务流水号生成
- **日志记录**: 操作记录的唯一标识
### 配置说明
系统启动时会自动设置ID后缀,不同的服务模块使用不同的后缀来避免ID冲突:
```xml
<!-- web.xml或Spring配置 -->
<context-param>
    <param-name>idSuffix</param-name>
    <param-value>01</param-value> <!-- 不同服务使用不同后缀 -->
</context-param>
```
## 开发环境搭建
### 前置条件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagementCard.java
@@ -109,7 +109,7 @@
    private Date cancelDt;
    /**
     * 卡片状态;1-正常,2-已注销,3-已挂失
     * 卡片状态;1-正常,2-已注销,3-已挂失,4-未写卡
     */
    @NotNull(message = "卡片状态不能为空")
    private Byte state;
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -868,7 +868,7 @@
  <!--检查卡地址是否已存在(管理卡表 + 农户水卡表)-->
  <select id="checkCardAddrExists" resultType="java.lang.Long">
    SELECT COUNT(*) AS totalCount FROM (
      -- 检查管理卡表中正常(1)和挂失(3)状态的记录
      -- 检查管理卡表中正常(1)和挂失(3)状态的记录,排除已注销(2)和未写卡(4)
      SELECT card_addr FROM se_management_card 
      WHERE card_addr = #{cardAddr}
        AND state IN (1, 3)
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java
@@ -1330,7 +1330,7 @@
                    .domain(dto.getDomain())
                    .openClostTime(dto.getOpenClostTime())
                    .remarks(dto.getRemarks())
                    .state(ManagementCardStateENUM.NORMAL.getCode()) // 默认状态为正常
                    .state(ManagementCardStateENUM.UNWRITTEN.getCode()) // 默认状态为未写卡
                    .build();
            // 插入数据库
pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/ManagementCardStateENUM.java
@@ -15,7 +15,8 @@
public enum ManagementCardStateENUM {
    NORMAL((byte) 1, "正常"),
    CANCELLED((byte) 2, "已注销"),
    LOSS((byte) 3, "已挂失");
    LOSS((byte) 3, "已挂失"),
    UNWRITTEN((byte) 4, "未写卡");
    private final Byte code;
    private final String message;