执法系统对接数据清洗

This commit is contained in:
黎润豪 2026-02-10 16:54:35 +08:00
parent 4f758d50ae
commit b9ae62b120
10 changed files with 379 additions and 2 deletions

View File

@ -3,6 +3,8 @@ package com.chinaweal.aiccs.aiccs.security.controller;
import com.alibaba.fastjson.JSONObject;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyAcceptLog;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyAppInfo;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyCaseInfo;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyEntInfo;
import com.chinaweal.aiccs.aiccs.security.entity.dto.LoginInfoParamDto;
import com.chinaweal.aiccs.aiccs.security.entity.dto.PenaltyCaseInfoEntInfoDto;
import com.chinaweal.aiccs.aiccs.security.entity.dto.PenaltyCaseInfoRequestDto;
@ -11,7 +13,11 @@ import com.chinaweal.aiccs.aiccs.security.entity.vo.SecurityResultVO;
import com.chinaweal.aiccs.aiccs.security.enums.ErrorCode;
import com.chinaweal.aiccs.aiccs.security.service.IPenaltyAcceptLogService;
import com.chinaweal.aiccs.aiccs.security.service.IPenaltyAppInfoService;
import com.chinaweal.aiccs.aiccs.security.service.IPenaltyCaseInfoService;
import com.chinaweal.aiccs.aiccs.security.service.IPenaltyEntInfoService;
import com.chinaweal.aiccs.common.constant.CommonConstants;
import com.chinaweal.aiccs.common.constant.Constant;
import com.chinaweal.aiccs.common.util.DateUtils;
import com.chinaweal.aiccs.common.util.StringUtils;
import com.chinaweal.aiccs.org.entity.TUsers;
import com.chinaweal.aiccs.org.service.TUsersService;
@ -20,7 +26,9 @@ import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* 批量吊销对外接口
@ -39,6 +47,10 @@ public class PenaltySecurityController {
private IPenaltyAppInfoService penaltyAppInfoService;
@Autowired
private IPenaltyAcceptLogService penaltyAcceptLogService;
@Autowired
private IPenaltyCaseInfoService penaltyCaseInfoService;
@Autowired
private IPenaltyEntInfoService penaltyEntInfoService;
/**
* 登录
@ -135,7 +147,89 @@ public class PenaltySecurityController {
penaltyAcceptLog.setDataJson(JSONObject.toJSONString(requestDto));
penaltyAcceptLog.setCreateTime(LocalDateTime.now());
penaltyAcceptLogService.save(penaltyAcceptLog);
// TODO: 接收业务处理 accpetid
// 保存案件信息到PENALTY_CASE_INFO表
PenaltyCaseInfo penaltyCaseInfo = new PenaltyCaseInfo();
penaltyCaseInfo.setCaseid(requestDto.getCaseid());
penaltyCaseInfo.setAcceptid(penaltyAcceptLog.getAcceptId());
penaltyCaseInfo.setCasename(requestDto.getCasename());
penaltyCaseInfo.setCaseintroduction(requestDto.getCaseintroduction());
penaltyCaseInfo.setIllegality(requestDto.getIllegality());
penaltyCaseInfo.setPenalty(requestDto.getPenalty());
penaltyCaseInfo.setPenaltydate(LocalDate.parse(requestDto.getPenaltydate(), DateTimeFormatter.ofPattern(DateUtils.DATE_DEFAULT_FORMAT)));
penaltyCaseInfo.setPenaltyorg(requestDto.getPenaltyorg());
penaltyCaseInfo.setUpdateTime(LocalDateTime.now());
penaltyCaseInfo.setFlgDeleted(CommonConstants.FALSE_0);
PenaltyCaseInfo byId = penaltyCaseInfoService.getById(penaltyCaseInfo.getCaseid());
if (byId != null) {
penaltyCaseInfoService.updateById(penaltyCaseInfo);
} else {
penaltyCaseInfo.setCreateTime(LocalDateTime.now());
penaltyCaseInfoService.save(penaltyCaseInfo);
}
// 保存吊销主体清单到PENALTY_ENT_INFO表
for (PenaltyCaseInfoEntInfoDto entInfoDto : requestDto.getPenaltylist()) {
PenaltyEntInfo one = penaltyEntInfoService.lambdaQuery().eq(PenaltyEntInfo::getCaseid, requestDto.getCaseid())
.eq(PenaltyEntInfo::getPripid, entInfoDto.getPripid()).ne(PenaltyEntInfo::getFlgDeleted, CommonConstants.TRUE_1)
.last("limit 1").one();
PenaltyEntInfo penaltyEntInfo = new PenaltyEntInfo();
penaltyEntInfo.setCaseid(requestDto.getCaseid());
penaltyEntInfo.setPripid(entInfoDto.getPripid());
penaltyEntInfo.setUniscid(entInfoDto.getUniscid());
penaltyEntInfo.setLegal(entInfoDto.getLegal());
penaltyEntInfo.setEnttype(StringUtils.trimToEmpty(cleanEntTypeCode(entInfoDto.getEnttype())));
penaltyEntInfo.setCreateTime(LocalDateTime.now());
penaltyEntInfo.setUpdateTime(LocalDateTime.now());
penaltyEntInfo.setFlgDeleted("0");
if (one == null) {
penaltyEntInfoService.save(penaltyEntInfo);
} else {
penaltyEntInfo.setId(one.getId());
penaltyEntInfoService.updateById(penaltyEntInfo);
}
}
return SecurityResultAcceptVO.success(penaltyAcceptLog.getAcceptId());
}
/**
* 清洗市场主体类型编码
* "类型中文名(类型编码)"格式中提取纯类型编码
* 支持多个括号中文括号和英文括号
*
* @param enttype 原始市场主体类型字符串
* @return 清洗后的类型编码如果无法提取则返回原字符串
*/
private String cleanEntTypeCode(String enttype) {
if (StringUtils.isBlank(enttype)) {
return enttype;
}
String str = enttype.trim();
// 替换中文括号为英文括号,统一处理
str = str.replace('', '(').replace('', ')');
// 找到最后一个左括号
int lastLeftBracket = str.lastIndexOf('(');
if (lastLeftBracket == -1) {
// 没有找到括号,直接返回原字符串
return str;
}
// 找到最后一个左括号对应的右括号
int lastRightBracket = str.lastIndexOf(')');
if (lastRightBracket == -1 || lastRightBracket < lastLeftBracket) {
// 没有找到对应的右括号,直接返回原字符串
return str;
}
// 提取括号内的内容
String code = str.substring(lastLeftBracket + 1, lastRightBracket).trim();
// 如果提取的内容为空,返回原字符串
return StringUtils.isBlank(code) ? enttype : code;
}
}

