|
|
|
|
@ -178,35 +178,29 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
|
|
|
|
|
// if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);
|
|
|
|
|
// update.setCreateTime(DateUtils.getNowDate());
|
|
|
|
|
validEntityBeforeSave(update);
|
|
|
|
|
List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineBoList = bo.getProdBaseProcessProdlineBoList();
|
|
|
|
|
if (ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)) {
|
|
|
|
|
List<ProdBaseProcessProdLine> prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class);
|
|
|
|
|
update.setProdBaseProcessProdlineList(prodBaseProcessProdlineList);
|
|
|
|
|
}
|
|
|
|
|
baseMapper.deleteProdBaseProcessProdlineByProcessId(update.getProcessId());
|
|
|
|
|
try {
|
|
|
|
|
insertProdBaseProcessProdline(update);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new ServiceException("该工序已关联产线!");
|
|
|
|
|
if (!bo.getProdBaseProcessProdlineBoList().isEmpty()){
|
|
|
|
|
updateProdBaseProcessProdline(bo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//更新工序关联资源
|
|
|
|
|
List<ProdBaseProcessResource> processResourceList = bo.getProdBaseProcessResourceList();
|
|
|
|
|
MPJLambdaWrapper<ProdBaseProcessResource> lqwRecord = JoinWrappers.lambda(ProdBaseProcessResource.class);
|
|
|
|
|
lqwRecord.eq(ProdBaseProcessResource::getProcessId, bo.getProcessId());
|
|
|
|
|
List<ProdBaseProcessResource> dataFieldList = processResourceMapper.selectList(lqwRecord);
|
|
|
|
|
if (!processResourceList.isEmpty()) {
|
|
|
|
|
for (ProdBaseProcessResource dataField : processResourceList) {
|
|
|
|
|
processResourceMapper.insertOrUpdate(dataField);
|
|
|
|
|
}
|
|
|
|
|
Set<Long> existingIds = processResourceList.stream()
|
|
|
|
|
.map(ProdBaseProcessResource::getProcessResourceId)
|
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
|
List<ProdBaseProcessResource> filteredIds = dataFieldList.stream()
|
|
|
|
|
.filter(field -> !existingIds.contains(field.getProcessResourceId()))
|
|
|
|
|
.toList();
|
|
|
|
|
for (ProdBaseProcessResource dataField : filteredIds) {
|
|
|
|
|
processResourceMapper.deleteById(dataField.getProcessResourceId());
|
|
|
|
|
MPJLambdaWrapper<ProdBaseProcessResource> lqwRecord = JoinWrappers.lambda(ProdBaseProcessResource.class);
|
|
|
|
|
lqwRecord.eq(ProdBaseProcessResource::getProcessId, bo.getProcessId());
|
|
|
|
|
List<ProdBaseProcessResource> dataFieldList = processResourceMapper.selectList(lqwRecord);
|
|
|
|
|
if (!processResourceList.isEmpty()) {
|
|
|
|
|
for (ProdBaseProcessResource dataField : processResourceList) {
|
|
|
|
|
processResourceMapper.insertOrUpdate(dataField);
|
|
|
|
|
}
|
|
|
|
|
Set<Long> existingIds = processResourceList.stream()
|
|
|
|
|
.map(ProdBaseProcessResource::getProcessResourceId)
|
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
|
List<ProdBaseProcessResource> filteredIds = dataFieldList.stream()
|
|
|
|
|
.filter(field -> !existingIds.contains(field.getProcessResourceId()))
|
|
|
|
|
.toList();
|
|
|
|
|
for (ProdBaseProcessResource dataField : filteredIds) {
|
|
|
|
|
processResourceMapper.deleteById(dataField.getProcessResourceId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return baseMapper.updateById(update) > 0;
|
|
|
|
|
@ -329,5 +323,75 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新工序关联产线
|
|
|
|
|
*
|
|
|
|
|
* @param bo 工序信息业务对象
|
|
|
|
|
*/
|
|
|
|
|
private void updateProdBaseProcessProdline(ProdBaseProcessInfoBo bo) {
|
|
|
|
|
List<ProdBaseProcessProdLineBo> prodlineBoList = bo.getProdBaseProcessProdlineBoList();
|
|
|
|
|
Long processId = bo.getProcessId();
|
|
|
|
|
|
|
|
|
|
ProdBaseProcessProdLineBo queryBo = new ProdBaseProcessProdLineBo();
|
|
|
|
|
queryBo.setProcessId(processId);
|
|
|
|
|
List<ProdBaseProcessProdLineVo> dbProdlineList = prodBaseProcessProdlineService.queryList(queryBo);
|
|
|
|
|
|
|
|
|
|
Set<String> dbKeys = dbProdlineList.stream()
|
|
|
|
|
.map(db -> processId + "_" + db.getProdLineId())
|
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
|
|
|
|
|
|
if (prodlineBoList != null && !prodlineBoList.isEmpty()) {
|
|
|
|
|
// 构建前端传入记录的键集合
|
|
|
|
|
Set<String> newKeys = new HashSet<>();
|
|
|
|
|
List<ProdBaseProcessProdLine> toInsertList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
// 获取当前用户信息用于设置创建信息
|
|
|
|
|
String tenantId = LoginHelper.getTenantId();
|
|
|
|
|
Long deptId = LoginHelper.getDeptId();
|
|
|
|
|
Long userId = LoginHelper.getUserId();
|
|
|
|
|
Date now = DateUtils.getNowDate();
|
|
|
|
|
|
|
|
|
|
for (ProdBaseProcessProdLineBo prodlineBo : prodlineBoList) {
|
|
|
|
|
prodlineBo.setProcessId(processId);
|
|
|
|
|
String key = processId + "_" + prodlineBo.getProdLineId();
|
|
|
|
|
newKeys.add(key);
|
|
|
|
|
|
|
|
|
|
// 如果数据库中不存在该组合,则新增
|
|
|
|
|
if (!dbKeys.contains(key)) {
|
|
|
|
|
ProdBaseProcessProdLine prodline = MapstructUtils.convert(prodlineBo, ProdBaseProcessProdLine.class);
|
|
|
|
|
prodline.setCreateBy(userId);
|
|
|
|
|
prodline.setCreateTime(now);
|
|
|
|
|
prodline.setCreateDept(deptId);
|
|
|
|
|
prodline.setTenantId(tenantId);
|
|
|
|
|
toInsertList.add(prodline);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 批量插入新增的记录
|
|
|
|
|
if (!toInsertList.isEmpty()) {
|
|
|
|
|
try {
|
|
|
|
|
prodBaseProcessProdlineMapper.insertBatch(toInsertList);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new ServiceException("该工序已关联产线!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 找出需要删除的记录(在数据库中但不在新列表中的)
|
|
|
|
|
List<ProdBaseProcessProdLineVo> toDeleteList = dbProdlineList.stream()
|
|
|
|
|
.filter(db -> !newKeys.contains(processId + "_" + db.getProdLineId()))
|
|
|
|
|
.toList();
|
|
|
|
|
|
|
|
|
|
// 删除不再需要的记录
|
|
|
|
|
for (ProdBaseProcessProdLineVo toDelete : toDeleteList) {
|
|
|
|
|
MPJLambdaWrapper<ProdBaseProcessProdLine> deleteWrapper = JoinWrappers.lambda(ProdBaseProcessProdLine.class);
|
|
|
|
|
deleteWrapper.eq(ProdBaseProcessProdLine::getProcessId, processId)
|
|
|
|
|
.eq(ProdBaseProcessProdLine::getProdLineId, toDelete.getProdLineId());
|
|
|
|
|
prodBaseProcessProdlineMapper.delete(deleteWrapper);
|
|
|
|
|
}
|
|
|
|
|
} else if (dbProdlineList != null && !dbProdlineList.isEmpty()) {
|
|
|
|
|
// 如果前端传空,全部删除
|
|
|
|
|
baseMapper.deleteProdBaseProcessProdlineByProcessId(processId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|