1.市场主体除名修复管理功能

This commit is contained in:
cc_caijp 2026-01-12 10:04:47 +08:00
parent 4a20db4a72
commit abd9495e83
17 changed files with 879 additions and 22 deletions

View File

@ -227,4 +227,6 @@ public interface TSTaskListService extends BaseService<TSTaskList> {
IPage<XyxfCqDto> queryxyxfCqList(Page<XyxfCqDto> page, Map<String, Object> paramMap);
List<XyxfCqDto> exportxyxfCqList(Map<String, Object> paramMap);
TSTaskList searchTaskListByBizId(String bizId);
}

View File

@ -42,12 +42,9 @@ import com.chinaweal.aiccs.org.entity.OrgUnits;
import com.chinaweal.aiccs.org.mapper.AicorgMapper;
import com.chinaweal.aiccs.org.mapper.TUsersMapper;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.solr.entity.EBaseInfoSolrBean;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.solr.core.query.Criteria;
import org.springframework.data.solr.core.query.SimpleQuery;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -699,4 +696,9 @@ public class TSTaskListServiceImpl extends BaseServiceImpl<TSTaskListMapper, TST
return data;
}
@Override
public TSTaskList searchTaskListByBizId(String bizId) {
return getOne(new LambdaQueryWrapper<TSTaskList>().eq(TSTaskList::getBizseqid, bizId));
}
}

View File

