diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/impl/TSBizSpeListServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/impl/TSBizSpeListServiceImpl.java index 06aac95..f395364 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/impl/TSBizSpeListServiceImpl.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/impl/TSBizSpeListServiceImpl.java @@ -1041,13 +1041,8 @@ public class TSBizSpeListServiceImpl extends ServiceImpl + * + *

+ * + * @author quebh + * @since 2023-05-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "xr_activity") +@ApiModel(value = "XrActivity对象", description = "") +public class XrActivity extends SuperEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 流程记录 activity_id + */ + @ApiModelProperty(value = "流程记录 activity_id") + @TableId(value = "activity_id", type = IdType.ASSIGN_UUID) + private String activityId; + + /** + * 业务待办主键 task_ID + */ + @ApiModelProperty(value = "业务待办主键 task_ID") + @TableField("task_id") + private String taskId; + + /** + * 环节类型link_Type + * handle:经办、 + * examine:审核、 + * approve:审批、 + * end:正常结束流程、 + * nullify:经办结束流程 + * examineFinish:审核不同意,结束流程 + * approveFinish:审批不同意,结束流程 + * clueReturn: 回退流程 + */ + @ApiModelProperty(value = "环节类型link_Type") + @TableField("link_type") + private String linkType; + + /** + * 环节名称 + */ + @ApiModelProperty(value = "环节名称") + @TableField("link_name") + private String linkName; + + /** + * 环节状态 link_Status 0-环节完成,1-环节正在进行 + */ + @ApiModelProperty(value = "环节状态 link_Status 0-环节完成,1-环节正在进行") + @TableField("link_status") + private String linkStatus; + + /** + * 环节状态名称 ”0“环节完成,”1“环节正在进行 link_Status_name + */ + @ApiModelProperty(value = "环节状态名称 ”0“环节完成,”1“环节正在进行 link_Status_name") + @TableField("link_status_name") + private String linkStatusName; + + /** + * 用户id user_id + */ + @ApiModelProperty(value = "用户id user_id") + @TableField("user_id") + private String userId; + + /** + * 部门id + */ + @ApiModelProperty(value = "部门id ") + @TableField("dep_id") + private String depId; + + /** + * 待办条件 格式:1.部门code:权限标识(例如440100:taskAuth) 2.userId + */ + @ApiModelProperty(value = "待办条件 格式:1.部门code:权限标识(例如440100:taskAuth) 2.userId") + @TableField("ident") + private String ident; + + /** + * 逻辑删除 ”0“ 正常 ”1“已删除 + */ + @ApiModelProperty(value = "逻辑删除 ”0“ 正常 ”1“已删除") + @TableField("status") + private String status; + + /** + * 开始时间 begin_time + */ + @ApiModelProperty(value = "开始时间 begin_time") + @JsonSerialize(using = LocalDateTimeStringSerializer.class) + @TableField("begin_time") + private LocalDateTime beginTime; + + /** + * 结束时间 end_time + */ + @ApiModelProperty(value = "结束时间 end_time") + @JsonSerialize(using = LocalDateTimeStringSerializer.class) + @TableField("end_time") + private LocalDateTime endTime; + + /** + * 操作人 open_Name + */ + @ApiModelProperty(value = "操作人 open_Name") + @TableField("open_name") + private String openName; + + /** + * 是否可操作(0不可操作) + */ + @ApiModelProperty(value = "是否可操作(0不可操作)") + @TableField("is_sign") + private String isSign; + + /** + * 操作人id open_id + */ + @ApiModelProperty(value = "操作人 open_id") + @TableField("open_id") + private String openId; +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrOpinion.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrOpinion.java new file mode 100644 index 0000000..d8d94b1 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrOpinion.java @@ -0,0 +1,121 @@ +package com.chinaweal.aiccs.aiccs.business.entity; + +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; + +/** + *

+ * 监管共用审批意见表 + *

+ * + * @author quebh + * @since 2023-05-06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "xr_opinion") +@ApiModel(value = "XrOpinion对象", description = "监管共用审批意见表") +public class XrOpinion extends SuperEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 意见编号 + */ + @ApiModelProperty(value = "意见编号") + @TableId + @TableField("opinion_id") + private String opinionId; + + /** + * 流程记录id + */ + @ApiModelProperty(value = "流程记录id") + @TableField("activity_id") + private String activityId; + + /** + * 待办id + */ + @ApiModelProperty(value = "待办id") + @TableField("task_list_id") + private String taskListId; + /** + * 意见类型(审批部门) + */ + @ApiModelProperty(value = "意见类型(审批部门) handle 经办、examine审核、approve审批、end通过") + @TableField("opinion_type") + private String opinionType; + + /** + * 承办人 + */ + @ApiModelProperty(value = "承办人") + @TableField("handler") + private String handler; + + /** + * 承办人ID + */ + @ApiModelProperty(value = "承办人ID") + @TableField("handler_id") + private String handlerId; + + /** + * 审批意见 + */ + @ApiModelProperty(value = "审批意见") + @TableField("opinion_content") + private String opinionContent; + + /** + * 承办时间 + */ + @ApiModelProperty(value = "承办时间") + @JsonSerialize(using = LocalDateTimeStringSerializer.class) + @TableField("handel_date") + private LocalDate handelDate; + + /** + * 送审(退卷)日期 + */ + @ApiModelProperty(value = "送审(退卷)日期") + @JsonSerialize(using = LocalDateTimeStringSerializer.class) + @TableField("trial_date") + private LocalDate trialDate; + + /** + * 是否同意 "0"不同意"1"同意"2"回退"3"转办 + */ + @ApiModelProperty(value = "是否同意") + @TableField("agree") + private String agree; + + /** + * 地区代码 + */ + @ApiModelProperty(value = "地区代码") + @TableField("area_code") + private String areaCode; + + + + @ApiModelProperty(value = "行政处罚列入需要字段:上级是否已审批:0不是,1是") + @TableField("approve") + private String approve; + + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrTaskAnnex.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrTaskAnnex.java new file mode 100644 index 0000000..2ad710d --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrTaskAnnex.java @@ -0,0 +1,87 @@ +package com.chinaweal.aiccs.aiccs.business.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * 待办附录表 + *

+ * + * @author qbh + * @since 2024-03-08 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "xr_task_annex") +@ApiModel(value="XrTaskAnnex对象", description="待办附录表") +public class XrTaskAnnex extends SuperEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ApiModelProperty(value = "主键Id") + @TableId(value = "task_annex_id", type = IdType.ASSIGN_UUID) + private String taskAnnexId; + + /** + * 待办主键 + */ + @ApiModelProperty(value = "待办主键") + private String taskLikeId; + + /** + * 主体ID + */ + @ApiModelProperty(value = "主体ID") + private String pripId; + + /** + * 主体名称 + */ + @ApiModelProperty(value = "主体名称") + private String entName; + + /** + * 注册号 + */ + @ApiModelProperty(value = "注册号") + private String regNo; + + /** + * 统一社会信用代码 + */ + @ApiModelProperty(value = "统一社会信用代码") + private String uniscid; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + private String inv; + + /** + * 证件类型 + */ + @ApiModelProperty(value = "证件类型") + private String cerType; + + /** + * 证件号码 + */ + @ApiModelProperty(value = "证件号码") + private String cerNo; + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrTaskList.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrTaskList.java new file mode 100644 index 0000000..4de0fcb --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/XrTaskList.java @@ -0,0 +1,207 @@ +package com.chinaweal.aiccs.aiccs.business.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.constant.BaseDataConstant; +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.LocalDateTime; + +/** + *

+ * 待办列表 + *

+ * + * @author quebh + * @since 2023-05-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "xr_task_list") +@ApiModel(value = "XrTaskList对象", description = "待办列表") +public class XrTaskList extends SuperEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 待办主键 + */ + @ApiModelProperty(value = "待办主键") + @TableId(value = "task_like_id", type = IdType.ASSIGN_UUID) + private String taskLikeId; + + /** + * 流程主键 + */ + @ApiModelProperty(value = "流程主键") + @TableField("work_flow_id") + private String workFlowId; + + /** + * 业务主键 + */ + @ApiModelProperty(value = "业务主键") + @TableField("biz_seq_no") + private String bizSeqNo; + + /** + * 签收者ID + */ + @ApiModelProperty(value = "签收者ID") + @TableField("sign_user_id") + private String signUserId; + + /** + * 发送机构ID + */ + @ApiModelProperty(value = "发送机构ID") + @TableField("sender_org_id") + private String senderOrgId; + + /** + * 下一步签收用户ID + */ + @ApiModelProperty(value = "下一步签收用户ID") + @TableField("sender_user_id") + private String senderUserId; + + /** + * 下一步签收用户机构ID + */ + @ApiModelProperty(value = "下一步签收用户机构ID") + @TableField("send_to_org_id") + private String sendToOrgId; + + /** + * 受理号 + */ + @ApiModelProperty(value = "受理号") + @TableField("accept_no") + private String acceptNo; + + /** + * 业务名称 + */ + @ApiModelProperty(value = "业务名称") + @TableField("bus_name") + private String busName; + + /** + * 签收/受理时间 + */ + @ApiModelProperty(value = "签收/受理时间") + @JsonSerialize(using = LocalDateTimeStringSerializer.class) + @TableField("sign_time") + private LocalDateTime signTime; + + /** + * 业务类型 + * @see BaseDataConstant + */ + @ApiModelProperty(value = "业务类型") + @TableField("bus_type") + private String busType; + + /** + * 业务状态 + * @see BaseDataConstant#BUSINESS_STATUS_TRANSACT 等等 + */ + @ApiModelProperty(value = "业务状态") + @TableField("bus_status") + private String busStatus; + + /** + * 环节名称 + */ + @ApiModelProperty(value = "环节名称") + @TableField("link_name") + private String linkName; + + /** + * 是否签收 + */ + @ApiModelProperty(value = "是否签收") + @TableField("is_signon") + private String isSignon; + + /** + * 发送时间 + */ + @ApiModelProperty(value = "发送时间") + @JsonSerialize(using = LocalDateTimeStringSerializer.class) + @TableField("sender_time") + private LocalDateTime senderTime; + + /** + * 发起机构代码 + */ + @ApiModelProperty(value = "发起机构代码") + @TableField("apply_org_id") + private String applyOrgId; + + /** + * 地区代码 + */ + @ApiModelProperty(value = "地区代码") + @TableField("area_code") + private String areaCode; + + /** + * 是否超过工作时限’1‘是’0‘否 + */ + @ApiModelProperty(value = "是否超过工作时限’1‘是’0‘否") + @TableField("is_deadline") + private String isDeadline; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + @TableField("remarks") + private String remarks; + + + /** + * 来源 + * @see BaseDataConstant#SOURCE_PC 等等 + */ + @ApiModelProperty(value = "来源") + @TableField("source") + private String source; + + /** + * 主体类型 company:企业;individual:个体户;farmer:农专 + */ + @ApiModelProperty(value = "主体类型") + @TableField(exist = false) + private String type; + + @ApiModelProperty(value = "转办机关") + @TableField(exist = false) + private String nextOrgId; + + /** + * 数据来源,0或null:系统生成的数据,1:年报系统,2:佛山年报,3:免申即享 + */ + @ApiModelProperty(value = "数据来源") + @TableField("origin") + private String origin; + + /** + * 年报信用修复传输标记,nA传输到内网,nB传输去外网 + */ + @ApiModelProperty(value = "年报信用修复传输标记") + @TableField("SynFlag") + private String SynFlag; +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/dto/ApprovalFormDto.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/dto/ApprovalFormDto.java new file mode 100644 index 0000000..6433971 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/dto/ApprovalFormDto.java @@ -0,0 +1,61 @@ +package com.chinaweal.aiccs.aiccs.business.entity.dto; + +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; + +@Data +@ApiModel(value = "审批表数据") +public class ApprovalFormDto { + + @ApiModelProperty(value = "名称") + private String areaName; + + @ApiModelProperty(value = "企业名称") + private String entName; + + @ApiModelProperty(value = "统一社会信用代码") + private String uniscId; + + @ApiModelProperty(value = "注册号") + private String regNo; + + @ApiModelProperty(value = "列异原因") + private String speCause; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "列异时间") + private LocalDate abnTime; + + @ApiModelProperty(value = "列入严重违法理由") + private String lostCreditExplain; + + @ApiModelProperty(value = "审批信息") + private List opinion; + + @ApiModelProperty(value = "信誉是否修复数据") + private Map repairMap; + + @ApiModelProperty(value = "列入决定书") + private Map incAbnDecisionMap; + + @ApiModelProperty(value = "移出决定书") + private Map remAbnDecisionMap; + + @ApiModelProperty(value = "姓名") + private String inv; + + @ApiModelProperty(value = "证件类型") + private String cerType; + + @ApiModelProperty(value = "证件号码") + private String cerNo; + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/dto/XrTaskListDto.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/dto/XrTaskListDto.java new file mode 100644 index 0000000..e64d027 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/dto/XrTaskListDto.java @@ -0,0 +1,66 @@ +package com.chinaweal.aiccs.aiccs.business.entity.dto; + +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 待办列表DTO + * @author ymc + * @since 2024年03月22日 16:17 + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "待办列表DTO") +public class XrTaskListDto extends XrTaskList { + + /** + * 统一社会信用代码 + */ + @ApiModelProperty(value = "统一社会信用代码") + private String searchUscc; + + /** + * 查询企业名称(主体名称) + */ + @ApiModelProperty("查询企业名称(主体名称)") + private String entName; + + /** + * 待办开始时间 + */ + @ApiModelProperty(value = "待办开始时间") + private String createTimeStart; + + /** + * 待办结束时间 + */ + @ApiModelProperty(value = "待办结束时间") + private String createTimeEnd; + + /** + * 受理编号 + */ + @ApiModelProperty(value = "受理编号") + private String acceptNo; + + /** + * 业务名称 + */ + @ApiModelProperty(value = "业务名称") + private String busName; + + /** + * 业务类型 + */ + @ApiModelProperty(value = "业务类型") + private String busType; + + /** + * 业务状态 + */ + @ApiModelProperty(value = "业务状态") + private String busStatus; +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/vo/XrTaskListVo.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/vo/XrTaskListVo.java new file mode 100644 index 0000000..5d4613a --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/entity/vo/XrTaskListVo.java @@ -0,0 +1,35 @@ +package com.chinaweal.aiccs.aiccs.business.entity.vo; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("启动待办返回结果") +@Data +public class XrTaskListVo { + + @ApiModelProperty(value = "待办id") + private String taskListId; + + @ApiModelProperty(value = "业务编号") + private String bizSeqId; + + @ApiModelProperty(value = "流程id") + private String workflowId; + + @ApiModelProperty(value = "主体身份代码") + private String pripId; + + public XrTaskListVo(String taskListId, String bizSeqId, String workflowId, String pripId) { + this.taskListId = taskListId; + this.bizSeqId = bizSeqId; + this.workflowId = workflowId; + this.pripId = pripId; + } + public XrTaskListVo(String taskListId, String bizSeqId, String workflowId) { + this.taskListId = taskListId; + this.bizSeqId = bizSeqId; + this.workflowId = workflowId; + } +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrActivityMapper.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrActivityMapper.java new file mode 100644 index 0000000..5ddc066 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrActivityMapper.java @@ -0,0 +1,16 @@ +package com.chinaweal.aiccs.aiccs.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chinaweal.aiccs.aiccs.business.entity.XrActivity; + +/** + *

+ * Mapper 接口 + *

+ * + * @author quebh + * @since 2023-05-04 + */ +public interface XrActivityMapper extends BaseMapper { + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrOpinionMapper.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrOpinionMapper.java new file mode 100644 index 0000000..5faef20 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrOpinionMapper.java @@ -0,0 +1,16 @@ +package com.chinaweal.aiccs.aiccs.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; + +/** + *

+ * 监管共用审批意见表 Mapper 接口 + *

+ * + * @author quebh + * @since 2023-05-06 + */ +public interface XrOpinionMapper extends BaseMapper { + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrTaskAnnexMapper.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrTaskAnnexMapper.java new file mode 100644 index 0000000..c2e3723 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrTaskAnnexMapper.java @@ -0,0 +1,16 @@ +package com.chinaweal.aiccs.aiccs.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskAnnex; + +/** + *

+ * 待办附录表 Mapper 接口 + *

+ * + * @author qbh + * @since 2024-03-08 + */ +public interface XrTaskAnnexMapper extends BaseMapper { + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrTaskListMapper.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrTaskListMapper.java new file mode 100644 index 0000000..7dbcc26 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/mapper/XrTaskListMapper.java @@ -0,0 +1,18 @@ +package com.chinaweal.aiccs.aiccs.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList; + +import java.util.List; + +/** + *

+ * 待办列表 Mapper 接口 + *

+ * + * @author quebh + * @since 2023-05-04 + */ +public interface XrTaskListMapper extends BaseMapper { + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/rules/init/FlowUtil.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/rules/init/FlowUtil.java new file mode 100644 index 0000000..6adebac --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/rules/init/FlowUtil.java @@ -0,0 +1,59 @@ +package com.chinaweal.aiccs.aiccs.business.rules.init; + +import com.chinaweal.aiccs.common.constant.CommonConstants; + +import java.util.HashMap; +import java.util.Map; + +/** + * 流程常量 + * Created by xiaot on 2017/4/25. + */ +public abstract class FlowUtil { + + private static final Map LINK_TYPE_MAP = new HashMap<>(); + + //流程模板 + public static final String COMMON_WORK_FLOW = "commonWorkFlow"; //通用流程模板 + public static final String SUCCESSFUL_FLOW_ONE = "seriousWorkFlowOne"; //二级审批严重违法 + public static final String SUCCESSFUL_FLOW_TWO = "seriousWorkFlowTwo"; //一级严重违法 + public static final String SERIOUS_REM_WORK_FLOW = "seriousRemWorkFlow"; //严重违法移出流程模板 + public static final String ABNORMAL_INCLUSION_WORK_FLOW = "abnormalInclusionWorkFlow"; //经营异常列入和异议流程模板 + public static final String ABNORMAL_REM_WORK_FLOW = "abnormalRemWorkFlow"; //经营异常移出流程模板 + public static final String ABNORMAL_DISSENT_WORK_FLOW = "abnormalDissentWorkFlow"; //经营异常名录异议流程模板 + public static final String PUNISH_REM_WORK_FLOW = "punishRemWorkFlow"; // 行政处罚提前停止公示流程模板 + public static final String REVOKE_REM_WORK_FLOW = "revokeRemWorkFlow"; // 行政处罚依法变更撤销流程模板 + public static final String UNLICENSED_OPERATE_WORK_FLOW = "unlicensedOperateWorkFlow"; // 无照经营管理流程模板 + public static final String FORCE_DEREGISTER_WORK_FLOW = "forceDeregisterWorkFlow"; // 拟强制注销管理流程模板 + + + //统一环节节点 + private static final String LINK_START = "0"; //启动中 + private static final String LINK_ACCEPT = "1"; //受理中 + private static final String LINK_CHECK = "2"; //审查中 + private static final String LINK_APPROVE = "3"; //审批中 + private static final String LINK_END = "9"; //办结 + + + /** + * 加载流程模板中的节点-名称映射 + * @author ymc + * @since 2024年3月7日 10:29 + * @return + */ + public static void initLinkMap() { + InitRules.getRuleModels().forEach((ruleKey, ruleModel) -> ruleModel.getNodeModelMap().forEach((nodeKey, nodeModel) -> LINK_TYPE_MAP.put(ruleKey + CommonConstants.UNDERLINE + nodeKey, nodeModel.getDescription()))); + } + + /** + * 获取流程模板环节中文名称 + * @author ymc + * @since 2024年3月7日 10:46 + * @param definedName + * @param linkType + * @return + */ + public static String getLinkTypeName(String definedName, String linkType) { + return LINK_TYPE_MAP.get(definedName + CommonConstants.UNDERLINE + linkType); + } +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrActivityService.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrActivityService.java new file mode 100644 index 0000000..88abbff --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrActivityService.java @@ -0,0 +1,107 @@ +package com.chinaweal.aiccs.aiccs.business.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.chinaweal.aiccs.aiccs.business.entity.XrActivity; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList; +import com.chinaweal.aiccs.aiccs.business.rules.model.NodeModel; +import com.chinaweal.aiccs.aiccs.business.rules.model.SequenceFlowModel; +import com.chinaweal.aicorg.model.AICUser; +import com.chinaweal.aicorg.pojo.AICPermission; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author quebh + * @since 2023-05-04 + */ +public interface IXrActivityService extends IService { + + + /** + * 开启待办 + * + * @param taskListModel + * @param user + * @param definitionName + * @return + */ + @Deprecated + String startWorkFlow(XrTaskList taskListModel, AICUser user, String definitionName); + + /** + * 处理待办 + * + * @param taskLikeId + * @param nextNodeID + * @param nextPerformerIds + * @param user + * @return + */ + @Deprecated + String processWork(String taskLikeId, String nextNodeID, String[] nextPerformerIds, AICUser user); + + /** + * 通过流程模板开启待办 + * + * @param xrTaskList + * @param userList + * @param ident + * @return + * @author ymc + * @since 2024年3月7日 11:11 + */ + String startWorkFlowByTemplate(XrTaskList xrTaskList, List userList, String ident); + + /** + * 通过流程模板推进流程 + * + * @param taskListModel 待办信息 + * @param userList 下一环节用户列表 + * @param nextNodeID 下一环节节点 + * @param opinion 环节意见 + * @param ident + * @return 环节名称 + * @author ymc + * @since 2024年3月7日 11:11 + */ + String processWorkByTemplate(XrTaskList taskListModel, List userList, String nextNodeID, XrOpinion opinion, String ident); + + /** + * 查找当前节点的下一步路线 + * + * @param taskId 待办主键 + * @return + * @author ymc + * @since 2024年3月6日 19:44 + */ + List findNextSequenceFlowList(String taskId); + + /** + * 获取当前节点 + * + * @param taskId + * @return 环节信息 + * @author ymc + * @since 2024年3月7日 13:41 + */ + NodeModel findCurrentNode(String taskId); + + /** + * 查找经办人环节 + * + * @param taskId + * @param linkType + * @return + * @author ymc + * @since 2024年3月8日 14:54 + */ + XrActivity findOperator(String taskId, String linkType); + + boolean checkPermissionsAndNodeID(Map aicPermissions,String currentNodeID,String nextNodeID,String inWorkFlow); +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrOpinionService.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrOpinionService.java new file mode 100644 index 0000000..2ea3727 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrOpinionService.java @@ -0,0 +1,29 @@ +package com.chinaweal.aiccs.aiccs.business.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; + +/** + *

+ * 监管共用审批意见表 服务类 + *

+ * + * @author quebh + * @since 2023-05-06 + */ +public interface IXrOpinionService extends IService { + + + /** + * 新增监管共用审批意见表 + */ + XrOpinion saveXrOpinion(XrOpinion xrOpinion); + + /** + * 分页查询监管共用审批意见表 + */ + IPage listXrOpinion(BaseQuery query); + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrTaskAnnexService.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrTaskAnnexService.java new file mode 100644 index 0000000..657721b --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrTaskAnnexService.java @@ -0,0 +1,60 @@ +package com.chinaweal.aiccs.aiccs.business.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.chinaweal.aiccs.aiccs.abnormal.entity.EBaseinfo; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskAnnex; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.PersonSpeSaveIvdDto; +import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; + +import java.util.List; + +/** + *

+ * 待办附录表 服务类 + *

+ * + * @author qbh + * @since 2024-03-08 + */ +public interface IXrTaskAnnexService extends IService { + + + /** + * 新增待办附录表 + */ + XrTaskAnnex saveXrTaskAnnex(XrTaskAnnex xrTaskAnnex); + + /** + * 分页查询待办附录表 + */ + IPage listXrTaskAnnex(BaseQuery query); + + /** + * 通过主键ID集合和任务ID批量新增待办附录表 + * + * @param pripIdList + * @param taskId + */ + void saveTaskAnnexByPripIdListOnTaskId(List pripIdList, String taskId); + + /** + * 通过主体信息和任务ID批量新增待办附录表 + * + * @param eBaseinfo + * @param taskId + */ + void saveTaskAnnexByeBaseInfoOnTaskId(EBaseinfo eBaseinfo, String taskId); + + /** + * 通过主体Id和任务ID批量新增待办附录表 + * @param pripId + * @param taskId + */ + void saveTaskAnnexByPripIdOnTaskId(String pripId, String taskId); + + /** + * 通过主键ID集合和任务ID批量新增待办附录表(自然人列严) + */ + void saveTaskAnnexByPersonListOnTaskId(List personList, String taskId); +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrTaskListService.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrTaskListService.java new file mode 100644 index 0000000..fef4986 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/IXrTaskListService.java @@ -0,0 +1,48 @@ +package com.chinaweal.aiccs.aiccs.business.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.PersonSpeSaveIvdDto; +import com.chinaweal.aicorg.model.AICUser; + +import java.util.List; + +/** + *

+ * 待办列表 服务类 + *

+ * + * @author quebh + * @since 2023-05-04 + */ +public interface IXrTaskListService extends IService { + + /** + * 通用流程控制 + * + * @param opinion 处理意见 + * @param xrTaskList 当前业务 + * @param nextNodeID 下一步流程 + * @param nextPerformerIds 下一步操办人 + * @param permission 权限标识 + */ + void updateWorkFlow(XrOpinion opinion, XrTaskList xrTaskList, String nextNodeID, String[] nextPerformerIds, String permission); + + /** + * 通用流程控制 + * + * @param opinion 处理意见 + * @param xrTaskList 当前业务 + * @param nextNodeID 下一步流程 + * @param userList 下一步操办人 + * @param permission 权限标识 + */ + void updateWorkFlow(XrOpinion opinion, XrTaskList xrTaskList, String nextNodeID, List userList, String permission); + + /** + * 自然人列严流程启动 + */ + void startWorkFlowPerson(XrTaskList xrTaskList, String[] nextPerformerIds, String permission, List personList); + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrActivityServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrActivityServiceImpl.java new file mode 100644 index 0000000..3fd6d95 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrActivityServiceImpl.java @@ -0,0 +1,400 @@ +package com.chinaweal.aiccs.aiccs.business.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chinaweal.aiccs.aiccs.business.entity.XrActivity; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList; +import com.chinaweal.aiccs.aiccs.business.mapper.XrActivityMapper; +import com.chinaweal.aiccs.aiccs.business.rules.init.FlowUtil; +import com.chinaweal.aiccs.aiccs.business.rules.init.InitRules; +import com.chinaweal.aiccs.aiccs.business.rules.model.NodeModel; +import com.chinaweal.aiccs.aiccs.business.rules.model.RuleModel; +import com.chinaweal.aiccs.aiccs.business.rules.model.SequenceFlowModel; +import com.chinaweal.aiccs.aiccs.business.service.IXrActivityService; +import com.chinaweal.aiccs.aiccs.business.service.IXrOpinionService; +import com.chinaweal.aiccs.aiccs.business.service.IXrTaskListService; +import com.chinaweal.aiccs.common.constant.FlowConstant; +import com.chinaweal.aicorg.model.AICUser; +import com.chinaweal.aicorg.pojo.AICPermission; +import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; +import com.chinaweal.youfool.framework.sso.util.SSOUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author quebh + * @since 2023-05-04 + */ +@Service +@Slf4j +public class XrActivityServiceImpl extends ServiceImpl implements IXrActivityService { + + @Resource + @Lazy + private IXrTaskListService iXrTaskListService; + @Resource + private IXrOpinionService iXrOpinionService; + + /** + * 流程规则校验 + * + * @param definedName + * @param fromNodeID + * @param nextNodeID + * @return + * @author ymc + * @since 2024年3月7日 11:42 + */ + private static void checkXMLRule(String definedName, String fromNodeID, String nextNodeID) { + if (fromNodeID == null) { + throw new BusinessException("开始节点为空,请检查。"); + } + if (nextNodeID == null) { + throw new BusinessException("下一节点为空,请检查。"); + } + RuleModel ruleModel = InitRules.getRuleModels().get(definedName); + if (ruleModel == null) { + throw new BusinessException("找不到规则定义" + definedName + ",请检查。"); + } + Map nodeModelMap = ruleModel.getNodeModelMap(); + NodeModel fromNode = nodeModelMap.get(fromNodeID); + if (fromNode == null) { + throw new BusinessException("开始节点" + fromNodeID + "不存在,请检查。"); + } + NodeModel toNode = nodeModelMap.get(nextNodeID); + if (toNode == null) { + throw new BusinessException("下一节点" + nextNodeID + "不存在,请检查。"); + } + Map sequenceFlowModelMap = ruleModel.getSequenceFlowModelMap(); + if (sequenceFlowModelMap.get(fromNodeID + "_" + nextNodeID) == null) { + throw new BusinessException(fromNodeID + "_" + nextNodeID + "流程线不存在,请检查。"); + } + } + + @Override + public String startWorkFlow(XrTaskList taskListModel, AICUser user, String definitionName) { + //工作流规则 + RuleModel ruleModel = InitRules.getRuleModels().get(definitionName); + if (ruleModel == null) { + throw new BusinessException(definitionName + "不存在于流程模版中,请检查!"); + } + + // linkName + String linkType = ruleModel.getStartnodeid(); + +// taskListModel.setAcceptNo(user.getRegionID().substring(0, 6) + uuidUtil.getCurAcceptNo()); + //因xr_id_maker容易被锁,临时用新的生成规则生成受理编号 + LocalDateTime now = LocalDateTime.now(); // 获取当前日期和时间 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); // 定义格式化模式 + String formattedDate = now.format(formatter); // 将日期格式化为字符串 + taskListModel.setAcceptNo("7"+ formattedDate + UUID.randomUUID().toString().replaceAll("-", "").substring(0, 8)); + + XrActivity xrActivity = new XrActivity(); + xrActivity.setActivityId(UUID.randomUUID().toString()); + xrActivity.setTaskId(taskListModel.getTaskLikeId()); + xrActivity.setLinkStatus(FlowConstant.LINK_STATUS_ONE); + xrActivity.setLinkType(ruleModel.getStartnodeid()); + xrActivity.setLinkName(null); + xrActivity.setUserId(user.getPrimaryKey()); + xrActivity.setDepId(user.getRegionID()); + xrActivity.setStatus("0"); + xrActivity.setOpenName(user.getName()); + xrActivity.setOpenId(user.getPrimaryKey()); + save(xrActivity); + + taskListModel.setWorkFlowId(xrActivity.getActivityId()); + taskListModel.setLinkName(null); + iXrTaskListService.updateById(taskListModel); + return xrActivity.getActivityId(); + } + + @Override + public String processWork(String taskLikeId, String nextNodeID, String[] nextPerformerIds, AICUser user) { + LambdaQueryWrapper xrActivityQueryWrapper = new LambdaQueryWrapper<>(); + xrActivityQueryWrapper.eq(XrActivity::getTaskId, taskLikeId) + .eq(XrActivity::getLinkStatus, "1"); + List list = list(xrActivityQueryWrapper); + + for (XrActivity xrActivity : list) { + xrActivity.setLinkStatus("0"); + xrActivity.setOpenName(user.getName()); + xrActivity.setOpenId(user.getPrimaryKey()); + updateById(xrActivity); + } + if ("clueReturn".equals(nextNodeID)) { + XrActivity xrActivity1 = list.get(0); + XrActivity xrActivity = new XrActivity(); + xrActivity.setActivityId(UUID.randomUUID().toString()); + xrActivity.setTaskId(taskLikeId); + if (StringUtils.equals(FlowConstant.LINK_TYPE_EXAMINE, xrActivity1.getLinkType())) { +// xrActivity.setLinkName(FlowConstant.LINK_TYPE_MAP.get(FlowConstant.LINK_TYPE_HANDLE)); + xrActivity.setLinkType(FlowConstant.LINK_TYPE_HANDLE); + nextNodeID = FlowConstant.LINK_TYPE_HANDLE; + } else if (StringUtils.equals(FlowConstant.LINK_TYPE_APPROVE, xrActivity1.getLinkType())) { +// xrActivity.setLinkName(FlowConstant.LINK_TYPE_MAP.get(FlowConstant.LINK_TYPE_EXAMINE)); + xrActivity.setLinkType(FlowConstant.LINK_TYPE_EXAMINE); + nextNodeID = FlowConstant.LINK_TYPE_EXAMINE; + } + xrActivity.setLinkType(nextNodeID); + xrActivity.setLinkStatus("1"); +// xrActivity.setLinkName(FlowConstant.LINK_TYPE_MAP.get(nextNodeID)); + xrActivity.setUserId(list.get(0).getOpenId()); + xrActivity.setDepId(user.getRegionID()); + xrActivity.setStatus("0"); + xrActivity.setOpenName(user.getName()); + xrActivity.setOpenId(user.getPrimaryKey()); + save(xrActivity); + if (nextPerformerIds.length != 0) { + nextPerformerIds[0] = list.get(0).getOpenId(); + } + } else { + if (nextPerformerIds == null) { + XrActivity xrActivity = new XrActivity(); + xrActivity.setActivityId(UUID.randomUUID().toString()); + xrActivity.setTaskId(taskLikeId); + xrActivity.setLinkType(nextNodeID); + xrActivity.setLinkStatus("1"); +// xrActivity.setLinkName(FlowConstant.LINK_TYPE_MAP.get(nextNodeID)); + xrActivity.setUserId(user.getPrimaryKey()); + xrActivity.setDepId(user.getRegionID()); + xrActivity.setStatus("0"); + xrActivity.setOpenName(user.getName()); + xrActivity.setOpenId(user.getPrimaryKey()); + save(xrActivity); + } else { + for (String nextPerformerId : nextPerformerIds) { + XrActivity xrActivity = new XrActivity(); + xrActivity.setActivityId(UUID.randomUUID().toString()); + xrActivity.setTaskId(taskLikeId); + xrActivity.setLinkType(nextNodeID); + xrActivity.setLinkStatus("1"); +// xrActivity.setLinkName(FlowConstant.LINK_TYPE_MAP.get(nextNodeID)); + xrActivity.setUserId(nextPerformerId); + xrActivity.setDepId(user.getRegionID()); + xrActivity.setStatus("0"); + xrActivity.setOpenName(user.getName()); + xrActivity.setOpenId(user.getPrimaryKey()); + save(xrActivity); + } + } + + } + return nextNodeID; + } + + @Override + public String startWorkFlowByTemplate(XrTaskList taskListModel, List userList, String ident) { + //工作流规则 + String definitionName = taskListModel.getWorkFlowId(); + RuleModel ruleModel = InitRules.getRuleModels().get(definitionName); + if (ruleModel == null) { + throw new BusinessException(definitionName + "不存在于流程模版中,请检查!"); + } + log.info("开启{}-{}流程", ruleModel.getDefinedname(), ruleModel.getDescription()); + + String linkType = ruleModel.getStartnodeid(); + + if (StringUtils.isNotBlank(ident)) { + XrActivity xrActivity = new XrActivity(); + xrActivity.setDepId(taskListModel.getApplyOrgId()) + .setTaskId(taskListModel.getTaskLikeId()) + .setLinkType(linkType) + .setLinkStatus("1") + .setLinkName(FlowUtil.getLinkTypeName(definitionName, linkType)) + .setStatus("0") + .setIdent(ident); + save(xrActivity); + } else { + for (AICUser nextUser : userList) { + XrActivity xrActivity = new XrActivity(); + xrActivity.setUserId(nextUser.getPrimaryKey()) + .setDepId(nextUser.getRegionID()) + .setTaskId(taskListModel.getTaskLikeId()) + .setLinkType(linkType) + .setLinkStatus("1") + .setLinkName(FlowUtil.getLinkTypeName(definitionName, linkType)) + .setStatus("0") + .setIdent(nextUser.getPrimaryKey()); + save(xrActivity); + } + } + taskListModel.setLinkName(FlowUtil.getLinkTypeName(definitionName, linkType)); + return FlowUtil.getLinkTypeName(definitionName, linkType); + } + + @Override + public String processWorkByTemplate(XrTaskList taskListModel, List userList, String nextNodeID, XrOpinion opinion, String ident) { + AICUser user = SSOUtil.getUser(); + String activityId = null; + + // 流程规则校验 + NodeModel currentNodeModel = findCurrentNode(taskListModel.getTaskLikeId()); + checkXMLRule(taskListModel.getWorkFlowId(), currentNodeModel.getId(), nextNodeID); + + // 获取当前环节信息 + List activityList = list( new LambdaQueryWrapper().eq(XrActivity::getTaskId, taskListModel.getTaskLikeId()) + .eq(XrActivity::getLinkStatus, "1")); + if (CollUtil.isEmpty(activityList)) + throw new BusinessException("流程节点为空,taskId:" + taskListModel.getTaskLikeId()); + + // 处理当前环节信息 + if (activityList.size() == 1) { + XrActivity xrActivity = activityList.get(0); + activityId = xrActivity.getActivityId(); + xrActivity.setLinkStatus("0"); + xrActivity.setOpenName(user.getName()); + xrActivity.setOpenId(user.getPrimaryKey()); + updateById(xrActivity); + } else { + Set delIds = new HashSet<>(); + for (XrActivity xrActivity : activityList) { + if (user.getPrimaryKey().equals(xrActivity.getUserId())) { + activityId = xrActivity.getActivityId(); + xrActivity.setLinkStatus("0"); + xrActivity.setOpenName(user.getName()); + xrActivity.setOpenId(user.getPrimaryKey()); + updateById(xrActivity); + } else { + delIds.add(xrActivity.getActivityId()); + } + if (!delIds.isEmpty()) this.removeByIds(delIds); + } + } + + // 添加下一环节信息 + RuleModel ruleModel = InitRules.getRuleModels().get(taskListModel.getWorkFlowId()); + NodeModel nodeModel = ruleModel.getNodeModelMap().get(nextNodeID); + if (nodeModel.isEnd()) { + XrActivity nextActivity = new XrActivity(); + nextActivity.setUserId(user.getPrimaryKey()) + .setDepId(user.getRegionID()) + .setOpenName(user.getName()) + .setOpenId(user.getPrimaryKey()) + .setTaskId(taskListModel.getTaskLikeId()) + .setLinkType(nodeModel.getId()) + .setLinkStatus("1") + .setLinkName(nodeModel.getDescription()) + .setStatus("0") + .setIdent(user.getPrimaryKey()); + save(nextActivity); + } else { + if (StringUtils.isNotBlank(ident)) { + XrActivity nextActivity = new XrActivity(); + nextActivity.setDepId(taskListModel.getApplyOrgId()) + .setTaskId(taskListModel.getTaskLikeId()) + .setLinkType(nodeModel.getId()) + .setLinkStatus("1") + .setLinkName(nodeModel.getDescription()) + .setStatus("0") + .setIdent(ident); + save(nextActivity); + } else { + for (AICUser nextUser : userList) { + XrActivity nextActivity = new XrActivity(); + nextActivity.setUserId(nextUser.getPrimaryKey()) + .setDepId(nextUser.getRegionID()) + .setTaskId(taskListModel.getTaskLikeId()) + .setLinkType(nodeModel.getId()) + .setLinkStatus("1") + .setLinkName(nodeModel.getDescription()) + .setStatus("0") + .setIdent(nextUser.getPrimaryKey()); + save(nextActivity); + } + } + } + + if (opinion != null) iXrOpinionService.save(opinion.setActivityId(activityId)); + return nodeModel.getDescription(); + } + + @Override + public List findNextSequenceFlowList(String taskId) { + XrTaskList xrTaskList = iXrTaskListService.getById(taskId); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(XrActivity::getTaskId, taskId) + .eq(XrActivity::getLinkStatus, "1"); + XrActivity xrActivity = getOne(queryWrapper, false); + String linkType = xrActivity.getLinkType(); + List nextSequenceFlowList = null; + RuleModel ruleModel = InitRules.getRuleModels().get(xrTaskList.getWorkFlowId()); + if (!ruleModel.getEndnodeids().contains(linkType)) { + nextSequenceFlowList = new ArrayList<>(); + NodeModel nodeModel = ruleModel.getNodeModelMap().get(linkType); + for (SequenceFlowModel sequenceFlowModel : ruleModel.getSequenceFlowModelMap().values()) { + String[] ids = StringUtils.split(sequenceFlowModel.getId(), "_"); + if (StringUtils.equals(ids[0], nodeModel.getId())) { + nextSequenceFlowList.add(sequenceFlowModel); + } + } + } + return nextSequenceFlowList; + } + + @Override + public NodeModel findCurrentNode(String taskId) { + XrTaskList taskListModel = iXrTaskListService.getById(taskId); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(XrActivity::getTaskId, taskId) + .eq(XrActivity::getLinkStatus, "1"); + XrActivity xrActivity = getOne(queryWrapper, false); + String linkType = xrActivity.getLinkType(); + RuleModel ruleModel = InitRules.getRuleModels().get(taskListModel.getWorkFlowId()); + return ruleModel.getNodeModelMap().get(linkType); + } + + @Override + public XrActivity findOperator(String taskId, String linkType) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(XrActivity::getTaskId, taskId) + .eq(XrActivity::getLinkStatus, "0") + .eq(XrActivity::getLinkType, linkType) + .orderByAsc(XrActivity::getCreateTime); + return getOne(queryWrapper, false); + } + + @Override + public boolean checkPermissionsAndNodeID(Map aicPermissions, String currentNodeID,String nextNodeID,String inWorkFlow) { + //需要排除判断的环节 + Set nextNodeIDs = new HashSet<>(); + nextNodeIDs.add("nullify"); //作废 + nextNodeIDs.add("replenish"); //补正材料 + nextNodeIDs.add("transfer"); //转办 + if(StringUtils.equals(inWorkFlow,"abnormal")){ + nextNodeIDs.add("examine"); //审核 + } else if(StringUtils.equals(inWorkFlow,"seriousillegal")){ + nextNodeIDs.add("law"); //执法 + } + //根据下一环节判断需要排除判断的环节 + if (nextNodeIDs.contains(nextNodeID)) { + //若需要排除判断的环节,直接返回true + return true; + } + + //针对当前环节是回退的,进行特殊处理 + if (currentNodeID.contains("Return")) { + currentNodeID = currentNodeID.replace("Return", ""); + } + + // 将首字母改为大写 + currentNodeID = currentNodeID.substring(0, 1).toUpperCase() + currentNodeID.substring(1); + //将节点改为权限名 + currentNodeID = "xr" + currentNodeID; + //判断当前环节是否有权限 + return aicPermissions.containsKey(currentNodeID); + } +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrOpinionServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrOpinionServiceImpl.java new file mode 100644 index 0000000..f8e229c --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrOpinionServiceImpl.java @@ -0,0 +1,41 @@ +package com.chinaweal.aiccs.aiccs.business.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import com.chinaweal.aiccs.aiccs.business.mapper.XrOpinionMapper; +import com.chinaweal.aiccs.aiccs.business.service.IXrOpinionService; +import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; +import org.springframework.stereotype.Service; + +/** + *

+ * 监管共用审批意见表 服务实现类 + *

+ * + * @author quebh + * @since 2023-05-06 + */ +@Service +public class XrOpinionServiceImpl extends ServiceImpl implements IXrOpinionService { + + @Override + public XrOpinion saveXrOpinion(XrOpinion xrOpinion) { + save(xrOpinion); + return xrOpinion; + } + + @Override + public IPage listXrOpinion(BaseQuery query) { + XrOpinion entity = query.getEntity(XrOpinion.class); + Page page = query.getPage(); + + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + + return page(page, lambdaQueryWrapper); + } + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrTaskAnnexServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrTaskAnnexServiceImpl.java new file mode 100644 index 0000000..4f7f33c --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrTaskAnnexServiceImpl.java @@ -0,0 +1,112 @@ +package com.chinaweal.aiccs.aiccs.business.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chinaweal.aiccs.aiccs.abnormal.entity.EBaseinfo; +import com.chinaweal.aiccs.aiccs.abnormal.service.EBaseinfoService; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskAnnex; +import com.chinaweal.aiccs.aiccs.business.mapper.XrTaskAnnexMapper; +import com.chinaweal.aiccs.aiccs.business.service.IXrTaskAnnexService; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.PersonSpeSaveIvdDto; +import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; +import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; +import com.google.common.collect.Lists; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 待办附录表 服务实现类 + *

+ * + * @author qbh + * @since 2024-03-08 + */ +@Service +public class XrTaskAnnexServiceImpl extends ServiceImpl implements IXrTaskAnnexService { + + @Resource + private EBaseinfoService ieBaseinfoService; + @Override + public XrTaskAnnex saveXrTaskAnnex(XrTaskAnnex xrTaskAnnex) { + save(xrTaskAnnex); + return xrTaskAnnex; + } + + @Override + public IPage listXrTaskAnnex(BaseQuery query) { + XrTaskAnnex entity = query.getEntity(XrTaskAnnex.class); + Page page = query.getPage(); + + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + + return page(page, lambdaQueryWrapper); + } + + @Override + public void saveTaskAnnexByPripIdListOnTaskId(List pripIdList, String taskId) { + if (pripIdList == null || pripIdList.size() == 0){ + throw new RuntimeException("主体id为空!"); + } +// List list = ieBaseinfoService.list(new LambdaQueryWrapper().in(EBaseinfo::getPripId, pripIdList)); + List> newPripIdList = Lists.partition(pripIdList,400); + List list = new ArrayList<>(); + for (List pripids : newPripIdList) { + list.addAll(ieBaseinfoService.listByIds(pripids)); + } +// if (list.size() != pripIdList.size()){ + if (list.size() == 0){ + throw new BusinessException("未查询到数据!"); + } + list.forEach(item -> { + XrTaskAnnex entity = new XrTaskAnnex(); + entity.setPripId(item.getPripid()); + entity.setTaskLikeId(taskId); + entity.setEntName(item.getEntname()); + entity.setRegNo(item.getRegno()); + entity.setUniscid(item.getUniscid()); + saveXrTaskAnnex(entity); + }); + } + + @Override + public void saveTaskAnnexByeBaseInfoOnTaskId(EBaseinfo eBaseinfo, String taskId) { + XrTaskAnnex entity = new XrTaskAnnex(); + entity.setPripId(eBaseinfo.getPripid()); + entity.setTaskLikeId(taskId); + entity.setEntName(eBaseinfo.getEntname()); + entity.setRegNo(eBaseinfo.getRegno()); + entity.setUniscid(eBaseinfo.getUniscid()); + saveXrTaskAnnex(entity); + } + + @Override + public void saveTaskAnnexByPripIdOnTaskId(String pripId, String taskId) { + EBaseinfo baseinfo = ieBaseinfoService.getById(pripId); + if (baseinfo == null){ + throw new RuntimeException("未查询到数据!"); + } + saveTaskAnnexByeBaseInfoOnTaskId(baseinfo, taskId); + } + + @Override + public void saveTaskAnnexByPersonListOnTaskId(List personList, String taskId) { + if (personList == null || personList.size() == 0){ + throw new RuntimeException("自然人信息为空!"); + } + personList.forEach(item -> { + XrTaskAnnex entity = new XrTaskAnnex(); + entity.setTaskLikeId(taskId); + entity.setInv(item.getInv()); + entity.setCerType(item.getCerType()); + entity.setCerNo(item.getCerNo()); + saveXrTaskAnnex(entity); + }); + } +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrTaskListServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrTaskListServiceImpl.java new file mode 100644 index 0000000..47496e3 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/business/service/impl/XrTaskListServiceImpl.java @@ -0,0 +1,137 @@ +package com.chinaweal.aiccs.aiccs.business.service.impl; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chinaweal.aiccs.aiccs.business.entity.XrActivity; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList; +import com.chinaweal.aiccs.aiccs.business.mapper.XrTaskListMapper; +import com.chinaweal.aiccs.aiccs.business.rules.model.NodeModel; +import com.chinaweal.aiccs.aiccs.business.service.IXrActivityService; +import com.chinaweal.aiccs.aiccs.business.service.IXrTaskAnnexService; +import com.chinaweal.aiccs.aiccs.business.service.IXrTaskListService; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.PersonSpeSaveIvdDto; +import com.chinaweal.aiccs.common.constant.BaseDataConstant; +import com.chinaweal.aiccs.common.constant.FlowConstant; +import com.chinaweal.aiccs.common.util.HandleWorkFlowUtil; +import com.chinaweal.aiccs.common.util.StringUtils; +import com.chinaweal.aiccs.org.entity.TUsers; +import com.chinaweal.aiccs.org.service.TUsersService; +import com.chinaweal.aicorg.model.AICUser; +import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; +import com.chinaweal.youfool.framework.sso.util.SSOUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

+ * 待办列表 服务实现类 + *

+ * + * @author quebh + * @since 2023-05-04 + */ + +@Service +public class XrTaskListServiceImpl extends ServiceImpl implements IXrTaskListService { + + @Resource + private IXrActivityService iXrActivityService; + @Resource + private TUsersService itUsersService; + @Resource + private IXrTaskAnnexService iXrTaskAnnexService; + + + @Override + public void updateWorkFlow(XrOpinion opinion, XrTaskList xrTaskList, String nextNodeID, String[] nextPerformerIds, String permission) { + List userList = new ArrayList<>(); + + if (nextPerformerIds.length > 0) { + List tUsersList = itUsersService.listByUserIds(nextPerformerIds); + tUsersList.forEach(user -> userList.add(itUsersService.toAICUser(user))); + } + updateWorkFlow(opinion, xrTaskList, nextNodeID, userList, permission); + } + + @Override + public void updateWorkFlow(XrOpinion opinion, XrTaskList xrTaskList, String nextNodeID, List userList, String permission) { + AICUser user = SSOUtil.getUser(); + + // 添加意见 TODO:后续交由opinionService处理 + if (opinion != null) { + opinion.setHandlerId(user.getPrimaryKey()); + opinion.setHandler(user.getName()); + opinion.setTaskListId(xrTaskList.getTaskLikeId()); + opinion.setOpinionType(xrTaskList.getLinkName() == null ? "经办" : xrTaskList.getLinkName()); + opinion.setOpinionId(UUID.randomUUID().toString()); + if (opinion.getHandelDate() == null) { + opinion.setHandelDate(LocalDate.now()); + } + if (StringUtils.endsWith(nextNodeID, FlowConstant.LINK_TYPE_RETURN)) { //回退 + opinion.setAgree("2"); + } else if (nextNodeID.equals(FlowConstant.LINK_TYPE_EXAMINE) || nextNodeID.equals(FlowConstant.LINK_TYPE_APPROVE) || nextNodeID.equals(FlowConstant.LINK_TYPE_END)) { //通过 + opinion.setAgree("0"); + } else if (nextNodeID.equals(FlowConstant.LINK_TYPE_EXAMINE_FINISH) || nextNodeID.equals(FlowConstant.LINK_TYPE_APPROVE_FINISH) || nextNodeID.equals(FlowConstant.LINK_TYPE_NULLIFY)) { //不通过 + opinion.setAgree("1"); + } + } + + // 回退查找人员 + if (StringUtils.endsWith(nextNodeID, FlowConstant.LINK_TYPE_RETURN)){ + XrActivity operator = iXrActivityService.findOperator(xrTaskList.getTaskLikeId(), nextNodeID.substring(0, nextNodeID.indexOf(FlowConstant.LINK_TYPE_RETURN))); + userList = ListUtil.toList((itUsersService.getUserById(operator.getOpenId()))); + } + String ident = StringUtils.isNotBlank(permission) ? (StringUtils.isNotBlank(xrTaskList.getNextOrgId()) ? xrTaskList.getNextOrgId() : xrTaskList.getAreaCode()) + ":" + permission : null; + String linkName = iXrActivityService.processWorkByTemplate(xrTaskList, userList, nextNodeID, opinion, ident); + xrTaskList.setLinkName(linkName); + if (StringUtils.isNotEmpty(ident)) { + if(userList.size()>0){ + AICUser signUser = userList.get(0); + xrTaskList.setSenderUserId(signUser.getPrimaryKey()); + xrTaskList.setSendToOrgId(signUser.getOrgID()); + } + } + xrTaskList.setSignUserId(user.getPrimaryKey()); + xrTaskList.setSenderOrgId(user.getOrgID()); + xrTaskList.setSignTime(LocalDateTime.now()); + NodeModel nodeModel = iXrActivityService.findCurrentNode(xrTaskList.getTaskLikeId()); + if (nodeModel != null && nodeModel.isEnd()) { + xrTaskList.setBusStatus(BaseDataConstant.BUSINESS_STATUS_END); + } + updateById(xrTaskList); + } + + @Override + public void startWorkFlowPerson(XrTaskList xrTaskList, String[] nextPerformerIds, String permission, List personList) { + List userList = new ArrayList<>(); + if (nextPerformerIds.length > 0) { + List tUsersList = itUsersService.listByUserIds(nextPerformerIds); + tUsersList.forEach(user -> userList.add(itUsersService.toAICUser(user))); + } + if (StringUtils.isBlank(xrTaskList.getApplyOrgId())) { + throw new BusinessException("业务逻辑错误,发起机构为空"); + } + String ident = StringUtils.isNotBlank(permission) ? xrTaskList.getApplyOrgId() + ":" + permission : null; + HandleWorkFlowUtil.createXrTaskList(xrTaskList, SSOUtil.getUser()); + xrTaskList.setTaskLikeId(IdUtil.randomUUID()); + String linkName = iXrActivityService.startWorkFlowByTemplate(xrTaskList, userList, ident); + //因xr_id_maker容易被锁,临时用新的生成规则生成受理编号 + LocalDateTime now = LocalDateTime.now(); // 获取当前日期和时间 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); // 定义格式化模式 + String formattedDate = now.format(formatter); // 将日期格式化为字符串 + xrTaskList.setAcceptNo("7"+ formattedDate + UUID.randomUUID().toString().replaceAll("-", "").substring(0, 8)); + + xrTaskList.setLinkName(linkName); + save(xrTaskList); + iXrTaskAnnexService.saveTaskAnnexByPersonListOnTaskId(personList, xrTaskList.getTaskLikeId()); + } +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/IXrSeriousillegalPersonSpeListService.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/IXrSeriousillegalPersonSpeListService.java deleted file mode 100644 index 2acb450..0000000 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/IXrSeriousillegalPersonSpeListService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.XrSeriousIllegalPersonSpeList; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto.PersonSpeSaveIvdDto; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto.SeriousIllegalProcessDto; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto.SeriousIllegalSpeQueryDto; -import com.chinaweal.aicorg.model.AICUser; -import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; - - -/** - * 列入严重违法失信自然人名单 服务类 - * - * @author zhouxy - * @since 2025-07-24 - */ -public interface IXrSeriousillegalPersonSpeListService extends IService { - - IPage listXrSeriousIllegalPersonSpeList(BaseQuery query, AICUser user); - -// XrTaskListVo saveIvdAcceptList(PersonSpeSaveIvdDto speSaveIvdDto, AICUser user); - -// void processControl(SeriousIllegalProcessDto seriousIllegalProcessDto, AICUser user); - -// ApprovalFormDto getApprovalFormByBizSeqNo(String bizSeqNo, String cerNo, String illegalListId); - -} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/impl/TSBizSerIllegalServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/impl/TSBizSerIllegalServiceImpl.java index 38e9470..1928379 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/impl/TSBizSerIllegalServiceImpl.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/impl/TSBizSerIllegalServiceImpl.java @@ -895,19 +895,17 @@ public class TSBizSerIllegalServiceImpl extends BaseServiceImpl lqw = Wrappers.lambdaQuery(); - lqw.eq(Gzaiccode::getScountrycode, tsSerIllegalList.getDecorg()); - Gzaiccode gzaiccode = iGzaiccodeService.getOne(lqw); - government = "广州市" + gzaiccode.getShortname() + "人民政府"; - } + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + //查地市的 + lqw.eq(Gzaiccode::getScountrycode, tsSerIllegalList.getDecorg().substring(0, 4) + "00"); + Gzaiccode gzaiccode = iGzaiccodeService.getOne(lqw); + String government = gzaiccode.getScountryextcode() + "人民政府"; + String court = gzaiccode.getScountryextcode() + "人民法院"; String text = ",现决定将你(单位)列入严重违法失信名单,通过国家企业信用信息公示系统向社会公示,并实施相应管理措施。列入期限自即日起至" + term.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日")) + "。期满一年后,你(单位)可依据《市场监督管理严重违法失信名单管理办法》第十六条、第十七条规定向我局申请提前移出严重违法失信名单,停止公示相关信息并解除相应管理措施。" + - "\n你(单位)如不服本决定,可以自收到本决定书之日起六十日内向" - + government + - "申请行政复议;也可以在六个月内向广州铁路运输人民法院提起行政诉讼。"; + "\n你(单位)如不服本决定,可以自收到本决定书之日起六十日内向" + government + + "申请行政复议;也可以在六个月内向" + court + "提起行政诉讼。"; return text; } diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/common/emnu/AuthEnum.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/common/emnu/AuthEnum.java new file mode 100644 index 0000000..5d1b2cf --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/common/emnu/AuthEnum.java @@ -0,0 +1,25 @@ +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.common.emnu; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum AuthEnum { + XR_HANDLE("xrHandle", "经办人"), + XR_EXAMINE("xrExamine", "审核人"), + XR_APPROVE("xrApprove", "审批人"), + XR_LAW("xrLaw", "执法人"), + ; + /** + * 编码 + */ + private final String code; + + /** + * 描述 + */ + private final String desc; + + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/controller/XrSeriousIllegalPersonSpeListController.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/controller/XrSeriousIllegalPersonSpeListController.java new file mode 100644 index 0000000..6523fd9 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/controller/XrSeriousIllegalPersonSpeListController.java @@ -0,0 +1,128 @@ +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaweal.aiccs.aiccs.business.entity.dto.ApprovalFormDto; +import com.chinaweal.aiccs.aiccs.business.entity.vo.XrTaskListVo; +import com.chinaweal.aiccs.aiccs.business.service.IXrActivityService; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonSpeList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.PersonSpeSaveIvdDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalProcessDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalSpeQueryDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.service.IXrSeriousillegalPersonSpeListService; +import com.chinaweal.aiccs.common.base.controller.BaseController; +import com.chinaweal.aiccs.common.util.StringUtils; +import com.chinaweal.aicorg.model.AICUser; +import com.chinaweal.aicorg.pojo.AICPermission; +import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; +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 io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + * 列入严重违法失信自然人名单 控制器 + * + * @author zhouxy + * @since 2025-07-24 + */ +@Api(tags = "列入严重违法失信自然人名单") +@RestController +@RequestMapping("/xrSeriousIllegalPersonSpeList") +@Slf4j +public class XrSeriousIllegalPersonSpeListController extends BaseController { + + @Resource + private IXrSeriousillegalPersonSpeListService iXrSeriousillegalPersonSpeListService; + @Resource + private IXrActivityService iXrActivityService; + + + @ApiOperation(value = "1.分页查询列入严重违法失信自然人名单", position = 1) + @PostMapping("/list") + public RestResult> listXrSeriousIllegalPersonSpeList(@RequestBody BaseQuery query, HttpServletRequest request) { + AICUser user = getLoginUser(request); + if (user == null) { + throw new BusinessException(ResultCode.USER_NOT_LOGGED_IN); + } + IPage data = iXrSeriousillegalPersonSpeListService.listXrSeriousIllegalPersonSpeList(query, user); + return RestResult.ok(data); + } + + @ApiOperation(value = "2.启动自然人列严待办", position = 2) + @PostMapping("/saveIvdAcceptList") + public RestResult saveIvdAcceptList(@RequestBody PersonSpeSaveIvdDto speSaveIvdDto, HttpServletRequest request) { + AICUser user = getLoginUser(request); + if (user == null) { + return RestResult.error(ResultCode.USER_NOT_LOGGED_IN); + } + String cerNo = speSaveIvdDto.getCerNo(); + if (StringUtils.isEmpty(speSaveIvdDto.getInv()) || + StringUtils.isEmpty(speSaveIvdDto.getCerType()) || + StringUtils.isEmpty(cerNo)) { + return RestResult.error(ResultCode.PARAM_IS_BLANK); + } + + //若证件类型是身份证则校验 + if(StringUtils.equals("10",speSaveIvdDto.getCerType())){ + boolean isMatch = false; + if (cerNo.length() == 18) { // 18位身份证号码验证 + isMatch = cerNo.matches("^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$"); + } else if (cerNo.length() == 15) { // 15位身份证号码验证 + isMatch = cerNo.matches("^[1-9]\\d{5}\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}$"); + } + if(!isMatch) + return RestResult.error(ResultCode.PARAM_IS_INVALID, "身份证号码格式不正确"); + } + + XrTaskListVo xrTaskListVo = iXrSeriousillegalPersonSpeListService.saveIvdAcceptList(speSaveIvdDto, user); + return RestResult.ok(xrTaskListVo); + } + + @ApiOperation(value = "3.业务号查询列入严重违法失信自然人表", position = 3) + @GetMapping("/listByBizSeqNo") + public RestResult listByBizSeqNo(@RequestParam @ApiParam("id") String bizSeqNo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(XrSeriousIllegalPersonSpeList::getBizSeqNo, bizSeqNo); + List xrSeriousIllegalPersonSpeLists = iXrSeriousillegalPersonSpeListService.list(queryWrapper); + //目前暂时只取第一条业务数据 + XrSeriousIllegalPersonSpeList personSpeList = xrSeriousIllegalPersonSpeLists.get(0); + return RestResult.ok(personSpeList); + } + + @ApiOperation(value = "4.流程控制", position = 4) + @PostMapping("/processControl") + public RestResult processControl(@RequestBody @Validated SeriousIllegalProcessDto seriousIllegalProcessDto, HttpServletRequest request) { + AICUser user = getLoginUser(request); + if (user == null) { + return RestResult.error(ResultCode.USER_NOT_LOGGED_IN); + } + if (StringUtils.isEmpty(seriousIllegalProcessDto.getNextNodeID()) || StringUtils.isEmpty(seriousIllegalProcessDto.getBizSeqNo())) { + return RestResult.error(ResultCode.PARAM_IS_BLANK); + } + Map aicPermissions = user.getAicPermissions(); + //根据当前流程节点判断权限 + if (!iXrActivityService.checkPermissionsAndNodeID(aicPermissions, seriousIllegalProcessDto.getCurrentNodeID(), seriousIllegalProcessDto.getNextNodeID(),"seriousillegal")) { + return RestResult.error(ResultCode.INTERFACE_FORBID_VISIT, "无权操作"); + } + iXrSeriousillegalPersonSpeListService.processControl(seriousIllegalProcessDto, user); + return RestResult.ok(); + } + + @ApiOperation(value = "5.业务号获取审批表", position = 5) + @GetMapping("/getApprovalFormByBizSeqNo") + public RestResult getApprovalFormByBizSeqNo(@RequestParam @ApiParam("id") String bizSeqNo, String cerNo, String illegalListId) { + ApprovalFormDto approvalDto = iXrSeriousillegalPersonSpeListService.getApprovalFormByBizSeqNo(bizSeqNo, cerNo,illegalListId); + return RestResult.ok(approvalDto); + } +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonList.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonList.java similarity index 99% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonList.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonList.java index 4602f6b..29f2581 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonList.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonList.java @@ -1,4 +1,4 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.entity; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity; import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonRemList.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonRemList.java similarity index 99% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonRemList.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonRemList.java index c77f6ff..7b73fd1 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonRemList.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonRemList.java @@ -1,4 +1,4 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.entity; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonSpeList.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonSpeList.java similarity index 99% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonSpeList.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonSpeList.java index f2fe492..ed65d65 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/XrSeriousIllegalPersonSpeList.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/XrSeriousIllegalPersonSpeList.java @@ -1,4 +1,4 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.entity; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/PersonSpeSaveIvdDto.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/PersonSpeSaveIvdDto.java similarity index 89% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/PersonSpeSaveIvdDto.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/PersonSpeSaveIvdDto.java index 9832d25..a290f96 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/PersonSpeSaveIvdDto.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/PersonSpeSaveIvdDto.java @@ -1,4 +1,4 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalListQueryDto.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalListQueryDto.java similarity index 96% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalListQueryDto.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalListQueryDto.java index 2f2ac2a..554709a 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalListQueryDto.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalListQueryDto.java @@ -1,4 +1,4 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto; import com.chinaweal.aiccs.aiccs.business.entity.dto.BaseParamDto; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalProcessDto.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalProcessDto.java similarity index 84% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalProcessDto.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalProcessDto.java index 9293865..01457e1 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalProcessDto.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalProcessDto.java @@ -1,11 +1,11 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.XrSeriousIllegalPersonSpeList; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonSpeList; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.Valid; import javax.validation.constraints.NotBlank; @Data @@ -34,9 +34,8 @@ public class SeriousIllegalProcessDto { /** * 意见 */ -// @ApiModelProperty(value = "意见") -// @Valid -// private XrOpinion opinion; + @ApiModelProperty(value = "意见") + private XrOpinion opinion; /** * 下一步处理人id diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalSpeListDto.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalSpeListDto.java similarity index 96% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalSpeListDto.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalSpeListDto.java index a3f793d..016817d 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalSpeListDto.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalSpeListDto.java @@ -1,4 +1,4 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalSpeQueryDto.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalSpeQueryDto.java similarity index 97% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalSpeQueryDto.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalSpeQueryDto.java index e8e2c07..45e951a 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/entity/dto/SeriousIllegalSpeQueryDto.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/entity/dto/SeriousIllegalSpeQueryDto.java @@ -1,4 +1,4 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto; import com.chinaweal.aiccs.aiccs.business.entity.dto.BaseParamDto; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonListMapper.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonListMapper.java similarity index 63% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonListMapper.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonListMapper.java index 6a5c180..dcf09f4 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonListMapper.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonListMapper.java @@ -1,7 +1,7 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.mapper; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.XrSeriousIllegalPersonList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonList; /** * 严重违法失信自然人名单表 Mapper 接口 diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonRemListMapper.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonRemListMapper.java similarity index 73% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonRemListMapper.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonRemListMapper.java index 68850a4..b21ceeb 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonRemListMapper.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonRemListMapper.java @@ -1,10 +1,10 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.mapper; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.XrSeriousIllegalPersonRemList; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto.SeriousIllegalSpeQueryDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonRemList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalSpeQueryDto; /** * 移出严重违法失信自然人名单(业务表) Mapper 接口 diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonSpeListMapper.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonSpeListMapper.java similarity index 74% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonSpeListMapper.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonSpeListMapper.java index 1cb3156..94b3c7a 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/mapper/XrSeriousIllegalPersonSpeListMapper.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/mapper/XrSeriousIllegalPersonSpeListMapper.java @@ -1,9 +1,9 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.mapper; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.XrSeriousIllegalPersonSpeList; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto.SeriousIllegalSpeQueryDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonSpeList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalSpeQueryDto; import org.apache.ibatis.annotations.Param; /** diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/IXrSeriousIllegalPersonListService.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/IXrSeriousIllegalPersonListService.java similarity index 78% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/IXrSeriousIllegalPersonListService.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/IXrSeriousIllegalPersonListService.java index 14fc6d5..1291669 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/IXrSeriousIllegalPersonListService.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/IXrSeriousIllegalPersonListService.java @@ -1,9 +1,9 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.service; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.XrSeriousIllegalPersonList; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto.SeriousIllegalListQueryDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalListQueryDto; import com.chinaweal.aicorg.model.AICUser; import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/IXrSeriousillegalPersonSpeListService.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/IXrSeriousillegalPersonSpeListService.java new file mode 100644 index 0000000..74763f0 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/IXrSeriousillegalPersonSpeListService.java @@ -0,0 +1,31 @@ +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.chinaweal.aiccs.aiccs.business.entity.dto.ApprovalFormDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonSpeList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.PersonSpeSaveIvdDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalProcessDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalSpeQueryDto; +import com.chinaweal.aiccs.aiccs.business.entity.vo.XrTaskListVo; +import com.chinaweal.aicorg.model.AICUser; +import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; + + +/** + * 列入严重违法失信自然人名单 服务类 + * + * @author zhouxy + * @since 2025-07-24 + */ +public interface IXrSeriousillegalPersonSpeListService extends IService { + + IPage listXrSeriousIllegalPersonSpeList(BaseQuery query, AICUser user); + + XrTaskListVo saveIvdAcceptList(PersonSpeSaveIvdDto speSaveIvdDto, AICUser user); + + void processControl(SeriousIllegalProcessDto seriousIllegalProcessDto, AICUser user); + + ApprovalFormDto getApprovalFormByBizSeqNo(String bizSeqNo, String cerNo, String illegalListId); + +} diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/impl/XrSeriousIllegalPersonListServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/impl/XrSeriousIllegalPersonListServiceImpl.java similarity index 90% rename from src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/impl/XrSeriousIllegalPersonListServiceImpl.java rename to src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/impl/XrSeriousIllegalPersonListServiceImpl.java index 1deb5ac..afd090e 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegal/service/impl/XrSeriousIllegalPersonListServiceImpl.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/impl/XrSeriousIllegalPersonListServiceImpl.java @@ -1,13 +1,13 @@ -package com.chinaweal.aiccs.aiccs.seriousillegal.service.impl; +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.XrSeriousIllegalPersonList; -import com.chinaweal.aiccs.aiccs.seriousillegal.entity.dto.SeriousIllegalListQueryDto; -import com.chinaweal.aiccs.aiccs.seriousillegal.mapper.XrSeriousIllegalPersonListMapper; -import com.chinaweal.aiccs.aiccs.seriousillegal.service.IXrSeriousIllegalPersonListService; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalListQueryDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.mapper.XrSeriousIllegalPersonListMapper; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.service.IXrSeriousIllegalPersonListService; import com.chinaweal.aiccs.common.util.StringUtils; import com.chinaweal.aiccs.org.entity.OrgUnits; import com.chinaweal.aiccs.org.service.AicorgService; diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/impl/XrSeriousIllegalPersonSpeListServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/impl/XrSeriousIllegalPersonSpeListServiceImpl.java new file mode 100644 index 0000000..0ef91d2 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/seriousillegalPerson/service/impl/XrSeriousIllegalPersonSpeListServiceImpl.java @@ -0,0 +1,361 @@ +package com.chinaweal.aiccs.aiccs.seriousillegalPerson.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chinaweal.aiccs.aiccs.abnormal.entity.Gzaiccode; +import com.chinaweal.aiccs.aiccs.abnormal.entity.TSWrit; +import com.chinaweal.aiccs.aiccs.abnormal.service.IGzaiccodeService; +import com.chinaweal.aiccs.aiccs.abnormal.service.TSWritService; +import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion; +import com.chinaweal.aiccs.aiccs.business.entity.dto.ApprovalFormDto; +import com.chinaweal.aiccs.aiccs.business.rules.init.FlowUtil; +import com.chinaweal.aiccs.aiccs.business.service.IXrOpinionService; +import com.chinaweal.aiccs.aiccs.business.service.IXrTaskListService; +import com.chinaweal.aiccs.aiccs.inspect.service.TSWorkNoService; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.common.emnu.AuthEnum; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.XrSeriousIllegalPersonSpeList; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.PersonSpeSaveIvdDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalProcessDto; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.SeriousIllegalSpeQueryDto; +import com.chinaweal.aiccs.aiccs.business.entity.vo.XrTaskListVo; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.mapper.XrSeriousIllegalPersonSpeListMapper; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.service.IXrSeriousIllegalPersonListService; +import com.chinaweal.aiccs.aiccs.seriousillegalPerson.service.IXrSeriousillegalPersonSpeListService; +import com.chinaweal.aiccs.aiccs.system.entity.TRBaseCode; +import com.chinaweal.aiccs.aiccs.system.service.TRBaseCodeService; +import com.chinaweal.aiccs.common.constant.FlowConstant; +import com.chinaweal.aiccs.common.util.StringUtils; +import com.chinaweal.aiccs.common.util.WorkNoUtil; +import com.chinaweal.aiccs.org.entity.OrgUnits; +import com.chinaweal.aiccs.org.service.AicorgService; +import com.chinaweal.aicorg.model.AICUser; +import com.chinaweal.aicorg.pojo.AICPermission; +import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; +import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; +import com.chinaweal.youfool.framework.sso.util.SSOUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +/** + * 列入严重违法失信自然人名单 服务实现类 + * + * @author zhouxy + * @since 2025-07-24 + */ +@Service +public class XrSeriousIllegalPersonSpeListServiceImpl extends ServiceImpl implements IXrSeriousillegalPersonSpeListService { + + @Autowired + private AicorgService aicorgService; + @Autowired + private IXrTaskListService iXrTaskListService; + @Autowired + private TRBaseCodeService trBaseCodeService; + @Autowired + private IXrSeriousIllegalPersonListService iXrSeriousIllegalPersonListService; + @Autowired + private TSWorkNoService tsWorkNoService; + @Autowired + private TSWritService tsWritService; + @Resource + @Lazy + private IGzaiccodeService iGzaiccodeService; + @Autowired + private IXrOpinionService iXrOpinionService; + + @Override + public IPage listXrSeriousIllegalPersonSpeList(BaseQuery query, AICUser user) { + Map aicPermissions = user.getAicPermissions(); + // 权限 + List authList = new ArrayList<>(); + authList.add(user.getPrimaryKey()); + if (aicPermissions.containsKey(AuthEnum.XR_HANDLE.getCode())) { + authList.add(user.getRegionID() + ":" +AuthEnum.XR_HANDLE.getCode()); + } + SeriousIllegalSpeQueryDto entity = query.getEntity(SeriousIllegalSpeQueryDto.class); + entity.setAuthList(authList); + IPage xrSeriousIllegalPersonSpeListIPage; + Page page = new Page<>(query.getCurrent(), query.getSize()); + if (Objects.equals(entity.getBusType(), "todo")) { //待办 + entity.setBusStatus("0"); + xrSeriousIllegalPersonSpeListIPage = baseMapper.selectXrSeriousIllegalPersonSpeListTodo(page, entity); + } else if (Objects.equals(entity.getBusType(), "history")) { //记录 + String areaCode = aicorgService.getOrgnumberByUserLevel(user,false); + entity.setAreaCode(areaCode); + xrSeriousIllegalPersonSpeListIPage = baseMapper.selectXrSeriousIllegalPersonSpeListHistory(page, entity); + } else { + throw new BusinessException("查询列表类型错误,请联系管理员处理"); + } + return xrSeriousIllegalPersonSpeListIPage; + } + + @Override + public XrTaskListVo saveIvdAcceptList(PersonSpeSaveIvdDto speSaveIvdDto, AICUser user) { + XrSeriousIllegalPersonSpeList xrSeriousIllegalPersonSpeList = new XrSeriousIllegalPersonSpeList(); + xrSeriousIllegalPersonSpeList.setIllegalListId(UUID.randomUUID().toString()) + .setBizSeqNo(UUID.randomUUID().toString()) + .setInv(speSaveIvdDto.getInv()) + .setCerType(speSaveIvdDto.getCerType()) + .setCerNo(speSaveIvdDto.getCerNo()) + .setAreaCode(user.getRegionID().substring(0, 6)) + .setLaupTime(LocalDateTime.now()) + .setIntoSponsorIllegal(user.getPrimaryKey()) + .setAddDepId(user.getOrgID()) + .setAddDepName(user.getOrgName()) + .setStatus("0") + .setFinished("0") + .setApprove("0") + .setBusType("penalty") + .setDisplayed("1"); + XrTaskList xrTaskList = new XrTaskList(); + xrTaskList.setTaskLikeId(UUID.randomUUID().toString()); + xrTaskList.setBizSeqNo(xrSeriousIllegalPersonSpeList.getBizSeqNo()); + xrTaskList.setAreaCode(user.getRegionID().substring(0, 6)); + xrTaskList.setBusName(xrSeriousIllegalPersonSpeList.getInv()); + xrTaskList.setApplyOrgId(user.getOrgID()); + xrTaskList.setWorkFlowId(FlowUtil.SUCCESSFUL_FLOW_TWO); + save(xrSeriousIllegalPersonSpeList); + // 保存待办信息 + iXrTaskListService.startWorkFlowPerson(xrTaskList, new String[]{user.getPrimaryKey()}, null, Arrays.asList(speSaveIvdDto)); + return new XrTaskListVo(xrTaskList.getTaskLikeId(), xrSeriousIllegalPersonSpeList.getBizSeqNo(), ""); + } + + @Override + public void processControl(SeriousIllegalProcessDto seriousIllegalProcessDto, AICUser user) { + XrTaskList xrTaskList = iXrTaskListService.getOne(new LambdaQueryWrapper().eq(XrTaskList::getBizSeqNo, seriousIllegalProcessDto.getBizSeqNo())); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(XrSeriousIllegalPersonSpeList::getBizSeqNo, seriousIllegalProcessDto.getBizSeqNo()); + List xrSeriousIllegalPersonSpeLists = list(queryWrapper); + if (xrSeriousIllegalPersonSpeLists.isEmpty()) { + throw new BusinessException("暂无数据"); + } + LocalDateTime localDateTime = LocalDateTime.now(); + TRBaseCode trbasecode; + + for (XrSeriousIllegalPersonSpeList xrSeriousIllegalPersonSpeList : xrSeriousIllegalPersonSpeLists) { + XrSeriousIllegalPersonSpeList personSpeList = seriousIllegalProcessDto.getPersonSpeList(); + switch (seriousIllegalProcessDto.getNextNodeID()) { + case FlowConstant.LINK_TYPE_EXAMINE: + personSpeList.setIllegalListId(xrSeriousIllegalPersonSpeList.getIllegalListId()); + // 保存值 + xrSeriousIllegalPersonSpeList = personSpeList; + QueryWrapper queryBaWrapper = new QueryWrapper<>(); + queryBaWrapper.lambda().eq(TRBaseCode::getCode, personSpeList.getSerillRea()) + .eq(TRBaseCode::getCodeid, "CD73"); + trbasecode = trBaseCodeService.getOne(queryBaWrapper); + xrSeriousIllegalPersonSpeList.setSerillReaString(trbasecode.getName()); + xrSeriousIllegalPersonSpeList.setAbnTime(personSpeList.getAbnTime() == null ? + LocalDate.now() : personSpeList.getAbnTime()); + xrSeriousIllegalPersonSpeList.setSerillRea(personSpeList.getSerillRea()); + xrSeriousIllegalPersonSpeList.setLostCreditExplain(personSpeList.getLostCreditExplain()); + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_ONE); // 审批流程中把状态设置成 "审核中" + break; + case FlowConstant.LINK_TYPE_LAW: + personSpeList.setIllegalListId(xrSeriousIllegalPersonSpeList.getIllegalListId()); + // 保存值 + xrSeriousIllegalPersonSpeList = personSpeList; + trbasecode = trBaseCodeService.getOne(new LambdaQueryWrapper() + .eq(TRBaseCode::getCode, personSpeList.getSerillRea()) + .eq(TRBaseCode::getCodeid, "CD73")); + xrSeriousIllegalPersonSpeList.setSerillReaString(trbasecode.getName()) + .setAbnTime(personSpeList.getAbnTime() == null ? + LocalDate.now() : personSpeList.getAbnTime()); + xrSeriousIllegalPersonSpeList.setSerillRea(personSpeList.getSerillRea()); + xrSeriousIllegalPersonSpeList.setLostCreditExplain(personSpeList.getLostCreditExplain()); + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_SEVEN); + break; + case FlowConstant.LINK_TYPE_APPROVE: + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_TWO); // 审批流程中把状态设置成 "审批" + break; + case FlowConstant.LINK_TYPE_UP_EXAMINE: + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_ONE); // 行政处罚需要上级审批 + break; + case FlowConstant.LINK_TYPE_END: + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_THREE); // 审批流程中把状态设置成 "通过" + xrSeriousIllegalPersonSpeList.setDisplayed("1"); + xrSeriousIllegalPersonSpeList.setFinished("1"); + toEndSeriouslyList(xrSeriousIllegalPersonSpeList, user); + break; + case FlowConstant.LINK_TYPE_NULLIFY: + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_FIVE); // 审批流程中把状态设置成 "不通过" + xrSeriousIllegalPersonSpeList.setFinished("1"); + if (seriousIllegalProcessDto.getOpinion() != null) { + xrSeriousIllegalPersonSpeList.setEndReason(seriousIllegalProcessDto.getOpinion().getOpinionContent()); + } + xrSeriousIllegalPersonSpeList.setEndApply("2"); + break; + case FlowConstant.LINK_TYPE_EXAMINE_FINISH: + case FlowConstant.LINK_TYPE_APPROVE_FINISH: + case FlowConstant.LINK_TYPE_LAW_FINISH: + case FlowConstant.LINK_TYPE_UP_EXAMINE_FINISH: + case FlowConstant.LINK_TYPE_UP_APPROVE_FINISH: + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_FOUR); // 审批流程中把状态设置成 "作废" + xrSeriousIllegalPersonSpeList.setEndReason(seriousIllegalProcessDto.getOpinion().getOpinionContent()); + xrSeriousIllegalPersonSpeList.setFinished("1"); + break; + case FlowConstant.LINK_TYPE_EXAMINE_RETURN: + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_ONE); + break; + case FlowConstant.LINK_TYPE_HANDLE_RETURN: + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_ZERO); + break; + case FlowConstant.LINK_TYPE_LAW_RETURN: + xrSeriousIllegalPersonSpeList.setStatus(FlowConstant.LINK_STATUS_SEVEN); + break; + default: + break; + } + xrSeriousIllegalPersonSpeList.setLaupTime(localDateTime); + xrSeriousIllegalPersonSpeList.setIntoSponsorIllegal(user.getPrimaryKey()); + saveOrUpdate(xrSeriousIllegalPersonSpeList); + } + iXrTaskListService.updateWorkFlow(seriousIllegalProcessDto.getOpinion(), xrTaskList, + seriousIllegalProcessDto.getNextNodeID(), seriousIllegalProcessDto.getNextPerformerIds(), null); + + } + + /** + * 文书生成 + */ + private void toEndSeriouslyList(XrSeriousIllegalPersonSpeList xrSeriousIllegalPersonSpeList, AICUser user) { + XrSeriousIllegalPersonList xrSeriousIllegalPersonList = new XrSeriousIllegalPersonList(); + xrSeriousIllegalPersonList.setIllegalListId(UUID.randomUUID().toString()) + .setBizSeq(xrSeriousIllegalPersonSpeList.getBizSeqNo()) + .setInv(xrSeriousIllegalPersonSpeList.getInv()) + .setCerType(xrSeriousIllegalPersonSpeList.getCerType()) + .setCerNo(xrSeriousIllegalPersonSpeList.getCerNo()) + .setSerIllRea(xrSeriousIllegalPersonSpeList.getSerillRea()) + .setSerIllReaCn(xrSeriousIllegalPersonSpeList.getSerillReaString()) + .setAbnTime(LocalDate.now()); + //判断列入机关,若是所一级,则改为其上级单位,即区县一级 + xrSeriousIllegalPersonList = iXrSeriousIllegalPersonListService.checkDecOrg(xrSeriousIllegalPersonList,user.getOrgID(),0); + xrSeriousIllegalPersonList.setAreaCode(user.getRegionID().substring(0, 6)) + .setLostCreditExplain(xrSeriousIllegalPersonSpeList.getLostCreditExplain()) + .setIntoSponsorIllegal(user.getName()) + .setIntoSponsorIllegalId(user.getPrimaryKey()) + .setRemSponsorIllegal(xrSeriousIllegalPersonSpeList.getIntoSponsorIllegal()) + .setOperationStatus("0") + .setIsHea(xrSeriousIllegalPersonSpeList.getIsHea()) + .setHeaOp(xrSeriousIllegalPersonSpeList.getHeaOp()) + .setJudDocNo(xrSeriousIllegalPersonSpeList.getJudDocNo()) + .setJudDocTitle(xrSeriousIllegalPersonSpeList.getJudDocTitle()) + .setDisplayed("1")//列入记录公示1:是 0:否 + .setIsHandling("0"); + + //4.生成文书号 + TSWrit tsWritModel = new TSWrit(); + String tswritId = UUID.randomUUID().toString(); + tsWritModel.setWritsid(tswritId); + String workNoType = WorkNoUtil.WORKNOTYPE_21;//列入严重违法失信名单 决定书文号 + tsWritModel.setWritsno(tsWorkNoService.generateSeriousIncludeDocNo(xrSeriousIllegalPersonSpeList.getAreaCode())); + tsWritModel.setWritsname(WorkNoUtil.getWorkNoTypeName(workNoType)); + tsWritModel.setContent("当事人:"+xrSeriousIllegalPersonSpeList.getInv() + + "\n证件号码:" + xrSeriousIllegalPersonSpeList.getCerNo() + + "\n" + xrSeriousIllegalPersonSpeList.getLostCreditExplain() + + includeDocumentLastText(xrSeriousIllegalPersonSpeList)); + tsWritModel.setBizseq(xrSeriousIllegalPersonSpeList.getBizSeqNo()); + tsWritModel.setWritstype(workNoType); + tsWritModel.setCreatetime(LocalDateTime.now()); + tsWritModel.setAreaCode(xrSeriousIllegalPersonSpeList.getAreaCode()); + tsWritService.save(tsWritModel); + xrSeriousIllegalPersonSpeList.setWritsNo(tsWritModel.getWritsno()) + .setDecOrg(xrSeriousIllegalPersonList.getDecOrg()) + .setDecOrgCn(xrSeriousIllegalPersonList.getDecOrgCn()); + saveOrUpdate(xrSeriousIllegalPersonSpeList); + xrSeriousIllegalPersonList.setIntoWritId(tswritId);//严重违法表里保存列入文书id + iXrSeriousIllegalPersonListService.save(xrSeriousIllegalPersonList); + } + + /** + * 列入决定文书最后内容 + */ + private String includeDocumentLastText(XrSeriousIllegalPersonSpeList xrSeriousIllegalPersonSpeList) { + LocalDate term = xrSeriousIllegalPersonSpeList.getAbnTime().plusYears(3); + //查出区划和地市用于拼接复议诉讼机关 + String decOrgCity = StringUtils.substring(xrSeriousIllegalPersonSpeList.getAreaCode(), 0, 4) + "00"; + Gzaiccode basecodeCity = iGzaiccodeService.getOne(new LambdaQueryWrapper() + .eq(Gzaiccode::getScountrycode, decOrgCity)); + + //行政复议机关 + String reconsiderationOrg = StringUtils.isEmpty(xrSeriousIllegalPersonSpeList.getReconsiderationOrg()) ? basecodeCity.getScountryextcode()+"人民政府" : xrSeriousIllegalPersonSpeList.getReconsiderationOrg(); + //诉讼机关 + String litiOrg = StringUtils.isEmpty(xrSeriousIllegalPersonSpeList.getLitiOrg()) ? basecodeCity.getScountryextcode()+"人民法院" : xrSeriousIllegalPersonSpeList.getLitiOrg(); + String text = ",现决定将你(单位)列入严重违法失信名单,通过国家企业信用信息公示系统向社会公示,并实施相应管理措施。列入期限自即日起至" + + term.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日")) + + "。期满一年后,你(单位)可依据《市场监督管理严重违法失信名单管理办法》第十六条、第十七条规定向我局申请提前移出严重违法失信名单,停止公示相关信息并解除相应管理措施。" + + "\n你(单位)如不服本决定,可以自收到本决定书之日起六十日内向" + + reconsiderationOrg + "申请行政复议;也可以在六个月内向" + + litiOrg + "提起行政诉讼。"; + return text; + } + + @Override + public ApprovalFormDto getApprovalFormByBizSeqNo(String bizSeqNo, String cerNo, String illegalListId) { + ApprovalFormDto approvalFormDto = new ApprovalFormDto(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(StringUtils.isNotBlank(illegalListId)){ + queryWrapper.eq(XrSeriousIllegalPersonSpeList::getIllegalListId,illegalListId); + } else { + queryWrapper.eq(XrSeriousIllegalPersonSpeList::getBizSeqNo, bizSeqNo) + .eq(XrSeriousIllegalPersonSpeList::getCerNo, cerNo).last("limit 1"); + } + XrSeriousIllegalPersonSpeList seriousIllegalPersonSpeList = getOne(queryWrapper); + + XrTaskList xrTaskList = iXrTaskListService.getOne(new QueryWrapper().lambda().eq(XrTaskList::getBizSeqNo, bizSeqNo)); + List data = this.iXrOpinionService.list(new LambdaQueryWrapper() + .eq(XrOpinion::getTaskListId,xrTaskList.getTaskLikeId()) + .orderByDesc(XrOpinion::getUpdateTime)); + BeanUtils.copyProperties(seriousIllegalPersonSpeList, approvalFormDto); + AICUser user = SSOUtil.getUser(); + approvalFormDto.setAreaName(user.getOrgName()); + approvalFormDto.setOpinion(data); + + String lostCreditExplain = ""; + TRBaseCode trBaseCode = trBaseCodeService.getOne(new LambdaQueryWrapper() + .eq(TRBaseCode::getCode, seriousIllegalPersonSpeList.getSerillRea()) + .eq(TRBaseCode::getCodeid, "CD73")); + if(trBaseCode != null){ + lostCreditExplain = trBaseCode.getName(); + } else { + lostCreditExplain = seriousIllegalPersonSpeList.getSerillReaString(); + } + //用该字段存移出原因 + approvalFormDto.setLostCreditExplain(lostCreditExplain); + + //列入决定书 + TSWrit writ = tsWritService.getOne(new LambdaQueryWrapper() + .eq(TSWrit::getWritstype, WorkNoUtil.WORKNOTYPE_21) + .eq(TSWrit::getBizseq, seriousIllegalPersonSpeList.getBizSeqNo())); + HashMap incAbnDecision = new HashMap<>(); + approvalFormDto.setIncAbnDecisionMap(incAbnDecision); + if (writ != null) { + incAbnDecision.put("writsNo", writ.getWritsno()); + incAbnDecision.put("abnTime", writ.getCreatetime()); + incAbnDecision.put("content", writ.getContent()); + String areaName = user.getOrgName(); + if (areaName.contains("市场监督管理局")) { + areaName = areaName.substring(0,areaName.indexOf("市场监督管理局")); + } + incAbnDecision.put("areaName", areaName); + incAbnDecision.put("WritsType", writ.getWritstype()); + incAbnDecision.put("inv", seriousIllegalPersonSpeList.getInv()); + incAbnDecision.put("cerNo", seriousIllegalPersonSpeList.getCerNo()); + approvalFormDto.setIncAbnDecisionMap(incAbnDecision); + } + return approvalFormDto; + } + +} diff --git a/src/main/java/com/chinaweal/aiccs/common/constant/CommonConstants.java b/src/main/java/com/chinaweal/aiccs/common/constant/CommonConstants.java new file mode 100644 index 0000000..85729ea --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/common/constant/CommonConstants.java @@ -0,0 +1,28 @@ +package com.chinaweal.aiccs.common.constant; + +/** + * 通用常量 + * + * @author lroyia + * @since 2022/7/5 17:27 + **/ +public interface CommonConstants { + + String TRUE_1 = "1"; + String FALSE_0 = "0"; + String DOT = "."; + String COMMA = ","; + String LINE = "-"; + String UNDERLINE = "_"; + String SYSTEM = "system"; + String COLON = ":"; + /** + * 默认数据创建者:system + **/ + String DEFAULT_CREATOR = SYSTEM; + String UNDER_LINE = "_"; + /** + * 默认SQL结果分片大小 + **/ + Integer DEFAULT_RESULT_FETCH_SIZE = 10000; +} diff --git a/src/main/java/com/chinaweal/aiccs/common/constant/FlowConstant.java b/src/main/java/com/chinaweal/aiccs/common/constant/FlowConstant.java new file mode 100644 index 0000000..1fe1bdf --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/common/constant/FlowConstant.java @@ -0,0 +1,47 @@ +package com.chinaweal.aiccs.common.constant; + +public abstract class FlowConstant { + public static final String LINK_TYPE_REASSIGNMENT = "transfer";// 流程经办 - 转办 + public static final String LINK_TYPE_HANDLE = "handle";// 流程经办 + public static final String LINK_TYPE_EXAMINE = "examine";//流程审核 + public static final String LINK_TYPE_UP_EXAMINE = "upExamine";//流程审核 + public static final String LINK_TYPE_APPROVE = "approve";//流程审批 + public static final String LINK_TYPE_LAW = "law";//检查执法 + public static final String LINK_TYPE_END = "end";//流程结束 + public static final String LINK_TYPE_NULLIFY = "nullify";//流程作废 + public static final String LINK_TYPE_EXAMINE_FINISH = "examineFinish";//流程审核不通过 + public static final String LINK_TYPE_APPROVE_FINISH = "approveFinish";//流程审批不通过 + public static final String LINK_TYPE_LAW_FINISH = "lawFinish";//流程审批不通过 + public static final String LINK_TYPE_CLUE_RETURN = "clueReturn";//流程返回 + public static final String LINK_TYPE_HANDLE_RETURN = "handleReturn";//流程返回 + public static final String LINK_TYPE_LAW_RETURN = "lawReturn";//流程返回 + public static final String LINK_TYPE_EXAMINE_RETURN = "examineReturn";//流程返回 + public static final String LINK_TYPE_RETURN = "Return";//流程返回 + public static final String LINK_TYPE_REPLENISH = "replenish";//材料补正 + + public static final String LINK_TYPE_UP_EXAMINE_FINISH = "upExamineFinish";//上级审核不通过 + + public static final String LINK_TYPE_UP_APPROVE_FINISH = "upApproveFinish";//上级审批不通过 + + public static final String BUS_TYPE_INCLUSION = "inclusion"; //经营异常列入 + public static final String BUS_TYPE_REMOVE = "remove";//经营异常移出 + public static final String BUS_TYPE_OBJECTION = "objection";// 经营异常异议 + public static final String BUS_TYPE_PENALTY = "penalty";// 严重违法行政处罚 + public static final String BUS_TYPE_IMITATE = "imitate";// 严重违法(经营异常满三年)拟列入 + public static final String BUS_TYPE_ENTER = "enter";// 严重违法(经营异常满三年)列入 + + public static final String OBJ_TYPE_INDIVIDUAL = "individual";// 个体户 + public static final String OBJ_TYPE_FARMER = "farmer";// 农社经营 + public static final String OBJ_TYPE_COMPANY = "company";// 企业类型 + + public static final String LINK_STATUS_ZERO = "0";//办理状态 + public static final String LINK_STATUS_ONE = "1";//审核状态 + public static final String LINK_STATUS_TWO = "2";//审批状态 + public static final String LINK_STATUS_THREE = "3";//通过状态 + public static final String LINK_STATUS_FOUR = "4";//不通过状态 + public static final String LINK_STATUS_FIVE = "5";//作废状态 + public static final String LINK_STATUS_SIX = "6";//转办状态 + public static final String LINK_STATUS_SEVEN = "7";//检查执法 + public static final String LINK_STATUS_NINE = "9";//待接收 + +} diff --git a/src/main/java/com/chinaweal/aiccs/common/util/HandleWorkFlowUtil.java b/src/main/java/com/chinaweal/aiccs/common/util/HandleWorkFlowUtil.java index acfa176..7b75516 100644 --- a/src/main/java/com/chinaweal/aiccs/common/util/HandleWorkFlowUtil.java +++ b/src/main/java/com/chinaweal/aiccs/common/util/HandleWorkFlowUtil.java @@ -2,8 +2,10 @@ package com.chinaweal.aiccs.common.util; import com.chinaweal.aiccs.aiccs.auditing.entity.TSOpinion; import com.chinaweal.aiccs.aiccs.business.entity.TSTaskList; +import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList; import com.chinaweal.aiccs.aiccs.revoke.entity.Tsrevtasklist; import com.chinaweal.aiccs.common.constant.BaseDataConstant; +import com.chinaweal.aiccs.common.constant.CommonConstants; import com.chinaweal.aicorg.model.AICUser; import java.time.LocalDate; @@ -174,4 +176,40 @@ public class HandleWorkFlowUtil { taskListModel.setSendertime(now); return taskListModel; } + + public static XrTaskList createXrTaskList(XrTaskList taskListModel, AICUser user) { + LocalDateTime now = LocalDateTime.now(); + //设置待办业务状态为 "0"在办 还有: "-1"待签收 "1"挂起 "2"结束 "3"强制结束 + taskListModel.setBusStatus(BaseDataConstant.BUSINESS_STATUS_TRANSACT); + if (!StringUtils.isNotBlank(taskListModel.getWorkFlowId())) { +// taskListModel.setWorkFlowId(FlowUtil.COMMON_WORK_FLOW); + taskListModel.setWorkFlowId("commonWorkFlow"); + } + //设置是否签收: 是 + taskListModel.setIsSignon(CommonConstants.TRUE_1); + //签收者id + taskListModel.setSignUserId(user.getPrimaryKey()); + //签收/受理时间 + taskListModel.setSignTime(now); + //发送机构ID + taskListModel.setSenderOrgId(user.getOrgID()); + //下一步签收用户ID + taskListModel.setSenderUserId(user.getPrimaryKey()); + //下一步签收用户机构ID + taskListModel.setSendToOrgId(user.getOrgID()); + //发送时间 + if (taskListModel.getSenderTime() == null) { + taskListModel.setSenderTime(now); + } + // 发起机构代码 + if (!StringUtils.isNotBlank(taskListModel.getApplyOrgId())) { + taskListModel.setApplyOrgId(user.getOrgID()); + } + // 发起机构代码 + if (!StringUtils.isNotBlank(taskListModel.getSource())) { +// taskListModel.setSource(BaseDataConstant.SOURCE_PC); + taskListModel.setSource("pc"); + } + return taskListModel; + } } diff --git a/src/main/java/com/chinaweal/aiccs/org/mapper/AicorgMapper.java b/src/main/java/com/chinaweal/aiccs/org/mapper/AicorgMapper.java index 469cfc2..290b695 100644 --- a/src/main/java/com/chinaweal/aiccs/org/mapper/AicorgMapper.java +++ b/src/main/java/com/chinaweal/aiccs/org/mapper/AicorgMapper.java @@ -76,4 +76,7 @@ public interface AicorgMapper extends BaseMapper { com.chinaweal.aicorg.model.AICUser queryUserByUserName(@Param("username") String username); void updateByUserName(String realname); + + OrgUnits selectTOrgunitsById(String orgUnitID); + } diff --git a/src/main/java/com/chinaweal/aiccs/org/mapper/TUsersMapper.java b/src/main/java/com/chinaweal/aiccs/org/mapper/TUsersMapper.java index f04e5b3..0ebd286 100644 --- a/src/main/java/com/chinaweal/aiccs/org/mapper/TUsersMapper.java +++ b/src/main/java/com/chinaweal/aiccs/org/mapper/TUsersMapper.java @@ -41,4 +41,14 @@ public interface TUsersMapper extends BaseMapper { String queryOrgByUserid(@Param("userid")String userid); String queryOrgNumByUserid(@Param("userid")String userid); + /** + * 根据用户Id查询用户信息 + * + * @param userId 用户id + * @return 用户信息 + * @author lroyia + * @since 2023年4月26日 10:38:43 + */ + AICUser selectUserById(@Param("userId") String userId); + } diff --git a/src/main/java/com/chinaweal/aiccs/org/service/AicorgService.java b/src/main/java/com/chinaweal/aiccs/org/service/AicorgService.java index 13abbe0..7d5a3f9 100644 --- a/src/main/java/com/chinaweal/aiccs/org/service/AicorgService.java +++ b/src/main/java/com/chinaweal/aiccs/org/service/AicorgService.java @@ -62,4 +62,15 @@ public interface AicorgService extends IService { * @since 2025年2月25日19:25:22 */ AICUser queryUserByUserName(String username); + + /** + * 根据用户等级获取机关编号前数位 + * + * @param user + * @return + */ + String getOrgnumberByUserLevel(AICUser user,boolean sjCheck); + + OrgUnits getTOrgunitsById(String orgUnitID); + } diff --git a/src/main/java/com/chinaweal/aiccs/org/service/TUsersService.java b/src/main/java/com/chinaweal/aiccs/org/service/TUsersService.java index f9ea7a3..0aeb97b 100644 --- a/src/main/java/com/chinaweal/aiccs/org/service/TUsersService.java +++ b/src/main/java/com/chinaweal/aiccs/org/service/TUsersService.java @@ -75,4 +75,33 @@ public interface TUsersService extends BaseService { */ TUsers saveDoorUser(TUserportal tUserportal); + /** + * 获取用户集合 + * @author ymc + * @since 2024年3月13日 11:29 + * @param userIds + * @return + */ + List listByUserIds(String[] userIds); + + /** + * 转换为AICUser + * + * @param user 用户信息 + * @return 转换结果 + * @author lroyia + * @since 2023年4月26日 10:08:21 + */ + AICUser toAICUser(TUsers user); + + /** + * 根据用户id,获取用户信息 + * + * @param userId 用户id + * @return 用户信息 + * @author lroyia + * @since 2023年4月26日 10:42:16 + */ + AICUser getUserById(String userId); + } diff --git a/src/main/java/com/chinaweal/aiccs/org/service/impl/AicorgServiceImpl.java b/src/main/java/com/chinaweal/aiccs/org/service/impl/AicorgServiceImpl.java index ef248c9..68d9949 100644 --- a/src/main/java/com/chinaweal/aiccs/org/service/impl/AicorgServiceImpl.java +++ b/src/main/java/com/chinaweal/aiccs/org/service/impl/AicorgServiceImpl.java @@ -1,5 +1,6 @@ package com.chinaweal.aiccs.org.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chinaweal.aiccs.common.base.entity.dto.login.LoginMessage; import com.chinaweal.aiccs.common.util.StringUtils; @@ -225,4 +226,29 @@ public class AicorgServiceImpl extends ServiceImpl imple public com.chinaweal.aicorg.model.AICUser queryUserByUserName(String username) { return aicorgMapper.queryUserByUserName(username); } + + @Override + public String getOrgnumberByUserLevel(com.chinaweal.aicorg.model.AICUser user, boolean sjCheck) { + String orgnumber = ""; + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OrgUnits::getOrgUnitId, user.getOrgID()); + OrgUnits orgunits = getOne(queryWrapper); + if(orgunits.getOrgLevel() == 2){ //省级直接查省局自己的业务 + if(sjCheck){ + orgnumber = StringUtils.substring(orgunits.getOrgNumber(),0,2)+"%"; + } else { + orgnumber = "150000"; + } + } else if(orgunits.getOrgLevel() == 3){ //地市 + orgnumber = StringUtils.substring(orgunits.getOrgNumber(),0,4)+"%"; + } else if(orgunits.getOrgLevel() >= 4){ //区级 + orgnumber = StringUtils.substring(orgunits.getOrgNumber(),0,6)+"%"; + } + return orgnumber; + } + + @Override + public OrgUnits getTOrgunitsById(String orgUnitID) { + return baseMapper.selectTOrgunitsById(orgUnitID); + } } diff --git a/src/main/java/com/chinaweal/aiccs/org/service/impl/TUsersServiceImpl.java b/src/main/java/com/chinaweal/aiccs/org/service/impl/TUsersServiceImpl.java index 1040d21..73fb640 100644 --- a/src/main/java/com/chinaweal/aiccs/org/service/impl/TUsersServiceImpl.java +++ b/src/main/java/com/chinaweal/aiccs/org/service/impl/TUsersServiceImpl.java @@ -4,23 +4,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.chinaweal.aiccs.aiccs.abnormal.entity.Gzaiccode; import com.chinaweal.aiccs.aiccs.abnormal.service.IGzaiccodeService; +import com.chinaweal.aiccs.common.util.StringUtils; import com.chinaweal.aiccs.door.entity.TUserportal; import com.chinaweal.aiccs.org.entity.OrgUnits; import com.chinaweal.aiccs.org.entity.TUsers; import com.chinaweal.aiccs.org.mapper.TUsersMapper; +import com.chinaweal.aiccs.org.service.AicorgService; import com.chinaweal.aiccs.org.service.TUsersService; import com.chinaweal.aicorg.model.AICOrg; import com.chinaweal.aicorg.model.AICUser; import com.chinaweal.aicorg.services.OrgUM; import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseServiceImpl; +import org.apache.commons.collections.CollectionUtils; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.UUID; +import java.util.*; /** *

@@ -40,6 +40,8 @@ public class TUsersServiceImpl extends BaseServiceImpl imp @Resource @Lazy private IGzaiccodeService iGzaiccodeService; + @Resource + private AicorgService aicorgService; @Override public void updateTusers(TUsers tUsers) { @@ -218,4 +220,50 @@ public class TUsersServiceImpl extends BaseServiceImpl imp return newUser; } + + @Override + public List listByUserIds(String[] userIds) { + return this.lambdaQuery().in(TUsers::getUserid, userIds).list(); + } + + @Override + public AICUser toAICUser(TUsers user) { + if (user == null) { + return null; + } + AICUser result = new AICUser(); + result.setUserProp(user.getUserprop()); + result.setOrgID(user.getOrgunitid()); + result.setUnitID(user.getOrgdeptid()); + result.setName(user.getRealname()); + result.setEname(user.getUsername()); + result.setPassword(user.getPassword()); + result.setPrimaryKey(user.getUserid()); + Set idList = new HashSet<>(); + if (StringUtils.isNotBlank(user.getOrgunitid())) { + idList.add(user.getOrgunitid()); + } + if (StringUtils.isNotBlank(user.getOrgdeptid())) { + idList.add(user.getOrgdeptid()); + } + if (CollectionUtils.isNotEmpty(idList)) { + List tOrgUnits = aicorgService.listByIds(idList); + for (OrgUnits each : tOrgUnits) { + if (each.getOrgUnitId().equals(result.getOrgID())) { + result.setOrgName(each.getOrgUnitName()); + result.setRegionID(each.getOrgNumber()); + } + if (each.getOrgUnitId().equals(result.getUnitID())) { + result.setUnitName(each.getOrgUnitName()); + } + } + } + return result; + } + + @Override + public AICUser getUserById(String userId) { + return baseMapper.selectUserById(userId); + } + } diff --git a/src/main/resources/mybatis/mapper/aiccs/seriousillegal/XrSeriousIllegalPersonListMapper.xml b/src/main/resources/mybatis/mapper/aiccs/business/XrActivityMapper.xml similarity index 60% rename from src/main/resources/mybatis/mapper/aiccs/seriousillegal/XrSeriousIllegalPersonListMapper.xml rename to src/main/resources/mybatis/mapper/aiccs/business/XrActivityMapper.xml index 46d364a..cd1fb03 100644 --- a/src/main/resources/mybatis/mapper/aiccs/seriousillegal/XrSeriousIllegalPersonListMapper.xml +++ b/src/main/resources/mybatis/mapper/aiccs/business/XrActivityMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/resources/mybatis/mapper/aiccs/business/XrOpinionMapper.xml b/src/main/resources/mybatis/mapper/aiccs/business/XrOpinionMapper.xml new file mode 100644 index 0000000..5e77c71 --- /dev/null +++ b/src/main/resources/mybatis/mapper/aiccs/business/XrOpinionMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mybatis/mapper/aiccs/business/XrTaskAnnexMapper.xml b/src/main/resources/mybatis/mapper/aiccs/business/XrTaskAnnexMapper.xml new file mode 100644 index 0000000..338887b --- /dev/null +++ b/src/main/resources/mybatis/mapper/aiccs/business/XrTaskAnnexMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mybatis/mapper/aiccs/business/XrTaskListMapper.xml b/src/main/resources/mybatis/mapper/aiccs/business/XrTaskListMapper.xml new file mode 100644 index 0000000..529c0b0 --- /dev/null +++ b/src/main/resources/mybatis/mapper/aiccs/business/XrTaskListMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mybatis/mapper/aiccs/seriousillegalPerson/XrSeriousIllegalPersonListMapper.xml b/src/main/resources/mybatis/mapper/aiccs/seriousillegalPerson/XrSeriousIllegalPersonListMapper.xml new file mode 100644 index 0000000..7b66b9c --- /dev/null +++ b/src/main/resources/mybatis/mapper/aiccs/seriousillegalPerson/XrSeriousIllegalPersonListMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mybatis/mapper/aiccs/seriousillegal/XrSeriousIllegalPersonRemListMapper.xml b/src/main/resources/mybatis/mapper/aiccs/seriousillegalPerson/XrSeriousIllegalPersonRemListMapper.xml similarity index 95% rename from src/main/resources/mybatis/mapper/aiccs/seriousillegal/XrSeriousIllegalPersonRemListMapper.xml rename to src/main/resources/mybatis/mapper/aiccs/seriousillegalPerson/XrSeriousIllegalPersonRemListMapper.xml index e793291..14d1d7e 100644 --- a/src/main/resources/mybatis/mapper/aiccs/seriousillegal/XrSeriousIllegalPersonRemListMapper.xml +++ b/src/main/resources/mybatis/mapper/aiccs/seriousillegalPerson/XrSeriousIllegalPersonRemListMapper.xml @@ -1,9 +1,9 @@ - + + - select biz.illegal_list_id as illegalListId, biz.biz_seq_no as bizSeqNo, diff --git a/src/main/resources/mybatis/mapper/aicorg/org/AicorgMapper.xml b/src/main/resources/mybatis/mapper/aicorg/org/AicorgMapper.xml index 06a8f77..aee5d76 100644 --- a/src/main/resources/mybatis/mapper/aicorg/org/AicorgMapper.xml +++ b/src/main/resources/mybatis/mapper/aicorg/org/AicorgMapper.xml @@ -130,4 +130,20 @@ JOIN CXAICORG.t_users ON CXAICORG.t_users.realname=CXAICORG.T_USERPORTAL.realname OR CXAICORG.t_users.USERNAME =CXAICORG.T_USERPORTAL.phone SET LOCALUSERID=userid WHERE cxaicorg.T_USERPORTAL.realname = #{realname} + + diff --git a/src/main/resources/mybatis/mapper/aicorg/org/TUsersMapper.xml b/src/main/resources/mybatis/mapper/aicorg/org/TUsersMapper.xml index 54c49d1..6347f4c 100644 --- a/src/main/resources/mybatis/mapper/aicorg/org/TUsersMapper.xml +++ b/src/main/resources/mybatis/mapper/aicorg/org/TUsersMapper.xml @@ -21,6 +21,21 @@ + + + + + + + + + + + + + + + userid @@ -147,15 +162,23 @@ and c.orgUnitID != #{orgDeptID} - select tg.orgunitname from cxaicorg.t_users tu left join cxaicorg.t_orgunits tg on tu.orgunitid = tg.orgunitid where userid = #{userid} - select tg.orgNumber from cxaicorg.t_users tu left join cxaicorg.t_orgunits tg on tu.orgunitid = tg.orgunitid where userid = #{userid} + +