View File

@ -0,0 +1,109 @@
package com.chinaweal.aiccs.aiccs.security.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.aiccs.common.util.DateUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* 执法系统-案件信息表
* @author lroyia
* @since 2026/2/10
**/
@Data
@Accessors(chain = true)
@TableName("AICCS.PENALTY_CASE_INFO")
@ApiModel("执法系统-案件信息表")
public class PenaltyCaseInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 案件编号
*/
@TableId(type = IdType.ASSIGN_UUID, value = "CASEID")
@ApiModelProperty("案件编号")
private String caseid;
/**
* 接收数据时的对接记录ID
*/
@TableField("ACCEPTID")
@ApiModelProperty("接收数据时的对接记录ID")
private String acceptid;
/**
* 案件名称
*/
@TableField("CASENAME")
@ApiModelProperty("案件名称")
private String casename;
/**
* 案由
*/
@TableField("CASEINTRODUCTION")
@ApiModelProperty("案由")
private String caseintroduction;
/**
* 违法行为
*/
@TableField("ILLEGALITY")
@ApiModelProperty("违法行为")
private String illegality;
/**
* 处罚内容
*/
@TableField("PENALTY")
@ApiModelProperty("处罚内容")
private String penalty;
/**
* 处罚决定日期
*/
@TableField("PENALTYDATE")
@ApiModelProperty("处罚决定日期")
private LocalDate penaltydate;
/**
* 处罚决定机关
*/
@TableField("PENALTYORG")
@ApiModelProperty("处罚决定机关")
private String penaltyorg;
/**
* 创建时间
*/
@TableField("CREATE_TIME")
@ApiModelProperty("创建时间")
@JsonFormat(pattern = DateUtils.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("UPDATE_TIME")
@ApiModelProperty("更新时间")
@JsonFormat(pattern = DateUtils.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime updateTime;
/**
* 删除标识0正常1删除
*/
@TableField("FLG_DELETED")
@ApiModelProperty("删除标识0正常1删除")
private String flgDeleted;
}

View File

@ -0,0 +1,94 @@
package com.chinaweal.aiccs.aiccs.security.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.aiccs.common.util.DateUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 执法系统-吊销主体清单表
* @author lroyia
* @since 2026/2/10
**/
@Data
@Accessors(chain = true)
@TableName("AICCS.PENALTY_ENT_INFO")
@ApiModel("执法系统-吊销主体清单表")
public class PenaltyEntInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_UUID, value = "ID")
@ApiModelProperty("主键ID")
private String id;
/**
* 案件编号关联PENALTY_CASE_INFO表
*/
@TableField("CASEID")
@ApiModelProperty("案件编号关联PENALTY_CASE_INFO表")
private String caseid;
/**
* 市场主体身份代码
*/
@TableField("PRIPID")
@ApiModelProperty("市场主体身份代码")
private String pripid;
/**
* 统一社会信用代码
*/
@TableField("UNISCID")
@ApiModelProperty("统一社会信用代码")
private String uniscid;
/**
* 法定代表人负责人
*/
@TableField("LEGAL")
@ApiModelProperty("法定代表人(负责人)")
private String legal;
/**
* 市场主体类型
*/
@TableField("ENTTYPE")
@ApiModelProperty("市场主体类型")
private String enttype;
/**
* 创建时间
*/
@TableField("CREATE_TIME")
@ApiModelProperty("创建时间")
@JsonFormat(pattern = DateUtils.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("UPDATE_TIME")
@ApiModelProperty("更新时间")
@JsonFormat(pattern = DateUtils.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime updateTime;
/**
* 删除标识0正常1删除
*/
@TableField("FLG_DELETED")
@ApiModelProperty("删除标识0正常1删除")
private String flgDeleted;
}

View File

@ -10,7 +10,7 @@ import java.io.Serializable;
import java.util.List;
/**
*
* 批量吊销接口请求参数
* @author lroyia
* @since 2026/1/12 16:56
**/

View File

@ -0,0 +1,12 @@
package com.chinaweal.aiccs.aiccs.security.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyCaseInfo;
/**
* 执法系统-案件信息 Mapper
* @author lroyia
* @since 2026/2/10
**/
public interface PenaltyCaseInfoMapper extends BaseMapper<PenaltyCaseInfo> {
}

View File

@ -0,0 +1,12 @@
package com.chinaweal.aiccs.aiccs.security.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyEntInfo;
/**
* 执法系统-吊销主体清单 Mapper
* @author lroyia
* @since 2026/2/10
**/
public interface PenaltyEntInfoMapper extends BaseMapper<PenaltyEntInfo> {
}

View File

@ -0,0 +1,12 @@
package com.chinaweal.aiccs.aiccs.security.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyCaseInfo;
/**
* 执法系统-案件信息 service
* @author lroyia
* @since 2026/2/10
**/
public interface IPenaltyCaseInfoService extends IService<PenaltyCaseInfo> {
}

View File

@ -0,0 +1,12 @@
package com.chinaweal.aiccs.aiccs.security.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyEntInfo;
/**
* 执法系统-吊销主体清单 service
* @author lroyia
* @since 2026/2/10
**/
public interface IPenaltyEntInfoService extends IService<PenaltyEntInfo> {
}

View File

@ -0,0 +1,16 @@
package com.chinaweal.aiccs.aiccs.security.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyCaseInfo;
import com.chinaweal.aiccs.aiccs.security.mapper.PenaltyCaseInfoMapper;
import com.chinaweal.aiccs.aiccs.security.service.IPenaltyCaseInfoService;
import org.springframework.stereotype.Service;
/**
* 执法系统-案件信息 service实现类
* @author lroyia
* @since 2026/2/10
**/
@Service
public class PenaltyCaseInfoServiceImpl extends ServiceImpl<PenaltyCaseInfoMapper, PenaltyCaseInfo> implements IPenaltyCaseInfoService {
}

View File

@ -0,0 +1,16 @@
package com.chinaweal.aiccs.aiccs.security.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaweal.aiccs.aiccs.security.entity.PenaltyEntInfo;
import com.chinaweal.aiccs.aiccs.security.mapper.PenaltyEntInfoMapper;
import com.chinaweal.aiccs.aiccs.security.service.IPenaltyEntInfoService;
import org.springframework.stereotype.Service;
/**
* 执法系统-吊销主体清单 service实现类
* @author lroyia
* @since 2026/2/10
**/
@Service
public class PenaltyEntInfoServiceImpl extends ServiceImpl<PenaltyEntInfoMapper, PenaltyEntInfo> implements IPenaltyEntInfoService {
}