Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-api-boot-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-api-boot-master
Commits
ec3947a1
Commit
ec3947a1
authored
Mar 20, 2025
by
Smile
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
需求130后台-集运-包裹列表-包裹详情 校验添加
parent
ed36990d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
148 additions
and
10 deletions
+148
-10
ConsServiceImpl.java
...oder/yudao/module/order/service/cons/ConsServiceImpl.java
+112
-5
ConsBackVO.java
...ava/cn/iocoder/yudao/module/order/vo/cons/ConsBackVO.java
+33
-5
ConsMapper.xml
...-order-core/src/main/resources/mapper/cons/ConsMapper.xml
+3
-0
No files found.
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/service/cons/ConsServiceImpl.java
View file @
ec3947a1
...
@@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
...
@@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import
cn.iocoder.yudao.module.order.dal.dataobject.consApproval.ConsApprovalDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consApproval.ConsApprovalDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consException.ConsExceptionDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consException.ConsExceptionDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFee.ConsFeeDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFee.ConsFeeDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFollowup.ConsFollowupDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consItem.ConsItemDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consItem.ConsItemDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consLocation.ConsLocationDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consLocation.ConsLocationDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consMedia.ConsMediaDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consMedia.ConsMediaDO
;
...
@@ -34,9 +35,11 @@ import cn.iocoder.yudao.module.order.enums.OrderStatusEnum;
...
@@ -34,9 +35,11 @@ import cn.iocoder.yudao.module.order.enums.OrderStatusEnum;
import
cn.iocoder.yudao.module.order.service.consApproval.ConsApprovalService
;
import
cn.iocoder.yudao.module.order.service.consApproval.ConsApprovalService
;
import
cn.iocoder.yudao.module.order.service.consException.ConsExceptionService
;
import
cn.iocoder.yudao.module.order.service.consException.ConsExceptionService
;
import
cn.iocoder.yudao.module.order.service.consFee.ConsFeeService
;
import
cn.iocoder.yudao.module.order.service.consFee.ConsFeeService
;
import
cn.iocoder.yudao.module.order.service.consFollowup.ConsFollowupService
;
import
cn.iocoder.yudao.module.order.service.consItem.ConsItemService
;
import
cn.iocoder.yudao.module.order.service.consItem.ConsItemService
;
import
cn.iocoder.yudao.module.order.service.consLocation.ConsLocationService
;
import
cn.iocoder.yudao.module.order.service.consLocation.ConsLocationService
;
import
cn.iocoder.yudao.module.order.service.consMedia.ConsMediaService
;
import
cn.iocoder.yudao.module.order.service.consMedia.ConsMediaService
;
import
cn.iocoder.yudao.module.order.service.consSpecialNeed.ConsSpecialNeedService
;
import
cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService
;
import
cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService
;
import
cn.iocoder.yudao.module.order.service.order.OrderQueryService
;
import
cn.iocoder.yudao.module.order.service.order.OrderQueryService
;
import
cn.iocoder.yudao.module.order.service.order.OrderService
;
import
cn.iocoder.yudao.module.order.service.order.OrderService
;
...
@@ -55,6 +58,7 @@ import cn.iocoder.yudao.module.order.vo.orderConsignor.OrderConsignorBackVO;
...
@@ -55,6 +58,7 @@ import cn.iocoder.yudao.module.order.vo.orderConsignor.OrderConsignorBackVO;
import
cn.iocoder.yudao.module.order.vo.orderItem.OrderItemBackVO
;
import
cn.iocoder.yudao.module.order.vo.orderItem.OrderItemBackVO
;
import
cn.iocoder.yudao.module.product.dal.dataobject.product.ProductDO
;
import
cn.iocoder.yudao.module.product.dal.dataobject.product.ProductDO
;
import
cn.iocoder.yudao.module.product.dal.mysql.product.ProductMapper
;
import
cn.iocoder.yudao.module.product.dal.mysql.product.ProductMapper
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -64,8 +68,10 @@ import org.redisson.api.RedissonClient;
...
@@ -64,8 +68,10 @@ import org.redisson.api.RedissonClient;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consSpecialNeed.ConsSpecialNeedDO
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.*
;
...
@@ -129,6 +135,12 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
...
@@ -129,6 +135,12 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
@Resource
@Resource
private
ConsApprovalService
consApprovalService
;
private
ConsApprovalService
consApprovalService
;
@Resource
private
ConsSpecialNeedService
consSpecialNeedService
;
@Resource
private
ConsFollowupService
consFollowupService
;
@Resource
@Resource
private
CustomerService
customerService
;
private
CustomerService
customerService
;
...
@@ -398,16 +410,111 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
...
@@ -398,16 +410,111 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
int
size
=
page
.
getRows
();
int
size
=
page
.
getRows
();
ConsItemQueryVO
consItemQueryVO
=
new
ConsItemQueryVO
();
ConsItemQueryVO
consItemQueryVO
=
new
ConsItemQueryVO
();
consItemQueryVO
.
setLang
(
I18nMessage
.
getLang
());
consItemQueryVO
.
setLang
(
I18nMessage
.
getLang
());
List
<
ConsBackVO
>
consBackVOS
=
consMapper
.
myConsPageList
(
start
,
size
,
query
);
List
<
ConsBackVO
>
consBackS
=
consMapper
.
myConsPageList
(
start
,
size
,
query
);
consBackVOS
.
removeAll
(
Collections
.
singleton
(
null
));
consBackS
.
removeAll
(
Collections
.
singleton
(
null
));
consBackVOS
.
forEach
(
consBackVO
->
{
List
<
Long
>
consIds
=
consBackS
.
stream
().
map
(
ConsBackVO:
:
getId
).
collect
(
Collectors
.
toList
());
List
<
ConsExceptionDO
>
consExceptionS
=
consExceptionService
.
selectList
(
ConsExceptionDO:
:
getConsId
,
consIds
);
List
<
ConsApprovalDO
>
consApprovalS
=
consApprovalService
.
selectList
(
ConsApprovalDO:
:
getConsId
,
consIds
);
List
<
ConsSpecialNeedDO
>
consSpecialNeeds
=
consSpecialNeedService
.
selectList
(
ConsSpecialNeedDO:
:
getConsId
,
consIds
);
List
<
ConsFollowupDO
>
consFollowupS
=
consFollowupService
.
selectList
(
ConsFollowupDO:
:
getConsId
,
consIds
);
Map
<
Long
,
List
<
ConsFollowupDO
>>
collectConsFollowupMap
;
Map
<
Long
,
List
<
ConsSpecialNeedDO
>>
collectConsSpecialNeedMap
;
if
(!
consSpecialNeeds
.
isEmpty
()){
collectConsSpecialNeedMap
=
consSpecialNeeds
.
stream
().
collect
(
Collectors
.
groupingBy
(
ConsSpecialNeedDO:
:
getConsId
));
}
else
{
collectConsSpecialNeedMap
=
new
HashMap
<>();
}
if
(!
consFollowupS
.
isEmpty
()){
collectConsFollowupMap
=
consFollowupS
.
stream
().
collect
(
Collectors
.
groupingBy
(
ConsFollowupDO:
:
getConsId
));
}
else
{
collectConsFollowupMap
=
new
HashMap
<>();
}
boolean
hasException
;
boolean
hasApproval
;
Map
<
Long
,
List
<
ConsExceptionDO
>>
collectConsExceptionMap
;
Map
<
Long
,
List
<
ConsApprovalDO
>>
collectConsApprovalMap
;
if
(!
consExceptionS
.
isEmpty
()){
hasException
=
true
;
collectConsExceptionMap
=
consExceptionS
.
stream
().
collect
(
Collectors
.
groupingBy
(
ConsExceptionDO:
:
getConsId
));
}
else
{
collectConsExceptionMap
=
new
HashMap
<>();
hasException
=
false
;
}
if
(!
consApprovalS
.
isEmpty
()){
hasApproval
=
true
;
collectConsApprovalMap
=
consApprovalS
.
stream
().
collect
(
Collectors
.
groupingBy
(
ConsApprovalDO:
:
getConsId
));
}
else
{
collectConsApprovalMap
=
new
HashMap
<>();
hasApproval
=
false
;
}
consBackS
.
forEach
(
consBackVO
->
{
if
(
consBackVO
.
getStockDurationLimit
()==
null
){
consBackVO
.
setIsOverTime
(
true
);
}
else
if
(
consBackVO
.
getInWarehouseDays
()!=
null
&&
consBackVO
.
getInWarehouseDays
()>
consBackVO
.
getStockDurationLimit
()){
consBackVO
.
setIsOverTime
(
true
);
}
if
(
collectConsFollowupMap
.
get
(
consBackVO
.
getId
())!=
null
){
ConsFollowupDO
consFollowupDO
=
collectConsFollowupMap
.
get
(
consBackVO
.
getId
()).
stream
().
max
(
Comparator
.
comparing
(
ConsFollowupDO:
:
getCreateTime
)).
get
();
//如果跟进时间小于当前时间,且未转运
if
(
consFollowupDO
.
getFollowTime
()!=
null
&&
consFollowupDO
.
getFollowTime
().
compareTo
(
new
Date
())<
1
&&
consBackVO
.
getStatus
()<
2
){
consBackVO
.
setIsFollowOverTime
(
true
);
}
}
consItemQueryVO
.
setConsId
(
consBackVO
.
getId
());
consItemQueryVO
.
setConsId
(
consBackVO
.
getId
());
List
<
ConsItemBackVO
>
consItemBackVOList
=
consItemService
.
getConsItemBackVOList
(
consItemQueryVO
);
List
<
ConsItemBackVO
>
consItemBackVOList
=
consItemService
.
getConsItemBackVOList
(
consItemQueryVO
);
consBackVO
.
setConsItemVOList
(
consItemBackVOList
);
consBackVO
.
setConsItemVOList
(
consItemBackVOList
);
List
<
ConsExceptionDO
>
consExceptionDOS
=
consExceptionService
.
selectList
(
ConsExceptionDO:
:
getConsId
,
consBackVO
.
getId
());
if
(
collectConsSpecialNeedMap
.
get
(
consBackVO
.
getId
())
!=
null
){
consBackVO
.
setConsSpecialNeeds
(
collectConsSpecialNeedMap
.
get
(
consBackVO
.
getId
()));
}
if
(
consBackVO
.
getNeedInspect
()!=
null
&&
consBackVO
.
getNeedInspect
()==
1
&&
consBackVO
.
getInspectStatus
()==
2
){
//计算验货体积和重量之和
BigDecimal
volume
=
BigDecimal
.
ZERO
;
BigDecimal
weight
=
BigDecimal
.
ZERO
;
for
(
int
i
=
0
;
i
<
consItemBackVOList
.
size
();
i
++)
{
volume
=
consItemBackVOList
.
get
(
i
).
getInspectionVolume
().
add
(
volume
);
weight
=
consItemBackVOList
.
get
(
i
).
getInspectionWeight
().
add
(
weight
);
}
if
(
consBackVO
.
getConsVolumeLimit
().
compareTo
(
volume
)
==
-
1
||
consBackVO
.
getConsWeightLimit
().
compareTo
(
weight
)
==
-
1
){
consBackVO
.
setIsOverLimit
(
true
);
}
}
if
(
hasException
){
if
(
collectConsExceptionMap
.
get
(
consBackVO
.
getId
())
!=
null
){
consBackVO
.
setHasErrors
(
true
);
}
}
if
(
hasApproval
){
if
(
collectConsApprovalMap
.
get
(
consBackVO
.
getId
())
!=
null
){
List
<
ConsApprovalDO
>
consApprovalList
=
collectConsApprovalMap
.
get
(
consBackVO
.
getId
());
for
(
ConsApprovalDO
consApprovalDO
:
consApprovalList
)
{
//查看是否有退仓审批/或者退仓未处理
if
(
consApprovalDO
.
getApprovalType
().
equals
(
0
)
&&
(
consApprovalDO
.
getStatus
().
equals
(
1
)))
{
consBackVO
.
setHasReturnStatus
(
true
);
}
if
(
consApprovalDO
.
getApprovalType
().
equals
(
0
)&&
consApprovalDO
.
getStatus
().
equals
(
2
)&&
JSON
.
parseObject
(
consApprovalDO
.
getApprovalDetail
()).
getBoolean
(
"isDeal"
)){
consBackVO
.
setReturnStatus
(
1
);
}
else
{
consBackVO
.
setReturnStatus
(
0
);
}
//查看是否有撤出订单待审批
if
(
consApprovalDO
.
getApprovalType
().
equals
(
4
)&&
consApprovalDO
.
getStatus
().
equals
(
1
)){
consBackVO
.
setHasExitApproval
(
true
);
}
//查看是否有追加订单待审批
if
(
consApprovalDO
.
getApprovalType
().
equals
(
2
)&&
consApprovalDO
.
getStatus
().
equals
(
1
)){
consBackVO
.
setHasAddApproval
(
true
);
}
//查看是否有追加订单待审批
if
(
consApprovalDO
.
getApprovalType
().
equals
(
6
)&&
consApprovalDO
.
getStatus
().
equals
(
1
)){
consBackVO
.
setHasFeeApproval
(
true
);
}
}
}
}
});
});
return
new
PageResult
<>(
consBack
VO
S
,
total
,
mpPage
.
getSize
(),
page
.
getPage
(),
(
total
+
mpPage
.
getSize
()
-
1
)
/
mpPage
.
getSize
());
return
new
PageResult
<>(
consBackS
,
total
,
mpPage
.
getSize
(),
page
.
getPage
(),
(
total
+
mpPage
.
getSize
()
-
1
)
/
mpPage
.
getSize
());
}
}
@Override
@Override
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/cons/ConsBackVO.java
View file @
ec3947a1
...
@@ -5,12 +5,14 @@ import cn.iocoder.yudao.module.depository.vo.warehouse.WarehouseBackVO;
...
@@ -5,12 +5,14 @@ import cn.iocoder.yudao.module.depository.vo.warehouse.WarehouseBackVO;
import
cn.iocoder.yudao.module.ecw.controller.admin.express.vo.ExpressBaseVO
;
import
cn.iocoder.yudao.module.ecw.controller.admin.express.vo.ExpressBaseVO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consApproval.ConsApprovalDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consApproval.ConsApprovalDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFee.ConsFeeDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consFee.ConsFeeDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.consSpecialNeed.ConsSpecialNeedDO
;
import
cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO
;
import
cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO
;
import
cn.iocoder.yudao.module.order.vo.consItem.ConsItemBaseVO
;
import
cn.iocoder.yudao.module.order.vo.consItem.ConsItemBaseVO
;
import
cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO
;
import
cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO
;
import
cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordBackVO
;
import
cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordBackVO
;
import
lombok.*
;
import
lombok.*
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
io.swagger.annotations.*
;
import
io.swagger.annotations.*
;
...
@@ -306,15 +308,41 @@ public class ConsBackVO {
...
@@ -306,15 +308,41 @@ public class ConsBackVO {
*/
*/
private
WarehouseBackVO
endWarehouse
;
private
WarehouseBackVO
endWarehouse
;
@ApiModelProperty
(
"集运重量上限"
)
private
BigDecimal
consWeightLimit
;
@ApiModelProperty
(
"集运体积上限"
)
private
BigDecimal
consVolumeLimit
;
@ApiModelProperty
(
"在库时长限制"
)
private
Integer
stockDurationLimit
;
@ApiModelProperty
(
"是否有异常"
)
@ApiModelProperty
(
"是否有异常"
)
private
Boolean
hasErrors
;
private
Boolean
hasErrors
=
false
;
@ApiModelProperty
(
"是否有退仓审批"
)
private
Boolean
hasReturnStatus
=
false
;
@ApiModelProperty
(
"是否有退仓审批/退仓处理状态=未处理"
)
private
Boolean
hasReturnStatus
;
@ApiModelProperty
(
"是否存在撤出订单待审批流程"
)
@ApiModelProperty
(
"是否存在撤出订单待审批流程"
)
private
Boolean
hasExitApproval
;
private
Boolean
hasExitApproval
=
false
;
@ApiModelProperty
(
"是否存在追加订单待审批流程"
)
@ApiModelProperty
(
"是否存在追加订单待审批流程"
)
private
Boolean
hasAddApproval
;
private
Boolean
hasAddApproval
=
false
;
@ApiModelProperty
(
"是否存在费用待审批流程"
)
private
Boolean
hasFeeApproval
=
false
;
@ApiModelProperty
(
"是否超限"
)
private
Boolean
isOverLimit
=
false
;
@ApiModelProperty
(
"是否超时"
)
private
Boolean
isOverTime
=
false
;
@ApiModelProperty
(
"是否跟进超时"
)
private
Boolean
isFollowOverTime
=
false
;
@ApiModelProperty
(
"特需列表"
)
List
<
ConsSpecialNeedDO
>
consSpecialNeeds
;
}
}
yudao-module-order/yudao-module-order-core/src/main/resources/mapper/cons/ConsMapper.xml
View file @
ec3947a1
...
@@ -25,6 +25,9 @@
...
@@ -25,6 +25,9 @@
ew_dest.title_zh as destTitleZh,
ew_dest.title_zh as destTitleZh,
ew_dest.title_en as destTitleEn,
ew_dest.title_en as destTitleEn,
ew_dest.title_fr as destTitleFr,
ew_dest.title_fr as destTitleFr,
el.stock_duration_limit as stockDurationLimit,
el.cons_volume_limit as consVolumeLimit,
el.cons_weight_limit as consWeightLimit,
o.order_no,
o.order_no,
o.status as orderStatus,
o.status as orderStatus,
o.channel_id,
o.channel_id,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment