feat: (REQ-3300) 更换状态+日志

This commit is contained in:
xudawei 2025-01-15 20:11:20 +08:00
parent 2dcd43d43b
commit 1d9faea3d4
5 changed files with 73 additions and 16 deletions

View File

@ -16,10 +16,12 @@ public enum VisaStatusEnum {
TO_REPORT("to_report", "待提报"),
DECIDING("deciding", "决策中"),
EXECUTING( "executing","执行中"),
APPROVING( "approving","审批中"),
COMPLETED( "completed","已完成"),
FORBIDED( "forbided","已废除"),
EXECUTING("executing","执行中"),
APPROVING("approving","审批中"),
COMPLETED("completed","已完成"),
FORBIDED("forbided","已废除"),
REPORT_FROM_APPROVE( "report_from_approve","审批到待提报"),
DECIDING_FROM_APPROVE( "deciding_from_approve","审批到决策中"),
;
private final String code;

View File

@ -4,6 +4,7 @@ import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ -19,6 +20,7 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName(value = "visa_change_record_log", autoResultMap = true)
public class ChangeRecordLog extends BaseEntity<ChangeRecordLog> {

View File

@ -1,9 +1,17 @@
package cn.axzo.visa.server.service;
import cn.axzo.visa.server.domain.ChangeRecordLog;
/**
* @author xudawei
* @date 2025/01/15
* @desc 变更签证记录操作日志
*/
public interface ChangeRecordLogService {
/**
* 增加操作日志
*/
void addLog(ChangeRecordLog log);
}

View File

@ -18,5 +18,11 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public class ChangeRecordLogServiceImpl extends ServiceImpl<ChangeRecordLogDao, ChangeRecordLog> implements ChangeRecordLogService {
/**
* 增加操作日志
*/
@Override
public void addLog(ChangeRecordLog log) {
this.saveOrUpdate(log);
}
}

View File

@ -1,15 +1,20 @@
package cn.axzo.visa.server.service.impl;
import cn.axzo.framework.domain.ServiceException;
import cn.axzo.visa.api.enums.VisaStatusEnum;
import cn.axzo.visa.server.domain.ChangeRecord;
import cn.axzo.visa.server.domain.ChangeRecordLog;
import cn.axzo.visa.server.mapper.ChangeRecordDao;
import cn.axzo.visa.server.service.ChangeRecordLogService;
import cn.axzo.visa.server.service.ChangeRecordService;
import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
@ -19,27 +24,61 @@ import java.util.Objects;
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, ChangeRecord> implements ChangeRecordService {
@Resource
private ChangeRecordLogService changeRecordLogService;
public Boolean changeStatus(String changeRecordNo, VisaStatusEnum updateStatus) {
if (StringUtils.isBlank(changeRecordNo) || Objects.isNull(updateStatus)) {
return false;
}
switch (updateStatus) {
case DECIDING:
boolean update = this.lambdaUpdate().eq(ChangeRecord::getNo, changeRecordNo)
.eq(ChangeRecord::getIsDelete, 0)
.in(ChangeRecord::getStatus, this.preStatusListByUpdateStatus(updateStatus))
.set(ChangeRecord::getStatus, updateStatus)
.update();
if (!update) {
throw new ServiceException("更新状态失败");
}
// return this.lambdaUpdate().eq(ChangeRecord::getNo, changeRecordNo)
// .eq(ChangeRecord::getIsDelete, 0)
// .in(ChangeRecord::getStatus,)
// .set(ChangeRecord::getStatus, updateStatus)
// .update();
ChangeRecordLog log = ChangeRecordLog.builder().build();
changeRecordLogService.addLog(log);
return true;
}
/**
* 更新前置状态
*/
private List<VisaStatusEnum> preStatusListByUpdateStatus(VisaStatusEnum updateStatus) {
List<VisaStatusEnum> preStatusList;
switch (updateStatus) {
case REPORT_FROM_APPROVE:
preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING);
break;
case DECIDING_FROM_APPROVE:
preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.APPROVING);
break;
case DECIDING:
preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE,VisaStatusEnum.APPROVING);
break;
case EXECUTING:
preStatusList = Lists.newArrayList(VisaStatusEnum.DECIDING);
break;
case APPROVING:
preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE,VisaStatusEnum.EXECUTING);
break;
case COMPLETED:
preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING);
break;
case FORBIDED:
preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE,VisaStatusEnum.EXECUTING,VisaStatusEnum.APPROVING);
break;
default:
throw new ServiceException("更新状态不匹配");
}
return preStatusList;
}
}