From 9a25e8ce4a50f94650a2d62b557107f19905cedd Mon Sep 17 00:00:00 2001 From: xupei Date: Mon, 30 Jun 2025 15:11:31 +0800 Subject: [PATCH] =?UTF-8?q?TASK:=20=E6=89=B9=E9=87=8F=E7=94=9F=E6=88=90=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BB=BB=E5=8A=A1=E5=BA=8F=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/controller/ProjectController.java | 25 +++++++- .../primary/BatchTaskSequenceMapper.java | 16 +++++ .../primary/entity/BatchTaskSequence.java | 16 +++++ .../com/ai/da/service/ProjectService.java | 2 + .../da/service/impl/ProjectServiceImpl.java | 60 +++++++++---------- 5 files changed, 85 insertions(+), 34 deletions(-) create mode 100644 src/main/java/com/ai/da/mapper/primary/BatchTaskSequenceMapper.java create mode 100644 src/main/java/com/ai/da/mapper/primary/entity/BatchTaskSequence.java diff --git a/src/main/java/com/ai/da/controller/ProjectController.java b/src/main/java/com/ai/da/controller/ProjectController.java index c1cc22f4..4d76935c 100644 --- a/src/main/java/com/ai/da/controller/ProjectController.java +++ b/src/main/java/com/ai/da/controller/ProjectController.java @@ -1,12 +1,11 @@ package com.ai.da.controller; +import com.ai.da.common.config.MyTaskScheduler; import com.ai.da.common.response.PageBaseResponse; import com.ai.da.common.response.Response; -import com.ai.da.mapper.primary.entity.LibraryModelPoint; -import com.ai.da.mapper.primary.entity.ThreeDLayout; import com.ai.da.model.dto.*; -import com.ai.da.model.enums.MannequinType; import com.ai.da.model.vo.*; +import com.ai.da.service.ProjectService; import com.ai.da.service.UserLikeGroupService; import com.ai.da.service.WorkspaceService; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; @@ -33,6 +32,9 @@ public class ProjectController { @Resource private UserLikeGroupService userLikeGroupService; + @Resource + private ProjectService projectService; + @PostMapping("/saveOrUpdate") @ApiOperationSupport(order = 1) @ApiOperation(value = "新增或编辑", notes = "传入project") @@ -131,4 +133,21 @@ public class ProjectController { public Response delete(@RequestParam("projectId") Long projectId) { return Response.success(userLikeGroupService.delete(projectId)); } + + + /*@Resource + private MyTaskScheduler myTaskScheduler; + + @GetMapping("/dataMigration") + public String dataMigration(){ + myTaskScheduler.projectDataCreate(); + return "success"; + }*/ + + @GetMapping("/getNextSequence") + public Response getNextSequence(){ + return Response.success(projectService.getNextSequence()); + } + + } diff --git a/src/main/java/com/ai/da/mapper/primary/BatchTaskSequenceMapper.java b/src/main/java/com/ai/da/mapper/primary/BatchTaskSequenceMapper.java new file mode 100644 index 00000000..8b3dfe74 --- /dev/null +++ b/src/main/java/com/ai/da/mapper/primary/BatchTaskSequenceMapper.java @@ -0,0 +1,16 @@ +package com.ai.da.mapper.primary; + +import com.ai.da.mapper.primary.entity.BatchTaskSequence; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +public interface BatchTaskSequenceMapper extends BaseMapper { + + @Update("UPDATE t_batch_task_sequence SET current_sequence = LAST_INSERT_ID(current_sequence + 1) WHERE account_id = #{userId}") + int incrementSequence(@Param("userId") Long userId); + + @Select("SELECT LAST_INSERT_ID()") + Integer getLastInsertId(); +} diff --git a/src/main/java/com/ai/da/mapper/primary/entity/BatchTaskSequence.java b/src/main/java/com/ai/da/mapper/primary/entity/BatchTaskSequence.java new file mode 100644 index 00000000..d8a90feb --- /dev/null +++ b/src/main/java/com/ai/da/mapper/primary/entity/BatchTaskSequence.java @@ -0,0 +1,16 @@ +package com.ai.da.mapper.primary.entity; + + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@TableName("t_batch_task_sequence") +@Data +public class BatchTaskSequence extends BaseEntity{ + + private Long accountId; + + private Integer currentSequence; +} diff --git a/src/main/java/com/ai/da/service/ProjectService.java b/src/main/java/com/ai/da/service/ProjectService.java index 85e01edd..7920c3f8 100644 --- a/src/main/java/com/ai/da/service/ProjectService.java +++ b/src/main/java/com/ai/da/service/ProjectService.java @@ -27,4 +27,6 @@ public interface ProjectService extends IService { Set getChildProjectIdSet(Long projectId); List getByProjectNameLike(String projectName); + + Integer getNextSequence(); } diff --git a/src/main/java/com/ai/da/service/impl/ProjectServiceImpl.java b/src/main/java/com/ai/da/service/impl/ProjectServiceImpl.java index b25fb0e5..43c396ef 100644 --- a/src/main/java/com/ai/da/service/impl/ProjectServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/ProjectServiceImpl.java @@ -1,52 +1,22 @@ package com.ai.da.service.impl; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.exceptions.ExceptionUtil; -import com.ai.da.common.config.FileProperties; -import com.ai.da.common.config.exception.BusinessException; -import com.ai.da.common.constant.CommonConstant; import com.ai.da.common.context.UserContext; -import com.ai.da.common.enums.CollectionLevel1TypeEnum; -import com.ai.da.common.enums.DesignTypeEnum; -import com.ai.da.common.enums.SingleOverallEnum; -import com.ai.da.common.enums.SysFileLevel2TypeEnum; -import com.ai.da.common.utils.*; import com.ai.da.mapper.primary.*; -import com.ai.da.mapper.primary.entity.Collection; import com.ai.da.mapper.primary.entity.*; -import com.ai.da.model.dto.*; -import com.ai.da.model.vo.*; -import com.ai.da.python.PythonService; -import com.ai.da.python.vo.*; import com.ai.da.service.*; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONException; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.google.common.collect.Lists; -import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; -import okhttp3.*; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; import javax.annotation.Resource; -import java.io.File; -import java.io.IOException; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import static com.ai.da.python.vo.DesignPythonItem.*; @Slf4j @Service @@ -72,4 +42,32 @@ public class ProjectServiceImpl extends ServiceImpl impl qw.lambda().like(Project::getName, projectName); return projectMapper.selectList(qw); } + + @Resource + private BatchTaskSequenceMapper batchTaskSequenceMapper; + + @Transactional(rollbackFor = Exception.class) + public Integer getNextSequence() { + Long accountId = UserContext.getUserHolder().getId(); + // 1. 尝试插入新记录(如果用户不存在) + BatchTaskSequence newCounter = new BatchTaskSequence(); + newCounter.setAccountId(accountId); + newCounter.setCurrentSequence(1); + newCounter.setCreateTime(LocalDateTime.now()); + + try { + batchTaskSequenceMapper.insert(newCounter); + return 1; + } catch (DuplicateKeyException e) { + // 2. 用户已存在,执行递增操作 + batchTaskSequenceMapper.incrementSequence(accountId); + Integer sequence = batchTaskSequenceMapper.getLastInsertId(); + + // 3. 验证获取的序号 + if (sequence == null) { + throw new RuntimeException("获取序号失败"); + } + return sequence; + } + } } \ No newline at end of file