From fe0d1f39b01876bdd98d5cadadde2ed8ff700055 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Wed, 16 Apr 2025 16:28:27 +0800 Subject: [PATCH 01/29] =?UTF-8?q?TASK:=E6=A8=A1=E5=9D=97=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../primary/entity/CollectionElement.java | 2 + .../impl/UserLikeGroupServiceImpl.java | 57 +++++++------------ 2 files changed, 23 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/ai/da/mapper/primary/entity/CollectionElement.java b/src/main/java/com/ai/da/mapper/primary/entity/CollectionElement.java index 45bec9eb..64103278 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/CollectionElement.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/CollectionElement.java @@ -88,4 +88,6 @@ public class CollectionElement implements Serializable { private Date updateDate; private Long projectId; + + private Integer isCompositeImage; } diff --git a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java index 930ab602..546f4873 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -1400,51 +1400,35 @@ public class UserLikeGroupServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); qw.lambda().eq(CollectionElement::getProjectId, projectDTO.getId()); -// qw.lambda().ne(CollectionElement::getCollectionId, 0); qw.lambda().eq(CollectionElement::getLevel1Type, CollectionLevel1TypeEnum.MOOD_BOARD.getRealName()); List collectionElements = collectionElementMapper.selectList(qw); - Long collectionId = null; + + List list = new ArrayList<>(); for (CollectionElement collectionElement : collectionElements) { - if (collectionElement.getCollectionId() != null) { - collectionId = collectionElement.getCollectionId(); - break; - } - } - Collection collection = collectionService.getById(collectionId); - if (Objects.nonNull(collection)) { - if (null != collection.getMoodboardPosition()) { - String moodboardPositionString = collectionService.getMoodboardPositionString(collection.getId()); - if (StringUtils.isEmpty(moodboardPositionString)) { - moodBoardModuleChooseVO.setMoodboardPosition(collection.getMoodboardPosition()); - }else { + if (collectionElement.getIsCompositeImage() == 1) { + moodBoardModuleChooseVO.setMoodTemplateId(String.valueOf(collectionElement.getId())); + moodBoardModuleChooseVO.setMoodTemplateName(collectionElement.getName()); + moodBoardModuleChooseVO.setMoodTemplateUrl(minioUtil.getPreSignedUrl(collectionElement.getUrl(), 24 * 60)); + + String moodboardPositionString = collectionService.getMoodboardPositionString(collectionElement.getId()); + if (!StringUtils.isEmpty(moodboardPositionString)) { moodBoardModuleChooseVO.setMoodboardPosition(moodboardPositionString); } + continue; } - if (collection.getMoodTemplateId() != null) { - CollectionElement layoutElement = collectionElementMapper.selectById(collection.getMoodTemplateId()); - moodBoardModuleChooseVO.setMoodTemplateId(collection.getMoodTemplateId()); - moodBoardModuleChooseVO.setMoodTemplateName(layoutElement.getName()); - moodBoardModuleChooseVO.setMoodTemplateUrl(minioUtil.getPreSignedUrl(layoutElement.getUrl(), 24 * 60)); + CollectionElementVO collectionElementVO = CopyUtil.copyObject(collectionElement, CollectionElementVO.class); + collectionElementVO.setDesignType(DesignTypeEnum.COLLECTION.getRealName()); + String url = collectionElement.getUrl(); + collectionElementVO.setOriginalUrl(url); + if (minioUtil.doesObjectExist(url)) { + collectionElementVO.setUrl(minioUtil.getPreSignedUrl(url, 24 * 60)); } - List list = new ArrayList<>(); - for (CollectionElement collectionElement : collectionElements) { - if (Objects.equals(collectionElement.getId(), Long.valueOf(collection.getMoodTemplateId()))) { - continue; - } - CollectionElementVO collectionElementVO = CopyUtil.copyObject(collectionElement, CollectionElementVO.class); - collectionElementVO.setDesignType(DesignTypeEnum.COLLECTION.getRealName()); - String url = collectionElement.getUrl(); - collectionElementVO.setOriginalUrl(url); - if (minioUtil.doesObjectExist(url)) { - collectionElementVO.setUrl(minioUtil.getPreSignedUrl(url, 24 * 60)); - } - if (minioUtil.doesObjectExist(collectionElementVO.getOriginalUrl())) { - list.add(collectionElementVO); - } + if (minioUtil.doesObjectExist(collectionElementVO.getOriginalUrl())) { + list.add(collectionElementVO); } - moodBoardModuleChooseVO.setMoodBoards(list); - moduleChooseVO.setMoodBoard(moodBoardModuleChooseVO); } + moodBoardModuleChooseVO.setMoodBoards(list); + moduleChooseVO.setMoodBoard(moodBoardModuleChooseVO); }else if (module.equals(Module.printBoard.name())) { QueryWrapper qw = new QueryWrapper<>(); @@ -1677,6 +1661,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl Date: Wed, 16 Apr 2025 16:35:51 +0800 Subject: [PATCH 02/29] =?UTF-8?q?TASK:=E6=A8=A1=E5=9D=97=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java index 546f4873..68412e0e 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -1405,7 +1405,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl list = new ArrayList<>(); for (CollectionElement collectionElement : collectionElements) { - if (collectionElement.getIsCompositeImage() == 1) { + if (null != collectionElement.getIsCompositeImage() && collectionElement.getIsCompositeImage() == 1) { moodBoardModuleChooseVO.setMoodTemplateId(String.valueOf(collectionElement.getId())); moodBoardModuleChooseVO.setMoodTemplateName(collectionElement.getName()); moodBoardModuleChooseVO.setMoodTemplateUrl(minioUtil.getPreSignedUrl(collectionElement.getUrl(), 24 * 60)); From acb37bc255022821b1a36678b1afe0e5de7e7082 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Thu, 17 Apr 2025 16:07:50 +0800 Subject: [PATCH 03/29] =?UTF-8?q?TASK:=E6=A8=A1=E5=9D=97=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/common/RabbitMQ/GenerateConsumer.java | 18 + .../common/RabbitMQ/RabbitMQProperties.java | 1 + .../ai/da/controller/DesignController.java | 23 +- .../ai/da/mapper/primary/CloudTaskMapper.java | 7 + .../da/mapper/primary/entity/CloudTask.java | 47 +++ .../ai/da/mapper/primary/entity/Project.java | 2 + .../com/ai/da/model/dto/CloudPageDTO.java | 9 + .../com/ai/da/model/dto/CloudTaskDTO.java | 9 + .../da/model/dto/DesignCloudResultQuery.java | 9 + .../java/com/ai/da/model/vo/CloudTaskVO.java | 9 + .../ai/da/model/vo/DesignModuleChooseVO.java | 4 +- .../com/ai/da/service/CloudTaskService.java | 8 + .../java/com/ai/da/service/DesignService.java | 13 +- .../com/ai/da/service/ProjectService.java | 28 ++ .../da/service/impl/CloudTaskServiceImpl.java | 28 ++ .../ai/da/service/impl/DesignServiceImpl.java | 314 +++++++++++++++--- .../da/service/impl/ProjectServiceImpl.java | 68 ++++ .../impl/UserLikeGroupServiceImpl.java | 1 + src/main/resources/application-dev.properties | 1 + 19 files changed, 533 insertions(+), 66 deletions(-) create mode 100644 src/main/java/com/ai/da/mapper/primary/CloudTaskMapper.java create mode 100644 src/main/java/com/ai/da/mapper/primary/entity/CloudTask.java create mode 100644 src/main/java/com/ai/da/model/dto/CloudPageDTO.java create mode 100644 src/main/java/com/ai/da/model/dto/CloudTaskDTO.java create mode 100644 src/main/java/com/ai/da/model/dto/DesignCloudResultQuery.java create mode 100644 src/main/java/com/ai/da/model/vo/CloudTaskVO.java create mode 100644 src/main/java/com/ai/da/service/CloudTaskService.java create mode 100644 src/main/java/com/ai/da/service/ProjectService.java create mode 100644 src/main/java/com/ai/da/service/impl/CloudTaskServiceImpl.java create mode 100644 src/main/java/com/ai/da/service/impl/ProjectServiceImpl.java diff --git a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java index 23fb9496..bfb6e159 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java @@ -5,6 +5,7 @@ import com.ai.da.common.utils.RedisUtil; import com.ai.da.model.dto.GenerateThroughImageTextDTO; import com.ai.da.model.vo.GenerateResultVO; import com.ai.da.model.vo.PoseTransformationVO; +import com.ai.da.service.DesignService; import com.ai.da.service.GenerateService; import com.ai.da.service.UserLikeGroupService; import com.alibaba.fastjson.JSONObject; @@ -34,6 +35,9 @@ public class GenerateConsumer { @Resource private UserLikeGroupService userLikeGroupService; + @Resource + private DesignService designService; + @Autowired private RabbitMQProperties rabbitMQProperties; @@ -305,6 +309,15 @@ public class GenerateConsumer { } + private void processDesignBatchResult(Message msg, Channel channel) { + log.info("============processDesignBatchResult listening=========="); + long start = System.currentTimeMillis(); + + Map generateResult = JSONObject.parseObject(msg.getBody(), Map.class); + log.info("designBatch response : {}", generateResult); + designService.processDesignBatch(generateResult); + } + @RabbitListener(queues = "#{rabbitMQProperties.queues.generate}") @RabbitHandler public void generateConsumer1(Message msg, Channel channel) { @@ -382,4 +395,9 @@ public class GenerateConsumer { public void getPoseTransformationResult(Message msg, Channel channel) { processPoseTransformResult(msg, channel); } + @RabbitListener(queues = "#{rabbitMQProperties.queues.designBatch}") + @RabbitHandler + public void getDesignBatchResult(Message msg, Channel channel) { + processDesignBatchResult(msg, channel); + } } diff --git a/src/main/java/com/ai/da/common/RabbitMQ/RabbitMQProperties.java b/src/main/java/com/ai/da/common/RabbitMQ/RabbitMQProperties.java index 55990193..6c85da94 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/RabbitMQProperties.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/RabbitMQProperties.java @@ -21,6 +21,7 @@ public class RabbitMQProperties { private String toProductImageResult; private String relightResult; private String poseTransform; + private String designBatch; } @Data diff --git a/src/main/java/com/ai/da/controller/DesignController.java b/src/main/java/com/ai/da/controller/DesignController.java index 6046ed32..f3f54343 100644 --- a/src/main/java/com/ai/da/controller/DesignController.java +++ b/src/main/java/com/ai/da/controller/DesignController.java @@ -1,11 +1,11 @@ package com.ai.da.controller; import com.ai.da.common.config.exception.BusinessException; +import com.ai.da.common.response.PageBaseResponse; import com.ai.da.common.response.Response; +import com.ai.da.mapper.primary.entity.CloudTask; import com.ai.da.model.dto.*; -import com.ai.da.model.vo.CollectionSketchVO; -import com.ai.da.model.vo.DesignCollectionVO; -import com.ai.da.model.vo.DesignLikeVO; +import com.ai.da.model.vo.*; import com.ai.da.service.DesignService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -97,8 +97,19 @@ public class DesignController { @ApiOperation(value = "云生成") @PostMapping("/designCloud") - @CrossOrigin - public Response designCloud(@Valid @RequestBody DesignCollectionDTO designDTO) { - return Response.success(designService.designCloud(designDTO)); + public Response designCloud(@Valid @RequestBody CloudTaskDTO cloudTaskDTO) { + return Response.success(designService.designCloud(cloudTaskDTO)); + } + + @ApiOperation(value = "云生成page") + @PostMapping("/cloudPage") + public Response> cloudPage(@Valid @RequestBody CloudPageDTO cloudPageDTO) { + return Response.success(PageBaseResponse.success(designService.cloudPage(cloudPageDTO))); + } + + @ApiOperation(value = "获取design云生成结果") + @PostMapping("/getDesignCloudResult") + public Response> getDesignCloudResult(@Valid @RequestBody DesignCloudResultQuery designCloudResultQuery) { + return Response.success(PageBaseResponse.success(designService.getDesignCloudResult(designCloudResultQuery))); } } diff --git a/src/main/java/com/ai/da/mapper/primary/CloudTaskMapper.java b/src/main/java/com/ai/da/mapper/primary/CloudTaskMapper.java new file mode 100644 index 00000000..c8796b82 --- /dev/null +++ b/src/main/java/com/ai/da/mapper/primary/CloudTaskMapper.java @@ -0,0 +1,7 @@ +package com.ai.da.mapper.primary; + +import com.ai.da.common.config.mybatis.plus.CommonMapper; +import com.ai.da.mapper.primary.entity.CloudTask; + +public interface CloudTaskMapper extends CommonMapper { +} diff --git a/src/main/java/com/ai/da/mapper/primary/entity/CloudTask.java b/src/main/java/com/ai/da/mapper/primary/entity/CloudTask.java new file mode 100644 index 00000000..ea61a799 --- /dev/null +++ b/src/main/java/com/ai/da/mapper/primary/entity/CloudTask.java @@ -0,0 +1,47 @@ +package com.ai.da.mapper.primary.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.apache.poi.hpsf.Decimal; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("cloud_task") +public class CloudTask implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private Long projectId; + + private Long collectionId; + + private Long designId; + + private String buildType; + + private Integer nums; + + private Integer completedNum; + + private Decimal costCredits; + + private Integer status; + + private String taskId; + + private LocalDateTime createTime; + + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Project.java b/src/main/java/com/ai/da/mapper/primary/entity/Project.java index 0876c60a..642c6a82 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/Project.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/Project.java @@ -35,6 +35,8 @@ public class Project implements Serializable { private Long originalPortfolioId; + private Long parentId; + private LocalDateTime createTime; private LocalDateTime updateTime; diff --git a/src/main/java/com/ai/da/model/dto/CloudPageDTO.java b/src/main/java/com/ai/da/model/dto/CloudPageDTO.java new file mode 100644 index 00000000..c91a485a --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/CloudPageDTO.java @@ -0,0 +1,9 @@ +package com.ai.da.model.dto; + +import com.ai.da.model.vo.PageQueryBaseVo; +import lombok.Data; + +@Data +public class CloudPageDTO extends PageQueryBaseVo { + private Long projectId; +} diff --git a/src/main/java/com/ai/da/model/dto/CloudTaskDTO.java b/src/main/java/com/ai/da/model/dto/CloudTaskDTO.java new file mode 100644 index 00000000..8edb9d85 --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/CloudTaskDTO.java @@ -0,0 +1,9 @@ +package com.ai.da.model.dto; + +import com.ai.da.mapper.primary.entity.CloudTask; +import lombok.Data; + +@Data +public class CloudTaskDTO extends CloudTask { + +} diff --git a/src/main/java/com/ai/da/model/dto/DesignCloudResultQuery.java b/src/main/java/com/ai/da/model/dto/DesignCloudResultQuery.java new file mode 100644 index 00000000..51e8d6a5 --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/DesignCloudResultQuery.java @@ -0,0 +1,9 @@ +package com.ai.da.model.dto; + +import com.ai.da.model.vo.PageQueryBaseVo; +import lombok.Data; + +@Data +public class DesignCloudResultQuery extends PageQueryBaseVo { + private String taskId; +} diff --git a/src/main/java/com/ai/da/model/vo/CloudTaskVO.java b/src/main/java/com/ai/da/model/vo/CloudTaskVO.java new file mode 100644 index 00000000..557aa94e --- /dev/null +++ b/src/main/java/com/ai/da/model/vo/CloudTaskVO.java @@ -0,0 +1,9 @@ +package com.ai.da.model.vo; + +import com.ai.da.mapper.primary.entity.CloudTask; +import lombok.Data; + +@Data +public class CloudTaskVO extends CloudTask { + private String process; +} diff --git a/src/main/java/com/ai/da/model/vo/DesignModuleChooseVO.java b/src/main/java/com/ai/da/model/vo/DesignModuleChooseVO.java index ddea9a60..be7b3d4a 100644 --- a/src/main/java/com/ai/da/model/vo/DesignModuleChooseVO.java +++ b/src/main/java/com/ai/da/model/vo/DesignModuleChooseVO.java @@ -5,6 +5,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + @Data @AllArgsConstructor @NoArgsConstructor @@ -13,5 +15,5 @@ public class DesignModuleChooseVO { private Long userGroupId; @ApiModelProperty("分组详细数组") - private java.util.List userLikeDetails; + private List userLikeDetails; } diff --git a/src/main/java/com/ai/da/service/CloudTaskService.java b/src/main/java/com/ai/da/service/CloudTaskService.java new file mode 100644 index 00000000..07975d49 --- /dev/null +++ b/src/main/java/com/ai/da/service/CloudTaskService.java @@ -0,0 +1,8 @@ +package com.ai.da.service; + +import com.ai.da.mapper.primary.entity.CloudTask; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface CloudTaskService extends IService { + CloudTask getByTaskId(String taskId); +} diff --git a/src/main/java/com/ai/da/service/DesignService.java b/src/main/java/com/ai/da/service/DesignService.java index 3cfbfd48..e4f50473 100644 --- a/src/main/java/com/ai/da/service/DesignService.java +++ b/src/main/java/com/ai/da/service/DesignService.java @@ -1,13 +1,12 @@ package com.ai.da.service; +import com.ai.da.common.response.PageBaseResponse; import com.ai.da.mapper.primary.entity.Design; import com.ai.da.model.dto.*; -import com.ai.da.model.vo.CollectionSketchVO; -import com.ai.da.model.vo.DesignCollectionVO; -import com.ai.da.model.vo.DesignItemDetailVO; -import com.ai.da.model.vo.DesignLikeVO; +import com.ai.da.model.vo.*; import com.ai.da.python.vo.DesignPythonObjects; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import java.math.BigDecimal; @@ -109,9 +108,13 @@ public interface DesignService extends IService { DesignCollectionVO getDesignResult(String requestId, List objectSignList); - String designCloud(DesignCollectionDTO designDTO); + String designCloud(CloudTaskDTO cloudTaskDTO); void processDesignBatch(Map designBatchResult); Boolean sort(UserLikeSortDTO userLikeSortDTO); + + IPage cloudPage(CloudPageDTO cloudPageDTO); + + IPage getDesignCloudResult(DesignCloudResultQuery designCloudResultQuery); } diff --git a/src/main/java/com/ai/da/service/ProjectService.java b/src/main/java/com/ai/da/service/ProjectService.java new file mode 100644 index 00000000..fc369cc0 --- /dev/null +++ b/src/main/java/com/ai/da/service/ProjectService.java @@ -0,0 +1,28 @@ +package com.ai.da.service; + +import com.ai.da.mapper.primary.entity.Design; +import com.ai.da.mapper.primary.entity.Project; +import com.ai.da.model.dto.*; +import com.ai.da.model.vo.CollectionSketchVO; +import com.ai.da.model.vo.DesignCollectionVO; +import com.ai.da.model.vo.DesignItemDetailVO; +import com.ai.da.model.vo.DesignLikeVO; +import com.ai.da.python.vo.DesignPythonObjects; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * 服务类 + * + * @author yanglei + * @since 2022-09-11 + */ +public interface ProjectService extends IService { + + Set getChildProjectIdSet(Long projectId); +} diff --git a/src/main/java/com/ai/da/service/impl/CloudTaskServiceImpl.java b/src/main/java/com/ai/da/service/impl/CloudTaskServiceImpl.java new file mode 100644 index 00000000..efc3b86f --- /dev/null +++ b/src/main/java/com/ai/da/service/impl/CloudTaskServiceImpl.java @@ -0,0 +1,28 @@ +package com.ai.da.service.impl; + +import com.ai.da.mapper.primary.AccountMapper; +import com.ai.da.mapper.primary.CloudTaskMapper; +import com.ai.da.mapper.primary.entity.Account; +import com.ai.da.mapper.primary.entity.CloudTask; +import com.ai.da.service.ClassificationService; +import com.ai.da.service.CloudTaskService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Slf4j +@Service +public class CloudTaskServiceImpl extends ServiceImpl implements CloudTaskService { + @Resource + private CloudTaskMapper cloudTaskMapper; + + @Override + public CloudTask getByTaskId(String taskId) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(CloudTask::getTaskId, taskId); + return cloudTaskMapper.selectOne(qw); + } +} diff --git a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java index 2ec8202b..b45c6d8b 100644 --- a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java @@ -22,7 +22,10 @@ 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.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.base.Function; import com.google.common.collect.Lists; import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; @@ -37,6 +40,7 @@ import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -116,6 +120,14 @@ public class DesignServiceImpl extends ServiceImpl impleme @Resource private UserLikeSortMapper userLikeSortMapper; + @Resource + private ProjectService projectService; + @Resource + private WorkspaceService workspaceService; + @Resource + private CloudTaskMapper cloudTaskMapper; + @Resource + private CloudTaskService cloudTaskService; private final ConcurrentHashMap> designContext = new ConcurrentHashMap<>(); @@ -1769,23 +1781,164 @@ public class DesignServiceImpl extends ServiceImpl impleme } @Override - public String designCloud(DesignCollectionDTO designDTO) { + public String designCloud(CloudTaskDTO cloudTaskDTO) { + + Long projectId = cloudTaskDTO.getProjectId(); + Project project = projectService.getById(projectId); + project.setParentId(projectId); + project.setId(null); + project.setName(project.getName() + "_cloud"); + LocalDateTime now = LocalDateTime.now(); + project.setCreateTime(now); + project.setUpdateTime(now); + projectService.getBaseMapper().insert(project); + Long workspaceId = workspaceService.getByProjectId(projectId); + Workspace workspace = workspaceService.getById(workspaceId); + workspace.setProjectId(project.getId()); + workspace.setId(null); + workspaceService.getBaseMapper().insert(workspace); + + DesignCollectionDTO designDTO = transDesignParam(projectId, project.getId()); + designDTO.setDesignNum(cloudTaskDTO.getNums()); AuthPrincipalVo userInfo = UserContext.getUserHolder(); + //校验collection element ValidateElementVO elementVO = collectionElementService.validateElement(designDTO); + //design - return designBatch(designDTO, userInfo, null, elementVO); + String taskId = designBatch(designDTO, userInfo, null, elementVO, cloudTaskDTO, project.getId()); + return taskId; } - private String designBatch(DesignCollectionDTO designDTO, AuthPrincipalVo userInfo, Long collectionIdParam, ValidateElementVO elementVO) { - if (CollectionUtil.isNotEmpty(designDTO.getSketchBoards())) { - //编辑sketchBoard - collectionElementService.editSketchBoardsElement(elementVO, designDTO.getSketchBoards()); + private DesignCollectionDTO transDesignParam(Long projectId, Long projectIdNew) { + DesignCollectionDTO designCollectionDTO = new DesignCollectionDTO(); + List collectionElementList = collectionElementService.getByProjectId(projectId); + if (CollectionUtil.isNotEmpty(collectionElementList)) { + Map> groupedMap = collectionElementList.stream().collect(Collectors.groupingBy(CollectionElement::getLevel1Type)); + if (CollectionUtil.isNotEmpty(groupedMap.get("Moodboard"))) { + List moodBoards = new ArrayList<>(); + List moodboardList = groupedMap.get("Moodboard"); + for (CollectionElement collectionElement : moodboardList) { + collectionElement.setProjectId(projectIdNew); + collectionElement.setCollectionId(null); + Date date = new Date(); + collectionElement.setCreateDate(date); + collectionElement.setUpdateDate(date); + collectionElement.setId(null); + collectionElementService.getBaseMapper().insert(collectionElement); + if (collectionElement.getIsCompositeImage() != null && collectionElement.getIsCompositeImage() == 1) { + designCollectionDTO.setMoodTemplateId(String.valueOf(collectionElement.getId())); + designCollectionDTO.setMoodboardPosition(collectionService.getMoodboardPositionString(collectionElement.getId())); + }else { + DesignCollectionElementDTO dto = new DesignCollectionElementDTO(); + dto.setId(collectionElement.getId()); + dto.setDesignType(DesignTypeEnum.COLLECTION.getRealName()); + moodBoards.add(dto); + } + } + designCollectionDTO.setMoodBoards(moodBoards); + }else { + designCollectionDTO.setMoodBoards(new ArrayList<>()); + } + if (CollectionUtil.isNotEmpty(groupedMap.get("Printboard"))) { + List printBoards = new ArrayList<>(); + List printBoardList = groupedMap.get("Printboard"); + for (CollectionElement collectionElement : printBoardList) { + collectionElement.setProjectId(projectIdNew); + collectionElement.setCollectionId(null); + Date date = new Date(); + collectionElement.setCreateDate(date); + collectionElement.setUpdateDate(date); + collectionElement.setId(null); + collectionElementService.getBaseMapper().insert(collectionElement); + DesignCollectionPrintElementDTO dto = new DesignCollectionPrintElementDTO(); + dto.setId(collectionElement.getId()); + dto.setDesignType(DesignTypeEnum.COLLECTION.getRealName()); + printBoards.add(dto); + } + designCollectionDTO.setPrintBoards(printBoards); + }else { + designCollectionDTO.setPrintBoards(new ArrayList<>()); + } + if (CollectionUtil.isNotEmpty(groupedMap.get("Colorboard"))) { + List colorBoards = new ArrayList<>(); + List colorBoardList = groupedMap.get("Colorboard"); + for (CollectionElement collectionElement : colorBoardList) { + collectionElement.setProjectId(projectIdNew); + collectionElement.setCollectionId(null); + Date date = new Date(); + collectionElement.setCreateDate(date); + collectionElement.setUpdateDate(date); + collectionElement.setId(null); + collectionElementService.getBaseMapper().insert(collectionElement); + CollectionColorDTO dto = new CollectionColorDTO(); + String name = collectionElement.getName(); + if (name.contains("_")) { + String[] split = name.split("_"); + dto.setId(Integer.valueOf(split[0])); + dto.setName(split[1]); + dto.setTcx(split[2]); + } + dto.setRgbValue(collectionElement.getColorRgb()); + if (collectionElement.getGradientString() != null && !collectionElement.getGradientString().equals("null")) { + dto.setGradientString(collectionElement.getGradientString()); + } + colorBoards.add(dto); + } + designCollectionDTO.setColorBoards(colorBoards); + }else { + designCollectionDTO.setColorBoards(new ArrayList<>()); + } + if (CollectionUtil.isNotEmpty(groupedMap.get("Sketchboard"))) { + List sketchBoards = new ArrayList<>(); + List sketchBoardList = groupedMap.get("Sketchboard"); + for (CollectionElement collectionElement : sketchBoardList) { + collectionElement.setProjectId(projectIdNew); + collectionElement.setCollectionId(null); + Date date = new Date(); + collectionElement.setCreateDate(date); + collectionElement.setUpdateDate(date); + collectionElement.setId(null); + collectionElementService.getBaseMapper().insert(collectionElement); + CollectionSketchDTO dto = new CollectionSketchDTO(); + dto.setSketchBoardId(collectionElement.getId()); + dto.setDesignType(DesignTypeEnum.COLLECTION.getRealName()); + dto.setLevel2Type(collectionElement.getLevel2Type()); + dto.setIsPin(collectionElement.getHasPin()); + sketchBoards.add(dto); + } + designCollectionDTO.setSketchBoards(sketchBoards); + }else { + designCollectionDTO.setSketchBoards(new ArrayList<>()); + } + }else { + designCollectionDTO.setMoodBoards(new ArrayList<>()); + designCollectionDTO.setPrintBoards(new ArrayList<>()); + designCollectionDTO.setColorBoards(new ArrayList<>()); + designCollectionDTO.setSketchBoards(new ArrayList<>()); } - if (CollectionUtil.isNotEmpty(designDTO.getPrintBoards())) { - //编辑printBoard - collectionElementService.editPrintBoardsElement(elementVO, designDTO.getPrintBoards()); + Long workspaceId = workspaceService.getByProjectId(projectIdNew); + Workspace workspace = workspaceService.getById(workspaceId); + designCollectionDTO.setSystemScale( + BigDecimal.valueOf(workspace.getSystemDesignerPercentage()) + .divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP) + ); + designCollectionDTO.setModelSex(workspace.getSex()); + if (workspace.getSex().equals("Female")) { + designCollectionDTO.setTemplateId(workspace.getMannequinFemaleId()); + designCollectionDTO.setModelType(workspace.getMannequinFemaleType()); } + if (workspace.getPosition().equals("Overall")) { + designCollectionDTO.setSingleOverall("overall"); + }else { + designCollectionDTO.setSingleOverall("single"); + designCollectionDTO.setSwitchCategory(workspace.getPosition()); + } + designCollectionDTO.setTimeZone("Etc/GMT-8"); + return designCollectionDTO; + } + + private String designBatch(DesignCollectionDTO designDTO, AuthPrincipalVo userInfo, Long collectionIdParam, ValidateElementVO elementVO, CloudTaskDTO cloudTaskDTO, Long projectId) { //保存collection Long collectionId; if (null == collectionIdParam) { @@ -1796,16 +1949,9 @@ public class DesignServiceImpl extends ServiceImpl impleme List elementIds = getElementId(elementVO); //批量关联element 到 collection collectionElementService.relationCollection(elementIds, collectionId); - //library转化为collection(生成) - saveCollectionElemntsByLibrarys(elementVO, collectionId); - //generate转化为collection(生成) - saveCollectionElemntsByGenerates(elementVO, collectionId); - //保存颜色版 - collectionElementService.saveColorBoard(designDTO.getColorBoards(), collectionId, designDTO.getTimeZone()); //保存design Long designId = saveOne(designDTO, collectionId, userInfo.getId()); - //计算library -// calculateLibraryAndSysFile(designDTO, elementVO, userInfo); + //组装design入参 long startTime = System.currentTimeMillis(); DesignPythonObjects pythonObjects = pythonService.covertDesignParam(designDTO.getSystemScale(), @@ -1826,17 +1972,6 @@ public class DesignServiceImpl extends ServiceImpl impleme AuthPrincipalVo userHolder = UserContext.getUserHolder(); String taskId = pythonService.designBatch(pythonObjects, userHolder.getId(), elementVO.getDesignNum(), requestId); - DesignBatch designBatch = new DesignBatch(); - - designBatch.setAccountId(userInfo.getId()); - designBatch.setDesignId(designId); - designBatch.setCollectionId(collectionId); - designBatch.setTaskId(taskId); - designBatch.setCreateTime(LocalDateTime.now()); - designBatch.setStatus(0); - designBatch.setTotalNum(elementVO.getDesignNum()); - designBatchMapper.insert(designBatch); - endTime = System.currentTimeMillis(); totalTimeInSeconds = (endTime - startTime) / 1000; log.info("design python端运行时间:" + totalTimeInSeconds + " 秒"); @@ -1844,9 +1979,9 @@ public class DesignServiceImpl extends ServiceImpl impleme startTime = System.currentTimeMillis(); generateLibrary(elementVO, designDTO.getTimeZone()); //处理关联关系,修复element覆盖得情况 - List relationElements = collectionElementService.getByOnlyCollectionId(collectionId); - List relationElementIds = relationElements.stream().map(CollectionElement::getId).collect(Collectors.toList()); - handleCollectionElementRelation(collectionId, null != collectionIdParam, relationElementIds); +// List relationElements = collectionElementService.getByOnlyCollectionId(collectionId); +// List relationElementIds = relationElements.stream().map(CollectionElement::getId).collect(Collectors.toList()); +// handleCollectionElementRelation(collectionId, null != collectionIdParam, relationElementIds); endTime = System.currentTimeMillis(); totalTimeInSeconds = (endTime - startTime) / 1000; log.info("处理关联关系运行时间:" + totalTimeInSeconds + " 秒"); @@ -1863,6 +1998,15 @@ public class DesignServiceImpl extends ServiceImpl impleme // 将上下文存入全局设计上下文中 designContext.put(taskId, context); + CloudTask cloudTask = CopyUtil.copyObject(cloudTaskDTO, CloudTask.class); + cloudTask.setProjectId(projectId); + cloudTask.setDesignId(designId); + cloudTask.setCollectionId(collectionId); + cloudTask.setTaskId(taskId); + LocalDateTime now = LocalDateTime.now(); + cloudTask.setCreateTime(now); + cloudTask.setUpdateTime(now); + cloudTaskMapper.insert(cloudTask); return taskId; } @@ -1875,28 +2019,29 @@ public class DesignServiceImpl extends ServiceImpl impleme } if (progress.equals("ok")) { String taskId = (String) designBatchResult.get("task_id"); - QueryWrapper qw = new QueryWrapper<>(); - qw.lambda().eq(DesignBatch::getTaskId, taskId); - List designBatches = designBatchMapper.selectList(qw); - if (CollectionUtil.isNotEmpty(designBatches)) { - DesignBatch designBatch = designBatches.get(0); - designBatch.setStatus(1); - designBatchMapper.updateById(designBatch); + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(CloudTask::getTaskId, taskId); + List cloudTaskList = cloudTaskMapper.selectList(qw); + if (CollectionUtil.isNotEmpty(cloudTaskList)) { + CloudTask cloudTask = cloudTaskList.get(0); + cloudTask.setCompletedNum(cloudTask.getNums()); + cloudTask.setStatus(1); + cloudTaskMapper.updateById(cloudTask); } } }else { String taskId = (String) designBatchResult.get("task_id"); - QueryWrapper qw = new QueryWrapper<>(); - qw.lambda().eq(DesignBatch::getTaskId, taskId); - List designBatches = designBatchMapper.selectList(qw); - if (CollectionUtil.isNotEmpty(designBatches)) { - DesignBatch designBatch = designBatches.get(0); - if (designBatch.getCompletedNum() == null) { - designBatch.setCompletedNum(1); + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(CloudTask::getTaskId, taskId); + List cloudTaskList = cloudTaskMapper.selectList(qw); + if (CollectionUtil.isNotEmpty(cloudTaskList)) { + CloudTask cloudTask = cloudTaskList.get(0); + if (cloudTask.getCompletedNum() == null) { + cloudTask.setCompletedNum(1); }else { - designBatch.setCompletedNum(designBatch.getCompletedNum() + 1); + cloudTask.setCompletedNum(cloudTask.getCompletedNum() + 1); } - designBatchMapper.updateById(designBatch); + cloudTaskMapper.updateById(cloudTask); } Integer i = (Integer) progress; @@ -1915,7 +2060,7 @@ public class DesignServiceImpl extends ServiceImpl impleme String timeZone = (String) context.get("timeZone"); String singleOverall = (String) context.get("singleOverall"); - DesignPythonObject item = pythonObjects.getObjects().get(i); + DesignPythonObject item = pythonObjects.getObjects().get(i-1); DesignItem designItem = new DesignItem(); designItem.setAccountId(userInfo.getId()); designItem.setCollectionId(collectionId); @@ -2029,12 +2174,6 @@ public class DesignServiceImpl extends ServiceImpl impleme } } } - -// for (int i = 0; i < pythonObjects.getObjects().size(); i++) { -// -// } -// response.setProcessId(pythonObjects.getProcess_id()); - return; } } @@ -2050,4 +2189,71 @@ public class DesignServiceImpl extends ServiceImpl impleme return Boolean.TRUE; } + @Override + public IPage cloudPage(CloudPageDTO cloudPageDTO) { + // 分页数据 + Set childProjectIdSet = projectService.getChildProjectIdSet(cloudPageDTO.getProjectId()); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollectionUtil.isNotEmpty(childProjectIdSet)) { + queryWrapper.lambda().in(CloudTask::getProjectId, childProjectIdSet); + }else { + return new Page<>(); + } + IPage page = cloudTaskMapper.selectPage( + new Page<>(cloudPageDTO.getPage(), cloudPageDTO.getSize()), queryWrapper); + if (CollectionUtils.isEmpty(page.getRecords())) { + return new Page<>(); + } + + IPage convert = page.convert((Function) cloudTask -> { + if (cloudTask != null) { + CloudTaskVO cloudTaskVO = CopyUtil.copyObject(cloudTask, CloudTaskVO.class); + if (cloudTaskVO.getCompletedNum() == null) { + cloudTaskVO.setProcess("0%"); + }else { + BigDecimal completed = BigDecimal.valueOf(cloudTaskVO.getCompletedNum()); + BigDecimal total = BigDecimal.valueOf(cloudTaskVO.getNums()); + + BigDecimal percent = completed + .divide(total, 4, RoundingMode.HALF_UP) // 先计算小数百分比,保留4位防止精度问题 + .multiply(BigDecimal.valueOf(100)) // 乘以100变成百分比 + .setScale(2, RoundingMode.HALF_UP); // 最终保留2位小数 + + cloudTaskVO.setProcess(percent.toPlainString() + "%"); + } + return cloudTaskVO; + } + return null; + }); + return convert; + } + + @Override + public IPage getDesignCloudResult(DesignCloudResultQuery query) { + CloudTask cloudTask = cloudTaskService.getByTaskId(query.getTaskId()); + if (Objects.nonNull(cloudTask)) { + Long collectionId = cloudTask.getCollectionId(); + if (null != collectionId) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(TDesignPythonOutfit::getCollectionId, collectionId); + Page page = designPythonOutfitMapper.selectPage(new Page<>(query.getPage(), query.getSize()), qw); + IPage convert = page.convert((Function) outfit -> { + if (outfit != null) { + DesignCollectionItemVO vo = new DesignCollectionItemVO(); + vo.setDesignOutfitId(outfit.getId()); + vo.setDesignOutfitUrl(minioUtil.getPreSignedUrl(outfit.getDesignUrl(), 24 * 60)); + vo.setDesignItemId(outfit.getDesignItemId()); + return vo; + } + return null; + }); + return convert; + }else { + return new Page<>(); + } + } + return new Page<>(); + } + } \ No newline at end of file diff --git a/src/main/java/com/ai/da/service/impl/ProjectServiceImpl.java b/src/main/java/com/ai/da/service/impl/ProjectServiceImpl.java new file mode 100644 index 00000000..c5736e7b --- /dev/null +++ b/src/main/java/com/ai/da/service/impl/ProjectServiceImpl.java @@ -0,0 +1,68 @@ +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.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 +public class ProjectServiceImpl extends ServiceImpl implements ProjectService { + @Resource + private ProjectMapper projectMapper; + + + @Override + public Set getChildProjectIdSet(Long projectId) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(Project::getParentId, projectId); + List projectList = projectMapper.selectList(qw); + if (CollectionUtil.isNotEmpty(projectList)) { + return projectList.stream().map(Project::getId).collect(Collectors.toSet()); + } + return new HashSet<>(); + } +} \ No newline at end of file diff --git a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java index 68412e0e..7937aec6 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -1283,6 +1283,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("account_id", authPrincipalVo.getId()); + queryWrapper.isNull("parent_id"); if (!StringUtils.isEmpty(query.getProjectName())) { queryWrapper.like("name", query.getProjectName()); } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index d5944f9b..c386dcd6 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -107,6 +107,7 @@ rabbitmq.queues.toProductImageResult=ToProductImage-dev rabbitmq.queues.relightResult=Relight-dev rabbitmq.queues.poseTransform=PoseTransform-dev rabbitmq.exchange.generate=generate-exchange +rabbitmq.queues.designBatch=DesignBatch orderList.link=https://develop.aida.com.hk/home/homePage?order= From 4ed93c7e4880d9bc1c36349e5cbbfceef59b61cb Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Thu, 17 Apr 2025 16:08:10 +0800 Subject: [PATCH 04/29] =?UTF-8?q?TASK:=E6=A8=A1=E5=9D=97=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/mapper/primary/entity/Portfolio.java | 2 + .../model/dto/DesignItemDetailSnapshot.java | 12 + .../com/ai/da/model/dto/ProjectSnapshot.java | 18 + .../com/ai/da/model/dto/UserLikeSnapshot.java | 14 + .../da/service/impl/AccountServiceImpl.java | 6 +- .../ai/da/service/impl/DesignServiceImpl.java | 2 - .../da/service/impl/PortfolioServiceImpl.java | 432 +++++------------- 7 files changed, 162 insertions(+), 324 deletions(-) create mode 100644 src/main/java/com/ai/da/model/dto/DesignItemDetailSnapshot.java create mode 100644 src/main/java/com/ai/da/model/dto/ProjectSnapshot.java create mode 100644 src/main/java/com/ai/da/model/dto/UserLikeSnapshot.java diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Portfolio.java b/src/main/java/com/ai/da/mapper/primary/entity/Portfolio.java index 81c7937d..dddec328 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/Portfolio.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/Portfolio.java @@ -55,6 +55,8 @@ public class Portfolio implements Serializable { private Long originalPortfolioId; + private String snapshot; + @ApiModelProperty(value = "作品集作者ID") private Long accountId; diff --git a/src/main/java/com/ai/da/model/dto/DesignItemDetailSnapshot.java b/src/main/java/com/ai/da/model/dto/DesignItemDetailSnapshot.java new file mode 100644 index 00000000..849b00f8 --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/DesignItemDetailSnapshot.java @@ -0,0 +1,12 @@ +package com.ai.da.model.dto; + +import com.ai.da.mapper.primary.entity.DesignItemDetail; +import com.ai.da.mapper.primary.entity.DesignItemDetailPrint; +import lombok.Data; + +import java.util.List; + +@Data +public class DesignItemDetailSnapshot extends DesignItemDetail { + private List designItemDetailPrintList; +} diff --git a/src/main/java/com/ai/da/model/dto/ProjectSnapshot.java b/src/main/java/com/ai/da/model/dto/ProjectSnapshot.java new file mode 100644 index 00000000..a37c4804 --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/ProjectSnapshot.java @@ -0,0 +1,18 @@ +package com.ai.da.model.dto; + +import com.ai.da.mapper.primary.entity.*; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class ProjectSnapshot implements Serializable { + private static final long serialVersionUID = 1L; + + private Project project; + private Workspace workspace; + private List collectionElementList; + private UserLikeGroup userLikeGroup; + private List userLikeList; +} diff --git a/src/main/java/com/ai/da/model/dto/UserLikeSnapshot.java b/src/main/java/com/ai/da/model/dto/UserLikeSnapshot.java new file mode 100644 index 00000000..237cfd2c --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/UserLikeSnapshot.java @@ -0,0 +1,14 @@ +package com.ai.da.model.dto; + +import com.ai.da.mapper.primary.entity.*; +import lombok.Data; + +import java.util.List; + +@Data +public class UserLikeSnapshot extends UserLike { + private DesignItem designItem; + private TDesignPythonOutfit designPythonOutfit; + private List tDesignPythonOutfitDetailList; + private List designItemDetailList; +} diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 7dcea80e..233c7ff6 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -1385,9 +1385,9 @@ public class AccountServiceImpl extends ServiceImpl impl static { HikariConfig config = new HikariConfig(); - config.setJdbcUrl("jdbc:mysql://code-create.com.hk:3306/db1nfvsgmjp3b8"); - config.setUsername("uafqtz4gsvfrw"); - config.setPassword("aida123456."); + config.setJdbcUrl("jdbc:mysql://18.167.251.121:33008/aida"); + config.setUsername("aida_con"); + config.setPassword("123456"); // config.setJdbcUrl("jdbc:mysql://localhost:3306/code-create-local?serverTimezone=UTC"); // config.setUsername("root"); // config.setPassword("root"); diff --git a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java index 2ec8202b..fe59676d 100644 --- a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java @@ -308,8 +308,6 @@ public class DesignServiceImpl extends ServiceImpl impleme Long collectionId; if (null == collectionIdParam) { collectionId = collectionService.saveCollection(userInfo.getId(), designDTO.getTimeZone(), designDTO.getMoodTemplateId(), designDTO.getMoodboardPosition()); -// String moodboardPosition = designDTO.getMoodboardPosition(); -// parseMoodboardPosition(moodboardPosition, collectionId); }else { collectionId = collectionIdParam; } diff --git a/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java b/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java index 95d295ac..b76e36a8 100644 --- a/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java @@ -1,5 +1,6 @@ package com.ai.da.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.constant.CommonConstant; import com.ai.da.common.context.UserContext; @@ -25,6 +26,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.base.Function; import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -135,7 +137,9 @@ public class PortfolioServiceImpl extends ServiceImpl existSameNameQw = new QueryWrapper<>(); - existSameNameQw.lambda().ne(Portfolio::getId, portfolioDTO.getId()); + if (null != portfolioDTO.getId()) { + existSameNameQw.lambda().ne(Portfolio::getId, portfolioDTO.getId()); + } existSameNameQw.lambda().eq(Portfolio::getPortfolioName, portfolioDTO.getPortfolioName()); existSameNameQw.lambda().eq(Portfolio::getAccountId, authPrincipalVo.getId()); List portfoliosSameName = portfolioMapper.selectList(existSameNameQw); @@ -148,6 +152,7 @@ public class PortfolioServiceImpl extends ServiceImpl portfolioQueryWrapper = new QueryWrapper<>(); - portfolioQueryWrapper.lambda().eq(Portfolio::getProjectId, portfolioDTO.getProjectId()); - List portfolioList = portfolioMapper.selectList(portfolioQueryWrapper); - if (!CollectionUtils.isEmpty(portfolioList)) { - portfolio = portfolioList.get(0); + if (null != portfolioDTO.getId()) { + portfolio = portfolioMapper.selectById(portfolioDTO.getId()); } + // 关联的项目ID Long projectId = portfolioDTO.getProjectId(); + // 复制project表 Project project = projectMapper.selectById(projectId); if (project.getOriginal() == 0) { portfolio.setOriginal(0); portfolio.setOriginalAccountId(project.getOriginalAccountId()); - // TODO portfolio.setOriginalPortfolioId(project.getOriginalPortfolioId()); } else { portfolio.setOriginal(1); @@ -178,132 +182,79 @@ public class PortfolioServiceImpl extends ServiceImpl collectionElementListOld = collectionElementService.getByProjectId(projectId); - for (CollectionElement element : collectionElementListOld) { - element.setProjectId(projectIdCopy); - element.setId(null); - collectionElementMapper.insert(element); - } + projectSnapshot.setCollectionElementList(collectionElementListOld); UserLikeGroup userLikeGroup = userLikeService.getUserLikeGroupByProjectId(projectId); if (Objects.nonNull(userLikeGroup)) { - UserLikeGroup userLikeGroupNew = CopyUtil.copyObject(userLikeGroup, UserLikeGroup.class); - userLikeGroupNew.setId(null); - userLikeGroupNew.setAccountId(-1L); - userLikeGroupNew.setProjectId(projectIdCopy); - Long collectionIdOld = userLikeGroup.getCollectionId(); - QueryWrapper designQueryWrapper = new QueryWrapper<>(); - designQueryWrapper.lambda().eq(Design::getCollectionId, collectionIdOld); - Design designOld = designMapper.selectOne(designQueryWrapper); - Collection collectionOld = collectionMapper.selectById(collectionIdOld); + projectSnapshot.setUserLikeGroup(userLikeGroup); - collectionOld.setId(null); - collectionMapper.insert(collectionOld); - Long collectionIdNew = collectionOld.getId(); - - portfolio.setCollectionId(collectionIdNew); - - for (CollectionElement element : collectionElementListOld) { - element.setCollectionId(collectionIdNew); - collectionElementMapper.updateById(element); - TCollectionElementRelation collectionElementRelationNew = new TCollectionElementRelation(); - collectionElementRelationNew.setCollectionId(collectionIdNew); - collectionElementRelationNew.setElementId(element.getId()); - collectionElementRelationNew.setCreateDate(new Date()); - collectionElementRelationMapper.insert(collectionElementRelationNew); - } - - designOld.setCollectionId(collectionIdNew); - designOld.setId(null); - designMapper.insert(designOld); - userLikeGroupNew.setCollectionId(collectionIdNew); - userLikeGroupMapper.insert(userLikeGroupNew); List userLikeList = userLikeService.getUserLikeList(portfolioDTO.getUserLikeGroupId()); + List list = new ArrayList<>(); for (UserLike userLike : userLikeList) { + UserLikeSnapshot userLikeSnapshot = CopyUtil.copyObject(userLike, UserLikeSnapshot.class); + Long designOutfitIdOld = userLike.getDesignOutfitId(); TDesignPythonOutfit designPythonOutfit = designPythonOutfitMapper.selectById(designOutfitIdOld); - designPythonOutfit.setDesignId(-1L); - designPythonOutfit.setDesignItemId(-1L); - designPythonOutfit.setCollectionId(collectionIdNew); - designPythonOutfit.setId(null); + Long designItemIdOld = userLike.getDesignItemId(); DesignItem designItemOld = designItemMapper.selectById(designItemIdOld); - designItemOld.setId(null); - designItemOld.setAccountId(-1L); - designItemOld.setDesignId(-1L); - designItemOld.setCollectionId(collectionIdNew); - designItemMapper.insert(designItemOld); - Long designItemIdNew = designItemOld.getId(); - designPythonOutfit.setDesignItemId(designItemIdNew); - designPythonOutfitMapper.insert(designPythonOutfit); - Long designOutfitIdNew = designPythonOutfit.getId(); - userLike.setDesignOutfitId(designOutfitIdNew); + userLikeSnapshot.setDesignItem(designItemOld); + userLikeSnapshot.setDesignPythonOutfit(designPythonOutfit); + QueryWrapper qw = new QueryWrapper<>(); qw.lambda().eq(TDesignPythonOutfitDetail::getDesignPythonOutfitId, designOutfitIdOld); - List tDesignPythonOutfitDetails = designPythonOutfitDetailMapper.selectList(qw); - for (TDesignPythonOutfitDetail tDesignPythonOutfitDetail : tDesignPythonOutfitDetails) { - tDesignPythonOutfitDetail.setId(null); - tDesignPythonOutfitDetail.setDesignId(-1L); - tDesignPythonOutfitDetail.setDesignPythonOutfitId(designOutfitIdNew); - designPythonOutfitDetailMapper.insert(tDesignPythonOutfitDetail); - } + List tDesignPythonOutfitDetailList = designPythonOutfitDetailMapper.selectList(qw); + userLikeSnapshot.setTDesignPythonOutfitDetailList(tDesignPythonOutfitDetailList); + - userLike.setDesignItemId(designItemIdNew); - userLike.setId(null); - userLike.setDesignId(-1L); - userLike.setUserLikeGroupId(userLikeGroupNew.getId()); - userLikeMapper.insert(userLike); QueryWrapper designItemDetailQueryWrapper = new QueryWrapper<>(); designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemIdOld); List designItemDetailListOld = designItemDetailMapper.selectList(designItemDetailQueryWrapper); + List designItemDetailSnapshotList = new ArrayList<>(); for (DesignItemDetail designItemDetailOld : designItemDetailListOld) { + DesignItemDetailSnapshot designItemDetailSnapshot = CopyUtil.copyObject(designItemDetailOld, DesignItemDetailSnapshot.class); Long designItemDetailIdOld = designItemDetailOld.getId(); - designItemDetailOld.setId(null); - designItemDetailOld.setAccountId(-1L); - designItemDetailOld.setDesignId(-1L); - designItemDetailOld.setDesignItemId(designItemIdNew); - designItemDetailMapper.insert(designItemDetailOld); - Long designItemDetailIdNew = designItemDetailOld.getId(); + QueryWrapper designItemDetailPrintQueryWrapper = new QueryWrapper<>(); designItemDetailPrintQueryWrapper.lambda().eq(DesignItemDetailPrint::getDesignItemDetailId, designItemDetailIdOld); - List designItemDetailPrints = designItemDetailPrintMapper.selectList(designItemDetailPrintQueryWrapper); - for (DesignItemDetailPrint designItemDetailPrint : designItemDetailPrints) { - designItemDetailPrint.setId(null); - designItemDetailPrint.setDesignItemDetailId(designItemDetailIdNew); - designItemDetailPrintMapper.insert(designItemDetailPrint); - } + List designItemDetailPrintList = designItemDetailPrintMapper.selectList(designItemDetailPrintQueryWrapper); + designItemDetailSnapshot.setDesignItemDetailPrintList(designItemDetailPrintList); + designItemDetailSnapshotList.add(designItemDetailSnapshot); } + userLikeSnapshot.setDesignItemDetailList(designItemDetailSnapshotList); + list.add(userLikeSnapshot); } + projectSnapshot.setUserLikeList(list); } + String snapshotJson = JSONObject.toJSONString(projectSnapshot); + portfolio.setSnapshot(snapshotJson); } else { portfolio.setPortfolioType("Canvas"); portfolio.setOpenSource(0); } - if (!CollectionUtils.isEmpty(portfolioList)) { + if (null != portfolioDTO.getId()) { portfolioMapper.updateById(portfolio); } else { portfolioMapper.insert(portfolio); @@ -636,14 +587,15 @@ public class PortfolioServiceImpl extends ServiceImpl userLikeGroupQueryWrapper = new QueryWrapper<>(); -// userLikeGroupQueryWrapper.lambda().eq(UserLikeGroup::getCollectionId, portfolio.getCollectionId()); - UserLikeGroup userLikeGroup = userLikeService.getUserLikeGroupByProjectId(projectId); + Project project = projectSnapshot.getProject(); + + Long projectId = project.getId(); + + UserLikeGroup userLikeGroup = projectSnapshot.getUserLikeGroup(); - Project project = projectMapper.selectById(projectId); -// Long projectIdOld = project.getId(); project.setCreateTime(LocalDateTime.now()); project.setId(null); project.setAccountId(authPrincipalVo.getId()); @@ -667,7 +619,7 @@ public class PortfolioServiceImpl extends ServiceImpl collectionElementListOld = collectionElementService.getByProjectId(projectId); + List collectionElementListOld = projectSnapshot.getCollectionElementList(); for (CollectionElement element : collectionElementListOld) { element.setProjectId(projectIdNew); element.setId(null); @@ -677,7 +629,7 @@ public class PortfolioServiceImpl extends ServiceImpl collectionElementListOld = collectionElementService.getByCollectionId(collectionIdOld); - collectionOld.setId(null); - collectionMapper.insert(collectionOld); - Long collectionIdNew = collectionOld.getId(); - Long workspaceServiceByProjectId = workspaceService.getByProjectId(projectId); - Workspace workspace = workspaceMapper.selectById(workspaceServiceByProjectId); - Design design = new Design(); - design.setCollectionId(collectionIdNew); - design.setAccountId(authPrincipalVo.getId()); - if (workspace.getSex().equals(Sex.FEMALE.getValue())) { - design.setTemplateId(workspace.getMannequinFemaleId()); - design.setModelType(workspace.getMannequinFemaleType()); - } else { - design.setTemplateId(workspace.getMannequinMaleId()); - design.setModelType(workspace.getMannequinMaleType()); - } - design.setSystemScale(BigDecimal.valueOf(workspace.getSystemDesignerPercentage())); - if (workspace.getPosition().equals(Position.OVERALL.getValue())) { - design.setSingleOverall("overall"); - design.setSwitchCategory(""); - } else { - design.setSingleOverall("single"); - design.setSwitchCategory(workspace.getPosition()); - } - design.setCreateDate(new Date()); - designMapper.insert(design); - - userLikeGroupNew.setCollectionId(collectionIdNew); + userLikeGroupNew.setCollectionId(null); userLikeGroupNew.setUpdateDate(new Date()); userLikeGroupMapper.insert(userLikeGroupNew); -// List collectionElementRelationListNew = new ArrayList<>(); - for (CollectionElement element : collectionElementListOld) { - element.setCollectionId(collectionIdNew); - collectionElementMapper.updateById(element); - TCollectionElementRelation collectionElementRelationNew = new TCollectionElementRelation(); - collectionElementRelationNew.setCollectionId(collectionIdNew); - collectionElementRelationNew.setElementId(element.getId()); - collectionElementRelationNew.setCreateDate(new Date()); - collectionElementRelationMapper.insert(collectionElementRelationNew); - } + List userLikeList = projectSnapshot.getUserLikeList(); + if (CollectionUtil.isNotEmpty(userLikeList)) { + for (UserLikeSnapshot userLike : userLikeList) { + Long designOutfitIdOld = userLike.getDesignOutfitId(); + TDesignPythonOutfit designPythonOutfit = userLike.getDesignPythonOutfit(); + designPythonOutfit.setDesignId(null); + designPythonOutfit.setDesignItemId(-1L); + designPythonOutfit.setCollectionId(null); - List userLikeList = userLikeService.getUserLikeList(portfolioUserLikeGroupId); + designPythonOutfit.setId(null); + designPythonOutfitMapper.insert(designPythonOutfit); + Long designOutfitIdNew = designPythonOutfit.getId(); + userLike.setDesignOutfitId(designOutfitIdNew); - for (UserLike userLike : userLikeList) { - Long designOutfitIdOld = userLike.getDesignOutfitId(); - TDesignPythonOutfit designPythonOutfit = designPythonOutfitMapper.selectById(designOutfitIdOld); - designPythonOutfit.setDesignId(design.getId()); - designPythonOutfit.setDesignItemId(-1L); - designPythonOutfit.setCollectionId(collectionIdNew); + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(TDesignPythonOutfitDetail::getDesignPythonOutfitId, designOutfitIdOld); + List tDesignPythonOutfitDetails = userLike.getTDesignPythonOutfitDetailList(); + if (CollectionUtil.isNotEmpty(tDesignPythonOutfitDetails)){ + for (TDesignPythonOutfitDetail tDesignPythonOutfitDetail : tDesignPythonOutfitDetails) { + tDesignPythonOutfitDetail.setId(null); + tDesignPythonOutfitDetail.setDesignId(null); + tDesignPythonOutfitDetail.setDesignPythonOutfitId(designOutfitIdNew); + designPythonOutfitDetailMapper.insert(tDesignPythonOutfitDetail); + } + } - designPythonOutfit.setId(null); - designPythonOutfitMapper.insert(designPythonOutfit); - Long designOutfitIdNew = designPythonOutfit.getId(); - userLike.setDesignOutfitId(designOutfitIdNew); - QueryWrapper qw = new QueryWrapper<>(); - qw.lambda().eq(TDesignPythonOutfitDetail::getDesignPythonOutfitId, designOutfitIdOld); - List tDesignPythonOutfitDetails = designPythonOutfitDetailMapper.selectList(qw); - for (TDesignPythonOutfitDetail tDesignPythonOutfitDetail : tDesignPythonOutfitDetails) { -// Long designPythonOutfitDetailIdOld = tDesignPythonOutfitDetail.getId(); - tDesignPythonOutfitDetail.setId(null); - tDesignPythonOutfitDetail.setDesignId(design.getId()); - tDesignPythonOutfitDetail.setDesignPythonOutfitId(designOutfitIdNew); - designPythonOutfitDetailMapper.insert(tDesignPythonOutfitDetail); - } + DesignItem designItemOld = userLike.getDesignItem(); + designItemOld.setId(null); + designItemOld.setAccountId(authPrincipalVo.getId()); + designItemOld.setDesignId(null); + designItemOld.setCollectionId(null); + designItemMapper.insert(designItemOld); + Long designItemIdNew = designItemOld.getId(); - Long designItemIdOld = userLike.getDesignItemId(); - DesignItem designItemOld = designItemMapper.selectById(designItemIdOld); - designItemOld.setId(null); - designItemOld.setAccountId(authPrincipalVo.getId()); - designItemOld.setDesignId(design.getId()); - designItemOld.setCollectionId(collectionIdNew); - designItemMapper.insert(designItemOld); - Long designItemIdNew = designItemOld.getId(); + designPythonOutfit.setDesignItemId(designItemIdNew); + designPythonOutfitMapper.updateById(designPythonOutfit); - designPythonOutfit.setDesignItemId(designItemIdNew); - designPythonOutfitMapper.updateById(designPythonOutfit); + userLike.setDesignItemId(designItemIdNew); + userLike.setId(null); + userLike.setDesignId(null); + userLike.setUserLikeGroupId(userLikeGroupNew.getId()); + userLikeMapper.insert(userLike); - userLike.setDesignItemId(designItemIdNew); - userLike.setId(null); - userLike.setDesignId(design.getId()); - userLike.setUserLikeGroupId(userLikeGroupNew.getId()); - userLikeMapper.insert(userLike); - QueryWrapper designItemDetailQueryWrapper = new QueryWrapper<>(); - designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemIdOld); - List designItemDetailListOld = designItemDetailMapper.selectList(designItemDetailQueryWrapper); - for (DesignItemDetail designItemDetailOld : designItemDetailListOld) { - Long designItemDetailIdOld = designItemDetailOld.getId(); - designItemDetailOld.setId(null); - designItemDetailOld.setAccountId(authPrincipalVo.getId()); - designItemDetailOld.setDesignId(design.getId()); - designItemDetailOld.setDesignItemId(designItemIdNew); - designItemDetailMapper.insert(designItemDetailOld); - Long designItemDetailIdNew = designItemDetailOld.getId(); - QueryWrapper designItemDetailPrintQueryWrapper = new QueryWrapper<>(); - designItemDetailPrintQueryWrapper.lambda().eq(DesignItemDetailPrint::getDesignItemDetailId, designItemDetailIdOld); - List designItemDetailPrintList = designItemDetailPrintMapper.selectList(designItemDetailPrintQueryWrapper); - for (DesignItemDetailPrint designItemDetailPrint : designItemDetailPrintList) { - designItemDetailPrint.setId(null); - designItemDetailPrint.setDesignItemDetailId(designItemDetailIdNew); - designItemDetailPrintMapper.insert(designItemDetailPrint); + List designItemDetailList = userLike.getDesignItemDetailList(); + if (CollectionUtil.isNotEmpty(designItemDetailList)) { + for (DesignItemDetailSnapshot designItemDetailOld : designItemDetailList) { + designItemDetailOld.setId(null); + designItemDetailOld.setAccountId(authPrincipalVo.getId()); + designItemDetailOld.setDesignId(null); + designItemDetailOld.setDesignItemId(designItemIdNew); + designItemDetailMapper.insert(designItemDetailOld); + Long designItemDetailIdNew = designItemDetailOld.getId(); + + List designItemDetailPrintList = designItemDetailOld.getDesignItemDetailPrintList(); + if (CollectionUtil.isNotEmpty(designItemDetailPrintList)) { + for (DesignItemDetailPrint designItemDetailPrint : designItemDetailPrintList) { + designItemDetailPrint.setId(null); + designItemDetailPrint.setDesignItemDetailId(designItemDetailIdNew); + designItemDetailPrintMapper.insert(designItemDetailPrint); + } + } + } } } } } - - -// Long collectionId = portfolio.getCollectionId(); -// QueryWrapper getWorkspaceQw = new QueryWrapper<>(); -// getWorkspaceQw.lambda().eq(Design::getCollectionId, collectionId); -// List designs = designMapper.selectList(getWorkspaceQw); -// if (!CollectionUtils.isEmpty(designs)) { -// Design design1 = designs.get(0); -// Long accountId = authPrincipalVo.getId(); -// QueryWrapper currentWorkspaceQw = new QueryWrapper<>(); -// currentWorkspaceQw.lambda().eq(Workspace::getAccountId, accountId); -// currentWorkspaceQw.lambda().eq(Workspace::getIsLastIndex, 1); -// List workspaces = workspaceMapper.selectList(currentWorkspaceQw); -// if (!CollectionUtils.isEmpty(workspaces)) { -// Workspace workspace1 = workspaces.get(0); -// workspace1.setIsLastIndex(0); -// workspaceMapper.updateById(workspace1); -// Workspace workspaceNew = new Workspace(); -// String workspaceName = "workspace of " + accountMapper.selectById(portfolio.getAccountId()).getUserName() + portfolio.getPortfolioName(); -// QueryWrapper existSameNameQw = new QueryWrapper<>(); -// existSameNameQw.lambda().eq(Workspace::getWorkSpaceName, workspaceName); -// existSameNameQw.lambda().eq(Workspace::getAccountId, authPrincipalVo.getId()); -// List existSameNameList = workspaceMapper.selectList(existSameNameQw); -// if (!CollectionUtils.isEmpty(existSameNameList)) { -// workspaceName = workspaceName + "_copy"; -// } -// workspaceNew.setWorkSpaceName(workspaceName); -// workspaceNew.setAccountId(accountId); -// workspaceNew.setIsDeleted(0); -// workspaceNew.setIsLastIndex(1); -// workspaceNew.setCreateTime(LocalDateTime.now()); -// workspaceNew.setSystemDesignerPercentage((design1.getSystemScale().multiply(BigDecimal.valueOf(100)).intValue())); -// if (design1.getSingleOverall().equals("overall")) { -// workspaceNew.setPosition("Overall"); -// } else { -// workspaceNew.setPosition(design1.getSwitchCategory()); -// } -// workspaceMapper.insert(workspaceNew); -// if (design1.getModelType().equals("System")) { -// SysFile sysFile = sysFileMapper.selectById(design1.getTemplateId()); -// if (sysFile.getLevel2Type().equals("Female")) { -// workspaceNew.setSex("Female"); -// workspaceNew.setMannequinFemaleId(design1.getTemplateId()); -// workspaceNew.setMannequinFemaleType("System"); -// QueryWrapper getAnotherOneQw = new QueryWrapper<>(); -// getAnotherOneQw.lambda().eq(SysFile::getLevel1Type, "Models"); -// getAnotherOneQw.lambda().eq(SysFile::getLevel2Type, "Male"); -// if (!StringUtils.isEmpty(sysFile.getLevel3Type())) { -// getAnotherOneQw.lambda().eq(SysFile::getLevel3Type, sysFile.getLevel3Type()); -// QueryWrapper