|
|
|
@ -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; |
|
|
|
|
|
|
|
List<InspectionRequestDetailSub> subList = |
|
|
|
inspectionRequestDetailSubMapper.selectByRequestNo(site, requestNo); |
|
|
|
|
|
|
|
if (subList == null || subList.isEmpty()) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
for (InspectionRequestDetailSub sub : subList) { |
|
|
|
|
|
|
|
Map<String, Object> poInfo = |
|
|
|
poDetailMapper.getPoDetailInspectInfo( |
|
|
|
site, |
|
|
|
sub.getPoNo(), |
|
|
|
sub.getPoItemNo()); |
|
|
|
|
|
|
|
if (poInfo == null) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
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()); |
|
|
|
|
|
|
|
// 查询 PODetail 表中的信息 |
|
|
|
java.util.Map<String, Object> poInfo = poDetailMapper.getPoDetailInspectInfo( |
|
|
|
site, sub.getPoNo(), sub.getPoItemNo()); |
|
|
|
|
|
|
|
if (poInfo != null) { |
|
|
|
log.info("PODetail 信息: {}", poInfo); |
|
|
|
|
|
|
|
// 获取未验货数量(注意:MyBatis返回的Map键名是下划线命名) |
|
|
|
BigDecimal remainQty = new BigDecimal(poInfo.get("remain_qty").toString()); |
|
|
|
BigDecimal subQty = sub.getQty(); |
|
|
|
|
|
|
|
log.info("remainQty={}, subQty={}", remainQty, subQty); |
|
|
|
|
|
|
|
// 计算原始的 waitInspectQty = 当前 remainQty + sub.qty |
|
|
|
BigDecimal originalWaitInspectQty = remainQty.add(subQty); |
|
|
|
|
|
|
|
log.info("originalWaitInspectQty={}", originalWaitInspectQty); |
|
|
|
|
|
|
|
// 如果 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总数量 |
|
|
|
BigDecimal poQty = |
|
|
|
new BigDecimal(poInfo.get("qty").toString()); |
|
|
|
|
|
|
|
// 本次申请数量 |
|
|
|
BigDecimal subQty = sub.getQty(); |
|
|
|
|
|
|
|
// 不等于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; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|