TASK:AiDA模块化

This commit is contained in:
shahaibo
2025-03-19 14:08:16 +08:00
parent ec836a6470
commit 83d9a5befb
6 changed files with 195 additions and 56 deletions

View File

@@ -7,10 +7,12 @@ import com.ai.da.mapper.primary.entity.Collection;
import com.ai.da.mapper.secondary.AttributeRetrievalMapper;
import com.ai.da.model.dto.CollectionSketchDTO;
import com.ai.da.model.dto.DesignCollectionDTO;
import com.ai.da.model.enums.DesignProcess;
import com.ai.da.model.vo.ValidateElementVO;
import com.ai.da.python.PythonService;
import com.ai.da.python.vo.DesignPythonObjects;
import com.ai.da.service.CollectionElementService;
import com.ai.da.service.UserLikeGroupService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -20,6 +22,7 @@ import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct;
@@ -27,9 +30,12 @@ import javax.annotation.Resource;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -51,6 +57,7 @@ public class MyTaskScheduler {
// saveUserLikedSketchDataToRedis(4L);
// runComparisonAndRecordResults(5);
// saveDataToNumpyFormat();
// projectDataCreate();
}
@Resource
@@ -61,6 +68,13 @@ public class MyTaskScheduler {
@Resource
private DesignMapper designMapper;
@Resource
private ProjectMapper projectMapper;
@Resource
private WorkspaceMapper workspaceMapper;
@Resource
private UserLikeGroupService userLikeGroupService;
// 定时任务,每十五天执行一次
// @Scheduled(cron = "0 0 0 ? * MON")
@@ -199,6 +213,9 @@ public class MyTaskScheduler {
@Resource
private ToProductImageResultMapper toProductImageResultMapper;
@Resource
private ToProductImageRecordMapper toProductImageRecordMapper;
@Resource
private MinioUtil minioUtil;
public void clearMinio() {
@@ -563,21 +580,21 @@ public class MyTaskScheduler {
allUserLikes.addAll(userLikes);
}
// 根据时间排序
allUserLikes.sort(Comparator.comparing(UserLike::getCreateDate));
// 计算 80% 和 20% 的分割
int totalLikesSize = allUserLikes.size();
int splitIndexLikes = (int) Math.ceil(totalLikesSize * 0.8);
// 分割用户喜欢的集合
List<UserLike> first80PercentLikes = allUserLikes.subList(0, splitIndexLikes);
List<UserLike> last20PercentLikes = allUserLikes.subList(splitIndexLikes, totalLikesSize);
// // 根据时间排序
// allUserLikes.sort(Comparator.comparing(UserLike::getCreateDate));
//
// // 计算 80% 和 20% 的分割
// int totalLikesSize = allUserLikes.size();
// int splitIndexLikes = (int) Math.ceil(totalLikesSize * 0.8);
//
// // 分割用户喜欢的集合
// List<UserLike> first80PercentLikes = allUserLikes.subList(0, splitIndexLikes);
// List<UserLike> last20PercentLikes = allUserLikes.subList(splitIndexLikes, totalLikesSize);
// 分别处理前 80% 和后 20% 的数据
// 处理前 80%
for (UserLike userLike : first80PercentLikes) {
for (UserLike userLike : allUserLikes) {
Long designItemId = userLike.getDesignItemId();
QueryWrapper<DesignItemDetail> designItemDetailQueryWrapper = new QueryWrapper<>();
designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemId);
@@ -598,32 +615,32 @@ public class MyTaskScheduler {
}
// 处理后 20%
if (last20PercentLikes.size() == 0) {
// 输出没有记录的用户 ID
log.info("用户 ID: " + accountId + " 在后 20% 的 userLike 列表为空");
}
for (UserLike userLike : last20PercentLikes) {
Long designItemId = userLike.getDesignItemId();
QueryWrapper<DesignItemDetail> designItemDetailQueryWrapper = new QueryWrapper<>();
designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemId);
List<DesignItemDetail> designItemDetails = designItemDetailMapper.selectList(designItemDetailQueryWrapper);
for (DesignItemDetail designItemDetail : designItemDetails) {
if (designItemDetail.getType().equals("Body") || !designItemDetail.getPath().contains("aida-sys-image")) {
continue;
}
UserPreferenceLogPrediction userPreferenceLogPrediction = new UserPreferenceLogPrediction();
userPreferenceLogPrediction.setPath(designItemDetail.getPath());
userPreferenceLogPrediction.setAccountId(accountId);
userPreferenceLogPrediction.setUserLikeGroupId(userLike.getUserLikeGroupId());
userPreferenceLogPrediction.setDataTime(designItemDetail.getCreateDate().toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime());
userPreferenceLogPredictionMapper.insert(userPreferenceLogPrediction);
}
}
// if (last20PercentLikes.size() == 0) {
// // 输出没有记录的用户 ID
// log.info("用户 ID: " + accountId + " 在后 20% 的 userLike 列表为空");
// }
//
// for (UserLike userLike : last20PercentLikes) {
// Long designItemId = userLike.getDesignItemId();
// QueryWrapper<DesignItemDetail> designItemDetailQueryWrapper = new QueryWrapper<>();
// designItemDetailQueryWrapper.lambda().eq(DesignItemDetail::getDesignItemId, designItemId);
// List<DesignItemDetail> designItemDetails = designItemDetailMapper.selectList(designItemDetailQueryWrapper);
// for (DesignItemDetail designItemDetail : designItemDetails) {
//
// if (designItemDetail.getType().equals("Body") || !designItemDetail.getPath().contains("aida-sys-image")) {
// continue;
// }
//
// UserPreferenceLogPrediction userPreferenceLogPrediction = new UserPreferenceLogPrediction();
// userPreferenceLogPrediction.setPath(designItemDetail.getPath());
// userPreferenceLogPrediction.setAccountId(accountId);
// userPreferenceLogPrediction.setUserLikeGroupId(userLike.getUserLikeGroupId());
// userPreferenceLogPrediction.setDataTime(designItemDetail.getCreateDate().toInstant()
// .atZone(ZoneId.systemDefault())
// .toLocalDateTime());
// userPreferenceLogPredictionMapper.insert(userPreferenceLogPrediction);
// }
// }
}
}
@@ -1315,4 +1332,87 @@ public class MyTaskScheduler {
System.err.println("保存目标数据时发生错误: " + e.getMessage());
}
}
@Transactional
public void projectDataCreate() {
// QueryWrapper<UserLikeGroup> qw = new QueryWrapper<>();
// qw.lambda().ne(UserLikeGroup::getAccountId, -1);
// List<UserLikeGroup> userLikeGroups = userLikeGroupMapper.selectList(qw);
// for (UserLikeGroup userLikeGroup : userLikeGroups) {
// Project project = new Project();
// project.setAccountId(userLikeGroup.getAccountId());
// project.setName(userLikeGroup.getName());
// project.setCreateTime(LocalDateTime.ofInstant(userLikeGroup.getCreateDate().toInstant(), ZoneId.systemDefault()));
// project.setUpdateTime(LocalDateTime.ofInstant(userLikeGroup.getUpdateDate().toInstant(), ZoneId.systemDefault()));
// QueryWrapper<Design> designQueryWrapper = new QueryWrapper<>();
// designQueryWrapper.lambda().eq(Design::getCollectionId, userLikeGroup.getCollectionId());
// Design design = designMapper.selectOne(designQueryWrapper);
// if (Objects.isNull(design)) {
// System.out.println(userLikeGroup.getCollectionId());
// continue;
// }
// if (design.getSingleOverall().equals("overall")) {
// project.setProcess(DesignProcess.SERIES_DESIGN.name());
// }else {
// project.setProcess(DesignProcess.SINGLE_DESIGN.name());
// }
// projectMapper.insert(project);
// Long accountId = userLikeGroup.getAccountId();
// QueryWrapper<Workspace> workspaceQueryWrapper = new QueryWrapper<>();
// workspaceQueryWrapper.lambda().eq(Workspace::getAccountId, accountId);
// workspaceQueryWrapper.lambda().eq(Workspace::getIsLastIndex, 1);
// Workspace workspace = workspaceMapper.selectOne(workspaceQueryWrapper);
// if (Objects.isNull(workspace)) {
// System.out.println(accountId);
// continue;
// }
// workspace.setIsLastIndex(0);
// workspace.setProjectId(project.getId());
//// workspace.setSystemDesignerPercentage(design.getSystemScale().multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP).intValueExact());
// if (!design.getSingleOverall().equals("overall")) {
// workspace.setPosition(design.getSwitchCategory());
// }
// workspace.setId(null);
// workspaceMapper.insert(workspace);
//
// QueryWrapper<CollectionElement> collectionElementQueryWrapper = new QueryWrapper<>();
// collectionElementQueryWrapper.lambda().eq(CollectionElement::getCollectionId, userLikeGroup.getCollectionId());
// List<CollectionElement> collectionElements = collectionElementMapper.selectList(collectionElementQueryWrapper);
// for (CollectionElement collectionElement : collectionElements) {
// collectionElement.setProjectId(project.getId());
// collectionElementMapper.updateById(collectionElement);
// }
// Collection collection = collectionMapper.selectById(userLikeGroup.getCollectionId());
// if (collection.getMoodTemplateId() != null) {
// CollectionElement collectionElement = collectionElementMapper.selectById(collection.getMoodTemplateId());
// collectionElement.setProjectId(userLikeGroup.getProjectId());
// collectionElementMapper.updateById(collectionElement);
// }
// userLikeGroup.setProjectId(project.getId());
// userLikeGroupMapper.updateById(userLikeGroup);
// }
QueryWrapper<Project> projectQueryWrapper = new QueryWrapper<>();
List<Project> projects = projectMapper.selectList(projectQueryWrapper);
for (Project project : projects) {
UserLikeGroup userLikeGroup = userLikeGroupService.getByProjectId(project.getId());
if (Objects.nonNull(userLikeGroup)) {
Long userLikeGroupId = userLikeGroup.getId();
QueryWrapper<ToProductImageRecord> toProductImageRecordQueryWrapper = new QueryWrapper<>();
toProductImageRecordQueryWrapper.lambda().eq(ToProductImageRecord::getUserLikeGroupId, userLikeGroupId);
List<ToProductImageRecord> toProductImageRecords = toProductImageRecordMapper.selectList(toProductImageRecordQueryWrapper);
for (ToProductImageRecord toProductImageRecord : toProductImageRecords) {
toProductImageRecord.setProjectId(project.getId());
toProductImageRecordMapper.updateById(toProductImageRecord);
}
QueryWrapper<ToProductImageResult> toProductImageResultQueryWrapper = new QueryWrapper<>();
toProductImageResultQueryWrapper.lambda().eq(ToProductImageResult::getUserLikeGroupId, userLikeGroupId);
List<ToProductImageResult> toProductImageResults = toProductImageResultMapper.selectList(toProductImageResultQueryWrapper);
for (ToProductImageResult toProductImageResult : toProductImageResults) {
toProductImageResult.setProjectId(project.getId());
toProductImageResultMapper.updateById(toProductImageResult);
}
}
}
}
}

