Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-module-job
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-module-job
Commits
1b6f3a72
提交
1b6f3a72
authored
3月 25, 2026
作者:
lvbencai
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'qa' 到 'master'
增加出库数据取数据 查看合并请求
!138
上级
0e1c47ae
12543d0e
隐藏空白字符变更
内嵌
并排
正在显示
58 个修改的文件
包含
4343 行增加
和
42 行删除
+4343
-42
WdtQimenStockoutOrderController.java
...job/controller/order/WdtQimenStockoutOrderController.java
+58
-0
QinceDealerController.java
...a/com/sfa/job/controller/qince/QinceDealerController.java
+63
-0
WdtQimenOrderDao.java
...n/java/com/sfa/job/domain/order/dao/WdtQimenOrderDao.java
+0
-1
WdtQimenStockOutPickPositionDetailDao.java
...main/order/dao/WdtQimenStockOutPickPositionDetailDao.java
+39
-0
WdtQimenStockoutGovSubsidyDao.java
...a/job/domain/order/dao/WdtQimenStockoutGovSubsidyDao.java
+40
-0
WdtQimenStockoutLogisticsDetailDao.java
.../domain/order/dao/WdtQimenStockoutLogisticsDetailDao.java
+40
-0
WdtQimenStockoutOrderDao.java
...om/sfa/job/domain/order/dao/WdtQimenStockoutOrderDao.java
+41
-0
WdtQimenStockoutOrderDaoImpl.java
...fa/job/domain/order/dao/WdtQimenStockoutOrderDaoImpl.java
+61
-0
WdtQimenStockoutOrderDetailDao.java
.../job/domain/order/dao/WdtQimenStockoutOrderDetailDao.java
+34
-0
WdtQimenStockoutOrderDetailDaoImpl.java
.../domain/order/dao/WdtQimenStockoutOrderDetailDaoImpl.java
+55
-0
WdtQimenStockoutPositionDetailDao.java
...b/domain/order/dao/WdtQimenStockoutPositionDetailDao.java
+39
-0
CollectOrderLogDaoImpl.java
...sfa/job/domain/order/dao/impl/CollectOrderLogDaoImpl.java
+1
-1
WdtQimenStockOutPickPositionDetailDaoImpl.java
...r/dao/impl/WdtQimenStockOutPickPositionDetailDaoImpl.java
+67
-0
WdtQimenStockoutGovSubsidyDaoImpl.java
...ain/order/dao/impl/WdtQimenStockoutGovSubsidyDaoImpl.java
+68
-0
WdtQimenStockoutLogisticsDetailDaoImpl.java
...rder/dao/impl/WdtQimenStockoutLogisticsDetailDaoImpl.java
+68
-0
WdtQimenStockoutPositionDetailDaoImpl.java
...order/dao/impl/WdtQimenStockoutPositionDetailDaoImpl.java
+66
-0
WdtQimenOrderPayTime.java
...com/sfa/job/domain/order/entity/WdtQimenOrderPayTime.java
+8
-0
WdtQimenStockOutPickPositionDetail.java
...main/order/entity/WdtQimenStockOutPickPositionDetail.java
+38
-0
WdtQimenStockoutGovSubsidy.java
...a/job/domain/order/entity/WdtQimenStockoutGovSubsidy.java
+19
-0
WdtQimenStockoutLogisticsDetail.java
.../domain/order/entity/WdtQimenStockoutLogisticsDetail.java
+34
-0
WdtQimenStockoutOrder.java
...om/sfa/job/domain/order/entity/WdtQimenStockoutOrder.java
+367
-0
WdtQimenStockoutOrderDetail.java
.../job/domain/order/entity/WdtQimenStockoutOrderDetail.java
+253
-0
WdtQimenStockoutPositionDetail.java
...b/domain/order/entity/WdtQimenStockoutPositionDetail.java
+37
-0
WdtQimenStockOutPickPositionDetailMapper.java
...rder/mapper/WdtQimenStockOutPickPositionDetailMapper.java
+19
-0
WdtQimenStockoutGovSubsidyMapper.java
...domain/order/mapper/WdtQimenStockoutGovSubsidyMapper.java
+20
-0
WdtQimenStockoutLogisticsDetailMapper.java
...n/order/mapper/WdtQimenStockoutLogisticsDetailMapper.java
+20
-0
WdtQimenStockoutOrderDetailMapper.java
...omain/order/mapper/WdtQimenStockoutOrderDetailMapper.java
+14
-0
WdtQimenStockoutOrderMapper.java
.../job/domain/order/mapper/WdtQimenStockoutOrderMapper.java
+27
-0
WdtQimenStockoutPositionDetailMapper.java
...in/order/mapper/WdtQimenStockoutPositionDetailMapper.java
+19
-0
WdtPlatformMappingEnum.java
src/main/java/com/sfa/job/enums/WdtPlatformMappingEnum.java
+236
-0
SyncStockoutRequest.java
...a/com/sfa/job/pojo/order/request/SyncStockoutRequest.java
+19
-0
WdtSalesTradeQueryWithDetailVo.java
...ob/pojo/order/request/WdtSalesTradeQueryWithDetailVo.java
+4
-4
WdtStockoutSalesQueryWithDetailRequest.java
...order/request/WdtStockoutSalesQueryWithDetailRequest.java
+246
-0
WdtQimenStockoutBodyDto.java
.../sfa/job/pojo/order/response/WdtQimenStockoutBodyDto.java
+13
-0
WdtQimenStockoutDataDto.java
.../sfa/job/pojo/order/response/WdtQimenStockoutDataDto.java
+16
-0
WdtQimenStockoutResponseDto.java
.../job/pojo/order/response/WdtQimenStockoutResponseDto.java
+12
-0
WdtStockoutSalesQueryWithDetailDto.java
...jo/order/response/WdtStockoutSalesQueryWithDetailDto.java
+42
-0
QinceAllDealerQueryRequest.java
...fa/job/pojo/qince/request/QinceAllDealerQueryRequest.java
+8
-0
QinceDealerQueryRequest.java
...m/sfa/job/pojo/qince/request/QinceDealerQueryRequest.java
+10
-0
SyncOrderDetailDto.java
...in/java/com/sfa/job/pojo/response/SyncOrderDetailDto.java
+27
-8
IWdtQimenStockoutOrderSyncService.java
.../job/service/order/IWdtQimenStockoutOrderSyncService.java
+29
-0
FinanceOrderSyncServiceImpl.java
...a/job/service/order/impl/FinanceOrderSyncServiceImpl.java
+1
-1
WdtQimenOrderPayTimeSyncServiceImpl.java
...rvice/order/impl/WdtQimenOrderPayTimeSyncServiceImpl.java
+7
-8
WdtQimenOrderSyncServiceImpl.java
.../job/service/order/impl/WdtQimenOrderSyncServiceImpl.java
+19
-12
WdtQimenStockoutOrderSyncServiceImpl.java
...vice/order/impl/WdtQimenStockoutOrderSyncServiceImpl.java
+525
-0
IQinceDealerQueryService.java
...a/com/sfa/job/service/qince/IQinceDealerQueryService.java
+7
-0
IQinceUserStatisticService.java
...com/sfa/job/service/qince/IQinceUserStatisticService.java
+0
-1
QinceDealerQueryServiceImpl.java
...a/job/service/qince/impl/QinceDealerQueryServiceImpl.java
+33
-0
QinCeUtils.java
src/main/java/com/sfa/job/util/QinCeUtils.java
+51
-0
WdtQimenUtil.java
src/main/java/com/sfa/job/util/WdtQimenUtil.java
+8
-1
WdtQimenStockoutOrderTask.java
...a/com/sfa/job/xxljob/order/WdtQimenStockoutOrderTask.java
+82
-0
WdtQimenStockOutPickPositionDetailMapper.xml
...mapper/order/WdtQimenStockOutPickPositionDetailMapper.xml
+47
-0
WdtQimenStockoutGovSubsidyMapper.xml
...sources/mapper/order/WdtQimenStockoutGovSubsidyMapper.xml
+41
-0
WdtQimenStockoutLogisticsDetailMapper.xml
...es/mapper/order/WdtQimenStockoutLogisticsDetailMapper.xml
+48
-0
WdtQimenStockoutOrderDetailMapper.xml
...ources/mapper/order/WdtQimenStockoutOrderDetailMapper.xml
+272
-0
WdtQimenStockoutOrderMapper.xml
...in/resources/mapper/order/WdtQimenStockoutOrderMapper.xml
+872
-0
WdtQimenStockoutPositionDetailMapper.xml
...ces/mapper/order/WdtQimenStockoutPositionDetailMapper.xml
+47
-0
EventCallbackServiceImplTest.java
.../sfa/job/service/feishu/EventCallbackServiceImplTest.java
+6
-5
没有找到文件。
src/main/java/com/sfa/job/controller/order/WdtQimenStockoutOrderController.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
controller
.
order
;
import
com.sfa.job.pojo.order.request.SyncStockoutRequest
;
import
com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
import
com.sfa.job.service.order.IWdtQimenStockoutOrderSyncService
;
import
java.util.Date
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 销售出库单同步Controller
*/
@RestController
@RequestMapping
(
"/order/stockout"
)
public
class
WdtQimenStockoutOrderController
{
@Autowired
private
IWdtQimenStockoutOrderSyncService
stockoutOrderSyncService
;
/**
* 同步销售出库单
*
* @param startTime 开始时间(格式:yyyy-MM-dd HH:mm:ss)
* @param endTime 结束时间(格式:yyyy-MM-dd HH:mm:ss)
* @param shopNo 店铺编号
* @return 同步结果
*/
@GetMapping
(
"/sync"
)
public
SyncOrderDetailDto
syncStockoutOrder
(
@RequestParam
(
value
=
"startTime"
,
required
=
false
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
Date
startTime
,
@RequestParam
(
value
=
"endTime"
,
required
=
false
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
Date
endTime
,
@RequestParam
(
value
=
"pageSize"
,
required
=
false
,
defaultValue
=
"200"
)
Integer
pageSize
)
{
SyncStockoutRequest
syncStockoutRequest
=
new
SyncStockoutRequest
();
syncStockoutRequest
.
setStartTime
(
startTime
);
syncStockoutRequest
.
setEndTime
(
endTime
);
syncStockoutRequest
.
setSyncType
(
0
);
return
stockoutOrderSyncService
.
syncStockoutOrder
(
syncStockoutRequest
,
pageSize
);
}
/**
* 同步单个销售出库单
*
* @param stockoutNo 出库单编号
* @return 同步结果
*/
@GetMapping
(
"/sync/single"
)
public
WdtStockoutSalesQueryWithDetailDto
syncSingleStockoutOrder
(
@RequestParam
(
"stockoutNo"
)
String
stockoutNo
)
{
return
stockoutOrderSyncService
.
syncSingleStockoutOrder
(
stockoutNo
);
}
}
src/main/java/com/sfa/job/controller/qince/QinceDealerController.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
controller
.
qince
;
import
com.alibaba.fastjson.JSONArray
;
import
com.sfa.common.core.web.domain.AjaxResult
;
import
com.sfa.job.pojo.qince.request.QinceAllDealerQueryRequest
;
import
com.sfa.job.pojo.qince.request.QinceDealerQueryRequest
;
import
com.sfa.job.service.qince.IQinceDealerQueryService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 勤策经销商查询Controller
*/
@Slf4j
@RestController
@RequestMapping
(
"/qince/dealer"
)
public
class
QinceDealerController
{
@Autowired
private
IQinceDealerQueryService
qinceDealerQueryService
;
/**
* 查询经销商(分页)
*
* @param request 查询参数
* @return 经销商数据列表
*/
@GetMapping
(
"/list"
)
public
AjaxResult
queryDealer
(
QinceDealerQueryRequest
request
)
{
try
{
JSONArray
dealers
=
qinceDealerQueryService
.
queryDealer
(
request
);
return
AjaxResult
.
success
(
"查询成功"
,
dealers
)
.
put
(
"page"
,
request
.
getPage
())
.
put
(
"rows"
,
request
.
getRows
())
.
put
(
"count"
,
dealers
!=
null
?
dealers
.
size
()
:
0
);
}
catch
(
Exception
e
)
{
log
.
error
(
"查询经销商异常:{}"
,
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
"查询经销商异常:"
+
e
.
getMessage
());
}
}
/**
* 查询所有经销商(循环分页直到无数据)
*
* @param request 查询参数
* @return 所有经销商数据
*/
@GetMapping
(
"/list/all"
)
public
AjaxResult
queryAllDealer
(
QinceAllDealerQueryRequest
request
)
{
try
{
JSONArray
allDealers
=
qinceDealerQueryService
.
queryAllDealer
(
request
);
return
AjaxResult
.
success
(
"查询成功"
,
allDealers
)
.
put
(
"pageSize"
,
request
.
getPageSize
())
.
put
(
"totalCount"
,
allDealers
!=
null
?
allDealers
.
size
()
:
0
);
}
catch
(
Exception
e
)
{
log
.
error
(
"查询所有经销商异常:{}"
,
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
"查询所有经销商异常:"
+
e
.
getMessage
());
}
}
}
src/main/java/com/sfa/job/domain/order/dao/WdtQimenOrderDao.java
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.FinanceOrder
;
import
com.sfa.job.domain.order.entity.WdtQimenOrder
;
import
com.sfa.job.domain.order.entity.WdtQimenOrder
;
import
java.util.List
;
import
java.util.List
;
...
...
src/main/java/com/sfa/job/domain/order/dao/WdtQimenStockOutPickPositionDetailDao.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockOutPickPositionDetail
;
import
java.util.List
;
/**
* 拣货位明细 DAO
*/
public
interface
WdtQimenStockOutPickPositionDetailDao
{
/**
* 保存拣货位明细
* @param detail 拣货位明细
* @return 保存结果
*/
int
save
(
WdtQimenStockOutPickPositionDetail
detail
);
/**
* 批量保存拣货位明细
* @param details 拣货位明细列表
* @return 保存结果
*/
int
batchSave
(
List
<
WdtQimenStockOutPickPositionDetail
>
details
);
/**
* 根据出库单明细ID查询拣货位明细
* @param stockoutDetailId 出库单明细ID
* @return 拣货位明细列表
*/
List
<
WdtQimenStockOutPickPositionDetail
>
listByStockoutDetailId
(
Integer
stockoutDetailId
);
/**
* 批量插入或更新拣货位明细
* @param details 拣货位明细列表
* @return 保存结果
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockOutPickPositionDetail
>
details
);
}
src/main/java/com/sfa/job/domain/order/dao/WdtQimenStockoutGovSubsidyDao.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutGovSubsidy
;
import
java.util.List
;
/**
* 国补信息 DAO
*/
public
interface
WdtQimenStockoutGovSubsidyDao
{
/**
* 保存国补信息
* @param subsidy 国补信息
* @return 保存结果
*/
int
save
(
WdtQimenStockoutGovSubsidy
subsidy
);
/**
* 批量保存国补信息
* @param subsidies 国补信息列表
* @return 保存结果
*/
int
batchSave
(
List
<
WdtQimenStockoutGovSubsidy
>
subsidies
);
/**
* 批量插入或更新国补信息
* @param subsidies 国补信息列表
* @return 保存结果
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutGovSubsidy
>
subsidies
);
/**
* 根据出库单号查询国补信息
* @param stockoutNo 出库单号
* @return 国补信息列表
*/
List
<
WdtQimenStockoutGovSubsidy
>
listByStockoutNo
(
String
stockoutNo
);
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/dao/WdtQimenStockoutLogisticsDetailDao.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutLogisticsDetail
;
import
java.util.List
;
/**
* 物流单详情 DAO
*/
public
interface
WdtQimenStockoutLogisticsDetailDao
{
/**
* 保存物流单详情
* @param detail 物流单详情
* @return 保存结果
*/
int
save
(
WdtQimenStockoutLogisticsDetail
detail
);
/**
* 批量保存物流单详情
* @param details 物流单详情列表
* @return 保存结果
*/
int
batchSave
(
List
<
WdtQimenStockoutLogisticsDetail
>
details
);
/**
* 批量插入或更新物流单详情
* @param details 物流单详情列表
* @return 保存结果
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutLogisticsDetail
>
details
);
/**
* 根据出库单号查询物流单详情
* @param stockoutNo 出库单号
* @return 物流单详情列表
*/
List
<
WdtQimenStockoutLogisticsDetail
>
listByStockoutNo
(
String
stockoutNo
);
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/dao/WdtQimenStockoutOrderDao.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrder
;
import
java.util.List
;
/**
* 销售出库单 DAO
*/
public
interface
WdtQimenStockoutOrderDao
{
/**
* 保存销售出库单
* @param stockoutOrder 销售出库单
* @return 保存结果
*/
int
save
(
WdtQimenStockoutOrder
stockoutOrder
);
/**
* 根据出库单编号查询
* @param stockoutNo 出库单编号
* @return 销售出库单
*/
WdtQimenStockoutOrder
getByStockoutNo
(
String
stockoutNo
);
/**
* 查询所有销售出库单
* @return 销售出库单列表
*/
List
<
WdtQimenStockoutOrder
>
listAll
();
int
insertOrUpdate
(
WdtQimenStockoutOrder
stockoutOrder
);
/**
* 批量插入或更新销售出库单
* @param stockoutOrders 销售出库单列表
* @return 影响的行数
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutOrder
>
stockoutOrders
);
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/dao/WdtQimenStockoutOrderDaoImpl.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrder
;
import
com.sfa.job.domain.order.mapper.WdtQimenStockoutOrderMapper
;
import
org.springframework.stereotype.Repository
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* 销售出库单 DAO 实现
*/
@Repository
public
class
WdtQimenStockoutOrderDaoImpl
implements
WdtQimenStockoutOrderDao
{
private
static
final
int
BATCH_SIZE
=
20
;
// 分批大小,可根据实际情况调整
@Resource
private
WdtQimenStockoutOrderMapper
stockoutOrderMapper
;
@Override
public
int
save
(
WdtQimenStockoutOrder
stockoutOrder
)
{
return
stockoutOrderMapper
.
insert
(
stockoutOrder
);
}
@Override
public
WdtQimenStockoutOrder
getByStockoutNo
(
String
stockoutNo
)
{
return
stockoutOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
WdtQimenStockoutOrder
>()
.
eq
(
WdtQimenStockoutOrder:
:
getOrderNo
,
stockoutNo
));
}
@Override
public
List
<
WdtQimenStockoutOrder
>
listAll
()
{
return
stockoutOrderMapper
.
selectList
(
null
);
}
@Override
public
int
insertOrUpdate
(
WdtQimenStockoutOrder
stockoutOrder
)
{
return
stockoutOrderMapper
.
insertOrUpdate
(
stockoutOrder
);
}
@Override
public
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutOrder
>
stockoutOrders
)
{
if
(
stockoutOrders
==
null
||
stockoutOrders
.
isEmpty
())
{
return
0
;
}
int
totalUpdated
=
0
;
// 分批处理,避免MySQL packet too large错误
for
(
int
i
=
0
;
i
<
stockoutOrders
.
size
();
i
+=
BATCH_SIZE
)
{
int
endIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
stockoutOrders
.
size
());
List
<
WdtQimenStockoutOrder
>
batch
=
stockoutOrders
.
subList
(
i
,
endIndex
);
totalUpdated
+=
stockoutOrderMapper
.
insertOrUpdateBatch
(
batch
);
}
return
totalUpdated
;
}
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/dao/WdtQimenStockoutOrderDetailDao.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrderDetail
;
import
java.util.List
;
/**
* 销售出库单明细 DAO
*/
public
interface
WdtQimenStockoutOrderDetailDao
{
/**
* 保存销售出库单明细
* @param stockoutOrderDetail 销售出库单明细
* @return 保存结果
*/
int
save
(
WdtQimenStockoutOrderDetail
stockoutOrderDetail
);
/**
* 根据出库单编号查询明细
* @param stockoutNo 出库单编号
* @return 销售出库单明细列表
*/
List
<
WdtQimenStockoutOrderDetail
>
listByStockoutNo
(
String
stockoutNo
);
/**
* 批量保存销售出库单明细
* @param stockoutOrderDetails 销售出库单明细列表
* @return 保存结果
*/
int
batchSave
(
List
<
WdtQimenStockoutOrderDetail
>
stockoutOrderDetails
);
void
insertOrUpdateBatch
(
List
<
WdtQimenStockoutOrderDetail
>
stockoutOrderDetailList
);
}
src/main/java/com/sfa/job/domain/order/dao/WdtQimenStockoutOrderDetailDaoImpl.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrderDetail
;
import
com.sfa.job.domain.order.mapper.WdtQimenStockoutOrderDetailMapper
;
import
org.springframework.stereotype.Repository
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* 销售出库单明细 DAO 实现
*/
@Repository
public
class
WdtQimenStockoutOrderDetailDaoImpl
implements
WdtQimenStockoutOrderDetailDao
{
private
static
final
int
BATCH_SIZE
=
50
;
// 分批大小,避免MySQL packet too large错误
@Resource
private
WdtQimenStockoutOrderDetailMapper
stockoutOrderDetailMapper
;
@Override
public
int
save
(
WdtQimenStockoutOrderDetail
stockoutOrderDetail
)
{
return
stockoutOrderDetailMapper
.
insert
(
stockoutOrderDetail
);
}
@Override
public
List
<
WdtQimenStockoutOrderDetail
>
listByStockoutNo
(
String
stockoutNo
)
{
return
stockoutOrderDetailMapper
.
selectList
(
new
LambdaQueryWrapper
<
WdtQimenStockoutOrderDetail
>()
.
eq
(
WdtQimenStockoutOrderDetail:
:
getStockoutNo
,
stockoutNo
));
}
@Override
public
int
batchSave
(
List
<
WdtQimenStockoutOrderDetail
>
stockoutOrderDetails
)
{
int
count
=
0
;
for
(
WdtQimenStockoutOrderDetail
detail
:
stockoutOrderDetails
)
{
count
+=
stockoutOrderDetailMapper
.
insert
(
detail
);
}
return
count
;
}
@Override
public
void
insertOrUpdateBatch
(
List
<
WdtQimenStockoutOrderDetail
>
stockoutOrderDetailList
)
{
if
(
stockoutOrderDetailList
==
null
||
stockoutOrderDetailList
.
isEmpty
())
{
return
;
}
// 分批处理,避免MySQL packet too large错误
for
(
int
i
=
0
;
i
<
stockoutOrderDetailList
.
size
();
i
+=
BATCH_SIZE
)
{
int
endIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
stockoutOrderDetailList
.
size
());
List
<
WdtQimenStockoutOrderDetail
>
batch
=
stockoutOrderDetailList
.
subList
(
i
,
endIndex
);
stockoutOrderDetailMapper
.
insertOrUpdateBatch
(
batch
);
}
}
}
src/main/java/com/sfa/job/domain/order/dao/WdtQimenStockoutPositionDetailDao.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutPositionDetail
;
import
java.util.List
;
/**
* 出库货位明细 DAO
*/
public
interface
WdtQimenStockoutPositionDetailDao
{
/**
* 保存出库货位明细
* @param detail 出库货位明细
* @return 保存结果
*/
int
save
(
WdtQimenStockoutPositionDetail
detail
);
/**
* 批量保存出库货位明细
* @param details 出库货位明细列表
* @return 保存结果
*/
int
batchSave
(
List
<
WdtQimenStockoutPositionDetail
>
details
);
/**
* 根据出库单明细ID查询货位明细
* @param stockoutDetailId 出库单明细ID
* @return 货位明细列表
*/
List
<
WdtQimenStockoutPositionDetail
>
listByStockoutDetailId
(
Integer
stockoutDetailId
);
/**
* 批量插入或更新出库货位明细
* @param details 出库货位明细列表
* @return 保存结果
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutPositionDetail
>
details
);
}
src/main/java/com/sfa/job/domain/order/dao/impl/CollectOrderLogDaoImpl.java
浏览文件 @
1b6f3a72
...
@@ -32,7 +32,7 @@ public class CollectOrderLogDaoImpl implements CollectOrderLogDao {
...
@@ -32,7 +32,7 @@ public class CollectOrderLogDaoImpl implements CollectOrderLogDao {
collectOrderLog
.
setBatchNo
(
detailDto
.
getBatchNo
());
collectOrderLog
.
setBatchNo
(
detailDto
.
getBatchNo
());
collectOrderLog
.
setLatestTime
(
detailDto
.
getLatestTime
()
);
collectOrderLog
.
setLatestTime
(
detailDto
.
getLatestTime
()
);
collectOrderLog
.
setPageNo
(
detailDto
.
getPageNo
());
collectOrderLog
.
setPageNo
(
detailDto
.
getPageNo
());
collectOrderLog
.
setTotalCount
(
detailDto
.
get
Total
Count
());
collectOrderLog
.
setTotalCount
(
detailDto
.
get
Order
Count
());
collectOrderLog
.
setRemark
(
detailDto
.
getRemark
());
collectOrderLog
.
setRemark
(
detailDto
.
getRemark
());
logInfoMapper
.
insert
(
collectOrderLog
);
logInfoMapper
.
insert
(
collectOrderLog
);
}
}
...
...
src/main/java/com/sfa/job/domain/order/dao/impl/WdtQimenStockOutPickPositionDetailDaoImpl.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.sfa.job.domain.order.dao.WdtQimenStockOutPickPositionDetailDao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockOutPickPositionDetail
;
import
com.sfa.job.domain.order.mapper.WdtQimenStockOutPickPositionDetailMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* 拣货位明细 DAO 实现
*/
@DS
(
"bi"
)
@Repository
public
class
WdtQimenStockOutPickPositionDetailDaoImpl
implements
WdtQimenStockOutPickPositionDetailDao
{
private
static
final
int
BATCH_SIZE
=
50
;
// 分批大小,避免MySQL packet too large错误
@Autowired
private
WdtQimenStockOutPickPositionDetailMapper
wdtQimenStockOutPickPositionDetailMapper
;
@Override
public
int
save
(
WdtQimenStockOutPickPositionDetail
detail
)
{
return
wdtQimenStockOutPickPositionDetailMapper
.
insert
(
detail
);
}
@Override
public
int
batchSave
(
List
<
WdtQimenStockOutPickPositionDetail
>
details
)
{
if
(
details
==
null
||
details
.
isEmpty
())
{
return
0
;
}
int
count
=
0
;
for
(
int
i
=
0
;
i
<
details
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
details
.
size
());
List
<
WdtQimenStockOutPickPositionDetail
>
batchList
=
details
.
subList
(
i
,
toIndex
);
for
(
WdtQimenStockOutPickPositionDetail
detail
:
batchList
)
{
count
+=
wdtQimenStockOutPickPositionDetailMapper
.
insert
(
detail
);
}
}
return
count
;
}
@Override
public
List
<
WdtQimenStockOutPickPositionDetail
>
listByStockoutDetailId
(
Integer
stockoutDetailId
)
{
return
wdtQimenStockOutPickPositionDetailMapper
.
selectList
(
new
QueryWrapper
<
WdtQimenStockOutPickPositionDetail
>()
.
eq
(
"stockout_detail_id"
,
stockoutDetailId
)
);
}
@Override
public
int
insertOrUpdateBatch
(
List
<
WdtQimenStockOutPickPositionDetail
>
details
)
{
if
(
details
==
null
||
details
.
isEmpty
())
{
return
0
;
}
int
count
=
0
;
for
(
int
i
=
0
;
i
<
details
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
details
.
size
());
List
<
WdtQimenStockOutPickPositionDetail
>
batchList
=
details
.
subList
(
i
,
toIndex
);
count
+=
wdtQimenStockOutPickPositionDetailMapper
.
insertOrUpdateBatch
(
batchList
);
}
return
count
;
}
}
src/main/java/com/sfa/job/domain/order/dao/impl/WdtQimenStockoutGovSubsidyDaoImpl.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.sfa.job.domain.order.dao.WdtQimenStockoutGovSubsidyDao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutGovSubsidy
;
import
com.sfa.job.domain.order.mapper.WdtQimenStockoutGovSubsidyMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* 国补信息 DAO 实现
*/
@DS
(
"bi"
)
@Repository
public
class
WdtQimenStockoutGovSubsidyDaoImpl
implements
WdtQimenStockoutGovSubsidyDao
{
private
static
final
int
BATCH_SIZE
=
50
;
// 分批大小,避免MySQL packet too large错误
@Autowired
private
WdtQimenStockoutGovSubsidyMapper
wdtQimenStockoutGovSubsidyMapper
;
@Override
public
int
save
(
WdtQimenStockoutGovSubsidy
subsidy
)
{
return
wdtQimenStockoutGovSubsidyMapper
.
insert
(
subsidy
);
}
@Override
public
int
batchSave
(
List
<
WdtQimenStockoutGovSubsidy
>
subsidies
)
{
if
(
subsidies
==
null
||
subsidies
.
isEmpty
())
{
return
0
;
}
int
count
=
0
;
for
(
int
i
=
0
;
i
<
subsidies
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
subsidies
.
size
());
List
<
WdtQimenStockoutGovSubsidy
>
batchList
=
subsidies
.
subList
(
i
,
toIndex
);
for
(
WdtQimenStockoutGovSubsidy
subsidy
:
batchList
)
{
count
+=
wdtQimenStockoutGovSubsidyMapper
.
insert
(
subsidy
);
}
}
return
count
;
}
@Override
public
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutGovSubsidy
>
subsidies
)
{
if
(
subsidies
==
null
||
subsidies
.
isEmpty
())
{
return
0
;
}
int
count
=
0
;
for
(
int
i
=
0
;
i
<
subsidies
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
subsidies
.
size
());
List
<
WdtQimenStockoutGovSubsidy
>
batchList
=
subsidies
.
subList
(
i
,
toIndex
);
count
+=
wdtQimenStockoutGovSubsidyMapper
.
insertOrUpdateBatch
(
batchList
);
}
return
count
;
}
@Override
public
List
<
WdtQimenStockoutGovSubsidy
>
listByStockoutNo
(
String
stockoutNo
)
{
return
wdtQimenStockoutGovSubsidyMapper
.
selectList
(
new
QueryWrapper
<
WdtQimenStockoutGovSubsidy
>()
.
eq
(
"stockout_no"
,
stockoutNo
)
);
}
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/dao/impl/WdtQimenStockoutLogisticsDetailDaoImpl.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.sfa.job.domain.order.dao.WdtQimenStockoutLogisticsDetailDao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutLogisticsDetail
;
import
com.sfa.job.domain.order.mapper.WdtQimenStockoutLogisticsDetailMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* 物流单详情 DAO 实现
*/
@DS
(
"bi"
)
@Repository
public
class
WdtQimenStockoutLogisticsDetailDaoImpl
implements
WdtQimenStockoutLogisticsDetailDao
{
private
static
final
int
BATCH_SIZE
=
50
;
// 分批大小,避免MySQL packet too large错误
@Autowired
private
WdtQimenStockoutLogisticsDetailMapper
wdtQimenStockoutLogisticsDetailMapper
;
@Override
public
int
save
(
WdtQimenStockoutLogisticsDetail
detail
)
{
return
wdtQimenStockoutLogisticsDetailMapper
.
insert
(
detail
);
}
@Override
public
int
batchSave
(
List
<
WdtQimenStockoutLogisticsDetail
>
details
)
{
if
(
details
==
null
||
details
.
isEmpty
())
{
return
0
;
}
int
count
=
0
;
for
(
int
i
=
0
;
i
<
details
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
details
.
size
());
List
<
WdtQimenStockoutLogisticsDetail
>
batchList
=
details
.
subList
(
i
,
toIndex
);
for
(
WdtQimenStockoutLogisticsDetail
detail
:
batchList
)
{
count
+=
wdtQimenStockoutLogisticsDetailMapper
.
insert
(
detail
);
}
}
return
count
;
}
@Override
public
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutLogisticsDetail
>
details
)
{
if
(
details
==
null
||
details
.
isEmpty
())
{
return
0
;
}
int
count
=
0
;
for
(
int
i
=
0
;
i
<
details
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
details
.
size
());
List
<
WdtQimenStockoutLogisticsDetail
>
batchList
=
details
.
subList
(
i
,
toIndex
);
count
+=
wdtQimenStockoutLogisticsDetailMapper
.
insertOrUpdateBatch
(
batchList
);
}
return
count
;
}
@Override
public
List
<
WdtQimenStockoutLogisticsDetail
>
listByStockoutNo
(
String
stockoutNo
)
{
return
wdtQimenStockoutLogisticsDetailMapper
.
selectList
(
new
QueryWrapper
<
WdtQimenStockoutLogisticsDetail
>()
.
eq
(
"stockout_no"
,
stockoutNo
)
);
}
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/dao/impl/WdtQimenStockoutPositionDetailDaoImpl.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.sfa.job.domain.order.dao.WdtQimenStockoutPositionDetailDao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutPositionDetail
;
import
com.sfa.job.domain.order.mapper.WdtQimenStockoutPositionDetailMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* 出库货位明细 DAO 实现
*/
@DS
(
"bi"
)
@Repository
public
class
WdtQimenStockoutPositionDetailDaoImpl
implements
WdtQimenStockoutPositionDetailDao
{
private
static
final
int
BATCH_SIZE
=
50
;
// 分批大小,避免MySQL packet too large错误
@Autowired
private
WdtQimenStockoutPositionDetailMapper
wdtQimenStockoutPositionDetailMapper
;
@Override
public
int
save
(
WdtQimenStockoutPositionDetail
detail
)
{
return
wdtQimenStockoutPositionDetailMapper
.
insert
(
detail
);
}
@Override
public
int
batchSave
(
List
<
WdtQimenStockoutPositionDetail
>
details
)
{
if
(
details
==
null
||
details
.
isEmpty
())
{
return
0
;
}
int
count
=
0
;
for
(
int
i
=
0
;
i
<
details
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
details
.
size
());
List
<
WdtQimenStockoutPositionDetail
>
batchList
=
details
.
subList
(
i
,
toIndex
);
for
(
WdtQimenStockoutPositionDetail
detail
:
batchList
)
{
count
+=
wdtQimenStockoutPositionDetailMapper
.
insert
(
detail
);
}
}
return
count
;
}
@Override
public
List
<
WdtQimenStockoutPositionDetail
>
listByStockoutDetailId
(
Integer
stockoutDetailId
)
{
return
wdtQimenStockoutPositionDetailMapper
.
selectList
(
new
com
.
baomidou
.
mybatisplus
.
core
.
conditions
.
query
.
QueryWrapper
<
WdtQimenStockoutPositionDetail
>()
.
eq
(
"stockout_detail_id"
,
stockoutDetailId
)
);
}
@Override
public
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutPositionDetail
>
details
)
{
if
(
details
==
null
||
details
.
isEmpty
())
{
return
0
;
}
int
count
=
0
;
for
(
int
i
=
0
;
i
<
details
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
details
.
size
());
List
<
WdtQimenStockoutPositionDetail
>
batchList
=
details
.
subList
(
i
,
toIndex
);
count
+=
wdtQimenStockoutPositionDetailMapper
.
insertOrUpdateBatch
(
batchList
);
}
return
count
;
}
}
src/main/java/com/sfa/job/domain/order/entity/WdtQimenOrderPayTime.java
浏览文件 @
1b6f3a72
...
@@ -78,6 +78,14 @@ public class WdtQimenOrderPayTime {
...
@@ -78,6 +78,14 @@ public class WdtQimenOrderPayTime {
* 分销商昵称
* 分销商昵称
*/
*/
private
String
fenxiaoNick
;
private
String
fenxiaoNick
;
/**
* 分销商id
*/
private
String
fenxiaoId
;
/**
* 分销商name
*/
private
String
fenxiaoName
;
/**
/**
* 下单时间(毫秒级时间戳,例如:1631861379000)
* 下单时间(毫秒级时间戳,例如:1631861379000)
*/
*/
...
...
src/main/java/com/sfa/job/domain/order/entity/WdtQimenStockOutPickPositionDetail.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
/**
* 拣货位明细
*/
@Data
@TableName
(
"wdt_qimen_stockout_pick_position_detail"
)
public
class
WdtQimenStockOutPickPositionDetail
{
/** 货位明细id */
private
Integer
recId
;
/** 销售出库单详情id */
private
Integer
stockoutDetailId
;
/** 货位id */
private
Integer
positionId
;
/** 货位号 */
private
String
positionNo
;
/** 有效期 */
private
String
expireDate
;
/** 生产日期 */
private
String
productionDate
;
/** 批次号 */
private
String
batchNo
;
/** 当前货位出库总货品数量 */
private
BigDecimal
positionGoodsCount
;
/** 商家编码 */
private
String
specNo
;
/** 创建时间 */
private
Date
createTime
;
/** 更新时间 */
private
Date
updateTime
;
}
src/main/java/com/sfa/job/domain/order/entity/WdtQimenStockoutGovSubsidy.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
/**
* 国补信息
*/
@Data
@TableName
(
"wdt_qimen_stockout_gov_subsidy"
)
public
class
WdtQimenStockoutGovSubsidy
{
/** 原始单号 */
private
String
tid
;
/** 原始子单号 */
private
String
oid
;
/** 公司主体名称 */
private
String
corpEntityName
;
}
src/main/java/com/sfa/job/domain/order/entity/WdtQimenStockoutLogisticsDetail.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
"wdt_qimen_stockout_logistics_detail"
)
public
class
WdtQimenStockoutLogisticsDetail
{
/** 货位明细id */
private
Integer
recId
;
/** 销售出库单详情id */
private
Integer
stockoutDetailId
;
/** 货位id */
private
Integer
positionId
;
/** 货位号 */
private
String
positionNo
;
/** 有效期 */
private
String
expireDate
;
/** 生产日期 */
private
String
productionDate
;
/** 批次号 */
private
String
batchNo
;
/** 当前货位出库总货品数量 */
private
BigDecimal
positionGoodsCount
;
/** 批次备注 */
private
String
batchRemark
;
/** 创建时间 */
private
Date
createTime
;
/** 更新时间 */
private
Date
updateTime
;
}
src/main/java/com/sfa/job/domain/order/entity/WdtQimenStockoutOrder.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 销售出库单
* 对应表:wdt_qimen_stockout_order
*/
@Data
@TableName
(
"wdt_qimen_stockout_order"
)
public
class
WdtQimenStockoutOrder
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/** 出库单ID */
private
Integer
stockoutId
;
/** 出库单号 */
private
String
orderNo
;
/** 虚拟仓编号 */
private
String
virtualWarehouseNo
;
/** 虚拟仓名称 */
private
String
virtualWarehouseName
;
/** ERP系统订单编号 */
private
String
srcOrderNo
;
/** 仓库编号 */
private
String
warehouseNo
;
/** 仓库名称 */
private
String
warehouseName
;
/** 发货时间(订单未发货不返回)格式:2020-09-23 14:56:18 */
private
String
consignTime
;
/** 源单据类别 1=销售订单 */
private
Integer
orderType
;
/** 货品数量 */
private
BigDecimal
goodsCount
;
/** 物流单号 */
private
String
logisticsNo
;
/** 收件人姓名(仅自有/线下平台返回) */
private
String
receiverName
;
/** 国家 默认为1 */
private
Integer
receiverCountry
;
/** 省份ID */
private
Integer
receiverProvince
;
/** 城市ID */
private
Integer
receiverCity
;
/** 地区ID */
private
Integer
receiverDistrict
;
/** 地址(不含省市区,仅自有/线下平台返回) */
private
String
receiverAddress
;
/** 收件人手机(仅自有/线下平台返回) */
private
String
receiverMobile
;
/** 收件人固话(仅自有/线下平台返回) */
private
String
receiverTelno
;
/** 收件人邮编 */
private
String
receiverZip
;
/** 省市区 空格分隔 */
private
String
receiverArea
;
/** 出库单备注 */
private
String
remark
;
/** 实际称得重量KG */
private
BigDecimal
weight
;
/** 截停原因 0=正常 */
private
Integer
blockReason
;
/** 物流方式 */
private
Integer
logisticsType
;
/** ERP物流编号 */
private
String
logisticsCode
;
/** 物流公司名称 */
private
String
logisticsName
;
/** 店铺id */
private
Integer
shopId
;
/** 仓库id */
private
Integer
warehouseId
;
/** 物流id */
private
Integer
logisticsId
;
/** 异常原因 0=正常 */
private
Integer
badReason
;
/** 大头笔 */
private
String
receiverDtb
;
/** 退款状态 0=无退款 1=申请退款 2=部分退款 3=全部退款 */
private
Integer
refundStatus
;
/** 销售类型 1=网店销售 2=线下订单等 */
private
Integer
tradeType
;
/** 业务员编号(为系统时不返回) */
private
String
salesmanNo
;
/** 业务员姓名(为系统时不返回) */
private
String
fullname
;
/** 拣货员 */
private
String
pickerName
;
/** 验货员 */
private
String
examinerName
;
/** 发货员 */
private
String
consignerName
;
/** 打单员 */
private
String
printerName
;
/** 打包员 */
private
String
packagerName
;
/** 订单状态 4=线下退款 5=已取消等 */
private
Integer
tradeStatus
;
/** 订单编号 */
private
String
tradeNo
;
/** 原始单号(多个以,分隔) */
private
String
srcTradeNo
;
/** 客户网名(仅自有/线下平台返回) */
private
String
nickName
;
/** 客户编码 */
private
String
customerNo
;
/** 客户姓名(仅自有/线下平台返回) */
private
String
customerName
;
/** 下单时间(毫秒级时间戳) */
private
String
tradeTime
;
/** 支付时间(毫秒级时间戳) */
private
String
payTime
;
/** 标记名称(订单标记) */
private
String
flagName
;
/** 邮费/订单邮费 */
private
BigDecimal
postAmount
;
/** 证件类别 */
private
Integer
idCardType
;
/** 证件号码(仅自有/线下平台返回) */
private
String
idCard
;
/** 店铺名称 */
private
String
shopName
;
/** 店铺编号 */
private
String
shopNo
;
/** 店铺备注 */
private
String
shopRemark
;
/** 出库单状态 5=已取消 10=待放回等 */
private
Integer
status
;
/** 发票类型 0=不需要 1=电子普通发票等 */
private
Integer
invoiceType
;
/** 发票id 0/1 1=已开发票 */
private
Integer
invoiceId
;
/** 货到付款金额 */
private
BigDecimal
codAmount
;
/** 发货条件 1=款到发货 2=货到付款等 */
private
Integer
deliveryTerm
;
/** 平台ID */
private
Integer
platformId
;
/** 订单ID */
private
Integer
tradeId
;
/** 审核员编号(系统用户时不返回) */
private
String
employeeNo
;
/** 优惠金额(订单总优惠) */
private
BigDecimal
discount
;
/** 税额 */
private
BigDecimal
tax
;
/** 税率 */
private
BigDecimal
taxRate
;
/** 币种 */
private
String
currency
;
/** 系统订单建单时间(毫秒级时间戳) */
private
String
created
;
/** 出库单建单时间(毫秒级时间戳) */
private
String
stockCheckTime
;
/** 打印备注 */
private
String
printRemark
;
/** 买家留言 */
private
String
buyerMessage
;
/** 客服备注 */
private
String
csRemark
;
/** 发票抬头 */
private
String
invoiceTitle
;
/** 发票内容 */
private
String
invoiceContent
;
/** 称重预估邮资 */
private
BigDecimal
postFee
;
/** 包装成本 */
private
BigDecimal
packageFee
;
/** 已付金额(应收金额) */
private
BigDecimal
receivable
;
/** 总成本价 */
private
BigDecimal
goodsTotalCost
;
/** 总货款 */
private
BigDecimal
goodsTotalAmount
;
/** 最后修改时间 格式:2021-09-23 15:56:18 */
private
String
modified
;
/** 分销商昵称 */
private
String
fenxiaoNick
;
/** 分销商id */
private
String
fenxiaoId
;
/** 分销商name */
private
String
fenxiaoName
;
/** 订单标签 */
private
String
tradeLabel
;
/** 订单来源 1=接口抓取 2=手工创建等 */
private
Integer
tradeFrom
;
/** 分拣波次 */
private
String
picklistNo
;
/** 分拣序号 */
private
Integer
picklistSeq
;
/** 物流单打印状态 0=未打印 1=打印中等 */
private
Integer
logisticsPrintStatus
;
/** 已付 */
private
BigDecimal
paid
;
/** 店铺平台id */
private
Integer
shopPlatformId
;
/** 子平台id */
private
Integer
subPlatformId
;
/** 接口处理错误信息 */
private
String
errorInfo
;
/** 其他出库自定义子类别 0,1,2,3,4 */
private
Integer
customType
;
/** 发货单模板id */
private
Integer
sendbillTemplateId
;
/** 客户id */
private
Integer
customerId
;
/** 仓库类别 1=普通 2=自流转等 */
private
Integer
warehouseType
;
/** 制单人id(操作员) */
private
Integer
operatorId
;
/** 外部单号 */
private
String
outerNo
;
/** 出库状态 0=无 1=已验货等 */
private
Integer
consignStatus
;
/** 货品种类 */
private
Integer
goodsTypeCount
;
/** 预估邮资成本 */
private
BigDecimal
calcPostCost
;
/** 打印批次 */
private
String
batchNo
;
/** 销售出库单创建时间 DateTime格式 */
private
String
createdDate
;
/** 分销原始单号 */
private
String
fenxiaoTid
;
/** 分销商编号 */
private
String
fenxiaoNickNo
;
/** 订单预估邮资成本 */
private
BigDecimal
postCost
;
/** 冻结原因id */
private
Integer
freezeReason
;
/** 冻结原因名称 */
private
String
freezeReasonName
;
/** 包装id */
private
Integer
packageId
;
/** 分销商别名(无值不返回) */
private
String
fenxiaoAlias
;
/** 分销订单类型(无值不返回) */
private
String
fenxiaoOrderType
;
/** 打包员编码 */
private
String
packagerNo
;
/** 分拣员id */
private
Integer
sorterId
;
/** 分拣员名称 */
private
String
sorterName
;
/** 签出员工id */
private
Integer
checkouterId
;
/** 签出员工名称 */
private
String
checkouterName
;
/** 审单员id */
private
Integer
checkerId
;
/** 审单员名称 */
private
String
checkerName
;
/** 拣货分组名称 */
private
String
pickGroupName
;
/** 分销店铺名称 */
private
String
fenxiaoShopName
;
/** wms业务单号 */
private
String
wmsCode
;
/** 销售出库单标记名称 */
private
String
stockoutFlagName
;
/** 源单据主键id */
private
Integer
srcOrderId
;
/** 拣货员id */
private
Integer
pickerId
;
/** 打包员id */
private
Integer
packagerId
;
/** 发货员id */
private
Integer
consignerId
;
/** 验货员id */
private
Integer
examinerId
;
/** 第三方订单类型(无值不返回) */
private
String
fenxiaoDistributorOrderType
;
/** 第三方分销商id(无值不返回) */
private
String
fenxiaoDistributorId
;
/** 第三方分销商名称(无值不返回) */
private
String
fenxiaoDistributorName
;
// 不入库
@TableField
(
exist
=
false
)
/** 物流单详情列表 */
private
List
<
WdtQimenStockoutLogisticsDetail
>
logisticsList
;
/** 销售出库单详情列表 */
@TableField
(
exist
=
false
)
private
List
<
WdtQimenStockoutOrderDetail
>
detailsList
;
/** 国补信息列表(无值不返回) */
@TableField
(
exist
=
false
)
private
List
<
WdtQimenStockoutGovSubsidy
>
govSubsidyInfo
;
/** 主播 */
private
String
anchorName
;
/** 助播 */
private
String
assistAchorName
;
/** 场控 */
private
String
controlAchorName
;
/** 运营 */
private
String
operationAnchorName
;
/** 创建者 */
private
String
createBy
;
/** 创建人ID */
private
Long
createUserId
;
/** 更新者 */
private
String
updateBy
;
/** 更新人ID */
private
Long
updateUserId
;
/** 删除标志(0未删除,1已删除) */
private
String
delFlag
;
/** 创建时间 */
private
Date
createTime
;
/** 更新时间 */
private
Date
updateTime
;
// 增加字段
/** 店铺平台名称 */
private
String
platformName
;
/**
* 设置分销商ID和名称
* 从fenxiaoNick中解析出fenxiaoId和fenxiaoName
*/
public
void
setFenxiaoIdAndName
()
{
if
(
fenxiaoNick
!=
null
&&
!
fenxiaoNick
.
isEmpty
())
{
this
.
fenxiaoId
=
extractDistributorId
(
fenxiaoNick
);
this
.
fenxiaoName
=
extractDistributorName
(
fenxiaoNick
);
}
}
/**
* 从输入字符串中提取分销商 ID
*/
private
String
extractDistributorId
(
String
input
)
{
if
(
input
==
null
||
input
.
isEmpty
())
{
return
""
;
}
java
.
util
.
regex
.
Pattern
pattern
=
java
.
util
.
regex
.
Pattern
.
compile
(
"id:(\\d+);"
);
java
.
util
.
regex
.
Matcher
matcher
=
pattern
.
matcher
(
input
);
if
(
matcher
.
find
())
{
return
matcher
.
group
(
1
);
}
return
input
;
}
/**
* 从输入字符串中提取分销商名称
*/
private
String
extractDistributorName
(
String
input
)
{
if
(
input
==
null
||
input
.
isEmpty
())
{
return
""
;
}
java
.
util
.
regex
.
Pattern
pattern
=
java
.
util
.
regex
.
Pattern
.
compile
(
";(.*)】"
);
java
.
util
.
regex
.
Matcher
matcher
=
pattern
.
matcher
(
input
);
if
(
matcher
.
find
())
{
return
matcher
.
group
(
1
);
}
return
input
;
}
}
src/main/java/com/sfa/job/domain/order/entity/WdtQimenStockoutOrderDetail.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 销售出库单明细
* 对应表:wdt_qimen_stockout_order_detail
*/
@Data
@TableName
(
"wdt_qimen_stockout_order_detail"
)
public
class
WdtQimenStockoutOrderDetail
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/** 销售出库单详情的id */
private
Integer
recId
;
/** 出库单id */
private
Integer
stockoutId
;
/** 出库单号 */
private
String
stockoutNo
;
/** 订单明细id */
private
Integer
srcOrderDetailId
;
/** 单品id(系统单品主键) */
private
Integer
specId
;
/** 商家编码 */
private
String
specNo
;
/** 货品数量(按货位分组则为总数量) */
private
BigDecimal
goodsCount
;
/** 总成本 成本价*货品数量 */
private
BigDecimal
totalAmount
;
/** 成交价(价格变化时不变,取实际成交价用sharePrice) */
private
BigDecimal
sellPrice
;
/** 出库单明细备注 */
private
String
remark
;
/** 货品名称 */
private
String
goodsName
;
/** 货品编号 */
private
String
goodsNo
;
/** 规格名称 */
private
String
specName
;
/** 规格码 */
private
String
specCode
;
/** 货品成本 */
private
BigDecimal
costPrice
;
/** 总重量 */
private
BigDecimal
weight
;
/** 货品id(系统货品主键) */
private
Integer
goodsId
;
/** 规格自定义属性1 */
private
String
prop1
;
/** 规格自定义属性2 */
private
String
prop2
;
/** 规格自定义属性3 */
private
String
prop3
;
/** 规格自定义属性4 */
private
String
prop4
;
/** 规格自定义属性5 */
private
String
prop5
;
/** 规格自定义属性6 */
private
String
prop6
;
/** 平台id */
private
Integer
platformId
;
/** 平台名称 */
private
String
platformName
;
/** 退款状态 0=无退款 5=退款成功等 */
private
Integer
refundStatus
;
/** 单价/货品原单价 */
private
BigDecimal
marketPrice
;
/** 货品总优惠 */
private
BigDecimal
discount
;
/** 系统销售出库明细对应的货品成交价 */
private
BigDecimal
sharePrice
;
/** 总货款/货品成交总价 */
private
BigDecimal
shareAmount
;
/** 税率 */
private
BigDecimal
taxRate
;
/** 主条码 */
private
String
barcode
;
/** 基本单位名称 */
private
String
unitName
;
/** 订单货品(子订单)id */
private
Integer
saleOrderId
;
/** 是否是赠品 0=非赠品 1=自动赠送等 */
private
Integer
giftType
;
/** 原始子订单号 */
private
String
srcOid
;
/** 子单原始订单号 */
private
String
srcTid
;
/** 订单内部来源 0=无来源 1=手机等 */
private
Integer
fromMask
;
/** 货品类型 0=其它 1=销售货品等 */
private
Integer
goodsType
;
/** 货品自定义属性1 */
private
String
goodProp1
;
/** 货品自定义属性2 */
private
String
goodProp2
;
/** 货品自定义属性3 */
private
String
goodProp3
;
/** 货品自定义属性4 */
private
String
goodProp4
;
/** 货品自定义属性5 */
private
String
goodProp5
;
/** 货品自定义属性6 */
private
String
goodProp6
;
/** 当need_sn=true时返回,英文逗号分隔的sn */
private
String
snList
;
/** 组合装编码 */
private
String
suiteNo
;
/** 组合装数量 */
private
BigDecimal
suiteNum
;
/** 分摊邮费 */
private
BigDecimal
sharePostAmount
;
/** 已付 */
private
BigDecimal
paid
;
/** 是否包装 true=是 false=否 */
private
Boolean
isPackage
;
/** 品牌编号 */
private
String
brandNo
;
/** 品牌名称 */
private
String
brandName
;
/** 源单据类别 1=销售订单 */
private
Integer
srcOrderType
;
/** 基本单位id */
private
Integer
baseUnitId
;
/** 辅助单位 */
private
Integer
unitId
;
/** 单位换算 */
private
BigDecimal
unitRatio
;
/** 辅助数量 */
private
BigDecimal
num2
;
/** 货品数量 */
private
BigDecimal
num
;
/** 出库货位id */
private
Integer
positionId
;
/** 指定出库批次 */
private
Integer
batchId
;
/** 是否验货 */
private
Integer
isExamined
;
/** 有效期 格式:yyyy-MM-dd HH:mm:ss */
private
String
expireDate
;
/** 扫描方式 0=未验货 1=扫描验货等 */
private
Integer
scanType
;
/** 最后修改时间 格式:yyyy-MM-dd HH:mm:ss */
private
String
modifiedDate
;
/** 创建时间 格式:yyyy-MM-dd HH:mm:ss */
private
String
createdDate
;
/** 分类名称 */
private
String
className
;
/** 平台货品id */
private
String
apiGoodsId
;
/** 平台规格id */
private
String
apiSpecId
;
/** 打包积分 */
private
BigDecimal
packScore
;
/** 拣货积分 */
private
BigDecimal
pickScore
;
/** 验货积分 */
private
BigDecimal
scanScore
;
/** 平台货品名称 */
private
String
apiGoodsName
;
/** 批次备注 */
private
String
batchRemark
;
/** 分销商昵称 */
private
String
fenxiaoNick
;
/** 分销商id */
private
String
fenxiaoId
;
/** 分销商name */
private
String
fenxiaoName
;
/** 出库货位明细列表 */
@TableField
(
exist
=
false
)
private
List
<
WdtQimenStockoutPositionDetail
>
positionDetailsList
;
/** 拣货位明细列表 */
@TableField
(
exist
=
false
)
private
List
<
WdtQimenStockOutPickPositionDetail
>
pickPositionDetailsList
;
/** 创建者 */
private
String
createBy
;
/** 创建人ID */
private
Long
createUserId
;
/** 更新者 */
private
String
updateBy
;
/** 更新人ID */
private
Long
updateUserId
;
/** 删除标志(0未删除,1已删除) */
private
String
delFlag
;
/** 创建时间 */
private
Date
createTime
;
/** 更新时间 */
private
Date
updateTime
;
// 实际成本
private
BigDecimal
actualCost
;
// 标准成本
private
BigDecimal
standardCost
;
// 实际成本*num 实际总成本
private
BigDecimal
sumActualCost
;
// 标准成本*num 标准总成本
private
BigDecimal
sumStandardCost
;
/**
* 设置分销商ID和名称
* 从fenxiaoNick中解析出fenxiaoId和fenxiaoName
*/
public
void
setFenxiaoIdAndName
()
{
if
(
fenxiaoNick
!=
null
&&
!
fenxiaoNick
.
isEmpty
())
{
this
.
fenxiaoId
=
extractDistributorId
(
fenxiaoNick
);
this
.
fenxiaoName
=
extractDistributorName
(
fenxiaoNick
);
}
}
/**
* 从输入字符串中提取分销商 ID
*/
private
String
extractDistributorId
(
String
input
)
{
if
(
input
==
null
||
input
.
isEmpty
())
{
return
""
;
}
java
.
util
.
regex
.
Pattern
pattern
=
java
.
util
.
regex
.
Pattern
.
compile
(
"id:(\\d+);"
);
java
.
util
.
regex
.
Matcher
matcher
=
pattern
.
matcher
(
input
);
if
(
matcher
.
find
())
{
return
matcher
.
group
(
1
);
}
return
""
;
}
/**
* 从输入字符串中提取分销商名称
*/
private
String
extractDistributorName
(
String
input
)
{
if
(
input
==
null
||
input
.
isEmpty
())
{
return
""
;
}
java
.
util
.
regex
.
Pattern
pattern
=
java
.
util
.
regex
.
Pattern
.
compile
(
";(.*)】"
);
java
.
util
.
regex
.
Matcher
matcher
=
pattern
.
matcher
(
input
);
if
(
matcher
.
find
())
{
return
matcher
.
group
(
1
);
}
return
""
;
}
}
src/main/java/com/sfa/job/domain/order/entity/WdtQimenStockoutPositionDetail.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
/**
* 出库货位明细
*/
@Data
@TableName
(
"wdt_qimen_stockout_position_detail"
)
public
class
WdtQimenStockoutPositionDetail
{
/** 货位明细id */
private
Integer
recId
;
/** 销售出库单详情id */
private
Integer
stockoutDetailId
;
/** 货位id */
private
Integer
positionId
;
/** 货位号 */
private
String
positionNo
;
/** 有效期 */
private
String
expireDate
;
/** 生产日期 */
private
String
productionDate
;
/** 批次号 */
private
String
batchNo
;
/** 当前货位出库总货品数量 */
private
BigDecimal
positionGoodsCount
;
/** 批次备注 */
private
String
batchRemark
;
/** 创建时间 */
private
Date
createTime
;
/** 更新时间 */
private
Date
updateTime
;
}
src/main/java/com/sfa/job/domain/order/mapper/WdtQimenStockOutPickPositionDetailMapper.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.WdtQimenStockOutPickPositionDetail
;
import
java.util.List
;
/**
* 拣货位明细 Mapper
*/
public
interface
WdtQimenStockOutPickPositionDetailMapper
extends
BaseMapper
<
WdtQimenStockOutPickPositionDetail
>
{
/**
* 批量插入或更新
* @param details 明细列表
* @return 影响的行数
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockOutPickPositionDetail
>
details
);
}
src/main/java/com/sfa/job/domain/order/mapper/WdtQimenStockoutGovSubsidyMapper.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutGovSubsidy
;
import
java.util.List
;
/**
* 国补信息 Mapper
*/
public
interface
WdtQimenStockoutGovSubsidyMapper
extends
BaseMapper
<
WdtQimenStockoutGovSubsidy
>
{
/**
* 批量插入或更新国补信息
* @param subsidies 国补信息列表
* @return 影响的行数
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutGovSubsidy
>
subsidies
);
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/mapper/WdtQimenStockoutLogisticsDetailMapper.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutLogisticsDetail
;
import
java.util.List
;
/**
* 物流单详情 Mapper
*/
public
interface
WdtQimenStockoutLogisticsDetailMapper
extends
BaseMapper
<
WdtQimenStockoutLogisticsDetail
>
{
/**
* 批量插入或更新物流单详情
* @param details 物流单详情列表
* @return 影响的行数
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutLogisticsDetail
>
details
);
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/mapper/WdtQimenStockoutOrderDetailMapper.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
java.util.List
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrderDetail
;
/**
* 销售出库单明细 Mapper
*/
public
interface
WdtQimenStockoutOrderDetailMapper
extends
BaseMapper
<
WdtQimenStockoutOrderDetail
>
{
void
insertOrUpdateBatch
(
List
<
WdtQimenStockoutOrderDetail
>
stockoutOrderDetailList
);
}
src/main/java/com/sfa/job/domain/order/mapper/WdtQimenStockoutOrderMapper.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrder
;
import
java.util.List
;
/**
* 销售出库单 Mapper
*/
public
interface
WdtQimenStockoutOrderMapper
extends
BaseMapper
<
WdtQimenStockoutOrder
>
{
/**
* 插入或更新销售出库单
* @param stockoutOrder 销售出库单
* @return 影响的行数
*/
int
insertOrUpdate
(
WdtQimenStockoutOrder
stockoutOrder
);
/**
* 批量插入或更新销售出库单
* @param stockoutOrders 销售出库单列表
* @return 影响的行数
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutOrder
>
stockoutOrders
);
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/order/mapper/WdtQimenStockoutPositionDetailMapper.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutPositionDetail
;
import
java.util.List
;
/**
* 出库货位明细 Mapper
*/
public
interface
WdtQimenStockoutPositionDetailMapper
extends
BaseMapper
<
WdtQimenStockoutPositionDetail
>
{
/**
* 批量插入或更新
* @param details 明细列表
* @return 影响的行数
*/
int
insertOrUpdateBatch
(
List
<
WdtQimenStockoutPositionDetail
>
details
);
}
src/main/java/com/sfa/job/enums/WdtPlatformMappingEnum.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
enums
;
import
lombok.Getter
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 旺店通平台映射信息枚举
* 基于旺店通开放平台文档和常见映射关系
*/
@Getter
public
enum
WdtPlatformMappingEnum
{
// 平台映射
OFFLINE
(
0
,
"线下"
),
TAOBAO
(
1
,
"淘宝"
),
TAOBAO_FENXIAO
(
2
,
"淘宝分销"
),
JINGDONG
(
3
,
"京东"
),
PAIPAI
(
4
,
"拍拍"
),
AMAZON
(
5
,
"亚马逊"
),
YHD
(
6
,
"1号店"
),
DANGDANG
(
7
,
"当当网"
),
GOME
(
8
,
"国美"
),
ALIBABA
(
9
,
"阿里巴巴"
),
EC_SHOP
(
10
,
"ECShop"
),
MIKAOLIN
(
11
,
"麦考林"
),
V_PLUS
(
12
,
"V+"
),
SUNING
(
13
,
"苏宁"
),
VIPSHOP
(
14
,
"唯品会"
),
YIXUN
(
15
,
"易迅"
),
JUMEI
(
16
,
"聚美"
),
YOUZAN
(
17
,
"有赞(口袋通)"
),
HIShop
(
18
,
"Hishop"
),
HUICE_PRODUCT
(
19
,
"慧策产品"
),
MEILISHUO
(
20
,
"美丽说"
),
MOGUJIE
(
21
,
"蘑菇街"
),
BEIBEI
(
22
,
"贝贝网"
),
EC_STORE
(
23
,
"ECstore"
),
ZHE800
(
24
,
"折800"
),
RONG_EGOU
(
25
,
"融e购"
),
CHUANYI_ZHUSHOU
(
26
,
"穿衣助手"
),
CHUCHUJIE
(
27
,
"楚楚街"
),
WEIMENG
(
28
,
"微盟"
),
JUANPI
(
29
,
"卷皮网"
),
SHUNFENG_HEIKE
(
30
,
"顺丰嘿客"
),
WEISHOP
(
32
,
"微店"
),
BAIDU_MALL
(
33
,
"百度mall"
),
MIA
(
34
,
"蜜芽"
),
MINGXING_YICHU
(
35
,
"明星衣橱"
),
SHANRONG_SHANGCHENG
(
36
,
"善融商城"
),
ALIEXPRESS
(
37
,
"速卖通"
),
MENGDIAN
(
38
,
"萌店"
),
PINDUODUO
(
39
,
"拼多多"
),
JINGDONG_DAOJIA
(
40
,
"京东到家"
),
BAIDU_WAIMAI
(
41
,
"百度外卖"
),
MEITUAN_WAIMAI
(
42
,
"美团外卖"
),
ELEME
(
45
,
"饿了么"
),
WOMAIGOU
(
46
,
"我买网"
),
RENRENDIAN
(
47
,
"人人店"
),
MEITUN_MAMA
(
48
,
"美囤妈妈(宝宝树)"
),
JIUYI_PINTUAN
(
49
,
"91拼团"
),
KOALA
(
50
,
"考拉海购"
),
QIANMI_WANG
(
51
,
"千米网"
),
TESHEHUI
(
52
,
"特奢汇"
),
CHUCHUJIE_PINTUAN
(
53
,
"楚楚街拼团"
),
HAIZIWANG
(
55
,
"孩子王"
),
XIAOHONGSHU
(
56
,
"小红书"
),
GEGEJIA
(
57
,
"格格家"
),
YUNJI
(
58
,
"云集"
),
CHUCHUTONG
(
59
,
"楚楚通"
),
FANLI_WANG
(
60
,
"返利网"
),
JIUXIAN_WANG
(
61
,
"酒仙网"
),
PINGAN_HAOYISHENG
(
62
,
"平安好医生"
),
XIA_CHUFANG
(
63
,
"下厨房"
),
HAOSHIQI
(
64
,
"好食期"
),
DABIAN_DIANDIAN
(
65
,
"大V店"
),
HAOYIKU
(
66
,
"好衣库(鲸灵)"
),
DALINGJIA
(
67
,
"达令家"
),
AI_KUCUN
(
68
,
"爱库存"
),
DOUYIN_DIAN
(
69
,
"抖店(放心购)"
),
MEIRI_YITAO
(
70
,
"每日一淘"
),
BEIKE_YOUPIN
(
71
,
"贝壳优品"
),
XIAOMI_YOUPIN
(
72
,
"小米有品"
),
WEILAI_JISHI
(
73
,
"未来集市"
),
AIQIYI_SHANGCHENG
(
74
,
"爱奇艺商城"
),
KUAISHOU_XIAODIAN
(
75
,
"快手小店"
),
MOKUAI_XINGXUAN
(
76
,
"魔筷星选"
),
HAIPAKE
(
77
,
"海拍客"
),
YIQIANBAO
(
78
,
"壹钱包"
),
MEIRI_YOUXIAN
(
79
,
"每日优鲜"
),
WANGYI_YANXUAN
(
80
,
"网易严选"
),
DUODIAN
(
81
,
"多点"
),
TIANMAO_CHAOSHI
(
82
,
"天猫超市一盘货"
),
WEIXIN_VIDEONO
(
83
,
"微信视频号"
),
JIAOLAN_JIaren
(
84
,
"娇兰佳人"
),
TUHU_YANGCHE
(
85
,
"途虎养车"
),
JINRI_BAOTUAN
(
86
,
"今日爆团"
),
ALI_JIANKANG
(
87
,
"阿里健康大药房"
),
BIYAO
(
88
,
"必要"
),
TENCENT_FENGYE
(
89
,
"腾讯枫页"
),
WEIXIN_XIAOSHANGDIAN
(
90
,
"微信小商店"
),
KUAISHOU_JINNIU
(
91
,
"快手金牛"
),
MODIAN
(
92
,
"摩点"
),
YIDINGHUO
(
93
,
"易订货"
),
TIANMAO_GUOJI_ZHIYING
(
94
,
"天猫国际直营(轻轨三号线)"
),
YIKE
(
96
,
"驿氪"
),
MAMA_LIANGPIN
(
97
,
"妈妈良品"
),
XIAOMANG_DIANSHANG
(
98
,
"小芒电商"
),
KAMEILA
(
99
,
"卡美啦"
),
NIANFENG_DADANGJIA
(
100
,
"年丰大当家"
),
DEWU
(
101
,
"得物"
),
KOALA_SHANGJIA_ZHIFA
(
102
,
"考拉商家直发"
),
MEITUAN_SHANGOU
(
103
,
"美团闪购"
),
XINHUA_SHUDIAN
(
104
,
"新华书店"
),
YUNHUO_YOUXUAN
(
105
,
"云货优选"
),
LINGSHOUTONG
(
106
,
"零售通"
),
YIJIUP
(
107
,
"易久批"
),
TENCENT_HUIJU
(
108
,
"腾讯惠聚"
),
XIAOE_PINPIN
(
109
,
"小鹅拼拼"
),
DU_XIAODIAN
(
110
,
"度小店"
),
FENGYE_XIAODIAN
(
111
,
"枫页小店"
),
DINGXIANG_MAMA
(
112
,
"丁香妈妈"
),
YAOSHI_BANG
(
113
,
"药师帮"
),
FENGLEI
(
114
,
"峰雷"
),
SHEIN
(
115
,
"SHEIN希音"
),
BILIBILI_HUIYUANGOU
(
116
,
"bilibili会员购"
),
QUNJIELONG
(
117
,
"群接龙"
),
ZHAOSHANG_YINHANG
(
118
,
"招商银行掌上生活"
),
HUAWEI_SHANGCHENG
(
119
,
"华为商城"
),
WEIXIN_LIANJIEQI
(
120
,
"微信连接器"
),
DANCHUANG_VTN
(
121
,
"单创VTN"
),
TIANHONG_SHANGCHENG
(
122
,
"天虹商城"
),
YOULU_WANG
(
123
,
"有路网"
),
FENXIAO
(
125
,
"分销"
),
DINGZHI
(
126
,
"定制"
),
QITA_ZIYOU_SHANGCHENG
(
127
,
"其他(自有商城)"
),
MAOXIANG_KAOLA_ZHIYING
(
128
,
"猫享-考拉自营"
),
B_PLUS
(
131
,
"B+"
),
XIANYU
(
134
,
"闲鱼"
),
XIAYATONG
(
135
,
"小亚通"
),
BAIDU_YINGXIAO
(
136
,
"百度营销2.0/百度优选"
),
TAOBAO_DAIDA_DAIFA
(
137
,
"淘宝代打代发"
),
ZHENKUNXING
(
138
,
"震坤行"
),
DOUYIN_GONGXIAO
(
139
,
"抖音供销"
),
SHUNLIAN_DONGLI
(
140
,
"顺联动力"
),
XINGYUN_HUOCANG
(
141
,
"行云货仓"
),
MIAOJIE
(
142
,
"喵街"
),
CHUANGHUO
(
144
,
"闯货"
),
BAIDU_JIANKANG
(
146
,
"百度健康"
),
WEIBO_DIANSHANG
(
148
,
"微博电商"
),
WEISHANG_XIANGCE
(
150
,
"微商相册"
),
HELIANG
(
151
,
"禾量"
),
HUACHENG_NONGFU
(
152
,
"花城农夫"
),
DOUYIN_CHAOSHI
(
154
,
"抖音超市"
),
MEITUAN_SHANDIANCANG
(
159
,
"美团闪电仓"
),
YIZHIFU
(
164
,
"翼支付"
),
BENLAI_SHENGHUO
(
165
,
"本来生活"
),
SHULIAN_TONG
(
166
,
"书链通"
),
DAMA
(
168
,
"达摩"
),
DONGFANG_ZHENXUAN
(
169
,
"东方甄选"
),
YISHANG_CHUANGXIN_SIYU
(
171
,
"一商创信私域"
),
TAOBAO_MAICAI
(
172
,
"淘宝买菜"
),
HEMA_YUNCHAO
(
173
,
"盒马云超"
),
JUHAOMAI
(
174
,
"聚好麦"
),
DASHI_XIONG
(
176
,
"大师熊"
),
YAOJIUJIU
(
177
,
"药九九"
),
FANMILIN
(
179
,
"梵蜜琳"
),
ZHAOCAI_HUIGOU
(
180
,
"招财慧购"
),
BINGKUN
(
182
,
"秉坤"
),
SUOYOU_NVSHENG
(
188
,
"所有女生"
),
XINGMA_YOUXUAN
(
192
,
"星妈优选"
),
JINGDONG_YUNcang_VMI
(
194
,
"京东云仓VMI"
),
HAOYOUDUO
(
199
,
"好又多"
),
KUajing
(
202
,
"跨境"
),
WEISHANGCHENG
(
204
,
"唯商城"
);
private
final
Integer
platformId
;
private
final
String
platformName
;
WdtPlatformMappingEnum
(
Integer
platformId
,
String
platformName
)
{
this
.
platformId
=
platformId
;
this
.
platformName
=
platformName
;
}
// 平台ID到平台名称的映射缓存
private
static
final
Map
<
Integer
,
String
>
platformMap
=
new
HashMap
<>();
// 静态初始化块,构建映射关系
static
{
for
(
WdtPlatformMappingEnum
enumValue
:
values
())
{
platformMap
.
put
(
enumValue
.
platformId
,
enumValue
.
platformName
);
}
}
/**
* 根据平台ID获取平台名称
* @param platformId 平台ID
* @return 平台名称,若不存在则返回null
*/
public
static
String
getPlatformName
(
Integer
platformId
)
{
return
platformMap
.
get
(
platformId
);
}
/**
* 根据平台名称获取平台ID
* @param platformName 平台名称
* @return 平台ID,若不存在则返回null
*/
public
static
Integer
getPlatformId
(
String
platformName
)
{
for
(
WdtPlatformMappingEnum
enumValue
:
values
())
{
if
(
enumValue
.
platformName
.
equals
(
platformName
))
{
return
enumValue
.
platformId
;
}
}
return
null
;
}
/**
* 检查平台ID是否存在
* @param platformId 平台ID
* @return 是否存在
*/
public
static
boolean
exists
(
Integer
platformId
)
{
return
platformMap
.
containsKey
(
platformId
);
}
/**
* 获取所有平台映射关系
* @return 平台ID到平台名称的映射
*/
public
static
Map
<
Integer
,
String
>
getAllPlatforms
()
{
return
new
HashMap
<>(
platformMap
);
}
}
\ No newline at end of file
src/main/java/com/sfa/job/pojo/order/request/SyncStockoutRequest.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
order
.
request
;
import
java.util.Date
;
import
lombok.Data
;
@Data
public
class
SyncStockoutRequest
{
private
String
stockoutNo
;
// 出库单状态:5已取消, 10待放回(拣货待放回)小于该值的都是已取消的单子, 50待审核, 51缺货, 52缺货待入库,
// 53 WMS已接单, 54 获取电子面单, 58 档口锁定, 60 待分配, 61 排队中, 63 待补货, 65 待处理,
// 70 待发货, 73 爆款锁定, 74 预打包, 75 待拣货, 77 拣货中,PDA拣货后, 79 已拣货, 90 延时发货, 110已完成
private
String
status
=
"50,51,52,53,54,58,60,61,63,65,70,73,74,75,77,79,90,110"
;
private
Integer
statusType
=
3
;
private
Date
startTime
;
private
Date
endTime
;
// 同步类型:0 定时同步 1 手动同步
private
Integer
syncType
;
}
src/main/java/com/sfa/job/pojo/order/request/WdtSalesTradeQuery
Query
WithDetailVo.java
→
src/main/java/com/sfa/job/pojo/order/request/WdtSalesTradeQueryWithDetailVo.java
浏览文件 @
1b6f3a72
...
@@ -9,7 +9,7 @@ import com.taobao.api.internal.util.json.JSONWriter;
...
@@ -9,7 +9,7 @@ import com.taobao.api.internal.util.json.JSONWriter;
import
java.util.Map
;
import
java.util.Map
;
public
class
WdtSalesTradeQuery
Query
WithDetailVo
extends
BaseTaobaoRequest
<
WdtSalesTradeQueryQueryWithDetailDto
>
{
public
class
WdtSalesTradeQueryWithDetailVo
extends
BaseTaobaoRequest
<
WdtSalesTradeQueryQueryWithDetailDto
>
{
private
String
datetime
;
private
String
datetime
;
private
String
pager
;
private
String
pager
;
private
String
params
;
private
String
params
;
...
@@ -22,7 +22,7 @@ public class WdtSalesTradeQueryQueryWithDetailVo extends BaseTaobaoRequest<WdtSa
...
@@ -22,7 +22,7 @@ public class WdtSalesTradeQueryQueryWithDetailVo extends BaseTaobaoRequest<WdtSa
private
String
topApiVersion
=
"1.0"
;
private
String
topApiVersion
=
"1.0"
;
private
String
topApiFormat
;
private
String
topApiFormat
;
public
WdtSalesTradeQuery
Query
WithDetailVo
()
{
public
WdtSalesTradeQueryWithDetailVo
()
{
}
}
public
void
setDatetime
(
String
datetime
)
{
public
void
setDatetime
(
String
datetime
)
{
...
@@ -37,7 +37,7 @@ public class WdtSalesTradeQueryQueryWithDetailVo extends BaseTaobaoRequest<WdtSa
...
@@ -37,7 +37,7 @@ public class WdtSalesTradeQueryQueryWithDetailVo extends BaseTaobaoRequest<WdtSa
this
.
pager
=
pager
;
this
.
pager
=
pager
;
}
}
public
void
setPager
(
WdtSalesTradeQuery
Query
WithDetailVo
.
Pager
pager
)
{
public
void
setPager
(
WdtSalesTradeQueryWithDetailVo
.
Pager
pager
)
{
this
.
pager
=
(
new
JSONWriter
(
false
,
false
,
true
)).
write
(
pager
);
this
.
pager
=
(
new
JSONWriter
(
false
,
false
,
true
)).
write
(
pager
);
}
}
...
@@ -49,7 +49,7 @@ public class WdtSalesTradeQueryQueryWithDetailVo extends BaseTaobaoRequest<WdtSa
...
@@ -49,7 +49,7 @@ public class WdtSalesTradeQueryQueryWithDetailVo extends BaseTaobaoRequest<WdtSa
this
.
params
=
params
;
this
.
params
=
params
;
}
}
public
void
setParams
(
WdtSalesTradeQuery
Query
WithDetailVo
.
Params
params
)
{
public
void
setParams
(
WdtSalesTradeQueryWithDetailVo
.
Params
params
)
{
this
.
params
=
(
new
JSONWriter
(
false
,
false
,
true
)).
write
(
params
);
this
.
params
=
(
new
JSONWriter
(
false
,
false
,
true
)).
write
(
params
);
}
}
...
...
src/main/java/com/sfa/job/pojo/order/request/WdtStockoutSalesQueryWithDetailRequest.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
order
.
request
;
import
com.qimencloud.api.scene3ldsmu02o9.response.WdtWmsStockoutSalesQuerywithdetailResponse
;
import
com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto
;
import
com.taobao.api.ApiRuleException
;
import
com.taobao.api.BaseTaobaoRequest
;
import
com.taobao.api.internal.mapping.ApiField
;
import
com.taobao.api.internal.util.TaobaoHashMap
;
import
com.taobao.api.internal.util.json.JSONWriter
;
import
java.util.Map
;
public
class
WdtStockoutSalesQueryWithDetailRequest
extends
BaseTaobaoRequest
<
WdtWmsStockoutSalesQuerywithdetailResponse
>
{
private
String
datetime
;
private
String
pager
;
private
String
params
;
private
String
wdtAppkey
;
private
String
wdtSalt
;
private
String
wdtSign
;
private
String
topContentType
;
private
String
topResponseType
=
"qimen1"
;
private
String
topApiVersion
=
"1.0"
;
private
String
topApiFormat
;
public
WdtStockoutSalesQueryWithDetailRequest
()
{
}
public
void
setDatetime
(
String
datetime
)
{
this
.
datetime
=
datetime
;
}
public
String
getDatetime
()
{
return
this
.
datetime
;
}
public
void
setPager
(
String
pager
)
{
this
.
pager
=
pager
;
}
public
void
setPager
(
Pager
pager
)
{
this
.
pager
=
(
new
JSONWriter
(
false
,
false
,
true
)).
write
(
pager
);
}
public
String
getPager
()
{
return
this
.
pager
;
}
public
void
setParams
(
String
params
)
{
this
.
params
=
params
;
}
public
void
setParams
(
Params
params
)
{
this
.
params
=
(
new
JSONWriter
(
false
,
false
,
true
)).
write
(
params
);
}
public
String
getParams
()
{
return
this
.
params
;
}
public
void
setWdtAppkey
(
String
wdtAppkey
)
{
this
.
wdtAppkey
=
wdtAppkey
;
}
public
String
getWdtAppkey
()
{
return
this
.
wdtAppkey
;
}
public
void
setWdtSalt
(
String
wdtSalt
)
{
this
.
wdtSalt
=
wdtSalt
;
}
public
String
getWdtSalt
()
{
return
this
.
wdtSalt
;
}
public
void
setWdtSign
(
String
wdtSign
)
{
this
.
wdtSign
=
wdtSign
;
}
public
String
getWdtSign
()
{
return
this
.
wdtSign
;
}
public
String
getApiMethodName
()
{
return
"wdt.wms.stockout.sales.querywithdetail"
;
}
public
String
getTopContentType
()
{
return
this
.
topContentType
;
}
public
void
setTopContentType
(
String
topContentType
)
{
this
.
topContentType
=
topContentType
;
}
public
String
getTopResponseType
()
{
return
this
.
topResponseType
;
}
public
void
setTopResponseType
(
String
topResponseType
)
{
this
.
topResponseType
=
topResponseType
;
}
public
String
getTopApiVersion
()
{
return
this
.
topApiVersion
;
}
public
void
setTopApiVersion
(
String
topApiVersion
)
{
this
.
topApiVersion
=
topApiVersion
;
}
public
String
getTopApiFormat
()
{
return
this
.
topApiFormat
;
}
public
void
setTopApiFormat
(
String
topApiFormat
)
{
this
.
topApiFormat
=
topApiFormat
;
}
public
Map
<
String
,
String
>
getTextParams
()
{
TaobaoHashMap
txtParams
=
new
TaobaoHashMap
();
txtParams
.
put
(
"datetime"
,
this
.
datetime
);
txtParams
.
put
(
"pager"
,
this
.
pager
);
txtParams
.
put
(
"params"
,
this
.
params
);
txtParams
.
put
(
"wdt_appkey"
,
this
.
wdtAppkey
);
txtParams
.
put
(
"wdt_salt"
,
this
.
wdtSalt
);
txtParams
.
put
(
"wdt_sign"
,
this
.
wdtSign
);
if
(
this
.
udfParams
!=
null
)
{
txtParams
.
putAll
(
this
.
udfParams
);
}
return
txtParams
;
}
public
Class
<
WdtWmsStockoutSalesQuerywithdetailResponse
>
getResponseClass
()
{
return
WdtWmsStockoutSalesQuerywithdetailResponse
.
class
;
}
public
void
check
()
throws
ApiRuleException
{
}
public
static
class
Pager
{
@ApiField
(
"page_no"
)
private
Long
pageNo
;
@ApiField
(
"page_size"
)
private
Long
pageSize
;
public
Pager
()
{
}
public
Long
getPageNo
()
{
return
this
.
pageNo
;
}
public
void
setPageNo
(
Long
pageNo
)
{
this
.
pageNo
=
pageNo
;
}
public
Long
getPageSize
()
{
return
this
.
pageSize
;
}
public
void
setPageSize
(
Long
pageSize
)
{
this
.
pageSize
=
pageSize
;
}
}
public
static
class
Params
{
@ApiField
(
"start_time"
)
private
String
startTime
;
@ApiField
(
"end_time"
)
private
String
endime
;
/**
* 出库单状态: 默认值为0
* 1.已取消
* 2.在企业版状态中对应status=55(已确认),这里为 待分配~延时发货(此条件会返回延时发货状态的订单)
* 3.按照指定的status状态字段查询
* 0.延时发货&已完成
*/
@ApiField
(
"status"
)
private
String
status
;
/**
* 传status_type=3情况下,按照修改时间和status查询
* (status_type=3的情况下,若不传status字段,按照发货时间查询)
* 出库单状态(若多个状态则以“,”隔开):
* 5已取消、10待放回(拣货待放回), 小于该值的都是已取消的单子
* 50待审核、 51缺货、52缺货待入库、53 WMS已接单
* 54 获取电子面单、58 档口锁定、60 待分配
* 61 排队中、63 待补货、65 待处理、 70 待发货、73 爆款锁定、74 预打包
* 75 待拣货、77 拣货中,PDA拣货后、 79 已拣货
* 90 延时发货、110已完成
*/
@ApiField
(
"status_type"
)
private
Integer
statusType
=
0
;
public
void
setStatusType
(
Integer
statusType
)
{
this
.
statusType
=
statusType
;
}
public
Integer
getStatusType
()
{
return
statusType
;
}
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
@ApiField
(
"stockout_no"
)
private
String
stockoutNo
;
public
String
getStockoutNo
()
{
return
stockoutNo
;
}
public
void
setStockoutNo
(
String
stockoutNo
)
{
this
.
stockoutNo
=
stockoutNo
;
}
public
String
getStartTime
()
{
return
startTime
;
}
public
void
setStartTime
(
String
startTime
)
{
this
.
startTime
=
startTime
;
}
public
String
getEndime
()
{
return
endime
;
}
public
void
setEndime
(
String
endime
)
{
this
.
endime
=
endime
;
}
}
}
src/main/java/com/sfa/job/pojo/order/response/WdtQimenStockoutBodyDto.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
order
.
response
;
import
lombok.Data
;
@Data
public
class
WdtQimenStockoutBodyDto
{
private
WdtQimenStockoutResponseDto
response
;
private
String
message
;
private
Integer
status
;
}
\ No newline at end of file
src/main/java/com/sfa/job/pojo/order/response/WdtQimenStockoutDataDto.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
order
.
response
;
import
lombok.Data
;
import
java.util.List
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrder
;
@Data
public
class
WdtQimenStockoutDataDto
{
private
List
<
WdtQimenStockoutOrder
>
order
;
private
Integer
totalCount
;
}
\ No newline at end of file
src/main/java/com/sfa/job/pojo/order/response/WdtQimenStockoutResponseDto.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
order
.
response
;
import
lombok.Data
;
@Data
public
class
WdtQimenStockoutResponseDto
{
private
WdtQimenStockoutDataDto
data
;
private
String
message
;
private
Integer
status
;
}
\ No newline at end of file
src/main/java/com/sfa/job/pojo/order/response/WdtStockoutSalesQueryWithDetailDto.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
order
.
response
;
import
com.alibaba.fastjson.JSONObject
;
import
com.taobao.api.TaobaoResponse
;
import
com.taobao.api.internal.mapping.ApiField
;
public
class
WdtStockoutSalesQueryWithDetailDto
extends
TaobaoResponse
{
private
static
final
long
serialVersionUID
=
4632382792982436957L
;
@ApiField
(
"data"
)
private
Object
data
;
@ApiField
(
"message"
)
private
String
message
;
@ApiField
(
"status"
)
private
Long
status
;
public
WdtStockoutSalesQueryWithDetailDto
()
{
}
public
void
setData
(
Object
data
)
{
this
.
data
=
JSONObject
.
toJSON
(
data
);
}
public
Object
getData
()
{
return
this
.
data
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
String
getMessage
()
{
return
this
.
message
;
}
public
void
setStatus
(
Long
status
)
{
this
.
status
=
status
;
}
public
Long
getStatus
()
{
return
this
.
status
;
}
}
src/main/java/com/sfa/job/pojo/qince/request/QinceAllDealerQueryRequest.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
qince
.
request
;
import
lombok.Data
;
@Data
public
class
QinceAllDealerQueryRequest
{
private
Integer
pageSize
=
1000
;
}
src/main/java/com/sfa/job/pojo/qince/request/QinceDealerQueryRequest.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
qince
.
request
;
import
lombok.Data
;
@Data
public
class
QinceDealerQueryRequest
{
private
Integer
page
=
1
;
private
Integer
rows
=
1000
;
private
String
dealer_code
;
}
src/main/java/com/sfa/job/pojo/response/SyncOrderDetailDto.java
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
pojo
.
response
;
package
com
.
sfa
.
job
.
pojo
.
response
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
io.swagger.v3.oas.models.security.SecurityScheme.In
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.sfa.common.core.utils.DateUtils
;
import
com.sfa.common.core.utils.DateUtils
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -31,22 +33,22 @@ public class SyncOrderDetailDto {
...
@@ -31,22 +33,22 @@ public class SyncOrderDetailDto {
private
Integer
syncType
;
private
Integer
syncType
;
private
String
batchNo
;
private
String
batchNo
;
private
Integer
pageNo
;
private
Integer
pageNo
;
private
Integer
totalCount
;
/**
/**
* 错误信息
* 错误信息
*/
*/
private
String
message
;
private
String
message
;
private
Integer
code
=
200
;
private
Integer
code
=
200
;
private
Integer
pageSize
;
private
Integer
totalPage
;
public
SyncOrderDetailDto
setDetailInfo
(
String
method
,
String
remark
,
public
SyncOrderDetailDto
setDetailInfo
(
String
method
,
String
remark
,
int
syncType
,
int
size
,
int
mergerListSize
,
Integer
totalCount
,
String
batchNo
,
Date
endTime
,
Date
startTime
)
{
Integer
syncType
,
Integer
totalOrderCount
,
Integer
orderDetailCount
,
Integer
pageNo
,
String
batchNo
,
// 接口测试使用
Date
endTime
,
Date
startTime
)
{
this
.
setOrderCount
(
size
);
this
.
setOrderCount
(
totalOrderCount
);
this
.
setOrderDetailCount
(
mergerListSize
);
this
.
setOrderDetailCount
(
orderDetailCount
);
this
.
setStartTime
(
startTime
);
this
.
setStartTime
(
startTime
);
this
.
setEndTime
(
endTime
);
this
.
setEndTime
(
endTime
);
this
.
setLatestTime
(
endTime
);
this
.
setLatestTime
(
endTime
);
this
.
setTotalCount
(
totalCount
);
this
.
setBatchNo
(
batchNo
);
this
.
setBatchNo
(
batchNo
);
this
.
setMethod
(
method
);
this
.
setMethod
(
method
);
this
.
setSyncType
(
syncType
);
this
.
setSyncType
(
syncType
);
...
@@ -58,13 +60,17 @@ public class SyncOrderDetailDto {
...
@@ -58,13 +60,17 @@ public class SyncOrderDetailDto {
Date
currentLatest
=
DateUtils
.
addHours
(
new
Date
(),
-
2
);
Date
currentLatest
=
DateUtils
.
addHours
(
new
Date
(),
-
2
);
if
(
currentLatest
.
compareTo
(
this
.
getEndTime
())
<
0
)
{
if
(
currentLatest
.
compareTo
(
this
.
getEndTime
())
<
0
)
{
this
.
setTotalCount
(
0
);
this
.
setTotalCount
(
0
);
String
message
=
String
.
format
(
"结束时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
this
.
getEndTime
()),
DateUtil
.
formatDateTime
(
currentLatest
));
String
message
=
String
.
format
(
"结束时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
this
.
getEndTime
()),
DateUtil
.
formatDateTime
(
currentLatest
));
this
.
setMessage
(
message
);
this
.
setMessage
(
message
);
return
false
;
return
false
;
}
}
return
true
;
return
true
;
}
}
private
void
setTotalCount
(
Integer
orderCount
)
{
this
.
orderCount
=
orderCount
;
}
/**
/**
* 初始化时间范围
* 初始化时间范围
...
@@ -92,4 +98,17 @@ public class SyncOrderDetailDto {
...
@@ -92,4 +98,17 @@ public class SyncOrderDetailDto {
this
.
setLatestTime
(
latestTime
);
this
.
setLatestTime
(
latestTime
);
}
}
public
void
setDetailCount
(
Integer
totalDetailCount
)
{
this
.
orderDetailCount
=
totalDetailCount
;
}
public
void
setTotalPage
(
Integer
totalPage
)
{
this
.
totalPage
=
totalPage
;
}
public
void
setPageSize
(
Integer
pageSize
)
{
this
.
pageSize
=
pageSize
;
}
}
}
src/main/java/com/sfa/job/service/order/IWdtQimenStockoutOrderSyncService.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
service
.
order
;
import
java.util.Date
;
import
com.sfa.job.pojo.order.request.SyncStockoutRequest
;
import
com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
/**
* 销售出库单同步服务
*/
public
interface
IWdtQimenStockoutOrderSyncService
{
/**
* 同步销售出库单
* @param startTime 开始时间
* @param endTime 结束时间
* @param shopNo 店铺编号
* @return 同步结果
*/
SyncOrderDetailDto
syncStockoutOrder
(
SyncStockoutRequest
syncStockoutRequest
,
Integer
pageSize
);
/**
* 同步单个销售出库单
* @param stockoutNo 出库单编号
* @return 同步结果
*/
WdtStockoutSalesQueryWithDetailDto
syncSingleStockoutOrder
(
String
stockoutNo
);
}
src/main/java/com/sfa/job/service/order/impl/FinanceOrderSyncServiceImpl.java
浏览文件 @
1b6f3a72
...
@@ -408,7 +408,7 @@ public class FinanceOrderSyncServiceImpl implements IFinanceOrderSyncService {
...
@@ -408,7 +408,7 @@ public class FinanceOrderSyncServiceImpl implements IFinanceOrderSyncService {
private
boolean
validateStartTime
(
SyncOrderDetailDto
detailDto
)
{
private
boolean
validateStartTime
(
SyncOrderDetailDto
detailDto
)
{
Date
currentLatest
=
DateUtils
.
addHours
(
new
Date
(),
-
2
);
Date
currentLatest
=
DateUtils
.
addHours
(
new
Date
(),
-
2
);
if
(
currentLatest
.
compareTo
(
detailDto
.
getEndTime
())
<
0
)
{
if
(
currentLatest
.
compareTo
(
detailDto
.
getEndTime
())
<
0
)
{
detailDto
.
set
Total
Count
(
0
);
detailDto
.
set
Order
Count
(
0
);
String
message
=
String
.
format
(
"结束时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
detailDto
.
getEndTime
()),
DateUtil
.
formatDateTime
(
currentLatest
));
String
message
=
String
.
format
(
"结束时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
detailDto
.
getEndTime
()),
DateUtil
.
formatDateTime
(
currentLatest
));
detailDto
.
setMessage
(
message
);
detailDto
.
setMessage
(
message
);
log
.
warn
(
message
);
log
.
warn
(
message
);
...
...
src/main/java/com/sfa/job/service/order/impl/WdtQimenOrderPayTimeSyncServiceImpl.java
浏览文件 @
1b6f3a72
...
@@ -5,7 +5,6 @@ import cn.hutool.core.date.LocalDateTimeUtil;
...
@@ -5,7 +5,6 @@ import cn.hutool.core.date.LocalDateTimeUtil;
import
cn.hutool.core.util.URLUtil
;
import
cn.hutool.core.util.URLUtil
;
import
cn.hutool.http.HttpStatus
;
import
cn.hutool.http.HttpStatus
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.qimencloud.api.DefaultQimenCloudClient
;
import
com.qimencloud.api.DefaultQimenCloudClient
;
import
com.qimencloud.api.QimenCloudClient
;
import
com.qimencloud.api.QimenCloudClient
;
import
com.sfa.common.core.exception.ServiceException
;
import
com.sfa.common.core.exception.ServiceException
;
...
@@ -15,7 +14,7 @@ import com.sfa.job.domain.order.dao.*;
...
@@ -15,7 +14,7 @@ import com.sfa.job.domain.order.dao.*;
import
com.sfa.job.domain.order.entity.FinanceBaseProduct
;
import
com.sfa.job.domain.order.entity.FinanceBaseProduct
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderDetailPayTime
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderDetailPayTime
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderPayTime
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderPayTime
;
import
com.sfa.job.pojo.order.request.WdtSalesTradeQuery
Query
WithDetailVo
;
import
com.sfa.job.pojo.order.request.WdtSalesTradeQueryWithDetailVo
;
import
com.sfa.job.pojo.order.response.*
;
import
com.sfa.job.pojo.order.response.*
;
import
com.sfa.job.pojo.response.CollectOrderLogDto
;
import
com.sfa.job.pojo.response.CollectOrderLogDto
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
...
@@ -62,7 +61,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
...
@@ -62,7 +61,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
// @Transactional(rollbackFor = Exception.class)
// @Transactional(rollbackFor = Exception.class)
@Override
@Override
public
SyncOrderDetailDto
syncWdtQimenOrderByTradeNo
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
String
tradeNo
,
Long
pageNo
,
Long
pageSize
)
{
public
SyncOrderDetailDto
syncWdtQimenOrderByTradeNo
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
String
tradeNo
,
Long
pageNo
,
Long
pageSize
)
{
WdtSalesTradeQuery
QueryWithDetailVo
request
=
new
WdtSalesTradeQuery
QueryWithDetailVo
();
WdtSalesTradeQuery
WithDetailVo
request
=
new
WdtSalesTrade
QueryWithDetailVo
();
String
method
=
request
.
getApiMethodName
();
String
method
=
request
.
getApiMethodName
();
String
serverUrl
=
wdtQimenConfig
.
getServerUrl
();
String
serverUrl
=
wdtQimenConfig
.
getServerUrl
();
String
appKey
=
wdtQimenConfig
.
getAppKey
();
String
appKey
=
wdtQimenConfig
.
getAppKey
();
...
@@ -82,7 +81,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
...
@@ -82,7 +81,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
// 查询只到数据查询完毕
// 查询只到数据查询完毕
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
WdtSalesTradeQuery
QueryWithDetailVo
.
Params
params
=
new
WdtSalesTradeQuery
QueryWithDetailVo
.
Params
();
WdtSalesTradeQuery
WithDetailVo
.
Params
params
=
new
WdtSalesTrade
QueryWithDetailVo
.
Params
();
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
// 旺店通的页码从0开始,奇门从1开始 时间类型 1:修改时间 2:付款时间 默认1
// 旺店通的页码从0开始,奇门从1开始 时间类型 1:修改时间 2:付款时间 默认1
...
@@ -90,7 +89,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
...
@@ -90,7 +89,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
params
.
setTradeNo
(
tradeNo
);
params
.
setTradeNo
(
tradeNo
);
request
.
setParams
(
params
);
request
.
setParams
(
params
);
WdtSalesTradeQuery
QueryWithDetailVo
.
Pager
pager
=
new
WdtSalesTradeQuery
QueryWithDetailVo
.
Pager
();
WdtSalesTradeQuery
WithDetailVo
.
Pager
pager
=
new
WdtSalesTrade
QueryWithDetailVo
.
Pager
();
pager
.
setPageNo
(
pageNo
);
pager
.
setPageNo
(
pageNo
);
pager
.
setPageSize
(
pageSize
);
pager
.
setPageSize
(
pageSize
);
request
.
setPager
(
pager
);
request
.
setPager
(
pager
);
...
@@ -135,7 +134,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
...
@@ -135,7 +134,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
public
SyncOrderDetailDto
syncWdtQimenOrder
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
Long
pageSize
)
{
public
SyncOrderDetailDto
syncWdtQimenOrder
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
Long
pageSize
)
{
SyncOrderDetailDto
detailDto
=
new
SyncOrderDetailDto
();
SyncOrderDetailDto
detailDto
=
new
SyncOrderDetailDto
();
String
batchNo
=
syncType
+
DateUtils
.
dateTimeNow
()
+
Thread
.
currentThread
().
getId
();
String
batchNo
=
syncType
+
DateUtils
.
dateTimeNow
()
+
Thread
.
currentThread
().
getId
();
WdtSalesTradeQuery
QueryWithDetailVo
request
=
new
WdtSalesTradeQuery
QueryWithDetailVo
();
WdtSalesTradeQuery
WithDetailVo
request
=
new
WdtSalesTrade
QueryWithDetailVo
();
String
method
=
request
.
getApiMethodName
();
String
method
=
request
.
getApiMethodName
();
List
<
WdtQimenOrderPayTime
>
orderResult
=
new
ArrayList
<>();
List
<
WdtQimenOrderPayTime
>
orderResult
=
new
ArrayList
<>();
try
{
try
{
...
@@ -181,14 +180,14 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
...
@@ -181,14 +180,14 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
do
{
do
{
// 查询只到数据查询完毕
// 查询只到数据查询完毕
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
WdtSalesTradeQuery
QueryWithDetailVo
.
Params
params
=
new
WdtSalesTradeQuery
QueryWithDetailVo
.
Params
();
WdtSalesTradeQuery
WithDetailVo
.
Params
params
=
new
WdtSalesTrade
QueryWithDetailVo
.
Params
();
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
// 旺店通的页码从0开始,奇门从1开始 时间类型 1:修改时间 2:付款时间 默认1
// 旺店通的页码从0开始,奇门从1开始 时间类型 1:修改时间 2:付款时间 默认1
params
.
setTimeType
(
2
);
params
.
setTimeType
(
2
);
request
.
setParams
(
params
);
request
.
setParams
(
params
);
WdtSalesTradeQuery
QueryWithDetailVo
.
Pager
pager
=
new
WdtSalesTradeQuery
QueryWithDetailVo
.
Pager
();
WdtSalesTradeQuery
WithDetailVo
.
Pager
pager
=
new
WdtSalesTrade
QueryWithDetailVo
.
Pager
();
pager
.
setPageNo
(
pageNo
);
pager
.
setPageNo
(
pageNo
);
pager
.
setPageSize
(
pageSize
);
pager
.
setPageSize
(
pageSize
);
request
.
setPager
(
pager
);
request
.
setPager
(
pager
);
...
...
src/main/java/com/sfa/job/service/order/impl/WdtQimenOrderSyncServiceImpl.java
浏览文件 @
1b6f3a72
...
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
...
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import
cn.hutool.core.util.URLUtil
;
import
cn.hutool.core.util.URLUtil
;
import
cn.hutool.http.HttpStatus
;
import
cn.hutool.http.HttpStatus
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.TypeReference
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.qimencloud.api.DefaultQimenCloudClient
;
import
com.qimencloud.api.DefaultQimenCloudClient
;
import
com.qimencloud.api.QimenCloudClient
;
import
com.qimencloud.api.QimenCloudClient
;
...
@@ -14,7 +15,7 @@ import com.sfa.job.domain.order.dao.*;
...
@@ -14,7 +15,7 @@ import com.sfa.job.domain.order.dao.*;
import
com.sfa.job.domain.order.entity.FinanceBaseProduct
;
import
com.sfa.job.domain.order.entity.FinanceBaseProduct
;
import
com.sfa.job.domain.order.entity.WdtQimenOrder
;
import
com.sfa.job.domain.order.entity.WdtQimenOrder
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderDetail
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderDetail
;
import
com.sfa.job.pojo.order.request.WdtSalesTradeQuery
Query
WithDetailVo
;
import
com.sfa.job.pojo.order.request.WdtSalesTradeQueryWithDetailVo
;
import
com.sfa.job.pojo.order.response.WdtQimenBodyDto
;
import
com.sfa.job.pojo.order.response.WdtQimenBodyDto
;
import
com.sfa.job.pojo.order.response.WdtQimenDataDto
;
import
com.sfa.job.pojo.order.response.WdtQimenDataDto
;
import
com.sfa.job.pojo.order.response.WdtQimenResponseDto
;
import
com.sfa.job.pojo.order.response.WdtQimenResponseDto
;
...
@@ -32,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -32,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
/**
* 旺店通订单Service业务层处理
* 旺店通订单Service业务层处理
...
@@ -65,7 +67,7 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
...
@@ -65,7 +67,7 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
public
SyncOrderDetailDto
syncWdtQimenOrderByTradeNo
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
String
tradeNo
,
Long
pageNo
,
Long
pageSize
)
{
public
SyncOrderDetailDto
syncWdtQimenOrderByTradeNo
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
String
tradeNo
,
Long
pageNo
,
Long
pageSize
)
{
WdtSalesTradeQuery
QueryWithDetailVo
request
=
new
WdtSalesTradeQuery
QueryWithDetailVo
();
WdtSalesTradeQuery
WithDetailVo
request
=
new
WdtSalesTrade
QueryWithDetailVo
();
String
method
=
request
.
getApiMethodName
();
String
method
=
request
.
getApiMethodName
();
String
serverUrl
=
wdtQimenConfig
.
getServerUrl
();
String
serverUrl
=
wdtQimenConfig
.
getServerUrl
();
String
appKey
=
wdtQimenConfig
.
getAppKey
();
String
appKey
=
wdtQimenConfig
.
getAppKey
();
...
@@ -80,12 +82,10 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
...
@@ -80,12 +82,10 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
String
wdtSid
=
wdtQimenConfig
.
getWdtSid
();
String
wdtSid
=
wdtQimenConfig
.
getWdtSid
();
Long
totalPage
=
1L
;
Integer
totalCount
=
1
;
// 查询只到数据查询完毕
// 查询只到数据查询完毕
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
WdtSalesTradeQuery
QueryWithDetailVo
.
Params
params
=
new
WdtSalesTradeQuery
QueryWithDetailVo
.
Params
();
WdtSalesTradeQuery
WithDetailVo
.
Params
params
=
new
WdtSalesTrade
QueryWithDetailVo
.
Params
();
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
// 旺店通的页码从0开始,奇门从1开始 时间类型 1:修改时间 2:付款时间 默认1
// 旺店通的页码从0开始,奇门从1开始 时间类型 1:修改时间 2:付款时间 默认1
...
@@ -93,7 +93,7 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
...
@@ -93,7 +93,7 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
params
.
setTradeNo
(
tradeNo
);
params
.
setTradeNo
(
tradeNo
);
request
.
setParams
(
params
);
request
.
setParams
(
params
);
WdtSalesTradeQuery
QueryWithDetailVo
.
Pager
pager
=
new
WdtSalesTradeQuery
QueryWithDetailVo
.
Pager
();
WdtSalesTradeQuery
WithDetailVo
.
Pager
pager
=
new
WdtSalesTrade
QueryWithDetailVo
.
Pager
();
pager
.
setPageNo
(
pageNo
);
pager
.
setPageNo
(
pageNo
);
pager
.
setPageSize
(
pageSize
);
pager
.
setPageSize
(
pageSize
);
request
.
setPager
(
pager
);
request
.
setPager
(
pager
);
...
@@ -112,6 +112,7 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
...
@@ -112,6 +112,7 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
response
=
client
.
execute
(
request
);
response
=
client
.
execute
(
request
);
log
.
info
(
response
.
getBody
());
log
.
info
(
response
.
getBody
());
}
catch
(
ApiException
e
)
{
}
catch
(
ApiException
e
)
{
log
.
error
(
"奇门订单加载数据异常:"
+
e
.
getMessage
()
+
URLUtil
.
decode
(
response
.
getRequestUrl
()));
throw
new
RuntimeException
(
e
);
throw
new
RuntimeException
(
e
);
}
}
if
(
ObjectUtils
.
isNotEmpty
(
response
)
&&
response
.
getFlag
().
equals
(
"failure"
))
{
if
(
ObjectUtils
.
isNotEmpty
(
response
)
&&
response
.
getFlag
().
equals
(
"failure"
))
{
...
@@ -138,7 +139,7 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
...
@@ -138,7 +139,7 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
public
SyncOrderDetailDto
syncWdtQimenOrder
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
Long
pageSize
)
{
public
SyncOrderDetailDto
syncWdtQimenOrder
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
Long
pageSize
)
{
SyncOrderDetailDto
detailDto
=
new
SyncOrderDetailDto
();
SyncOrderDetailDto
detailDto
=
new
SyncOrderDetailDto
();
String
batchNo
=
syncType
+
DateUtils
.
dateTimeNow
()
+
Thread
.
currentThread
().
getId
();
String
batchNo
=
syncType
+
DateUtils
.
dateTimeNow
()
+
Thread
.
currentThread
().
getId
();
WdtSalesTradeQuery
QueryWithDetailVo
request
=
new
WdtSalesTradeQuery
QueryWithDetailVo
();
WdtSalesTradeQuery
WithDetailVo
request
=
new
WdtSalesTrade
QueryWithDetailVo
();
String
method
=
request
.
getApiMethodName
();
String
method
=
request
.
getApiMethodName
();
List
<
WdtQimenOrder
>
orderResult
=
new
ArrayList
<>();
List
<
WdtQimenOrder
>
orderResult
=
new
ArrayList
<>();
try
{
try
{
...
@@ -184,14 +185,14 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
...
@@ -184,14 +185,14 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
do
{
do
{
// 查询只到数据查询完毕
// 查询只到数据查询完毕
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
WdtSalesTradeQuery
QueryWithDetailVo
.
Params
params
=
new
WdtSalesTradeQuery
QueryWithDetailVo
.
Params
();
WdtSalesTradeQuery
WithDetailVo
.
Params
params
=
new
WdtSalesTrade
QueryWithDetailVo
.
Params
();
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
// 旺店通的页码从0开始,奇门从1开始
// 旺店通的页码从0开始,奇门从1开始
params
.
setTimeType
(
1
);
params
.
setTimeType
(
1
);
request
.
setParams
(
params
);
request
.
setParams
(
params
);
WdtSalesTradeQuery
QueryWithDetailVo
.
Pager
pager
=
new
WdtSalesTradeQuery
QueryWithDetailVo
.
Pager
();
WdtSalesTradeQuery
WithDetailVo
.
Pager
pager
=
new
WdtSalesTrade
QueryWithDetailVo
.
Pager
();
pager
.
setPageNo
(
pageNo
);
pager
.
setPageNo
(
pageNo
);
pager
.
setPageSize
(
pageSize
);
pager
.
setPageSize
(
pageSize
);
request
.
setPager
(
pager
);
request
.
setPager
(
pager
);
...
@@ -223,10 +224,15 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
...
@@ -223,10 +224,15 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
if
(
ObjectUtils
.
isEmpty
(
orderSubResult
))
{
if
(
ObjectUtils
.
isEmpty
(
orderSubResult
))
{
log
.
warn
(
"当前查询没有数据,奇门加载数据异常:"
+
response
.
getMessage
()
+
response
.
getSubMessage
()
+
URLUtil
.
decode
(
response
.
getRequestUrl
()));
log
.
warn
(
"当前查询没有数据,奇门加载数据异常:"
+
response
.
getMessage
()
+
response
.
getSubMessage
()
+
URLUtil
.
decode
(
response
.
getRequestUrl
()));
// throw new ServiceException("旺店通没有查询到订单数据");
// throw new ServiceException("旺店通没有查询到订单数据");
}
else
{
// 将当前页的订单添加到总结果列表中
List
<
WdtQimenOrder
>
typedOrderSubResult
=
orderSubResult
.
stream
()
.
map
(
obj
->
obj
)
.
collect
(
Collectors
.
toList
());
orderResult
.
addAll
(
typedOrderSubResult
);
}
}
orderResult
.
addAll
(
orderSubResult
);
pageNo
++;
pageNo
++;
}
while
(
pageNo
<=
totalPage
);
}
while
(
pageNo
<=
(
totalPage
-
1
)
);
// 基础数据 直播间分类数据+成本、规格、口味
// 基础数据 直播间分类数据+成本、规格、口味
...
@@ -342,4 +348,4 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
...
@@ -342,4 +348,4 @@ public class WdtQimenOrderSyncServiceImpl implements IWdtQimenOrderSyncService {
}
}
}
}
\ No newline at end of file
src/main/java/com/sfa/job/service/order/impl/WdtQimenStockoutOrderSyncServiceImpl.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
service
.
order
.
impl
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.qimencloud.api.DefaultQimenCloudClient
;
import
com.qimencloud.api.QimenCloudClient
;
import
com.qimencloud.api.scene3ldsmu02o9.response.WdtWmsStockoutSalesQuerywithdetailResponse
;
import
com.sfa.common.core.exception.ServiceException
;
import
com.sfa.common.core.utils.DateUtils
;
import
com.sfa.job.config.WdtQimenConfig
;
import
com.sfa.job.domain.order.dao.WdtQimenStockoutOrderDao
;
import
com.sfa.job.domain.order.dao.WdtQimenStockoutOrderDetailDao
;
import
com.sfa.job.domain.order.dao.WdtQimenStockoutPositionDetailDao
;
import
com.sfa.job.domain.order.dao.WdtQimenStockoutLogisticsDetailDao
;
import
com.sfa.job.domain.order.dao.CollectOrderLogDao
;
import
com.sfa.job.domain.order.dao.WdtQimenStockOutPickPositionDetailDao
;
import
com.sfa.job.domain.order.dao.WdtQimenStockoutGovSubsidyDao
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrder
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutOrderDetail
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutPositionDetail
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutLogisticsDetail
;
import
com.sfa.job.domain.order.entity.WdtQimenStockOutPickPositionDetail
;
import
com.sfa.job.domain.order.entity.WdtQimenStockoutGovSubsidy
;
import
com.sfa.job.domain.order.entity.FinanceBaseProduct
;
import
com.sfa.job.pojo.order.request.SyncStockoutRequest
;
import
com.sfa.job.pojo.order.request.WdtStockoutSalesQueryWithDetailRequest
;
import
com.sfa.job.pojo.order.response.WdtQimenStockoutBodyDto
;
import
com.sfa.job.pojo.order.response.WdtQimenStockoutDataDto
;
import
com.sfa.job.pojo.order.response.WdtQimenStockoutResponseDto
;
import
com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto
;
import
com.sfa.job.pojo.response.CollectOrderLogDto
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
import
com.sfa.job.service.order.IWdtQimenStockoutOrderSyncService
;
import
com.sfa.job.enums.WdtPlatformMappingEnum
;
import
com.sfa.job.util.WdtQimenUtil
;
import
com.sfa.job.domain.order.dao.FinianceBaseProductDao
;
import
com.taobao.api.ApiException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
* 销售出库单同步服务实现
*/
@DS
(
"bi"
)
@Slf4j
@Service
public
class
WdtQimenStockoutOrderSyncServiceImpl
implements
IWdtQimenStockoutOrderSyncService
{
@Autowired
private
WdtQimenStockoutOrderDao
stockoutOrderDao
;
@Autowired
private
WdtQimenStockoutOrderDetailDao
stockoutOrderDetailDao
;
@Autowired
private
WdtQimenStockoutPositionDetailDao
stockoutPositionDetailDao
;
@Autowired
private
WdtQimenStockoutLogisticsDetailDao
stockoutLogisticsDetailDao
;
@Autowired
private
WdtQimenStockOutPickPositionDetailDao
stockoutPickPositionDetailDao
;
@Autowired
private
WdtQimenStockoutGovSubsidyDao
stockoutGovSubsidyDao
;
@Autowired
private
WdtQimenConfig
wdtQimenConfig
;
@Autowired
CollectOrderLogDao
orderLogInfoDao
;
@Autowired
FinianceBaseProductDao
baseProductDao
;
// @Transactional(rollbackFor = Exception.class)
@Override
public
SyncOrderDetailDto
syncStockoutOrder
(
SyncStockoutRequest
syncStockoutRequest
,
Integer
pageSize
)
{
WdtStockoutSalesQueryWithDetailRequest
request
=
new
WdtStockoutSalesQueryWithDetailRequest
();
String
serverUrl
=
wdtQimenConfig
.
getServerUrl
();
String
appKey
=
wdtQimenConfig
.
getAppKey
();
String
appSecret
=
wdtQimenConfig
.
getAppSecret
();
String
wdtAppSecret
=
wdtQimenConfig
.
getWdtAppSecret
();
String
[]
secretParts
=
wdtAppSecret
.
split
(
":"
);
if
(
secretParts
.
length
!=
2
)
{
throw
new
ServiceException
(
"wdtAppSecret配置格式错误,应为 'secret:salt' 格式"
);
}
String
wdtSecret
=
secretParts
[
0
];
String
wdtSalt
=
secretParts
[
1
];
String
wdtAppKey
=
wdtQimenConfig
.
getWdtAppKey
();
String
targetAppSecret
=
wdtQimenConfig
.
getTargetAppSecret
();
String
wdtSid
=
wdtQimenConfig
.
getWdtSid
();
//分页编号,分页查询必传,标准接口page_no从0开始
Integer
wdtPageNo
=
1
;
// 分页大小,分页查询必传
Integer
wdtPageSize
=
pageSize
;
Integer
wdtTotalPage
=
1
;
Integer
totalCount
=
1
;
Integer
totalDetailCount
=
0
;
SyncOrderDetailDto
detailDto
=
new
SyncOrderDetailDto
();
String
batchNo
=
1
+
DateUtils
.
dateTimeNow
()
+
Thread
.
currentThread
().
getId
();
String
method
=
request
.
getApiMethodName
();
Date
startTime
=
syncStockoutRequest
.
getStartTime
();
Date
endTime
=
syncStockoutRequest
.
getEndTime
();
Integer
syncType
=
syncStockoutRequest
.
getSyncType
();
Integer
statusType
=
syncStockoutRequest
.
getStatusType
();
String
status
=
syncStockoutRequest
.
getStatus
();
try
{
// 初始化 detailDto 基本信息
detailDto
.
setBatchNo
(
batchNo
);
detailDto
.
setMethod
(
method
);
detailDto
.
setSyncType
(
syncType
);
detailDto
.
setStartTime
(
startTime
);
detailDto
.
setEndTime
(
endTime
);
// 查询最新的同步记录
CollectOrderLogDto
collectOrderLog
=
orderLogInfoDao
.
selectOrderSyncLatest
(
syncType
,
method
);
// 调用新方法设置时间范围
detailDto
.
setupTimeRange
(
60
,
collectOrderLog
);
startTime
=
detailDto
.
getStartTime
();
endTime
=
detailDto
.
getEndTime
();
// 验证时间范围
Date
currentLatest
=
DateUtils
.
addHours
(
new
Date
(),
-
2
);
if
(
currentLatest
.
compareTo
(
startTime
)
<
0
)
{
detailDto
.
setMessage
(
String
.
format
(
"开始时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
currentLatest
)));
log
.
debug
(
String
.
format
(
"开始时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
currentLatest
)));
return
detailDto
;
}
if
(!
detailDto
.
validateStartTime
())
{
return
detailDto
;
}
log
.
info
(
"查询出库单参数:开始时间{},结束时间{}"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
endTime
));
do
{
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
WdtStockoutSalesQueryWithDetailRequest
.
Params
params
=
new
WdtStockoutSalesQueryWithDetailRequest
.
Params
();
params
.
setStartTime
(
DateUtil
.
formatDateTime
(
startTime
));
params
.
setEndime
(
DateUtil
.
formatDateTime
(
endTime
));
if
(
ObjectUtils
.
isNotEmpty
(
statusType
))
{
params
.
setStatusType
(
3
);
}
if
(
ObjectUtils
.
isNotEmpty
(
status
))
{
params
.
setStatus
(
status
);
}
request
.
setParams
(
params
);
WdtStockoutSalesQueryWithDetailRequest
.
Pager
pager
=
new
WdtStockoutSalesQueryWithDetailRequest
.
Pager
();
pager
.
setPageNo
(
Long
.
valueOf
(
wdtPageNo
));
pager
.
setPageSize
(
Long
.
valueOf
(
wdtPageSize
));
request
.
setPager
(
pager
);
String
dateTime
=
DateUtil
.
formatDateTime
(
new
Date
());
request
.
setDatetime
(
dateTime
);
request
.
putOtherTextParam
(
"wdt3_customer_id"
,
wdtSid
);
request
.
setTargetAppKey
(
targetAppSecret
);
request
.
setWdtAppkey
(
wdtAppKey
);
request
.
setWdtSalt
(
wdtSalt
);
String
wdtSign
=
WdtQimenUtil
.
getQimenCustomWdtSign
(
request
,
wdtSecret
);
request
.
setWdtSign
(
wdtSign
);
log
.
debug
(
"请求参数 - 页码: {}, 页大小: {}"
,
wdtPageNo
,
pageSize
);
long
startTimeQuery
=
System
.
currentTimeMillis
();
WdtWmsStockoutSalesQuerywithdetailResponse
response
=
client
.
execute
(
request
);
long
duration
=
System
.
currentTimeMillis
()
-
startTimeQuery
;
if
(
ObjectUtils
.
isNotEmpty
(
response
)
&&
response
.
getFlag
().
equals
(
"failure"
))
{
log
.
error
(
"奇门加载数据异常 - 消息: {}, 子消息: {}, 耗时: {}ms"
,
response
.
getMessage
(),
response
.
getSubMessage
(),
duration
);
throw
new
ServiceException
(
"奇门加载数据异常:"
+
response
.
getMessage
()
+
response
.
getSubMessage
());
}
log
.
debug
(
"奇门API请求成功,耗时: {}ms"
,
duration
);
String
body
=
response
.
getBody
();
WdtQimenStockoutBodyDto
wdtQimenBodyDto
=
JSONUtil
.
toBean
(
body
,
WdtQimenStockoutBodyDto
.
class
);
WdtQimenStockoutResponseDto
wdtQimenResponseDto
=
wdtQimenBodyDto
.
getResponse
();
WdtQimenStockoutDataDto
wdtQimenDataDto
=
wdtQimenResponseDto
.
getData
();
totalCount
=
wdtQimenDataDto
.
getTotalCount
();
wdtTotalPage
=
totalCount
/
wdtPageSize
+
1
;
// 基础数据 成本数据
Map
<
String
,
FinanceBaseProduct
>
baseProductMap
=
baseProductDao
.
selectBaseProduct
();
List
<
WdtQimenStockoutOrder
>
stockoutOrderSubList
=
wdtQimenDataDto
.
getOrder
();
List
<
WdtQimenStockoutOrder
>
pageOrderList
=
new
ArrayList
<>();
List
<
WdtQimenStockoutOrderDetail
>
pageDetailList
=
new
ArrayList
<>();
List
<
WdtQimenStockoutPositionDetail
>
pagePositionDetailList
=
new
ArrayList
<>();
List
<
WdtQimenStockOutPickPositionDetail
>
pagePickPositionDetailList
=
new
ArrayList
<>();
List
<
WdtQimenStockoutLogisticsDetail
>
pageLogisticsDetailList
=
new
ArrayList
<>();
List
<
WdtQimenStockoutGovSubsidy
>
pageGovSubsidyList
=
new
ArrayList
<>();
if
(
ObjectUtils
.
isNotEmpty
(
stockoutOrderSubList
))
{
for
(
WdtQimenStockoutOrder
stockoutOrder
:
stockoutOrderSubList
)
{
// 设置主订单的审计字段
stockoutOrder
.
setCreateTime
(
new
Date
());
stockoutOrder
.
setUpdateTime
(
new
Date
());
stockoutOrder
.
setCreateBy
(
"system"
);
stockoutOrder
.
setUpdateBy
(
"system"
);
stockoutOrder
.
setDelFlag
(
"0"
);
// 设置平台名称
Integer
platformId
=
stockoutOrder
.
getPlatformId
();
if
(
platformId
!=
null
)
{
String
platformName
=
WdtPlatformMappingEnum
.
getPlatformName
(
platformId
);
stockoutOrder
.
setPlatformName
(
platformName
);
}
// 设置分销商ID和名称
stockoutOrder
.
setFenxiaoIdAndName
();
pageOrderList
.
add
(
stockoutOrder
);
// 处理订单明细
List
<
WdtQimenStockoutOrderDetail
>
detailList
=
stockoutOrder
.
getDetailsList
();
if
(
ObjectUtils
.
isNotEmpty
(
detailList
))
{
for
(
WdtQimenStockoutOrderDetail
detail
:
detailList
)
{
detail
.
setStockoutNo
(
stockoutOrder
.
getOrderNo
());
detail
.
setCreateTime
(
new
Date
());
detail
.
setUpdateTime
(
new
Date
());
detail
.
setCreateBy
(
"system"
);
detail
.
setUpdateBy
(
"system"
);
detail
.
setDelFlag
(
"0"
);
detail
.
setFenxiaoNick
(
stockoutOrder
.
getFenxiaoNick
());
// 设置分销商ID和名称
detail
.
setFenxiaoIdAndName
();
// 设置平台名称
detail
.
setPlatformName
(
stockoutOrder
.
getPlatformName
());
// 设置成本字段
detail
.
setActualCost
(
ObjectUtils
.
isNotEmpty
(
baseProductMap
.
get
(
detail
.
getGoodsNo
()))
?
baseProductMap
.
get
(
detail
.
getGoodsNo
()).
getActualCost
()
:
new
BigDecimal
(
0
)
);
detail
.
setStandardCost
(
ObjectUtils
.
isNotEmpty
(
baseProductMap
.
get
(
detail
.
getGoodsNo
()))
?
baseProductMap
.
get
(
detail
.
getGoodsNo
()).
getStandardCost
()
:
new
BigDecimal
(
0
)
);
detail
.
setSumActualCost
(
detail
.
getActualCost
().
multiply
(
detail
.
getNum
()));
detail
.
setSumStandardCost
(
detail
.
getStandardCost
().
multiply
(
detail
.
getNum
()));
pageDetailList
.
add
(
detail
);
totalDetailCount
++;
// 收集货位明细
List
<
WdtQimenStockoutPositionDetail
>
positionDetailsList
=
detail
.
getPositionDetailsList
();
if
(
ObjectUtils
.
isNotEmpty
(
positionDetailsList
))
{
for
(
WdtQimenStockoutPositionDetail
posDetail
:
positionDetailsList
)
{
posDetail
.
setCreateTime
(
new
Date
());
posDetail
.
setUpdateTime
(
new
Date
());
}
pagePositionDetailList
.
addAll
(
positionDetailsList
);
}
// 收集拣货位明细
List
<
WdtQimenStockOutPickPositionDetail
>
pickPositionDetailsList
=
detail
.
getPickPositionDetailsList
();
if
(
ObjectUtils
.
isNotEmpty
(
pickPositionDetailsList
))
{
for
(
WdtQimenStockOutPickPositionDetail
pickDetail
:
pickPositionDetailsList
)
{
pickDetail
.
setCreateTime
(
new
Date
());
pickDetail
.
setUpdateTime
(
new
Date
());
}
pagePickPositionDetailList
.
addAll
(
pickPositionDetailsList
);
}
}
}
// 收集物流明细
List
<
WdtQimenStockoutLogisticsDetail
>
logisticsList
=
stockoutOrder
.
getLogisticsList
();
if
(
ObjectUtils
.
isNotEmpty
(
logisticsList
))
{
for
(
WdtQimenStockoutLogisticsDetail
logDetail
:
logisticsList
)
{
logDetail
.
setCreateTime
(
new
Date
());
logDetail
.
setUpdateTime
(
new
Date
());
}
pageLogisticsDetailList
.
addAll
(
logisticsList
);
}
// 收集国补信息
List
<
WdtQimenStockoutGovSubsidy
>
govSubsidyList
=
stockoutOrder
.
getGovSubsidyInfo
();
if
(
ObjectUtils
.
isNotEmpty
(
govSubsidyList
))
{
pageGovSubsidyList
.
addAll
(
govSubsidyList
);
}
}
// 循环结束后一次性保存所有数据
if
(!
pageOrderList
.
isEmpty
())
{
stockoutOrderDao
.
insertOrUpdateBatch
(
pageOrderList
);
}
if
(!
pageDetailList
.
isEmpty
())
{
stockoutOrderDetailDao
.
insertOrUpdateBatch
(
pageDetailList
);
}
if
(!
pagePositionDetailList
.
isEmpty
())
{
stockoutPositionDetailDao
.
insertOrUpdateBatch
(
pagePositionDetailList
);
}
if
(!
pagePickPositionDetailList
.
isEmpty
())
{
stockoutPickPositionDetailDao
.
insertOrUpdateBatch
(
pagePickPositionDetailList
);
}
if
(!
pageLogisticsDetailList
.
isEmpty
())
{
stockoutLogisticsDetailDao
.
insertOrUpdateBatch
(
pageLogisticsDetailList
);
}
if
(!
pageGovSubsidyList
.
isEmpty
())
{
stockoutGovSubsidyDao
.
insertOrUpdateBatch
(
pageGovSubsidyList
);
}
}
log
.
info
(
"第 {} 页处理完成,总页数: {} - 订单: {}, 明细: {}, 货位: {}, 拣货位: {}, 物流: {}, 国补: {}"
,
wdtPageNo
,
wdtTotalPage
,
pageOrderList
.
size
(),
pageDetailList
.
size
(),
pagePositionDetailList
.
size
(),
pagePickPositionDetailList
.
size
(),
pageLogisticsDetailList
.
size
(),
pageGovSubsidyList
.
size
());
detailDto
.
setPageNo
(
wdtPageNo
);
wdtPageNo
++;
}
while
(
wdtPageNo
<=
wdtTotalPage
);
String
remark
=
String
.
format
(
"订单数量:%s,详情数量:%s"
,
totalCount
,
totalDetailCount
);
log
.
info
(
"同步销售出库单完成 - 总订单: {}, 总明细: {}, 总页数: {}"
,
totalCount
,
totalDetailCount
,
wdtTotalPage
);
log
.
debug
(
"批次: {}, 开始时间: {}, 结束时间: {}"
,
batchNo
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
endTime
));
detailDto
.
setOrderCount
(
totalCount
);
detailDto
.
setDetailCount
(
totalDetailCount
);
detailDto
.
setTotalPage
(
wdtTotalPage
);
detailDto
.
setPageSize
(
pageSize
);
detailDto
.
setRemark
(
remark
);
detailDto
.
setLatestTime
(
endTime
);
// detailDto.setDetailInfo(method, remark,
// syncType, totalCount, totalDetailCount,Integer.parseInt(totalPage+""),
// batchNo,endTime, startTime);
// 保存同步日志到数据库
orderLogInfoDao
.
insert
(
detailDto
);
}
catch
(
ApiException
e
)
{
log
.
error
(
"同步销售出库单异常 - ApiException: {}"
,
e
.
getMessage
(),
e
);
throw
new
ServiceException
(
"同步销售出库单异常:"
+
e
.
getMessage
());
}
catch
(
Exception
e
)
{
log
.
error
(
"同步销售出库单异常 - 未知异常: {}"
,
e
.
getMessage
(),
e
);
throw
new
ServiceException
(
"同步销售出库单异常:"
+
e
.
getMessage
());
}
return
detailDto
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
WdtStockoutSalesQueryWithDetailDto
syncSingleStockoutOrder
(
String
stockoutNo
)
{
WdtStockoutSalesQueryWithDetailRequest
request
=
new
WdtStockoutSalesQueryWithDetailRequest
();
String
serverUrl
=
wdtQimenConfig
.
getServerUrl
();
String
appKey
=
wdtQimenConfig
.
getAppKey
();
String
appSecret
=
wdtQimenConfig
.
getAppSecret
();
String
wdtAppSecret
=
wdtQimenConfig
.
getWdtAppSecret
();
String
wdtSalt
=
wdtAppSecret
.
split
(
":"
)[
1
];
String
wdtSecret
=
wdtAppSecret
.
split
(
":"
)[
0
];
String
wdtAppKey
=
wdtQimenConfig
.
getWdtAppKey
();
String
targetAppSecret
=
wdtQimenConfig
.
getTargetAppSecret
();
String
wdtSid
=
wdtQimenConfig
.
getWdtSid
();
Integer
totalDetailCount
=
0
;
try
{
QimenCloudClient
client
=
new
DefaultQimenCloudClient
(
serverUrl
,
appKey
,
appSecret
);
WdtStockoutSalesQueryWithDetailRequest
.
Params
params
=
new
WdtStockoutSalesQueryWithDetailRequest
.
Params
();
params
.
setStockoutNo
(
stockoutNo
);
request
.
setParams
(
params
);
WdtStockoutSalesQueryWithDetailRequest
.
Pager
pager
=
new
WdtStockoutSalesQueryWithDetailRequest
.
Pager
();
pager
.
setPageNo
(
1L
);
pager
.
setPageSize
(
1L
);
request
.
setPager
(
pager
);
String
dateTime
=
DateUtil
.
formatDateTime
(
new
Date
());
request
.
setDatetime
(
dateTime
);
request
.
putOtherTextParam
(
"wdt3_customer_id"
,
wdtSid
);
request
.
setTargetAppKey
(
targetAppSecret
);
request
.
setWdtAppkey
(
wdtAppKey
);
request
.
setWdtSalt
(
wdtSalt
);
String
wdtSign
=
WdtQimenUtil
.
getQimenCustomWdtSign
(
request
,
wdtSecret
);
request
.
setWdtSign
(
wdtSign
);
log
.
debug
(
"单个出库单请求参数 - 出库单号: {}"
,
stockoutNo
);
long
requestStartTime
=
System
.
currentTimeMillis
();
WdtWmsStockoutSalesQuerywithdetailResponse
response
=
client
.
execute
(
request
);
long
duration
=
System
.
currentTimeMillis
()
-
requestStartTime
;
if
(
ObjectUtils
.
isNotEmpty
(
response
)
&&
response
.
getFlag
().
equals
(
"failure"
))
{
log
.
error
(
"奇门加载数据异常 - 消息: {}, 子消息: {}, 耗时: {}ms"
,
response
.
getMessage
(),
response
.
getSubMessage
(),
duration
);
throw
new
ServiceException
(
"奇门加载数据异常:"
+
response
.
getMessage
()
+
response
.
getSubMessage
());
}
log
.
debug
(
"奇门API请求成功,耗时: {}ms"
,
duration
);
String
body
=
response
.
getBody
();
WdtQimenStockoutBodyDto
wdtQimenBodyDto
=
JSONUtil
.
parseObj
(
body
).
toBean
(
WdtQimenStockoutBodyDto
.
class
);
WdtQimenStockoutResponseDto
wdtQimenResponseDto
=
wdtQimenBodyDto
.
getResponse
();
WdtQimenStockoutDataDto
wdtQimenDataDto
=
wdtQimenResponseDto
.
getData
();
List
<
WdtQimenStockoutOrder
>
stockoutOrderList
=
wdtQimenDataDto
.
getOrder
();
if
(
ObjectUtils
.
isNotEmpty
(
stockoutOrderList
))
{
WdtQimenStockoutOrder
stockoutOrder
=
stockoutOrderList
.
get
(
0
);
stockoutOrder
.
setCreateTime
(
new
Date
());
stockoutOrder
.
setUpdateTime
(
new
Date
());
stockoutOrder
.
setCreateBy
(
"system"
);
stockoutOrder
.
setUpdateBy
(
"system"
);
stockoutOrder
.
setDelFlag
(
"0"
);
// 设置平台名称
Integer
platformId
=
stockoutOrder
.
getPlatformId
();
if
(
platformId
!=
null
)
{
String
platformName
=
WdtPlatformMappingEnum
.
getPlatformName
(
platformId
);
stockoutOrder
.
setPlatformName
(
platformName
);
}
// 设置分销商ID和名称
stockoutOrder
.
setFenxiaoIdAndName
();
stockoutOrderDao
.
save
(
stockoutOrder
);
List
<
WdtQimenStockoutOrderDetail
>
detailList
=
stockoutOrder
.
getDetailsList
();
if
(
ObjectUtils
.
isNotEmpty
(
detailList
))
{
List
<
WdtQimenStockoutPositionDetail
>
allPositionDetails
=
new
ArrayList
<>();
List
<
WdtQimenStockOutPickPositionDetail
>
allPickPositionDetails
=
new
ArrayList
<>();
for
(
WdtQimenStockoutOrderDetail
detail
:
detailList
)
{
detail
.
setStockoutNo
(
stockoutOrder
.
getOrderNo
());
detail
.
setCreateTime
(
new
Date
());
detail
.
setUpdateTime
(
new
Date
());
detail
.
setCreateBy
(
"system"
);
detail
.
setUpdateBy
(
"system"
);
detail
.
setDelFlag
(
"0"
);
detail
.
setFenxiaoNick
(
stockoutOrder
.
getFenxiaoNick
());
// 设置分销商ID和名称
detail
.
setFenxiaoIdAndName
();
// 设置平台名称
detail
.
setPlatformName
(
stockoutOrder
.
getPlatformName
());
totalDetailCount
++;
// 收集货位明细
List
<
WdtQimenStockoutPositionDetail
>
positionDetailsList
=
detail
.
getPositionDetailsList
();
if
(
ObjectUtils
.
isNotEmpty
(
positionDetailsList
))
{
for
(
WdtQimenStockoutPositionDetail
posDetail
:
positionDetailsList
)
{
posDetail
.
setCreateTime
(
new
Date
());
posDetail
.
setUpdateTime
(
new
Date
());
}
allPositionDetails
.
addAll
(
positionDetailsList
);
}
// 收集拣货位明细
List
<
WdtQimenStockOutPickPositionDetail
>
pickPositionDetailsList
=
detail
.
getPickPositionDetailsList
();
if
(
ObjectUtils
.
isNotEmpty
(
pickPositionDetailsList
))
{
for
(
WdtQimenStockOutPickPositionDetail
pickDetail
:
pickPositionDetailsList
)
{
pickDetail
.
setCreateTime
(
new
Date
());
pickDetail
.
setUpdateTime
(
new
Date
());
}
allPickPositionDetails
.
addAll
(
pickPositionDetailsList
);
}
}
// 批量保存明细
stockoutOrderDetailDao
.
insertOrUpdateBatch
(
detailList
);
// 批量保存货位明细
if
(!
allPositionDetails
.
isEmpty
())
{
stockoutPositionDetailDao
.
insertOrUpdateBatch
(
allPositionDetails
);
}
// 批量保存拣货位明细
if
(!
allPickPositionDetails
.
isEmpty
())
{
stockoutPickPositionDetailDao
.
insertOrUpdateBatch
(
allPickPositionDetails
);
}
log
.
debug
(
"单个订单明细保存完成 - 明细: {}, 货位: {}, 拣货位: {}"
,
detailList
.
size
(),
allPositionDetails
.
size
(),
allPickPositionDetails
.
size
());
}
// 保存物流明细
List
<
WdtQimenStockoutLogisticsDetail
>
logisticsList
=
stockoutOrder
.
getLogisticsList
();
if
(
ObjectUtils
.
isNotEmpty
(
logisticsList
))
{
for
(
WdtQimenStockoutLogisticsDetail
logDetail
:
logisticsList
)
{
logDetail
.
setCreateTime
(
new
Date
());
logDetail
.
setUpdateTime
(
new
Date
());
}
stockoutLogisticsDetailDao
.
insertOrUpdateBatch
(
logisticsList
);
}
// 保存国补信息
List
<
WdtQimenStockoutGovSubsidy
>
govSubsidyList
=
stockoutOrder
.
getGovSubsidyInfo
();
if
(
ObjectUtils
.
isNotEmpty
(
govSubsidyList
))
{
stockoutGovSubsidyDao
.
insertOrUpdateBatch
(
govSubsidyList
);
}
log
.
info
(
"同步单个销售出库单完成 - 出库单号: {}, 明细数量: {}"
,
stockoutNo
,
totalDetailCount
);
}
else
{
log
.
warn
(
"未找到出库单数据 - 出库单号: {}"
,
stockoutNo
);
}
}
catch
(
ApiException
e
)
{
log
.
error
(
"同步单个销售出库单异常 - ApiException: {}"
,
e
.
getMessage
(),
e
);
throw
new
ServiceException
(
"同步单个销售出库单异常:"
+
e
.
getMessage
());
}
catch
(
Exception
e
)
{
log
.
error
(
"同步单个销售出库单异常 - 未知异常: {}"
,
e
.
getMessage
(),
e
);
throw
new
ServiceException
(
"同步单个销售出库单异常:"
+
e
.
getMessage
());
}
WdtStockoutSalesQueryWithDetailDto
result
=
new
WdtStockoutSalesQueryWithDetailDto
();
result
.
setStatus
(
1L
);
result
.
setMessage
(
"同步单个销售出库单成功"
);
return
result
;
}
}
\ No newline at end of file
src/main/java/com/sfa/job/service/qince/IQinceDealerQueryService.java
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
service
.
qince
;
package
com
.
sfa
.
job
.
service
.
qince
;
import
com.alibaba.fastjson.JSONArray
;
import
com.sfa.job.pojo.qince.request.QinceAllDealerQueryRequest
;
import
com.sfa.job.pojo.qince.request.QinceDealerQueryRequest
;
/**
/**
* @author : liqiulin
* @author : liqiulin
* @date : 2025-04-24 16
* @date : 2025-04-24 16
...
@@ -10,4 +14,7 @@ public interface IQinceDealerQueryService {
...
@@ -10,4 +14,7 @@ public interface IQinceDealerQueryService {
void
queryCusVisitRecord
();
void
queryCusVisitRecord
();
void
updateQinceStore
();
void
updateQinceStore
();
JSONArray
queryDealer
(
QinceDealerQueryRequest
request
);
JSONArray
queryAllDealer
(
QinceAllDealerQueryRequest
request
);
}
}
src/main/java/com/sfa/job/service/qince/IQinceUserStatisticService.java
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
service
.
qince
;
package
com
.
sfa
.
job
.
service
.
qince
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
/**
/**
...
...
src/main/java/com/sfa/job/service/qince/impl/QinceDealerQueryServiceImpl.java
浏览文件 @
1b6f3a72
...
@@ -2,10 +2,13 @@ package com.sfa.job.service.qince.impl;
...
@@ -2,10 +2,13 @@ package com.sfa.job.service.qince.impl;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.sfa.job.domain.feishu.dao.IQinceMarketEmployeeDao
;
import
com.sfa.job.domain.feishu.dao.IQinceMarketEmployeeDao
;
import
com.sfa.job.domain.qince.dao.IQinceClienteleStoreDao
;
import
com.sfa.job.domain.qince.dao.IQinceClienteleStoreDao
;
import
com.sfa.job.pojo.feishu.response.QinceMarketEmployeeDto
;
import
com.sfa.job.pojo.feishu.response.QinceMarketEmployeeDto
;
import
com.sfa.job.pojo.qince.request.QinceAllDealerQueryRequest
;
import
com.sfa.job.pojo.qince.request.QinceDealerQueryRequest
;
import
com.sfa.job.pojo.qince.response.QinceClienteleStoreDto
;
import
com.sfa.job.pojo.qince.response.QinceClienteleStoreDto
;
import
com.sfa.job.service.qince.IQinceDealerQueryService
;
import
com.sfa.job.service.qince.IQinceDealerQueryService
;
import
com.sfa.job.util.QinCeUtils
;
import
com.sfa.job.util.QinCeUtils
;
...
@@ -146,4 +149,34 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
...
@@ -146,4 +149,34 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
}
}
}
}
}
}
@Override
public
JSONArray
queryDealer
(
QinceDealerQueryRequest
request
)
{
log
.
info
(
"查询经销商列表,request:{}"
,
request
);
try
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"page"
,
request
.
getPage
()
!=
null
?
request
.
getPage
()
:
1
);
params
.
put
(
"rows"
,
request
.
getRows
()
!=
null
?
request
.
getRows
()
:
1000
);
params
.
put
(
"dealer_code"
,
request
.
getDealer_code
());
if
(
request
.
getDealer_code
()
!=
null
&&
!
request
.
getDealer_code
().
isEmpty
())
{
params
.
put
(
"dealer_code"
,
request
.
getDealer_code
());
}
return
qinCeUtils
.
queryDealer
(
params
);
}
catch
(
Exception
e
)
{
log
.
error
(
"查询经销商列表异常:{}"
,
e
.
getMessage
(),
e
);
throw
new
RuntimeException
(
"查询经销商列表异常:"
+
e
.
getMessage
(),
e
);
}
}
@Override
public
JSONArray
queryAllDealer
(
QinceAllDealerQueryRequest
request
)
{
log
.
info
(
"查询所有经销商,request:{}"
,
request
);
try
{
return
qinCeUtils
.
queryAllDealer
(
request
.
getPageSize
());
}
catch
(
Exception
e
)
{
log
.
error
(
"查询所有经销商异常:{}"
,
e
.
getMessage
(),
e
);
throw
new
RuntimeException
(
"查询所有经销商异常:"
+
e
.
getMessage
(),
e
);
}
}
}
}
src/main/java/com/sfa/job/util/QinCeUtils.java
浏览文件 @
1b6f3a72
...
@@ -62,7 +62,58 @@ public class QinCeUtils {
...
@@ -62,7 +62,58 @@ public class QinCeUtils {
// 直营订单查询接口
// 直营订单查询接口
public
static
final
String
QUERY_ORDER_DETAIL
=
"/api/dmsdatasearch/v1/getDmsPurchaseOrderInfos/"
;
public
static
final
String
QUERY_ORDER_DETAIL
=
"/api/dmsdatasearch/v1/getDmsPurchaseOrderInfos/"
;
// 查询经销商
public
static
final
String
QUERY_DEALER
=
"/api/dealer/v1/queryDealer/"
;
/**
* 调用勤策查询经销商接口
* @param params 查询参数Map
* @return 经销商数据JSON数组
* @throws Exception 接口调用异常
*/
public
JSONArray
queryDealer
(
Map
<
String
,
Object
>
params
)
throws
Exception
{
String
url
=
builderUrl
(
QUERY_DEALER
,
params
);
log
.
info
(
"调用勤策查询经销商接口,URL:{},参数:{}"
,
url
,
params
);
return
postArray
(
url
,
params
);
}
/**
* 分页查询所有经销商(循环拉取直到无数据)
* @param pageSize 每页记录数(默认1000)
* @return 所有经销商数据
* @throws Exception 接口调用异常
*/
public
JSONArray
queryAllDealer
(
Integer
pageSize
)
throws
Exception
{
JSONArray
allDealers
=
new
JSONArray
();
int
currentPage
=
1
;
int
pageSizeValue
=
pageSize
!=
null
?
pageSize
:
1000
;
while
(
true
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"page"
,
currentPage
);
params
.
put
(
"rows"
,
pageSizeValue
);
String
url
=
builderUrl
(
QUERY_DEALER
,
params
);
log
.
info
(
"查询经销商 - 第{}页,请求URL:{}"
,
currentPage
,
url
);
try
{
JSONObject
resp
=
postQC
(
url
,
params
);
JSONArray
pageData
=
resp
.
getJSONArray
(
"response_data"
);
if
(
pageData
==
null
||
pageData
.
isEmpty
())
{
log
.
info
(
"经销商查询完成,共拉取{}页,总记录数:{}"
,
currentPage
-
1
,
allDealers
.
size
());
break
;
}
allDealers
.
addAll
(
pageData
);
currentPage
++;
}
catch
(
Exception
e
)
{
log
.
error
(
"查询经销商第{}页失败"
,
currentPage
,
e
);
throw
new
RuntimeException
(
"分页拉取经销商数据失败,页码:"
+
currentPage
,
e
);
}
}
return
allDealers
;
}
public
String
builderUrl
(
String
sidepath
,
Map
<
String
,
Object
>
params
)
{
public
String
builderUrl
(
String
sidepath
,
Map
<
String
,
Object
>
params
)
{
String
msgId
=
UUID
.
randomUUID
().
toString
();
String
msgId
=
UUID
.
randomUUID
().
toString
();
...
...
src/main/java/com/sfa/job/util/WdtQimenUtil.java
浏览文件 @
1b6f3a72
...
@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
...
@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import
com.taobao.api.BaseTaobaoRequest
;
import
com.taobao.api.BaseTaobaoRequest
;
import
com.taobao.api.TaobaoResponse
;
import
com.taobao.api.TaobaoResponse
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.Arrays
;
...
@@ -15,6 +17,8 @@ import java.util.Map;
...
@@ -15,6 +17,8 @@ import java.util.Map;
* 奇门自定义接口工具类
* 奇门自定义接口工具类
*/
*/
public
class
WdtQimenUtil
{
public
class
WdtQimenUtil
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
WdtQimenUtil
.
class
);
private
WdtQimenUtil
()
{
private
WdtQimenUtil
()
{
}
}
...
@@ -36,7 +40,10 @@ public class WdtQimenUtil {
...
@@ -36,7 +40,10 @@ public class WdtQimenUtil {
StringBuilder
toBeSignedStringBuilder
=
new
StringBuilder
();
StringBuilder
toBeSignedStringBuilder
=
new
StringBuilder
();
getToBeSignedString
(
toBeSignedStringBuilder
,
params
);
getToBeSignedString
(
toBeSignedStringBuilder
,
params
);
toBeSignedStringBuilder
.
insert
(
0
,
wdtSecret
).
append
(
wdtSecret
);
toBeSignedStringBuilder
.
insert
(
0
,
wdtSecret
).
append
(
wdtSecret
);
return
DigestUtils
.
md5Hex
(
toBeSignedStringBuilder
.
toString
());
String
signStr
=
toBeSignedStringBuilder
.
toString
();
String
sign
=
DigestUtils
.
md5Hex
(
signStr
);
log
.
debug
(
"生成签名 - 方法: {}, 签名字符串长度: {}, 签名值: {}"
,
request
.
getApiMethodName
(),
signStr
.
length
(),
sign
);
return
sign
;
}
}
public
static
boolean
isValidJson
(
String
content
)
{
public
static
boolean
isValidJson
(
String
content
)
{
...
...
src/main/java/com/sfa/job/xxljob/order/WdtQimenStockoutOrderTask.java
0 → 100644
浏览文件 @
1b6f3a72
package
com
.
sfa
.
job
.
xxljob
.
order
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.http.HttpStatus
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.sfa.job.pojo.order.request.SyncStockoutRequest
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
import
com.sfa.job.service.order.IWdtQimenStockoutOrderSyncService
;
import
com.xxl.job.core.context.XxlJobContext
;
import
com.xxl.job.core.context.XxlJobHelper
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
/**
* @author : 吕本才
* @date : 2025年08月14日
* @describe : 旺店通奇门订单数据
*/
@Component
@Slf4j
public
class
WdtQimenStockoutOrderTask
{
@Autowired
IWdtQimenStockoutOrderSyncService
stockoutOrderSyncService
;
/**
* 同步财务订单数据
*/
@XxlJob
(
"syncStockoutOrder"
)
public
SyncOrderDetailDto
syncStockoutOrder
()
{
Long
st
=
System
.
currentTimeMillis
();
// 暂不考虑分片
XxlJobContext
xxlJobContext
=
XxlJobContext
.
getXxlJobContext
();
int
shardingTotalCount
=
xxlJobContext
.
getShardTotal
();
int
shardingItem
=
xxlJobContext
.
getShardIndex
();
XxlJobHelper
.
log
(
">>>>>>>>>>syncWangdiantongOrderDetail Job start<<<<<<<<<<"
);
String
jobParam
=
xxlJobContext
.
getJobParam
();
boolean
jsonFlag
=
JSONUtil
.
isJson
(
jobParam
);
Date
startTime
=
null
;
Date
endTime
=
null
;
String
status
=
null
;
Integer
statusType
=
null
;
SyncStockoutRequest
syncStockoutRequest
=
new
SyncStockoutRequest
();
// 同步类型 ,接口为1手动同步,0 xxljob自动同步
syncStockoutRequest
.
setSyncType
(
0
);
if
(
jsonFlag
)
{
JSONObject
jobParamJson
=
JSONObject
.
parseObject
(
jobParam
);
startTime
=
jobParamJson
.
getDate
(
"startTime"
);
endTime
=
jobParamJson
.
getDate
(
"endTime"
);
status
=
jobParamJson
.
getString
(
"status"
);
statusType
=
jobParamJson
.
getInteger
(
"statusType"
);
syncStockoutRequest
.
setStatus
(
status
);
syncStockoutRequest
.
setStatusType
(
statusType
);
syncStockoutRequest
.
setStartTime
(
startTime
);
syncStockoutRequest
.
setEndTime
(
endTime
);
}
// 简单模拟分片处理,这里输出每个分片的信息
XxlJobHelper
.
log
(
"分片总数: "
+
shardingTotalCount
+
", 当前分片: "
+
shardingItem
);
XxlJobHelper
.
log
(
"xxl-job开始同步-旺店通订单明细api接口数据"
);
// 定时任务不设定开始时间和结束时间
SyncOrderDetailDto
detailDto
=
stockoutOrderSyncService
.
syncStockoutOrder
(
syncStockoutRequest
,
200
);
XxlJobHelper
.
log
(
"xxl-job结束同步-旺店通订单明细api接口数据, 共同步订单{}条数据,订单明细{}条,订单批次号:{},订单的开始时间{}和结束时间{}"
,
detailDto
.
getOrderCount
(),
detailDto
.
getOrderDetailCount
(),
detailDto
.
getBatchNo
(),
DateUtil
.
formatDateTime
(
detailDto
.
getStartTime
()),
DateUtil
.
formatDateTime
(
detailDto
.
getEndTime
()));
if
(
ObjectUtil
.
equals
(
HttpStatus
.
HTTP_OK
,
detailDto
.
getCode
()))
{
XxlJobHelper
.
handleSuccess
(
JSONObject
.
toJSONString
(
detailDto
));
}
else
{
XxlJobHelper
.
handleFail
(
detailDto
.
getMessage
());
}
return
detailDto
;
}
}
src/main/resources/mapper/order/WdtQimenStockOutPickPositionDetailMapper.xml
0 → 100644
浏览文件 @
1b6f3a72
<?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=
"com.sfa.job.domain.order.mapper.WdtQimenStockOutPickPositionDetailMapper"
>
<!-- 批量插入或更新拣货位明细 -->
<insert
id=
"insertOrUpdateBatch"
parameterType=
"java.util.List"
>
INSERT INTO wdt_qimen_stockout_pick_position_detail (
rec_id,
stockout_detail_id,
position_id,
position_no,
expire_date,
production_date,
batch_no,
position_goods_count,
spec_no,
create_time,
update_time
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.recId},
#{item.stockoutDetailId},
#{item.positionId},
#{item.positionNo},
#{item.expireDate},
#{item.productionDate},
#{item.batchNo},
#{item.positionGoodsCount},
#{item.specNo},
#{item.createTime},
#{item.updateTime}
)
</foreach>
ON DUPLICATE KEY UPDATE
stockout_detail_id = VALUES(stockout_detail_id),
position_id = VALUES(position_id),
position_no = VALUES(position_no),
expire_date = VALUES(expire_date),
production_date = VALUES(production_date),
batch_no = VALUES(batch_no),
position_goods_count = VALUES(position_goods_count),
spec_no = VALUES(spec_no),
update_time = VALUES(update_time)
</insert>
</mapper>
src/main/resources/mapper/order/WdtQimenStockoutGovSubsidyMapper.xml
0 → 100644
浏览文件 @
1b6f3a72
<?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=
"com.sfa.job.domain.order.mapper.WdtQimenStockoutGovSubsidyMapper"
>
<!-- 批量插入或更新国补信息 -->
<insert
id=
"insertOrUpdateBatch"
parameterType=
"java.util.List"
>
INSERT INTO wdt_qimen_stockout_gov_subsidy (
id,
stockout_no,
subsidy_amount,
subsidy_type,
subsidy_reason,
create_time,
update_time,
create_by,
update_by,
del_flag
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.id},
#{item.stockoutNo},
#{item.subsidyAmount},
#{item.subsidyType},
#{item.subsidyReason},
#{item.createTime},
#{item.updateTime},
#{item.createBy},
#{item.updateBy},
#{item.delFlag}
)
</foreach>
ON DUPLICATE KEY UPDATE
subsidy_amount = VALUES(subsidy_amount),
subsidy_type = VALUES(subsidy_type),
subsidy_reason = VALUES(subsidy_reason),
update_time = VALUES(update_time),
update_by = VALUES(update_by)
</insert>
</mapper>
src/main/resources/mapper/order/WdtQimenStockoutLogisticsDetailMapper.xml
0 → 100644
浏览文件 @
1b6f3a72
<?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=
"com.sfa.job.domain.order.mapper.WdtQimenStockoutLogisticsDetailMapper"
>
<!-- 批量插入或更新物流单详情 -->
<insert
id=
"insertOrUpdateBatch"
parameterType=
"java.util.List"
>
INSERT INTO wdt_qimen_stockout_logistics_detail (
rec_id,
stockout_detail_id,
position_id,
position_no,
expire_date,
production_date,
batch_no,
position_goods_count,
batch_remark,
create_time,
update_time
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.recId},
#{item.stockoutDetailId},
#{item.positionId},
#{item.positionNo},
#{item.expireDate},
#{item.productionDate},
#{item.batchNo},
#{item.positionGoodsCount},
#{item.batchRemark},
#{item.createTime},
#{item.updateTime}
)
</foreach>
ON DUPLICATE KEY UPDATE
stockout_detail_id = VALUES(stockout_detail_id),
position_id = VALUES(position_id),
position_no = VALUES(position_no),
expire_date = VALUES(expire_date),
production_date = VALUES(production_date),
batch_no = VALUES(batch_no),
position_goods_count = VALUES(position_goods_count),
batch_remark = VALUES(batch_remark),
update_time = VALUES(update_time)
</insert>
</mapper>
src/main/resources/mapper/order/WdtQimenStockoutOrderDetailMapper.xml
0 → 100644
浏览文件 @
1b6f3a72
<?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=
"com.sfa.job.domain.order.mapper.WdtQimenStockoutOrderDetailMapper"
>
<!-- 批量插入或更新销售出库单明细 -->
<insert
id=
"insertOrUpdateBatch"
parameterType=
"java.util.List"
>
INSERT INTO wdt_qimen_stockout_order_detail (
rec_id,
stockout_id,
stockout_no,
src_order_detail_id,
spec_id,
spec_no,
goods_count,
total_amount,
sell_price,
remark,
goods_name,
goods_no,
spec_name,
spec_code,
cost_price,
weight,
goods_id,
prop1,
prop2,
prop3,
prop4,
prop5,
prop6,
platform_id,
refund_status,
market_price,
discount,
share_price,
share_amount,
tax_rate,
barcode,
unit_name,
sale_order_id,
gift_type,
src_oid,
src_tid,
from_mask,
goods_type,
good_prop1,
good_prop2,
good_prop3,
good_prop4,
good_prop5,
good_prop6,
sn_list,
suite_no,
suite_num,
share_post_amount,
paid,
is_package,
brand_no,
brand_name,
src_order_type,
base_unit_id,
unit_id,
unit_ratio,
num2,
num,
position_id,
batch_id,
is_examined,
expire_date,
scan_type,
modified_date,
created_date,
class_name,
api_goods_id,
api_spec_id,
pack_score,
pick_score,
scan_score,
api_goods_name,
batch_remark,
fenxiao_nick,
fenxiao_id,
fenxiao_name,
actual_cost,
standard_cost,
sum_actual_cost,
sum_standard_cost,
create_by,
create_user_id,
update_by,
update_user_id,
del_flag,
create_time,
update_time
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.recId},
#{item.stockoutId},
#{item.stockoutNo},
#{item.srcOrderDetailId},
#{item.specId},
#{item.specNo},
#{item.goodsCount},
#{item.totalAmount},
#{item.sellPrice},
#{item.remark},
#{item.goodsName},
#{item.goodsNo},
#{item.specName},
#{item.specCode},
#{item.costPrice},
#{item.weight},
#{item.goodsId},
#{item.prop1},
#{item.prop2},
#{item.prop3},
#{item.prop4},
#{item.prop5},
#{item.prop6},
#{item.platformId},
#{item.refundStatus},
#{item.marketPrice},
#{item.discount},
#{item.sharePrice},
#{item.shareAmount},
#{item.taxRate},
#{item.barcode},
#{item.unitName},
#{item.saleOrderId},
#{item.giftType},
#{item.srcOid},
#{item.srcTid},
#{item.fromMask},
#{item.goodsType},
#{item.goodProp1},
#{item.goodProp2},
#{item.goodProp3},
#{item.goodProp4},
#{item.goodProp5},
#{item.goodProp6},
#{item.snList},
#{item.suiteNo},
#{item.suiteNum},
#{item.sharePostAmount},
#{item.paid},
#{item.isPackage},
#{item.brandNo},
#{item.brandName},
#{item.srcOrderType},
#{item.baseUnitId},
#{item.unitId},
#{item.unitRatio},
#{item.num2},
#{item.num},
#{item.positionId},
#{item.batchId},
#{item.isExamined},
#{item.expireDate},
#{item.scanType},
#{item.modifiedDate},
#{item.createdDate},
#{item.className},
#{item.apiGoodsId},
#{item.apiSpecId},
#{item.packScore},
#{item.pickScore},
#{item.scanScore},
#{item.apiGoodsName},
#{item.batchRemark},
#{item.fenxiaoNick},
#{item.fenxiaoId},
#{item.fenxiaoName},
#{item.actualCost},
#{item.standardCost},
#{item.sumActualCost},
#{item.sumStandardCost},
#{item.createBy},
#{item.createUserId},
#{item.updateBy},
#{item.updateUserId},
#{item.delFlag},
#{item.createTime},
#{item.updateTime}
)
</foreach>
ON DUPLICATE KEY UPDATE
stockout_id = VALUES(stockout_id),
src_order_detail_id = VALUES(src_order_detail_id),
spec_id = VALUES(spec_id),
spec_no = VALUES(spec_no),
goods_count = VALUES(goods_count),
total_amount = VALUES(total_amount),
sell_price = VALUES(sell_price),
remark = VALUES(remark),
goods_name = VALUES(goods_name),
goods_no = VALUES(goods_no),
spec_name = VALUES(spec_name),
spec_code = VALUES(spec_code),
cost_price = VALUES(cost_price),
weight = VALUES(weight),
goods_id = VALUES(goods_id),
prop1 = VALUES(prop1),
prop2 = VALUES(prop2),
prop3 = VALUES(prop3),
prop4 = VALUES(prop4),
prop5 = VALUES(prop5),
prop6 = VALUES(prop6),
platform_id = VALUES(platform_id),
refund_status = VALUES(refund_status),
market_price = VALUES(market_price),
discount = VALUES(discount),
share_price = VALUES(share_price),
share_amount = VALUES(share_amount),
tax_rate = VALUES(tax_rate),
barcode = VALUES(barcode),
unit_name = VALUES(unit_name),
sale_order_id = VALUES(sale_order_id),
gift_type = VALUES(gift_type),
src_oid = VALUES(src_oid),
src_tid = VALUES(src_tid),
from_mask = VALUES(from_mask),
goods_type = VALUES(goods_type),
good_prop1 = VALUES(good_prop1),
good_prop2 = VALUES(good_prop2),
good_prop3 = VALUES(good_prop3),
good_prop4 = VALUES(good_prop4),
good_prop5 = VALUES(good_prop5),
good_prop6 = VALUES(good_prop6),
sn_list = VALUES(sn_list),
suite_no = VALUES(suite_no),
suite_num = VALUES(suite_num),
share_post_amount = VALUES(share_post_amount),
paid = VALUES(paid),
is_package = VALUES(is_package),
brand_no = VALUES(brand_no),
brand_name = VALUES(brand_name),
src_order_type = VALUES(src_order_type),
base_unit_id = VALUES(base_unit_id),
unit_id = VALUES(unit_id),
unit_ratio = VALUES(unit_ratio),
num2 = VALUES(num2),
num = VALUES(num),
position_id = VALUES(position_id),
batch_id = VALUES(batch_id),
is_examined = VALUES(is_examined),
expire_date = VALUES(expire_date),
scan_type = VALUES(scan_type),
modified_date = VALUES(modified_date),
created_date = VALUES(created_date),
class_name = VALUES(class_name),
api_goods_id = VALUES(api_goods_id),
api_spec_id = VALUES(api_spec_id),
pack_score = VALUES(pack_score),
pick_score = VALUES(pick_score),
scan_score = VALUES(scan_score),
api_goods_name = VALUES(api_goods_name),
batch_remark = VALUES(batch_remark),
fenxiao_nick = VALUES(fenxiao_nick),
fenxiao_id = VALUES(fenxiao_id),
fenxiao_name = VALUES(fenxiao_name),
actual_cost = VALUES(actual_cost),
standard_cost = VALUES(standard_cost),
sum_actual_cost = VALUES(sum_actual_cost),
sum_standard_cost = VALUES(sum_standard_cost),
update_by = VALUES(update_by),
update_user_id = VALUES(update_user_id),
update_time = VALUES(update_time)
</insert>
</mapper>
src/main/resources/mapper/order/WdtQimenStockoutOrderMapper.xml
0 → 100644
浏览文件 @
1b6f3a72
<?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=
"com.sfa.job.domain.order.mapper.WdtQimenStockoutOrderMapper"
>
<!-- 插入或更新销售出库单 -->
<insert
id=
"insertOrUpdate"
parameterType=
"com.sfa.job.domain.order.entity.WdtQimenStockoutOrder"
>
INSERT INTO wdt_qimen_stockout_order (
stockout_id,
order_no,
virtual_warehouse_no,
virtual_warehouse_name,
src_order_no,
warehouse_no,
warehouse_name,
consign_time,
order_type,
goods_count,
logistics_no,
receiver_name,
receiver_country,
receiver_province,
receiver_city,
receiver_district,
receiver_address,
receiver_mobile,
receiver_telno,
receiver_zip,
receiver_area,
remark,
weight,
block_reason,
logistics_type,
logistics_code,
logistics_name,
shop_id,
warehouse_id,
logistics_id,
bad_reason,
receiver_dtb,
refund_status,
trade_type,
salesman_no,
fullname,
picker_name,
examiner_name,
consigner_name,
printer_name,
packager_name,
trade_status,
trade_no,
src_trade_no,
nick_name,
customer_no,
customer_name,
trade_time,
pay_time,
flag_name,
post_amount,
id_card_type,
id_card,
shop_name,
shop_no,
shop_remark,
status,
invoice_type,
invoice_id,
cod_amount,
delivery_term,
platform_id,
platform_name,
trade_id,
employee_no,
discount,
tax,
tax_rate,
currency,
created,
stock_check_time,
print_remark,
buyer_message,
cs_remark,
invoice_title,
invoice_content,
post_fee,
package_fee,
receivable,
goods_total_cost,
goods_total_amount,
modified,
fenxiao_nick,
fenxiao_id,
fenxiao_name,
trade_label,
trade_from,
picklist_no,
picklist_seq,
logistics_print_status,
paid,
shop_platform_id,
sub_platform_id,
error_info,
custom_type,
sendbill_template_id,
customer_id,
warehouse_type,
operator_id,
outer_no,
consign_status,
goods_type_count,
calc_post_cost,
batch_no,
created_date,
fenxiao_tid,
fenxiao_nick_no,
post_cost,
freeze_reason,
freeze_reason_name,
package_id,
fenxiao_alias,
fenxiao_order_type,
packager_no,
sorter_id,
sorter_name,
checkouter_id,
checkouter_name,
checker_id,
checker_name,
pick_group_name,
fenxiao_shop_name,
wms_code,
stockout_flag_name,
src_order_id,
picker_id,
packager_id,
consigner_id,
examiner_id,
fenxiao_distributor_order_type,
fenxiao_distributor_id,
fenxiao_distributor_name,
anchor_name,
assist_achor_name,
control_achor_name,
operation_anchor_name,
create_by,
create_user_id,
update_by,
update_user_id,
del_flag,
create_time,
update_time
) VALUES (
#{stockoutId},
#{orderNo},
#{virtualWarehouseNo},
#{virtualWarehouseName},
#{srcOrderNo},
#{warehouseNo},
#{warehouseName},
#{consignTime},
#{orderType},
#{goodsCount},
#{logisticsNo},
#{receiverName},
#{receiverCountry},
#{receiverProvince},
#{receiverCity},
#{receiverDistrict},
#{receiverAddress},
#{receiverMobile},
#{receiverTelno},
#{receiverZip},
#{receiverArea},
#{remark},
#{weight},
#{blockReason},
#{logisticsType},
#{logisticsCode},
#{logisticsName},
#{shopId},
#{warehouseId},
#{logisticsId},
#{badReason},
#{receiverDtb},
#{refundStatus},
#{tradeType},
#{salesmanNo},
#{fullname},
#{pickerName},
#{examinerName},
#{consignerName},
#{printerName},
#{packagerName},
#{tradeStatus},
#{tradeNo},
#{srcTradeNo},
#{nickName},
#{customerNo},
#{customerName},
#{tradeTime},
#{payTime},
#{flagName},
#{postAmount},
#{idCardType},
#{idCard},
#{shopName},
#{shopNo},
#{shopRemark},
#{status},
#{invoiceType},
#{invoiceId},
#{codAmount},
#{deliveryTerm},
#{platformId},
#{platformName},
#{tradeId},
#{employeeNo},
#{discount},
#{tax},
#{taxRate},
#{currency},
#{created},
#{stockCheckTime},
#{printRemark},
#{buyerMessage},
#{csRemark},
#{invoiceTitle},
#{invoiceContent},
#{postFee},
#{packageFee},
#{receivable},
#{goodsTotalCost},
#{goodsTotalAmount},
#{modified},
#{fenxiaoNick},
#{fenxiaoId},
#{fenxiaoName},
#{tradeLabel},
#{tradeFrom},
#{picklistNo},
#{picklistSeq},
#{logisticsPrintStatus},
#{paid},
#{shopPlatformId},
#{subPlatformId},
#{errorInfo},
#{customType},
#{sendbillTemplateId},
#{customerId},
#{warehouseType},
#{operatorId},
#{outerNo},
#{consignStatus},
#{goodsTypeCount},
#{calcPostCost},
#{batchNo},
#{createdDate},
#{fenxiaoTid},
#{fenxiaoNickNo},
#{postCost},
#{freezeReason},
#{freezeReasonName},
#{packageId},
#{fenxiaoAlias},
#{fenxiaoOrderType},
#{packagerNo},
#{sorterId},
#{sorterName},
#{checkouterId},
#{checkouterName},
#{checkerId},
#{checkerName},
#{pickGroupName},
#{fenxiaoShopName},
#{wmsCode},
#{stockoutFlagName},
#{srcOrderId},
#{pickerId},
#{packagerId},
#{consignerId},
#{examinerId},
#{fenxiaoDistributorOrderType},
#{fenxiaoDistributorId},
#{fenxiaoDistributorName},
#{anchorName},
#{assistAchorName},
#{controlAchorName},
#{operationAnchorName},
#{createBy},
#{createUserId},
#{updateBy},
#{updateUserId},
#{delFlag},
#{createTime},
#{updateTime}
)
ON DUPLICATE KEY UPDATE
virtual_warehouse_no = VALUES(virtual_warehouse_no),
virtual_warehouse_name = VALUES(virtual_warehouse_name),
src_order_no = VALUES(src_order_no),
warehouse_no = VALUES(warehouse_no),
warehouse_name = VALUES(warehouse_name),
consign_time = VALUES(consign_time),
order_type = VALUES(order_type),
goods_count = VALUES(goods_count),
logistics_no = VALUES(logistics_no),
receiver_name = VALUES(receiver_name),
receiver_country = VALUES(receiver_country),
receiver_province = VALUES(receiver_province),
receiver_city = VALUES(receiver_city),
receiver_district = VALUES(receiver_district),
receiver_address = VALUES(receiver_address),
receiver_mobile = VALUES(receiver_mobile),
receiver_telno = VALUES(receiver_telno),
receiver_zip = VALUES(receiver_zip),
receiver_area = VALUES(receiver_area),
remark = VALUES(remark),
weight = VALUES(weight),
block_reason = VALUES(block_reason),
logistics_type = VALUES(logistics_type),
logistics_code = VALUES(logistics_code),
logistics_name = VALUES(logistics_name),
shop_id = VALUES(shop_id),
warehouse_id = VALUES(warehouse_id),
logistics_id = VALUES(logistics_id),
bad_reason = VALUES(bad_reason),
receiver_dtb = VALUES(receiver_dtb),
refund_status = VALUES(refund_status),
trade_type = VALUES(trade_type),
salesman_no = VALUES(salesman_no),
fullname = VALUES(fullname),
picker_name = VALUES(picker_name),
examiner_name = VALUES(examiner_name),
consigner_name = VALUES(consigner_name),
printer_name = VALUES(printer_name),
packager_name = VALUES(packager_name),
trade_status = VALUES(trade_status),
trade_no = VALUES(trade_no),
src_trade_no = VALUES(src_trade_no),
nick_name = VALUES(nick_name),
customer_no = VALUES(customer_no),
customer_name = VALUES(customer_name),
trade_time = VALUES(trade_time),
pay_time = VALUES(pay_time),
flag_name = VALUES(flag_name),
post_amount = VALUES(post_amount),
id_card_type = VALUES(id_card_type),
id_card = VALUES(id_card),
shop_name = VALUES(shop_name),
shop_no = VALUES(shop_no),
shop_remark = VALUES(shop_remark),
status = VALUES(status),
invoice_type = VALUES(invoice_type),
invoice_id = VALUES(invoice_id),
cod_amount = VALUES(cod_amount),
delivery_term = VALUES(delivery_term),
platform_id = VALUES(platform_id),
platform_name = VALUES(platform_name),
trade_id = VALUES(trade_id),
employee_no = VALUES(employee_no),
discount = VALUES(discount),
tax = VALUES(tax),
tax_rate = VALUES(tax_rate),
currency = VALUES(currency),
created = VALUES(created),
stock_check_time = VALUES(stock_check_time),
print_remark = VALUES(print_remark),
buyer_message = VALUES(buyer_message),
cs_remark = VALUES(cs_remark),
invoice_title = VALUES(invoice_title),
invoice_content = VALUES(invoice_content),
post_fee = VALUES(post_fee),
package_fee = VALUES(package_fee),
receivable = VALUES(receivable),
goods_total_cost = VALUES(goods_total_cost),
goods_total_amount = VALUES(goods_total_amount),
modified = VALUES(modified),
fenxiao_nick = VALUES(fenxiao_nick),
fenxiao_id = VALUES(fenxiao_id),
fenxiao_name = VALUES(fenxiao_name),
trade_label = VALUES(trade_label),
trade_from = VALUES(trade_from),
picklist_no = VALUES(picklist_no),
picklist_seq = VALUES(picklist_seq),
logistics_print_status = VALUES(logistics_print_status),
paid = VALUES(paid),
shop_platform_id = VALUES(shop_platform_id),
sub_platform_id = VALUES(sub_platform_id),
error_info = VALUES(error_info),
custom_type = VALUES(custom_type),
sendbill_template_id = VALUES(sendbill_template_id),
customer_id = VALUES(customer_id),
warehouse_type = VALUES(warehouse_type),
operator_id = VALUES(operator_id),
outer_no = VALUES(outer_no),
consign_status = VALUES(consign_status),
goods_type_count = VALUES(goods_type_count),
calc_post_cost = VALUES(calc_post_cost),
batch_no = VALUES(batch_no),
created_date = VALUES(created_date),
fenxiao_tid = VALUES(fenxiao_tid),
fenxiao_nick_no = VALUES(fenxiao_nick_no),
post_cost = VALUES(post_cost),
freeze_reason = VALUES(freeze_reason),
freeze_reason_name = VALUES(freeze_reason_name),
package_id = VALUES(package_id),
fenxiao_alias = VALUES(fenxiao_alias),
fenxiao_order_type = VALUES(fenxiao_order_type),
packager_no = VALUES(packager_no),
sorter_id = VALUES(sorter_id),
sorter_name = VALUES(sorter_name),
checkouter_id = VALUES(checkouter_id),
checkouter_name = VALUES(checkouter_name),
checker_id = VALUES(checker_id),
checker_name = VALUES(checker_name),
pick_group_name = VALUES(pick_group_name),
fenxiao_shop_name = VALUES(fenxiao_shop_name),
wms_code = VALUES(wms_code),
stockout_flag_name = VALUES(stockout_flag_name),
src_order_id = VALUES(src_order_id),
picker_id = VALUES(picker_id),
packager_id = VALUES(packager_id),
consigner_id = VALUES(consigner_id),
examiner_id = VALUES(examiner_id),
fenxiao_distributor_order_type = VALUES(fenxiao_distributor_order_type),
fenxiao_distributor_id = VALUES(fenxiao_distributor_id),
fenxiao_distributor_name = VALUES(fenxiao_distributor_name),
anchor_name = VALUES(anchor_name),
assist_achor_name = VALUES(assist_achor_name),
control_achor_name = VALUES(control_achor_name),
operation_anchor_name = VALUES(operation_anchor_name),
update_by = VALUES(update_by),
update_user_id = VALUES(update_user_id),
update_time = VALUES(update_time)
</insert>
<!-- 批量插入或更新销售出库单 -->
<insert
id=
"insertOrUpdateBatch"
parameterType=
"java.util.List"
>
INSERT INTO wdt_qimen_stockout_order (
stockout_id,
order_no,
virtual_warehouse_no,
virtual_warehouse_name,
src_order_no,
warehouse_no,
warehouse_name,
consign_time,
order_type,
goods_count,
logistics_no,
receiver_name,
receiver_country,
receiver_province,
receiver_city,
receiver_district,
receiver_address,
receiver_mobile,
receiver_telno,
receiver_zip,
receiver_area,
remark,
weight,
block_reason,
logistics_type,
logistics_code,
logistics_name,
shop_id,
warehouse_id,
logistics_id,
bad_reason,
receiver_dtb,
refund_status,
trade_type,
salesman_no,
fullname,
picker_name,
examiner_name,
consigner_name,
printer_name,
packager_name,
trade_status,
trade_no,
src_trade_no,
nick_name,
customer_no,
customer_name,
trade_time,
pay_time,
flag_name,
post_amount,
id_card_type,
id_card,
shop_name,
shop_no,
shop_remark,
status,
invoice_type,
invoice_id,
cod_amount,
delivery_term,
platform_id,
platform_name,
trade_id,
employee_no,
discount,
tax,
tax_rate,
currency,
created,
stock_check_time,
print_remark,
buyer_message,
cs_remark,
invoice_title,
invoice_content,
post_fee,
package_fee,
receivable,
goods_total_cost,
goods_total_amount,
modified,
fenxiao_nick,
fenxiao_id,
fenxiao_name,
trade_label,
trade_from,
picklist_no,
picklist_seq,
logistics_print_status,
paid,
shop_platform_id,
sub_platform_id,
error_info,
custom_type,
sendbill_template_id,
customer_id,
warehouse_type,
operator_id,
outer_no,
consign_status,
goods_type_count,
calc_post_cost,
batch_no,
created_date,
fenxiao_tid,
fenxiao_nick_no,
post_cost,
freeze_reason,
freeze_reason_name,
package_id,
fenxiao_alias,
fenxiao_order_type,
packager_no,
sorter_id,
sorter_name,
checkouter_id,
checkouter_name,
checker_id,
checker_name,
pick_group_name,
fenxiao_shop_name,
wms_code,
stockout_flag_name,
src_order_id,
picker_id,
packager_id,
consigner_id,
examiner_id,
fenxiao_distributor_order_type,
fenxiao_distributor_id,
fenxiao_distributor_name,
anchor_name,
assist_achor_name,
control_achor_name,
operation_anchor_name,
create_by,
create_user_id,
update_by,
update_user_id,
del_flag,
create_time,
update_time
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.stockoutId},
#{item.orderNo},
#{item.virtualWarehouseNo},
#{item.virtualWarehouseName},
#{item.srcOrderNo},
#{item.warehouseNo},
#{item.warehouseName},
#{item.consignTime},
#{item.orderType},
#{item.goodsCount},
#{item.logisticsNo},
#{item.receiverName},
#{item.receiverCountry},
#{item.receiverProvince},
#{item.receiverCity},
#{item.receiverDistrict},
#{item.receiverAddress},
#{item.receiverMobile},
#{item.receiverTelno},
#{item.receiverZip},
#{item.receiverArea},
#{item.remark},
#{item.weight},
#{item.blockReason},
#{item.logisticsType},
#{item.logisticsCode},
#{item.logisticsName},
#{item.shopId},
#{item.warehouseId},
#{item.logisticsId},
#{item.badReason},
#{item.receiverDtb},
#{item.refundStatus},
#{item.tradeType},
#{item.salesmanNo},
#{item.fullname},
#{item.pickerName},
#{item.examinerName},
#{item.consignerName},
#{item.printerName},
#{item.packagerName},
#{item.tradeStatus},
#{item.tradeNo},
#{item.srcTradeNo},
#{item.nickName},
#{item.customerNo},
#{item.customerName},
#{item.tradeTime},
#{item.payTime},
#{item.flagName},
#{item.postAmount},
#{item.idCardType},
#{item.idCard},
#{item.shopName},
#{item.shopNo},
#{item.shopRemark},
#{item.status},
#{item.invoiceType},
#{item.invoiceId},
#{item.codAmount},
#{item.deliveryTerm},
#{item.platformId},
#{item.platformName},
#{item.tradeId},
#{item.employeeNo},
#{item.discount},
#{item.tax},
#{item.taxRate},
#{item.currency},
#{item.created},
#{item.stockCheckTime},
#{item.printRemark},
#{item.buyerMessage},
#{item.csRemark},
#{item.invoiceTitle},
#{item.invoiceContent},
#{item.postFee},
#{item.packageFee},
#{item.receivable},
#{item.goodsTotalCost},
#{item.goodsTotalAmount},
#{item.modified},
#{item.fenxiaoNick},
#{item.fenxiaoId},
#{item.fenxiaoName},
#{item.tradeLabel},
#{item.tradeFrom},
#{item.picklistNo},
#{item.picklistSeq},
#{item.logisticsPrintStatus},
#{item.paid},
#{item.shopPlatformId},
#{item.subPlatformId},
#{item.errorInfo},
#{item.customType},
#{item.sendbillTemplateId},
#{item.customerId},
#{item.warehouseType},
#{item.operatorId},
#{item.outerNo},
#{item.consignStatus},
#{item.goodsTypeCount},
#{item.calcPostCost},
#{item.batchNo},
#{item.createdDate},
#{item.fenxiaoTid},
#{item.fenxiaoNickNo},
#{item.postCost},
#{item.freezeReason},
#{item.freezeReasonName},
#{item.packageId},
#{item.fenxiaoAlias},
#{item.fenxiaoOrderType},
#{item.packagerNo},
#{item.sorterId},
#{item.sorterName},
#{item.checkouterId},
#{item.checkouterName},
#{item.checkerId},
#{item.checkerName},
#{item.pickGroupName},
#{item.fenxiaoShopName},
#{item.wmsCode},
#{item.stockoutFlagName},
#{item.srcOrderId},
#{item.pickerId},
#{item.packagerId},
#{item.consignerId},
#{item.examinerId},
#{item.fenxiaoDistributorOrderType},
#{item.fenxiaoDistributorId},
#{item.fenxiaoDistributorName},
#{item.anchorName},
#{item.assistAchorName},
#{item.controlAchorName},
#{item.operationAnchorName},
#{item.createBy},
#{item.createUserId},
#{item.updateBy},
#{item.updateUserId},
#{item.delFlag},
#{item.createTime},
#{item.updateTime}
)
</foreach>
ON DUPLICATE KEY UPDATE
virtual_warehouse_no = VALUES(virtual_warehouse_no),
virtual_warehouse_name = VALUES(virtual_warehouse_name),
src_order_no = VALUES(src_order_no),
warehouse_no = VALUES(warehouse_no),
warehouse_name = VALUES(warehouse_name),
consign_time = VALUES(consign_time),
order_type = VALUES(order_type),
goods_count = VALUES(goods_count),
logistics_no = VALUES(logistics_no),
receiver_name = VALUES(receiver_name),
receiver_country = VALUES(receiver_country),
receiver_province = VALUES(receiver_province),
receiver_city = VALUES(receiver_city),
receiver_district = VALUES(receiver_district),
receiver_address = VALUES(receiver_address),
receiver_mobile = VALUES(receiver_mobile),
receiver_telno = VALUES(receiver_telno),
receiver_zip = VALUES(receiver_zip),
receiver_area = VALUES(receiver_area),
remark = VALUES(remark),
weight = VALUES(weight),
block_reason = VALUES(block_reason),
logistics_type = VALUES(logistics_type),
logistics_code = VALUES(logistics_code),
logistics_name = VALUES(logistics_name),
shop_id = VALUES(shop_id),
warehouse_id = VALUES(warehouse_id),
logistics_id = VALUES(logistics_id),
bad_reason = VALUES(bad_reason),
receiver_dtb = VALUES(receiver_dtb),
refund_status = VALUES(refund_status),
trade_type = VALUES(trade_type),
salesman_no = VALUES(salesman_no),
fullname = VALUES(fullname),
picker_name = VALUES(picker_name),
examiner_name = VALUES(examiner_name),
consigner_name = VALUES(consigner_name),
printer_name = VALUES(printer_name),
packager_name = VALUES(packager_name),
trade_status = VALUES(trade_status),
trade_no = VALUES(trade_no),
src_trade_no = VALUES(src_trade_no),
nick_name = VALUES(nick_name),
customer_no = VALUES(customer_no),
customer_name = VALUES(customer_name),
trade_time = VALUES(trade_time),
pay_time = VALUES(pay_time),
flag_name = VALUES(flag_name),
post_amount = VALUES(post_amount),
id_card_type = VALUES(id_card_type),
id_card = VALUES(id_card),
shop_name = VALUES(shop_name),
shop_no = VALUES(shop_no),
shop_remark = VALUES(shop_remark),
status = VALUES(status),
invoice_type = VALUES(invoice_type),
invoice_id = VALUES(invoice_id),
cod_amount = VALUES(cod_amount),
delivery_term = VALUES(delivery_term),
platform_id = VALUES(platform_id),
platform_name = VALUES(platform_name),
trade_id = VALUES(trade_id),
employee_no = VALUES(employee_no),
discount = VALUES(discount),
tax = VALUES(tax),
tax_rate = VALUES(tax_rate),
currency = VALUES(currency),
created = VALUES(created),
stock_check_time = VALUES(stock_check_time),
print_remark = VALUES(print_remark),
buyer_message = VALUES(buyer_message),
cs_remark = VALUES(cs_remark),
invoice_title = VALUES(invoice_title),
invoice_content = VALUES(invoice_content),
post_fee = VALUES(post_fee),
package_fee = VALUES(package_fee),
receivable = VALUES(receivable),
goods_total_cost = VALUES(goods_total_cost),
goods_total_amount = VALUES(goods_total_amount),
modified = VALUES(modified),
fenxiao_nick = VALUES(fenxiao_nick),
fenxiao_id = VALUES(fenxiao_id),
fenxiao_name = VALUES(fenxiao_name),
trade_label = VALUES(trade_label),
trade_from = VALUES(trade_from),
picklist_no = VALUES(picklist_no),
picklist_seq = VALUES(picklist_seq),
logistics_print_status = VALUES(logistics_print_status),
paid = VALUES(paid),
shop_platform_id = VALUES(shop_platform_id),
sub_platform_id = VALUES(sub_platform_id),
error_info = VALUES(error_info),
custom_type = VALUES(custom_type),
sendbill_template_id = VALUES(sendbill_template_id),
customer_id = VALUES(customer_id),
warehouse_type = VALUES(warehouse_type),
operator_id = VALUES(operator_id),
outer_no = VALUES(outer_no),
consign_status = VALUES(consign_status),
goods_type_count = VALUES(goods_type_count),
calc_post_cost = VALUES(calc_post_cost),
batch_no = VALUES(batch_no),
created_date = VALUES(created_date),
fenxiao_tid = VALUES(fenxiao_tid),
fenxiao_nick_no = VALUES(fenxiao_nick_no),
post_cost = VALUES(post_cost),
freeze_reason = VALUES(freeze_reason),
freeze_reason_name = VALUES(freeze_reason_name),
package_id = VALUES(package_id),
fenxiao_alias = VALUES(fenxiao_alias),
fenxiao_order_type = VALUES(fenxiao_order_type),
packager_no = VALUES(packager_no),
sorter_id = VALUES(sorter_id),
sorter_name = VALUES(sorter_name),
checkouter_id = VALUES(checkouter_id),
checkouter_name = VALUES(checkouter_name),
checker_id = VALUES(checker_id),
checker_name = VALUES(checker_name),
pick_group_name = VALUES(pick_group_name),
fenxiao_shop_name = VALUES(fenxiao_shop_name),
wms_code = VALUES(wms_code),
stockout_flag_name = VALUES(stockout_flag_name),
src_order_id = VALUES(src_order_id),
picker_id = VALUES(picker_id),
packager_id = VALUES(packager_id),
consigner_id = VALUES(consigner_id),
examiner_id = VALUES(examiner_id),
fenxiao_distributor_order_type = VALUES(fenxiao_distributor_order_type),
fenxiao_distributor_id = VALUES(fenxiao_distributor_id),
fenxiao_distributor_name = VALUES(fenxiao_distributor_name),
anchor_name = VALUES(anchor_name),
assist_achor_name = VALUES(assist_achor_name),
control_achor_name = VALUES(control_achor_name),
operation_anchor_name = VALUES(operation_anchor_name),
update_by = VALUES(update_by),
update_user_id = VALUES(update_user_id),
update_time = VALUES(update_time)
</insert>
</mapper>
\ No newline at end of file
src/main/resources/mapper/order/WdtQimenStockoutPositionDetailMapper.xml
0 → 100644
浏览文件 @
1b6f3a72
<?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=
"com.sfa.job.domain.order.mapper.WdtQimenStockoutPositionDetailMapper"
>
<!-- 批量插入或更新出库货位明细 -->
<insert
id=
"insertOrUpdateBatch"
parameterType=
"java.util.List"
>
INSERT INTO wdt_qimen_stockout_position_detail (
rec_id,
stockout_detail_id,
position_id,
position_no,
expire_date,
production_date,
batch_no,
position_goods_count,
batch_remark,
create_time,
update_time
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.recId},
#{item.stockoutDetailId},
#{item.positionId},
#{item.positionNo},
#{item.expireDate},
#{item.productionDate},
#{item.batchNo},
#{item.positionGoodsCount},
#{item.batchRemark},
#{item.createTime},
#{item.updateTime}
)
</foreach>
ON DUPLICATE KEY UPDATE
stockout_detail_id = VALUES(stockout_detail_id),
position_id = VALUES(position_id),
position_no = VALUES(position_no),
expire_date = VALUES(expire_date),
production_date = VALUES(production_date),
batch_no = VALUES(batch_no),
position_goods_count = VALUES(position_goods_count),
batch_remark = VALUES(batch_remark),
update_time = VALUES(update_time)
</insert>
</mapper>
src/test/java/com/sfa/job/service/feishu/EventCallbackServiceImplTest.java
浏览文件 @
1b6f3a72
...
@@ -27,9 +27,9 @@ public class EventCallbackServiceImplTest {
...
@@ -27,9 +27,9 @@ public class EventCallbackServiceImplTest {
eventCallbackService
.
userResigned
(
"7566837232418670089"
);
eventCallbackService
.
userResigned
(
"7566837232418670089"
);
}
}
public
static
void
main
(
String
[]
args
)
{
//
public static void main(String[] args) {
String
offboardingDate
=
"2025-11-28"
;
//
String offboardingDate = "2025-11-28";
Date
date
=
DateUtils
.
parseDate
(
offboardingDate
);
//
Date date = DateUtils.parseDate(offboardingDate);
System
.
out
.
println
(
date
);
//
System.out.println(date);
}
//
}
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论