dev
zch 1 week ago
commit d2588fa33c

@ -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);
}
}

@ -101,6 +101,7 @@ public class ErpContractMaterialServiceImpl implements IErpContractMaterialServi
@Override
public Boolean insertByBo(ErpContractMaterialBo bo) {
ErpContractMaterial add = MapstructUtils.convert(bo, ErpContractMaterial.class);
add.setContractMaterialId(null);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

Loading…
Cancel
Save