View File

@@ -19,6 +19,8 @@ public class ToProductImageRecord implements Serializable {
@ApiModelProperty(value = "userLikeGroupId")
private Long userLikeGroupId;
private Long projectId;
@ApiModelProperty(value = "prompt")
private String prompt;

View File

@@ -49,4 +49,6 @@ public class ToProductImageResult implements Serializable {
private BigDecimal imageStrength;
private String direction;
private Long projectId;
}

View File

@@ -8,7 +8,7 @@ import java.util.List;
@Data
public class ToProductImageDTO {
private Long userLikeGroupId;
private Long projectId;
private List<ToProductImageVO> toProductImageVOList;
private String prompt;
private BigDecimal imageStrength;

View File

@@ -36,6 +36,8 @@ public interface UserLikeGroupService extends IService<UserLikeGroup> {
ProjectChooseVO choose(ProjectDTO projectDTO);
UserLikeGroup getByProjectId(Long projectId);
void deleteTrialData(Long id);
void updateDate(Long id,String timeZone);

View File

@@ -7,8 +7,6 @@ import com.ai.da.common.context.UserContext;
import com.ai.da.common.enums.CollectionLevel1TypeEnum;
import com.ai.da.common.enums.CreditsEventsEnum;
import com.ai.da.common.enums.DesignTypeEnum;
import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.response.Response;
import com.ai.da.common.response.ResultEnum;
import com.ai.da.common.utils.*;
import com.ai.da.mapper.primary.*;
@@ -311,7 +309,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
return new ProjectChooseVO(projectDTO.getId(), workspaceVO, process);
}
private UserLikeGroup getByProjectId(Long projectId) {
@Override
public UserLikeGroup getByProjectId(Long projectId) {
QueryWrapper<UserLikeGroup> qw = new QueryWrapper<>();
qw.lambda().eq(UserLikeGroup::getProjectId, projectId);
List<UserLikeGroup> userLikeGroupList = userLikeGroupMapper.selectList(qw);
@@ -389,9 +388,16 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
}
AuthPrincipalVo userHolder = UserContext.getUserHolder();
Long userLikeGroupId = toProductImageDTO.getUserLikeGroupId();
Long projectId = toProductImageDTO.getProjectId();
UserLikeGroup userLikeGroup = getByProjectId(projectId);
Long userLikeGroupId = null;
ToProductImageRecord toProductImageRecord = new ToProductImageRecord();
toProductImageRecord.setUserLikeGroupId(userLikeGroupId);
toProductImageRecord.setProjectId(projectId);
if (Objects.nonNull(userLikeGroup)) {
userLikeGroupId = userLikeGroup.getId();
toProductImageRecord.setUserLikeGroupId(userLikeGroupId);
}
toProductImageRecord.setCreateTime(LocalDateTime.now());
if (!StringUtils.isEmpty(toProductImageDTO.getPrompt())) {
toProductImageRecord.setPrompt(toProductImageDTO.getPrompt());
@@ -452,7 +458,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
// toProductImageResult.setUrl(productImageUrl);
toProductImageResult.setIsLike(0);
toProductImageResult.setTaskId(taskId);
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
toProductImageResult.setProjectId(projectId);
if (userLikeGroupId != null) {
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
}
toProductImageResult.setImageStrength(toProductImageDTO.getImageStrength());
toProductImageResultMapper.insert(toProductImageResult);
// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
@@ -476,7 +485,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
// toProductImageResult.setUrl(productImageUrl);
toProductImageResult.setIsLike(0);
toProductImageResult.setTaskId(taskId);
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
toProductImageResult.setProjectId(projectId);
if (userLikeGroupId != null) {
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
}
toProductImageResult.setImageStrength(toProductImageDTO.getImageStrength());
toProductImageResultMapper.insert(toProductImageResult);
// toProductImageResult.setUrl(minioUtil.getPresignedUrl(toProductImageResult.getUrl(), 24 * 60));
@@ -676,7 +688,12 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
public List<ToProductImageResultVO> productImageLikeList(ToProductImageDTO toProductImageDTO) {
QueryWrapper<ToProductImageResult> qw = new QueryWrapper<>();
qw.lambda().eq(ToProductImageResult::getIsLike, 1);
qw.lambda().eq(ToProductImageResult::getUserLikeGroupId, toProductImageDTO.getUserLikeGroupId());
Long projectId = toProductImageDTO.getProjectId();
// UserLikeGroup userLikeGroup = getByProjectId(projectId);
// Long userLikeGroupId = null;
qw.lambda().eq(ToProductImageResult::getProjectId, projectId);
List<ToProductImageResult> toProductImageResults = toProductImageResultMapper.selectList(qw);
for (ToProductImageResult toProductImageResult : toProductImageResults) {
toProductImageResult.setUrl(minioUtil.getPreSignedUrl(toProductImageResult.getUrl(), 24 * 60));
@@ -760,9 +777,17 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
}
AuthPrincipalVo userHolder = UserContext.getUserHolder();
Long userLikeGroupId = toProductImageDTO.getUserLikeGroupId();
Long projectId = toProductImageDTO.getProjectId();
UserLikeGroup userLikeGroup = getByProjectId(projectId);
Long userLikeGroupId = null;
ToProductImageRecord toProductImageRecord = new ToProductImageRecord();
toProductImageRecord.setUserLikeGroupId(userLikeGroupId);
toProductImageRecord.setProjectId(projectId);
if (Objects.nonNull(userLikeGroup)) {
userLikeGroupId = userLikeGroup.getId();
toProductImageRecord.setUserLikeGroupId(userLikeGroupId);
}
toProductImageRecord.setCreateTime(LocalDateTime.now());
if (!StringUtils.isEmpty(toProductImageDTO.getPrompt())) {
toProductImageRecord.setPrompt(toProductImageDTO.getPrompt());
@@ -805,7 +830,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
// toProductImageResult.setUrl(productImageUrl);
toProductImageResult.setIsLike(0);
toProductImageResult.setTaskId(taskId);
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
toProductImageResult.setProjectId(projectId);
if (null != userLikeGroupId) {
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
}
if (toProductImageDTO.getBrightenValue() != null) {
toProductImageResult.setBrightenValue(toProductImageDTO.getBrightenValue());
}
@@ -825,7 +853,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
// toProductImageResult.setUrl(productImageUrl);
toProductImageResult.setIsLike(0);
toProductImageResult.setTaskId(taskId);
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
toProductImageResult.setProjectId(projectId);
if (null != userLikeGroupId) {
toProductImageResult.setUserLikeGroupId(userLikeGroupId);
}
if (toProductImageDTO.getBrightenValue() != null) {
toProductImageResult.setBrightenValue(toProductImageDTO.getBrightenValue());
}
@@ -1445,12 +1476,13 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
vo.setPortfolioDTO(portfolioDTO);
moduleChooseVO.setCanvas(vo);
}else if (module.equals(Module.toProduct.name())) {
UserLikeGroup userLikeGroup = getByProjectId(projectDTO.getId());
Long userLikeGroupId = userLikeGroup.getId();
Long projectId = projectDTO.getId();
// UserLikeGroup userLikeGroup = getByProjectId(projectDTO.getId());
// Long userLikeGroupId = userLikeGroup.getId();
QueryWrapper<ToProductImageResult> qw = new QueryWrapper<>();
qw.lambda().eq(ToProductImageResult::getIsLike, 1);
qw.lambda().eq(ToProductImageResult::getUserLikeGroupId, userLikeGroupId);
qw.lambda().eq(ToProductImageResult::getProjectId, projectId);
qw.lambda().eq(ToProductImageResult::getResultType, "ToProductImage");
List<ToProductImageResult> toProductImageResults = toProductImageResultMapper.selectList(qw);
for (ToProductImageResult toProductImageResult : toProductImageResults) {
@@ -1471,12 +1503,13 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
}
moduleChooseVO.setToProduct(toProductImageResultVOS);
}else if (module.equals(Module.relight.name())) {
UserLikeGroup userLikeGroup = getByProjectId(projectDTO.getId());
Long userLikeGroupId = userLikeGroup.getId();
Long projectId = projectDTO.getId();
// UserLikeGroup userLikeGroup = getByProjectId(projectDTO.getId());
// Long userLikeGroupId = userLikeGroup.getId();
QueryWrapper<ToProductImageResult> qw = new QueryWrapper<>();
qw.lambda().eq(ToProductImageResult::getIsLike, 1);
qw.lambda().eq(ToProductImageResult::getUserLikeGroupId, userLikeGroupId);
qw.lambda().eq(ToProductImageResult::getProjectId, projectId);
qw.lambda().eq(ToProductImageResult::getResultType, "Relight");
List<ToProductImageResult> toProductImageResults = toProductImageResultMapper.selectList(qw);
for (ToProductImageResult toProductImageResult : toProductImageResults) {