Bläddra i källkod

feat: 增加应标用代码

huangzqa 2 år sedan
förälder
incheckning
42b553731a

+ 15 - 0
dcuc-auth-api/src/main/java/com/dragoninfo/dcuc/auth/auth/api/IApiDataAuthFacade.java

@@ -1,6 +1,7 @@
 package com.dragoninfo.dcuc.auth.auth.api;
 
 import com.dragoninfo.dcuc.auth.auth.dto.DataItemsCheckDto;
+import com.dragoninfo.dcuc.auth.auth.dto.DataItemsDto;
 import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -8,6 +9,9 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 /**
  * Created by huanghy on 2018/7/9.
@@ -19,6 +23,7 @@ public interface IApiDataAuthFacade {
 
     /**
      * 查询是否拥有数据项权限接口
+     *
      * @return
      */
     @ApiOperation(value = "查询是否拥有数据项权限接口", notes = "查询是否拥有数据项权限接口")
@@ -26,4 +31,14 @@ public interface IApiDataAuthFacade {
     ResponseDTO dataItemsCheck(@RequestBody DataItemsCheckDto dataItemsCheckDto);
 
 
+    /**
+     * 用户机构授权(应标用)
+     *
+     * @param idcard  身份证号
+     * @param orgCode 机构代码
+     * @return 数据项
+     */
+    @ApiOperation(value = "查询是否拥有数据项权限接口", notes = "查询是否拥有数据项权限接口")
+    @RequestMapping(value = "/api/auth-service/v1/data-auth/user-org-code-data-items", method = RequestMethod.POST)
+    DataItemsDto userOrgDataAuth(@RequestParam("idcard") String idcard,@RequestParam("orgCode") String orgCode);
 }

+ 12 - 4
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/api/ApiDataAuthFacade.java

@@ -9,6 +9,8 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * 代码千万行,注释第一行,编码不规范,同事两行泪
  *
