ProcessSpecInfoManagerImpl.java
package com.mycim.server.spec.manager.impl;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.mycim.framework.utils.lang.BooleanUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.server.prp.manager.ProcessManager;
import com.mycim.server.spec.dao.ProcessSpecInfoDao;
import com.mycim.server.spec.manager.ProcessSpecInfoManager;
import com.mycim.valueobject.bas.TransactionLog;
import com.mycim.valueobject.consts.VersionStatus;
import com.mycim.valueobject.prp.ProcessSpecInfo;
import com.mycim.valueobject.prp.ProcessVersion;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
/**
* @author Qiansheng.Wang
* @version 1.0
* @since 2020-09-03
*/
@Service
@Transactional
public class ProcessSpecInfoManagerImpl implements ProcessSpecInfoManager {
@Autowired
ProcessSpecInfoDao processSpecInfoDao;
@Autowired
ProcessManager processManager;
@Override
public void saveProcessSpecItemInfo(TransactionLog transactionLog, ProcessSpecInfo processSpecInfo) {
processSpecInfo.setLastUpdatedUser(transactionLog.getTransPerformedBy());
processSpecInfo.setLastUpdatedTime(transactionLog.getTransStartTimestamp());
// 每次save 更新 versionLastUpdateTime
ProcessVersion processVersionInfo = processManager
.getProcessVersionInfo(processSpecInfo.getProcessRrn(), processSpecInfo.getProcessVersion());
processSpecInfo.setVersionLastUpdateTime(processVersionInfo.getLastUpdateTimestamp());
if (StringUtils.isBlank(processSpecInfo.getCreateUserId()) || processSpecInfo.getCreateTime() == null) {
processSpecInfo.setCreateUserId(transactionLog.getTransPerformedBy());
processSpecInfo.setCreateTime(transactionLog.getTransStartTimestamp());
processSpecInfoDao.insertProcessSpecInfo(processSpecInfo);
} else {
processSpecInfoDao.updateProcessSpecInfo(processSpecInfo);
}
}
@Override
public void updateStatusOfProcessSpecInfo(TransactionLog transactionLog, ProcessSpecInfo processSpecInfo,
String targetStatus) {
Assert.isFalse(targetStatus == null, Errors.create().content("Target Status cannot be empty.").build());
if (!BooleanUtils.toBoolean(processSpecInfo.getActiveFlag()) &&
StringUtils.equalsIgnoreCase(targetStatus, VersionStatus.ACTIVE_KEY)) {//在原本的判定方式中,冻结时就会进入开始激活
processSpecInfo.setActiveFlag(true);
processSpecInfo.setActiveTime(transactionLog.getTransStartTimestamp());
processSpecInfo.setActiveUser(transactionLog.getTransPerformedBy());
}
processSpecInfo.setCurrentStatus(targetStatus);
processSpecInfo.setLastUpdatedTime(transactionLog.getTransStartTimestamp());
processSpecInfo.setLastUpdatedUser(transactionLog.getTransPerformedBy());
processSpecInfoDao.updateProcessSpecInfo(processSpecInfo);
}
@Override
public ProcessSpecInfo getProcessSpecInfoByPrimaryKey(Long processRrn, Integer processVersion) {
return processSpecInfoDao.getProcessSpecInfoByPrimaryKey(processRrn, processVersion);
}
@Override
public List<ProcessSpecInfo> getProcessSpecItemInfos(Long processRrn) {
List<ProcessSpecInfo> result = processSpecInfoDao.getProcessSpecInfos(processRrn);
if (CollectionUtils.isEmpty(result)) {
result = Collections.emptyList();
}
return result;
}
@Override
public List<Integer> getAllProcessVersions(Long processRrn) {
List<Integer> result = processSpecInfoDao.getAllProcessVersions(processRrn);
if (CollectionUtils.isEmpty(result)) {
result = Collections.emptyList();
}
return result;
}
@Override
public List<Integer> getAllActivatedProcessVersions(Long processRrn) {
List<Integer> result = processSpecInfoDao.getAllActivatedProcessVersions(processRrn);
if (CollectionUtils.isEmpty(result)) {
result = Collections.emptyList();
}
return result;
}
@Override
public Integer getHighestActivatedProcessVersion(Long processRrn) {
return processSpecInfoDao.getHighestActivatedProcessVersion(processRrn);
}
@Override
public boolean hasActiveProcessSpec(long processRrn, Integer processVersionId) {
return processSpecInfoDao.hasActiveProcessSpec(processRrn, processVersionId);
}
}