修复文件bug

This commit is contained in:
2026-06-16 15:13:51 +08:00
parent 8e34f2eb62
commit d294c7b5cd
3 changed files with 173 additions and 10 deletions

View File

@@ -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;
}

View File

@@ -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_idsCSV批量补全物料明细到 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;