Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
e1c3cc63
提交
e1c3cc63
authored
9月 14, 2024
作者:
刘海泉
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master' into v22.7_order_delay_20240827
上级
bd24bb2d
20e62f33
隐藏空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
363 行增加
和
83 行删除
+363
-83
AppEnum.java
...-api/src/main/java/com/clx/performance/enums/AppEnum.java
+1
-3
InputOutputEnum.java
.../main/java/com/clx/performance/enums/InputOutputEnum.java
+32
-0
SaleBuyEnum.java
.../src/main/java/com/clx/performance/enums/SaleBuyEnum.java
+32
-0
pom.xml
performance-web/pom.xml
+2
-2
PushOrderChildExpectTimeJob.java
.../com/clx/performance/job/PushOrderChildExpectTimeJob.java
+5
-1
WeighingOderPictureJob.java
.../java/com/clx/performance/job/WeighingOderPictureJob.java
+13
-34
SettlementJob.java
...ava/com/clx/performance/job/settlement/SettlementJob.java
+59
-0
OrderGoodsDtsListener.java
...a/com/clx/performance/listener/OrderGoodsDtsListener.java
+1
-0
OrderGoodsMapper.java
...ain/java/com/clx/performance/mapper/OrderGoodsMapper.java
+1
-0
OrderChildService.java
...n/java/com/clx/performance/service/OrderChildService.java
+2
-2
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+48
-21
OrderChildWeighPictureServiceImpl.java
...mance/service/impl/OrderChildWeighPictureServiceImpl.java
+13
-9
OrderGoodsServiceImpl.java
...m/clx/performance/service/impl/OrderGoodsServiceImpl.java
+15
-4
PerformanceProgressServiceImpl.java
...formance/service/impl/PerformanceProgressServiceImpl.java
+13
-5
OrderChildBrokerServiceImpl.java
...ance/service/impl/broker/OrderChildBrokerServiceImpl.java
+2
-1
OrderChildWeighPictureStruct.java
.../clx/performance/struct/OrderChildWeighPictureStruct.java
+1
-1
OpenClient.java
...nce-web/src/main/java/com/msl/common/open/OpenClient.java
+123
-0
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/AppEnum.java
浏览文件 @
e1c3cc63
...
...
@@ -4,9 +4,7 @@ import lombok.AllArgsConstructor;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.concurrent.ConcurrentHashMap
;
public
enum
AppEnum
{
;
...
...
@@ -15,7 +13,7 @@ public enum AppEnum {
@AllArgsConstructor
public
enum
UniqueIdentifier
{
SMART_WEIGHT
(
1
,
"场站-smart-weight
"
),
LMS_MANAGE
(
1
,
"物流子系统-lms-manage
"
),
PURCHASE_MANAGE
(
2
,
"供应链-purchase-manage"
),
;
...
...
performance-api/src/main/java/com/clx/performance/enums/InputOutputEnum.java
0 → 100644
浏览文件 @
e1c3cc63
package
com
.
clx
.
performance
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Optional
;
public
enum
InputOutputEnum
{
;
@Getter
@AllArgsConstructor
public
enum
Type
{
INPUT
(
1
,
"进场"
),
OUTPUT
(
2
,
"出场"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
Type
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
Type:
:
getMsg
).
orElse
(
null
);
}
}
}
performance-api/src/main/java/com/clx/performance/enums/SaleBuyEnum.java
0 → 100644
浏览文件 @
e1c3cc63
package
com
.
clx
.
performance
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Optional
;
public
enum
SaleBuyEnum
{
;
@Getter
@AllArgsConstructor
public
enum
Type
{
SALE
(
1
,
"销售"
),
BUY
(
2
,
"采购"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
Type
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
Type:
:
getMsg
).
orElse
(
null
);
}
}
}
performance-web/pom.xml
浏览文件 @
e1c3cc63
...
...
@@ -99,8 +99,8 @@
</dependency>
<dependency>
<groupId>
com.s
mart
</groupId>
<artifactId>
smart-weight
-sdk
</artifactId>
<groupId>
com.s
cm
</groupId>
<artifactId>
lms-manage
-sdk
</artifactId>
</dependency>
...
...
performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java
浏览文件 @
e1c3cc63
...
...
@@ -104,7 +104,11 @@ public class PushOrderChildExpectTimeJob {
}
if
(
Objects
.
equals
(
orderSourceMap
.
get
(
item
.
getOrderNo
()),
SyncPlatformEnum
.
Source
.
TRADE_PLATFORM
.
getCode
())){
syncSmbExpectList
.
add
(
dto
);
}
else
{
//集煤宝的运单预计时间也要同步给马上来供应链,马上来供应链同步给场站
syncNewOwnerClientExpectList
.
add
(
dto
);
}
if
(
Objects
.
equals
(
orderSourceMap
.
get
(
item
.
getOrderNo
()),
SyncPlatformEnum
.
Source
.
NEW_OWNER_CLIENT
.
getCode
())){
syncNewOwnerClientExpectList
.
add
(
dto
);
}
}
...
...
performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java
浏览文件 @
e1c3cc63
package
com
.
clx
.
performance
.
job
;
import
com.clx.performance.config.LoadAppConfig
;
import
com.clx.performance.config.PerformanceSmartCompanyNoConfig
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildWeighPictureDao
;
import
com.clx.performance.enums.AppEnum
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.
model.App
;
import
com.clx.performance.
enums.SaleBuyEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChildWeighPicture
;
import
com.clx.performance.service.OrderChildService
;
import
com.clx.performance.struct.OrderChildWeighPictureStruct
;
import
com.msl.common.job.JobLog
;
import
com.msl.common.open.OpenClient
;
import
com.msl.common.open.RequestConfig
;
import
com.msl.common.result.Result
;
import
com.smart.weight.action.WeighingSignatureAction
;
import
com.smart.weight.dto.WeighingSignatureDto
;
import
com.smart.business.sdk.request.dto.WeighingSignatureDto
;
import
com.smart.business.sdk.request.dto.WeightChildSignatureDto
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -44,10 +39,7 @@ public class WeighingOderPictureJob{
private
OrderChildWeighPictureDao
pictureDao
;
@Autowired
private
PerformanceSmartCompanyNoConfig
companyNoConfig
;
@Autowired
private
LoadAppConfig
loadAppConfig
;
private
OrderChildService
orderChildService
;
/**
...
...
@@ -78,34 +70,21 @@ public class WeighingOderPictureJob{
//查询运单下的电子磅单数据
if
(
CollectionUtils
.
isNotEmpty
(
orderChilds
)){
App
app
=
loadAppConfig
.
getApp
(
AppEnum
.
UniqueIdentifier
.
SMART_WEIGHT
.
getCode
());
//对接场站配置信息
//组装配置信息
RequestConfig
config
=
new
RequestConfig
()
.
setAppId
(
app
.
getAppNo
())
.
setAppKey
(
app
.
getAppKey
())
.
setGatewayUrl
(
app
.
getCallback
());
//集合对象
List
<
OrderChildWeighPicture
>
pictures
=
new
ArrayList
<>();
for
(
OrderChild
orderChild:
orderChilds
){
//通过运单号码查询电子磅单图片
WeighingSignatureAction
weightAction
=
new
WeighingSignatureAction
();
weightAction
.
setChildNo
(
orderChild
.
getChildNo
());
weightAction
.
setCustomerRelationNo
(
String
.
valueOf
(
companyNoConfig
.
getCompanyNo
()));
log
.
info
(
"job请求电子磅单参数,{}"
,
weightAction
);
Result
<
List
<
WeighingSignatureDto
>>
weighSignature
=
OpenClient
.
doAction
(
config
,
weightAction
);
log
.
info
(
"job请求电子磅单返回结果,{}"
,
weighSignature
);
//通过运单号查询电子磅单图片
WeightChildSignatureDto
weighingSignature
=
orderChildService
.
getWeighingSignature
(
orderChild
.
getChildNo
(),
SaleBuyEnum
.
Type
.
BUY
.
getCode
());
//数据处理
if
(
!
Objects
.
equals
(
weighSignature
.
getCode
(),
0
)){
if
(
Objects
.
isNull
(
weighingSignature
)
||
CollectionUtils
.
isEmpty
(
weighingSignature
.
getWeighingSignatureList
()
)){
continue
;
}
List
<
WeighingSignatureDto
>
weighSignatures
=
weighSignature
.
getData
();
if
(
CollectionUtils
.
isNotEmpty
(
weighSignatures
))
{
for
(
WeighingSignatureDto
weighingSignatureDto:
weighSignatures
){
OrderChildWeighPicture
picture
=
pictureStruct
.
convert
(
weighingSignatureDto
);
picture
.
setChildNo
(
orderChild
.
getChildNo
());
//对象转换
pictures
.
add
(
picture
);
}
List
<
WeighingSignatureDto
>
weighingSignatureList
=
weighingSignature
.
getWeighingSignatureList
();
for
(
WeighingSignatureDto
weighingSignatureDto:
weighingSignatureList
){
OrderChildWeighPicture
picture
=
pictureStruct
.
convert
(
weighingSignatureDto
);
picture
.
setChildNo
(
orderChild
.
getChildNo
());
//对象转换
pictures
.
add
(
picture
);
}
}
...
...
performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java
浏览文件 @
e1c3cc63
...
...
@@ -9,6 +9,7 @@ import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import
com.clx.performance.model.settle.OrderChildSyncTransportRecord
;
import
com.clx.performance.model.settle.SettlementOwner
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.service.broker.OrderChildBrokerMqService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.msl.common.job.JobLog
;
import
com.xxl.job.core.context.XxlJobHelper
;
...
...
@@ -36,6 +37,7 @@ public class SettlementJob {
private
final
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
private
final
SettlementOwnerDao
settlementOwnerDao
;
private
final
OrderChildSyncTransportRecordDao
orderChildSyncTransportRecordDao
;
private
final
OrderChildBrokerMqService
orderChildBrokerMqService
;
/**
* 同步无车承运运单开票类型
...
...
@@ -129,4 +131,61 @@ public class SettlementJob {
}
}
/**
* 网络货运运单更新(测试)
*/
@XxlJob
(
"settlementBrokerOrderChildUpdateTest"
)
public
void
settlementBrokerOrderChildUpdateTest
()
{
try
{
List
<
String
>
childNoList
=
null
;
String
jobParam
=
XxlJobHelper
.
getJobParam
();
log
.
info
(
"网络货运运单更新, param:{}"
,
jobParam
);
if
(
StringUtils
.
isNotBlank
(
jobParam
))
{
childNoList
=
JSON
.
parseArray
(
jobParam
,
String
.
class
);
}
if
(
childNoList
==
null
||
childNoList
.
isEmpty
())
{
return
;
}
for
(
String
childNo
:
childNoList
)
{
// 发送mq (运单更新)
orderChildBrokerMqService
.
orderChildUpdate
(
childNo
);
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"网络货运运单更新失败,msg:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"网络货运运单更新失败"
,
e
);
}
}
/**
* 网络货运运单同步(测试)
*/
@XxlJob
(
"settlementBrokerOrderChildSyncTest"
)
public
void
settlementBrokerOrderChildSyncTest
()
{
try
{
List
<
String
>
childNoList
=
null
;
String
jobParam
=
XxlJobHelper
.
getJobParam
();
log
.
info
(
"网络货运运单同步, param:{}"
,
jobParam
);
if
(
StringUtils
.
isNotBlank
(
jobParam
))
{
childNoList
=
JSON
.
parseArray
(
jobParam
,
String
.
class
);
}
if
(
childNoList
==
null
||
childNoList
.
isEmpty
())
{
return
;
}
for
(
String
childNo
:
childNoList
)
{
// 发送mq (运单同步)
orderChildBrokerMqService
.
orderChildSync
(
childNo
);
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"网络货运运单同步失败,msg:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"网络货运运单同步失败"
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java
浏览文件 @
e1c3cc63
...
...
@@ -74,6 +74,7 @@ public class OrderGoodsDtsListener {
if
(
Objects
.
equals
(
updateType
,
DtsOperationTypeEnum
.
UPDATE
.
getCode
())
&&
(!
Objects
.
equals
(
before
.
getOrderGoodsStatus
(),
after
.
getOrderGoodsStatus
())
||
!
Objects
.
equals
(
before
.
getSeniorLogisticsManagerId
(),
after
.
getSeniorLogisticsManagerId
())
||
!
Objects
.
equals
(
before
.
getExtractWeight
(),
after
.
getExtractWeight
())
||
!
Objects
.
equals
(
before
.
getPendingOrderFreight
(),
after
.
getPendingOrderFreight
())
)){
isSend
=
true
;
...
...
performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java
浏览文件 @
e1c3cc63
...
...
@@ -39,6 +39,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@Update
(
" update order_goods set "
+
" already_transport_weight = already_transport_weight - #{residueWeight},"
+
" extract_weight = already_transport_weight,"
+
"order_goods_status = #{orderGoodsStatus} "
+
" where id = #{id}"
)
void
updateOrderGoodsWeightAlreadyAndStatus
(
@Param
(
"id"
)
Integer
id
,
@Param
(
"residueWeight"
)
BigDecimal
residueWeight
,
@Param
(
"orderGoodsStatus"
)
Integer
orderGoodsStatus
);
...
...
performance-web/src/main/java/com/clx/performance/service/OrderChildService.java
浏览文件 @
e1c3cc63
...
...
@@ -13,7 +13,7 @@ import com.clx.performance.vo.app.owner.OwnerOrderChildVO;
import
com.clx.performance.vo.pc.*
;
import
com.clx.performance.vo.pc.child.UpdateCarrierBatchCancelVO
;
import
com.msl.common.base.PageParam
;
import
com.smart.
weight.dto.Weighing
SignatureDto
;
import
com.smart.
business.sdk.request.dto.WeightChild
SignatureDto
;
import
org.apache.poi.xssf.streaming.SXSSFWorkbook
;
import
java.math.BigDecimal
;
...
...
@@ -121,5 +121,5 @@ public interface OrderChildService {
UpdateCarrierBatchCancelVO
updateCarrierBatchCancel
(
OrderChildCarrierBatchCancelParam
param
);
List
<
WeighingSignatureDto
>
getWeighingSignature
(
String
childNo
);
WeightChildSignatureDto
getWeighingSignature
(
String
childNo
,
Integer
type
);
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
e1c3cc63
...
...
@@ -93,8 +93,9 @@ import com.purchase.manage.action.SupplyChainSupervisionLoadAction;
import
com.purchase.manage.action.SupplyChainSupervisionLoadTruckAction
;
import
com.purchase.manage.dto.SupervisionLoadInfoDto
;
import
com.purchase.manage.dto.SupervisionLoadTruckInfoDto
;
import
com.smart.weight.action.WeighingSignatureAction
;
import
com.smart.weight.dto.WeighingSignatureDto
;
import
com.scm.lms.manage.action.LmsWeighingSignatureAction
;
import
com.smart.business.sdk.request.dto.WeighingSignatureDto
;
import
com.smart.business.sdk.request.dto.WeightChildSignatureDto
;
import
com.tencentcloudapi.common.Credential
;
import
com.tencentcloudapi.common.exception.TencentCloudSDKException
;
import
com.tencentcloudapi.ocr.v20181119.OcrClient
;
...
...
@@ -2186,7 +2187,6 @@ public class OrderChildServiceImpl implements OrderChildService {
result
.
setPoundRemark
(
orderChildPoundAuditDao
.
getPoundAuditDetail
(
childNo
).
orNull
().
getRemark
());
}
//首次回显过磅电子磅单,其他情况回显用户上传的图片
List
<
OrderChildImage
>
imageList
=
orderChildImageDao
.
listLoadAndUnload
(
childNo
).
orElse
(
new
ArrayList
<>());
result
.
setLoadImageList
(
imageList
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
LOAD
.
getCode
())).
map
(
...
...
@@ -2195,11 +2195,6 @@ public class OrderChildServiceImpl implements OrderChildService {
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
UNLOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
if
(
CollectionUtils
.
isEmpty
(
result
.
getUnloadImageList
())){
result
.
setUnloadImageList
(
getWeighingSignature
(
childNo
).
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
2
)).
map
(
item
->
item
.
getOriginalImg
()).
collect
(
Collectors
.
toList
()));
//获取电子磅单图片
}
result
.
setArriveSendTime
(
orderChild
.
getArriveSendTime
()==
null
?
null
:
convertLocalDateTimeToDefaultString
(
orderChild
.
getArriveSendTime
()));
result
.
setFirstLoadTime
(
orderChild
.
getFirstLoadTime
()==
null
?
null
:
convertLocalDateTimeToDefaultString
(
orderChild
.
getFirstLoadTime
()));
...
...
@@ -2208,6 +2203,32 @@ public class OrderChildServiceImpl implements OrderChildService {
result
.
setLoadTime
(
orderChild
.
getLoadTime
()==
null
?
null
:
convertLocalDateTimeToDefaultString
(
orderChild
.
getLoadTime
()));
result
.
setUnloadTime
(
orderChild
.
getUnloadTime
()==
null
?
null
:
convertLocalDateTimeToDefaultString
(
orderChild
.
getUnloadTime
()));
//首次回显过磅电子磅单,其他情况回显用户上传的图片
WeightChildSignatureDto
weighingSignature
=
getWeighingSignature
(
childNo
,
SaleBuyEnum
.
Type
.
BUY
.
getCode
());
//获取电子磅单图片 类型:1-销售,2-采购
if
(
Objects
.
nonNull
(
weighingSignature
)){
if
(
CollectionUtils
.
isEmpty
(
result
.
getUnloadImageList
())){
//卸车图片
if
(
CollectionUtils
.
isNotEmpty
(
weighingSignature
.
getWeighingSignatureList
())){
//有电子磅单
result
.
setUnloadImageList
(
weighingSignature
.
getWeighingSignatureList
().
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
InputOutputEnum
.
Type
.
OUTPUT
.
getCode
())).
map
(
item
->
item
.
getOriginalImg
())
.
collect
(
Collectors
.
toList
()));
//获取出场电子磅单图片 后期优化优先获取盖章图片 目前电子签章是pdf
}
}
if
(
Objects
.
isNull
(
result
.
getUnloadTare
())){
//卸车皮重
result
.
setUnloadTare
(
weighingSignature
.
getTare
());
}
if
(
Objects
.
isNull
(
result
.
getUnloadNet
())){
//卸车净重
result
.
setUnloadNet
(
weighingSignature
.
getNet
());
}
if
(
Objects
.
isNull
(
result
.
getUnloadRough
())){
//卸车毛重
result
.
setUnloadRough
(
weighingSignature
.
getRough
());
}
if
(
StringUtils
.
isBlank
(
result
.
getUnloadTime
())){
//卸车时间
result
.
setUnloadTime
(
weighingSignature
.
getOutTime
()
==
null
?
null
:
convertLocalDateTimeToDefaultString
(
weighingSignature
.
getOutTime
()));
}
}
return
result
;
}
...
...
@@ -2665,8 +2686,8 @@ public class OrderChildServiceImpl implements OrderChildService {
FeignAddressVO
data
=
addressFeign
.
getSendAndReceiveAddress
(
orderChild
.
getSendAddressId
(),
orderChild
.
getReceiveAddressId
()).
getData
();
FeignAddressVO
.
Address
sendAddress
=
data
.
getSendAddress
();
FeignAddressVO
.
Address
receiveAddress
=
data
.
getReceiveAddress
();
carrierOrderChildDetailVO
.
setSendDetailAddress
(
sendAddress
.
get
Province
()+
sendAddress
.
getCity
()+
sendAddress
.
getCounty
()+
sendAddress
.
get
Address
());
carrierOrderChildDetailVO
.
setReceiveDetailAddress
(
receiveAddress
.
get
Province
()+
receiveAddress
.
getCity
()+
receiveAddress
.
getCounty
()+
receiveAddress
.
get
Address
());
carrierOrderChildDetailVO
.
setSendDetailAddress
(
sendAddress
.
getAddress
());
carrierOrderChildDetailVO
.
setReceiveDetailAddress
(
receiveAddress
.
getAddress
());
return
carrierOrderChildDetailVO
;
}
...
...
@@ -3506,11 +3527,15 @@ public class OrderChildServiceImpl implements OrderChildService {
return
null
;
}
List
<
String
>
images
=
getWeighingSignature
(
param
.
getChildNo
()).
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
2
)).
map
(
item
->
item
.
getOriginalImg
()).
collect
(
Collectors
.
toList
());
//获取电子磅单图片
if
(
CollectionUtils
.
isNotEmpty
(
images
)){
return
null
;
WeightChildSignatureDto
weighingSignature
=
getWeighingSignature
(
param
.
getChildNo
(),
SaleBuyEnum
.
Type
.
BUY
.
getCode
());
//获取电子磅单图片
if
(
Objects
.
nonNull
(
weighingSignature
)
&&
CollectionUtils
.
isNotEmpty
(
weighingSignature
.
getWeighingSignatureList
())){
//出场图片
List
<
String
>
images
=
weighingSignature
.
getWeighingSignatureList
().
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
InputOutputEnum
.
Type
.
OUTPUT
.
getCode
())).
map
(
item
->
StringUtils
.
isNotBlank
(
item
.
getSignImg
())?
item
.
getSignImg
():
item
.
getOriginalImg
())
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
images
)){
return
null
;
}
}
try
{
...
...
@@ -3781,28 +3806,30 @@ public class OrderChildServiceImpl implements OrderChildService {
/**
* 通过运单号获取电子磅单相关信息
* @param childNo
* @param type 1 销售 2 采购
* @return
*/
public
List
<
WeighingSignatureDto
>
getWeighingSignature
(
String
childNo
){
App
app
=
loadAppConfig
.
getApp
(
AppEnum
.
UniqueIdentifier
.
SMART_WEIGHT
.
getCode
());
//对接场站
配置信息
public
WeightChildSignatureDto
getWeighingSignature
(
String
childNo
,
Integer
type
){
App
app
=
loadAppConfig
.
getApp
(
AppEnum
.
UniqueIdentifier
.
LMS_MANAGE
.
getCode
());
//对接物流子系统
配置信息
//组装配置信息
RequestConfig
config
=
new
RequestConfig
()
.
setAppId
(
app
.
getAppNo
())
.
setAppKey
(
app
.
getAppKey
())
.
setGatewayUrl
(
app
.
getCallback
());
//通过运单号码查询电子磅单图片
WeighingSignatureAction
weightAction
=
new
WeighingSignatureAction
();
LmsWeighingSignatureAction
weightAction
=
new
Lms
WeighingSignatureAction
();
weightAction
.
setChildNo
(
childNo
);
weightAction
.
setCustomerRelationNo
(
String
.
valueOf
(
companyNoConfig
.
getCompanyNo
()));
weightAction
.
setType
(
type
);
log
.
info
(
"接口请求电子磅单参数,{}"
,
weightAction
);
Result
<
List
<
WeighingSignatureDto
>
>
weighSignature
=
OpenClient
.
doAction
(
config
,
weightAction
);
Result
<
WeightChildSignatureDto
>
weighSignature
=
OpenClient
.
doAction
(
config
,
weightAction
);
log
.
info
(
"接口请求电子磅单返回结果,{}"
,
weighSignature
);
//数据处理
if
(
Objects
.
equals
(
weighSignature
.
getCode
(),
0
)){
List
<
WeighingSignatureDto
>
weighSignatures
=
weighSignature
.
getData
();
WeightChildSignatureDto
weighSignatures
=
weighSignature
.
getData
();
return
weighSignatures
;
}
return
new
ArrayList
<>
();
return
new
WeightChildSignatureDto
();
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java
浏览文件 @
e1c3cc63
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.performance.enums.InputOutputEnum
;
import
com.clx.performance.enums.SaleBuyEnum
;
import
com.clx.performance.param.app.OrderChildWeighPictureParam
;
import
com.clx.performance.service.OrderChildService
;
import
com.clx.performance.service.OrderChildWeighPictureService
;
import
com.clx.performance.vo.app.PictureVo
;
import
com.smart.weight.dto.WeighingSignatureDto
;
import
com.smart.business.sdk.request.dto.WeightChildSignatureDto
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
...
...
@@ -26,14 +29,15 @@ public class OrderChildWeighPictureServiceImpl implements OrderChildWeighPictur
@Override
public
PictureVo
getWeighPictures
(
OrderChildWeighPictureParam
param
)
{
//电子磅单图片
List
<
WeighingSignatureDto
>
images
=
orderChildService
.
getWeighingSignature
(
param
.
getChildNo
());
WeightChildSignatureDto
unloadImages
=
orderChildService
.
getWeighingSignature
(
param
.
getChildNo
(),
SaleBuyEnum
.
Type
.
BUY
.
getCode
());
PictureVo
vo
=
new
PictureVo
();
vo
.
setLoadImages
(
images
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
1
)).
map
(
item
->
item
.
getOriginalImg
()).
collect
(
Collectors
.
toList
()));
vo
.
setUnloadImages
(
images
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
2
)).
map
(
item
->
item
.
getOriginalImg
()).
collect
(
Collectors
.
toList
()));
if
(
Objects
.
nonNull
(
unloadImages
)
&&
CollectionUtils
.
isNotEmpty
(
unloadImages
.
getWeighingSignatureList
())){
vo
.
setUnloadImages
(
unloadImages
.
getWeighingSignatureList
().
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
InputOutputEnum
.
Type
.
OUTPUT
.
getCode
())).
map
(
item
->
StringUtils
.
isNotBlank
(
item
.
getSignImg
())?
item
.
getSignImg
():
item
.
getOriginalImg
()).
collect
(
Collectors
.
toList
()));
}
return
vo
;
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
浏览文件 @
e1c3cc63
...
...
@@ -211,8 +211,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
@Override
public
IPage
<
OrderGoodsVO
>
pageOrderGoodsList
(
PageOrderGoodsListParam
param
)
{
long
start2
=
System
.
currentTimeMillis
();
IPage
<
OrderGoodsVO
>
page
=
orderGoodsDao
.
pageOrderGoodsList
(
param
);
long
start3
=
System
.
currentTimeMillis
();
log
.
info
(
"执行耗时2,{}"
,
start3
-
start2
);
if
(
CollectionUtils
.
isNotEmpty
(
page
.
getRecords
())){
List
<
String
>
fleetNoList
=
new
ArrayList
<>();
List
<
String
>
orderNoList
=
new
ArrayList
<>();
...
...
@@ -223,22 +225,27 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
}
orderNoList
.
add
(
record
.
getOrderNo
());
}
long
start5
=
System
.
currentTimeMillis
();
log
.
info
(
"执行耗时3,{}"
,
start5
-
start3
);
if
(
CollectionUtils
.
isNotEmpty
(
fleetNoList
)){
List
<
OrderGoodsBindTruckNumDTO
>
bindTruckNumList
=
orderGoodsTruckBindDao
.
queryOrderGoodsTruckNum
(
fleetNoList
);
Map
<
String
,
Integer
>
map
=
bindTruckNumList
.
stream
().
collect
(
Collectors
.
toMap
(
OrderGoodsBindTruckNumDTO:
:
getOrderGoodsNo
,
OrderGoodsBindTruckNumDTO
::
getTruckNum
));
page
.
getRecords
().
forEach
(
item
->
item
.
setDispatchedOrders
(
map
.
get
(
item
.
getOrderGoodsNo
())));
}
long
start6
=
System
.
currentTimeMillis
();
log
.
info
(
"执行耗时4,{}"
,
start6
-
start5
);
Optional
<
Map
<
String
,
FeignOrderInfoVO
>>
orderListOption
=
orderService
.
queryListOrderByOrderNoList
(
orderNoList
);
if
(!
orderListOption
.
isPresent
()){
log
.
warn
(
"通过订单号批量查询订单信息失败,失败原因"
);
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"查询货单对应的订单信息失败"
);
}
long
start7
=
System
.
currentTimeMillis
();
log
.
info
(
"执行耗时5,{}"
,
start7
-
start6
);
List
<
OrderGoods
>
orderGoods
=
orderGoodsDao
.
listInField
(
OrderGoods:
:
getOrderNo
,
orderNoList
);
long
start8
=
System
.
currentTimeMillis
();
log
.
info
(
"执行耗时6,{}"
,
start8
-
start7
);
Map
<
String
,
BigDecimal
>
orderExtractWeightMap
=
new
HashMap
<>();
for
(
OrderGoods
orderGood
:
orderGoods
)
{
...
...
@@ -248,6 +255,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
orderExtractWeightMap
.
put
(
orderNo
,
Objects
.
nonNull
(
orderExtractWeightMap
.
get
(
orderNo
))?
orderExtractWeightMap
.
get
(
orderNo
).
add
(
weight
):
weight
);
}
long
start9
=
System
.
currentTimeMillis
();
log
.
info
(
"执行耗时7,{}"
,
start9
-
start8
);
Map
<
String
,
FeignOrderInfoVO
>
orderInfoMap
=
orderListOption
.
get
();
page
.
getRecords
().
forEach
(
item
->{
FeignOrderInfoVO
orderInfo
=
orderInfoMap
.
get
(
item
.
getOrderNo
());
...
...
@@ -259,6 +268,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
}
item
.
setResidueTransportWeight
(
calcOrderGoodsResidueWeight
(
item
.
getExtractWeight
(),
item
.
getAlreadyTransportWeight
()));
});
long
start11
=
System
.
currentTimeMillis
();
log
.
info
(
"执行耗时8,{}"
,
start11
-
start9
);
}
return
page
;
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java
浏览文件 @
e1c3cc63
...
...
@@ -19,10 +19,7 @@ import com.clx.performance.dao.OrderGoodsDao;
import
com.clx.performance.dao.PerformanceProgressDao
;
import
com.clx.performance.dao.PerformanceProgressLogDao
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderEnum
;
import
com.clx.performance.enums.PerformanceProgressEnum
;
import
com.clx.performance.enums.ResultEnum
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.extranal.user.AddressService
;
import
com.clx.performance.extranal.user.OrderService
;
import
com.clx.performance.model.OrderChild
;
...
...
@@ -452,7 +449,7 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
//最后一个挂单中的货单的挂单时间为最早的挂单时间
firstPendingTime
=
item
.
getPendingOrderTime
();
pendingWeight
=
pendingWeight
.
add
(
item
.
getExtractWeight
(
));
pendingWeight
=
pendingWeight
.
add
(
calcPendingWeight
(
item
));
}
PerformanceProgress
update
=
new
PerformanceProgress
();
...
...
@@ -463,6 +460,17 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
update
.
setPendingWeight
(
pendingWeight
);
performanceProgressDao
.
updateEntityByKey
(
update
);
}
//计算履约进度表货单的挂单吨数
private
BigDecimal
calcPendingWeight
(
OrderGoods
item
){
if
(
Objects
.
equals
(
item
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
())){
return
Objects
.
nonNull
(
item
.
getAlreadyTransportWeight
())?
item
.
getAlreadyTransportWeight
():
BigDecimal
.
ZERO
;
}
return
item
.
getExtractWeight
();
}
//履约进度表----运单部分
@Override
public
void
dealPerformanceProgress4OrderChild
(
OrderChild
data
)
{
...
...
performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java
浏览文件 @
e1c3cc63
...
...
@@ -252,7 +252,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
orderChildInfo
.
setSourceOrderNo
(
orderChild
.
getOrderNo
());
orderChildInfo
.
setSourceSettlementNo
(
settlementOwnerDetail
.
getSettlementNo
());
orderChildInfo
.
setFreight
(
orderChild
.
getFreightPrice
().
multiply
(
orderChild
.
getUnloadNet
())
orderChildInfo
.
setFreight
(
orderChild
.
getFreightPrice
()
.
multiply
(
orderChild
.
getUnloadNet
().
min
(
orderChild
.
getLoadNet
()))
.
setScale
(
0
,
RoundingMode
.
HALF_UP
).
intValue
());
orderChildInfo
.
setDriverFreight
(
orderChild
.
getFreight
().
intValue
());
orderChildInfo
.
setDriverFreightPrice
(
orderChild
.
getFreightPrice
().
intValue
());
...
...
performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java
浏览文件 @
e1c3cc63
...
...
@@ -3,7 +3,7 @@ package com.clx.performance.struct;
import
com.clx.performance.model.OrderChildWeighPicture
;
import
com.msl.common.utils.DateStructUtil
;
import
com.msl.common.utils.DateUtils
;
import
com.smart.
weigh
t.dto.WeighingSignatureDto
;
import
com.smart.
business.sdk.reques
t.dto.WeighingSignatureDto
;
import
org.mapstruct.Mapper
;
@Mapper
(
componentModel
=
"spring"
,
uses
=
DateStructUtil
.
class
,
imports
=
{
DateUtils
.
class
})
...
...
performance-web/src/main/java/com/msl/common/open/OpenClient.java
0 → 100644
浏览文件 @
e1c3cc63
package
com
.
msl
.
common
.
open
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.google.common.reflect.TypeToken
;
import
com.google.gson.*
;
import
com.msl.common.open.action.Action
;
import
com.msl.common.open.message.Message
;
import
com.msl.common.result.Result
;
import
com.msl.common.utils.EncryptUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
java.lang.reflect.Type
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeParseException
;
/**
* @author wanglq
* Date 2024/4/25
* Time 20:31
*/
@Slf4j
@SuppressWarnings
(
"all"
)
public
class
OpenClient
{
/**
* 执行action
*
* @param action action
* @param <T> 返回类型
* @return 结果
*/
public
static
<
T
>
Result
<
T
>
doAction
(
RequestConfig
config
,
Action
<
T
>
action
)
{
return
doPost
(
config
,
action
,
"Action"
);
}
/**
* 发送消息
*
* @param message 消息
* @param <T> 返回类型
* @return 结果
*/
public
static
<
T
>
Result
<
T
>
sendMessage
(
RequestConfig
config
,
Message
<
T
>
message
)
{
return
doPost
(
config
,
message
,
"Message"
);
}
/**
* 返回业务结果转换
*
* @param result 业务结果
* @param targetClass 目标类型
* @param <T> 目标类型
* @return 结果实体
*/
private
static
<
T
>
Result
<
T
>
covertResult
(
String
result
,
Type
targetClass
)
{
Gson
gson
=
new
GsonBuilder
()
.
registerTypeAdapter
(
LocalDateTime
.
class
,
new
CustomLocalDateTimeDeserializer
())
.
create
();
// 使用TypeToken来获取带有泛型信息的Type
Type
type
=
new
TypeToken
<
Result
<
T
>>()
{
}.
getType
();
Result
<
T
>
resultObject
=
gson
.
fromJson
(
result
,
type
);
// 如果目标类型不为空,则尝试将data属性转换为目标类型
if
(
targetClass
!=
null
&&
resultObject
.
getData
()
!=
null
)
{
T
dataObject
=
gson
.
fromJson
(
gson
.
toJson
(
resultObject
.
getData
()),
targetClass
);
resultObject
.
setData
(
dataObject
);
}
return
resultObject
;
}
/**
* 执行post请求
*
* @param openDto 请求参数
* @since 1.1.0
*/
private
static
<
T
>
Result
<
T
>
doPost
(
RequestConfig
config
,
Process
<
T
>
process
,
String
type
)
{
try
{
String
str
=
JSON
.
toJSONString
(
process
);
ProcessId
processId
=
process
.
processId
();
log
.
info
(
"OpenClient发送 {}<{}> 请求参数:{}"
,
type
,
processId
.
show
(),
str
);
//构造加密实体
OpenDto
openDto
=
OpenDto
.
buildEncrypt
(
config
.
getAppId
(),
str
,
config
.
getAppKey
(),
System
.
currentTimeMillis
())
.
setNamespace
(
processId
.
namespace
())
.
setOperate
(
processId
.
identity
());
//执行请求
return
HttpExecutor
.
post
(
config
.
getGatewayUrl
(),
null
,
openDto
)
//反序化
.
map
(
r
->
JSON
.
parseObject
(
r
,
new
TypeReference
<
OpenDto
>()
{
}))
//数据解密
.
mapTry
(
dto
->
EncryptUtil
.
decrypt
(
dto
.
getData
(),
config
.
getAppKey
()))
.
peek
(
s
->
log
.
info
(
"{}<{}> 返回结果:{}"
,
type
,
processId
.
show
(),
s
))
//业务结果实体转换
.
map
(
s
->
{
Result
<
T
>
r
=
covertResult
(
s
,
process
.
returnType
());
return
r
;
}).
orElse
(
Result
.
fail
());
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"OpenClient请求失败"
,
e
);
}
}
public
static
class
CustomLocalDateTimeDeserializer
implements
JsonDeserializer
<
LocalDateTime
>
{
private
final
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
@Override
public
LocalDateTime
deserialize
(
JsonElement
json
,
Type
typeOfT
,
JsonDeserializationContext
context
)
throws
JsonParseException
{
try
{
return
LocalDateTime
.
parse
(
json
.
getAsString
(),
formatter
);
}
catch
(
DateTimeParseException
e
)
{
throw
new
JsonParseException
(
"Date parse error"
,
e
);
}
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论