@@ -25,25 +27,31 @@ public class ApiDataAuthFacade implements IApiDataAuthFacade {
 
     /**
      * 查询是否拥有数据项权限接口
+     *
      * @return
      */
     @Override
     public ResponseDTO dataItemsCheck(DataItemsCheckDto dataItemsCheckDto) {
         String msg = checkParam(dataItemsCheckDto);
-        if (StringUtils.isNotBlank(msg)){
-            return  ResponseDTO.fail(msg, (Object) null);
+        if (StringUtils.isNotBlank(msg)) {
+            return ResponseDTO.fail(msg, (Object) null);
         }
         return dataAuthService.dataItemsCheck(dataItemsCheckDto);
     }
 
+    @Override
+    public DataItemsDto userOrgDataAuth(String idcard, String orgCode) {
+        return dataAuthService.userOrgDataAuth(idcard, orgCode);
+    }
+
     private String checkParam(DataItemsCheckDto dataItemsCheckDto) {
         String msg = "";
-        if (StringUtils.isBlank(dataItemsCheckDto.getIdcard())){
+        if (StringUtils.isBlank(dataItemsCheckDto.getIdcard())) {
             return "身份证号码不能为空";
         }
         for (int i = 0; i < dataItemsCheckDto.getDataItemsDtoList().size(); i++) {
             DataItemsDto dataItemsDto = dataItemsCheckDto.getDataItemsDtoList().get(i);
-            if (StringUtils.isBlank(dataItemsDto.getDataItemCode()) || StringUtils.isBlank(dataItemsDto.getResourceCode())){
+            if (StringUtils.isBlank(dataItemsDto.getDataItemCode()) || StringUtils.isBlank(dataItemsDto.getResourceCode())) {
                 msg += "第" + (i + 1) + "项的数据资源标识符或数据项标识符不允许为空!";
                 break;
             }

+ 13 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/IDataAuthService.java

@@ -1,5 +1,6 @@
 package com.dragoninfo.dcuc.auth.auth.service;
 
+import com.dragoninfo.dcuc.auth.auth.dto.DataItemsDto;
 import com.dragoninfo.dcuc.auth.auth.dto.data.DataAuthDTO;
 import com.dragoninfo.dcuc.auth.auth.dto.DataItemsCheckDto;
 import com.dragoninfo.dcuc.auth.auth.dto.data.SubDataAuthDTO;
@@ -13,6 +14,7 @@ import java.util.List;
 
 /**
  * 数据权限Service
+ *
  * @author mazq
  * @date 2021/4/9
  */
@@ -20,6 +22,7 @@ public interface IDataAuthService {
 
     /**
      * 新增数据权限
+     *
      * @param dataAuthDTO 数据权限dto
      * @return
      */
@@ -27,6 +30,7 @@ public interface IDataAuthService {
 
     /**
      * 删除数据权限
+     *
      * @param id 数据权限id
      * @return
      */
@@ -34,6 +38,7 @@ public interface IDataAuthService {
 
     /**
      * 获取数据授权
+     *
      * @param id 数据权限id
      * @return
      */
@@ -41,6 +46,7 @@ public interface IDataAuthService {
 
     /**
      * 数据权限更新
+     *
      * @param dataAuthDTO 数据权限dto
      * @return
      */
@@ -48,6 +54,7 @@ public interface IDataAuthService {
 
     /**
      * 数据权限条件搜索
+     *
      * @param searchDTO 查询条件
      * @return
      */
@@ -55,6 +62,7 @@ public interface IDataAuthService {
 
     /**
      * 主体数据权限批量新增
+     *
      * @param subDataAuthDTO 主体和授权数据DTO
      * @return
      */
@@ -62,6 +70,7 @@ public interface IDataAuthService {
 
     /**
      * 批量获取主体数据权限
+     *
      * @param list
      * @return
      */
@@ -69,9 +78,13 @@ public interface IDataAuthService {
 
     /**
      * 查询是否拥有数据项权限接口
+     *
      * @return
      */
     ResponseDTO dataItemsCheck(DataItemsCheckDto dataItemsCheckDto);
 
     BusResultVO dataDetailList(SearchDTO searchDTO);
+
+    // 应标用
+    DataItemsDto userOrgDataAuth(String idcard, String orgCode);
 }

+ 87 - 8
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/impl/DataAuthServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dragoninfo.dcuc.auth.auth.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.dragoninfo.dcuc.auth.audit.enums.AuthResultEnum;
@@ -14,6 +15,7 @@ import com.dragoninfo.dcuc.auth.auth.entity.DataAuth;
 import com.dragoninfo.dcuc.auth.auth.enumresources.YesNotEnum;
 import com.dragoninfo.dcuc.auth.auth.service.IBusService;
 import com.dragoninfo.dcuc.auth.auth.service.IDataAuthService;
+import com.dragoninfo.dcuc.auth.auth.vo.BusDataResultVO;
 import com.dragoninfo.dcuc.auth.auth.vo.BusResultVO;
 import com.dragoninfo.dcuc.auth.auth.vo.ResourceCatalogItemVO;
 import com.dragoninfo.dcuc.auth.auth.vo.ResourceCatalogVO;
@@ -29,6 +31,7 @@ import com.dragonsoft.duceap.base.utils.UserContextUtils;
 import com.dragonsoft.duceap.commons.util.MapUtils;
 import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
 import com.dragonsoft.duceap.commons.util.ip.IpUtils;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
 import com.dragonsoft.duceap.core.context.ContextUtils;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.core.search.enums.SearchOperator;
@@ -240,12 +243,12 @@ public class DataAuthServiceImpl implements IDataAuthService {
     }
 
     private void addDataAuthList(Date date, String subId, String subType, String authType, String userId, List<SubDataDTO> addList) {
-        if(CollectionUtils.isEmpty(addList)) {
-            return ;
+        if (CollectionUtils.isEmpty(addList)) {
+            return;
         }
         HttpServletRequest request = RequestUtils.getRequest();
         String userToken = request.getHeader(Constants.USER_TOKEN);
-        String appToken  = request.getHeader(Constants.APP_TOKEN);
+        String appToken = request.getHeader(Constants.APP_TOKEN);
         try {
             for (SubDataDTO dto : addList) {
                 DataAuth dataAuth = new DataAuth();
@@ -270,12 +273,12 @@ public class DataAuthServiceImpl implements IDataAuthService {
     }
 
     private void delDataAuthList(Date date, String userId, List<DataAuth> delList) {
-        if(CollectionUtils.isEmpty(delList)) {
-            return ;
+        if (CollectionUtils.isEmpty(delList)) {
+            return;
         }
         HttpServletRequest request = RequestUtils.getRequest();
         String userToken = request.getHeader(Constants.USER_TOKEN);
-        String appToken  = request.getHeader(Constants.APP_TOKEN);
+        String appToken = request.getHeader(Constants.APP_TOKEN);
         try {
             for (DataAuth dataAuth : delList) {
                 dataAuth.setDeleteUser(userId);
@@ -283,10 +286,10 @@ public class DataAuthServiceImpl implements IDataAuthService {
                 dataAuth.setDeleted(BooleanEnum.TRUE.getValue());
                 dataAuthBPO.update(dataAuth);
             }
-            logInfoFillService.sendDataDelAuthLog(AuthResultEnum.SUC,delList, IpUtils.getRealIpAdrress(request), appToken, userToken);
+            logInfoFillService.sendDataDelAuthLog(AuthResultEnum.SUC, delList, IpUtils.getRealIpAdrress(request), appToken, userToken);
         } catch (Exception e) {
             log.error("数据授权删除失败", e);
-            logInfoFillService.sendDataDelAuthLog(AuthResultEnum.FAIL,delList, IpUtils.getRealIpAdrress(request), appToken, userToken);
+            logInfoFillService.sendDataDelAuthLog(AuthResultEnum.FAIL, delList, IpUtils.getRealIpAdrress(request), appToken, userToken);
         }
     }
 
@@ -449,6 +452,82 @@ public class DataAuthServiceImpl implements IDataAuthService {
         return resultVO;
     }
 
+    @Override
+    public DataItemsDto userOrgDataAuth(String idcard, String orgCode) {
+        AuthUserInfo authUserInfo = new AuthUserInfo();
+        authUserInfo.setIdcard(idcard);
+        authUserInfo.setOrgCode(orgCode);
+        authUserInfo.setPoliceBusiness("");
+        List<DataClassifyDTO> dataClassifyDTOS = dataAuthBusiness.userDataAuthInfoByUser(authUserInfo);
+
+        Set<String> tableSet = new HashSet<>();
+        Set<String> columnSet = new HashSet<>();
+
+        for (DataClassifyDTO dataClassifyDTO : dataClassifyDTOS) {
+            List<SubDataDTO> tickedDatas = dataClassifyDTO.getTickedDatas();
+            String attrType = dataClassifyDTO.getAttrType();
+            for (SubDataDTO tickedData : tickedDatas) {
+                String dataType = tickedData.getDataType();
+                String dataId = tickedData.getDataId();
+                String condition = dataId + StrUtil.COMMA + dataType;
+                if ("TABLE".equalsIgnoreCase(attrType)) {
+                    tableSet.add(condition);
+                } else {
+                    columnSet.add(condition);
+                }
+            }
+        }
+
+        return getItemBuilder(tableSet, idcard);
+    }
+
+    private DataItemsDto getItemBuilder(Set<String> set, String idcard) {
+        List<ResourceTypeQueryDTO> tableResourceTypeQueryDTOList = new ArrayList<>();
+        for (String tableCondition : set) {
+            String[] split = tableCondition.split(StrUtil.COMMA);
+            ResourceTypeQueryDTO resourceTypeQueryDTO = new ResourceTypeQueryDTO();
+            resourceTypeQueryDTO.setCodeValue(split[0]);
+            resourceTypeQueryDTO.setTypeCode(split[1]);
+            tableResourceTypeQueryDTOList.add(resourceTypeQueryDTO);
+        }
+
+        StringBuilder tableBuilder = new StringBuilder();
+        StringBuilder columnBuilder = new StringBuilder();
+
+        for (ResourceTypeQueryDTO resourceTypeQueryDTO : tableResourceTypeQueryDTOList) {
+            BusResultVO busResultVO = dataItem(Collections.singletonList(resourceTypeQueryDTO), idcard);
+            BusDataResultVO resultData = busResultVO.getResultData();
+            List<ResourceCatalogVO> dataList = resultData.getDataList();
+            for (ResourceCatalogVO resourceCatalogVO : dataList) {
+                tableBuilder.append(resourceCatalogVO.getResourceCode()).append(StrUtil.COMMA);
+                List<ResourceCatalogItemVO> dataItems = resourceCatalogVO.getDataItems();
+                for (ResourceCatalogItemVO dataItem : dataItems) {
+                    String dataItemCode = dataItem.getDataItemCode();
+                    if (StrUtil.isNotBlank(dataItemCode)) {
+                        columnBuilder.append(dataItemCode).append(StrUtil.COMMA);
+                    }
+                }
+            }
+        }
+        DataItemsDto dataItemsDto = new DataItemsDto();
+        dataItemsDto.setResourceCode(tableBuilder.toString());
+        dataItemsDto.setDataItemCode(columnBuilder.toString());
+        return dataItemsDto;
+    }
+
+    private BusResultVO dataItem(List<ResourceTypeQueryDTO> resourceTypeQueryDTOList, String idcard) {
+        DataDetailConditionDTO dataDetailConditionDTO = new DataDetailConditionDTO();
+        dataDetailConditionDTO.setResourceTypes(resourceTypeQueryDTOList);
+        DataDetailQueryDTO queryDTO = new DataDetailQueryDTO();
+        queryDTO.setPage(1);
+        queryDTO.setPageSize(10);
+        queryDTO.setCondition(dataDetailConditionDTO);
+
+        String query = JsonUtils.toJSONString(queryDTO);
+        return busService.resourceDataItemsQuery(JSON.parseObject(query, new TypeReference<Map<String, Object>>() {{
+        }}), idcard);
+    }
+
     /**
      * 数据资源分类需要构建父级的code数组
      *