Browse Source

fix(supplierPerformance): 修复删除评价请求时的数据查询问题

- 修改SQL查询逻辑,将INNER JOIN改为EXISTS子查询以优化性能
- 调整删除流程,在删除前先查询获取必要数据避免删除后无法获取
- 修复删除失败时的错误提示信息
- 增加数据存在性验证确保删除操作的准确性
master
qiankanghui 7 hours ago
parent
commit
9a03d4a6f9
  1. 8
      src/main/java/com/xujie/modules/supplierPerformance/service/impl/PerEvaluateRequestServiceImpl.java
  2. 10
      src/main/resources/mapper/supplierPerformance/PerEvaluateRequestMapper.xml

8
src/main/java/com/xujie/modules/supplierPerformance/service/impl/PerEvaluateRequestServiceImpl.java

@ -302,12 +302,16 @@ public class PerEvaluateRequestServiceImpl extends ServiceImpl<PerEvaluateReques
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResponseData perEvaluateRequestDelete(PerEvaluateRequestEntity data) { public ResponseData perEvaluateRequestDelete(PerEvaluateRequestEntity data) {
// 先查询再删除删除后无法根据 id 再查到 requestNo/site
PerEvaluateRequestEntity one = lambdaQuery().eq(PerEvaluateRequestEntity::getId, data.getId()).one();
if (one == null) {
return buildError("单据不存在,删除失败 requestId=" + data.getId());
}
// 删除头 // 删除头
boolean hDel = removeById(data); boolean hDel = removeById(data);
if (!hDel) { if (!hDel) {
return buildError("单据不存在或删除失败 requestId=" + data.getId());
return buildError("单据删除失败 requestId=" + data.getId());
} }
PerEvaluateRequestEntity one = lambdaQuery().eq(PerEvaluateRequestEntity::getId, data.getId()).one();
// 删除责任人明细 // 删除责任人明细
perEvaluateRequestDetailMapper.delete(new QueryWrapper<PerEvaluateRequestOwnerEntity>() perEvaluateRequestDetailMapper.delete(new QueryWrapper<PerEvaluateRequestOwnerEntity>()
.eq("site", one.getSite()) .eq("site", one.getSite())

10
src/main/resources/mapper/supplierPerformance/PerEvaluateRequestMapper.xml

@ -19,14 +19,16 @@
LEFT JOIN performance_indicator_template pit LEFT JOIN performance_indicator_template pit
ON pit.site = a.site ON pit.site = a.site
AND pit.template_no = a.template_no AND pit.template_no = a.template_no
<where>
a.site = #{query.site}
<if test="query.selectType == 3"> <if test="query.selectType == 3">
INNER JOIN per_evaluate_request_owner o
ON o.site = a.site
AND EXISTS (
SELECT 1 FROM per_evaluate_request_owner o
WHERE o.site = a.site
AND o.request_no = a.request_no AND o.request_no = a.request_no
AND o.owner = #{query.username} AND o.owner = #{query.username}
)
</if> </if>
<where>
a.site = #{query.site}
<if test="query.selectType == 1"> <if test="query.selectType == 1">
AND a.create_by = #{query.username} AND a.create_by = #{query.username}
</if> </if>

Loading…
Cancel
Save