Browse Source

refactor(inspection): 优化验货数量修改检查逻辑

- 移除冗余的日志输出代码
- 简化数量对比逻辑,直接比较申请数量与PO总数量
- 移除异常捕获包装,简化方法结构
- 优化变量命名,提高代码可读性
- 移除不必要的注释信息
master
qiankanghui 4 weeks ago
parent
commit
9ee9938b2d
  1. 68
      src/main/java/com/xujie/modules/inspection/service/impl/InspectionRequestServiceImpl.java

68
src/main/java/com/xujie/modules/inspection/service/impl/InspectionRequestServiceImpl.java

@ -74,60 +74,40 @@ public class InspectionRequestServiceImpl extends ServiceImpl<InspectionRequestH
* 如果 sub.qty != waitInspectQty说明用户修改了验货数量
*/
private boolean checkHasModifiedQty(String site, String requestNo) {
try {
log.info("开始检查验货数量修改: site={}, requestNo={}", site, requestNo);
// 1. 查询该申请单的所有 sub 记录
List<InspectionRequestDetailSub> subList = inspectionRequestDetailSubMapper.selectByRequestNo(site, requestNo);
if (subList == null || subList.isEmpty()) {
log.info("subList 为空,返回 false");
return false;
}
log.info("subList 大小: {}", subList.size());
// 2. 逐条检查比较 sub.qty waitInspectQty
for (InspectionRequestDetailSub sub : subList) {
log.info("检查 sub: poNo={}, itemNo={}, qty={}", sub.getPoNo(), sub.getPoItemNo(), sub.getQty());
List<InspectionRequestDetailSub> subList =
inspectionRequestDetailSubMapper.selectByRequestNo(site, requestNo);
// 查询 PODetail 表中的信息
java.util.Map<String, Object> poInfo = poDetailMapper.getPoDetailInspectInfo(
site, sub.getPoNo(), sub.getPoItemNo());
if (subList == null || subList.isEmpty()) {
return false;
}
if (poInfo != null) {
log.info("PODetail 信息: {}", poInfo);
for (InspectionRequestDetailSub sub : subList) {
// 获取未验货数量注意MyBatis返回的Map键名是下划线命名
BigDecimal remainQty = new BigDecimal(poInfo.get("remain_qty").toString());
BigDecimal subQty = sub.getQty();
Map<String, Object> poInfo =
poDetailMapper.getPoDetailInspectInfo(
site,
sub.getPoNo(),
sub.getPoItemNo());
log.info("remainQty={}, subQty={}", remainQty, subQty);
if (poInfo == null) {
continue;
}
// 计算原始的 waitInspectQty = 当前 remainQty + sub.qty
BigDecimal originalWaitInspectQty = remainQty.add(subQty);
// PO总数量
BigDecimal poQty =
new BigDecimal(poInfo.get("qty").toString());
log.info("originalWaitInspectQty={}", originalWaitInspectQty);
// 本次申请数量
BigDecimal subQty = sub.getQty();
// 如果 sub.qty != 原始 waitInspectQty说明有修改
if (subQty.compareTo(originalWaitInspectQty) != 0) {
log.info("检测到数量修改: requestNo={}, poNo={}, itemNo={}, subQty={}, originalWaitInspectQty={}",
requestNo, sub.getPoNo(), sub.getPoItemNo(), subQty, originalWaitInspectQty);
return true;
} else {
log.info("数量未修改: subQty == originalWaitInspectQty");
}
} else {
log.warn("PODetail 信息查询结果为空");
}
// 不等于PO总数量 => 部分验货 => 标红
if (subQty.compareTo(poQty) != 0) {
return true;
}
log.info("所有 sub 都未检测到修改,返回 false");
return false;
} catch (Exception e) {
log.error("检查验货数量修改状态失败: site={}, requestNo={}", site, requestNo, e);
return false;
}
return false;
}

Loading…
Cancel
Save