# XQ-20260331-005 开发思路与改动

## 一、技术方案

### 1.1 定时任务设计

**类名**: `CancelEntRemoveSchedule`
**位置**: `com.chinaweal.aiccs.schedule.CancelEntRemoveSchedule`
**执行频率**: 每天凌晨2点执行（可配置）

### 1.2 处理流程

```
1. 查询当天注销的市场主体
   └─ 表: SJZX_SHARE.KSQY_E_BASEINFO
   └─ 条件: REGSTATE = '注销' AND 注销日期 = 当天日期

2. 对每个注销主体处理:
   ├─ 2.1 经营异常名录自动移出
   │   ├─ 表: SJZX_SHARE.KSQY_AO_OPA_DETAIL
   │   ├─ 条件: PRIPID = 当前主体 AND REMDATE IS NULL
   │   └─ 操作: 更新 REMDATE, REMEXCPRES, REMEXCPRES_CN, REDECORG, REDECORG_CN
   │
   ├─ 2.2 严重违法记录自动移出
   │   ├─ 表: SJZX_SHARE.KSQY_E_LI_ILLDISDETAIL
   │   ├─ 条件: PRIPID = 当前主体 AND REMDATE IS NULL
   │   └─ 操作: 更新 REMDATE, REMEXCPRES, REMEXCPRES_CN, RECORG, RECORG_CN, REDOCNUM
   │
   └─ 2.3 行政处罚信用修复记录插入
       ├─ 表: CRGS.CASE_CRE_INFORMATION
       ├─ 条件: PRIPID = 当前主体 AND CASEID 存在
       └─ 操作: 插入新记录 (CASECREID, PRIPID, ENTNAME, UNISCID, CASEID, REPAIRDATE, REPAUTH, REPAUTH_CN, REPDATE)
```

### 1.3 涉及的表和字段

#### 企业基本信息表 (KSQY_E_BASEINFO)
- **PRIPID**: 主体身份代码
- **ENTNAME**: 企业名称
- **UNISCID**: 统一社会信用代码
- **REGSTATE**: 登记状态
- **REGDATE**: 核准日期（注销日期）

#### 经营异常名录详情表 (KSQY_AO_OPA_DETAIL)
- **BUSEXCLIST**: 经营异常名录ID
- **PRIPID**: 主体身份代码
- **ISMOVE**: 是否移出
- **REMDATE**: 移出日期
- **REMEXCPRES**: 移出原因
- **REMEXCPRES_CN**: 移出原因中文
- **REDECORG**: 移出决定机关
- **REDECORG_CN**: 移出决定机关中文

#### 严重违法详情表 (KSQY_E_LI_ILLDISDETAIL)
- **ILLID**: 严重违法失信ID
- **PRIPID**: 主体身份代码
- **REMDATE**: 移出日期
- **REMEXCPRES**: 移出事由
- **REMEXCPRES_CN**: 移出事由中文
- **RECORG**: 移出决定机关
- **RECORG_CN**: 移出决定机关中文
- **REDOCNUM**: 移出文号

#### 行政处罚信用修复信息表 (CRGS.CASE_CRE_INFORMATION)
- **CASECREID**: 行政处罚修复ID
- **PRIPID**: 主体身份代码
- **ENTNAME**: 企业名称
- **UNISCID**: 统一社会信用代码
- **CASEID**: 行政处罚ID
- **REPAIRDATE**: 申请修复日期
- **REPAUTH**: 修复机关代码
- **REPAUTH_CN**: 修复机关名称
- **REPDATE**: 修复日期
- **REPAIRNO**: 修复文号

## 二、实现细节

### 2.1 定时任务配置

在 `application-dev.yml` 中添加:
```yaml
scheduling:
  enable: true
  cron:
    cancelEntRemove: '0 0 2 * * ?'  # 每天凌晨2点执行
```

### 2.2 核心逻辑

1. **查询注销主体**: 使用 MyBatis Plus 的 LambdaQueryWrapper 构建查询条件
2. **批量处理**: 对每个注销主体，先批量处理所有移出操作，再处理行政处罚插入
3. **事务管理**: 使用 @Transactional 确保数据一致性
4. **日志记录**: 详细记录处理过程和结果

### 2.3 移出原因

- **移出原因码值**: `08` (其他)
- **移出原因中文**: `主体注销，自动移出`
- **移出机关**: 使用原列入机关或默认机关代码

## 三、代码改动

### 3.1 新增文件

1. `src/main/java/com/chinaweal/aiccs/schedule/CancelEntRemoveSchedule.java` - 定时任务类
2. `src/main/java/com/chinaweal/aiccs/aicbizqy/mapper/datamove/AoOpaDetailDataMoveMapper.java` - 需添加更新方法
3. `src/main/java/com/chinaweal/aiccs/aicbizqy/mapper/datamove/ELiIlldisdetailDataMoveMapper.java` - 需添加更新方法

### 3.2 修改文件

1. `src/main/resources/application-dev.yml` - 添加定时任务配置

## 四、异常处理

- 查询异常: 记录日志，继续处理其他主体
- 更新异常: 记录错误日志，继续处理其他记录
- 插入异常: 记录错误日志，继续处理其他记录
