1.1.73 合同物料主键自增存储。

dev
yinq 2 weeks ago
parent f62cbac7f4
commit afcdf10821

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

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

Loading…
Cancel
Save