From fa84bae4f2a1797f0c542da5c01331a8e9076573 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 24 Jun 2026 17:34:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(wmsCoilContractRel):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9=E9=92=A2=E5=8D=B7=E5=90=88?= =?UTF-8?q?=E5=90=8C=E5=85=B3=E8=81=94=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在服务层接口中新增 batchUpdateContractId 方法定义 - 在控制器中添加 /batchUpdateContract 接口支持批量合同修改 - 实现批量更新逻辑,包括钢卷存在性校验和合同ID更新 - 添加缺失钢卷验证并抛出相应业务异常 - 更新后同步钢卷业务员信息 - 使用事务确保数据一致性 --- .../WmsCoilContractRelController.java | 12 +++++ .../service/IWmsCoilContractRelService.java | 9 ++++ .../impl/WmsCoilContractRelServiceImpl.java | 48 +++++++++++++++++++ 3 files changed, 69 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCoilContractRelController.java b/klp-wms/src/main/java/com/klp/controller/WmsCoilContractRelController.java index 917956af6..f93ead442 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsCoilContractRelController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsCoilContractRelController.java @@ -85,6 +85,18 @@ public class WmsCoilContractRelController extends BaseController { return toAjax(iWmsCoilContractRelService.updateByBo(bo)); } + /** + * 批量修改钢卷所挂接的合同 + */ + @Log(title = "钢卷与合同关联关系", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/batchUpdateContract") + public R batchUpdateContract(@NotNull(message = "合同ID不能为空") @RequestParam Long contractId, + @NotEmpty(message = "钢卷ID列表不能为空") @RequestBody List coilIds) { + int updated = iWmsCoilContractRelService.batchUpdateContractId(contractId, coilIds); + return R.ok(updated); + } + /** * 删除钢卷与合同关联关系 * diff --git a/klp-wms/src/main/java/com/klp/service/IWmsCoilContractRelService.java b/klp-wms/src/main/java/com/klp/service/IWmsCoilContractRelService.java index f4f40b299..95d8eb468 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsCoilContractRelService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsCoilContractRelService.java @@ -46,4 +46,13 @@ public interface IWmsCoilContractRelService { * 校验并批量删除钢卷与合同关联关系信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 批量修改钢卷挂接的合同:校验 coilIds 在关联表中是否存在,存在则批量更新 contractId + * + * @param contractId 目标合同ID + * @param coilIds 钢卷ID列表 + * @return 实际更新的记录数 + */ + int batchUpdateContractId(Long contractId, List coilIds); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java index d50fd88c9..c481f7295 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java @@ -17,10 +17,13 @@ import com.klp.domain.WmsMaterialCoil; import com.klp.mapper.WmsCoilContractRelMapper; import com.klp.mapper.WmsMaterialCoilMapper; import com.klp.service.IWmsCoilContractRelService; +import com.klp.common.exception.ServiceException; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.Collections; +import java.util.stream.Collectors; /** * 钢卷与合同关联关系Service业务层处理 @@ -147,4 +150,49 @@ public class WmsCoilContractRelServiceImpl implements IWmsCoilContractRelService } return baseMapper.deleteBatchIds(ids) > 0; } + + /** + * 批量修改钢卷挂接的合同 + */ + @Override + public int batchUpdateContractId(Long contractId, List coilIds) { + if (coilIds == null || coilIds.isEmpty()) { + return 0; + } + // 校验哪些 coilId 在当前关联表中存在 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.in(WmsCoilContractRel::getCoilId, coilIds); + List existList = baseMapper.selectList(queryWrapper); + List validCoilIds = (existList == null || existList.isEmpty()) + ? java.util.Collections.emptyList() + : existList.stream().map(WmsCoilContractRel::getCoilId).distinct().collect(Collectors.toList()); + // 找出不存在的 coilId,查询其钢卷号并抛出异常 + List missingCoilIds = coilIds.stream() + .filter(id -> !validCoilIds.contains(id)) + .collect(Collectors.toList()); + if (!missingCoilIds.isEmpty()) { + LambdaQueryWrapper coilQuery = Wrappers.lambdaQuery(); + coilQuery.in(WmsMaterialCoil::getCoilId, missingCoilIds); + coilQuery.select(WmsMaterialCoil::getCurrentCoilNo); + List missingCoils = coilMapper.selectList(coilQuery); + List missingCoilNos = missingCoils.stream() + .map(WmsMaterialCoil::getCurrentCoilNo) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + throw new ServiceException( + "以下钢卷在当前关联表中不存在,无法批量修改合同:" + String.join(", ", missingCoilNos)); + } + // 批量更新 contractId + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.set(WmsCoilContractRel::getContractId, contractId) + .in(WmsCoilContractRel::getCoilId, validCoilIds); + int updated = baseMapper.update(null, updateWrapper); + // 同步钢卷业务员信息 + if (updated > 0) { + for (Long coilId : validCoilIds) { + syncCoilSaleName(coilId, contractId); + } + } + return updated; + } }