修复文件bug
This commit is contained in:
@@ -108,5 +108,10 @@ public class OaRequirementsVo extends BaseEntity {
|
||||
/** 附件文件列表(已联查 sys_oss,每项形如 "<ossId>|<originalName>|<url>",逗号分隔) */
|
||||
private String accessoryFiles;
|
||||
|
||||
/** 审批状态:null=未提交审批,0=待审,1=通过,2=驳回,3=撤回 */
|
||||
private Integer approvalStatus;
|
||||
/** 审批单 id(最新一次) */
|
||||
private Long approvalInstanceId;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -14,14 +14,19 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.oa.domain.bo.OaRequirementsBo;
|
||||
import com.ruoyi.oa.domain.vo.OaRequirementsVo;
|
||||
import com.ruoyi.oa.domain.OaApprovalInstance;
|
||||
import com.ruoyi.oa.domain.OaRequirements;
|
||||
import com.ruoyi.oa.domain.SysOaWarehouse;
|
||||
import com.ruoyi.oa.mapper.OaApprovalInstanceMapper;
|
||||
import com.ruoyi.oa.mapper.OaRequirementsMapper;
|
||||
import com.ruoyi.oa.mapper.SysOaWarehouseMapper;
|
||||
import com.ruoyi.oa.service.IOaApprovalService;
|
||||
import com.ruoyi.oa.service.IOaRequirementsService;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -39,12 +44,18 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
public class OaRequirementsServiceImpl implements IOaRequirementsService {
|
||||
|
||||
public static final String BIZ_TYPE = "purchase_req";
|
||||
|
||||
private final OaRequirementsMapper baseMapper;
|
||||
|
||||
private final OaWarehouseAuditService auditService;
|
||||
|
||||
private final SysOaWarehouseMapper warehouseMapper;
|
||||
|
||||
private final IOaApprovalService approvalService;
|
||||
|
||||
private final OaApprovalInstanceMapper approvalInstanceMapper;
|
||||
|
||||
/**
|
||||
* 查询OA 需求
|
||||
*/
|
||||
@@ -52,9 +63,33 @@ public class OaRequirementsServiceImpl implements IOaRequirementsService {
|
||||
public OaRequirementsVo queryById(Long requirementId){
|
||||
OaRequirementsVo vo = baseMapper.selectVoById(requirementId);
|
||||
enrichMaterials(Collections.singletonList(vo));
|
||||
enrichApproval(Collections.singletonList(vo));
|
||||
return vo;
|
||||
}
|
||||
|
||||
/** 给 VO 列表注入审批状态(最新一条实例) */
|
||||
private void enrichApproval(List<OaRequirementsVo> list) {
|
||||
if (list == null || list.isEmpty()) return;
|
||||
List<Long> ids = list.stream().filter(v -> v != null && v.getRequirementId() != null)
|
||||
.map(OaRequirementsVo::getRequirementId).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 (OaRequirementsVo v : list) {
|
||||
if (v == null) continue;
|
||||
OaApprovalInstance i = latest.get(v.getRequirementId());
|
||||
if (i != null) {
|
||||
v.setApprovalStatus(i.getStatus());
|
||||
v.setApprovalInstanceId(i.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** 根据 material_ids(CSV)批量补全物料明细到 VO.materials */
|
||||
private void enrichMaterials(List<OaRequirementsVo> list) {
|
||||
if (list == null || list.isEmpty()) return;
|
||||
@@ -110,6 +145,7 @@ public class OaRequirementsServiceImpl implements IOaRequirementsService {
|
||||
QueryWrapper<OaRequirements> lqw = buildQueryWrapper(bo);
|
||||
Page<OaRequirementsVo> result = baseMapper.selectVoListPage(pageQuery.build(), lqw);
|
||||
enrichMaterials(result.getRecords());
|
||||
enrichApproval(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
@@ -121,6 +157,7 @@ public class OaRequirementsServiceImpl implements IOaRequirementsService {
|
||||
QueryWrapper<OaRequirements> lqw = buildQueryWrapper(bo);
|
||||
List<OaRequirementsVo> list = baseMapper.selectVoListForExport(lqw);
|
||||
enrichMaterials(list);
|
||||
enrichApproval(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
@@ -161,6 +198,8 @@ public class OaRequirementsServiceImpl implements IOaRequirementsService {
|
||||
bo.setRequirementId(add.getRequirementId());
|
||||
auditService.log(OpType.REQ_CREATE, OpType.REF_REQUIREMENT, add.getRequirementId(),
|
||||
"新建采购需求:" + add.getTitle());
|
||||
// 触发审批流
|
||||
approvalService.submit(BIZ_TYPE, add.getRequirementId(), add.getTitle());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
@@ -172,6 +211,17 @@ 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) {
|
||||
throw new com.ruoyi.common.exception.ServiceException("该采购需求尚未审批通过,无法推进状态");
|
||||
}
|
||||
}
|
||||
boolean ok = baseMapper.updateById(update) > 0;
|
||||
if (ok) {
|
||||
String op = OpType.REQ_UPDATE;
|
||||
|
||||
Reference in New Issue
Block a user