Commit 90e61892 by kk

20594-运营导数据

parent 4414ec2d
...@@ -2,6 +2,7 @@ package cn.kk.spring_simple_operation.mapper; ...@@ -2,6 +2,7 @@ package cn.kk.spring_simple_operation.mapper;
import cn.kk.spring_simple_operation.entity.SyncProductPublish; import cn.kk.spring_simple_operation.entity.SyncProductPublish;
import cn.kk.spring_simple_operation.model.SkuVideoVO; import cn.kk.spring_simple_operation.model.SkuVideoVO;
import cn.kk.spring_simple_operation.model.vo.BrandRecordStatisticsVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -32,4 +33,6 @@ public interface SyncProductPublishMapper extends BaseMapper<SyncProductPublish> ...@@ -32,4 +33,6 @@ public interface SyncProductPublishMapper extends BaseMapper<SyncProductPublish>
List<SkuVideoVO> groupSkuSolarTerm_Q1Q2(@Param("sku") String sku); List<SkuVideoVO> groupSkuSolarTerm_Q1Q2(@Param("sku") String sku);
List<SkuVideoVO> planSkuForPublishSales(@Param("sku") String sku); List<SkuVideoVO> planSkuForPublishSales(@Param("sku") String sku);
List<BrandRecordStatisticsVo> selectBrandRecordStatistics(@Param("list") List<String> list);
} }
package cn.kk.spring_simple_operation.model.vo;
import cn.kk.spring_simple_operation.utils.Excel;
import lombok.Data;
/**
* 品牌记录统计VO
* @author kk
* @date 2026/2/12
*/
@Data
public class BrandRecordStatisticsVo {
/**
* 账号
*/
@Excel(name = "账号")
private String account;
/**
* 品牌名称
*/
@Excel(name = "备案品牌")
private String brandName;
/**
* 是否可以做A+高级版(美国站)
*/
@Excel(name = "US是否可以做高级A+",readConverterExp = "0=否,1=是")
private Integer isCanAPlusSeniorUs;
/**
* 是否可以做A+高级版(英国站)
*/
@Excel(name = "UK是否可以做高级A+",readConverterExp = "0=否,1=是")
private Integer isCanAPlusSeniorUk;
/**
* 备案状态(美国站)
*/
@Excel(name = "US站点备案情况",readConverterExp = "1=自备案,2=被授权,3=备案中,4=备案失败,5=授权失败,6=无US站,7=只授权销售权益")
private Integer recordStatusUs;
/**
* 备案状态(英国站)
*/
@Excel(name = "UK站点备案情况",readConverterExp = "1=自备案,2=被授权,3=备案中,4=备案失败,5=授权失败,6=无UK站,7=只授权销售权益")
private Integer recordStatusUk;
/**
* 后台状态(美国站)
*/
@Excel(name = "US后台状态",readConverterExp = "1=正常,2=已撤销,3=已丢失,4=已恢复")
private Integer backstageStatusUs;
/**
* 后台状态(英国站)
*/
@Excel(name = "UK后台状态",readConverterExp = "1=正常,2=已撤销,3=已丢失,4=已恢复")
private Integer backstageStatusUk;
/**
* 账号负责人
*/
@Excel(name = "账号负责人")
private String accountManager;
/**
* 产品发布分类数量
*/
@Excel(name = "产品发布分类数量")
private Long productPublishCount;
/**
* A+计划数量
*/
@Excel(name = "A+策划数量")
private Long aPlusPlanCount;
}
...@@ -199,6 +199,41 @@ ...@@ -199,6 +199,41 @@
AND spp.lowest_price <![CDATA[<=]]> 40 AND spp.lowest_price <![CDATA[<=]]> 40
AND (spa.sku = #{sku} or spa.comb_parent_sku = #{sku}) AND (spa.sku = #{sku} or spa.comb_parent_sku = #{sku})
</select> </select>
<select id="selectBrandRecordStatistics"
resultType="cn.kk.spring_simple_operation.model.vo.BrandRecordStatisticsVo">
SELECT
sppc.account,
sppc.brand brandName,
brt.is_can_a_plus_senior_us,
brt.is_can_a_plus_senior_uk,
brt.record_status_us,
brt.record_status_uk,
brt.backstage_status_us,
brt.backstage_status_uk,
soos.account_manager,
COUNT( DISTINCT sppc.id ) productPublishCount,
COUNT( DISTINCT vapp.id ) aPlusPlanCount
FROM
sync_product_publish_category sppc
LEFT JOIN brand_record_tool brt ON brt.account = sppc.account AND brt.record_brand = sppc.brand
AND brt.is_delete = 0
LEFT JOIN a_plus_product app ON app.sku = sppc.sku
AND app.site = sppc.site
AND app.is_delete = 0
AND app.is_upload_backstage = 2
AND app.upload_backstage_time > 1739289600
LEFT JOIN visual_a_plus_plan vapp ON vapp.id = app.a_plus_plan_id
AND vapp.is_delete = 0
LEFT JOIN sync_other_operate_staff soos ON soos.account_nick_name = sppc.account
WHERE
sppc.site = 'Amazon.com'
AND sppc.account IN
<foreach item="account" collection="list" open="(" separator="," close=")">
#{account}
</foreach>
GROUP BY account,brandName
</select>
</mapper> </mapper>
...@@ -77,17 +77,17 @@ public class ApplicationTest { ...@@ -77,17 +77,17 @@ public class ApplicationTest {
//updatePhotoProgressPhotographer(); //updatePhotoProgressPhotographer();
updatePhotoProgressSimplePhotographer(); //updatePhotoProgressSimplePhotographer();
} }
private void updatePhotoProgressSimplePhotographer() throws Exception { //private void updatePhotoProgressSimplePhotographer() throws Exception {
File file = new File("图片协同简易视频摄影师刷成江雯洁.xlsx"); // File file = new File("图片协同简易视频摄影师刷成江雯洁.xlsx");
ExcelUtil<SkuSiteDTO> util = new ExcelUtil<SkuSiteDTO>(SkuSiteDTO.class); // ExcelUtil<SkuSiteDTO> util = new ExcelUtil<SkuSiteDTO>(SkuSiteDTO.class);
List<SkuSiteDTO> list = util.importExcel("导出全部", Files.newInputStream(file.toPath())); // List<SkuSiteDTO> list = util.importExcel("导出全部", Files.newInputStream(file.toPath()));
photoProgressService.updatePhotoProgressSimplePhotographer(list); // photoProgressService.updatePhotoProgressSimplePhotographer(list);
} //}
//private void updatePhotoProgressPhotographer() throws Exception { //private void updatePhotoProgressPhotographer() throws Exception {
// File file = new File("摄影-开发对接明细.xlsx"); // File file = new File("摄影-开发对接明细.xlsx");
......
package cn.kk.spring_simple_operation;
import cn.kk.spring_simple_operation.mapper.SyncProductPublishMapper;
import cn.kk.spring_simple_operation.model.vo.BrandRecordStatisticsVo;
import cn.kk.spring_simple_operation.utils.DateUtils;
import cn.kk.spring_simple_operation.utils.ExcelUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* @author kk
* @date 2026/2/12
*/
@SpringBootTest
public class MyTest {
@Resource
private SyncProductPublishMapper syncProductPublishMapper;
@Test
void contextLoads() {
ArrayList<String> accountList = Lists.newArrayList("HOD", "SDT", "AE", "HOL", "HON", "AH", "AI", "AL", "AN", "HOS", "AO", "HOU", "QAA", "AR", "SEE", "AU", "AW", "AY", "YQQ", "AZ", "FLA", "SEL", "QAO", "BA", "BB", "SES", "BC", "BD", "BE", "QAR", "SEW", "SEV", "SEY", "FLO", "BK", "BL", "BM", "BO", "BQ", "WNE", "BS", "BT", "BV", "BW", "BY", "JUA", "DIB", "DIA", "CA", "JUI", "LYN", "JUL", "CD", "CE", "CG", "CH", "CI", "JUQ", "CK", "DIN", "CL", "JUS", "CM", "CN", "JUU", "CO", "CP", "CR", "CS", "CU", "BEU", "CW", "WOO", "CZ", "WON", "BEY", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DK", "DL", "DN", "DO", "DQ", "DR", "DS", "JIZH", "DT", "DU", "SHE", "DW", "DY", "SHI", "SHN", "SHP", "SHO", "EA", "SHQ", "EC", "EE", "EF", "SHU", "EG", "EI", "YUA", "SHY", "EK", "EL", "YUE", "EN", "EO", "SIA", "YUG", "EP", "EQ", "YUI", "SIC", "ER", "YUH", "ES", "ET", "EU", "QEE", "SIG", "YUM", "YUL", "EW", "YUO", "SII", "EX", "YUN", "EY", "YUQ", "SIJ", "SIL", "YUR", "YUU", "SIO", "SIN", "YUT", "FA", "FB", "QEQ", "FC", "SIR", "YUX", "FD", "SIU", "FE", "FG", "HTN", "SIX", "FL", "FM", "FN", "WRD", "FR", "FS", "JYD", "HUB", "HUA", "HUD", "FQA", "HUE", "GA", "JYI", "GC", "HUJ", "BIC", "HUI", "SJU", "HUN", "HUM", "GJ", "GL", "HUQ", "GM", "HUS", "GO", "BIO", "HUU", "GR", "JYY", "GT", "GU", "OCE", "GY", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HI", "HJ", "HL", "HM", "HN", "HO", "YXE", "HR", "HS", "HT", "HU", "HY", "SLI", "HZ", "IA", "DOE", "IE", "IF", "IG", "II", "DON", "IL", "IM", "DOR", "QIA", "IT", "DOU", "YYJ", "IU", "IV", "DOZ", "DOY", "MAD", "SMO", "YYW", "JA", "QIN", "JB", "BLB", "JD", "MAO", "MAN", "QIR", "JF", "QIU", "JG", "QIT", "QIY", "JK", "JO", "JR", "JS", "JT", "JV", "JY", "JZ", "KA", "KB", "KF", "KG", "KH", "FUN", "KK", "KL", "KM", "KN", "KO", "KQ", "KS", "SOG", "KV", "KX", "KY", "KZ", "SON", "LA", "LB", "LE", "LG", "LH", "LI", "LL", "LM", "LN", "LO", "LS", "UTE", "LT", "SPE", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "BOI", "MK", "ML", "MM", "MO", "MP", "BOO", "QMA", "MS", "MT", "MX", "QMF", "MY", "MEE", "BOY", "MZ", "MED", "MEG", "KAE", "MEF", "MEI", "KAI", "OIL", "MEM", "NC", "MEL", "MEN", "MEQ", "KAO", "NG", "KAS", "NL", "NM", "NO", "NS", "NT", "QNH", "OA", "OB", "DUC", "OC", "OE", "OF", "DUG", "OH", "DUI", "OJ", "OK", "DUN", "OL", "OM", "ON", "DUO", "OO", "OR", "DUU", "OU", "OV", "OY", "PA", "PD", "SSU", "PE", "PL", "lexq", "PP", "STA", "PR", "PS", "ZAI", "PT", "STE", "ZAN", "STJ", "OLI", "QA", "QE", "QG", "QI", "STY", "QP", "QQ", "SUE", "QU", "QX", "ZBN", "KED", "MII", "SUN", "KEI", "SUR", "KEJ", "RE", "MIN", "KEO", "KEN", "RH", "RI", "IAN", "MIU", "RK", "RO", "RP", "RS", "KEZ", "RT", "RU", "RY", "ZCO", "ONG", "SC", "SD", "SE", "MJO", "SG", "SH", "SI", "SJ", "ONU", "SK", "SL", "SO", "SP", "SR", "SS", "ST", "SW", "SZ", "TA", "TC", "TD", "TE", "TF", "TG", "TH", "TM", "TN", "TO", "ZEE", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "XAN", "TY", "TZ", "XAO", "UA", "UD", "UE", "UG", "UJ", "UL", "SYA", "QUA", "UR", "US", "QUE", "UY", "MME", "QUN", "QUQ", "SYU", "VI", "KIR", "VO", "MNA", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WI", "WL", "WM", "WN", "IFS", "WO", "ZHI", "WS", "WT", "WV", "WW", "MOC", "ZHO", "ZHU", "ZHW", "MOO", "XE", "XI", "XJ", "XN", "ZIF", "XO", "MOX", "XP", "XS", "XU", "XEI", "VAN", "YB", "XEU", "YD", "YE", "YG", "YH", "YL", "YM", "YN", "YQ", "YR", "YS", "YT", "YU", "YW", "YX", "YY", "GEE", "ZA", "GEG", "GEI", "ZE", "ZH", "GEM", "ZI", "GEL", "ZJ", "ZK", "GEN", "ZM", "ZN", "GES", "ZO", "GET", "GEY", "GEX", "ZY", "GFA", "MRK", "KOO", "GGN", "KOU", "XIA", "VEA", "TAB", "XIE", "XIH", "XII", "XIL", "XIK", "XIN", "XIM", "VEN", "TAN", "XIQ", "TAO", "XIU", "XIX", "TAT", "TAY", "MTY", "MUA", "OYH", "MUI", "MUL", "GIM", "MUY", "EES", "CAS", "ZON", "XLA", "XLN", "TEA", "TEN", "TET", "KUA", "CEE", "KUL", "MYU", "KUR", "THE", "THI", "ISI", "GOH", "GOO", "GON", "GOR", "TID", "ZUN", "PAC", "ZUO", "TIL", "TIN", "ZUU", "TIO", "PAN", "CHA", "ELE", "CHE", "TIU", "CHH", "ELL", "CHI", "TIY", "CHO", "CHT", "CHS", "CHU", "CHX", "GQE", "CII", "ZWA", "GRA", "fob", "GRE", "GRH", "ENV", "GRY", "RHO", "RHY", "XUE", "XUL", "RIM", "PEN", "XUU", "NAN", "CLO", "NAY", "GUF", "GUI", "GUH", "GUR", "GUU", "TOO", "TOU", "COM", "COO", "COT", "PIN", "NEN", "LAN", "PIR", "NET", "NEV", "LAU", "NEW", "LAY", "ANB", "TSV", "CRI", "ANL", "TTC", "AOE", "PLU", "LED", "LEC", "JAA", "JAC", "LEE", "JAF", "NIL", "TUR", "LEI", "LEL", "LEN", "LEM", "JAN", "LER", "JAO", "LET", "JAX", "JAW", "JAY", "RRY", "ARI", "YAC", "YAJ", "YAN", "YAR", "YAW", "LHJ", "LIA", "RUJ", "RUI", "LIC", "LIF", "HAA", "LIE", "RUN", "JEE", "JEI", "LIN", "JEL", "HAI", "LIO", "RUX", "HAN", "LIR", "HAP", "JER", "HAT", "LIY", "HAY", "YCL", "PRI", "JGF", "JGG", "YEE", "WAE", "WAD", "YEI", "YEO", "YEN", "YES", "WAP", "YEU", "WAR", "WAY", "JIA", "JIH", "HEE", "PUM", "JIL", "HEL", "JIN", "HEN", "FAN", "HEQ", "YGE", "WCE", "FAS", "HEY", "LNA", "LNE", "LNG", "AYA", "LNN", "LNY", "AYO", "TJRW", "YHO", "LON", "LOM", "LOO", "YIE", "WEG", "YIO", "YIN", "WEN", "WEQ", "UAN", "YIU", "YIT", "FDE", "NUE", "HID", "HIC", "DAB", "DAC", "FEE", "HIJ", "HII", "DAG", "HIM", "FEN", "DAN", "FER", "DAO", "YKH", "FEY", "DAY", "JNE", "LRU", "JNU", "YLF", "YLI", "JOO", "YMF", "JOY", "SAI", "WIL", "SAH", "WIO", "SAN", "SAW", "YNG", "LUA", "DEA", "YNX", "YNY", "LUO", "DEL", "YOA", "BAN", "DER", "YOG", "YOF", "YOJ", "HMY", "YOL", "YON", "YOU");
//ArrayList<String> accountList = Lists.newArrayList("HOD", "SDT", "AE", "HOL", "HON", "AH", "AI", "AL", "AN", "HOS", "AO", "HOU");
List<List<String>> listList = Lists.partition(accountList, 10);
List<BrandRecordStatisticsVo> exports = new LinkedList<>();
for (int i = 1; i <= listList.size(); i++) {
Integer startTime = DateUtils.getCurrentTimeSecond();
List<String> list = listList.get(i - 1);
List<BrandRecordStatisticsVo> voList = syncProductPublishMapper.selectBrandRecordStatistics(list);
if (CollectionUtils.isEmpty(voList)) {
continue;
}
exports.addAll(voList);
System.out.println("已获取第 " + i + " 批数据:" + voList.size() + "耗时:" + (DateUtils.getCurrentTimeSecond() - startTime) + "秒。");
}
ExcelUtil<BrandRecordStatisticsVo> util = new ExcelUtil<BrandRecordStatisticsVo>(BrandRecordStatisticsVo.class);
util.exportExcelFile(exports, "运营导数据.xlsx");
}
}
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