fd00f7d4 by 肖初晴

【DAOP-1.0】企业认证

【功能点】新增接口
1 parent 8f0eb5d7
package com.csbr.qingcloud.portal.controller;
import com.csbr.cloud.common.response.CommonRes;
import csbr.cloud.entity.annotation.SystemLog;
import csbr.cloud.entity.domain.base.vo.PageListVO;
import com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseQueryVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseRQVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO;
import com.csbr.qingcloud.portal.service.EnterpriseService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息-控制器
* @author: xcq
* @create: 2024-12-26 16:18
**/
@RestController
@RequestMapping("/enterprise")
@Tag(name = "企业信息-控制器")
public class EnterpriseController {
@Resource
private EnterpriseService enterpriseService;
//region 基本操作
@PostMapping("/save")
@SystemLog(value = "企业信息-新增")
@Operation(summary = "企业信息-新增")
public CommonRes<Boolean> saveEnterprise(@RequestBody @Valid EnterpriseRQVO vo) {
enterpriseService.saveEnterprise(vo);
return CommonRes.success(true);
}
@PutMapping("/update")
@SystemLog(value = "企业信息-修改")
@Operation(summary = "企业信息-修改")
public CommonRes<Boolean> updateEnterprise(@RequestBody @Valid EnterpriseRQVO vo) {
enterpriseService.updateEnterprise(vo);
return CommonRes.success(true);
}
@DeleteMapping("/delete")
@SystemLog(value = "企业信息-批量删除")
@Operation(summary = "企业信息-批量删除")
public CommonRes<Boolean> removeByGuids(@RequestBody List<String> guids) {
enterpriseService.removeByGuids(guids);
return CommonRes.success(true);
}
@PostMapping("/page-list")
@SystemLog(value = "企业信息-分页")
@Operation(summary = "企业信息-分页")
public CommonRes<PageListVO<EnterpriseRSVO>> pageList(@RequestBody @Valid EnterpriseQueryVO queryVO) {
PageListVO<EnterpriseRSVO> pageVO = enterpriseService.pageList(queryVO);
return CommonRes.success(pageVO);
}
@GetMapping("/detail")
@SystemLog(value = "企业信息-详情")
@Operation(
summary = "企业信息-详情",
parameters = {
@Parameter(name = "guid", description = "企业信息唯一标识", required = true)}
)
public CommonRes<EnterpriseRSVO> getEnterpriseDetail(@RequestParam String guid) {
EnterpriseRSVO vo = enterpriseService.getEnterpriseDetail(guid);
return CommonRes.success(vo);
}
@PostMapping("/flow-call-back")
@SystemLog(value = "企业信息-流程结束后进行业务回调")
@Operation(summary = "企业信息-流程结束后进行业务回调", hidden = true)
public CommonRes<Boolean> flowCallBack(@RequestBody @Valid BizCallbackDTO dto) {
enterpriseService.flowCallBack(dto);
return CommonRes.success(true);
}
//endregion
}
package com.csbr.qingcloud.portal.domain.vo;
import com.csbr.cloud.workflow.domain.dto.appove.FlowBizGuidQueryDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息查询参数
* @author: xcq
* @create: 2024-12-26 16:18
**/
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(title = "企业信息查询参数")
public class EnterpriseQueryVO extends FlowBizGuidQueryDTO {
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃】
*/
@Schema(description = "业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃】")
private String bizApproveState;
/******** 自定义扩展 *****/
/**
* 数据唯一标识【List集合】
*/
@Schema(description = "数据唯一标识", hidden = true)
private List<String> guidList;
/**
* 是否调用查询的判断
*/
@Schema(description = "是否调用查询的判断", hidden = true)
private Boolean isNeedQuery;
}
package com.csbr.qingcloud.portal.domain.vo;
import com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息新增、修改参数
* @author: xcq
* @create: 2024-12-26 16:18
**/
@Data
@Schema(title = "企业信息新增、修改参数")
public class EnterpriseRQVO extends FlowRQBaseVO {
/**
* 公司名称
*/
@Schema(description = "公司名称")
private String tenantName;
/**
* 统一社会信用代码
*/
@Schema(description = "统一社会信用代码")
private String socialCreditCode;
/**
* 企业类型【选择平台字典【公司类型】的选项】
*/
@Schema(description = "企业类型【选择平台字典【公司类型】的选项】")
private String tenantType;
/**
* 注册日期
*/
@Schema(description = "注册日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date registrationDate;
/**
* 注册资本【(万元)】
*/
@Schema(description = "注册资本【(万元)】")
private BigDecimal registeredCapital;
/**
* 税号
*/
@Schema(description = "税号")
private String bankTaxNo;
/**
* 省
*/
@Schema(description = "省")
private String province;
/**
* 市
*/
@Schema(description = "市")
private String city;
/**
* 区
*/
@Schema(description = "区")
private String district;
/**
* 营业期限【1 长期有效;2 自定义】
*/
@Schema(description = "营业期限【1 长期有效;2 自定义】")
private String businessLicenseTerm;
/**
* 营业开始日期
*/
@Schema(description = "营业开始日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date businessLicenseStartDate;
/**
* 营业结束日期
*/
@Schema(description = "营业结束日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date businessLicenseEndDate;
/**
* 营业执照
*/
@Schema(description = "营业执照")
private String businessLicenseJson;
/**
* 营业执照经营范围
*/
@Schema(description = "营业执照经营范围")
private String businessLicenseScope;
/**
* 公司法人
*/
@Schema(description = "公司法人")
private String juridicalPerson;
/**
* 法人证件类型
*/
@Schema(description = "法人证件类型")
private String juridicalPersonIdType;
/**
* 法人证件号
*/
@Schema(description = "法人证件号")
private String juridicalPersonId;
/**
* 法人证件照
*/
@Schema(description = "法人证件照")
private String juridicalPersonIdPhotoJson;
/**
* 登录账号
*/
@Schema(description = "登录账号")
private String logonUser;
/**
* 联系人
*/
@Schema(description = "联系人")
private String contacts;
/**
* 联系人电话
*/
@Schema(description = "联系人电话")
private String contactTel;
/**
* 管理员证件号
*/
@Schema(description = "管理员证件号")
private String managerPersonId;
/**
* 管理员证件照
*/
@Schema(description = "管理员证件照")
private String managerPersonIdPhotoJson;
/**
* 授权委托书
*/
@Schema(description = "授权委托书")
private String authorizationLetter;
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
*/
@Schema(description = "业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】")
private String bizApproveState;
/******** 库表存储属性 需处理 *****/
/******** 自定义扩展 *****/
/******** 子对象 *****/
}
package com.csbr.qingcloud.portal.domain.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.csbr.cloud.workflow.domain.vo.appove.BizApproveVO;
import java.math.BigDecimal;
import java.util.Date;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息返回参数
* @author: xcq
* @create: 2024-12-26 16:18
**/
@Data
@Schema(title = "企业信息返回参数")
public class EnterpriseRSVO {
/**
* 系统唯一标识
*/
@Schema(description = "系统唯一标识")
private String guid;
/**
* 公司名称
*/
@Schema(description = "公司名称")
private String tenantName;
/**
* 统一社会信用代码
*/
@Schema(description = "统一社会信用代码")
private String socialCreditCode;
/**
* 企业类型【选择平台字典【公司类型】的选项】
*/
@Schema(description = "企业类型【选择平台字典【公司类型】的选项】")
private String tenantType;
/**
* 注册日期
*/
@Schema(description = "注册日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date registrationDate;
/**
* 注册资本【(万元)】
*/
@Schema(description = "注册资本【(万元)】")
private BigDecimal registeredCapital;
/**
* 税号
*/
@Schema(description = "税号")
private String bankTaxNo;
/**
* 省
*/
@Schema(description = "省")
private String province;
/**
* 市
*/
@Schema(description = "市")
private String city;
/**
* 区
*/
@Schema(description = "区")
private String district;
/**
* 营业期限【1 长期有效;2 自定义】
*/
@Schema(description = "营业期限【1 长期有效;2 自定义】")
private String businessLicenseTerm;
/**
* 营业开始日期
*/
@Schema(description = "营业开始日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date businessLicenseStartDate;
/**
* 营业结束日期
*/
@Schema(description = "营业结束日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date businessLicenseEndDate;
/**
* 营业执照
*/
@Schema(description = "营业执照")
private String businessLicenseJson;
/**
* 营业执照经营范围
*/
@Schema(description = "营业执照经营范围")
private String businessLicenseScope;
/**
* 公司法人
*/
@Schema(description = "公司法人")
private String juridicalPerson;
/**
* 法人证件类型
*/
@Schema(description = "法人证件类型")
private String juridicalPersonIdType;
/**
* 法人证件号
*/
@Schema(description = "法人证件号")
private String juridicalPersonId;
/**
* 法人证件照
*/
@Schema(description = "法人证件照")
private String juridicalPersonIdPhotoJson;
/**
* 登录账号
*/
@Schema(description = "登录账号")
private String logonUser;
/**
* 联系人
*/
@Schema(description = "联系人")
private String contacts;
/**
* 联系人电话
*/
@Schema(description = "联系人电话")
private String contactTel;
/**
* 管理员证件号
*/
@Schema(description = "管理员证件号")
private String managerPersonId;
/**
* 管理员证件照
*/
@Schema(description = "管理员证件照")
private String managerPersonIdPhotoJson;
/**
* 授权委托书
*/
@Schema(description = "授权委托书")
private String authorizationLetter;
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
*/
@Schema(description = "业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】")
private String bizApproveState;
/******** 库表存储属性 需处理 *****/
/******** 自定义扩展 *****/
/**
* 审批信息
*/
@Schema(description = "审批信息")
private BizApproveVO approveVO;
/******** 子对象 *****/
}
package com.csbr.qingcloud.portal.mybatis.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import csbr.cloud.entity.domain.base.dao.BaseDO;
import jdk.jfr.Name;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息实体
* @author: xcq
* @create: 2024-12-26 16:18
**/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@Name("企业信息")
public class MfEnterprise extends BaseDO {
/**
* 公司名称
*/
@Name("公司名称")
private String tenantName;
/**
* 统一社会信用代码
*/
@Name("统一社会信用代码")
private String socialCreditCode;
/**
* 企业类型【选择平台字典【公司类型】的选项】
*/
@Name("企业类型【选择平台字典【公司类型】的选项】")
private String tenantType;
/**
* 注册日期
*/
@Name("注册日期")
private Date registrationDate;
/**
* 注册资本【(万元)】
*/
@Name("注册资本【(万元)】")
private BigDecimal registeredCapital;
/**
* 税号
*/
@Name("税号")
private String bankTaxNo;
/**
* 省
*/
@Name("省")
private String province;
/**
* 市
*/
@Name("市")
private String city;
/**
* 区
*/
@Name("区")
private String district;
/**
* 营业期限【1 长期有效;2 自定义】
*/
@Name("营业期限【1 长期有效;2 自定义】")
private String businessLicenseTerm;
/**
* 营业开始日期
*/
@Name("营业开始日期")
private Date businessLicenseStartDate;
/**
* 营业结束日期
*/
@Name("营业结束日期")
private Date businessLicenseEndDate;
/**
* 营业执照
*/
@Name("营业执照")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String businessLicenseJson;
/**
* 营业执照经营范围
*/
@Name("营业执照经营范围")
private String businessLicenseScope;
/**
* 公司法人
*/
@Name("公司法人")
private String juridicalPerson;
/**
* 法人证件类型
*/
@Name("法人证件类型")
private String juridicalPersonIdType;
/**
* 法人证件号
*/
@Name("法人证件号")
private String juridicalPersonId;
/**
* 法人证件照
*/
@Name("法人证件照")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String juridicalPersonIdPhotoJson;
/**
* 登录账号
*/
@Name("登录账号")
private String logonUser;
/**
* 联系人
*/
@Name("联系人")
private String contacts;
/**
* 联系人电话
*/
@Name("联系人电话")
private String contactTel;
/**
* 管理员证件号
*/
@Name("管理员证件号")
private String managerPersonId;
/**
* 管理员证件照
*/
@Name("管理员证件照")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String managerPersonIdPhotoJson;
/**
* 授权委托书
*/
@Name("授权委托书")
private String authorizationLetter;
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
*/
@Name("业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】")
private String bizApproveState;
}
package com.csbr.qingcloud.portal.mybatis.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息 Mapper 接口
* @author: xcq
* @create: 2024-12-26 16:18
**/
@Mapper
public interface MfEnterpriseMapper extends BaseMapper<MfEnterprise> {
}
package com.csbr.qingcloud.portal.mybatis.service;
import com.csbr.cloud.base.service.CsbrService;
import com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息逻辑层接口
* @author: xcq
* @create: 2024-12-26 16:18
**/
public interface MfEnterpriseService extends CsbrService<MfEnterprise> {
}
package com.csbr.qingcloud.portal.mybatis.service.impl;
import com.csbr.cloud.mybatis.service.impl.CsbrServiceImpl;
import com.csbr.qingcloud.portal.mybatis.mapper.MfEnterpriseMapper;
import com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise;
import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息逻辑层接口实现
* @author: xcq
* @create: 2024-12-26 16:18
**/
@Service
public class MfEnterpriseServiceImpl extends CsbrServiceImpl<MfEnterpriseMapper, MfEnterprise> implements MfEnterpriseService {
@Resource
private MfEnterpriseMapper mfEnterpriseMapper;
}
package com.csbr.qingcloud.portal.service;
import csbr.cloud.entity.domain.base.vo.PageListVO;
import com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO;
import com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseQueryVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO;
import java.util.List;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息业务逻辑接口
* @author: xcq
* @create: 2024-12-26 16:18
**/
public interface EnterpriseService {
/**
* 企业信息分页查询
* @author xcq
* @date 2024-12-26 16:18
* @param queryVO
* @return com.csbr.cloud.mybatis.entity.PageListVO<com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO>
*/
PageListVO<EnterpriseRSVO> pageList(EnterpriseQueryVO queryVO);
/**
* 企业信息获取详情数据
* @author xcq
* @date 2024-12-26 16:18
* @param guid
* @return com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO
*/
EnterpriseRSVO getEnterpriseDetail(String guid);
/**
* 企业信息数据新增
* @author xcq
* @date 2024-12-26 16:18
* @param flowBaseVO
* @return void
*/
void saveEnterprise(FlowRQBaseVO flowBaseVO);
/**
* 企业信息数据修改
* @author xcq
* @date 2024-12-26 16:18
* @param flowBaseVO
* @return void
*/
void updateEnterprise(FlowRQBaseVO flowBaseVO);
/**
* 企业信息数据删除、并有相关的处理操作
* @author xcq
* @date 2024-12-26 16:18
* @param guids
* @return void
*/
void removeByGuids(List<String> guids);
/**
* 流程结束后进行业务回调
* @author xcq
* @date 2024-12-26 16:18
* @param dto
* @return void
*/
void flowCallBack(BizCallbackDTO dto);
}
package com.csbr.qingcloud.portal.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.csbr.cloud.common.enums.SystemError;
import com.csbr.cloud.common.enums.WorkFlowBizEnum;
import csbr.cloud.entity.enums.ApprovalStateEnum;
import com.csbr.cloud.common.exception.CsbrSystemException;
import com.csbr.cloud.common.util.CommonUtil;
import com.csbr.cloud.common.util.CsbrBeanUtil;
import com.csbr.cloud.workflow.util.ApprovalFlowUtil;
import com.csbr.cloud.workflow.util.FlowAbstractImpl;
import com.csbr.cloud.common.util.MessageSourceUtil;
import csbr.cloud.entity.domain.base.vo.PageListVO;
import com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO;
import com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO;
import com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseQueryVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseRQVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO;
import com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise;
import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService;
import com.csbr.qingcloud.portal.service.EnterpriseService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 企业信息业务逻辑实现
* @author: xcq
* @create: 2024-12-26 16:18
**/
@Slf4j
@Service
public class EnterpriseServiceImpl extends FlowAbstractImpl implements EnterpriseService {
/**
* 功能名称
*/
private static final String FUNCTION_NAME = "企业信息";
@Resource
private MfEnterpriseService mfEnterpriseService;
@Resource
private CsbrBeanUtil csbrBeanUtil;
@Resource
private ApprovalFlowUtil approvalFlowUtil;
@Resource
private MessageSourceUtil messageSourceUtil;
/**
* 企业信息分页查询
* @author xcq
* @date 2024-12-26 16:18
* @param queryVO
* @return com.csbr.cloud.mybatis.entity.PageListVO<com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO>
*/
@Override
public PageListVO<EnterpriseRSVO> pageList(EnterpriseQueryVO queryVO) {
beforeQuery(queryVO);
if (queryVO.getIsNeedQuery()) {
LambdaQueryWrapper<MfEnterprise> queryWrapper = mfEnterpriseService.csbrQueryWrapper(queryVO, MfEnterprise.class);
queryWrapper.in(CollectionUtils.isNotEmpty(queryVO.getGuidList()), MfEnterprise::getGuid,
queryVO.getGuidList());
queryWrapper.orderByDesc(MfEnterprise::getCreateTime);
PageListVO<MfEnterprise> pageList = mfEnterpriseService.csbrPageList(queryVO, queryWrapper);
PageListVO<EnterpriseRSVO> rsPageList = csbrBeanUtil.convert(pageList, PageListVO.class);
afterQuery(pageList, rsPageList);
return rsPageList;
}
return new PageListVO<>();
}
/**
* 企业信息获取详情数据
* @author xcq
* @date 2024-12-26 16:18
* @param guid
* @return com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO
*/
@Override
public EnterpriseRSVO getEnterpriseDetail(String guid) {
if (StringUtils.isBlank(guid)) {
// W00012 = {0}:参数[{1}]不能为空!
throw new CsbrSystemException(SystemError.DATA_INPUT_ERROR, messageSourceUtil.getMessage("W00010",
String.format("获取%s详情数据", FUNCTION_NAME), "数据唯一标识"));
}
MfEnterprise entity = mfEnterpriseService.getById(guid);
if (entity == null) {
throw new CsbrSystemException(SystemError.DATA_NOT_EXISTS, messageSourceUtil.notExistsToSelectMessage(String.format("获取%s详情数据", FUNCTION_NAME)));
}
return convertToVO(entity);
}
/**
* 企业信息数据新增
* @author xcq
* @date 2024-12-26 16:18
* @param flowBaseVO
* @return void
*/
@GlobalTransactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)
@Override
public void saveEnterprise(FlowRQBaseVO flowBaseVO) {
EnterpriseRQVO rqVO = (EnterpriseRQVO) flowBaseVO;
beforeSave(rqVO);
MfEnterprise entity = convertToEntity(rqVO);
// 发起审批流程或保存草稿
AddApprovalDTO approvalDTO = getAddApprovalDTO(entity);
super.startWorkFlow(rqVO, approvalDTO, entity::setBizApproveState);
// 业务数据保存
boolean flag = mfEnterpriseService.save(entity);
if (!flag) {
throw new CsbrSystemException(SystemError.DATA_ADD_ERROR, rqVO.getImmediateApprove() ?
messageSourceUtil.submitMessage(FUNCTION_NAME) : messageSourceUtil.addMessage(FUNCTION_NAME));
}
afterSave(entity, rqVO);
}
/**
* 企业信息数据修改
* @author xcq
* @date 2024-12-26 16:18
* @param flowBaseVO
* @return void
*/
@GlobalTransactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)
@Override
public void updateEnterprise(FlowRQBaseVO flowBaseVO) {
EnterpriseRQVO rqVO = (EnterpriseRQVO) flowBaseVO;
// 将修改前数据查出来缓存下来,传入到修改后方法中,用于一些特殊逻辑处理,如某个值变化才进行
// MfEnterprise oldEntity = mfEnterpriseService.getById(rqVO.getGuid());
beforeUpdate(rqVO);
MfEnterprise entity = convertToEntity(rqVO);
// 发起审批流程或保存草稿
AddApprovalDTO approvalDTO = getAddApprovalDTO(entity);
super.startOrRestartWorkFlow(rqVO, rqVO.getBizApproveState(), approvalDTO, entity::setBizApproveState);
if (rqVO.getIsRestart()) {
// 重新提交
againSubmitFlow(entity, rqVO, approvalDTO);
} else {
// 修改业务数据
boolean flag = mfEnterpriseService.updateById(entity);
if (!flag) {
throw new CsbrSystemException(SystemError.DATA_UPDATE_ERROR, rqVO.getImmediateApprove() ?
messageSourceUtil.submitMessage(FUNCTION_NAME) : messageSourceUtil.updateMessage(FUNCTION_NAME));
}
afterUpdate(entity, rqVO);
}
}
/**
* 重新提交企业信息
* @author xcq
* @date 2024-12-26 16:18
* @param entity
* @param rqVO
* @param approvalDTO
* @return void
*/
private void againSubmitFlow(MfEnterprise entity, EnterpriseRQVO rqVO, AddApprovalDTO approvalDTO) {
// 重新提交的数据重置相关字段
entity.setGuid(CommonUtil.newGuid());
mfEnterpriseService.csbrBaseEntity(entity);
// 保存新数据
boolean flag = mfEnterpriseService.save(entity);
if (!flag) {
throw new CsbrSystemException(SystemError.DATA_ADD_ERROR, messageSourceUtil.addMessage(String.format("重新提交%s",FUNCTION_NAME)));
}
// 发起新的流程
approvalDTO.setGuid(entity.getGuid());
approvalFlowUtil.addApproval(approvalDTO);
afterSave(entity, rqVO);
}
/**
* 企业信息数据删除、并有相关的处理操作
* @author xcq
* @date 2024-12-26 16:18
* @param guids
* @return void
*/
@GlobalTransactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)
@Override
public void removeByGuids(List<String> guids) {
if (CollectionUtils.isEmpty(guids)) {
// W00012 = {0}:参数[{1}]不能为空!
throw new CsbrSystemException(SystemError.DATA_INPUT_ERROR, messageSourceUtil.getMessage("W00012",
String.format("删除%s数据", FUNCTION_NAME), "数据唯一标识"));
}
for (String guid : guids) {
MfEnterprise entity = mfEnterpriseService.getById(guid);
beforeRemove(entity);
boolean flag = mfEnterpriseService.removeById(guid);
if (!flag) {
throw new CsbrSystemException(SystemError.DATA_DEL_ERROR, messageSourceUtil.delMessage(FUNCTION_NAME));
}
afterRemove(entity);
}
// 删除流程数据
approvalFlowUtil.removeApproveByBizGuids(guids);
}
/**
* 流程结束后进行业务回调
* @author xcq
* @date 2024-12-26 16:18
* @param dto
* @return void
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void flowCallBack(BizCallbackDTO dto) {
MfEnterprise entity = mfEnterpriseService.getById(dto.getBizGuid());
if (entity == null) {
throw new CsbrSystemException(SystemError.DATA_NOT_EXISTS, messageSourceUtil.notExistsToSelectMessage(FUNCTION_NAME));
}
if (ApprovalStateEnum.PASSED.getValue().equals(dto.getApprovalState())) {
// todo
}
// 同步更新审批状态
LambdaUpdateWrapper<MfEnterprise> updateWrapper = mfEnterpriseService.csbrUpdateWrapper(MfEnterprise.class);
updateWrapper.set(MfEnterprise::getBizApproveState, dto.getApprovalState());
updateWrapper.eq(MfEnterprise::getGuid, dto.getBizGuid());
boolean flag = mfEnterpriseService.update(updateWrapper);
if (!flag) {
throw new CsbrSystemException(SystemError.DATA_UPDATE_ERROR, messageSourceUtil.updateMessage(String.format("%s的业务审批状态", FUNCTION_NAME)));
}
}
/**
* 获取发起流程参数
* @author xcq
* @date 2024-12-26 16:18
* @param entity
* @return com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO
*/
private AddApprovalDTO getAddApprovalDTO(MfEnterprise entity) {
AddApprovalDTO approvalDTO = new AddApprovalDTO(WorkFlowBizEnum.ENTERPRISE_APPLY.getValue(), entity.getGuid());
// todo
approvalDTO.setFuncCode("QYRZ");
// 流程消息中的变量替换参数
approvalDTO.setFlowMessageBody(null);
// 流程列表数据核心param参数处理
approvalDTO.setParam1(null);
approvalDTO.setParam2(null);
approvalDTO.setParam3(null);
approvalDTO.setParam4(null);
return approvalDTO;
}
/**
* 企业信息新新增前置处理
* @author xcq
* @date 2024-12-26 16:18
* @param rqVO
* @return void
*/
private void beforeSave(EnterpriseRQVO rqVO) {
//region 1.输入基础验证
//endregion
//region 2.数据验证特殊处理
//region 2.1.业务合规性验证
//endregion 2.1.业务合规性验证
//region 2.2.业务数据验证
//endregion 2.2.业务数据验证
//endregion 2.数据验证特殊处理
//region 3.数据转换处理
//region 3.1.数据过程转换
//endregion 3.1.数据过程转换
//endregion 3.数据转换处理
//region 4.数据过滤与补充处理
//endregion 4.数据过滤与补充处理
//region 5.过程处理
//region 5.1.计算逻辑处理
//endregion 5.1.计算逻辑处理
//region 5.2.业务逻辑处理
//endregion 5.2.业务逻辑处理
//endregion 5.过程处理
}
/**
* 企业信息新增后置处理
* @author xcq
* @date 2024-12-26 16:18
* @param entity
* @param rqVO
* @return void
*/
private void afterSave(MfEnterprise entity, EnterpriseRQVO rqVO) {
//region 1.输出特殊转换
//region 1.1.输出过滤与补充处理
//endregion 1.1.输出过滤与补充处理
//endregion 1.输出特殊转换
}
/**
* 企业信息修改前置校验、处理
* @author xcq
* @date 2024-12-26 16:18
* @param rqVO
* @return void
*/
private void beforeUpdate(EnterpriseRQVO rqVO) {
//region 1.输入基础验证
if (StringUtils.isBlank(rqVO.getGuid())) {
// W00012 = {0}:参数[{1}]不能为空!
throw new CsbrSystemException(SystemError.DATA_INPUT_ERROR, messageSourceUtil.getMessage("W00010", String.format("修改%s数据",FUNCTION_NAME), "数据唯一标识"));
}
//endregion
//region 2.数据验证特殊处理
//region 2.1.业务合规性验证
//endregion 2.1.业务合规性验证
//region 2.2.业务数据验证
LambdaQueryWrapper<MfEnterprise> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(MfEnterprise::getGuid, rqVO.getGuid());
queryWrapper.select(MfEnterprise::getGuid, MfEnterprise::getBizApproveState);
MfEnterprise entity = mfEnterpriseService.getOne(queryWrapper);
if (entity == null) {
throw new CsbrSystemException(SystemError.DATA_NOT_EXISTS, messageSourceUtil.notExistsToUpdateMessage(FUNCTION_NAME));
}
//endregion 2.2.业务数据验证
//endregion 2.数据验证特殊处理
//region 3.数据转换处理
//region 3.1.数据过程转换
rqVO.setBizApproveState(entity.getBizApproveState());
//endregion 3.1.数据过程转换
//endregion 3.数据转换处理
//region 4.数据过滤与补充处理
//endregion 4.数据过滤与补充处理
//region 5.过程处理
//region 5.1.计算逻辑处理
//endregion 5.1.计算逻辑处理
//region 5.2.业务逻辑处理
//endregion 5.2.业务逻辑处理
//endregion 5.过程处理
}
/**
* 企业信息修改后置处理
* @author xcq
* @date 2024-12-26 16:18
* @param entity
* @param rqVO
* @return void
*/
protected void afterUpdate(MfEnterprise entity, EnterpriseRQVO rqVO) {
//region 1.输出特殊转换
//region 1.1.输出过滤与补充处理
//endregion 1.1.输出过滤与补充处理
//endregion 1.输出特殊转换
}
/**
* 企业信息删除前置处理
* @author xcq
* @date 2024-12-26 16:18
* @param entity
* @return void
*/
private void beforeRemove(MfEnterprise entity) {
if (entity == null) {
throw new CsbrSystemException(SystemError.DATA_DEL_ERROR, messageSourceUtil.notExistsToDelMessage(FUNCTION_NAME));
}
if (ApprovalStateEnum.CHECKING.getValue().equals(entity.getBizApproveState()) ||
ApprovalStateEnum.PASSED.getValue().equals(entity.getBizApproveState())) {
throw new CsbrSystemException(SystemError.DATA_DEL_ERROR, "审批中和审批通过的数据不能删除!");
}
}
/**
* 企业信息删除后置处理
* @author xcq
* @date 2024-12-26 16:18
* @param entity
* @return void
*/
private void afterRemove(MfEnterprise entity) {
}
/**
* 企业信息查询方法前置验证、处理
* @author xcq
* @date 2024-12-26 16:18
* @param rqQueryVO
* @return void
*/
private void beforeQuery(EnterpriseQueryVO rqQueryVO) {
rqQueryVO.setIsNeedQuery(true);
if (approvalFlowUtil.isQueryBizGuid(rqQueryVO)) {
rqQueryVO.setFlowType(WorkFlowBizEnum.ENTERPRISE_APPLY.getValue());
List<String> bizGuidList = approvalFlowUtil.getApprovalBizGuids(rqQueryVO);
if (CollectionUtils.isEmpty(bizGuidList)) {
rqQueryVO.setIsNeedQuery(false);
} else {
rqQueryVO.setGuidList(bizGuidList);
}
}
}
/**
* 企业信息查询方法后置数据转换、处理
* @author xcq
* @date 2024-12-26 16:18
* @param pageList 数据库查询数据
* @param rsPageList 返回的最终数据
* @return void
*/
private void afterQuery(PageListVO<MfEnterprise> pageList, PageListVO<EnterpriseRSVO> rsPageList) {
if (CollectionUtils.isNotEmpty(pageList.getRecords())) {
rsPageList.setRecords(convertToVO(pageList.getRecords()));
}
// 需要特殊处理数据时使用
/*if(CollectionUtils.isNotEmpty(pageList.getRecords())){
List<EnterpriseRSVO> results = new ArrayList<>();
for (MfEnterprise item : pageList.getRecords()){
EnterpriseRSVO vo = convertToVO(item);
results.add(vo);
}
rsPageList.setRecords(results);
}*/
}
//region 辅助操作
/**
* 企业信息实体数据转换为视图对象数据(多个)
* @author xcq
* @date 2024-12-26 16:18
* @param entityList 实体数据列表
* @return java.util.List<com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO> 视图对象列表
*/
private List<EnterpriseRSVO> convertToVO(List<MfEnterprise> entityList) {
if (CollectionUtils.isEmpty(entityList)) {
// W00012 = {0}:参数[{1}]不能为空!
throw new CsbrSystemException(SystemError.DATA_INPUT_ERROR, messageSourceUtil.getMessage("W00012",
"实体数据转换为视图对象实体数据", "实体数据"));
}
List<EnterpriseRSVO> voList = new ArrayList<>(entityList.size());
for (MfEnterprise item : entityList) {
EnterpriseRSVO vo = convertToVO(item);
voList.add(vo);
}
return voList;
}
/**
* 企业信息实体数据转换为视图对象数据
* @author xcq
* @date 2024-12-26 16:18
* @param entity
* @return com.csbr.qingcloud.portal.domain.vo.EnterpriseRSVO
*/
private EnterpriseRSVO convertToVO(MfEnterprise entity) {
EnterpriseRSVO vo = csbrBeanUtil.convert(entity, EnterpriseRSVO.class);
//流程数据处理
vo.setApproveVO(approvalFlowUtil.getApprovalInfo(entity.getGuid()));
return vo;
}
/**
* 企业信息新增、修改和其他情况的参数转换为实体
* @author xcq
* @date 2024-12-26 16:18
* @param vo
* @return com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise
*/
private MfEnterprise convertToEntity(EnterpriseRQVO vo) {
MfEnterprise entity = csbrBeanUtil.convert(vo, MfEnterprise.class);
// 新增时数据默认guid赋值,转换后该guid可能别使用
if (StringUtils.isBlank(vo.getGuid())) {
entity.setGuid(CommonUtil.newGuid());
}
return entity;
}
//endregion
}
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!