Skip to content

Commit

Permalink
新增原文译文正则表达式查询,id查询,批量单条翻译
Browse files Browse the repository at this point in the history
  • Loading branch information
XHXJ committed Jun 1, 2023
1 parent 534849f commit 25b590a
Show file tree
Hide file tree
Showing 11 changed files with 231 additions and 28 deletions.
4 changes: 4 additions & 0 deletions gpt-translator-web/src/api/query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,7 @@ export const deleteFile = (params?: object) => {
export const translationDelete = (data?: object) => {
return http.request("delete", "/api/translation-data/delete",{data});
}

export const postTranslateOne = (data?: object) => {
return http.request("post", "/api/translation-data/one-translate",{data});
}
90 changes: 83 additions & 7 deletions gpt-translator-web/src/views/query/translate/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
<el-card>
<el-form
:inline="true"
class="bg-bg_color w-[99/100] pl-8 pt-4">
class="bg-bg_color w-[99/100] pl-9 pt-4">
<el-form-item label="项目:">
<el-select
v-model="form.projectId"
filterable
remote
reserve-keyword
placeholder="请选择项目"
placeholder="请输入项目名"
:remote-method="projectsRemoteMethod"
:loading="loading1"
>
Expand All @@ -29,7 +29,7 @@
filterable
remote
reserve-keyword
placeholder="请选择文件"
placeholder="请选输入文件名"
:remote-method="fileRemoteMethod"
:loading="loading2"
>
Expand All @@ -44,7 +44,37 @@
</el-form>
<el-form
:inline="true"
class="bg-bg_color w-[99/100] pl-8 pt-4"
class="bg-bg_color w-[99/100] pl-10 pt-4"
>

<el-form-item label="id:" prop="id">
<el-input
v-model="form.id"
placeholder="输入查询id"
clearable
class="!w-[200px]"
/>
</el-form-item>
<el-form-item label="原文正则表达式:" prop="originalRegular">
<el-input
v-model="form.originalRegular"
placeholder="输入正则表达式"
clearable
class="!w-[200px]"
/>
</el-form-item>
<el-form-item label="译文正则表达式:" prop="translationRegular">
<el-input
v-model="form.translationRegular"
placeholder="输入正则表达式"
clearable
class="!w-[200px]"
/>
</el-form-item>
</el-form>
<el-form
:inline="true"
class="bg-bg_color w-[99/100] pl-6 pt-4"
>
<el-form-item label="原文:" prop="originalText">
<el-input
Expand Down Expand Up @@ -89,9 +119,17 @@
重置
</el-button>
</el-form-item>
<el-form-item>
<el-button
type="success"
@click="translateOne"
>
批量单条翻译
</el-button>
</el-form-item>
<el-form-item>
<el-popconfirm @confirm="onDeleteSelectionChangeForm"
:title="'是否删除 ' + selectionChangeForm.value.length + ' 条数据?'">
:title="'删除 ' + selectionChangeForm.value.length + ' 条数据?'">
<template #reference>
<el-button type="danger">删除</el-button>
</template>
Expand All @@ -105,7 +143,17 @@
<h4 class="table-name">翻译查询:</h4>
<el-table :data="table.data" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"/>
<el-table-column prop="id" label="id" width="100"/>
<el-table-column prop="id" label="id" width="100">
<template #default="scope">
<div v-if="scope.row.id == form.id" style="color: red">
{{ scope.row.id }}
</div>
<div v-else>
{{ scope.row.id }}
</div>
</template>
</el-table-column>
>
<el-table-column prop="originalText" label="原文"/>
<el-table-column prop="translationText" label="原始译文"/>
<el-table-column prop="translationText" label="编辑译文">
Expand Down Expand Up @@ -141,7 +189,14 @@

<script lang="ts" setup>
import {message} from "@/utils/message";
import {translationDataPage, translationDelete, translationUpdate, vueFileSelect, vueProjectsSelect} from '@/api/query'
import {
postTranslateOne,
translationDataPage,
translationDelete,
translationUpdate,
vueFileSelect,
vueProjectsSelect
} from '@/api/query'
import {onMounted, reactive, ref} from "vue";
import {useRoute} from "vue-router";
Expand Down Expand Up @@ -180,6 +235,10 @@ const table = reactive({
total: 0
})
const form = reactive({
originalRegular: '',
translationRegular: '',
id: '',
regular: '',
originalText: '',
translationText: '',
isTranslation: '',
Expand All @@ -188,18 +247,35 @@ const form = reactive({
})
const onReset = () => {
form.originalRegular = ''
form.translationRegular = ''
form.originalText = ''
form.translationText = ''
form.isTranslation = ''
form.projectId = ''
form.fileId = ''
form.id = ''
value1.value = []
value2.value = []
}
const selectionChangeForm = reactive({
value: []
})
const translateOne = () => {
if (selectionChangeForm.value.length === 0) {
message('请选择要翻译的数据', {type: 'warning'})
return
}
const ids = selectionChangeForm.value.map(item => item.id)
postTranslateOne(ids).then(res => {
if (res.code === 0) {
message(res.data, {type: 'success'})
onSearch()
}
})
}
//多选
const handleSelectionChange = (val: object[]) => {
selectionChangeForm.value = val
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
Expand Down Expand Up @@ -57,6 +58,13 @@ public CommonResult<Boolean> delete(@RequestBody Long[] id) {
return CommonResult.success(translationDataService.removeByIds(Arrays.asList(id)));
}

@PostMapping("/one-translate")
@Operation(summary = "批量单个翻译")
public CommonResult<String> oneTranslate(@RequestBody @NotEmpty(message = "id不能为空") Long[] id) {
translationDataService.oneTranslate(Arrays.asList(id));
return CommonResult.success("批量单个翻译成功");
}

@PostMapping(path = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(summary = "上传翻译json文件")
public CommonResult<Integer> uploadFile(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,8 @@ public class TranslationDataPageReqVO {
private Integer projectId;
@Schema(description = "文件id")
private Integer fileId;
@Schema(description = "译文正则表达式")
private String translationRegular;
@Schema(description = "原文正则表达式")
private String originalRegular;
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.xhxj.jsongpttranslator.dal.hsqldb;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xhxj.jsongpttranslator.controller.translationdata.vo.TranslationDataPageReqVO;
import com.xhxj.jsongpttranslator.dal.dataobject.TranslationData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;

Expand All @@ -15,4 +19,6 @@ public interface TranslationDataMapper extends BaseMapper<TranslationData> {
* @return 影响行数
*/
Integer insertBatchSomeColumn(Collection<TranslationData> entityList);

IPage<TranslationData> selectTranslationDataPage(@Param("page") Page<TranslationData> objectPage, @Param("reqVO") TranslationDataPageReqVO translationDataPageReqVO);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import com.xhxj.jsongpttranslator.controller.OpenaiProperties.vo.ChatGptConfigTestRespVo;
import com.xhxj.jsongpttranslator.controller.OpenaiProperties.vo.ChatGptConfigTestVo;
import com.xhxj.jsongpttranslator.controller.OpenaiProperties.vo.ChatGptConfigVo;
import com.xhxj.jsongpttranslator.dal.dataobject.TranslationData;

import java.util.List;

public interface ChatGptTranslationService {
/**
Expand All @@ -19,4 +22,11 @@ public interface ChatGptTranslationService {
* 测试翻译
*/
ChatGptConfigTestRespVo testChatGptConfig(ChatGptConfigTestVo chatgptConfigVo);


/**
* 批量单独翻译
* @param translationDataList
*/
void translateOne(List<TranslationData> translationDataList);
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import com.xhxj.jsongpttranslator.translation.async.chat.ChatGptTranslationAsyncService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import okhttp3.OkHttpClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -51,6 +50,9 @@ public class ChatGptTranslationServiceImpl implements ChatGptTranslationService
@Autowired
private TranslationModeSwitcher translationModeSwitcher;

//翻译模式
private TranslationMode translationMode;


/**
* 停止程序
Expand All @@ -67,6 +69,18 @@ public void stop() {
log.info("程序已经设置停止");
}

/**
* 初始化翻译器
*/
private void initializeTranslator() {
//获取翻译模式
translationMode = translationModeSwitcher.switchMode(chatgptConfig.getTranslateMode());
//开启限制器
apiLimiter.start();
//设置okhttp
okHttpClientConfigurator.setOkHttpClient();
}

@Override
@Async("taskExecutor")
public void start() {
Expand All @@ -80,12 +94,8 @@ public void start() {
//查询需要翻译的句子
LambdaQueryWrapper<TranslationData> wrapper = new LambdaQueryWrapper<>();
wrapper.isNull(TranslationData::getTranslationText);
//获取翻译模式
TranslationMode translationMode = translationModeSwitcher.switchMode(chatgptConfig.getTranslateMode());
//开启限制器
apiLimiter.start();
//设置okhttp
okHttpClientConfigurator.setOkHttpClient();
//初始化翻译器
initializeTranslator();

do {
List<TranslationData> multipleSentences = translationDataService.list(wrapper);
Expand All @@ -104,7 +114,7 @@ public void start() {
//翻译完所有的句子
List<TranslationData> singleSentence = translationDataService.list(wrapper);
//如果还有未被翻译的句子,就单条去翻译
log.info("单条漏翻处理,还有{}条句子未被翻译", singleSentence.size());
log.info("单条翻译处理,还有{}条句子未被翻译", singleSentence.size());
if (singleSentence.size() == 0) {
return;
}
Expand All @@ -124,9 +134,28 @@ public void start() {
}
}

@Override
public void translateOne(List<TranslationData> singleSentence) {
if (!startFlag.compareAndSet(false, true)) {
log.info("程序已经启动");
return;
}
//初始化翻译器
initializeTranslator();
//如果还有未被翻译的句子,就单条去翻译
log.info("单条翻译处理,还有{}条句子未被翻译", singleSentence.size());
if (singleSentence.size() == 0) {
return;
}
//单条翻译
translationMode.translateOne(singleSentence);
startFlag.set(false);
}

@Override
public ChatGptConfigTestRespVo testChatGptConfig(ChatGptConfigTestVo chatgptConfigVo) {
//设置okhttp
okHttpClientConfigurator.setOkHttpClient();
return chatGptTranslationAsyncService.testChatGptConfig(chatgptConfigVo);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.xhxj.jsongpttranslator.dal.dataobject.TranslationData;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface TranslationDataService extends IService<TranslationData> {
/**
* 读取json文件
Expand Down Expand Up @@ -35,4 +37,6 @@ public interface TranslationDataService extends IService<TranslationData> {
Integer readExcelFile(MultipartFile files, String projectName);

byte[] exportExcel(Integer projects);

void oneTranslate(List<Long> list);
}
Loading

0 comments on commit 25b590a

Please sign in to comment.