feat(wmsCoilContractRel): 添加批量修改钢卷合同关联功能
- 在服务层接口中新增 batchUpdateContractId 方法定义 - 在控制器中添加 /batchUpdateContract 接口支持批量合同修改 - 实现批量更新逻辑,包括钢卷存在性校验和合同ID更新 - 添加缺失钢卷验证并抛出相应业务异常 - 更新后同步钢卷业务员信息 - 使用事务确保数据一致性
This commit is contained in:
@@ -85,6 +85,18 @@ public class WmsCoilContractRelController extends BaseController {
|
||||
return toAjax(iWmsCoilContractRelService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量修改钢卷所挂接的合同
|
||||
*/
|
||||
@Log(title = "钢卷与合同关联关系", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/batchUpdateContract")
|
||||
public R<Integer> batchUpdateContract(@NotNull(message = "合同ID不能为空") @RequestParam Long contractId,
|
||||
@NotEmpty(message = "钢卷ID列表不能为空") @RequestBody List<Long> coilIds) {
|
||||
int updated = iWmsCoilContractRelService.batchUpdateContractId(contractId, coilIds);
|
||||
return R.ok(updated);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除钢卷与合同关联关系
|
||||
*
|
||||
|
||||
@@ -46,4 +46,13 @@ public interface IWmsCoilContractRelService {
|
||||
* 校验并批量删除钢卷与合同关联关系信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 批量修改钢卷挂接的合同:校验 coilIds 在关联表中是否存在,存在则批量更新 contractId
|
||||
*
|
||||
* @param contractId 目标合同ID
|
||||
* @param coilIds 钢卷ID列表
|
||||
* @return 实际更新的记录数
|
||||
*/
|
||||
int batchUpdateContractId(Long contractId, List<Long> coilIds);
|
||||
}
|
||||
|
||||
@@ -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<Long> coilIds) {
|
||||
if (coilIds == null || coilIds.isEmpty()) {
|
||||
return 0;
|
||||
}
|
||||
// 校验哪些 coilId 在当前关联表中存在
|
||||
LambdaQueryWrapper<WmsCoilContractRel> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.in(WmsCoilContractRel::getCoilId, coilIds);
|
||||
List<WmsCoilContractRel> existList = baseMapper.selectList(queryWrapper);
|
||||
List<Long> validCoilIds = (existList == null || existList.isEmpty())
|
||||
? java.util.Collections.emptyList()
|
||||
: existList.stream().map(WmsCoilContractRel::getCoilId).distinct().collect(Collectors.toList());
|
||||
// 找出不存在的 coilId,查询其钢卷号并抛出异常
|
||||
List<Long> missingCoilIds = coilIds.stream()
|
||||
.filter(id -> !validCoilIds.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
if (!missingCoilIds.isEmpty()) {
|
||||
LambdaQueryWrapper<WmsMaterialCoil> coilQuery = Wrappers.lambdaQuery();
|
||||
coilQuery.in(WmsMaterialCoil::getCoilId, missingCoilIds);
|
||||
coilQuery.select(WmsMaterialCoil::getCurrentCoilNo);
|
||||
List<WmsMaterialCoil> missingCoils = coilMapper.selectList(coilQuery);
|
||||
List<String> missingCoilNos = missingCoils.stream()
|
||||
.map(WmsMaterialCoil::getCurrentCoilNo)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.collect(Collectors.toList());
|
||||
throw new ServiceException(
|
||||
"以下钢卷在当前关联表中不存在,无法批量修改合同:" + String.join(", ", missingCoilNos));
|
||||
}
|
||||
// 批量更新 contractId
|
||||
LambdaUpdateWrapper<WmsCoilContractRel> 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user