Forráskód Böngészése

feat: 匹配结算渠道

shc 2 éve
szülő
commit
08229ee7ea

+ 31 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysDictController.java

@@ -19,6 +19,7 @@
 
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -27,12 +28,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDict;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
+import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
 import com.qunzhixinxi.hnqz.admin.mapper.SysDeptMapper;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptSubService;
 import com.qunzhixinxi.hnqz.admin.service.SysDictItemService;
 import com.qunzhixinxi.hnqz.admin.service.SysDictService;
 import com.qunzhixinxi.hnqz.common.core.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import io.swagger.annotations.Api;
 import lombok.AllArgsConstructor;
@@ -44,7 +48,9 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -66,6 +72,8 @@ public class SysDictController {
 
 	private final SysDeptMapper sysDeptMapper;
 
+	private final SysDeptSubService deptSubService;
+
 	/**
 	 * 通过ID查询字典信息
 	 * @param id ID
@@ -90,13 +98,33 @@ public class SysDictController {
 
 	/**
 	 * 通过字典类型查找字典
+	 *
 	 * @param type 类型
 	 * @return 同类型字典
 	 */
 	@GetMapping("/type/{type}")
-	@Cacheable(value = CacheConstants.DICT_DETAILS, key = "#type", unless = "#result.data.isEmpty()")
-	public R getDictByType(@PathVariable String type) {
-		return R.ok(sysDictItemService.list(Wrappers.<SysDictItem>query().lambda().eq(SysDictItem::getType, type)));
+	// @Cacheable(value = CacheConstants.DICT_DETAILS, key = "#type", unless = "#result.data.isEmpty()")
+	public R<?> getDictByType(@PathVariable String type) {
+
+		List<SysDictItem> list = sysDictItemService.list(Wrappers.<SysDictItem>query().lambda().eq(SysDictItem::getType, type));
+
+		Integer deptId = SecurityUtils.getUser().getDeptId();
+		if ("subject_location".equals(type) && 1 != deptId) {
+			List<SysDeptSub> l = deptSubService.list(Wrappers.<SysDeptSub>lambdaQuery().eq(SysDeptSub::getDeptId, deptId));
+			if (CollUtil.isNotEmpty(l)) {
+				List<String> collect = l.stream().filter(sub -> sub.getSubjectLocation() != null).map(sub -> sub.getSubjectLocation().getType()).collect(Collectors.toList());
+				if (CollUtil.isNotEmpty(collect)) {
+					List<SysDictItem> items = list.stream().filter(item -> collect.contains(item.getValue())).collect(Collectors.toList());
+					return R.ok(items);
+				} else {
+					return R.ok(Collections.emptyList());
+				}
+			}
+
+
+		}
+
+		return R.ok(list);
 	}
 
 	/**