diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java index 93f44acb..8b5941e7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java @@ -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; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java index 5ea1c964..bded7e7a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java @@ -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 { diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java index ec7d3b09..90140fb2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java @@ -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); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java index ea07a3d2..59385afc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -18,5 +18,11 @@ import org.springframework.stereotype.Service; @RequiredArgsConstructor public class ChangeRecordLogServiceImpl extends ServiceImpl implements ChangeRecordLogService { - + /** + * 增加操作日志 + */ + @Override + public void addLog(ChangeRecordLog log) { + this.saveOrUpdate(log); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 4d7ed879..04350145 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -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 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 preStatusListByUpdateStatus(VisaStatusEnum updateStatus) { + List 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; + } + }