PosConModel.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package jnpf.permission.model.position;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import com.fasterxml.jackson.annotation.JsonIgnore;
  4. import io.swagger.v3.oas.annotations.media.Schema;
  5. import jnpf.constant.MsgCode;
  6. import lombok.Data;
  7. import lombok.NoArgsConstructor;
  8. import java.util.List;
  9. import java.util.Objects;
  10. import java.util.stream.Collectors;
  11. /**
  12. * 约束模型
  13. *
  14. * @author JNPF开发平台组
  15. * @version v6.0.0
  16. * @copyright 引迈信息技术有限公司
  17. * @date 2025/4/15 11:42:06
  18. */
  19. @Data
  20. @Schema(description = "约束模型")
  21. @NoArgsConstructor
  22. public class PosConModel {
  23. @Schema(description = "约束类型:0-互斥,1-基数,2-先决")
  24. private List<Integer> constraintType;
  25. @Schema(description = "互斥")
  26. private List<String> mutualExclusion;
  27. @Schema(description = "用户基数")
  28. private Integer userNum;
  29. @Schema(description = "权限基数")
  30. private Integer permissionNum;
  31. @Schema(description = "先决")
  32. private List<String> prerequisite;
  33. @JsonIgnore
  34. private Boolean numFlag = false;
  35. @JsonIgnore
  36. private Boolean mutualExclusionFlag = false;
  37. @JsonIgnore
  38. private Boolean prerequisiteFlag = false;
  39. public void init() {
  40. for (Integer type : constraintType) {
  41. if (Objects.equals(type, 0)) {
  42. mutualExclusionFlag = true;
  43. }
  44. if (Objects.equals(type, 1)) {
  45. numFlag = true;
  46. }
  47. if (Objects.equals(type, 2)) {
  48. prerequisiteFlag = true;
  49. }
  50. }
  51. }
  52. public String checkCondition(String id) {
  53. if (mutualExclusionFlag && mutualExclusion.contains(id)) {
  54. return MsgCode.SYS140.get();
  55. }
  56. if (prerequisiteFlag && prerequisite.contains(id)) {
  57. return MsgCode.SYS141.get();
  58. }
  59. if (mutualExclusionFlag && prerequisiteFlag) {
  60. List<String> collect = mutualExclusion.stream().filter(t -> prerequisite.contains(t)).collect(Collectors.toList());
  61. if (CollectionUtil.isNotEmpty(collect)) {
  62. return MsgCode.SYS142.get();
  63. }
  64. }
  65. return "";
  66. }
  67. }