@ -6,9 +6,11 @@ import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledBizInfo;
import com.chinaweal.aiccs.aiccs.expelled.service.IEntBaseExpelledInfoService;
import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledAuditInfoService;
import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledBizInfoService;
import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledResultInfoService;
import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledRepairInfoService;
import com.chinaweal.aiccs.aiccs.expelled.vo.AuditInfoVo;
import com.chinaweal.aiccs.aiccs.expelled.vo.BizInfoVo;
import com.chinaweal.aiccs.aiccs.expelled.vo.RepairInfoVo;
import com.chinaweal.aiccs.common.base.controller.BaseController;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
@ -22,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -36,7 +39,7 @@ import java.io.IOException;
@RestController
@RequestMapping("/expelled")
@Slf4j
public class EntBaseExpelledInfoController {
public class EntBaseExpelledInfoController extends BaseController {
@Resource
private IEntBaseExpelledInfoService entBaseExpelledInfoService;
@ -45,7 +48,7 @@ public class EntBaseExpelledInfoController {
@Resource
private IExpelledAuditInfoService expelledAuditInfoService;
@Resource
private IExpelledResultInfoService expelledResultInfoService;
private IExpelledRepairInfoService expelledRepairInfoService;
@ApiOperation(value = "1.分页查询市场主体拟除名名单信息", position = 1)
@PostMapping("/list")
@ -133,11 +136,11 @@ public class EntBaseExpelledInfoController {
@ApiOperation(value = "11.新增、更新、删除除名决定管理", position = 11)
@PostMapping("/audit/save")
public RestResult<?> saveAudit(@RequestBody AuditInfoVo query) {
public RestResult<?> saveAudit(@RequestBody AuditInfoVo query, HttpServletRequest request) {
if (CollectionUtils.isEmpty(query.getBizInfos())) {
return RestResult.error(ResultCode.PARAM_IS_BLANK, "请至少勾选一个拟除名市场主体");
}
expelledAuditInfoService.saveAudit(query);
expelledAuditInfoService.saveAudit(query, request);
return RestResult.ok();
}
@ -147,4 +150,22 @@ public class EntBaseExpelledInfoController {
IPage<AuditInfoVo> data = expelledAuditInfoService.listHavedoAuditInfo(query);
return RestResult.ok(data);
}
@ApiOperation(value = "13.启动除名修复业务", position = 13)
@PostMapping("/repair/startBiz")
public RestResult<?> startRepairBiz(@RequestBody AuditInfoVo query, HttpServletRequest request) {
return expelledRepairInfoService.startRepairBiz(query, request);
}
@ApiOperation(value = "14.获取除名修复业务详情", position = 14)
@GetMapping("/repair/getBiz")
public RestResult<?> getRepairBiz(String bizId) {
return expelledRepairInfoService.getRepairBiz(bizId);
}
@ApiOperation(value = "15.除名修复业务审批流程", position = 15)
@PostMapping("/repair/nextBiz")
public RestResult<?> nextRepairBiz(@RequestBody RepairInfoVo repairInfoQuery, HttpServletRequest request) {
return expelledRepairInfoService.nextRepairBiz(repairInfoQuery, request);
}
}

View File

@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 市场主体拟除名名单决定业务表实体类
@ -49,6 +50,27 @@ public class ExpelledAuditInfo extends SuperEntity implements Serializable {
@TableField(value = "AUDIT_NO")
private String auditNo;
/**
* 除名时间
*/
@ApiModelProperty(value = "除名时间")
@TableField(value = "REMOVE_DATE")
private LocalDate removeDate;
/**
* 除名机关编码
*/
@ApiModelProperty(value = "除名机关编码")
@TableField(value = "REMOVE_ORG_NO")
private String removeOrgNo;
/**
* 除名机关名称
*/
@ApiModelProperty(value = "除名机关名称")
@TableField(value = "REMOVE_ORG_NAME")
private String removeOrgName;
/**
* 逻辑删除标识0-未删除1-已删除
*/

View File

@ -0,0 +1,183 @@
package com.chinaweal.aiccs.aiccs.expelled.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.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description: 市场主体除名修复业务表实体类
* @Author: TiAmo-cc
* @Email: 1049976610@qq.com
* @Date: 2026/1/8 10:15
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "EXPELLED_REPAIR_INFO")
@ApiModel(value = "ExpelledRepairInfo对象", description = "市场主体除名修复业务信息")
public class ExpelledRepairInfo extends SuperEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键IDUUID
*/
@ApiModelProperty(value = "主键ID")
@TableId(value = "ID", type = IdType.ASSIGN_UUID)
private String id;
/**
* 市场主体拟除名名单决定业务表主键IDUUID
*/
@ApiModelProperty(value = "市场主体拟除名名单决定业务表主键ID")
@TableField(value = "AUDIT_ID")
private String auditId;
/**
* 市场主体拟除名名单结果表主键IDUUID
*/
@ApiModelProperty(value = "市场主体拟除名名单结果表主键IDUUID")
@TableField(value = "RESULT_ID")
private String resultId;
/**
* 待办表主键IDUUID
*/
@ApiModelProperty(value = "待办表主键ID")
@TableField(value = "BIZ_ID")
private String bizId;
/**
* 受理状态0-不受理1-受理
*/
@ApiModelProperty(value = "受理状态0-不受理1-受理")
@TableField(value = "ACCEPT_STATUS")
private String acceptStatus;
/**
* 当前环节1-受理中2-审核中3-审批中4-通过5-不通过
*/
@ApiModelProperty(value = "当前环节1-受理中2-审核中3-审批中4-通过5-不通过")
@TableField(value = "LINK_TYPE")
private String linkType;
/**
* 申请时间
*/
@ApiModelProperty(value = "申请时间")
@TableField(value = "APPLY_DATE")
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
private LocalDate applyDate;
/**
* 除名原因
*/
@ApiModelProperty(value = "除名原因")
@TableField(value = "REMOVE_REASON")
private String removeReason;
/**
* 除名时间
*/
@ApiModelProperty(value = "除名时间")
@TableField(value = "REMOVE_DATE")
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
private LocalDate removeDate;
/**
* 除名机关编码
*/
@ApiModelProperty(value = "除名机关编码")
@TableField(value = "REMOVE_ORG_NO")
private String removeOrgNo;
/**
* 除名机关名称
*/
@ApiModelProperty(value = "除名机关名称")
@TableField(value = "REMOVE_ORG_NAME")
private String removeOrgName;
/**
* 企业名称
*/
@ApiModelProperty(value = "企业名称")
@TableField(value = "ENT_NAME")
private String entName;
/**
* 统一社会信用代码
*/
@ApiModelProperty(value = "统一社会信用代码")
@TableField(value = "USCC")
private String uscc;
/**
* 法定代表人负责人经营者
*/
@ApiModelProperty(value = "法定代表人(负责人、经营者)")
@TableField(value = "LEREP_NAME")
private String lerepName;
/**
* 住所经营场所
*/
@ApiModelProperty(value = "住所(经营场所)")
@TableField(value = "ADDRESS")
private String address;
/**
* 联系人
*/
@ApiModelProperty(value = "联系人")
@TableField(value = "CONTACT_NAME")
private String contactName;
/**
* 联系电话
*/
@ApiModelProperty(value = "联系电话")
@TableField(value = "CONTACT_PHONE")
private String contactPhone;
/**
* 核实情况
*/
@ApiModelProperty(value = "核实情况")
@TableField(value = "SITUATION")
private String situation;
/**
* 核准日期
*/
@ApiModelProperty(value = "核准日期")
@TableField(value = "APPROVE_DATE")
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
private LocalDate approveDate;
/**
* 除名修复原因
*/
@ApiModelProperty(value = "除名修复原因")
@TableField(value = "REPAIR_REASON")
private String repairReason;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
@TableField(value = "REMARK")
private String remark;
}

View File

@ -76,4 +76,11 @@ public class ExpelledResultInfo extends SuperEntity implements Serializable {
@ApiModelProperty(value = "异议/决定意见")
@TableField(value = "AUDIT_OPINION")
private String auditOpinion;
/**
* 状态10-有效11-修复中99-已完成
*/
@ApiModelProperty(value = "状态10-有效11-修复中99-已完成")
@TableField(value = "STATE")
private String state;
}

View File

@ -0,0 +1,13 @@
package com.chinaweal.aiccs.aiccs.expelled.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledRepairInfo;
/**
* @Description: 市场主体除名修复业务表dao层
* @Author: TiAmo-cc
* @Email: 1049976610@qq.com
* @Date: 2026/1/8 10:23
*/
public interface ExpelledRepairInfoMapper extends BaseMapper<ExpelledRepairInfo> {
}

View File

@ -6,6 +6,8 @@ import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledAuditInfo;
import com.chinaweal.aiccs.aiccs.expelled.vo.AuditInfoVo;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
import javax.servlet.http.HttpServletRequest;
/**
* @Description: 市场主体拟除名名单决定业务表接口类
* @Author: TiAmo-cc
@ -27,7 +29,7 @@ public interface IExpelledAuditInfoService extends IService<ExpelledAuditInfo> {
/**
* 保存市场主体拟除名名单决定业务信息
*/
void saveAudit(AuditInfoVo query);
void saveAudit(AuditInfoVo query, HttpServletRequest request);
/**
* 根据业务号查询市场主体拟除名名单异议/决定业务信息
@ -37,5 +39,5 @@ public interface IExpelledAuditInfoService extends IService<ExpelledAuditInfo> {
/**
* 生成业务号
*/
String generateBizNo();
String generateAuditNo();
}

View File

@ -0,0 +1,45 @@
package com.chinaweal.aiccs.aiccs.expelled.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.aiccs.aiccs.auditing.entity.TSOpinion;
import com.chinaweal.aiccs.aiccs.business.entity.TSTaskList;
import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledRepairInfo;
import com.chinaweal.aiccs.aiccs.expelled.vo.AuditInfoVo;
import com.chinaweal.aiccs.aiccs.expelled.vo.RepairInfoVo;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import javax.servlet.http.HttpServletRequest;
/**
* @Description: 市场主体除名修复业务表接口类
* @Author: TiAmo-cc
* @Email: 1049976610@qq.com
* @Date: 2026/1/8 10:24
*/
public interface IExpelledRepairInfoService extends IService<ExpelledRepairInfo> {
/**
* 启动除名修复业务
*/
RestResult<?> startRepairBiz(AuditInfoVo query, HttpServletRequest request);
TSTaskList startRepairBizAccept(AICUser user, TSTaskList tsTaskList, ExpelledRepairInfo repairInfo);
/**
* 启动除名修复业务
*/
RestResult<?> getRepairBiz(String bizId);
/**
* 除名修复业务审批流程
*/
RestResult<?> nextRepairBiz(RepairInfoVo repairInfoQuery, HttpServletRequest request);
TSTaskList saveRepairAuditProcess(AICUser user, TSTaskList tsTaskList, ExpelledRepairInfo repairInfo, TSOpinion opinion, String nextNodeId, String[] nextPerformerIds, String[] nextPerformerNames);
/**
* 根据业务号查询除名修复业务信息
*/
ExpelledRepairInfo getExpelledRepairInfoByBizId(String bizId);
}

View File

@ -15,11 +15,16 @@ import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledEntInfoService;
import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledResultInfoService;
import com.chinaweal.aiccs.aiccs.expelled.vo.AuditInfoVo;
import com.chinaweal.aiccs.aiccs.expelled.vo.BizInfoVo;
import com.chinaweal.aiccs.common.base.controller.BaseController;
import com.chinaweal.aiccs.utils.DocumentNoGenerator;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.util.UUID;
/**
@ -47,12 +52,12 @@ public class ExpelledAuditInfoServiceImpl extends ServiceImpl<ExpelledAuditInfoM
@Override
public void saveObjection(AuditInfoVo query) {
ExpelledAuditInfo objectionInfo = getById(query.getId());
ExpelledAuditInfo objectionInfo = getById(query.getAuditId());
if (objectionInfo == null) {
objectionInfo = new ExpelledAuditInfo();
objectionInfo.setId(UUID.randomUUID().toString());
objectionInfo.setBizType("1"); // 异议管理
objectionInfo.setAuditNo(generateBizNo());
objectionInfo.setAuditNo(generateAuditNo());
objectionInfo.setIsDelete("0");
}
saveOrUpdate(objectionInfo);
@ -75,13 +80,20 @@ public class ExpelledAuditInfoServiceImpl extends ServiceImpl<ExpelledAuditInfoM
}
@Override
public void saveAudit(AuditInfoVo query) {
ExpelledAuditInfo objectionInfo = getById(query.getId());
public void saveAudit(AuditInfoVo query, HttpServletRequest request) {
AICUser user = BaseController.getLoginUser(request);
if (user == null) {
throw new BusinessException("登录超时,请重新登录");
}
ExpelledAuditInfo objectionInfo = getById(query.getAuditId());
if (objectionInfo == null) {
objectionInfo = new ExpelledAuditInfo();
objectionInfo.setId(UUID.randomUUID().toString());
objectionInfo.setBizType("2"); // 决定管理
objectionInfo.setAuditNo(generateBizNo());
objectionInfo.setAuditNo(generateAuditNo());
objectionInfo.setRemoveDate(LocalDate.now());
objectionInfo.setRemoveOrgNo(user.getRegionID());
objectionInfo.setRemoveOrgName(user.getOrgName());
objectionInfo.setIsDelete("0");
}
saveOrUpdate(objectionInfo);
@ -91,6 +103,7 @@ public class ExpelledAuditInfoServiceImpl extends ServiceImpl<ExpelledAuditInfoM
resultInfo.setAuditId(objectionInfo.getId());
resultInfo.setEntId(bizInfo.getEntId());
resultInfo.setIsRemove("1");
resultInfo.setState("10");
resultInfo.setAuditOpinion(query.getAuditOpinion());
expelledResultInfoService.saveExpelledResultInfo(resultInfo);
// 同步更新除名告知业务申请中的市场主体企业信息的已决定状态
@ -116,12 +129,12 @@ public class ExpelledAuditInfoServiceImpl extends ServiceImpl<ExpelledAuditInfoM
}
@Override
public String generateBizNo() {
public String generateAuditNo() {
String bizNo = DocumentNoGenerator.generateBizNo();
ExpelledAuditInfo auditInfo = getExpelledAuditInfoByAuditNo(bizNo);
if (auditInfo == null) {
return bizNo;
}
return generateBizNo();
return generateAuditNo();
}
}

View File

@ -0,0 +1,303 @@
package com.chinaweal.aiccs.aiccs.expelled.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaweal.aiccs.aiccs.auditing.entity.TSOpinion;
import com.chinaweal.aiccs.aiccs.auditing.service.TSOpinionService;
import com.chinaweal.aiccs.aiccs.business.entity.TSTaskList;
import com.chinaweal.aiccs.aiccs.business.entity.TSTwfProcessNode;
import com.chinaweal.aiccs.aiccs.business.rules.model.SequenceFlowModel;
import com.chinaweal.aiccs.aiccs.business.service.TSTaskListService;
import com.chinaweal.aiccs.aiccs.business.service.WorkFlowService;
import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledRepairInfo;
import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledResultInfo;
import com.chinaweal.aiccs.aiccs.expelled.mapper.ExpelledRepairInfoMapper;
import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledRepairInfoService;
import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledResultInfoService;
import com.chinaweal.aiccs.aiccs.expelled.vo.AuditInfoVo;
import com.chinaweal.aiccs.aiccs.expelled.vo.RepairApproveInfo;
import com.chinaweal.aiccs.aiccs.expelled.vo.RepairInfoVo;
import com.chinaweal.aiccs.common.base.controller.BaseController;
import com.chinaweal.aiccs.common.constant.BaseDataConstant;
import com.chinaweal.aiccs.common.constant.Constant;
import com.chinaweal.aiccs.common.util.FlowUtil;
import com.chinaweal.aiccs.common.util.HandleWorkFlowUtil;
import com.chinaweal.aiccs.common.util.WorkFlowUtil;
import com.chinaweal.aiccs.utils.BeanUtil;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException;
import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
* @Description: 市场主体除名修复业务表实现类
* @Author: TiAmo-cc
* @Email: 1049976610@qq.com
* @Date: 2026/1/8 10:24
*/
@Service
public class ExpelledRepairInfoServiceImpl extends ServiceImpl<ExpelledRepairInfoMapper, ExpelledRepairInfo> implements IExpelledRepairInfoService {
@Resource
private TSTaskListService tsTaskListService;
@Resource
private WorkFlowService workFlowService;
@Resource
private TSOpinionService opinionService;
@Resource
private IExpelledResultInfoService expelledResultInfoService;
@Override
public RestResult<?> startRepairBiz(AuditInfoVo query, HttpServletRequest request) {
AICUser user = BaseController.getLoginUser(request);
if (user == null) {
throw new BusinessException("登录超时,请重新登录");
}
ExpelledResultInfo resultInfo = expelledResultInfoService.getById(query.getResultId());
if (resultInfo == null) {
throw new BusinessException("市场主体拟除名结果信息不存在,请联系管理员");
}
Map<String, Object> resultMap = new HashMap<>();
String bizId = UUID.randomUUID().toString();
// 添加待办启动流程
TSTaskList tsTaskList = new TSTaskList();
tsTaskList.setBizseqid(bizId);
tsTaskList.setBustype(BaseDataConstant.BUSINESS_TYPE_REMOVE_REPAIR); // 除名修复
tsTaskList.setBusname(query.getEntName());
// 保存除名修复数据
ExpelledRepairInfo repairInfo = new ExpelledRepairInfo();
repairInfo.setAuditId(query.getAuditId());
repairInfo.setResultId(query.getResultId());
repairInfo.setBizId(bizId);
repairInfo.setApplyDate(LocalDate.now());
repairInfo.setRemoveReason(query.getAuditOpinion());
repairInfo.setRemoveDate(query.getRemoveDate());
repairInfo.setRemoveOrgNo(query.getRemoveOrgNo());
repairInfo.setRemoveOrgName(query.getRemoveOrgName());
repairInfo.setEntName(query.getEntName());
repairInfo.setUscc(query.getUscc());
repairInfo.setLerepName(query.getLerepName());
repairInfo.setAddress(query.getAddress());
// 保存业务待办信息
tsTaskList = startRepairBizAccept(user, tsTaskList, repairInfo);
List<SequenceFlowModel> nextSequenceFlows = workFlowService.findNextSequenceFlowList(tsTaskList.getWorkflowid());
TSTwfProcessNode currentNode = workFlowService.findCurrentNode(tsTaskList.getWorkflowid());
String opinionType = BaseDataConstant.getOpinionTypeByWorkFlowNode(currentNode.getCurrentnode());
if (opinionType == null) {
opinionType = "1";
}
// 更新除名结果表信息
resultInfo.setState("11"); // 修复中
expelledResultInfoService.saveOrUpdate(resultInfo);
resultMap.put("repairInfo", repairInfo);
resultMap.put("taskId", tsTaskList.getTasklistid());
resultMap.put("bizId", bizId);
resultMap.put("nextSequenceFlows", nextSequenceFlows);
resultMap.put("currentNode", currentNode.getCurrentnode());
resultMap.put("currentNodeName", WorkFlowUtil.getNodeName(currentNode.getCurrentnode()));
resultMap.put("currentLinkTypeID", opinionType);
return RestResult.ok(resultMap);
}
@Override
public TSTaskList startRepairBizAccept(AICUser user, TSTaskList tsTaskList, ExpelledRepairInfo repairInfo) {
if (StringUtils.isBlank(tsTaskList.getTasklistid())) {
repairInfo.setId(UUID.randomUUID().toString());
repairInfo.setLinkType("1");
saveOrUpdate(repairInfo);
String definedname = FlowUtil.EXPTLISTWORKFLOW; // 除名修复,这类参考使用企业经营异常名录流程模板,应该是可以的吧
// 新待办
tsTaskList = HandleWorkFlowUtil.createTaskList(tsTaskList, user);
// 开始工作流
tsTaskListService.startWorkFlow(tsTaskList, user, definedname);
}
return tsTaskList;
}
@Override
public RestResult<?> getRepairBiz(String bizId) {
Map<String, Object> resultMap = new HashMap<>();
// 除名修复业务表
ExpelledRepairInfo repairInfo = getExpelledRepairInfoByBizId(bizId);
if (repairInfo == null) {
throw new BusinessException("除名修复业务信息不存在,请联系管理员");
}
resultMap.put("repairInfo", repairInfo);
// 除名业务待办
TSTaskList tsTaskList = tsTaskListService.searchTaskListByBizId(bizId);
if (tsTaskList == null) {
throw new BusinessException("除名修复业务待办信息不存在,请联系管理员");
}
resultMap.put("tsTaskList", new TSTaskList().setTasklistid(tsTaskList.getTasklistid()).setWorkflowid(tsTaskList.getWorkflowid()));
// 获取历史审批意见
LambdaQueryWrapper<TSOpinion> opinionWrapper = new LambdaQueryWrapper<>();
opinionWrapper.eq(TSOpinion::getBizseq, bizId)
.ne(TSOpinion::getOpiniontype, "55")
.orderByAsc(TSOpinion::getHandledate);
List<TSOpinion> tsOpinions = opinionService.list(opinionWrapper);
resultMap.put("historyOpinions", tsOpinions);
return RestResult.ok(resultMap);
}
@Override
public RestResult<?> nextRepairBiz(RepairInfoVo repairInfoQuery, HttpServletRequest request) {
AICUser user = BaseController.getLoginUser(request);
if (user == null) {
throw new BusinessException("登录超时,请重新登录");
}
String bizId = repairInfoQuery.getBizId();
String taskId = repairInfoQuery.getTaskId();
String nextNodeId = repairInfoQuery.getNextNodeId();
String nextPerformerIds = repairInfoQuery.getNextPerformerIds();
String nextPerformerNames = repairInfoQuery.getNextPerformerNames();
RepairApproveInfo repairApproveInfo = repairInfoQuery.getRepairApproveInfo();
if (StringUtils.isBlank(bizId)) {
throw new BusinessException("bizId参数缺失");
}
if (StringUtils.isBlank(taskId)) {
throw new BusinessException("taskId参数缺失");
}
if (StringUtils.isBlank(nextNodeId)) {
throw new BusinessException("nextNodeId参数缺失");
}
// if (!FlowUtil.EXPTLISTWORKFLOW_ENDEXPTLIST.equals(nextNodeId)) {
// if (StringUtils.isBlank(nextPerformerIds)) {
// throw new BusinessException("nextPerformerIds参数缺失");
// }
// if (StringUtils.isBlank(nextPerformerNames)) {
// throw new BusinessException("nextPerformerNames参数缺失");
// }
// }
if (repairApproveInfo == null) {
throw new BusinessException("repairApproveInfo参数缺失");
}
// if (StringUtils.equals("handleExptlist", nextNodeId)
// || StringUtils.equals("overFinish", nextNodeId)) {
// if (repairInfo != null
// && StringUtils.isNotBlank(repairInfo.getBizId())) {
// // TODO
// }
// }
Map<String, Object> resultMap = new HashMap<>();
ExpelledRepairInfo repairInfo = getExpelledRepairInfoByBizId(bizId);
if (repairInfo == null) {
throw new BusinessException("除名修复业务信息不存在,请联系管理员");
}
// 更新除名修复业务表
if (repairApproveInfo != null && StringUtils.isNotBlank(repairApproveInfo.getBizId())) {
TSTaskList tsTaskList = tsTaskListService.selectByTasklistID(taskId);
TSTwfProcessNode processNode = workFlowService.findCurrentNode(tsTaskList.getWorkflowid());
// 下一步为审核
if (StringUtils.equals(FlowUtil.EXPTLISTWORKFLOW_HANDLEEXPTLIST, nextNodeId)) {
if (StringUtils.equals(FlowUtil.EXPTLISTWORKFLOW_EXPTLISTENTER, processNode.getCurrentnode())) {
BeanUtil.copyBean(repairApproveInfo, repairInfo);
}
}
if (StringUtils.isBlank(nextPerformerIds)) {
processNode = workFlowService.findCurrentNode(tsTaskList.getWorkflowid());
int order = WorkFlowUtil.checkNextOrder(processNode.getCurrentnode(), nextNodeId);
// 通过order判断为回退还是前进 >0 前进
if (order > 0) {
LambdaQueryWrapper<TSOpinion> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(TSOpinion::getWorkflowid, tsTaskList.getWorkflowid())
.eq(TSOpinion::getOpiniontype, "0") // 经办为0
.orderByDesc(TSOpinion::getLauptime);
List<TSOpinion> list = opinionService.list(wrapper);
if (CollectionUtils.isEmpty(list)) {
return RestResult.error(ResultCode.DATA_NONE, "审批意见不存在,请联系管理员");
}
nextPerformerIds = list.get(0).getHandlerid();
nextPerformerNames = list.get(0).getHandler();
}
// 回退时获取经办人
if (order < 0) {
// 获取经办人
LambdaQueryWrapper<TSOpinion> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(TSOpinion::getWorkflowid, tsTaskList.getWorkflowid())
.eq(TSOpinion::getOpiniontype, '0')
.orderByDesc(TSOpinion::getLauptime);
List<TSOpinion> list = opinionService.list(wrapper);
if (CollectionUtils.isEmpty(list)) {
return RestResult.error(ResultCode.DATA_NONE, "审批意见不存在,请联系管理员");
}
nextPerformerIds = list.get(0).getHandlerid();
nextPerformerNames = list.get(0).getHandler();
}
}
// 发送
String[] ids = StringUtils.split(nextPerformerIds, Constant.COMMA);
String[] names = StringUtils.split(nextPerformerNames, Constant.COMMA);
try {
tsTaskList = saveRepairAuditProcess(user, tsTaskList, repairInfo, repairInfoQuery.getOpinionQuery(), nextNodeId, ids, names);
if (ids.length == 1 && StringUtils.equals(user.getPrimaryKey(), ids[0])) {
resultMap.put("bizId", bizId);
resultMap.put("taskId", taskId);
resultMap.put("nextNodeId", nextNodeId);
resultMap.put("workFlowId", tsTaskList.getWorkflowid());
}
} catch (Exception e) {
log.error("除名修复业务审批出错:", e);
throw new BusinessException("除名修复业务审批出错");
}
}
return RestResult.ok(resultMap);
}
@Override
public TSTaskList saveRepairAuditProcess(AICUser user, TSTaskList tsTaskList, ExpelledRepairInfo repairInfo, TSOpinion opinion, String nextNodeId, String[] nextPerformerIds, String[] nextPerformerNames) {
try {
if (StringUtils.isNotBlank(tsTaskList.getAcceptgroupid())) {
workFlowService.claimGroup(tsTaskList.getWorkflowid(), user.getPrimaryKey());
}
tsTaskListService.updateWorkFlow(user, opinion, tsTaskList, nextNodeId, nextPerformerIds, nextPerformerNames);
if (FlowUtil.EXPTLISTWORKFLOW_HANDLEEXPTLIST.equals(nextNodeId)) { // 审批
repairInfo.setLinkType("3"); // 审批流程中把状态设置成"审批中"
saveOrUpdate(repairInfo);
}
LocalDate now = LocalDate.now();
ExpelledResultInfo resultInfo = expelledResultInfoService.getById(repairInfo.getResultId());
if (FlowUtil.EXPTLISTWORKFLOW_ENDEXPTLIST.equals(nextNodeId)) { // 完结时
repairInfo.setApproveDate(now); // 核准时间
repairInfo.setLinkType("4"); // 1-受理中2-审核中3-审批中4-通过5-不通过
saveOrUpdate(repairInfo);
resultInfo.setState("99"); // 修复完成
}
if (FlowUtil.EXPTLISTWORKFLOW_OVEREXPTLIST.equals(nextNodeId)) {
repairInfo.setApproveDate(now); // 核准时间
repairInfo.setLinkType("5"); // 1-受理中2-审核中3-审批中4-通过5-不通过
saveOrUpdate(repairInfo);
resultInfo.setState("10"); // 恢复有效
}
if (FlowUtil.EXPTLISTWORKFLOW_OVERFINISH.equals(nextNodeId)) {
repairInfo.setApproveDate(now); // 核准时间
repairInfo.setLinkType("5"); // 1-受理中2-审核中3-审批中4-通过5-不通过
saveOrUpdate(repairInfo);
resultInfo.setState("10"); // 恢复有效
}
expelledResultInfoService.saveOrUpdate(resultInfo);
} catch (Exception e) {
log.error("除名修复流程审核出错", e);
throw new BusinessException("除名修复流程审核出错");
}
return tsTaskList;
}
@Override
public ExpelledRepairInfo getExpelledRepairInfoByBizId(String bizId) {
return getOne(new LambdaQueryWrapper<ExpelledRepairInfo>().eq(ExpelledRepairInfo::getBizId, bizId));
}
}

View File

@ -1,8 +1,11 @@
package com.chinaweal.aiccs.aiccs.expelled.vo;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;
@ -13,13 +16,15 @@ import java.util.List;
* @Date: 2026/1/7 11:39
*/
@Data
public class AuditInfoVo {
public class AuditInfoVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键IDUUID
* 市场主体拟除名名单决定业务表主键ID
*/
@ApiModelProperty(value = "主键ID")
private String id;
@ApiModelProperty(value = "市场主体拟除名名单决定业务表主键ID")
private String auditId;
/**
* 业务类型1-异议管理2-决定管理
@ -33,6 +38,12 @@ public class AuditInfoVo {
@ApiModelProperty(value = "业务号")
private String auditNo;
/**
* 市场主体拟除名名单结果表主键IDUUID
*/
@ApiModelProperty(value = "市场主体拟除名名单结果表主键IDUUID")
private String resultId;
/**
* 是否有异议0-1-
*/
@ -57,6 +68,25 @@ public class AuditInfoVo {
@ApiModelProperty(value = "异议/决定意见")
private String auditOpinion;
/**
* 除名时间
*/
@ApiModelProperty(value = "除名时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
private LocalDate removeDate;
/**
* 除名机关编码
*/
@ApiModelProperty(value = "除名机关编码")
private String removeOrgNo;
/**
* 除名机关名称
*/
@ApiModelProperty(value = "除名机关名称")
private String removeOrgName;
/**
* 拟除名名单企业信息主键ID
*/
@ -115,8 +145,15 @@ public class AuditInfoVo {
* 送达时间
*/
@ApiModelProperty(value = "送达时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
private LocalDate sendTime;
/**
* 状态10-有效11-修复中99-已完成
*/
@ApiModelProperty(value = "状态10-有效11-修复中99-已完成")
private String state;
/**
* 拟除名异议告知业务信息
*/

View File

@ -0,0 +1,153 @@
package com.chinaweal.aiccs.aiccs.expelled.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Description:
* @Author: TiAmo-cc
* @Email: 1049976610@qq.com
* @Date: 2026/1/9 10:09
*/
@Data
public class RepairApproveInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键IDUUID
*/
@ApiModelProperty(value = "主键ID")
@TableId(value = "ID", type = IdType.ASSIGN_UUID)
private String id;
/**
* 市场主体拟除名名单决定业务表主键IDUUID
*/
@ApiModelProperty(value = "市场主体拟除名名单决定业务表主键ID")
private String auditId;
/**
* 市场主体拟除名名单结果表主键IDUUID
*/
@ApiModelProperty(value = "市场主体拟除名名单结果表主键IDUUID")
private String resultId;
/**
* 待办表主键IDUUID
*/
@ApiModelProperty(value = "待办表主键ID")
private String bizId;
/**
* 受理状态0-不受理1-受理
*/
@ApiModelProperty(value = "受理状态0-不受理1-受理")
private String acceptStatus;
/**
* 当前环节1-受理中2-审核中3-审批中4-通过5-不通过
*/
@ApiModelProperty(value = "当前环节1-受理中2-审核中3-审批中4-通过5-不通过")
private String linkType;
/**
* 申请时间
*/
@ApiModelProperty(value = "申请时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
private LocalDate applyDate;
/**
* 除名原因
*/
@ApiModelProperty(value = "除名原因")
private String removeReason;
/**
* 除名时间
*/
@ApiModelProperty(value = "除名时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
private LocalDate removeDate;
/**
* 除名机关编码
*/
@ApiModelProperty(value = "除名机关编码")
private String removeOrgNo;
/**
* 除名机关名称
*/
@ApiModelProperty(value = "除名机关名称")
private String removeOrgName;
/**
* 企业名称
*/
@ApiModelProperty(value = "企业名称")
private String entName;
/**
* 统一社会信用代码
*/
@ApiModelProperty(value = "统一社会信用代码")
private String uscc;
/**
* 法定代表人负责人经营者
*/
@ApiModelProperty(value = "法定代表人(负责人、经营者)")
private String lerepName;
/**
* 住所经营场所
*/
@ApiModelProperty(value = "住所(经营场所)")
private String address;
/**
* 联系人
*/
@ApiModelProperty(value = "联系人")
private String contactName;
/**
* 联系电话
*/
@ApiModelProperty(value = "联系电话")
private String contactPhone;
/**
* 核实情况
*/
@ApiModelProperty(value = "核实情况")
private String situation;
/**
* 核准日期
*/
@ApiModelProperty(value = "核准日期")
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
private LocalDate approveDate;
/**
* 除名修复原因
*/
@ApiModelProperty(value = "除名修复原因")
private String repairReason;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,40 @@
package com.chinaweal.aiccs.aiccs.expelled.vo;
import com.chinaweal.aiccs.aiccs.auditing.entity.TSOpinion;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Description:
* @Author: TiAmo-cc
* @Email: 1049976610@qq.com
* @Date: 2026/1/8 14:57
*/
@Data
public class RepairInfoVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "除名修复业务主键ID")
private String bizId;
@ApiModelProperty(value = "待办表主键ID")
private String taskId;
@ApiModelProperty(value = "下一环节节点名")
private String nextNodeId;
@ApiModelProperty(value = "下一环节操作人ID")
private String nextPerformerIds;
@ApiModelProperty(value = "下一环节操作人姓名")
private String nextPerformerNames;
@ApiModelProperty(value = "除名修复业务信息")
private RepairApproveInfo repairApproveInfo;
@ApiModelProperty(value = "审批意见")
private TSOpinion opinionQuery;
}

View File

@ -92,6 +92,9 @@ public class BaseDataConstant {
public static final String EXPTLIST_TYPE_FARMER_OBJECTION = "19";//列入农合异常名录异议
public static final String BUSTNESS_TYPE_REM_ABN_OBJECTION = "20"; // 移出异常名录异议
public static final String BUSINESS_TYPE_FORCE_DEREGISTER = "50";// 拟强制注销
public static final String BUSINESS_TYPE_REMOVE_REPAIR = "1001"; // 除名修复
// 地址批量列异
public static final String EXPTLIST_TYPE_ADDRESSBATCH_ENTEREXCP = "71";//企业地址批量列异
public static final String EXPTLIST_TYPE_ADDRESSBATCH_INDIVIDUAL_TAG = "72";//个体户地址批量列异

View File

@ -4,12 +4,16 @@
<select id="listHavedoAuditInfo" resultType="com.chinaweal.aiccs.aiccs.expelled.vo.AuditInfoVo">
SELECT
i.ID id,
i.ID auditId,
i.AUDIT_NO auditNo,
r.ID resultId,
r.IS_OBJECTION isObjection,
r.OPINION opinion,
r.IS_REMOVE isRemove,
r.AUDIT_OPINION auditOpinion,
i.REMOVE_DATE removeDate,
i.REMOVE_ORG_NO removeOrgNo,
i.REMOVE_ORG_NAME removeOrgName,
e.ID entId,
e.BIZ_ID bizId,
e.EXPELLED_ID expelledId,
@ -38,6 +42,9 @@
<if test="map.uscc != null and map.uscc != ''">
AND b.USCC = #{map.uscc}
</if>
<if test="map.state != null and map.state != ''">
AND r.STATE = #{map.state}
</if>
</where>
</select>
</mapper>

View File

@ -0,0 +1,4 @@
<?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.chinaweal.aiccs.aiccs.expelled.mapper.ExpelledRepairInfoMapper">
</mapper>