|
|
|
|
@ -298,6 +298,7 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
|
|
|
|
|
Long customerId = add.getOneCustomerId();
|
|
|
|
|
for (ErpContractMaterial erpContractMaterial : contractMaterialList) {
|
|
|
|
|
erpContractMaterial.setContractId(add.getContractId());
|
|
|
|
|
erpContractMaterial.setContractMaterialId(null);
|
|
|
|
|
// 处理关联物料信息
|
|
|
|
|
processRelationMaterial(erpContractMaterial, customerId);
|
|
|
|
|
contractMaterialMapper.insert(erpContractMaterial);
|
|
|
|
|
@ -392,25 +393,37 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
|
|
|
|
|
MPJLambdaWrapper<ErpContractMaterial> lqwRecord = JoinWrappers.lambda(ErpContractMaterial.class);
|
|
|
|
|
lqwRecord.eq(ErpContractMaterial::getContractId, bo.getContractId());
|
|
|
|
|
List<ErpContractMaterial> contractMaterialOldList = contractMaterialMapper.selectList(lqwRecord);
|
|
|
|
|
Set<Long> oldMaterialIds = contractMaterialOldList.stream()
|
|
|
|
|
.map(ErpContractMaterial::getContractMaterialId)
|
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
|
if (contractMaterialList != null && !contractMaterialList.isEmpty()) {
|
|
|
|
|
Long customerId = bo.getOneCustomerId();
|
|
|
|
|
Set<Long> newMaterialIds = new HashSet<>();
|
|
|
|
|
for (ErpContractMaterial contractMaterial : contractMaterialList) {
|
|
|
|
|
contractMaterial.setContractId(bo.getContractId());
|
|
|
|
|
processRelationMaterial(contractMaterial, customerId);
|
|
|
|
|
contractMaterialMapper.insertOrUpdate(contractMaterial);
|
|
|
|
|
Long contractMaterialId = contractMaterial.getContractMaterialId();
|
|
|
|
|
if (contractMaterialId != null && oldMaterialIds.contains(contractMaterialId)) {
|
|
|
|
|
contractMaterialMapper.updateById(contractMaterial);
|
|
|
|
|
newMaterialIds.add(contractMaterialId);
|
|
|
|
|
} else {
|
|
|
|
|
contractMaterial.setContractMaterialId(null);
|
|
|
|
|
contractMaterialMapper.insert(contractMaterial);
|
|
|
|
|
newMaterialIds.add(contractMaterial.getContractMaterialId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Set<Long> existingContractMaterialIds = contractMaterialList.stream()
|
|
|
|
|
List<Long> toDelete = contractMaterialOldList.stream()
|
|
|
|
|
.map(ErpContractMaterial::getContractMaterialId)
|
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
|
List<ErpContractMaterial> filterContractMaterialIds = contractMaterialOldList.stream()
|
|
|
|
|
.filter(material -> !existingContractMaterialIds.contains(material.getContractMaterialId()))
|
|
|
|
|
.filter(id -> !newMaterialIds.contains(id))
|
|
|
|
|
.toList();
|
|
|
|
|
for (ErpContractMaterial filterContractMaterialId : filterContractMaterialIds) {
|
|
|
|
|
contractMaterialMapper.deleteById(filterContractMaterialId.getContractMaterialId());
|
|
|
|
|
if (!toDelete.isEmpty()) {
|
|
|
|
|
contractMaterialMapper.deleteByIds(toDelete);
|
|
|
|
|
}
|
|
|
|
|
} else if (contractMaterialList != null && !contractMaterialOldList.isEmpty()) {
|
|
|
|
|
for (ErpContractMaterial contractMaterial : contractMaterialOldList) {
|
|
|
|
|
contractMaterialMapper.deleteById(contractMaterial.getContractMaterialId());
|
|
|
|
|
}
|
|
|
|
|
List<Long> toDelete = contractMaterialOldList.stream()
|
|
|
|
|
.map(ErpContractMaterial::getContractMaterialId)
|
|
|
|
|
.toList();
|
|
|
|
|
contractMaterialMapper.deleteByIds(toDelete);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|