添加顶部导航,添加采购与合同审批,另外添加采购流合同流说明
This commit is contained in:
@@ -138,4 +138,9 @@ public class SysOaContractVo {
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/** 审批状态:null=未提交审批,0=待审,1=通过,2=驳回,3=撤回 */
|
||||
private Integer approvalStatus;
|
||||
/** 审批单 id(最新一次) */
|
||||
private Long approvalInstanceId;
|
||||
|
||||
}
|
||||
|
||||
@@ -211,14 +211,15 @@ public class OaRequirementsServiceImpl implements IOaRequirementsService {
|
||||
public Boolean updateByBo(OaRequirementsBo bo) {
|
||||
OaRequirements update = BeanUtil.toBean(bo, OaRequirements.class);
|
||||
validEntityBeforeSave(update);
|
||||
// 推进到采购中/完成 前必须审批通过
|
||||
// 推进到采购中/完成 前需审批通过;
|
||||
// 若审批未启用/未配置 (无实例),则放行,避免「停用审批反而卡住业务」。
|
||||
if (bo.getStatus() != null && (bo.getStatus() == 1 || bo.getStatus() == 2)) {
|
||||
OaApprovalInstance i = approvalInstanceMapper.selectOne(
|
||||
Wrappers.<OaApprovalInstance>lambdaQuery()
|
||||
.eq(OaApprovalInstance::getBusinessType, BIZ_TYPE)
|
||||
.eq(OaApprovalInstance::getBusinessId, bo.getRequirementId())
|
||||
.orderByDesc(OaApprovalInstance::getId).last("LIMIT 1"));
|
||||
if (i == null || i.getStatus() == null || i.getStatus() != 1) {
|
||||
if (i != null && (i.getStatus() == null || i.getStatus() != 1)) {
|
||||
throw new com.ruoyi.common.exception.ServiceException("该采购需求尚未审批通过,无法推进状态");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,19 @@ import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.oa.domain.bo.SysOaContractBo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaContractVo;
|
||||
import com.ruoyi.oa.domain.SysOaContract;
|
||||
import com.ruoyi.oa.domain.OaApprovalInstance;
|
||||
import com.ruoyi.oa.mapper.SysOaContractMapper;
|
||||
import com.ruoyi.oa.mapper.OaApprovalInstanceMapper;
|
||||
import com.ruoyi.oa.service.ISysOaContractService;
|
||||
import com.ruoyi.oa.service.IOaApprovalService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 合同管理Service业务层处理
|
||||
@@ -33,16 +40,26 @@ import java.util.Collection;
|
||||
@Service
|
||||
public class SysOaContractServiceImpl implements ISysOaContractService {
|
||||
|
||||
public static final String BIZ_TYPE = "contract";
|
||||
|
||||
@Autowired
|
||||
private SysOaContractMapper contractMapper;
|
||||
|
||||
@Autowired
|
||||
private IOaApprovalService approvalService;
|
||||
|
||||
@Autowired
|
||||
private OaApprovalInstanceMapper approvalInstanceMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 查询合同管理
|
||||
*/
|
||||
@Override
|
||||
public SysOaContractVo queryById(Long contractId){
|
||||
return contractMapper.selectVoById(contractId);
|
||||
SysOaContractVo vo = contractMapper.selectVoById(contractId);
|
||||
enrichApproval(Collections.singletonList(vo));
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -52,6 +69,7 @@ public class SysOaContractServiceImpl implements ISysOaContractService {
|
||||
public TableDataInfo<SysOaContractVo> queryPageList(SysOaContractBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<SysOaContract> lqw = buildQueryWrapper(bo);
|
||||
Page<SysOaContractVo> result = contractMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
enrichApproval(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
@@ -61,7 +79,32 @@ public class SysOaContractServiceImpl implements ISysOaContractService {
|
||||
@Override
|
||||
public List<SysOaContractVo> queryList(SysOaContractBo bo) {
|
||||
LambdaQueryWrapper<SysOaContract> lqw = buildQueryWrapper(bo);
|
||||
return contractMapper.selectVoList(lqw);
|
||||
List<SysOaContractVo> list = contractMapper.selectVoList(lqw);
|
||||
enrichApproval(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
/** 给 VO 列表注入审批状态(最新一条实例) */
|
||||
private void enrichApproval(List<SysOaContractVo> list) {
|
||||
if (list == null || list.isEmpty()) return;
|
||||
List<Long> ids = list.stream().filter(v -> v != null && v.getContractId() != null)
|
||||
.map(SysOaContractVo::getContractId).collect(Collectors.toList());
|
||||
if (ids.isEmpty()) return;
|
||||
List<OaApprovalInstance> insts = approvalInstanceMapper.selectList(
|
||||
Wrappers.<OaApprovalInstance>lambdaQuery()
|
||||
.eq(OaApprovalInstance::getBusinessType, BIZ_TYPE)
|
||||
.in(OaApprovalInstance::getBusinessId, ids)
|
||||
.orderByAsc(OaApprovalInstance::getId));
|
||||
Map<Long, OaApprovalInstance> latest = new HashMap<>();
|
||||
for (OaApprovalInstance i : insts) latest.put(i.getBusinessId(), i);
|
||||
for (SysOaContractVo v : list) {
|
||||
if (v == null) continue;
|
||||
OaApprovalInstance i = latest.get(v.getContractId());
|
||||
if (i != null) {
|
||||
v.setApprovalStatus(i.getStatus());
|
||||
v.setApprovalInstanceId(i.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,6 +162,8 @@ public class SysOaContractServiceImpl implements ISysOaContractService {
|
||||
boolean flag = contractMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setContractId(add.getContractId());
|
||||
// 触发审批流(依赖 oa_approval_config 里 contract 配置;未配置/未启用会跳过)
|
||||
approvalService.submit(BIZ_TYPE, add.getContractId(), add.getContractName());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
@@ -146,6 +191,17 @@ public class SysOaContractServiceImpl implements ISysOaContractService {
|
||||
public Boolean updateByBo(SysOaContractBo bo) {
|
||||
SysOaContract update = BeanUtil.toBean(bo, SysOaContract.class);
|
||||
validEntityBeforeSave(update);
|
||||
// 标记「完结」(1) 前必须审批通过;若审批未启用/未配置 (无实例),放行。
|
||||
if (bo.getContractStatus() != null && "1".equals(bo.getContractStatus())) {
|
||||
OaApprovalInstance i = approvalInstanceMapper.selectOne(
|
||||
Wrappers.<OaApprovalInstance>lambdaQuery()
|
||||
.eq(OaApprovalInstance::getBusinessType, BIZ_TYPE)
|
||||
.eq(OaApprovalInstance::getBusinessId, bo.getContractId())
|
||||
.orderByDesc(OaApprovalInstance::getId).last("LIMIT 1"));
|
||||
if (i != null && (i.getStatus() == null || i.getStatus() != 1)) {
|
||||
throw new com.ruoyi.common.exception.ServiceException("该合同尚未审批通过,无法标记为完结");
|
||||
}
|
||||
}
|
||||
return contractMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user