Commit 4e786380 by kk

18749-视觉导数据+刷数据

parent 975f2fff
package cn.kk.spring_simple_operation.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 视觉设计协同系统-A+策划 前端控制器
* </p>
*
* @author guokunkun
* @since 2025-10-15
*/
@RestController
@RequestMapping("/spring_simple_operation/visual-aplus-plan")
public class VisualAPlusPlanController {
}
package cn.kk.spring_simple_operation.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
/**
* <p>
* 视觉设计协同系统-A+策划
* </p>
*
* @author guokunkun
* @since 2025-10-15
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("visual_a_plus_plan")
@ApiModel(value = "VisualAPlusPlan对象", description = "视觉设计协同系统-A+策划")
public class VisualAPlusPlan implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId("id")
private Long id;
@ApiModelProperty("标题")
@TableField("title")
private String title;
@ApiModelProperty("执行者")
@TableField("executor_name")
private String executorName;
@ApiModelProperty("执行者编号")
@TableField("executor_number")
private String executorNumber;
@ApiModelProperty("样品到货时间")
@TableField("sample_delivery_time")
private Integer sampleDeliveryTime;
@ApiModelProperty("是否到样品,0-否,1-是")
@TableField("is_have_sample")
private Integer isHaveSample;
@ApiModelProperty("是否需要摄影,0-否,1-是,2-P图")
@TableField("is_need_photographer")
private Integer isNeedPhotographer;
@ApiModelProperty("是否有后台文案,0-否,1-是")
@TableField("is_backstage_copywriting")
private Integer isBackstageCopywriting;
@ApiModelProperty("状态,0-未完成,1-进行中,2-完成,3-不需要处理")
@TableField("`status`")
private Integer status;
@ApiModelProperty("状态为不需要处理时的原因:1-过季,2-断货无样品,3-开发要求不做,4-其他原因")
@TableField("no_handle_reason")
private Integer noHandleReason;
@ApiModelProperty("产品id(待确定是否去除,暂时无值)")
@TableField("product_id")
private Long productId;
@ApiModelProperty("sku")
@TableField("sku")
private String sku;
@ApiModelProperty("首个发起申请的sku")
@TableField("apply_sku")
private String applySku;
@ApiModelProperty("备注")
@TableField("remark")
private String remark;
@ApiModelProperty("优先级")
@TableField("priority")
private String priority;
@ApiModelProperty("标签id(visual_design_tag的id)")
@TableField("vdt_id")
private Long vdtId;
@ApiModelProperty("风险检测")
@TableField("risk_check_area")
private String riskCheckArea;
@ApiModelProperty("风险检测状态,0-否,1-是[对应inv的is_submit]")
@TableField("risk_check_status")
private Integer riskCheckStatus;
@ApiModelProperty("文件url")
@TableField("file_url")
private String fileUrl;
@ApiModelProperty("添加地区")
@TableField("add_region")
private String addRegion;
@ApiModelProperty("是否为精品产品,0-否,1-是")
@TableField("is_boutique_product")
private Integer isBoutiqueProduct;
@ApiModelProperty("数据来源,0-默认,1-A+,2-A+品牌故事")
@TableField("data_source")
private Integer dataSource;
@ApiModelProperty("创建人id")
@TableField("create_id")
private Integer createId;
@ApiModelProperty("创建人")
@TableField("create_name")
private String createName;
@ApiModelProperty("创建时间")
@TableField("create_time")
private Integer createTime;
@ApiModelProperty("是否删除,0-否,1-是")
@TableField("is_delete")
@TableLogic
private Integer isDelete;
@ApiModelProperty("策划完成时间")
@TableField("finish_time")
private Integer finishTime;
@ApiModelProperty("是否需要翻译")
@TableField("is_translate")
private Integer isTranslate;
@ApiModelProperty("翻译语种")
@TableField("languages")
private String languages;
@ApiModelProperty("样品状态:1-正,2-次")
@TableField("sample_status")
private Integer sampleStatus;
@ApiModelProperty("样品备注")
@TableField("sample_status_remark")
private String sampleStatusRemark;
@ApiModelProperty("样品全部到货时间")
@TableField("sample_arrive_time")
private Integer sampleArriveTime;
@ApiModelProperty("权重")
@TableField("weight")
private BigDecimal weight;
@ApiModelProperty("是否走流程,0-否,1-是")
@TableField("follow_the_process")
private Integer followTheProcess;
@ApiModelProperty("图片协同表的id")
@TableField("photo_progress_id")
private Long photoProgressId;
@ApiModelProperty("其他原因备注")
@TableField("no_handle_other_reason_remark")
private String noHandleOtherReasonRemark;
}
...@@ -24,4 +24,6 @@ public interface APlusProductMapper extends BaseMapper<APlusProduct> { ...@@ -24,4 +24,6 @@ public interface APlusProductMapper extends BaseMapper<APlusProduct> {
List<String> getRelatedProduct(@Param("list") List<String> skuList); List<String> getRelatedProduct(@Param("list") List<String> skuList);
List<PublishInfoVo> getPublishInfoByIds(@Param("idList") List<Long> idList); List<PublishInfoVo> getPublishInfoByIds(@Param("idList") List<Long> idList);
String getSolarName(@Param("skuList") List<String> skuList);
} }
package cn.kk.spring_simple_operation.mapper;
import cn.kk.spring_simple_operation.entity.VisualAPlusPlan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 视觉设计协同系统-A+策划 Mapper 接口
* </p>
*
* @author guokunkun
* @since 2025-10-15
*/
@Mapper
public interface VisualAPlusPlanMapper extends BaseMapper<VisualAPlusPlan> {
}
package cn.kk.spring_simple_operation.model.vo;
import cn.kk.spring_simple_operation.utils.Excel;
import lombok.Data;
/**
* @author kk
* @date 2025/10/15
*/
@Data
public class APlusPlanNoHandlerVo {
@Excel(name = "id")
private String id;
@Excel(name = "SKU")
private String sku;
@Excel(name = "节气")
private String solarName;
}
...@@ -2,6 +2,7 @@ package cn.kk.spring_simple_operation.service; ...@@ -2,6 +2,7 @@ package cn.kk.spring_simple_operation.service;
import cn.kk.spring_simple_operation.entity.APlusProduct; import cn.kk.spring_simple_operation.entity.APlusProduct;
import cn.kk.spring_simple_operation.model.dto.SkuPeopleNameDto; import cn.kk.spring_simple_operation.model.dto.SkuPeopleNameDto;
import cn.kk.spring_simple_operation.model.vo.APlusPlanNoHandlerVo;
import cn.kk.spring_simple_operation.model.vo.PublishInfoVo; import cn.kk.spring_simple_operation.model.vo.PublishInfoVo;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
...@@ -22,4 +23,6 @@ public interface APlusProductService extends IService<APlusProduct> { ...@@ -22,4 +23,6 @@ public interface APlusProductService extends IService<APlusProduct> {
void setAPlusProductUploadInfo(List<SkuPeopleNameDto> list); void setAPlusProductUploadInfo(List<SkuPeopleNameDto> list);
List<PublishInfoVo> exportAPlusPublishData(); List<PublishInfoVo> exportAPlusPublishData();
List<APlusPlanNoHandlerVo> exportAPlusPlanNoHandlerData();
} }
package cn.kk.spring_simple_operation.service;
import cn.kk.spring_simple_operation.entity.VisualAPlusPlan;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 视觉设计协同系统-A+策划 服务类
* </p>
*
* @author guokunkun
* @since 2025-10-15
*/
public interface VisualAPlusPlanService extends IService<VisualAPlusPlan> {
}
...@@ -2,14 +2,18 @@ package cn.kk.spring_simple_operation.service.impl; ...@@ -2,14 +2,18 @@ package cn.kk.spring_simple_operation.service.impl;
import cn.kk.spring_simple_operation.entity.APlusProduct; import cn.kk.spring_simple_operation.entity.APlusProduct;
import cn.kk.spring_simple_operation.entity.SyncProductPublish; import cn.kk.spring_simple_operation.entity.SyncProductPublish;
import cn.kk.spring_simple_operation.entity.VisualAPlusPlan;
import cn.kk.spring_simple_operation.entity.VisualDesigner; import cn.kk.spring_simple_operation.entity.VisualDesigner;
import cn.kk.spring_simple_operation.mapper.APlusProductMapper; import cn.kk.spring_simple_operation.mapper.APlusProductMapper;
import cn.kk.spring_simple_operation.mapper.SyncProductPublishMapper; import cn.kk.spring_simple_operation.mapper.SyncProductPublishMapper;
import cn.kk.spring_simple_operation.mapper.VisualDesignerMapper; import cn.kk.spring_simple_operation.mapper.VisualDesignerMapper;
import cn.kk.spring_simple_operation.model.dto.SkuPeopleNameDto; import cn.kk.spring_simple_operation.model.dto.SkuPeopleNameDto;
import cn.kk.spring_simple_operation.model.vo.APlusPlanNoHandlerVo;
import cn.kk.spring_simple_operation.model.vo.PublishInfoVo; import cn.kk.spring_simple_operation.model.vo.PublishInfoVo;
import cn.kk.spring_simple_operation.service.APlusProductService; import cn.kk.spring_simple_operation.service.APlusProductService;
import cn.kk.spring_simple_operation.service.VisualAPlusPlanService;
import cn.kk.spring_simple_operation.service.VisualDesignLogService; import cn.kk.spring_simple_operation.service.VisualDesignLogService;
import cn.kk.spring_simple_operation.utils.CommonUtils;
import cn.kk.spring_simple_operation.utils.DateUtils; import cn.kk.spring_simple_operation.utils.DateUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -21,6 +25,7 @@ import org.springframework.util.StringUtils; ...@@ -21,6 +25,7 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -44,6 +49,46 @@ public class APlusProductServiceImpl extends ServiceImpl<APlusProductMapper, APl ...@@ -44,6 +49,46 @@ public class APlusProductServiceImpl extends ServiceImpl<APlusProductMapper, APl
@Resource @Resource
private VisualDesignerMapper visualDesignerMapper; private VisualDesignerMapper visualDesignerMapper;
@Resource
private VisualAPlusPlanService visualAPlusPlanService;
@Override
public List<APlusPlanNoHandlerVo> exportAPlusPlanNoHandlerData() {
List<VisualAPlusPlan> list = visualAPlusPlanService.list(Wrappers.<VisualAPlusPlan>lambdaQuery()
.eq(VisualAPlusPlan::getStatus, 3)
.eq(VisualAPlusPlan::getNoHandleReason, 1)
.in(VisualAPlusPlan::getExecutorNumber, "", "is_delete")
);
if (CollectionUtils.isEmpty(list)) {
throw new RuntimeException("无数据!");
}
Integer startTime = DateUtils.getCurrentTimeSecond();
List<APlusPlanNoHandlerVo> exportList = new LinkedList<>();
CopyOnWriteArrayList<VisualAPlusPlan> myList = new CopyOnWriteArrayList<>(list);
myList.forEach(t -> {
HashSet<String> relationSkuSet = new HashSet<>(getRelatedProduct(CommonUtils.singletonList(t.getSku())));
List<VisualAPlusPlan> collect = myList.stream().filter(s -> relationSkuSet.contains(s.getSku())).collect(Collectors.toList());
if (collect.size() <= 1) {
// 就一个,放过
myList.remove(t);
return;
}
APlusPlanNoHandlerVo vo = new APlusPlanNoHandlerVo();
vo.setId(collect.stream().map(id -> String.valueOf(id.getId())).collect(Collectors.joining(",")));
List<String> skuList = collect.stream().map(VisualAPlusPlan::getSku).collect(Collectors.toList());
vo.setSku(String.join(",", skuList));
vo.setSolarName(baseMapper.getSolarName(skuList));
exportList.add(vo);
myList.removeAll(collect);
});
Integer endTime = DateUtils.getCurrentTimeSecond();
log.info("exportAPlusPlanNoHandlerData 耗时:{} 分钟", (endTime - startTime) / 60);
return exportList;
}
@Override @Override
public List<String> getRelatedProduct(List<String> list) { public List<String> getRelatedProduct(List<String> list) {
if (Objects.isNull(list)) { if (Objects.isNull(list)) {
......
package cn.kk.spring_simple_operation.service.impl;
import cn.kk.spring_simple_operation.entity.VisualAPlusPlan;
import cn.kk.spring_simple_operation.mapper.VisualAPlusPlanMapper;
import cn.kk.spring_simple_operation.service.VisualAPlusPlanService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 视觉设计协同系统-A+策划 服务实现类
* </p>
*
* @author guokunkun
* @since 2025-10-15
*/
@Service
public class VisualAPlusPlanServiceImpl extends ServiceImpl<VisualAPlusPlanMapper, VisualAPlusPlan> implements VisualAPlusPlanService {
}
...@@ -67,4 +67,16 @@ ...@@ -67,4 +67,16 @@
group by app.id group by app.id
order by app.sku order by app.sku
</select> </select>
<select id="getSolarName" resultType="java.lang.String">
SELECT
GROUP_CONCAT( DISTINCT ssit.solar_term_name ) solar
FROM
sync_product_audit spa
INNER JOIN sync_solar_term_info ssit ON ssit.solar_term_id = spa.solar_term
WHERE
sku IN
<foreach collection="skuList" open="(" item="sku" separator="," close=")">
#{sku}
</foreach>
</select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.kk.spring_simple_operation.mapper.VisualAPlusPlanMapper">
</mapper>
...@@ -6,6 +6,7 @@ import cn.kk.spring_simple_operation.mapper.PhotoProgressMapper; ...@@ -6,6 +6,7 @@ import cn.kk.spring_simple_operation.mapper.PhotoProgressMapper;
import cn.kk.spring_simple_operation.model.dto.BrandAccountDto; import cn.kk.spring_simple_operation.model.dto.BrandAccountDto;
import cn.kk.spring_simple_operation.model.dto.SkuPeopleNameDto; import cn.kk.spring_simple_operation.model.dto.SkuPeopleNameDto;
import cn.kk.spring_simple_operation.model.dto.SkuSiteDTO; import cn.kk.spring_simple_operation.model.dto.SkuSiteDTO;
import cn.kk.spring_simple_operation.model.vo.APlusPlanNoHandlerVo;
import cn.kk.spring_simple_operation.model.vo.PhotoSkuInfo; import cn.kk.spring_simple_operation.model.vo.PhotoSkuInfo;
import cn.kk.spring_simple_operation.model.vo.PublishInfoVo; import cn.kk.spring_simple_operation.model.vo.PublishInfoVo;
import cn.kk.spring_simple_operation.service.*; import cn.kk.spring_simple_operation.service.*;
...@@ -61,6 +62,7 @@ public class ApplicationTest { ...@@ -61,6 +62,7 @@ public class ApplicationTest {
@Resource @Resource
private TransactionTemplate transactionTemplate; private TransactionTemplate transactionTemplate;
@Test @Test
void contextLoads() throws Exception { void contextLoads() throws Exception {
//visualPhotographerAPlusService.brushDataForExecutor(); //visualPhotographerAPlusService.brushDataForExecutor();
...@@ -81,44 +83,54 @@ public class ApplicationTest { ...@@ -81,44 +83,54 @@ public class ApplicationTest {
//brushSimpleVideoData_2(); //brushSimpleVideoData_2();
brushYf2PlaneDesignAssignmentTime(); //brushYf2PlaneDesignAssignmentTime();
exportAPlusPlanNoHandlerData();
} }
private void brushYf2PlaneDesignAssignmentTime() throws Exception { private void exportAPlusPlanNoHandlerData() throws Exception {
File file = new File("2025-10-13_v6tg_研发二部B组-修图安排.xlsx"); List<APlusPlanNoHandlerVo> list = aPlusProductService.exportAPlusPlanNoHandlerData();
ExcelUtil<SkuSiteDTO> util = new ExcelUtil<SkuSiteDTO>(SkuSiteDTO.class); ExcelUtil<APlusPlanNoHandlerVo> util = new ExcelUtil<>(APlusPlanNoHandlerVo.class);
List<SkuSiteDTO> list = util.importExcel("研发二部", Files.newInputStream(file.toPath())); util.exportExcelFile(list, "18749-视觉导数据+刷数据.xlsx");
Map<String, Integer> skuMap = new HashMap<>();
list.forEach(t -> {
long time = Long.parseLong(t.getDataStr()) / 1000L;
skuMap.put(t.getSku(), (int) time);
});
Map<Long, List<VisualDeveloperPlaneDesignAssignmentSku>> idMap = visualDeveloperPlaneDesignAssignmentSkuService.list(Wrappers.<VisualDeveloperPlaneDesignAssignmentSku>lambdaQuery()
.in(VisualDeveloperPlaneDesignAssignmentSku::getSku, skuMap.keySet())
.select(VisualDeveloperPlaneDesignAssignmentSku::getMainId, VisualDeveloperPlaneDesignAssignmentSku::getSku)
).stream().collect(Collectors.groupingBy(VisualDeveloperPlaneDesignAssignmentSku::getMainId));
idMap.forEach((id, skuList) -> {
VisualDeveloperPlaneDesignAssignment one = visualDeveloperPlaneDesignAssignmentService.getOne(Wrappers.<VisualDeveloperPlaneDesignAssignment>lambdaQuery()
.eq(VisualDeveloperPlaneDesignAssignment::getId, id).select(VisualDeveloperPlaneDesignAssignment::getCreateTime, VisualDeveloperPlaneDesignAssignment::getSku));
if (Objects.isNull(one)) return;
Optional<Integer> first = skuList.stream().map(t -> skuMap.get(t.getSku())).filter(Objects::nonNull).findFirst();
if (!first.isPresent()) return;
Integer time = first.get();
VisualDeveloperPlaneDesignAssignment update = new VisualDeveloperPlaneDesignAssignment();
update.setId(id);
update.setCreateTime(time);
transactionTemplate.execute(status -> {
visualDeveloperPlaneDesignAssignmentService.updateById(update);
visualDesignLogService.addLog("visual_developer_plane_design_assignment",
String.format("开发提交时间由%s调整为%s", DateUtils.format10YMD(one.getCreateTime()), DateUtils.format10YMD(time)),
id
);
return true;
});
});
} }
//private void brushYf2PlaneDesignAssignmentTime() throws Exception {
// File file = new File("2025-10-13_v6tg_研发二部B组-修图安排.xlsx");
// ExcelUtil<SkuSiteDTO> util = new ExcelUtil<SkuSiteDTO>(SkuSiteDTO.class);
// List<SkuSiteDTO> list = util.importExcel("研发二部", Files.newInputStream(file.toPath()));
// Map<String, Integer> skuMap = new HashMap<>();
// list.forEach(t -> {
// long time = Long.parseLong(t.getDataStr()) / 1000L;
// skuMap.put(t.getSku(), (int) time);
// });
// Map<Long, List<VisualDeveloperPlaneDesignAssignmentSku>> idMap = visualDeveloperPlaneDesignAssignmentSkuService.list(Wrappers.<VisualDeveloperPlaneDesignAssignmentSku>lambdaQuery()
// .in(VisualDeveloperPlaneDesignAssignmentSku::getSku, skuMap.keySet())
// .select(VisualDeveloperPlaneDesignAssignmentSku::getMainId, VisualDeveloperPlaneDesignAssignmentSku::getSku)
// ).stream().collect(Collectors.groupingBy(VisualDeveloperPlaneDesignAssignmentSku::getMainId));
//
// idMap.forEach((id, skuList) -> {
// VisualDeveloperPlaneDesignAssignment one = visualDeveloperPlaneDesignAssignmentService.getOne(Wrappers.<VisualDeveloperPlaneDesignAssignment>lambdaQuery()
// .eq(VisualDeveloperPlaneDesignAssignment::getId, id).select(VisualDeveloperPlaneDesignAssignment::getCreateTime, VisualDeveloperPlaneDesignAssignment::getSku));
// if (Objects.isNull(one)) return;
// Optional<Integer> first = skuList.stream().map(t -> skuMap.get(t.getSku())).filter(Objects::nonNull).findFirst();
// if (!first.isPresent()) return;
// Integer time = first.get();
// VisualDeveloperPlaneDesignAssignment update = new VisualDeveloperPlaneDesignAssignment();
// update.setId(id);
// update.setCreateTime(time);
// transactionTemplate.execute(status -> {
// visualDeveloperPlaneDesignAssignmentService.updateById(update);
// visualDesignLogService.addLog("visual_developer_plane_design_assignment",
// String.format("开发提交时间由%s调整为%s", DateUtils.format10YMD(one.getCreateTime()), DateUtils.format10YMD(time)),
// id
// );
// return true;
// });
// });
//}
//private void brushSimpleVideoData_2() throws Exception { //private void brushSimpleVideoData_2() throws Exception {
// File file = new File("2025-06-30_vkai_2025老产品补拍简易视频进度.xlsx"); // File file = new File("2025-06-30_vkai_2025老产品补拍简易视频进度.xlsx");
// ExcelUtil<SkuSiteDTO> util = new ExcelUtil<SkuSiteDTO>(SkuSiteDTO.class); // ExcelUtil<SkuSiteDTO> util = new ExcelUtil<SkuSiteDTO>(SkuSiteDTO.class);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment