|
|
@ -1538,6 +1538,60 @@ public class InspectionRequestServiceImpl extends ServiceImpl<InspectionRequestH |
|
|
log.info("验货申请修改成功: requestNo={}", header.getRequestNo()); |
|
|
log.info("验货申请修改成功: requestNo={}", header.getRequestNo()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
|
@Override |
|
|
|
|
|
public void editSave(InspectionEditSaveVO vo) { |
|
|
|
|
|
if (vo == null || !StringUtils.hasText(vo.getRequestNo())) { |
|
|
|
|
|
throw new RuntimeException("申请单号不能为空"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String requestNo = vo.getRequestNo(); |
|
|
|
|
|
String site = vo.getSite(); |
|
|
|
|
|
if (!StringUtils.hasText(site)) { |
|
|
|
|
|
SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); |
|
|
|
|
|
site = user.getSite(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
log.info("草稿编辑保存开始: requestNo={}, site={}, 明细数量={}", requestNo, site, |
|
|
|
|
|
vo.getItems() != null ? vo.getItems().size() : 0); |
|
|
|
|
|
|
|
|
|
|
|
List<InspectionRequestItemVO> items = vo.getItems(); |
|
|
|
|
|
|
|
|
|
|
|
if (items == null || items.isEmpty()) { |
|
|
|
|
|
// 所有明细都被删除了,回滚PO数量并清空明细记录 |
|
|
|
|
|
log.info("草稿编辑保存-所有明细已被删除,回滚PO数量并清空记录: requestNo={}", requestNo); |
|
|
|
|
|
List<InspectionRequestDetailSub> existingSubs = |
|
|
|
|
|
inspectionRequestDetailSubMapper.selectByRequestNo(site, requestNo); |
|
|
|
|
|
for (InspectionRequestDetailSub sub : existingSubs) { |
|
|
|
|
|
int count = poDetailMapper.rollbackInspectQty( |
|
|
|
|
|
site, sub.getPoNo(), sub.getPoItemNo(), sub.getQty()); |
|
|
|
|
|
if (count == 0) { |
|
|
|
|
|
throw new RuntimeException("回退PO待验货数量失败:" + sub.getPoNo() + "-" + sub.getPoItemNo()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
inspectionRequestDetailSubMapper.deleteByRequestNo(site, requestNo); |
|
|
|
|
|
inspectionRequestDetailMapper.deleteByRequestNo(site, requestNo); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 调用editDetails全量替换明细(回滚旧数量 → 删除旧记录 → 插入新明细并锁定新数量) |
|
|
|
|
|
InspectionRequestEditVO editVO = new InspectionRequestEditVO(); |
|
|
|
|
|
editVO.setRequestNo(requestNo); |
|
|
|
|
|
editVO.setSite(site); |
|
|
|
|
|
editVO.setItems(items); |
|
|
|
|
|
this.editDetails(editVO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 更新基础信息 |
|
|
|
|
|
InspectionRequestHeader header = new InspectionRequestHeader(); |
|
|
|
|
|
header.setRequestNo(requestNo); |
|
|
|
|
|
header.setNeedInspectDate(vo.getNeedInspectDate()); |
|
|
|
|
|
header.setInspectAddress(vo.getInspectAddress()); |
|
|
|
|
|
header.setInspectAddressId(vo.getInspectAddressId()); |
|
|
|
|
|
header.setInspectContract(vo.getInspectContract()); |
|
|
|
|
|
this.updateRequest(header); |
|
|
|
|
|
|
|
|
|
|
|
log.info("草稿编辑保存完成: requestNo={}", requestNo); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Override |
|
|
@Override |
|
|
public void startInspection(String requestNo, Integer itemNo) { |
|
|
public void startInspection(String requestNo, Integer itemNo) { |
|
|
|