智能标注应用层代码 提交

This commit is contained in:
weiweiw 2024-12-17 13:36:14 +08:00
parent 8cdf118c3b
commit 27a09e6722
6 changed files with 144 additions and 48 deletions

View File

@ -1,42 +1,32 @@
package com.bonus.ai.controller;
import com.bonus.ai.client.intelligentAnnotation.AnnotationRequest;
import com.bonus.ai.client.intelligentAnnotation.AnnotationResult;
import com.bonus.ai.client.intelligentAnnotation.IntelligentAnnotationServiceOkHttp;
import com.bonus.ai.domain.DataSetBasicFileEntity;
import com.bonus.ai.domain.dataset.AnnotationTaskAnnotatorEntity;
import com.bonus.ai.domain.DataSetSampleEntity;
import com.bonus.ai.domain.dataset.AnnotationTaskEntity;
import com.bonus.ai.domain.dataset.IntelligentAnnotationServiceEntity;
import com.bonus.ai.service.DataSetTeamMemberService;
import com.bonus.ai.service.dataset.AnnotationTaskService;
import com.bonus.ai.service.dataset.IntelligentAnnotationService;
import com.bonus.ai.utils.MinioUtil;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import com.bonus.common.security.annotation.RequiresPermissions;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.catalina.security.SecurityUtil;
import org.apache.commons.io.IOUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@RestController
@RequestMapping("/intelligentAnnotation")
public class IntelligentAnnotationController {
public class IntelligentAnnotationController extends BaseController {
@Resource
private IntelligentAnnotationService intelligentAnnotationService;
@ -45,23 +35,94 @@ public class IntelligentAnnotationController {
@Resource
private AnnotationTaskService annotationTaskService;
@RequiresPermissions("dataCenter:annotation:intelligentAnnotation:list")
/**
* 查询列表
*/
@RequiresPermissions("dataCenter:ailabelservice:list")
@GetMapping("/service/list")
public AjaxResult getAIAnnotationServiceList() {
public TableDataInfo list(IntelligentAnnotationServiceEntity entity)
{
try {
List<IntelligentAnnotationServiceEntity> serviceList = intelligentAnnotationService.getAIAnnotationServiceList();
return AjaxResult.success(serviceList);
}catch (Exception e){
return AjaxResult.error("获取智能标注服务列表失败");
startPage();
List<IntelligentAnnotationServiceEntity> list = intelligentAnnotationService.getAIAnnotationServiceList(entity);
return getDataTable(list);
}catch (Exception e) {
return getDataTable(new ArrayList<>());
}
}
/**
* 获取详细信息
*/
@RequiresPermissions("dataCenter:sample:query")
@GetMapping(value = "/getInfo/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
try {
IntelligentAnnotationServiceEntity service = intelligentAnnotationService.getAIAnnotationServiceById(id);
return AjaxResult.success(service);
} catch (Exception e){
return AjaxResult.error("获取智能标注服务详细信息失败");
}
}
/**智能标注,预留接口
/**
* 新增
*/
@RequiresPermissions("dataCenter:ailabelservice:add")
@PostMapping("/add")
@SysLog(title = "智能标注服务管理", businessType = OperaType.INSERT,logType = 0,module = "智能标注服务管理",details = "新增数据")
public AjaxResult add(@RequestBody IntelligentAnnotationServiceEntity entity)
{
try {
int result = intelligentAnnotationService.insertAIAnnotationService(entity);
return AjaxResult.success(result);
}catch(Exception e){
return AjaxResult.error("新增失败");
}
}
/**
* 修改
*/
@RequiresPermissions("dataCenter:ailabelservice:edit")
@PostMapping("/update")
@SysLog(title = "智能标注服务管理", businessType = OperaType.UPDATE,logType = 0,module = "智能标注服务管理",details = "修改数据")
public AjaxResult edit(@RequestBody IntelligentAnnotationServiceEntity entity)
{
try {
int result = intelligentAnnotationService.updateAIAnnotationService(entity);
return AjaxResult.success(result);
}catch(Exception e){
return AjaxResult.error("更新失败");
}
}
/**
* 删除
*/
@RequiresPermissions("dataCenter:ailabelservice:remove")
@PostMapping("/delete/{ids}")
@SysLog(title = "智能标注服务管理", businessType = OperaType.DELETE,logType = 0,module = "智能标注服务管理",details = "删除数据")
public AjaxResult remove(@PathVariable Long[] ids)
{
try {
int result = intelligentAnnotationService.deleteAIAnnotationService(ids);
return AjaxResult.success(result);
}catch(Exception e){
return AjaxResult.error("删除失败");
}
}
/**智能标注,预留接口
* @param task 标注文件的信息
* @return 返回影响的行数或错误信,AnnotationTaskAnnotatorEntity
*/
@PostMapping("/annotate")
@SysLog(title = "智能标注服务管理", businessType = OperaType.OTHER,logType = 0,module = "智能标注服务管理",details = "智能标注")
public AjaxResult aiAnnotate(@Validated @RequestBody AnnotationTaskEntity task) throws IOException {
try {
IntelligentAnnotationServiceEntity service = intelligentAnnotationService.getAIAnnotationServiceById(task.getIntelligentAnnotationServiceId());

View File

@ -19,7 +19,7 @@ public interface IntelligentAnnotationMapper
*/
int insertIntelligentAnnotationService(IntelligentAnnotationServiceEntity serviceInfo);
int deleteIntelligentAnnotationService(Long serviceId);
int deleteIntelligentAnnotationService(Long[] ids);
/**
@ -33,7 +33,7 @@ public interface IntelligentAnnotationMapper
* 获取所有未被删除的服务信息列表
* @return 服务信息
*/
List<IntelligentAnnotationServiceEntity> getIntelligentAnnotationService();
List<IntelligentAnnotationServiceEntity> getIntelligentAnnotationService(IntelligentAnnotationServiceEntity entity);
/**
* 获取所有未被删除的服务信息列表

View File

@ -13,6 +13,7 @@ import com.bonus.ai.mapper.DatasetMapper;
import com.bonus.ai.mapper.IntelligentAnnotationMapper;
import com.bonus.ai.service.dataset.IntelligentAnnotationService;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -38,8 +39,8 @@ public class IntelligentAnnotationServiceImpl implements IntelligentAnnotationSe
private MinioConfig minioConfig;
@Override
public List<IntelligentAnnotationServiceEntity> getAIAnnotationServiceList() {
return intelligentAnnotationMapper.getIntelligentAnnotationService();
public List<IntelligentAnnotationServiceEntity> getAIAnnotationServiceList(IntelligentAnnotationServiceEntity entity) {
return intelligentAnnotationMapper.getIntelligentAnnotationService(entity);
}
@Override
@ -47,6 +48,27 @@ public class IntelligentAnnotationServiceImpl implements IntelligentAnnotationSe
return intelligentAnnotationMapper.getIntelligentAnnotationServiceById(serviceId);
}
@Override
public int deleteAIAnnotationService(Long[] ids) {
return intelligentAnnotationMapper.deleteIntelligentAnnotationService(ids);
}
@Override
public int insertAIAnnotationService(IntelligentAnnotationServiceEntity serviceInfo)
{
serviceInfo.setCreateBy(SecurityUtils.getUsername());
return intelligentAnnotationMapper.insertIntelligentAnnotationService(serviceInfo);
}
@Override
public int updateAIAnnotationService(IntelligentAnnotationServiceEntity serviceInfo)
{
serviceInfo.setUpdateBy(SecurityUtils.getUsername());
return intelligentAnnotationMapper.updateIntelligentAnnotationService(serviceInfo);
}
@Override
public AjaxResult aiAnnotate(AnnotationTaskEntity taskInfo, List<DataSetBasicFileEntity> fileList, IntelligentAnnotationServiceEntity aiAnnotationServiceInfo) {
try {

View File

@ -13,9 +13,14 @@ import java.util.List;
public interface IntelligentAnnotationService {
List<IntelligentAnnotationServiceEntity> getAIAnnotationServiceList();
List<IntelligentAnnotationServiceEntity> getAIAnnotationServiceList(IntelligentAnnotationServiceEntity entity);
IntelligentAnnotationServiceEntity getAIAnnotationServiceById(Long serviceId);
AjaxResult aiAnnotate(AnnotationTaskEntity taskInfo,List<DataSetBasicFileEntity> filelist,IntelligentAnnotationServiceEntity aiAnnotationServiceInfo);
int deleteAIAnnotationService(Long[] ids);
int insertAIAnnotationService(IntelligentAnnotationServiceEntity serviceInfo);
int updateAIAnnotationService(IntelligentAnnotationServiceEntity serviceInfo);
}

View File

@ -18,6 +18,20 @@
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectIntelligentAnnotationServiceVo">
select intelligent_annotation_service_id, intelligent_annotation_service_name, intelligent_annotation_service_url, del_flag, create_by, create_time, update_by, update_time from ai_intelligent_annotation_service
</sql>
<!-- 查询所有有效记录 -->
<select id="getIntelligentAnnotationService" parameterType="com.bonus.ai.domain.dataset.IntelligentAnnotationServiceEntity" resultMap="IntelligentAnnotationServiceResultMap">
<include refid="selectIntelligentAnnotationServiceVo"/>
<where>
<if test="serviceName != null and serviceName != ''"> intelligent_annotation_service_name like concat('%', #{serviceName}, '%')</if>
and del_flag = '0'
</where>
ORDER BY create_time DESC
</select>
<!-- 插入 -->
<insert id="insertIntelligentAnnotationService" parameterType="com.bonus.ai.domain.dataset.IntelligentAnnotationServiceEntity" useGeneratedKeys="true" keyProperty="serviceId">
INSERT INTO ai_intelligent_annotation_service
@ -44,34 +58,28 @@
</insert>
<!-- 更新 -->
<update id="updateIntelligentAnnotationService">
UPDATE ai_intelligent_annotation_service
SET intelligent_annotation_service_name = #{serviceName},
intelligent_annotation_service_url = #{serviceUrl},
intelligent_annotation_service_labels = #{annotationLabels},
del_flag = #{delFlag},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE intelligent_annotation_service_id = #{serviceId}
<update id="updateIntelligentAnnotationService" parameterType="com.bonus.ai.domain.dataset.IntelligentAnnotationServiceEntity">
update ai_intelligent_annotation_service
<trim prefix="SET" suffixOverrides=",">
<if test="serviceName != null and serviceName != ''">intelligent_annotation_service_name = #{serviceName},</if>
<if test="serviceUrl != null and serviceUrl != ''">intelligent_annotation_service_url = #{serviceUrl},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
</trim>
where intelligent_annotation_service_id = #{serviceId}
</update>
<update id="deleteIntelligentAnnotationService">
UPDATE ai_intelligent_annotation_service
SET del_flag = '1'
WHERE intelligent_annotation_service_id = #{serviceId}
update ai_intelligent_annotation_service set del_flag='1' where intelligent_annotation_service_id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<!-- 按 ID 查询 -->
<select id="getIntelligentAnnotationServiceById" resultMap="IntelligentAnnotationServiceResultMap">
SELECT * FROM ai_intelligent_annotation_service
WHERE intelligent_annotation_service_id = #{serviceId}
</select>
<!-- 查询所有有效记录 -->
<select id="getIntelligentAnnotationService" resultMap="IntelligentAnnotationServiceResultMap">
SELECT * FROM ai_intelligent_annotation_service
WHERE del_flag = '0'
</select>
</mapper>

View File

@ -247,8 +247,8 @@ create table ai_intelligent_annotation_service
del_flag char(1) default '0' comment '是否删除(0代表存在,1代表删除)',
create_by varchar(64) default '' comment '创建者',
update_by varchar(64) default '' comment '更新者',
update_time datetime default null comment '更新时间',
create_time datetime default null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP on UPDATE CURRENT_TIMESTAMP comment '更新时间',
create_time datetime default CURRENT_TIMESTAMP comment '创建时间',
primary key(intelligent_annotation_service_id)
)engine=innodb comment = '智能标注服务;