فهرست منبع

Merge branch 'master' of http://git.yangzhiqiang.tech/jiayq/ai-tagging

jiayongqiang 11 ساعت پیش
والد
کامیت
6c0e1be49e
39فایلهای تغییر یافته به همراه409 افزوده شده و 536 حذف شده
  1. 18 0
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/config/MyBatisPlusConfig.java
  2. 19 0
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/config/WebMvcConfig.java
  3. 21 0
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagCategoryController.java
  4. 108 16
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagInfoController.java
  5. 6 5
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagInfoVersionController.java
  6. 44 9
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagLogController.java
  7. 4 4
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/FastApiController.java
  8. 1 1
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/LoginRequestDto.java
  9. 1 1
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/TagInfoDto.java
  10. 1 1
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/TagInfoVersionDto.java
  11. 4 11
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/fastapidto/AiTaggingRequestDto.java
  12. 1 1
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagApp.java
  13. 1 1
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagTagInfoEntity.java
  14. 3 120
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagTagInfoVersionEntity.java
  15. 2 2
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagUser.java
  16. 4 97
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/vo/AitagTagInfoQueryVo.java
  17. 4 121
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/vo/AitagTagInfoVersionQueryVo.java
  18. 12 0
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/vo/SmartTaggingResultVo.java
  19. 3 2
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/vo/fastapivo/AiTaggingResponseVo.java
  20. 7 4
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/AitagTagInfoService.java
  21. 1 1
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagAppServiceImpl.java
  22. 1 1
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagCategoryServiceImpl.java
  23. 34 49
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagInfoServiceImpl.java
  24. 4 4
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagInfoVersionServiceImpl.java
  25. 7 1
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagLogServiceImpl.java
  26. 5 5
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AuthServiceImpl.java
  27. 5 9
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/FastApiServiceImpl.java
  28. 4 4
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/util/JwtUtil.java
  29. 53 0
      server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/util/SessionCommonUtil.java
  30. 2 4
      server/yusp-tagging-core/src/main/resources/mapper/AitagApiLogMapper.xml
  31. 7 7
      server/yusp-tagging-core/src/main/resources/mapper/AitagAppMapper.xml
  32. 4 4
      server/yusp-tagging-core/src/main/resources/mapper/AitagTagInfoMapper.xml
  33. 1 1
      server/yusp-tagging-core/src/main/resources/mapper/AitagTagInfoVersionMapper.xml
  34. 2 2
      server/yusp-tagging-core/src/main/resources/mapper/AitagTagLogMapper.xml
  35. 2 1
      server/yusp-tagging-core/src/main/resources/messages/yusp_input_msg.properties
  36. BIN
      server/yusp-tagging-core/src/main/resources/template/tag_batch_Import_template.xlsx
  37. 9 3
      server/yusp-tagging-starter/pom.xml
  38. 0 42
      server/yusp-tagging-starter/src/main/resources/application.yml
  39. 4 2
      server/yusp-tagging-starter/src/main/resources/bootstrap.yml

+ 18 - 0
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/config/MyBatisPlusConfig.java

@@ -0,0 +1,18 @@
+package cn.com.yusys.yusp.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MyBatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+}

+ 19 - 0
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/config/WebMvcConfig.java

@@ -1,11 +1,18 @@
 package cn.com.yusys.yusp.config;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
+import java.text.SimpleDateFormat;
+
 /**
  * Web MVC配置类
  *
@@ -37,4 +44,16 @@ public class WebMvcConfig implements WebMvcConfigurer {
                     );
         }
     }
+
+    /**
+     * 全局Jackson配置,统一时间格式化
+     */
+    @Bean
+    public ObjectMapper objectMapper() {
+        return Jackson2ObjectMapperBuilder.json()
+                .dateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))
+                .timeZone("GMT+8")
+                .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
+                .build();
+    }
 }

+ 21 - 0
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagCategoryController.java

@@ -113,6 +113,8 @@ public class AitagTagCategoryController {
         }
     }
 
+
+
     @ApiOperationType("标签体系详情")
     @GetMapping("/detail/{id}")
     public Result<AitagTagCategoryVo> getCategoryDetail(@PathVariable String id) {
@@ -123,4 +125,23 @@ public class AitagTagCategoryController {
             return Result.error("500", "查询标签体系详情失败:" + e.getMessage());
         }
     }
+
+
+    /**
+     * 外部页面获取已启用的标签体系列表,无需token
+     *
+     * @return ResultDto
+     */
+    @ApiOperationType("外部标签体系")
+    @GetMapping("/enablelistnoauth")
+    public Result<List<AitagTagCategoryVo>> listEnabledCategoriesNoAuth(
+            @RequestParam(defaultValue = "1") int page,
+            @RequestParam(defaultValue = "5") int size) {
+        try {
+            Page<AitagTagCategoryVo> pageResult = aiTagCategoryService.listEnabledCategories(page, size);
+            return Result.pageSuccess(pageResult.getRecords(), pageResult.getTotal());
+        } catch (Exception e) {
+            return Result.error("500", "分页查询失败:" + e.getMessage());
+        }
+    }
 }

+ 108 - 16
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagInfoController.java

@@ -1,25 +1,40 @@
 package cn.com.yusys.yusp.controller;
 
+import cn.com.yusys.yusp.annotation.ApiOperationType;
 import cn.com.yusys.yusp.commons.exception.BizException;
 import cn.com.yusys.yusp.commons.module.adapter.web.rest.ResultDto;
+import cn.com.yusys.yusp.util.SessionCommonUtil;
 import cn.com.yusys.yusp.domain.dto.TagInfoDto;
 import cn.com.yusys.yusp.domain.entity.AitagTagInfoEntity;
 import cn.com.yusys.yusp.domain.vo.AitagTagInfoQueryVo;
 import cn.com.yusys.yusp.domain.vo.GenerateRegexVo;
 import cn.com.yusys.yusp.domain.vo.TagNodeVo;
 import cn.com.yusys.yusp.domain.vo.VersionRollbackVo;
+import cn.com.yusys.yusp.domain.vo.fastapivo.AiTaggingResponseVo;
 import cn.com.yusys.yusp.service.AitagTagInfoService;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
-import java.util.Arrays;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -32,6 +47,7 @@ import java.util.Map;
 @Api(tags = "标签管理")
 @RestController
 @RequestMapping("/api/aitagtaginfo")
