TASK:AiDA模块化
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user