From 8d4b42aef0b290fb3094d12a784c750779e3ad55 Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 27 Nov 2020 10:04:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E3=80=90=E6=9D=83?= =?UTF-8?q?=E9=99=90=E5=88=9D=E5=A7=8B=E5=8C=96=E5=99=A8=E3=80=91=E5=81=9A?= =?UTF-8?q?=E4=BA=86=E9=92=88=E5=AF=B9opeName=E5=92=8Cbrief=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/config/PermissionInitializer.java | 47 +++++++++++-------- .../com/epmet/service/OperationService.java | 1 + .../service/impl/OperationServiceImpl.java | 6 +++ 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/config/PermissionInitializer.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/config/PermissionInitializer.java index a88f27c992..9d1d3c6de7 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/config/PermissionInitializer.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/config/PermissionInitializer.java @@ -4,13 +4,11 @@ import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.entity.OperationEntity; import com.epmet.service.OperationService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.util.CollectionUtils; import javax.annotation.PostConstruct; import java.util.*; -import java.util.stream.Collectors; @Configuration public class PermissionInitializer { @@ -23,38 +21,49 @@ public class PermissionInitializer { */ @PostConstruct public void initOpePermissions() { - Set operationKeys = getExistsOperationKeys(); + final Map existsOpesMap = new HashMap<>(); + List allExistsOpeEntities = operationService.listAllOperations(); + allExistsOpeEntities.stream().forEach(ope -> existsOpesMap.put(ope.getOperationKey(), ope)); ArrayList operations2Create = new ArrayList<>(); + ArrayList operations2Update = new ArrayList<>(); - RequirePermissionEnum[] requirePermissionEnums = RequirePermissionEnum.values(); - Arrays.stream(requirePermissionEnums).forEach(perm -> { + // 1.收集需要添加的 + List permEnums = Arrays.asList(RequirePermissionEnum.values()); + for (RequirePermissionEnum perm : permEnums) { String key = perm.getKey(); - if (!operationKeys.contains(key)) { + if (!existsOpesMap.containsKey(key)) { OperationEntity operationEntity = new OperationEntity(); operationEntity.setOperationKey(key); operationEntity.setBrief(perm.getBrief()); operationEntity.setOperationName(perm.getName()); operations2Create.add(operationEntity); } - }); + } + + //2.收集需要修改的 + for (RequirePermissionEnum perm : permEnums) { + String key = perm.getKey(); + String name = perm.getName(); + String brief = perm.getBrief(); + if (existsOpesMap.containsKey(key)) { + OperationEntity ope = existsOpesMap.get(key); + if (!ope.getOperationName().equals(name) || !ope.getBrief().equals(brief)) { + // name或者brief发生过变化的,需要更新 + ope.setBrief(brief); + ope.setOperationName(name); + operations2Update.add(ope); + } + } + } + //3.批量添加和修改 if (!CollectionUtils.isEmpty(operations2Create)) { operationService.createBatch(operations2Create); } - } - /** - * 获取现有的操作key列表 - * @return - */ - public Set getExistsOperationKeys() { - List operationEntities = operationService.listAllOperations(); - if (!CollectionUtils.isEmpty(operationEntities)) { - return operationEntities.stream().map(ope -> ope.getOperationKey()).collect(Collectors.toSet()); + if (!CollectionUtils.isEmpty(operations2Update)) { + operationService.updateBatch(operations2Update); } - return new HashSet<>(); } - - } diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/OperationService.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/OperationService.java index 26c9303bbe..edfaa41473 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/OperationService.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/OperationService.java @@ -10,4 +10,5 @@ public interface OperationService { List listAllOperations(); void createBatch(ArrayList operations2Create); + void updateBatch(ArrayList operations2Update); } diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/OperationServiceImpl.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/OperationServiceImpl.java index ff20e3d2da..ca28d43d0b 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/OperationServiceImpl.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/OperationServiceImpl.java @@ -26,4 +26,10 @@ public class OperationServiceImpl implements OperationService { public void createBatch(ArrayList operations2Create) { operations2Create.forEach(ope -> operationDao.insert(ope)); } + + @Transactional + @Override + public void updateBatch(ArrayList operations2Update) { + operations2Update.forEach(ope -> operationDao.updateById(ope)); + } }