diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/MyBatisConfig.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/MyBatisConfig.java new file mode 100644 index 000000000..cc17de8a6 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/MyBatisConfig.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.llm.framework.backend.config; + +import cn.hutool.json.JSONObject; +import cn.iocoder.yudao.module.llm.handler.JSONObjectTypeHandler; +import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer; +import org.apache.ibatis.type.TypeHandlerRegistry; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@MapperScan("cn.iocoder.yudao.module.llm.dal.mysql.dataprocesstask") +public class MyBatisConfig { + + @Bean + public JSONObjectTypeHandler jsonObjectTypeHandler() { + return new JSONObjectTypeHandler(); + } + + @Bean + public ConfigurationCustomizer configurationCustomizer() { + return configuration -> { + TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry(); + if (!typeHandlerRegistry.hasTypeHandler(JSONObject.class)) { + typeHandlerRegistry.register(JSONObject.class, jsonObjectTypeHandler()); + } + }; + } +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/handler/JSONObjectTypeHandler.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/handler/JSONObjectTypeHandler.java new file mode 100644 index 000000000..e782cb747 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/handler/JSONObjectTypeHandler.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.llm.handler; + +import cn.hutool.json.JSONObject; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class JSONObjectTypeHandler extends BaseTypeHandler { + @Override + public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType) throws SQLException { + ps.setString(i, parameter.toString()); + } + + @Override + public JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException { + String jsonStr = rs.getString(columnName); + return jsonStr == null ? null : new JSONObject(jsonStr); + } + + @Override + public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String jsonStr = rs.getString(columnIndex); + return jsonStr == null ? null : new JSONObject(jsonStr); + } + + @Override + public JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String jsonStr = cs.getString(columnIndex); + return jsonStr == null ? null : new JSONObject(jsonStr); + } +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncDataProcessService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncDataProcessService.java index 935be71b3..6f61e6ae4 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncDataProcessService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncDataProcessService.java @@ -1,6 +1,9 @@ package cn.iocoder.yudao.module.llm.service.async; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.llm.dal.dataobject.dataprocesstask.DataProcessTaskDO; +import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO; +import cn.iocoder.yudao.module.llm.dal.mysql.dataprocesstask.DataProcessTaskMapper; import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -9,12 +12,29 @@ import javax.annotation.Resource; @Service public class AsyncDataProcessService { + @Resource + private DatasetMapper datasetMapper; + @Resource + private DataProcessTaskMapper dataProcessTaskMapper; + + /* @Resource + private */ @Async public void backups(DataProcessTaskDO dataProcessTask) { try { - Thread.sleep(100000); - }catch(InterruptedException e){ + // 判断备份数据集是否存在 + if (dataProcessTask.getDatasetPostId() == null){ + DatasetDO datasetDO = datasetMapper.selectById(dataProcessTask.getDatasetId()); + DatasetDO newData = BeanUtils.toBean(datasetDO, DatasetDO.class); + newData.setId(null); + datasetMapper.insert(newData); + dataProcessTask.setDatasetPostId(newData.getId()); + dataProcessTaskMapper.updateById(dataProcessTask); + } + + }catch(Exception e){ + dataProcessTaskMapper.updateStatus(dataProcessTask.getId(), 5); }; } }