Browse Source

fix(quality): 修复质量问题赔偿和回复重复插入问题

- 在QualityIssueClaimServiceImpl中添加判断逻辑,避免重复插入赔偿记录
- 使用LambdaQueryWrapper查询现有赔偿记录,存在则更新不存在则新增
- 在QualityIssueReplyServiceImpl中添加判断逻辑,避免重复插入回复记录
- 统一使用update方法处理已有记录的更新操作
- 保持原有的业务流程不变,仅优化数据持久化逻辑
master
qiankanghui 4 weeks ago
parent
commit
8fca01f6f3
  1. 23
      src/main/java/com/xujie/modules/quality/service/impl/QualityIssueClaimServiceImpl.java
  2. 17
      src/main/java/com/xujie/modules/quality/service/impl/QualityIssueReplyServiceImpl.java

23
src/main/java/com/xujie/modules/quality/service/impl/QualityIssueClaimServiceImpl.java

@ -1,5 +1,6 @@
package com.xujie.modules.quality.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xujie.common.utils.ShiroUtils;
import com.xujie.modules.quality.entity.QualityIssueClaim;
@ -38,8 +39,26 @@ public class QualityIssueClaimServiceImpl
qualityIssueClaim.setEntryBy(
ShiroUtils.getUserEntity().getUsername());
qualityIssueClaim.setEntryDate(new Date());
qualityIssueClaimMapper.insertClaim(qualityIssueClaim);
// 更新质量问题主表状态为“已赔偿”
// 判断是否已有赔偿记录:有则更新,无则新增
QualityIssueClaim existing = this.getOne(
new LambdaQueryWrapper<QualityIssueClaim>()
.eq(QualityIssueClaim::getSite, qualityIssueClaim.getSite())
.eq(QualityIssueClaim::getIssueNo, qualityIssueClaim.getIssueNo())
);
if (existing != null) {
qualityIssueClaim.setUpdateBy(ShiroUtils.getUserEntity().getUsername());
qualityIssueClaim.setUpdateDate(new Date());
this.update(qualityIssueClaim,
new LambdaQueryWrapper<QualityIssueClaim>()
.eq(QualityIssueClaim::getSite, existing.getSite())
.eq(QualityIssueClaim::getIssueNo, existing.getIssueNo())
);
} else {
qualityIssueClaimMapper.insertClaim(qualityIssueClaim);
}
// 更新质量问题主表状态为已赔偿
String status = "已赔偿";
qualityIssueMapper.updateStatusByIssueNo(
qualityIssueClaim.getSite(),

17
src/main/java/com/xujie/modules/quality/service/impl/QualityIssueReplyServiceImpl.java

@ -27,8 +27,21 @@ public class QualityIssueReplyServiceImpl extends ServiceImpl<QualityIssueReplyM
qualityIssueReply.setReplyBy(ShiroUtils.getUserEntity().getUsername());
qualityIssueReply.setReplyTime(new Date());
// 2. 新增回复
this.save(qualityIssueReply);
// 2. 判断是否已有回复记录:有则更新,无则新增
QualityIssueReply existing = this.getOne(
new LambdaQueryWrapper<QualityIssueReply>()
.eq(QualityIssueReply::getSite, qualityIssueReply.getSite())
.eq(QualityIssueReply::getIssueNo, qualityIssueReply.getIssueNo())
);
if (existing != null) {
this.update(qualityIssueReply,
new LambdaQueryWrapper<QualityIssueReply>()
.eq(QualityIssueReply::getSite, existing.getSite())
.eq(QualityIssueReply::getIssueNo, existing.getIssueNo())
);
} else {
this.save(qualityIssueReply);
}
// 3. 更新主表的状态和回复信息
QualityIssue updateIssue = new QualityIssue();

Loading…
Cancel
Save