+@Slf4j
 public class AitagTagInfoController {
     /**
      * AitagTagInfoService
@@ -39,14 +55,13 @@ public class AitagTagInfoController {
     @Autowired
     private AitagTagInfoService aitagTagInfoService;
 
-
     /**
      * 列表查询
      *
      * @param aitagTagInfoQueryVo
      * @return ResultDto
      */
-    @ApiOperation("列表标签分页信息")
+    @ApiOperationType("列表标签分页信息")
     @GetMapping("/page")
     public ResultDto<List<AitagTagInfoEntity>> page(AitagTagInfoQueryVo aitagTagInfoQueryVo) {
         IPage<AitagTagInfoEntity> page = aitagTagInfoService.queryPage(aitagTagInfoQueryVo);
@@ -60,7 +75,7 @@ public class AitagTagInfoController {
      * @param aitagTagInfoQueryVo
      * @return ResultDto
      */
-    @ApiOperation("标签列表查询")
+    @ApiOperationType("标签列表查询")
     @GetMapping("/list")
     public ResultDto<List<AitagTagInfoEntity>> list(AitagTagInfoQueryVo aitagTagInfoQueryVo) {
         List<AitagTagInfoEntity> page = aitagTagInfoService.queryList(aitagTagInfoQueryVo);
@@ -73,7 +88,7 @@ public class AitagTagInfoController {
      * @param aitagTagInfoQueryVo
      * @return ResultDto
      */
-    @ApiOperation("查询标签树")
+    @ApiOperationType("查询标签树")
     @PostMapping("/queryTagTree")
     public ResultDto<List<TagNodeVo>> queryTagTree(@RequestBody AitagTagInfoQueryVo aitagTagInfoQueryVo) {
         if(StringUtils.isBlank(aitagTagInfoQueryVo.getCategoryId())){
@@ -83,13 +98,14 @@ public class AitagTagInfoController {
         return ResultDto.success(tagNodeVos);
     }
 
+
     /**
      * 详细
      *
      * @param id
      * @return ResultDto
      */
-    @ApiOperation("详细")
+    @ApiOperationType("标签详细")
     @GetMapping("/info/{id}")
     public ResultDto<TagInfoDto> info(@PathVariable("id") String id) {
         TagInfoDto aitagTagInfo = aitagTagInfoService.getTagInfo(id);
@@ -102,10 +118,14 @@ public class AitagTagInfoController {
      * @param aitagTagInfoEntity
      * @return ResultDto
      */
-    @ApiOperation("保存")
+    @ApiOperationType("标签保存")
     @PostMapping("/save")
     public ResultDto save(@RequestBody AitagTagInfoEntity aitagTagInfoEntity) {
-        aitagTagInfoService.saveTag(aitagTagInfoEntity);
+        String id = aitagTagInfoService.saveTag(aitagTagInfoEntity);
+        HashMap<String, Object> body = new HashMap<>();
+        String[] ids = {id};
+        body.put("tag_ids",ids);
+        aitagTagInfoService.callAiTag(body,"/api/aitag/admin/v1/synchronize_tag");
         return ResultDto.success();
     }
 
@@ -115,10 +135,14 @@ public class AitagTagInfoController {
      * @param aitagTagInfoEntity
      * @return ResultDto
      */
-    @ApiOperation("修改")
+    @ApiOperationType("标签修改")
     @PostMapping("/update")
     public ResultDto update(@RequestBody AitagTagInfoEntity aitagTagInfoEntity) {
         aitagTagInfoService.updateTag(aitagTagInfoEntity);
+        HashMap<String, Object> body = new HashMap<>();
+        String[] ids = {aitagTagInfoEntity.getId()};
+        body.put("tag_ids",ids);
+        aitagTagInfoService.callAiTag(body,"/api/aitag/admin/v1/synchronize_tag");
         return ResultDto.success();
     }
 
@@ -128,10 +152,16 @@ public class AitagTagInfoController {
      * @param versionRollbackVo
      * @return ResultDto
      */
-    @ApiOperation("版本回溯")
+    @ApiOperationType("版本回溯")
     @PostMapping("/versionRollback")
     public ResultDto versionRollback(@RequestBody VersionRollbackVo versionRollbackVo) {
-        aitagTagInfoService.versionRollback(versionRollbackVo);
+        String id = aitagTagInfoService.versionRollback(versionRollbackVo);
+        if(StringUtils.isNotBlank(id)){
+            HashMap<String, Object> body = new HashMap<>();
+            String[] ids = {id};
+            body.put("tag_ids",ids);
+            aitagTagInfoService.callAiTag(body,"/api/aitag/admin/v1/synchronize_tag");
+        }
         return ResultDto.success();
     }
 
@@ -142,11 +172,14 @@ public class AitagTagInfoController {
      * @param ids
      * @return ResultDto
      */
-    @ApiOperation("删除")
+    @ApiOperationType("删除标签")
     @PostMapping("/delete")
     public ResultDto delete(@RequestBody Map<String,List> ids) {
         List<String> idsList = ids.get("ids");
         aitagTagInfoService.removeTags(idsList);
+        HashMap<String, Object> body = new HashMap<>();
+        body.put("tag_ids",ids);
+        aitagTagInfoService.callAiTag(body,"/api/aitag/admin/v1/delete_tag");
         return ResultDto.success();
     }
 
@@ -156,7 +189,7 @@ public class AitagTagInfoController {
      * @param file
      * @return ResultDto
      */
-    @ApiOperation("批量导入")
+    @ApiOperationType("批量导入")
     @PostMapping("/batchImport")
     public ResultDto batchImport( @RequestParam("file") MultipartFile file,
                                   @RequestParam("reviser") String reviser,
@@ -171,7 +204,11 @@ public class AitagTagInfoController {
         if (fileName == null || (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls"))) {
             throw BizException.of("E003");
         }
-        aitagTagInfoService.batchImport(file,reviser,categoryId);
+        List<String> tagIds = aitagTagInfoService.batchImport(file, reviser, categoryId);
+
+        HashMap<String, Object> body = new HashMap<>();
+        body.put("tag_ids",tagIds);
+        aitagTagInfoService.callAiTag(body,"/api/aitag/admin/v1/synchronize_tag");
         return ResultDto.success();
     }
 
@@ -182,11 +219,66 @@ public class AitagTagInfoController {
      * @param regexVo
      * @return ResultDto
      */
-    @ApiOperation("生成正则表达式")
+    @ApiOperationType("生成正则表达式")
     @PostMapping("/generateRegex")
     public ResultDto<String> generateRegex( @RequestBody GenerateRegexVo regexVo) throws IOException {
-        return ResultDto.success(aitagTagInfoService.generateRegex(regexVo));
+        Map body = JSONObject.parseObject(JSONObject.toJSONString(regexVo), Map.class);
+
+        AiTaggingResponseVo taggingResponse = aitagTagInfoService.callAiTag(body, "/api/aitag/admin/v1/generate_reg");
+        if(cn.com.yusys.yusp.commons.util.StringUtils.equals(taggingResponse.getCode(),"200")){
+            return ResultDto.success(taggingResponse.getData());
+        }
+        log.error("生成正则表达式异常:返回参数为:{}", JSON.toJSONString(taggingResponse));
+        throw BizException.of("E008");
+
+    }
+
+    /**
+     * 批量导入模板下载
+     *
+     * @return ResultDto
+     */
+    @ApiOperationType("批量导入模板下载")
+    @GetMapping("/downloadFile")
+    public ResponseEntity<Resource> downloadFile( ) throws IOException {
+
+        // 1. 构造文件路径并进行规范化,防止路径遍历攻击 (如 ../../恶意路径)
+        Path filePath = Paths.get("template").resolve("tag_batch_Import_template.xlsx").normalize();
+        ClassPathResource resource = new ClassPathResource(filePath.toString());
+
+        // 2. 校验文件是否存在且可读
+        if (resource.exists() && resource.isReadable()) {
+            // 3. 推断文件的 MediaType (MIME type)
+            String contentType = MediaType.APPLICATION_OCTET_STREAM_VALUE;
+            contentType = Files.probeContentType(filePath);
+            // 4. 返回 ResponseEntity,设置响应头
+            return ResponseEntity.ok()
+                    .contentType(MediaType.parseMediaType(contentType))
+                    // 告知浏览器以附件形式下载,并指定文件名
+                    // 使用 URLEncoder.encode 处理中文文件名乱码问题
+                    .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""
+                            + URLEncoder.encode("tag_batch_Import_template.xlsx", StandardCharsets.UTF_8.toString()) + "\"")
+                    .body(resource);
+        } else {
+            // 文件不存在或不可读,返回 404
+            return ResponseEntity.notFound().build();
+        }
     }
 
 
+    /**
+     * 外部页面查询标签树,无需token
+     *
+     * @param aitagTagInfoQueryVo
+     * @return ResultDto
+     */
+    @ApiOperationType("外部查询标签树")
+    @PostMapping("/queryTagTreeNoAuth")
+    public ResultDto<List<TagNodeVo>> queryTagTreeNoAuth(@RequestBody AitagTagInfoQueryVo aitagTagInfoQueryVo) {
+        if(StringUtils.isBlank(aitagTagInfoQueryVo.getCategoryId())){
+            throw BizException.of("E001");
+        }
+        List<TagNodeVo> tagNodeVos = aitagTagInfoService.queryTagTree(aitagTagInfoQueryVo);
+        return ResultDto.success(tagNodeVos);
+    }
 }

+ 6 - 5
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagInfoVersionController.java

@@ -1,5 +1,6 @@
 package cn.com.yusys.yusp.controller;
 
+import cn.com.yusys.yusp.annotation.ApiOperationType;
 import cn.com.yusys.yusp.commons.module.adapter.web.rest.ResultDto;
 import cn.com.yusys.yusp.domain.entity.AitagTagInfoVersionEntity;
 import cn.com.yusys.yusp.domain.vo.AitagTagInfoVersionQueryVo;
@@ -41,7 +42,7 @@ public class AitagTagInfoVersionController {
      * @param aitagTagInfoVersionQueryVo
      * @return ResultDto
      */
-    @ApiOperation("列表查询")
+    @ApiOperationType("列表查询")
     @GetMapping("/list")
     public ResultDto<List<AitagTagInfoVersionEntity>> list(AitagTagInfoVersionQueryVo aitagTagInfoVersionQueryVo) {
         IPage<AitagTagInfoVersionEntity> page = aitagTagInfoVersionService.queryPage(aitagTagInfoVersionQueryVo);
@@ -55,7 +56,7 @@ public class AitagTagInfoVersionController {
      * @param id
      * @return ResultDto
      */
-    @ApiOperation("详细")
+    @ApiOperationType("详细")
     @GetMapping("/info/{id}")
     public ResultDto<AitagTagInfoVersionEntity> info(@PathVariable("id") String id) {
         AitagTagInfoVersionEntity aitagTagInfoVersion = aitagTagInfoVersionService.getById(id);
@@ -69,7 +70,7 @@ public class AitagTagInfoVersionController {
      * @param aitagTagInfoVersionEntity
      * @return ResultDto
      */
-    @ApiOperation("保存")
+    @ApiOperationType("保存")
     @PostMapping("/save")
     public ResultDto save(@RequestBody AitagTagInfoVersionEntity aitagTagInfoVersionEntity) {
         aitagTagInfoVersionService.save(aitagTagInfoVersionEntity);
@@ -82,7 +83,7 @@ public class AitagTagInfoVersionController {
      * @param aitagTagInfoVersionEntity
      * @return ResultDto
      */
-    @ApiOperation("修改")
+    @ApiOperationType("修改")
     @PostMapping("/update")
     public ResultDto update(@RequestBody AitagTagInfoVersionEntity aitagTagInfoVersionEntity) {
         aitagTagInfoVersionService.updateById(aitagTagInfoVersionEntity);
@@ -96,7 +97,7 @@ public class AitagTagInfoVersionController {
      * @param ids
      * @return ResultDto
      */
-    @ApiOperation("删除")
+    @ApiOperationType("删除")
     @PostMapping("/delete")
     public ResultDto delete(@RequestBody String[] ids) {
         aitagTagInfoVersionService.removeByIds(Arrays.asList(ids));

+ 44 - 9
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagLogController.java

@@ -1,5 +1,6 @@
 package cn.com.yusys.yusp.controller;
 
+import cn.com.yusys.yusp.annotation.ApiOperationType;
 import cn.com.yusys.yusp.commons.module.adapter.web.rest.ResultDto;
 import cn.com.yusys.yusp.domain.entity.AitagTagLogEntity;
 import cn.com.yusys.yusp.domain.vo.*;
@@ -47,7 +48,7 @@ public class AitagTagLogController {
      * @param taggingResult 智能打标结果
      * @return ResultDto
      */
-    @ApiOperation("我的配置")
+    @ApiOperationType("我的配置")
     @PostMapping("/dataOverview")
     public ResultDto<DataOverviewVo> dataOverview(@RequestBody SmartTaggingResultVo taggingResult) {
         DataOverviewVo dataOverviewDTO = aitagTagLogService.dataOverview(taggingResult);
@@ -62,7 +63,7 @@ public class AitagTagLogController {
      * @param taggingTrendReq 打标趋势
      * @return ResultDto
      */
-    @ApiOperation("打标趋势")
+    @ApiOperationType("打标趋势")
     @PostMapping("/taggingTrend")
     public ResultDto<List<IconResVo>> taggingTrend(@RequestBody TaggingTrendReqVo taggingTrendReq) {
         List<IconResVo> taggingTrendRes = aitagTagLogService.taggingTrend(taggingTrendReq);
@@ -75,7 +76,7 @@ public class AitagTagLogController {
      * @param resultDTO 智能打标结果
      * @return ResultDto
      */
-    @ApiOperation("标签分布统计")
+    @ApiOperationType("标签分布统计")
     @PostMapping("/tagDistStats")
     public ResultDto<List<IconResVo>> tagDistStats(@RequestBody TagDistStatsReqVo resultDTO) {
         List<IconResVo> taggingTrendRes = aitagTagLogService.tagDistStats(resultDTO);
@@ -89,7 +90,7 @@ public class AitagTagLogController {
      * @param transactionReqVo
      * @return ResultDto
      */
-    @ApiOperation("打标明细")
+    @ApiOperationType("打标明细")
     @PostMapping("/taggingTransaction")
     public ResultDto<IPage<AitagTagLogEntity>> taggingTransaction(@RequestBody TaggingTransactionReqVo transactionReqVo) {
         IPage<AitagTagLogEntity> page = aitagTagLogService.taggingDetails(transactionReqVo);
@@ -102,22 +103,56 @@ public class AitagTagLogController {
      * @param id
      * @return ResultDto
      */
-    @ApiOperation("打标结果详情")
+    @ApiOperationType("打标结果详情")
     @GetMapping("/show/{id}")
     public ResultDto<AitagTagLogEntity> show(@PathVariable("id") String id) {
         AitagTagLogEntity taggingDetailsResDTO = aitagTagLogService.show(id);
         return ResultDto.success(taggingDetailsResDTO);
     }
 
+//    /**
+//     * 导出数据
+//     *
+//     * @param transactionReqVo
+//     * @return ResultDto
+//     */
+//    @ApiOperation("导出数据")
+//    @PostMapping("/exportData")
+//    public void exportData(@RequestBody TaggingTransactionReqVo transactionReqVo,HttpServletResponse response) throws IOException {
+//        List<AitagTagLogEntity> aitagTagLogEntities = aitagTagLogService.queryList(transactionReqVo);
+//        List<ExportDataVo> exportDataVos = new ArrayList<>();
+//        for (AitagTagLogEntity aitagTagLog:aitagTagLogEntities) {
+//            ExportDataVo exportDataVo = JSONObject.parseObject(JSONObject.toJSONString(aitagTagLog), ExportDataVo.class);
+//            if(FEEDBACK_RESULT_REJECT.equals(aitagTagLog.getFeedback())){
+//                String feedbackResult = aitagTagLog.getFeedbackResult();
+//                exportDataVo.setResult(getTags(feedbackResult));
+//            }else{
+//                String result = aitagTagLog.getResult();
+//                exportDataVo.setResult(getTags(result));
+//            }
+//            exportDataVos.add(exportDataVo);
+//        }
+//        // 2. 设置响应头(防止中文乱码)
+//        response.reset();
+//        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+//        response.setCharacterEncoding("utf-8");
+//        String fileName = URLEncoder.encode("导出标签", "UTF-8").replaceAll("\\+", "%20");
+//        response.setHeader("Content-Disposition", "attachment; filename*=utf-8''" + fileName + ".xlsx");
+//        EasyExcel.write(response.getOutputStream(), ExportDataVo.class)
+//                .sheet("标签数据")
+//                .doWrite(exportDataVos);
+//    }
+
+
     /**
      * 导出数据
      *
      * @param transactionReqVo
      * @return ResultDto
      */
-    @ApiOperation("导出数据")
-    @PostMapping("/exportData")
-    public void exportData(@RequestBody TaggingTransactionReqVo transactionReqVo,HttpServletResponse response) throws IOException {
+    @ApiOperationType("导出数据")
+    @GetMapping("/exportData")
+    public void exportData(TaggingTransactionReqVo transactionReqVo,HttpServletResponse response) throws IOException {
         List<AitagTagLogEntity> aitagTagLogEntities = aitagTagLogService.queryList(transactionReqVo);
         List<ExportDataVo> exportDataVos = new ArrayList<>();
         for (AitagTagLogEntity aitagTagLog:aitagTagLogEntities) {
@@ -142,11 +177,11 @@ public class AitagTagLogController {
                 .doWrite(exportDataVos);
     }
 
-
     private String getTags(String result) {
         if(StringUtils.isBlank(result)){
             return "";
         }
+        result = result.replace("\\", "");
         List<Map> results = JSONArray.parseArray(result, Map.class);
         StringBuilder stringBuilder = new StringBuilder();
         for (int i = 0 ;i<results.size();i++){

+ 4 - 4
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/FastApiController.java

@@ -25,16 +25,16 @@ public class FastApiController {
     @Autowired
     private FastApiService fastApiService;
 
-    @ApiOperationType("AI打标")
+    @ApiOperationType("AI 打标")
     @PostMapping("/tagging")
     public Result<AiTaggingResponseVo> tagging(@RequestBody AiTaggingRequestDto request) {
         try {
-            log.info("收到AI打标请求: appId={}, businessAttr={}", request.getAppId(), request.getBusinessAttr());
+            log.info("收到 AI 打标请求:businessAttr={}, tagCategoryId={}", request.getBusinessAttr(), request.getTagCategoryId());
             AiTaggingResponseVo response = fastApiService.tagging(request);
             return Result.success(response);
         } catch (Exception e) {
-            log.error("AI打标接口调用失败", e);
-            return Result.error("500", "AI打标接口调用失败: " + e.getMessage());
+            log.error("AI 打标接口调用失败", e);
+            return Result.error("500", "AI 打标接口调用失败:" + e.getMessage());
         }
     }
 

+ 1 - 1
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/LoginRequestDto.java

@@ -22,5 +22,5 @@ public class LoginRequestDto {
 
     @NotBlank(message = "密码不能为空")
     @ApiModelProperty(value = "密码", required = true)
-    private String password;
+    private String pwd;
 }

+ 1 - 1
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/TagInfoDto.java

@@ -65,7 +65,7 @@ public class TagInfoDto {
      * 标签等级
      **/
     @ApiModelProperty(value = "标签等级")
-    private Integer level;
+    private Integer tagLevel;
 
     /**
      * tag1/tag2/tag3/...

+ 1 - 1
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/TagInfoVersionDto.java

@@ -64,7 +64,7 @@ public class TagInfoVersionDto {
      * 标签等级
      **/
     @ApiModelProperty(value = "标签等级")
-    private Integer level;
+    private Integer tagLevel;
 
     /**
      * tag1/tag2/tag3/...

+ 4 - 11
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/dto/fastapidto/AiTaggingRequestDto.java

@@ -10,17 +10,6 @@ import javax.validation.constraints.NotBlank;
 @ApiModel("AI打标请求")
 public class AiTaggingRequestDto {
 
-    @NotBlank(message = "appId不能为空")
-    @ApiModelProperty(value = "后台分配的APPID", required = true)
-    private String appId;
-
-    @NotBlank(message = "时间戳不能为空")
-    @ApiModelProperty(value = "时间戳", required = true)
-    private String timestamp;
-
-    @NotBlank(message = "签名不能为空")
-    @ApiModelProperty(value = "签名", required = true)
-    private String sign;
 
     @NotBlank(message = "业务属性不能为空")
     @ApiModelProperty(value = "业务属性", required = true)
@@ -29,4 +18,8 @@ public class AiTaggingRequestDto {
     @NotBlank(message = "投向+用途+职业不能为空")
     @ApiModelProperty(value = "投向+用途+职业", required = true)
     private String phrase;
+
+    @NotBlank(message = "体系 ID 不能为空")
+    @ApiModelProperty(value = "体系 ID", required = true)
+    private String tagCategoryId;
 }

+ 1 - 1
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagApp.java

@@ -77,5 +77,5 @@ public class AitagApp implements Serializable {
     @Size(max = 100, message = "编码长度不能超过100")
     @ApiModelProperty(value = "状态:0启用;1禁用", example = "0")
     @Length(max = 100, message = "编码长度不能超过100")
-    private String state;
+    private String status;
 }

+ 1 - 1
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagTagInfoEntity.java

@@ -66,7 +66,7 @@ public class AitagTagInfoEntity {
      * 标签等级
      **/
     @ApiModelProperty(value = "标签等级")
-    private Integer level;
+    private Integer tagLevel;
 
     /**
      * tag1/tag2/tag3/...

+ 3 - 120
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagTagInfoVersionEntity.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.IdType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 
 /**
@@ -15,6 +16,7 @@ import io.swagger.annotations.ApiModelProperty;
  */
 @TableName("aitag_tag_info_version")
 @ApiModel(value = "AitagTagInfoVersionEntity", description = "标签信息版本表")
+@Data
 public class AitagTagInfoVersionEntity {
 
     /**
@@ -64,7 +66,7 @@ public class AitagTagInfoVersionEntity {
      * 标签等级
      **/
     @ApiModelProperty(value = "标签等级")
-    private Integer level;
+    private Integer tagLevel;
 
     /**
      * tag1/tag2/tag3/...
@@ -109,124 +111,5 @@ public class AitagTagInfoVersionEntity {
     private String reviser;
 
 
-    public String getId() {
-        return this.id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getCategoryId() {
-        return this.categoryId;
-    }
-
-    public void setCategoryId(String categoryId) {
-        this.categoryId = categoryId;
-    }
-
-    public String getTagNm() {
-        return this.tagNm;
-    }
-
-    public void setTagNm(String tagNm) {
-        this.tagNm = tagNm;
-    }
-
-    public String getTagCode() {
-        return this.tagCode;
-    }
-
-    public void setTagCode(String tagCode) {
-        this.tagCode = tagCode;
-    }
-
-    public String getTagRemark() {
-        return this.tagRemark;
-    }
-
-    public void setTagRemark(String tagRemark) {
-        this.tagRemark = tagRemark;
-    }
-
-    public String getparentId() {
-        return this.parentId;
-    }
-
-    public void setparentId(String parentId) {
-        this.parentId = parentId;
-    }
-
-    public String getReg() {
-        return this.reg;
-    }
-
-    public void setReg(String reg) {
-        this.reg = reg;
-    }
-
-    public Integer getLevel() {
-        return this.level;
-    }
-
-    public void setLevel(Integer level) {
-        this.level = level;
-    }
-
-    public String getTagPath() {
-        return this.tagPath;
-    }
-
-    public void setTagPath(String tagPath) {
-        this.tagPath = tagPath;
-    }
-
-    public Integer getIsDelete() {
-        return this.isDelete;
-    }
-
-    public void setIsDelete(Integer isDelete) {
-        this.isDelete = isDelete;
-    }
-
-    public Integer getState() {
-        return this.state;
-    }
-
-    public void setState(Integer state) {
-        this.state = state;
-    }
-
-    public String getTagPrompt() {
-        return this.tagPrompt;
-    }
-
-    public void setTagPrompt(String tagPrompt) {
-        this.tagPrompt = tagPrompt;
-    }
-
-    public String getTagVersion() {
-        return this.tagVersion;
-    }
-
-    public void setTagVersion(String tagVersion) {
-        this.tagVersion = tagVersion;
-    }
-
-    public String getRevisionTime() {
-        return this.revisionTime;
-    }
-
-    public void setRevisionTime(String revisionTime) {
-        this.revisionTime = revisionTime;
-    }
-
-    public String getReviser() {
-        return this.reviser;
-    }
-
-    public void setReviser(String reviser) {
-        this.reviser = reviser;
-    }
 
 }

+ 2 - 2
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagUser.java

@@ -38,7 +38,7 @@ public class AitagUser implements Serializable {
     @Size(max= 100,message="编码长度不能超过100")
     @ApiModelProperty("登陆密码")
     @Length(max= 100,message="编码长度不能超过100")
-    private String password;
+    private String pwd;
     /**
     * 用户名称
     */
@@ -52,6 +52,6 @@ public class AitagUser implements Serializable {
     @Size(max= 100,message="编码长度不能超过100")
     @ApiModelProperty("角色权限(0客户经理,1标签管理人员,2业务管理员,3运维管理员,4测试管理员)")
     @Length(max= 100,message="编码长度不能超过100")
-    private String role;
+    private String userRole;
 
 }

+ 4 - 97
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/vo/AitagTagInfoQueryVo.java

@@ -1,6 +1,7 @@
 package cn.com.yusys.yusp.domain.vo;
 
 import cn.com.yusys.yusp.commons.module.adapter.query.PageQuery;
+import lombok.Data;
 
 
 /**
@@ -9,6 +10,8 @@ import cn.com.yusys.yusp.commons.module.adapter.query.PageQuery;
  * @author 2507040827
  * @date 2026-02-26 14:34:56
  */
+
+@Data
 public class AitagTagInfoQueryVo extends PageQuery {
 
     /**
@@ -49,7 +52,7 @@ public class AitagTagInfoQueryVo extends PageQuery {
     /**
      * 标签等级
      **/
-    private Integer level;
+    private Integer tagLevel;
 
     /**
      * tag1/tag2/tag3/...
@@ -72,100 +75,4 @@ public class AitagTagInfoQueryVo extends PageQuery {
     private String tagPrompt;
 
 
-    public String getId() {
-        return this.id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getCategoryId() {
-        return this.categoryId;
-    }
-
-    public void setCategoryId(String categoryId) {
-        this.categoryId = categoryId;
-    }
-
-    public String getTagNm() {
-        return this.tagNm;
-    }
-
-    public void setTagNm(String tagNm) {
-        this.tagNm = tagNm;
-    }
-
-    public String getTagCode() {
-        return this.tagCode;
-    }
-
-    public void setTagCode(String tagCode) {
-        this.tagCode = tagCode;
-    }
-
-    public String getTagRemark() {
-        return this.tagRemark;
-    }
-
-    public void setTagRemark(String tagRemark) {
-        this.tagRemark = tagRemark;
-    }
-
-    public String getparentId() {
-        return this.parentId;
-    }
-
-    public void setparentId(String parentId) {
-        this.parentId = parentId;
-    }
-
-    public String getReg() {
-        return this.reg;
-    }
-
-    public void setReg(String reg) {
-        this.reg = reg;
-    }
-
-    public Integer getLevel() {
-        return this.level;
-    }
-
-    public void setLevel(Integer level) {
-        this.level = level;
-    }
-
-    public String getTagPath() {
-        return this.tagPath;
-    }
-
-    public void setTagPath(String tagPath) {
-        this.tagPath = tagPath;
-    }
-
-    public Integer getIsDelete() {
-        return this.isDelete;
-    }
-
-    public void setIsDelete(Integer isDelete) {
-        this.isDelete = isDelete;
-    }
-
-    public Integer getState() {
-        return this.state;
-    }
-
-    public void setState(Integer state) {
-        this.state = state;
-    }
-
-    public String getTagPrompt() {
-        return this.tagPrompt;
-    }
-
-    public void setTagPrompt(String tagPrompt) {
-        this.tagPrompt = tagPrompt;
-    }
-
 }

+ 4 - 121
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/vo/AitagTagInfoVersionQueryVo.java

@@ -1,6 +1,7 @@
 package cn.com.yusys.yusp.domain.vo;
 
 import cn.com.yusys.yusp.commons.module.adapter.query.PageQuery;
+import lombok.Data;
 
 
 /**
@@ -9,6 +10,8 @@ import cn.com.yusys.yusp.commons.module.adapter.query.PageQuery;
  * @author 2507040827
  * @date 2026-02-27 11:33:54
  */
+
+@Data
 public class AitagTagInfoVersionQueryVo extends PageQuery {
 
     /**
@@ -49,7 +52,7 @@ public class AitagTagInfoVersionQueryVo extends PageQuery {
     /**
      * 标签等级
      **/
-    private Integer level;
+    private Integer tagLevel;
 
     /**
      * tag1/tag2/tag3/...
@@ -87,124 +90,4 @@ public class AitagTagInfoVersionQueryVo extends PageQuery {
     private String reviser;
 
 
-    public String getId() {
-        return this.id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getCategoryId() {
-        return this.categoryId;
-    }
-
-    public void setCategoryId(String categoryId) {
-        this.categoryId = categoryId;
-    }
-
-    public String getTagNm() {
-        return this.tagNm;
-    }
-
-    public void setTagNm(String tagNm) {
-        this.tagNm = tagNm;
-    }
-
-    public String getTagCode() {
-        return this.tagCode;
-    }
-
-    public void setTagCode(String tagCode) {
-        this.tagCode = tagCode;
-    }
-
-    public String getTagRemark() {
-        return this.tagRemark;
-    }
-
-    public void setTagRemark(String tagRemark) {
-        this.tagRemark = tagRemark;
-    }
-
-    public String getparentId() {
-        return this.parentId;
-    }
-
-    public void setparentId(String parentId) {
-        this.parentId = parentId;
-    }
-
-    public String getReg() {
-        return this.reg;
-    }
-
-    public void setReg(String reg) {
-        this.reg = reg;
-    }
-
-    public Integer getLevel() {
-        return this.level;
-    }
-
-    public void setLevel(Integer level) {
-        this.level = level;
-    }
-
-    public String getTagPath() {
-        return this.tagPath;
-    }
-
-    public void setTagPath(String tagPath) {
-        this.tagPath = tagPath;
-    }
-
-    public Integer getIsDelete() {
-        return this.isDelete;
-    }
-
-    public void setIsDelete(Integer isDelete) {
-        this.isDelete = isDelete;
-    }
-
-    public Integer getState() {
-        return this.state;
-    }
-
-    public void setState(Integer state) {
-        this.state = state;
-    }
-
-    public String getTagPrompt() {
-        return this.tagPrompt;
-    }
-
-    public void setTagPrompt(String tagPrompt) {
-        this.tagPrompt = tagPrompt;
-    }
-
-    public String getTagVersion() {
-        return this.tagVersion;
-    }
-
-    public void setTagVersion(String tagVersion) {
-        this.tagVersion = tagVersion;
-    }
-
-    public String getRevisionTime() {
-        return this.revisionTime;
-    }
-
-    public void setRevisionTime(String revisionTime) {
-        this.revisionTime = revisionTime;
-    }
-
-    public String getReviser() {
-        return this.reviser;
-    }
-
-    public void setReviser(String reviser) {
-        this.reviser = reviser;
-    }
-
 }

+ 12 - 0
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/vo/SmartTaggingResultVo.java

@@ -2,6 +2,8 @@ package cn.com.yusys.yusp.domain.vo;
 
 
 import cn.com.yusys.yusp.commons.module.adapter.query.PageQuery;
+import cn.com.yusys.yusp.commons.util.date.DateUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import lombok.Data;
 
 /**
@@ -29,4 +31,14 @@ public class SmartTaggingResultVo extends PageQuery {
      * 标签类别
      */
     private String categoryCode;
+
+
+    public String getStartTaggingTime() {
+        return StringUtils.isBlank(startTaggingTime)? DateUtils.getCurrYear()+"-01-01 00:00:00":startTaggingTime;
+    }
+
+    public String getEndTaggingTime() {
+        return StringUtils.isBlank(endTaggingTime)? DateUtils.getCurrDateTimeStr():endTaggingTime;
+    }
+
 }

+ 3 - 2
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/vo/fastapivo/AiTaggingResponseVo.java

@@ -14,6 +14,7 @@ public class AiTaggingResponseVo {
     @ApiModelProperty(value = "消息内容")
     private String message;
 
-    @ApiModelProperty(value = "返回报文体")
-    private String body;
+    @ApiModelProperty(value = "返回数据")
+    private String data;
+
 }

+ 7 - 4
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/AitagTagInfoService.java

@@ -6,12 +6,14 @@ import cn.com.yusys.yusp.domain.vo.AitagTagInfoQueryVo;
 import cn.com.yusys.yusp.domain.vo.GenerateRegexVo;
 import cn.com.yusys.yusp.domain.vo.TagNodeVo;
 import cn.com.yusys.yusp.domain.vo.VersionRollbackVo;
+import cn.com.yusys.yusp.domain.vo.fastapivo.AiTaggingResponseVo;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 
@@ -30,7 +32,7 @@ public interface AitagTagInfoService extends IService<AitagTagInfoEntity> {
      */
     IPage<AitagTagInfoEntity> queryPage(AitagTagInfoQueryVo aitagTagInfoQueryVo);
 
-    void saveTag(AitagTagInfoEntity aitagTagInfo);
+    String saveTag(AitagTagInfoEntity aitagTagInfo);
 
     List<TagNodeVo> queryTagTree(AitagTagInfoQueryVo aitagTagInfoQueryVo);
 
@@ -40,12 +42,13 @@ public interface AitagTagInfoService extends IService<AitagTagInfoEntity> {
 
     void removeTags(List<String> list);
 
-    void versionRollback(VersionRollbackVo versionRollbackVo);
+    String versionRollback(VersionRollbackVo versionRollbackVo);
 
     List<AitagTagInfoEntity> queryList(AitagTagInfoQueryVo aitagTagInfoQueryVo);
 
-    void batchImport(MultipartFile file,String reviser,String categoryId) throws IOException;
+    List<String> batchImport(MultipartFile file, String reviser, String categoryId) throws IOException;
 
-    String generateRegex(GenerateRegexVo regexVo);
+
+    AiTaggingResponseVo callAiTag(Map<String, Object> body, String path);
 }
 

+ 1 - 1
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagAppServiceImpl.java

@@ -53,7 +53,7 @@ public class AitagAppServiceImpl implements AitagAppService {
         app.setAppSecret(appSecret);
         // 使用 DataUtil 截断时间精度
         app.setCreateTime(DataUtil.truncateToSeconds(new Date()));
-        app.setState("0");
+        app.setStatus("0");
 
         aiTagAppMapper.insertApp(app);
         return app;

+ 1 - 1
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagCategoryServiceImpl.java

@@ -61,7 +61,7 @@ public class AitagTagCategoryServiceImpl implements AitagTagCategoryService {
         category.setId(UUID.randomUUID().toString());
         category.setCategoryNm(dto.getCategoryNm());
         category.setCategoryDesc(dto.getCategoryDesc());
-        category.setState(0); // 默认启
+        category.setState(1); // 默认停
         category.setIsDelete(0); // 未删除
 
         aiTagCategoryMapper.insertCategory(category);

+ 34 - 49
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagInfoServiceImpl.java

@@ -19,8 +19,8 @@ import cn.com.yusys.yusp.domain.entity.AitagTagInfoEntity;
 import cn.com.yusys.yusp.domain.vo.AitagTagInfoQueryVo;
 import cn.com.yusys.yusp.service.AitagTagInfoService;
 import cn.com.yusys.yusp.service.TagImportListener;
+import cn.com.yusys.yusp.util.SessionCommonUtil;
 import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -92,14 +92,14 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
         if (aitagTagInfoQueryVo.getTagRemark() != null) {
             queryWrapper.eq(AitagTagInfoEntity::getTagRemark, aitagTagInfoQueryVo.getTagRemark());
         }
-        if (aitagTagInfoQueryVo.getparentId() != null) {
-            queryWrapper.eq(AitagTagInfoEntity::getParentId, aitagTagInfoQueryVo.getparentId());
+        if (aitagTagInfoQueryVo.getParentId() != null) {
+            queryWrapper.eq(AitagTagInfoEntity::getParentId, aitagTagInfoQueryVo.getParentId());
         }
         if (aitagTagInfoQueryVo.getReg() != null) {
             queryWrapper.eq(AitagTagInfoEntity::getReg, aitagTagInfoQueryVo.getReg());
         }
-        if (aitagTagInfoQueryVo.getLevel() != null) {
-            queryWrapper.eq(AitagTagInfoEntity::getLevel, aitagTagInfoQueryVo.getLevel());
+        if (aitagTagInfoQueryVo.getTagLevel() != null) {
+            queryWrapper.eq(AitagTagInfoEntity::getTagLevel, aitagTagInfoQueryVo.getTagLevel());
         }
         if (aitagTagInfoQueryVo.getTagPath() != null) {
             queryWrapper.eq(AitagTagInfoEntity::getTagPath, aitagTagInfoQueryVo.getTagPath());
@@ -120,7 +120,7 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
 
 
     @Override
-    public void saveTag(AitagTagInfoEntity aitagTagInfo){
+    public String saveTag(AitagTagInfoEntity aitagTagInfo){
         aitagTagInfo.setId(StringUtils.getUUID());
         String parentId = aitagTagInfo.getParentId();
         if(!StringUtils.isBlank(parentId)){
@@ -131,24 +131,22 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
             if(!aitagTagInfoEntities.isEmpty()){
                 AitagTagInfoEntity aitagTagInfoEntity = aitagTagInfoEntities.get(0);
                 aitagTagInfo.setTagPath(aitagTagInfoEntity.getTagPath()+"/"+aitagTagInfo.getTagNm());
-                aitagTagInfo.setLevel(aitagTagInfoEntity.getLevel()+1);
+                aitagTagInfo.setTagLevel(aitagTagInfoEntity.getTagLevel()+1);
             }else{
                 aitagTagInfo.setTagPath(aitagTagInfo.getTagNm());
-                aitagTagInfo.setLevel(1);
+                aitagTagInfo.setTagLevel(1);
             }
         }else{
             aitagTagInfo.setTagPath(aitagTagInfo.getTagNm());
-            aitagTagInfo.setLevel(1);
+            aitagTagInfo.setTagLevel(1);
         }
         aitagTagInfo.setRevisionTime(DateUtils.getCurrDateTimeStr());
         aitagTagInfo.setTagVersion("1");
         aitagTagInfo.setIsDelete(TAG_UNDELETED);
         aitagTagInfo.setState(TAG_ENABLED);
+        aitagTagInfo.setReviser(SessionCommonUtil.getUserInfo());
         this.save(aitagTagInfo);
-        HashMap<String, Object> body = new HashMap<>();
-        String[] ids = {aitagTagInfo.getId()};
-        body.put("tag_ids",ids);
-        callAiTag(body,"/api/aitag/admin/v1/synchronize_tag");
+        return aitagTagInfo.getId();
     }
 
     /**
@@ -186,12 +184,11 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
         this.aitagTagInfoVersionDao.insert(aitagTagInfoVersionEntity);
         aitagTagInfoEntity.setRevisionTime(DateUtils.getCurrDateTimeStr());
         aitagTagInfoEntity.setTagVersion(Integer.parseInt(tagInfo.getTagVersion())+1+"");
+        AitagTagInfoEntity parentTagInfo = this.baseMapper.selectById(aitagTagInfoEntity.getParentId());
+        aitagTagInfoEntity.setTagPath(parentTagInfo.getTagPath()+"/"+aitagTagInfoEntity.getTagNm());
+        aitagTagInfoEntity.setTagLevel(parentTagInfo.getTagLevel()+1);
+        aitagTagInfoEntity.setReviser(SessionCommonUtil.getUserInfo());
         this.baseMapper.updateById(aitagTagInfoEntity);
-
-        HashMap<String, Object> body = new HashMap<>();
-        String[] ids = {aitagTagInfoEntity.getId()};
-        body.put("tag_ids",ids);
-        callAiTag(body,"/api/aitag/admin/v1/synchronize_tag");
     }
 
     @Override
@@ -201,16 +198,14 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
         for (String id:list){
             aitagTagInfoEntity.setId(id);
             aitagTagInfoEntity.setIsDelete(TAG_DELETED);
+            aitagTagInfoEntity.setReviser(SessionCommonUtil.getUserInfo());
             this.baseMapper.updateById(aitagTagInfoEntity);
         }
-        HashMap<String, Object> body = new HashMap<>();
-        body.put("tag_ids",list);
-        callAiTag(body,"/api/aitag/admin/v1/delete_tag");
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void versionRollback(VersionRollbackVo versionRollback) {
+    public String versionRollback(VersionRollbackVo versionRollback) {
         LambdaQueryWrapper<AitagTagInfoVersionEntity> queryTagVersionWrapper = new LambdaQueryWrapper<>();
         queryTagVersionWrapper.eq(AitagTagInfoVersionEntity::getTagCode,versionRollback.getTagCode());
         queryTagVersionWrapper.eq(AitagTagInfoVersionEntity::getTagVersion,versionRollback.getVersion());
@@ -221,19 +216,18 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
             aitagTagInfoEntity.setId(versionRollback.getId());
             aitagTagInfoEntity.setRevisionTime(DateUtils.getCurrDateTimeStr());
             aitagTagInfoEntity.setReviser(versionRollback.getReviser());
+            aitagTagInfoEntity.setReviser(SessionCommonUtil.getUserInfo());
             this.baseMapper.updateById(aitagTagInfoEntity);
             LambdaUpdateWrapper<AitagTagInfoVersionEntity> updateTagVersion = new LambdaUpdateWrapper<>();
             updateTagVersion.eq(AitagTagInfoVersionEntity::getTagCode,versionRollback.getTagCode());
             updateTagVersion.ge(AitagTagInfoVersionEntity::getTagVersion,versionRollback.getVersion());
             AitagTagInfoVersionEntity aitagTagInfoVersionEntity = new AitagTagInfoVersionEntity();
+            aitagTagInfoVersionEntity.setReviser(SessionCommonUtil.getUserInfo());
             aitagTagInfoVersionEntity.setIsDelete(TAG_DELETED);
             this.aitagTagInfoVersionDao.update(aitagTagInfoVersionEntity,updateTagVersion);
-
-            HashMap<String, Object> body = new HashMap<>();
-            String[] ids = {aitagTagInfoEntity.getId()};
-            body.put("tag_ids",ids);
-            callAiTag(body,"/api/aitag/admin/v1/synchronize_tag");
+            return aitagTagInfoEntity.getId();
         }
+        return null;
     }
 
     @Override
@@ -254,14 +248,14 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
         if (aitagTagInfoQueryVo.getTagRemark() != null) {
             queryWrapper.eq(AitagTagInfoEntity::getTagRemark, aitagTagInfoQueryVo.getTagRemark());
         }
-        if (aitagTagInfoQueryVo.getparentId() != null) {
-            queryWrapper.eq(AitagTagInfoEntity::getParentId, aitagTagInfoQueryVo.getparentId());
+        if (aitagTagInfoQueryVo.getParentId() != null) {
+            queryWrapper.eq(AitagTagInfoEntity::getParentId, aitagTagInfoQueryVo.getParentId());
         }
         if (aitagTagInfoQueryVo.getReg() != null) {
             queryWrapper.eq(AitagTagInfoEntity::getReg, aitagTagInfoQueryVo.getReg());
         }
-        if (aitagTagInfoQueryVo.getLevel() != null) {
-            queryWrapper.eq(AitagTagInfoEntity::getLevel, aitagTagInfoQueryVo.getLevel());
+        if (aitagTagInfoQueryVo.getTagLevel() != null) {
+            queryWrapper.eq(AitagTagInfoEntity::getTagLevel, aitagTagInfoQueryVo.getTagLevel());
         }
         if (aitagTagInfoQueryVo.getTagPath() != null) {
             queryWrapper.eq(AitagTagInfoEntity::getTagPath, aitagTagInfoQueryVo.getTagPath());
@@ -280,7 +274,8 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
     }
 
     @Override
-    public void batchImport(MultipartFile file, String reviser,String categoryId) throws IOException {
+    @Transactional(rollbackFor = Exception.class)
+    public List<String> batchImport(MultipartFile file, String reviser, String categoryId) throws IOException {
         log.info("开始处理上传文件:{}", file.getOriginalFilename());
 
         TagImportListener listener = new TagImportListener();
@@ -304,23 +299,9 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
         validateParentTags(nameToDtoMap);
         resolveHierarchy(nameToDtoMap);
         saveToDatabase(tagImportDtos,reviser,categoryId);
-
-        HashMap<String, Object> body = new HashMap<>();
-        List<String> tagIds = tagImportDtos.stream().map(TagImportDto::getId).collect(Collectors.toList());
-        body.put("tag_ids",tagIds);
-        callAiTag(body,"/api/aitag/admin/v1/synchronize_tag");
+        return  tagImportDtos.stream().map(TagImportDto::getId).collect(Collectors.toList());
     }
 
-    @Override
-    public String generateRegex(GenerateRegexVo regexVo) {
-        Map body = JSONObject.parseObject(JSONObject.toJSONString(regexVo), Map.class);
-        AiTaggingResponseVo taggingResponse = callAiTag(body, "/api/aitag/admin/v1/generate_reg");
-        if(StringUtils.equals(taggingResponse.getCode(),"200")){
-            return taggingResponse.getBody();
-        }
-        log.error("生成正则表达式异常:返回参数为:{}",JSON.toJSONString(taggingResponse));
-        throw BizException.of("E008");
-    }
 
     private void saveToDatabase(List<TagImportDto> tagImportDtos,String reviser,String categoryId) {
         AitagTagCategory aitagTagCategory = aiTagCategoryMapper.selectById(categoryId);
@@ -330,12 +311,14 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
                     AitagTagInfoEntity.class);
             String tagPath = tagImportDto.getTagPath();
             aitagTagInfo.setTagPath(categoryNm+"/"+tagPath);
-            aitagTagInfo.setLevel(aitagTagInfo.getTagPath().split("/").length);
+            aitagTagInfo.setTagLevel(aitagTagInfo.getTagPath().split("/").length);
             aitagTagInfo.setRevisionTime(DateUtils.getCurrDateTimeStr());
             aitagTagInfo.setReviser(reviser);
             aitagTagInfo.setTagVersion("1");
             aitagTagInfo.setIsDelete(TAG_UNDELETED);
+            aitagTagInfo.setCategoryId(categoryId);
             aitagTagInfo.setState(TAG_ENABLED);
+            aitagTagInfo.setReviser(SessionCommonUtil.getUserInfo());
             this.save(aitagTagInfo);
         }
 
@@ -428,7 +411,9 @@ public class AitagTagInfoServiceImpl extends ServiceImpl<AitagTagInfoDao, AitagT
         return rootNodes;
     }
 
-    private AiTaggingResponseVo callAiTag(Map<String,Object> body, String path) {
+
+    @Override
+    public AiTaggingResponseVo callAiTag(Map<String, Object> body, String path) {
         String url = fastApiConfig.getUrl() + path;
         log.info("调用AI打标接口: {}", url);
 

+ 4 - 4
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagInfoVersionServiceImpl.java

@@ -44,14 +44,14 @@ public class AitagTagInfoVersionServiceImpl extends ServiceImpl<AitagTagInfoVers
         if (aitagTagInfoVersionQueryVo.getTagRemark() != null) {
             queryWrapper.eq(AitagTagInfoVersionEntity::getTagRemark, aitagTagInfoVersionQueryVo.getTagRemark());
         }
-        if (aitagTagInfoVersionQueryVo.getparentId() != null) {
-            queryWrapper.eq(AitagTagInfoVersionEntity::getparentId, aitagTagInfoVersionQueryVo.getparentId());
+        if (aitagTagInfoVersionQueryVo.getParentId() != null) {
+            queryWrapper.eq(AitagTagInfoVersionEntity::getParentId, aitagTagInfoVersionQueryVo.getParentId());
         }
         if (aitagTagInfoVersionQueryVo.getReg() != null) {
             queryWrapper.eq(AitagTagInfoVersionEntity::getReg, aitagTagInfoVersionQueryVo.getReg());
         }
-        if (aitagTagInfoVersionQueryVo.getLevel() != null) {
-            queryWrapper.eq(AitagTagInfoVersionEntity::getLevel, aitagTagInfoVersionQueryVo.getLevel());
+        if (aitagTagInfoVersionQueryVo.getTagLevel() != null) {
+            queryWrapper.eq(AitagTagInfoVersionEntity::getTagLevel, aitagTagInfoVersionQueryVo.getTagLevel());
         }
         if (aitagTagInfoVersionQueryVo.getTagPath() != null) {
             queryWrapper.eq(AitagTagInfoVersionEntity::getTagPath, aitagTagInfoVersionQueryVo.getTagPath());

+ 7 - 1
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagLogServiceImpl.java

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.URL;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -116,7 +117,8 @@ public class AitagTagLogServiceImpl extends ServiceImpl<AitagTagLogDao, AitagTag
         if (StringUtils.isNotBlank(transactionReqVo.getLoanApplicationNo())){
             queryWrapper.le(AitagTagLogEntity::getBusinessAttr, transactionReqVo.getLoanApplicationNo());
         }
-        return this.baseMapper.selectPage(new Page<>(transactionReqVo.getPage() == null?0:transactionReqVo.getPage(),
+
+        return this.page(new Page<>(transactionReqVo.getPage() == null?0:transactionReqVo.getPage(),
                 transactionReqVo.getSize() == null?10:transactionReqVo.getSize()),queryWrapper);
     }
 
@@ -140,7 +142,11 @@ public class AitagTagLogServiceImpl extends ServiceImpl<AitagTagLogDao, AitagTag
     }
 
     private String getTagPath(String result) {
+        result = result.replace("\\", "");
         List<Map> results = JSONArray.parseArray(result, Map.class);
+        if(results == null){
+            return "";
+        }
         for (Map resultMap: results){
             String tagId = resultMap.getOrDefault("id","").toString();
             AitagTagInfoEntity aitagTagInfoEntity = tagInfoDao.selectById(tagId);

+ 5 - 5
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AuthServiceImpl.java

@@ -41,7 +41,7 @@ public class AuthServiceImpl implements AuthService {
     @Override
     public LoginResponseVo login(LoginRequestDto loginRequest) {
         String userId = loginRequest.getUserId();
-        String password = loginRequest.getPassword();
+        String password = loginRequest.getPwd();
 
         log.info("用户尝试登录: {}", userId);
 
@@ -59,18 +59,18 @@ public class AuthServiceImpl implements AuthService {
         }
 
         // 生成token
-        String token = jwtUtil.generateToken(userId, user.getRole());
+        String token = jwtUtil.generateToken(userId, user.getUserRole());
 
         // 记录在线用户
         onlineUsers.put(userId, token);
 
-        log.info("用户登录成功: {}, 角色: {}", userId, user.getRole());
+        log.info("用户登录成功: {}, 角色: {}", userId, user.getUserRole());
 
         return LoginResponseVo.success(
                 token,
                 user.getUserId(),
                 user.getUserName(),
-                user.getRole(),
+                user.getUserRole(),
                 expiration
         );
     }
@@ -93,7 +93,7 @@ public class AuthServiceImpl implements AuthService {
             return false;
         }
         // 简单的密码比较,实际项目中应该使用加密存储
-        return user.getPassword() != null && user.getPassword().equals(password);
+        return user.getPwd() != null && user.getPwd().equals(password);
     }
 
     /**

+ 5 - 9
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/FastApiServiceImpl.java

@@ -19,14 +19,10 @@ import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
 
-import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
+
 
 @Slf4j
 @Service
@@ -42,7 +38,7 @@ public class FastApiServiceImpl implements FastApiService {
     @Override
     public AiTaggingResponseVo tagging(AiTaggingRequestDto request) {
         String url = fastApiConfig.getUrl() + TAGGING_PATH;
-        log.info("调用AI打标接口: {}", url);
+        log.info("调用 AI 打标接口:{}", url);
 
         try (CloseableHttpClient httpClient = createHttpClient()) {
             HttpPost httpPost = new HttpPost(url);
@@ -54,15 +50,15 @@ public class FastApiServiceImpl implements FastApiService {
 
             try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
                 String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
-                log.info("AI打标接口响应: {}", responseBody);
+                log.info("AI 打标接口响应:{}", responseBody);
 
                 return JSON.parseObject(responseBody, AiTaggingResponseVo.class);
             }
         } catch (Exception e) {
-            log.error("调用AI打标接口失败", e);
+            log.error("调用 AI 打标接口失败", e);
             AiTaggingResponseVo errorResponse = new AiTaggingResponseVo();
             errorResponse.setCode("500");
-            errorResponse.setMessage("调用AI打标接口失败: " + e.getMessage());
+            errorResponse.setMessage("调用 AI 打标接口失败:" + e.getMessage());
             return errorResponse;
         }
     }

+ 4 - 4
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/util/JwtUtil.java

@@ -33,10 +33,10 @@ public class JwtUtil {
     /**
      * 生成JWT token
      */
-    public String generateToken(String userId, String role) {
+    public String generateToken(String userId, String userRole) {
         Map<String, Object> claims = new HashMap<>();
         claims.put("userId", userId);
-        claims.put("role", role);
+        claims.put("userRole", userRole);
         return createToken(claims, userId);
     }
 
@@ -90,7 +90,7 @@ public class JwtUtil {
     public String getRoleFromToken(String token) {
         try {
             Claims claims = getClaimsFromToken(token);
-            return claims.get("role", String.class);
+            return claims.get("userRole", String.class);
         } catch (Exception e) {
             log.warn("从token获取用户角色失败:{}", e.getMessage());
             return null;
@@ -116,7 +116,7 @@ public class JwtUtil {
         try {
             Claims claims = getClaimsFromToken(token);
             String userId = claims.getSubject();
-            String role = claims.get("role", String.class);
+            String role = claims.get("userRole", String.class);
             return generateToken(userId, role);
         } catch (Exception e) {
             log.warn("刷新token失败:{}", e.getMessage());

+ 53 - 0
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/util/SessionCommonUtil.java

@@ -0,0 +1,53 @@
+package cn.com.yusys.yusp.util;
+
+import cn.com.yusys.yusp.commons.exception.BizException;
+import cn.com.yusys.yusp.commons.util.SpringContextUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.annotation.PostConstruct;
+import javax.servlet.http.HttpServletRequest;
+
+
+@Component
+public class SessionCommonUtil {
+
+    private static StringRedisTemplate redisTemplate;
+
+
+    @PostConstruct
+    public void init() {
+        redisTemplate = SpringContextUtils.getBean(StringRedisTemplate.class);
+    }
+    public static String getUserInfo() {
+        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+        if (requestAttributes != null) {
+            HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+            String authorization = request.getHeader("Authorization");
+            if (authorization != null) {
+                String jwtToken = authorization.startsWith("Bearer ") ? authorization.substring(7) : authorization;
+                String jsonStr = (String) redisTemplate.opsForValue().get("access:"+jwtToken);
+                if (jsonStr != null) {
+                    // 解析JSON数组
+                    JSONArray objects = JSONArray.parseArray(jsonStr);
+                    if (objects.size() >= 2) {
+                        String map = objects.get(1).toString();
+                        JSONObject jsonObject = JSONObject.parseObject(map);
+                        String userInfo = jsonObject.getString("userInfo");
+                        JSONObject userInfoMap = JSONObject.parseObject(userInfo);
+                        return userInfoMap.getString("userName");
+                    }
+                }
+            }else{
+               throw BizException.of("E009");
+            }
+        }
+        throw BizException.of("E009");
+    }
+
+}

+ 2 - 4
server/yusp-tagging-core/src/main/resources/mapper/AitagApiLogMapper.xml

@@ -43,8 +43,7 @@
                 AND create_date >= #{startTime}
             </if>
             <if test="endTime != null">
-                <!-- 结束时间加一天,确保包含当天的所有记录 -->
-                AND create_date <![CDATA[<]]> DATE_ADD(#{endTime}, INTERVAL 1 DAY)
+                AND DATE(create_date) <![CDATA[<=]]> DATE(#{endTime})
             </if>
         </where>
     </select>
@@ -58,8 +57,7 @@
                 AND create_date >= #{startTime}
             </if>
             <if test="endTime != null">
-                <!-- 结束时间加一天,确保包含当天的所有记录 -->
-                AND create_date <![CDATA[<]]> DATE_ADD(#{endTime}, INTERVAL 1 DAY)
+                AND DATE(create_date) <![CDATA[<=]]> DATE(#{endTime})
             </if>
         </where>
         ORDER BY create_date DESC

+ 7 - 7
server/yusp-tagging-core/src/main/resources/mapper/AitagAppMapper.xml

@@ -13,7 +13,7 @@
             create_time,
             creater_nm,
             creater_id,
-            state
+            status
         FROM aitag_app
         ORDER BY create_time DESC
             LIMIT #{limit} OFFSET #{offset}
@@ -36,7 +36,7 @@
             create_time,
             creater_nm,
             creater_id,
-            state
+            status
         ) VALUES (
                      #{id},
                      #{appName},
@@ -45,7 +45,7 @@
                      #{createTime, jdbcType=TIMESTAMP},
                      #{createrNm},
                      #{createrId},
-                     #{state}
+                     #{status}
                  )
     </insert>
 
@@ -70,10 +70,10 @@
         WHERE id = #{id}
     </update>
 
-    <!-- 7. 禁用应用:更新 state = '1' -->
+    <!-- 7. 禁用应用:更新 status = '1' -->
     <update id="disableApp" parameterType="string">
         UPDATE aitag_app
-        SET state = '1'
+        SET status = '1'
         WHERE id = #{id}
     </update>
 
@@ -92,7 +92,7 @@
             create_time,
             creater_nm,
             creater_id,
-            state
+            status
         FROM aitag_app
         WHERE app_name LIKE CONCAT('%', #{appName}, '%')
     </select>
@@ -106,7 +106,7 @@
             create_time,
             creater_nm,
             creater_id,
-            state
+            status
         FROM aitag_app
         WHERE app_name LIKE CONCAT('%', #{appName}, '%')
         ORDER BY create_time DESC

+ 4 - 4
server/yusp-tagging-core/src/main/resources/mapper/AitagTagInfoMapper.xml

@@ -9,7 +9,7 @@
         <result column="tag_remark" jdbcType="VARCHAR" property="tagRemark"/>
         <result column="parent_id" jdbcType="VARCHAR" property="parentId"/>
         <result column="reg" jdbcType="VARCHAR" property="reg"/>
-        <result column="level" jdbcType="INTEGER" property="level"/>
+        <result column="tag_level" jdbcType="INTEGER" property="tagLevel"/>
         <result column="tag_path" jdbcType="VARCHAR" property="tagPath"/>
         <result column="tag_prompt" jdbcType="VARCHAR" property="tagPrompt"/>
         <result column="tag_version" jdbcType="VARCHAR" property="tagVersion"/>
@@ -27,7 +27,7 @@
             <result property="tagRemark" column="version_tag_remark"/>
             <result property="parentId" column="version_parent_id"/>
             <result property="reg" column="version_reg"/>
-            <result property="level" column="version_level"/>
+            <result property="tagLevel" column="version_level"/>
             <result property="tagPath" column="version_tag_path"/>
             <result property="tagPrompt" column="version_tag_prompt"/>
             <result property="tagVersion" column="version_tag_version"/>
@@ -46,7 +46,7 @@
             ti.tag_remark,
             ti.parent_id,
             ti.reg,
-            ti.level,
+            ti.tag_level,
             ti.tag_path,
             ti.tag_prompt,
             ti.tag_version,
@@ -59,7 +59,7 @@
             tiv.tag_remark AS version_tag_remark,
             tiv.parent_id AS version_parent_id,
             tiv.reg AS version_reg,
-            tiv.level AS version_level,
+            tiv.tag_level AS version_level,
             tiv.tag_path AS version_tag_path,
             tiv.tag_prompt AS version_tag_prompt,
             tiv.tag_version AS version_tag_version,

+ 1 - 1
server/yusp-tagging-core/src/main/resources/mapper/AitagTagInfoVersionMapper.xml

@@ -9,7 +9,7 @@
         <result column="tag_remark" jdbcType="LONGVARCHAR" property="tagRemark"/>
         <result column="parent_id" jdbcType="VARCHAR" property="parentId"/>
         <result column="reg" jdbcType="LONGVARCHAR" property="reg"/>
-        <result column="level" jdbcType="INTEGER" property="level"/>
+        <result column="tag_level" jdbcType="INTEGER" property="tagLevel"/>
         <result column="tag_path" jdbcType="VARCHAR" property="tagPath"/>
         <result column="is_delete" jdbcType="INTEGER" property="isDelete"/>
         <result column="state" jdbcType="INTEGER" property="state"/>

+ 2 - 2
server/yusp-tagging-core/src/main/resources/mapper/AitagTagLogMapper.xml

@@ -57,7 +57,7 @@
                 AND #{categoryCode} = category_code
             </if>
         </where>
-        GROUP BY DATE(insert_time)
+        GROUP BY DATE_FORMAT(insert_time, '%Y年%m月%d日')
         ORDER BY stat;
     </select>
 
@@ -77,7 +77,7 @@
                 AND #{categoryCode} = category_code
             </if>
         </where>
-        GROUP BY DATE_FORMAT(insert_time, '%Y-%m')
+        GROUP BY DATE_FORMAT(insert_time, '%Y年%m月')
         ORDER BY stat;
     </select>
 

+ 2 - 1
server/yusp-tagging-core/src/main/resources/messages/yusp_input_msg.properties

@@ -105,4 +105,5 @@ E004=Excel \u4E2D\u6CA1\u6709\u6709\u6548\u6570\u636E
 E005=\u53D1\u73B0\u91CD\u590D\u7684\u6807\u7B7E\u540D\u79F0:[{0}]
 E006=\u6821\u9A8C\u5931\u8D25\uFF1A\u6807\u7B7E [{0}] \u7684\u7236\u6807\u7B7E [{1}] \u4E0D\u5B58\u5728\u4E8E\u6587\u4EF6\u4E2D\u3002
 E007=\u68C0\u6D4B\u5230\u6807\u7B7E\u5C42\u7EA7\u73AF\u8DEF:{0}
-E008=\u8C03\u7528AI\u6253\u6807\u63A5\u53E3\u5931\u8D25
+E008=\u8C03\u7528AI\u6253\u6807\u63A5\u53E3\u5931\u8D25
+E009=\u83B7\u53D6\u7528\u6237\u767B\u9646\u4FE1\u606F\u4E3A\u7A7A

BIN
server/yusp-tagging-core/src/main/resources/template/tag_batch_Import_template.xlsx


+ 9 - 3
server/yusp-tagging-starter/pom.xml

@@ -123,11 +123,17 @@
             <artifactId>mysql-connector-java</artifactId>
             <version>8.0.33</version> <!-- 使用最新稳定版本 -->
         </dependency>
-        <!-- PostgreSQL 的 JDBC 驱动-->
+
         <dependency>
-            <groupId>org.postgresql</groupId>
-            <artifactId>postgresql</artifactId>
+            <groupId>cn.com.kingbase</groupId>
+            <artifactId>kingbase8</artifactId>
+            <version>9.0.0</version>
         </dependency>
+        <!-- PostgreSQL 的 JDBC 驱动-->
+<!--        <dependency>-->
+<!--            <groupId>org.postgresql</groupId>-->
+<!--            <artifactId>postgresql</artifactId>-->
+<!--        </dependency>-->
         <!-- HikariCP -->
         <dependency>
             <groupId>com.zaxxer</groupId>

+ 0 - 42
server/yusp-tagging-starter/src/main/resources/application.yml

@@ -1,21 +1,6 @@
 spring:
   cache:
     type: redis #缓存类型
-  main:
-    allow-bean-definition-overriding: true
-  redis:
-    database: 0 #Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0
-    host: 10.192.72.13 #Redis地址
-    port: 36379 #Redis端口
-    password: 123456 #Redis密码
-    timeout: 10000 #Redis连接超时时间
-    lettuce:
-      shutdown-timeout: 60000ms #关闭超时时间
-      pool:
-        max-active: 20 #连接池最大连接数(使用负值表示没有限制) 默认 8
-        max-wait: 10000ms #连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
-        min-idle: 1 #连接池中的最小空闲连接 默认 0
-        max-idle: 20 #连接池中的最大空闲连接 默认 8
   application:
     jackson:
       date-format: yyyy-MM-dd HH:mm:ss  # 您已有的配置
@@ -26,28 +11,6 @@ spring:
       deserialization:
         fail-on-unknown-properties: false
       default-property-inclusion: non_null
-#  datasource:
-#    driver-class-name: org.postgresql.Driver # PostgreSQL数据库连接驱动
-#    type: com.zaxxer.hikari.HikariDataSource # 数据库连接池类型
-#    url: jdbc:postgresql://10.192.72.13:5656/fjnx?currentSchema=ai_tag # PostgreSQL数据库地址及schema
-#    username: ai_tag # 数据库用户名
-#    password: 3edc$RFV # 数据库密码
-#    hikari:
-#      minimum-idle: 1 # 空闲时最小连接数
-#      maximum-pool-size: 20 # 连接池大小
-#      connection-test-query: SELECT 1 # 连接池验证查询
-
-  datasource:
-    driver-class-name: com.mysql.cj.jdbc.Driver #mysql数据库连接驱动
-    type: com.zaxxer.hikari.HikariDataSource #数据库连接池类型
-    url: jdbc:mysql://10.192.72.13:6780/fjnx?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&allowMultiQueries=true&useSSL=false #数据库地址
-    username: root #数据库用户名
-    password: 123456 #数据库密码(密文)
-    hikari:
-      minimum-idle: 1 #空闲时最小连接数
-      maximum-pool-size: 20 #连接池大小
-      connection-test-query: select 1 #连接池验证
-
 
 license:
   licenseContext: <?xml version="1.0" encoding="UTF-8"?><license build-time="Tue Dec 29 13:26:00 CST 2020" validate-code="6A1B578E7FDEF76A57917A12BC359ED4"><element name="customer_name">上海银行股份有限公司</element><element name="contract_code">KJ2020-0038</element><element name="license_code">0000019279</element><element name="product_code">0000001122</element><element name="product_name_zh-cn">宇信科技基于微服务框架统一开发平台</element><element name="product_name_en-us">YUSP</element><element name="version_major">1</element><element name="version_sub">0</element><element name="version_publish">1</element><element name="complie_date">2018-03-20</element><element name="license_type">客户销售许可证</element><element name="license_start_time">2020-12-29</element><element name="license_end_time">2040-12-27</element></license>
@@ -62,11 +25,6 @@ mybatis-plus:
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 控制台输出
 
-fastapi:
-  service:
-    url: http://10.192.72.13:9876  # 你的FastAPI服务地址
-    timeout: 10000  # 请求超时时间
-
 # 认证配置
 auth:
   enabled: false  # 认证开关,true为开启,false为关闭

+ 4 - 2
server/yusp-tagging-starter/src/main/resources/bootstrap.yml

@@ -1,4 +1,6 @@
 spring:
+  main:
+    allow-bean-definition-overriding: true
   application:
     name: tag-server
   cloud:
@@ -6,6 +8,8 @@ spring:
       discovery:
         server-addr: 10.192.72.13:38848
         namespace: ai-tagging
+        username: nacos
+        password: nacos
       config:
         server-addr: 10.192.72.13:38848
         namespace: ai-tagging
@@ -19,7 +23,5 @@ spring:
         extension-configs[1]:
           data-id: application-license.yml
           refresh: true #配置扩展属性动态刷新
-
-
 server:
   port: 30001