Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
spring-simple-operation
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guokunkun
spring-simple-operation
Commits
0695b437
Commit
0695b437
authored
Jun 18, 2025
by
kk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
17257-运营导数据
parent
18ebeff4
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
203 additions
and
64 deletions
+203
-64
APlusProduct.java
...va/cn/kk/spring_simple_operation/entity/APlusProduct.java
+4
-60
APlusProductMapper.java
...kk/spring_simple_operation/mapper/APlusProductMapper.java
+9
-0
PublishInfoVo.java
...cn/kk/spring_simple_operation/model/vo/PublishInfoVo.java
+31
-0
APlusProductService.java
.../spring_simple_operation/service/APlusProductService.java
+5
-0
APlusProductServiceImpl.java
...imple_operation/service/impl/APlusProductServiceImpl.java
+76
-1
APlusProductMapper.xml
src/main/resources/mapper/APlusProductMapper.xml
+65
-0
ApplicationTest.java
...t/java/cn/kk/spring_simple_operation/ApplicationTest.java
+13
-3
No files found.
src/main/java/cn/kk/spring_simple_operation/entity/APlusProduct.java
View file @
0695b437
...
...
@@ -52,14 +52,6 @@ public class APlusProduct implements Serializable {
@TableField
(
"sale_30"
)
private
Integer
sale30
;
@ApiModelProperty
(
"A+策划进度,本表中该字段已弃用"
)
@TableField
(
"a_plus_plan_progress"
)
private
Integer
aPlusPlanProgress
;
@ApiModelProperty
(
"摄影A+进度,本表中该字段已弃用"
)
@TableField
(
"photo_a_plus_progress"
)
private
Integer
photoAPlusProgress
;
@ApiModelProperty
(
"A+是否合格,0-否,1-是\""
)
@TableField
(
"is_qualified"
)
private
Integer
isQualified
;
...
...
@@ -88,10 +80,6 @@ public class APlusProduct implements Serializable {
@TableField
(
"is_share_a_plus"
)
private
Integer
isShareAPlus
;
@ApiModelProperty
(
"传达设计进度,本表中该字段已弃用"
)
@TableField
(
"communication_design_progress"
)
private
Integer
communicationDesignProgress
;
@ApiModelProperty
(
"[优化A+]A+优化类型:1-版面重新设计(整版调色、整版改排版),2-老品详情页替换新品。(老品外观变更、老品侵权、批次大货不一致);3-增加新模板设计"
)
@TableField
(
"a_plus_optimize_type"
)
private
Integer
aPlusOptimizeType
;
...
...
@@ -116,22 +104,6 @@ public class APlusProduct implements Serializable {
@TableField
(
"optimize_type"
)
private
Integer
optimizeType
;
@ApiModelProperty
(
"A+策划编号,本表中该字段已弃用"
)
@TableField
(
"a_plus_plan_number"
)
private
String
aPlusPlanNumber
;
@ApiModelProperty
(
"A+策划,本表中该字段已弃用"
)
@TableField
(
"a_plus_plan_name"
)
private
String
aPlusPlanName
;
@ApiModelProperty
(
"分配A+策划时间,本表中该字段已弃用"
)
@TableField
(
"a_plus_plan_time"
)
private
Integer
aPlusPlanTime
;
@ApiModelProperty
(
"A+策划完成时间,本表中该字段已弃用"
)
@TableField
(
"a_plus_plan_finish_time"
)
private
Integer
aPlusPlanFinishTime
;
@ApiModelProperty
(
"创建人id"
)
@TableField
(
"create_id"
)
private
Integer
createId
;
...
...
@@ -148,22 +120,6 @@ public class APlusProduct implements Serializable {
@TableField
(
"communication_design_id"
)
private
Long
communicationDesignId
;
@ApiModelProperty
(
"摄影A+编号,本表中该字段已弃用"
)
@TableField
(
"photo_a_plus_number"
)
private
String
photoAPlusNumber
;
@ApiModelProperty
(
"摄影A+,本表中该字段已弃用"
)
@TableField
(
"photo_a_plus_name"
)
private
String
photoAPlusName
;
@ApiModelProperty
(
"分配摄影A+时间,本表中该字段已弃用"
)
@TableField
(
"photo_a_plus_time"
)
private
Long
photoAPlusTime
;
@ApiModelProperty
(
"摄影A+完成时间,本表中该字段已弃用"
)
@TableField
(
"photo_a_plus_finish_time"
)
private
Long
photoAPlusFinishTime
;
@ApiModelProperty
(
"A+上传后台时间"
)
@TableField
(
"upload_backstage_time"
)
private
Integer
uploadBackstageTime
;
...
...
@@ -180,22 +136,6 @@ public class APlusProduct implements Serializable {
@TableField
(
"a_plus_level"
)
private
String
aPlusLevel
;
@ApiModelProperty
(
"传达设计编号,本表中该字段已弃用"
)
@TableField
(
"communication_design_number"
)
private
String
communicationDesignNumber
;
@ApiModelProperty
(
"传达设计,本表中该字段已弃用"
)
@TableField
(
"communication_design_name"
)
private
String
communicationDesignName
;
@ApiModelProperty
(
"分配传达设计时间,本表中该字段已弃用"
)
@TableField
(
"communication_design_time"
)
private
Integer
communicationDesignTime
;
@ApiModelProperty
(
"传达设计完成时间,本表中该字段已弃用"
)
@TableField
(
"communication_design_finish_time"
)
private
Integer
communicationDesignFinishTime
;
@ApiModelProperty
(
"visual_a_plus_plan表id"
)
@TableField
(
"a_plus_plan_id"
)
private
Long
aPlusPlanId
;
...
...
@@ -249,5 +189,9 @@ public class APlusProduct implements Serializable {
@TableField
(
"trademark_audit_memo"
)
private
String
trademarkAuditMemo
;
@ApiModelProperty
(
"亚马逊平台A+发布状态,0-未发布,1-已发布"
)
@TableField
(
"a_plus_publish_plat_status"
)
private
Integer
aPlusPublishPlatStatus
;
}
src/main/java/cn/kk/spring_simple_operation/mapper/APlusProductMapper.java
View file @
0695b437
package
cn
.
kk
.
spring_simple_operation
.
mapper
;
import
cn.kk.spring_simple_operation.entity.APlusProduct
;
import
cn.kk.spring_simple_operation.model.vo.PublishInfoVo
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* <p>
...
...
@@ -15,4 +19,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public
interface
APlusProductMapper
extends
BaseMapper
<
APlusProduct
>
{
List
<
String
>
getSuperiorSkuList
(
@Param
(
"list"
)
List
<
String
>
list
);
List
<
String
>
getRelatedProduct
(
@Param
(
"list"
)
List
<
String
>
skuList
);
List
<
PublishInfoVo
>
getPublishInfoByIds
(
@Param
(
"idList"
)
List
<
Long
>
idList
);
}
src/main/java/cn/kk/spring_simple_operation/model/vo/PublishInfoVo.java
0 → 100644
View file @
0695b437
package
cn
.
kk
.
spring_simple_operation
.
model
.
vo
;
import
cn.kk.spring_simple_operation.utils.Excel
;
import
lombok.Data
;
/**
* @author kk
* @date 2025/6/18
*/
@Data
public
class
PublishInfoVo
{
@Excel
(
name
=
"账号简称"
)
private
String
account
;
@Excel
(
name
=
"SKU"
)
private
String
sku
;
@Excel
(
name
=
"站点"
)
private
String
site
;
@Excel
(
name
=
"账管姓名"
)
private
String
manager
;
@Excel
(
name
=
"A+上传后台状态"
,
readConverterExp
=
"0=默认值,1=未完成,2=完成,3=不需要处理成"
)
private
Integer
isUploadBackstage
;
@Excel
(
name
=
"A+发布状态"
)
private
String
status
;
}
src/main/java/cn/kk/spring_simple_operation/service/APlusProductService.java
View file @
0695b437
...
...
@@ -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.model.dto.SkuPeopleNameDto
;
import
cn.kk.spring_simple_operation.model.vo.PublishInfoVo
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
...
...
@@ -16,5 +17,9 @@ import java.util.List;
*/
public
interface
APlusProductService
extends
IService
<
APlusProduct
>
{
List
<
String
>
getRelatedProduct
(
List
<
String
>
list
);
void
setAPlusProductUploadInfo
(
List
<
SkuPeopleNameDto
>
list
);
List
<
PublishInfoVo
>
exportAPlusPublishData
();
}
src/main/java/cn/kk/spring_simple_operation/service/impl/APlusProductServiceImpl.java
View file @
0695b437
...
...
@@ -7,17 +7,21 @@ import cn.kk.spring_simple_operation.mapper.APlusProductMapper;
import
cn.kk.spring_simple_operation.mapper.SyncProductPublishMapper
;
import
cn.kk.spring_simple_operation.mapper.VisualDesignerMapper
;
import
cn.kk.spring_simple_operation.model.dto.SkuPeopleNameDto
;
import
cn.kk.spring_simple_operation.model.vo.PublishInfoVo
;
import
cn.kk.spring_simple_operation.service.APlusProductService
;
import
cn.kk.spring_simple_operation.service.VisualDesignLogService
;
import
cn.kk.spring_simple_operation.utils.DateUtils
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.compress.utils.Lists
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* <p>
...
...
@@ -41,6 +45,35 @@ public class APlusProductServiceImpl extends ServiceImpl<APlusProductMapper, APl
private
VisualDesignerMapper
visualDesignerMapper
;
@Override
public
List
<
String
>
getRelatedProduct
(
List
<
String
>
list
)
{
if
(
Objects
.
isNull
(
list
))
{
return
Collections
.
emptyList
();
}
list
=
new
ArrayList
<>(
list
);
list
.
removeIf
(
StringUtils:
:
isEmpty
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
Lists
.
newArrayList
();
}
List
<
String
>
skuList
=
baseMapper
.
getSuperiorSkuList
(
list
);
Set
<
String
>
skus
=
new
HashSet
<>();
skus
.
addAll
(
list
);
if
(!
CollectionUtils
.
isEmpty
(
skuList
))
{
skuList
.
stream
().
filter
(
t
->
!
StringUtils
.
isEmpty
(
t
)).
forEach
(
s
->
{
String
[]
split
=
s
.
split
(
","
);
skus
.
addAll
(
Arrays
.
asList
(
split
));
});
}
skuList
=
new
LinkedList
<>(
skus
);
List
<
String
>
relatedProduct
=
baseMapper
.
getRelatedProduct
(
skuList
);
return
org
.
apache
.
commons
.
collections4
.
CollectionUtils
.
union
(
relatedProduct
,
list
)
.
stream
().
filter
(
t
->
!
StringUtils
.
isEmpty
(
t
)).
collect
(
Collectors
.
toList
());
}
@Override
public
void
setAPlusProductUploadInfo
(
List
<
SkuPeopleNameDto
>
list
)
{
int
count
=
0
;
...
...
@@ -101,4 +134,46 @@ public class APlusProductServiceImpl extends ServiceImpl<APlusProductMapper, APl
log
.
info
(
"共上传{}个A+产品信息"
,
count
);
}
@Override
public
List
<
PublishInfoVo
>
exportAPlusPublishData
()
{
Map
<
String
,
List
<
APlusProduct
>>
siteMap
=
this
.
list
(
Wrappers
.<
APlusProduct
>
lambdaQuery
().
eq
(
APlusProduct:
:
getAPlusPublishPlatStatus
,
1
).
select
(
APlusProduct:
:
getSku
,
APlusProduct:
:
getSite
))
.
stream
().
collect
(
Collectors
.
groupingBy
(
APlusProduct:
:
getSite
));
List
<
Long
>
idList
=
new
LinkedList
<>();
Set
<
String
>
skuSet
=
new
HashSet
<>(
51200
);
siteMap
.
forEach
((
site
,
list
)
->
{
for
(
APlusProduct
t
:
list
)
{
if
(
skuSet
.
contains
(
t
.
getSku
()
+
"#"
+
site
))
continue
;
List
<
String
>
relatedProduct
=
getRelatedProduct
(
Collections
.
singletonList
(
t
.
getSku
()));
relatedProduct
.
forEach
(
sku
->
skuSet
.
add
(
sku
+
"#"
+
t
.
getSku
()));
if
(
relatedProduct
.
size
()
<=
1
)
continue
;
List
<
APlusProduct
>
aPlusProducts
=
this
.
list
(
Wrappers
.<
APlusProduct
>
lambdaQuery
()
.
in
(
APlusProduct:
:
getSku
,
relatedProduct
)
.
eq
(
APlusProduct:
:
getSite
,
site
)
.
select
(
APlusProduct:
:
getId
,
APlusProduct:
:
getAPlusPublishPlatStatus
)
);
Optional
<
APlusProduct
>
published
=
aPlusProducts
.
stream
().
filter
(
p
->
p
.
getAPlusPublishPlatStatus
()
==
1
).
findFirst
();
List
<
Long
>
collect
=
aPlusProducts
.
stream
().
filter
(
p
->
p
.
getAPlusPublishPlatStatus
()
==
0
).
map
(
APlusProduct:
:
getId
).
collect
(
Collectors
.
toList
());
// 同站点变体,既存在已发布的,又存在未发布的
if
(
published
.
isPresent
()
&&
!
CollectionUtils
.
isEmpty
(
collect
))
{
idList
.
addAll
(
collect
);
}
if
(
idList
.
size
()
>
40
)
{
break
;
}
}
return
;
});
if
(
CollectionUtils
.
isEmpty
(
idList
))
{
log
.
error
(
"没有数据需要查询!"
);
}
List
<
PublishInfoVo
>
publishInfoVOList
=
baseMapper
.
getPublishInfoByIds
(
idList
);
if
(
CollectionUtils
.
isEmpty
(
publishInfoVOList
))
{
log
.
error
(
"未查询到数据!"
);
}
return
publishInfoVOList
;
}
}
src/main/resources/mapper/APlusProductMapper.xml
View file @
0695b437
...
...
@@ -2,4 +2,69 @@
<!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.APlusProductMapper"
>
<select
id=
"getSuperiorSkuList"
resultType=
"string"
>
SELECT relative_sku sku from sync_product_audit where sku in
<foreach
item=
"sku"
collection=
"list"
open=
"("
separator=
","
close=
")"
>
#{sku}
</foreach>
and relative_sku != '' and product_type != 2
UNION
select comb_parent_sku sku from sync_product_audit where sku in
<foreach
item=
"sku"
collection=
"list"
open=
"("
separator=
","
close=
")"
>
#{sku}
</foreach>
and comb_parent_sku != '' and product_type = 2
</select>
<select
id=
"getRelatedProduct"
resultType=
"String"
>
(SELECT sku from sync_product_audit where sku in
<foreach
item=
"sku"
collection=
"list"
open=
"("
separator=
","
close=
")"
>
#{sku}
</foreach>
)
UNION
(SELECT sku from sync_product_audit where relative_sku in
<foreach
item=
"sku"
collection=
"list"
open=
"("
separator=
","
close=
")"
>
#{sku}
</foreach>
)
UNION
(SELECT sku from sync_product_audit where eu_product_sku in
<foreach
item=
"sku"
collection=
"list"
open=
"("
separator=
","
close=
")"
>
#{sku}
</foreach>
)
UNION
(SELECT sku from sync_product_audit where comb_parent_sku in
<foreach
item=
"sku"
collection=
"list"
open=
"("
separator=
","
close=
")"
>
#{sku}
</foreach>
)
UNION
(SELECT sku from sync_product_publish where is_delete = 0 and raw_sku in
<foreach
item=
"sku"
collection=
"list"
open=
"("
separator=
","
close=
")"
>
#{sku}
</foreach>
)
</select>
<select
id=
"getPublishInfoByIds"
resultType=
"cn.kk.spring_simple_operation.model.vo.PublishInfoVo"
>
SELECT
soos.account_nick_name account,
app.sku,
app.site,
soos.account_manager manager,
app.is_upload_backstage,
if(app.a_plus_publish_plat_status = 1, '已发布', '未发布') status
FROM
a_plus_product app
LEFT JOIN sync_product_publish_category sppc ON sppc.sku = app.sku
AND sppc.site = app.site
LEFT JOIN sync_other_operate_staff soos ON soos.account_nick_name = sppc.account
WHERE
app.id IN
<foreach
item=
"id"
collection=
"idList"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
group by app.id
order by app.sku
</select>
</mapper>
src/test/java/cn/kk/spring_simple_operation/ApplicationTest.java
View file @
0695b437
...
...
@@ -4,6 +4,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.SkuPeopleNameDto
;
import
cn.kk.spring_simple_operation.model.vo.PhotoSkuInfo
;
import
cn.kk.spring_simple_operation.model.vo.PublishInfoVo
;
import
cn.kk.spring_simple_operation.service.*
;
import
cn.kk.spring_simple_operation.utils.ExcelUtil
;
import
org.junit.jupiter.api.Test
;
...
...
@@ -11,6 +12,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import
javax.annotation.Resource
;
import
java.io.File
;
import
java.io.IOException
;
import
java.nio.file.Files
;
import
java.util.List
;
...
...
@@ -53,13 +55,21 @@ public class ApplicationTest {
//getVideoSkuArea();
brushSimpleVideoData
();
//brushSimpleVideoData();
exportAPlusPublishData
();
}
private
void
brushSimpleVideoData
()
{
photoProgressService
.
brushSimpleVideoData
();
private
void
exportAPlusPublishData
()
throws
Exception
{
List
<
PublishInfoVo
>
publishInfoVos
=
aPlusProductService
.
exportAPlusPublishData
();
ExcelUtil
<
PublishInfoVo
>
util
=
new
ExcelUtil
<>(
PublishInfoVo
.
class
);
util
.
exportExcelFile
(
publishInfoVos
,
"运营导数据-20250618.xlsx"
);
}
//private void brushSimpleVideoData() {
// photoProgressService.brushSimpleVideoData();
//}
//private void setUploadStatusIsDeleted() throws Exception {
// File file = new File("已删除页面直接调整视频状态.xlsx");
// ExcelUtil<SkuSiteDTO> util = new ExcelUtil<SkuSiteDTO>(SkuSiteDTO.class);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment