93798d0e by 肖初晴

【DAOP-1.0】服务商维护

【功能点】新增接口
1 parent 3cfe259f
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.ServicerMaintainQueryVO;
import com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRQVO;
import com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO;
import com.csbr.qingcloud.portal.service.ServicerMaintainService;
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-31 18:49
**/
@RestController
@RequestMapping("/servicer-maintain")
@Tag(name = "服务商维护-控制器")
public class ServicerMaintainController {
@Resource
private ServicerMaintainService servicerMaintainService;
//region 基本操作
@PostMapping("/save")
@SystemLog(value = "服务商维护-新增")
@Operation(summary = "服务商维护-新增")
public CommonRes<Boolean> saveServicerMaintain(@RequestBody @Valid ServicerMaintainRQVO vo) {
servicerMaintainService.saveServicerMaintain(vo);
return CommonRes.success(true);
}
@PutMapping("/update")
@SystemLog(value = "服务商维护-修改")
@Operation(summary = "服务商维护-修改")
public CommonRes<Boolean> updateServicerMaintain(@RequestBody @Valid ServicerMaintainRQVO vo) {
servicerMaintainService.updateServicerMaintain(vo);
return CommonRes.success(true);
}
@DeleteMapping("/delete")
@SystemLog(value = "服务商维护-批量删除")
@Operation(summary = "服务商维护-批量删除")
public CommonRes<Boolean> removeByGuids(@RequestBody List<String> guids) {
servicerMaintainService.removeByGuids(guids);
return CommonRes.success(true);
}
@PostMapping("/page-list")
@SystemLog(value = "服务商维护-分页")
@Operation(summary = "服务商维护-分页")
public CommonRes<PageListVO<ServicerMaintainRSVO>> pageList(@RequestBody @Valid ServicerMaintainQueryVO queryVO) {
PageListVO<ServicerMaintainRSVO> pageVO = servicerMaintainService.pageList(queryVO);
return CommonRes.success(pageVO);
}
@GetMapping("/detail")
@SystemLog(value = "服务商维护-详情")
@Operation(
summary = "服务商维护-详情",
parameters = {
@Parameter(name = "guid", description = "服务商维护唯一标识", required = true)}
)
public CommonRes<ServicerMaintainRSVO> getServicerMaintainDetail(@RequestParam String guid) {
ServicerMaintainRSVO vo = servicerMaintainService.getServicerMaintainDetail(guid);
return CommonRes.success(vo);
}
@PostMapping("/flow-call-back")
@SystemLog(value = "服务商维护-流程结束后进行业务回调")
@Operation(summary = "服务商维护-流程结束后进行业务回调", hidden = true)
public CommonRes<Boolean> flowCallBack(@RequestBody @Valid BizCallbackDTO dto) {
servicerMaintainService.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.util.Date;
import java.util.List;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护查询参数
* @author: xcq
* @create: 2024-12-31 18:49
**/
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(title = "服务商维护查询参数")
public class ServicerMaintainQueryVO 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.util.Date;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护新增、修改参数
* @author: xcq
* @create: 2024-12-31 18:49
**/
@Data
@Schema(title = "服务商维护新增、修改参数")
public class ServicerMaintainRQVO extends FlowRQBaseVO {
/**
* 企业唯一标识
*/
@Schema(description = "企业唯一标识")
private String tenantGuid;
/**
* 公司名称
*/
@Schema(description = "公司名称")
private String tenantName;
/**
* 企业类型【选择平台字典【公司类型】的选项】
*/
@Schema(description = "企业类型【选择平台字典【公司类型】的选项】")
private String tenantType;
/**
* 提交时间
*/
@Schema(description = "提交时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date submitTime;
/**
* 联系人
*/
@Schema(description = "联系人")
private String contacts;
/**
* 联系人电话
*/
@Schema(description = "联系人电话")
private String contactTel;
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
*/
@Schema(description = "业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】")
private String bizApproveState;
/**
* 能否继续合作【Y 能;N 不能;】
*/
@Schema(description = "能否继续合作【Y 能;N 不能;】")
private String canContinueCollaborate;
/**
* 维护信息
*/
@Schema(description = "维护信息")
private String maintainJson;
/******** 库表存储属性 需处理 *****/
/******** 自定义扩展 *****/
/******** 子对象 *****/
}
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.util.Date;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护返回参数
* @author: xcq
* @create: 2024-12-31 18:49
**/
@Data
@Schema(title = "服务商维护返回参数")
public class ServicerMaintainRSVO {
/**
* 系统唯一标识
*/
@Schema(description = "系统唯一标识")
private String guid;
/**
* 企业唯一标识
*/
@Schema(description = "企业唯一标识")
private String tenantGuid;
/**
* 公司名称
*/
@Schema(description = "公司名称")
private String tenantName;
/**
* 企业类型【选择平台字典【公司类型】的选项】
*/
@Schema(description = "企业类型【选择平台字典【公司类型】的选项】")
private String tenantType;
/**
* 提交时间
*/
@Schema(description = "提交时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date submitTime;
/**
* 联系人
*/
@Schema(description = "联系人")
private String contacts;
/**
* 联系人电话
*/
@Schema(description = "联系人电话")
private String contactTel;
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
*/
@Schema(description = "业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】")
private String bizApproveState;
/**
* 能否继续合作【Y 能;N 不能;】
*/
@Schema(description = "能否继续合作【Y 能;N 不能;】")
private String canContinueCollaborate;
/**
* 维护信息
*/
@Schema(description = "维护信息")
private String maintainJson;
/******** 库表存储属性 需处理 *****/
/******** 自定义扩展 *****/
/**
* 审批信息
*/
@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.util.Date;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护实体
* @author: xcq
* @create: 2024-12-31 18:49
**/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@Name("服务商维护")
public class MfServicerMaintain extends BaseDO {
/**
* 企业唯一标识
*/
@Name("企业唯一标识")
private String tenantGuid;
/**
* 公司名称
*/
@Name("公司名称")
private String tenantName;
/**
* 企业类型【选择平台字典【公司类型】的选项】
*/
@Name("企业类型【选择平台字典【公司类型】的选项】")
private String tenantType;
/**
* 提交时间
*/
@Name("提交时间")
private Date submitTime;
/**
* 联系人
*/
@Name("联系人")
private String contacts;
/**
* 联系人电话
*/
@Name("联系人电话")
private String contactTel;
/**
* 业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】
*/
@Name("业务审批状态【N 草稿中,A 审批中,Y 已通过,R 驳回,C 已撤销,D 已废弃; 默认 N】")
private String bizApproveState;
/**
* 能否继续合作【Y 能;N 不能;】
*/
@Name("能否继续合作【Y 能;N 不能;】")
private String canContinueCollaborate;
/**
* 维护信息
*/
@Name("维护信息")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String maintainJson;
}
package com.csbr.qingcloud.portal.mybatis.entity;
import csbr.cloud.entity.domain.base.dao.BaseDO;
import jdk.jfr.Name;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护明细实体
* @author: xcq
* @create: 2024-12-31 18:52
**/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@Name("服务商维护明细")
public class MfServicerMaintainDetail extends BaseDO {
/**
* 企业唯一标识
*/
@Name("企业唯一标识")
private String tenantGuid;
/**
* 父唯一标识
*/
@Name("父唯一标识")
private String parentGuid;
/**
* 字典唯一标识
*/
@Name("字典唯一标识")
private String dicGuid;
/**
* 字典值
*/
@Name("字典值")
private String dicValue;
}
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.MfServicerMaintainDetail;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护明细 Mapper 接口
* @author: xcq
* @create: 2024-12-31 18:52
**/
@Mapper
public interface MfServicerMaintainDetailMapper extends BaseMapper<MfServicerMaintainDetail> {
}
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.MfServicerMaintain;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护 Mapper 接口
* @author: xcq
* @create: 2024-12-31 18:49
**/
@Mapper
public interface MfServicerMaintainMapper extends BaseMapper<MfServicerMaintain> {
}
package com.csbr.qingcloud.portal.mybatis.service;
import com.csbr.cloud.base.service.CsbrService;
import com.csbr.qingcloud.portal.mybatis.entity.MfServicerMaintainDetail;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护明细逻辑层接口
* @author: xcq
* @create: 2024-12-31 18:52
**/
public interface MfServicerMaintainDetailService extends CsbrService<MfServicerMaintainDetail> {
}
package com.csbr.qingcloud.portal.mybatis.service;
import com.csbr.cloud.base.service.CsbrService;
import com.csbr.qingcloud.portal.mybatis.entity.MfServicerMaintain;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护逻辑层接口
* @author: xcq
* @create: 2024-12-31 18:49
**/
public interface MfServicerMaintainService extends CsbrService<MfServicerMaintain> {
}
package com.csbr.qingcloud.portal.mybatis.service.impl;
import com.csbr.cloud.mybatis.service.impl.CsbrServiceImpl;
import com.csbr.qingcloud.portal.mybatis.mapper.MfServicerMaintainDetailMapper;
import com.csbr.qingcloud.portal.mybatis.entity.MfServicerMaintainDetail;
import com.csbr.qingcloud.portal.mybatis.service.MfServicerMaintainDetailService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护明细逻辑层接口实现
* @author: xcq
* @create: 2024-12-31 18:52
**/
@Service
public class MfServicerMaintainDetailServiceImpl extends CsbrServiceImpl<MfServicerMaintainDetailMapper, MfServicerMaintainDetail> implements MfServicerMaintainDetailService {
@Resource
private MfServicerMaintainDetailMapper mfServicerMaintainDetailMapper;
}
package com.csbr.qingcloud.portal.mybatis.service.impl;
import com.csbr.cloud.mybatis.service.impl.CsbrServiceImpl;
import com.csbr.qingcloud.portal.mybatis.mapper.MfServicerMaintainMapper;
import com.csbr.qingcloud.portal.mybatis.entity.MfServicerMaintain;
import com.csbr.qingcloud.portal.mybatis.service.MfServicerMaintainService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护逻辑层接口实现
* @author: xcq
* @create: 2024-12-31 18:49
**/
@Service
public class MfServicerMaintainServiceImpl extends CsbrServiceImpl<MfServicerMaintainMapper, MfServicerMaintain> implements MfServicerMaintainService {
@Resource
private MfServicerMaintainMapper mfServicerMaintainMapper;
}
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.ServicerMaintainQueryVO;
import com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO;
import java.util.List;
/**
* @program: D:/git/ms-data-circulation-portal-service
* @description: 服务商维护业务逻辑接口
* @author: xcq
* @create: 2024-12-31 18:49
**/
public interface ServicerMaintainService {
/**
* 服务商维护分页查询
* @author xcq
* @date 2024-12-31 18:49
* @param queryVO
* @return com.csbr.cloud.mybatis.entity.PageListVO<com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO>
*/
PageListVO<ServicerMaintainRSVO> pageList(ServicerMaintainQueryVO queryVO);
/**
* 服务商维护获取详情数据
* @author xcq
* @date 2024-12-31 18:49
* @param guid
* @return com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO
*/
ServicerMaintainRSVO getServicerMaintainDetail(String guid);
/**
* 服务商维护数据新增
* @author xcq
* @date 2024-12-31 18:49
* @param flowBaseVO
* @return void
*/
void saveServicerMaintain(FlowRQBaseVO flowBaseVO);
/**
* 服务商维护数据修改
* @author xcq
* @date 2024-12-31 18:49
* @param flowBaseVO
* @return void
*/
void updateServicerMaintain(FlowRQBaseVO flowBaseVO);
/**
* 服务商维护数据删除、并有相关的处理操作
* @author xcq
* @date 2024-12-31 18:49
* @param guids
* @return void
*/
void removeByGuids(List<String> guids);
/**
* 流程结束后进行业务回调
* @author xcq
* @date 2024-12-31 18:49
* @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.ServicerMaintainQueryVO;
import com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRQVO;
import com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO;
import com.csbr.qingcloud.portal.mybatis.entity.MfServicerMaintain;
import com.csbr.qingcloud.portal.mybatis.service.MfServicerMaintainService;
import com.csbr.qingcloud.portal.service.ServicerMaintainService;
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-31 18:49
**/
@Slf4j
@Service
public class ServicerMaintainServiceImpl extends FlowAbstractImpl implements ServicerMaintainService {
/**
* 功能名称
*/
private static final String FUNCTION_NAME = "服务商维护";
/**
* 流程类型
*/
private static final String FLOW_TYPE = "10016";
@Resource
private MfServicerMaintainService mfServicerMaintainService;
@Resource
private CsbrBeanUtil csbrBeanUtil;
@Resource
private ApprovalFlowUtil approvalFlowUtil;
@Resource
private MessageSourceUtil messageSourceUtil;
/**
* 服务商维护分页查询
* @author xcq
* @date 2024-12-31 18:49
* @param queryVO
* @return com.csbr.cloud.mybatis.entity.PageListVO<com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO>
*/
@Override
public PageListVO<ServicerMaintainRSVO> pageList(ServicerMaintainQueryVO queryVO) {
beforeQuery(queryVO);
if (queryVO.getIsNeedQuery()) {
LambdaQueryWrapper<MfServicerMaintain> queryWrapper = mfServicerMaintainService.csbrQueryWrapper(queryVO, MfServicerMaintain.class);
queryWrapper.in(CollectionUtils.isNotEmpty(queryVO.getGuidList()), MfServicerMaintain::getGuid,
queryVO.getGuidList());
queryWrapper.orderByDesc(MfServicerMaintain::getCreateTime);
PageListVO<MfServicerMaintain> pageList = mfServicerMaintainService.csbrPageList(queryVO, queryWrapper);
PageListVO<ServicerMaintainRSVO> rsPageList = csbrBeanUtil.convert(pageList, PageListVO.class);
afterQuery(pageList, rsPageList);
return rsPageList;
}
return new PageListVO<>();
}
/**
* 服务商维护获取详情数据
* @author xcq
* @date 2024-12-31 18:49
* @param guid
* @return com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO
*/
@Override
public ServicerMaintainRSVO getServicerMaintainDetail(String guid) {
if (StringUtils.isBlank(guid)) {
// W00012 = {0}:参数[{1}]不能为空!
throw new CsbrSystemException(SystemError.DATA_INPUT_ERROR, messageSourceUtil.getMessage("W00010",
String.format("获取%s详情数据", FUNCTION_NAME), "数据唯一标识"));
}
MfServicerMaintain entity = mfServicerMaintainService.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-31 18:49
* @param flowBaseVO
* @return void
*/
@GlobalTransactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)
@Override
public void saveServicerMaintain(FlowRQBaseVO flowBaseVO) {
ServicerMaintainRQVO rqVO = (ServicerMaintainRQVO) flowBaseVO;
beforeSave(rqVO);
MfServicerMaintain entity = convertToEntity(rqVO);
// 发起审批流程或保存草稿
AddApprovalDTO approvalDTO = getAddApprovalDTO(entity);
super.startWorkFlow(rqVO, approvalDTO, entity::setBizApproveState);
// 业务数据保存
boolean flag = mfServicerMaintainService.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-31 18:49
* @param flowBaseVO
* @return void
*/
@GlobalTransactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)
@Override
public void updateServicerMaintain(FlowRQBaseVO flowBaseVO) {
ServicerMaintainRQVO rqVO = (ServicerMaintainRQVO) flowBaseVO;
// 将修改前数据查出来缓存下来,传入到修改后方法中,用于一些特殊逻辑处理,如某个值变化才进行
// MfServicerMaintain oldEntity = mfServicerMaintainService.getById(rqVO.getGuid());
beforeUpdate(rqVO);
MfServicerMaintain 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 = mfServicerMaintainService.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-31 18:49
* @param entity
* @param rqVO
* @param approvalDTO
* @return void
*/
private void againSubmitFlow(MfServicerMaintain entity, ServicerMaintainRQVO rqVO, AddApprovalDTO approvalDTO) {
// 重新提交的数据重置相关字段
entity.setGuid(CommonUtil.newGuid());
mfServicerMaintainService.csbrBaseEntity(entity);
// 保存新数据
boolean flag = mfServicerMaintainService.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-31 18:49
* @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) {
MfServicerMaintain entity = mfServicerMaintainService.getById(guid);
beforeRemove(entity);
boolean flag = mfServicerMaintainService.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-31 18:49
* @param dto
* @return void
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void flowCallBack(BizCallbackDTO dto) {
MfServicerMaintain entity = mfServicerMaintainService.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<MfServicerMaintain> updateWrapper = mfServicerMaintainService.csbrUpdateWrapper(MfServicerMaintain.class);
updateWrapper.set(MfServicerMaintain::getBizApproveState, dto.getApprovalState());
updateWrapper.eq(MfServicerMaintain::getGuid, dto.getBizGuid());
boolean flag = mfServicerMaintainService.update(updateWrapper);
if (!flag) {
throw new CsbrSystemException(SystemError.DATA_UPDATE_ERROR, messageSourceUtil.updateMessage(String.format("%s的业务审批状态", FUNCTION_NAME)));
}
}
/**
* 获取发起流程参数
* @author xcq
* @date 2024-12-31 18:49
* @param entity
* @return com.csbr.cloud.workflow.domain.dto.appove.AddApprovalDTO
*/
private AddApprovalDTO getAddApprovalDTO(MfServicerMaintain entity) {
AddApprovalDTO approvalDTO = new AddApprovalDTO(FLOW_TYPE, entity.getGuid());
// todo
approvalDTO.setFuncCode("FWSWH");
// 流程消息中的变量替换参数
approvalDTO.setFlowMessageBody(null);
// 流程列表数据核心param参数处理
approvalDTO.setParam1(null);
approvalDTO.setParam2(null);
approvalDTO.setParam3(null);
approvalDTO.setParam4(null);
return approvalDTO;
}
/**
* 服务商维护新新增前置处理
* @author xcq
* @date 2024-12-31 18:49
* @param rqVO
* @return void
*/
private void beforeSave(ServicerMaintainRQVO 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-31 18:49
* @param entity
* @param rqVO
* @return void
*/
private void afterSave(MfServicerMaintain entity, ServicerMaintainRQVO rqVO) {
//region 1.输出特殊转换
//region 1.1.输出过滤与补充处理
//endregion 1.1.输出过滤与补充处理
//endregion 1.输出特殊转换
}
/**
* 服务商维护修改前置校验、处理
* @author xcq
* @date 2024-12-31 18:49
* @param rqVO
* @return void
*/
private void beforeUpdate(ServicerMaintainRQVO 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<MfServicerMaintain> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(MfServicerMaintain::getGuid, rqVO.getGuid());
queryWrapper.select(MfServicerMaintain::getGuid, MfServicerMaintain::getBizApproveState);
MfServicerMaintain entity = mfServicerMaintainService.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-31 18:49
* @param entity
* @param rqVO
* @return void
*/
protected void afterUpdate(MfServicerMaintain entity, ServicerMaintainRQVO rqVO) {
//region 1.输出特殊转换
//region 1.1.输出过滤与补充处理
//endregion 1.1.输出过滤与补充处理
//endregion 1.输出特殊转换
}
/**
* 服务商维护删除前置处理
* @author xcq
* @date 2024-12-31 18:49
* @param entity
* @return void
*/
private void beforeRemove(MfServicerMaintain 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-31 18:49
* @param entity
* @return void
*/
private void afterRemove(MfServicerMaintain entity) {
}
/**
* 服务商维护查询方法前置验证、处理
* @author xcq
* @date 2024-12-31 18:49
* @param rqQueryVO
* @return void
*/
private void beforeQuery(ServicerMaintainQueryVO rqQueryVO) {
rqQueryVO.setIsNeedQuery(true);
if (approvalFlowUtil.isQueryBizGuid(rqQueryVO)) {
rqQueryVO.setFlowType(FLOW_TYPE);
List<String> bizGuidList = approvalFlowUtil.getApprovalBizGuids(rqQueryVO);
if (CollectionUtils.isEmpty(bizGuidList)) {
rqQueryVO.setIsNeedQuery(false);
} else {
rqQueryVO.setGuidList(bizGuidList);
}
}
}
/**
* 服务商维护查询方法后置数据转换、处理
* @author xcq
* @date 2024-12-31 18:49
* @param pageList 数据库查询数据
* @param rsPageList 返回的最终数据
* @return void
*/
private void afterQuery(PageListVO<MfServicerMaintain> pageList, PageListVO<ServicerMaintainRSVO> rsPageList) {
if (CollectionUtils.isNotEmpty(pageList.getRecords())) {
rsPageList.setRecords(convertToVO(pageList.getRecords()));
}
// 需要特殊处理数据时使用
/*if(CollectionUtils.isNotEmpty(pageList.getRecords())){
List<ServicerMaintainRSVO> results = new ArrayList<>();
for (MfServicerMaintain item : pageList.getRecords()){
ServicerMaintainRSVO vo = convertToVO(item);
results.add(vo);
}
rsPageList.setRecords(results);
}*/
}
//region 辅助操作
/**
* 服务商维护实体数据转换为视图对象数据(多个)
* @author xcq
* @date 2024-12-31 18:49
* @param entityList 实体数据列表
* @return java.util.List<com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO> 视图对象列表
*/
private List<ServicerMaintainRSVO> convertToVO(List<MfServicerMaintain> entityList) {
if (CollectionUtils.isEmpty(entityList)) {
// W00012 = {0}:参数[{1}]不能为空!
throw new CsbrSystemException(SystemError.DATA_INPUT_ERROR, messageSourceUtil.getMessage("W00012",
"实体数据转换为视图对象实体数据", "实体数据"));
}
List<ServicerMaintainRSVO> voList = new ArrayList<>(entityList.size());
for (MfServicerMaintain item : entityList) {
ServicerMaintainRSVO vo = convertToVO(item);
voList.add(vo);
}
return voList;
}
/**
* 服务商维护实体数据转换为视图对象数据
* @author xcq
* @date 2024-12-31 18:49
* @param entity
* @return com.csbr.qingcloud.portal.domain.vo.ServicerMaintainRSVO
*/
private ServicerMaintainRSVO convertToVO(MfServicerMaintain entity) {
ServicerMaintainRSVO vo = csbrBeanUtil.convert(entity, ServicerMaintainRSVO.class);
//流程数据处理
vo.setApproveVO(approvalFlowUtil.getApprovalInfo(entity.getGuid()));
return vo;
}
/**
* 服务商维护新增、修改和其他情况的参数转换为实体
* @author xcq
* @date 2024-12-31 18:49
* @param vo
* @return com.csbr.qingcloud.portal.mybatis.entity.MfServicerMaintain
*/
private MfServicerMaintain convertToEntity(ServicerMaintainRQVO vo) {
MfServicerMaintain entity = csbrBeanUtil.convert(vo, MfServicerMaintain.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!