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
3e9b76d4
Commit
3e9b76d4
authored
Feb 27, 2025
by
Smile
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
需求129 后台-集运-包裹列表-编辑包裹
parent
17fc408c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
89 additions
and
18 deletions
+89
-18
20250218lh.sql
sql/cons_sql/20250218lh.sql
+3
-0
ConsServiceImpl.java
...oder/yudao/module/order/service/cons/ConsServiceImpl.java
+79
-3
ConsBackVO.java
...ava/cn/iocoder/yudao/module/order/vo/cons/ConsBackVO.java
+1
-1
ConsCreateReqVO.java
...n/iocoder/yudao/module/order/vo/cons/ConsCreateReqVO.java
+5
-1
ConsItemBaseVO.java
...ocoder/yudao/module/order/vo/consItem/ConsItemBaseVO.java
+0
-1
ConsMapper.xml
...-order-core/src/main/resources/mapper/cons/ConsMapper.xml
+1
-12
No files found.
sql/cons_sql/20250218lh.sql
View file @
3e9b76d4
...
@@ -106,3 +106,6 @@ create table ecw_cons_tracking_record
...
@@ -106,3 +106,6 @@ create table ecw_cons_tracking_record
);
);
alter
table
ecw_cons_tracking_record
comment
'包裹动态跟踪表'
;
alter
table
ecw_cons_tracking_record
comment
'包裹动态跟踪表'
;
ALTER
TABLE
jiedao
.
ecw_cons_item
MODIFY
COLUMN
id
bigint
auto_increment
NOT
NULL
;
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/service/cons/ConsServiceImpl.java
View file @
3e9b76d4
package
cn
.
iocoder
.
yudao
.
module
.
order
.
service
.
cons
;
package
cn
.
iocoder
.
yudao
.
module
.
order
.
service
.
cons
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
cn.iocoder.yudao.framework.common.util.code.CodeUtils
;
import
cn.iocoder.yudao.framework.i18n.core.I18nMessage
;
import
cn.iocoder.yudao.framework.i18n.core.I18nMessage
;
import
cn.iocoder.yudao.framework.i18n.core.LangEnum
;
import
cn.iocoder.yudao.framework.i18n.core.LangEnum
;
import
cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils
;
import
cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils
;
import
cn.iocoder.yudao.module.order.convert.cons.ConsConvert
;
import
cn.iocoder.yudao.module.order.convert.cons.ConsConvert
;
import
cn.iocoder.yudao.module.order.convert.consItem.ConsItemConvert
;
import
cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO
;
import
cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO
;
import
cn.iocoder.yudao.module.order.dal.mysql.cons.ConsMapper
;
import
cn.iocoder.yudao.module.order.dal.mysql.cons.ConsMapper
;
import
cn.iocoder.yudao.module.order.service.consItem.ConsItemService
;
import
cn.iocoder.yudao.module.order.service.consItem.ConsItemService
;
...
@@ -17,7 +22,11 @@ import cn.iocoder.yudao.module.order.vo.cons.ConsUpdateReqVO;
...
@@ -17,7 +22,11 @@ import cn.iocoder.yudao.module.order.vo.cons.ConsUpdateReqVO;
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.ConsItemQueryVO
;
import
cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.redisson.api.RAtomicLong
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.framework.mybatis.core.service.AbstractService
;
import
cn.iocoder.yudao.framework.mybatis.core.service.AbstractService
;
...
@@ -39,12 +48,32 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
...
@@ -39,12 +48,32 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
@Resource
@Resource
private
ConsItemService
consItemService
;
private
ConsItemService
consItemService
;
@Resource
private
RedissonClient
redissonClient
;
@Override
@Override
@Transactional
public
Long
createCons
(
ConsCreateReqVO
createReqVO
)
{
public
Long
createCons
(
ConsCreateReqVO
createReqVO
)
{
// 插入
validateCons
(
createReqVO
);
if
(
consMapper
.
selectOne
(
"express_no"
,
createReqVO
.
getExpressNo
())
!=
null
)
{
throw
exception
(
30004
,
"包裹快递号已存在"
);
}
String
warehouseCode
=
""
;
if
(
createReqVO
.
getWareId
().
equals
(
1L
)){
warehouseCode
=
"F"
;
}
else
if
(
createReqVO
.
getWareId
().
equals
(
3L
)){
warehouseCode
=
"Y"
;
}
else
{
warehouseCode
=
"F"
;
}
String
consNum
=
generateConsNumber
(
warehouseCode
);
ConsDO
cons
=
ConsConvert
.
INSTANCE
.
convert
(
createReqVO
);
ConsDO
cons
=
ConsConvert
.
INSTANCE
.
convert
(
createReqVO
);
cons
.
setConsNum
(
consNum
);
consMapper
.
insert
(
cons
);
consMapper
.
insert
(
cons
);
// 返回
createReqVO
.
getConsItemVOList
().
forEach
(
consItemVO
->
{
consItemVO
.
setConsId
(
cons
.
getId
());
consItemService
.
createConsItem
(
consItemVO
);
});
return
cons
.
getId
();
return
cons
.
getId
();
}
}
...
@@ -64,7 +93,23 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
...
@@ -64,7 +93,23 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
// 删除
// 删除
consMapper
.
deleteById
(
id
);
consMapper
.
deleteById
(
id
);
}
}
private
void
validateCons
(
ConsCreateReqVO
createReqVO
){
if
(
createReqVO
.
getWareId
()==
null
){
throw
exception
(
30004
,
"请选择仓库"
);
}
if
(
createReqVO
.
getExpressNo
()==
null
){
throw
exception
(
30004
,
"包裹快递号不能为空"
);
}
if
(
createReqVO
.
getExpressId
()==
null
){
throw
exception
(
30004
,
"请选择快递公司"
);
}
if
(
createReqVO
.
getTransportId
()==
null
&&
createReqVO
.
getConsigneeCityId
()==
null
){
throw
exception
(
30004
,
"请选择运输方式或目的城市"
);
}
if
(
createReqVO
.
getConsItemVOList
().
isEmpty
()){
throw
exception
(
30004
,
"包裹项不能为空"
);
}
}
private
void
validateConsExists
(
Long
id
)
{
private
void
validateConsExists
(
Long
id
)
{
if
(
consMapper
.
selectById
(
id
)
==
null
)
{
if
(
consMapper
.
selectById
(
id
)
==
null
)
{
throw
exception
(
30004
,
"包裹不存在"
);
throw
exception
(
30004
,
"包裹不存在"
);
...
@@ -105,4 +150,35 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
...
@@ -105,4 +150,35 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
public
List
<
ConsDO
>
getConsList
(
ConsQueryVO
query
)
{
public
List
<
ConsDO
>
getConsList
(
ConsQueryVO
query
)
{
return
consMapper
.
selectList
(
query
);
return
consMapper
.
selectList
(
query
);
}
}
//生成包裹号
public
String
generateConsNumber
(
String
warehouseCode
){
// 1. 获取当前年份(如25)
String
currentYear
=
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yy"
));
String
key
=
"cons_seq:"
+
warehouseCode
+
":"
+
currentYear
;
// 2. 获取原子计数器
RAtomicLong
counter
=
redissonClient
.
getAtomicLong
(
key
);
// 3. 处理年份切换:如果计数器不存在或为0,则初始化
if
(
counter
.
get
()
==
0
)
{
RLock
lock
=
redissonClient
.
getLock
(
key
+
":lock"
);
try
{
lock
.
lock
();
// 加锁防止并发初始化
// 双重检查
if
(
counter
.
get
()
==
0
)
{
// 初始序号从1开始
counter
.
set
(
1L
);
// 设置1年过期
counter
.
expire
(
365
,
TimeUnit
.
DAYS
);
}
}
finally
{
lock
.
unlock
();
}
}
// 4. 自增序号并生成包裹号
long
sequence
=
counter
.
incrementAndGet
();
return
String
.
format
(
"%s%s%06d"
,
warehouseCode
,
currentYear
,
sequence
);
}
}
}
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/cons/ConsBackVO.java
View file @
3e9b76d4
...
@@ -199,7 +199,7 @@ public class ConsBackVO {
...
@@ -199,7 +199,7 @@ public class ConsBackVO {
@ExcelProperty
(
"销售渠道"
)
@ExcelProperty
(
"销售渠道"
)
@ApiModelProperty
(
value
=
"销售渠道"
)
@ApiModelProperty
(
value
=
"销售渠道"
)
private
String
channel
Name
;
private
String
channel
Id
;
@ExcelProperty
(
"动态"
)
@ExcelProperty
(
"动态"
)
@ApiModelProperty
(
value
=
"动态"
)
@ApiModelProperty
(
value
=
"动态"
)
...
...
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/cons/ConsCreateReqVO.java
View file @
3e9b76d4
package
cn
.
iocoder
.
yudao
.
module
.
order
.
vo
.
cons
;
package
cn
.
iocoder
.
yudao
.
module
.
order
.
vo
.
cons
;
import
cn.iocoder.yudao.module.order.vo.consItem.ConsItemCreateReqVO
;
import
lombok.*
;
import
lombok.*
;
import
io.swagger.annotations.*
;
import
io.swagger.annotations.*
;
import
java.util.List
;
@Data
@Data
@ToString
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
"管理后台 - 集运包裹主创建 Request VO"
)
@ApiModel
(
"管理后台 - 集运包裹主创建 Request VO"
)
public
class
ConsCreateReqVO
extends
ConsBaseVO
{
public
class
ConsCreateReqVO
extends
ConsBaseVO
{
@ApiModelProperty
(
value
=
"包裹项"
)
private
List
<
ConsItemCreateReqVO
>
consItemVOList
;
}
}
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/vo/consItem/ConsItemBaseVO.java
View file @
3e9b76d4
...
@@ -13,7 +13,6 @@ import java.math.BigDecimal;
...
@@ -13,7 +13,6 @@ import java.math.BigDecimal;
public
class
ConsItemBaseVO
{
public
class
ConsItemBaseVO
{
@ApiModelProperty
(
value
=
""
,
required
=
true
)
@ApiModelProperty
(
value
=
""
,
required
=
true
)
@NotNull
(
message
=
"不能为空"
)
private
Long
consId
;
private
Long
consId
;
@ApiModelProperty
(
value
=
"商品ID"
)
@ApiModelProperty
(
value
=
"商品ID"
)
...
...
yudao-module-order/yudao-module-order-core/src/main/resources/mapper/cons/ConsMapper.xml
View file @
3e9b76d4
...
@@ -5,7 +5,6 @@
...
@@ -5,7 +5,6 @@
select count(1)
select count(1)
FROM ecw_cons cons
FROM ecw_cons cons
left join ecw_customer ec on cons.customer_id = ec.id
left join ecw_customer ec on cons.customer_id = ec.id
left join ecw_customer_contacts eccs on ec.id = eccs.customer_id
left join ecw_warehouse_line el on cons.warehouse_line_id = el.id
left join ecw_warehouse_line el on cons.warehouse_line_id = el.id
LEFT JOIN ecw_warehouse ew_start ON ew_start.id = el.start_warehouse_id
LEFT JOIN ecw_warehouse ew_start ON ew_start.id = el.start_warehouse_id
LEFT JOIN ecw_warehouse ew_dest ON ew_dest.id = el.dest_warehouse_id
LEFT JOIN ecw_warehouse ew_dest ON ew_dest.id = el.dest_warehouse_id
...
@@ -29,26 +28,16 @@
...
@@ -29,26 +28,16 @@
ctr.tracking_time,
ctr.tracking_time,
o.order_no,
o.order_no,
o.status as orderStatus,
o.status as orderStatus,
GROUP_CONCAT(
o.channel_id
CASE #{query.lang}
WHEN 0 then ecc.name_zh
WHEN 1 then ecc.name_en
WHEN 2 then ecc.name_fr
else ecc.name_zh
END SEPARATOR ', '
) AS channelName
FROM ecw_cons cons
FROM ecw_cons cons
left join ecw_customer ec on cons.customer_id = ec.id
left join ecw_customer ec on cons.customer_id = ec.id
left join ecw_customer_contacts eccs on ec.id = eccs.customer_id
left join ecw_customer_contacts eccs on ec.id = eccs.customer_id
left join ecw_warehouse_line el on cons.warehouse_line_id = el.id
left join ecw_warehouse_line el on cons.warehouse_line_id = el.id
left join ecw_warehouse ew_start ON ew_start.id = el.start_warehouse_id
left join ecw_warehouse ew_start ON ew_start.id = el.start_warehouse_id
left join ecw_warehouse ew_dest ON ew_dest.id = el.dest_warehouse_id
left join ecw_warehouse ew_dest ON ew_dest.id = el.dest_warehouse_id
left join ecw_line_channel_packaging elcp on cons.warehouse_line_id = elcp.line_id
LEFT JOIN ecw_channel ecc ON FIND_IN_SET(ecc.channel_id, elcp.channel_ids)
left join ecw_cons_tracking_record ctr on cons.id = ctr.cons_id
left join ecw_cons_tracking_record ctr on cons.id = ctr.cons_id
left join ecw_order o on cons.order_id = o.order_id
left join ecw_order o on cons.order_id = o.order_id
WHERE cons.deleted = 0
WHERE cons.deleted = 0
and elcp.deleted = 0
<include
refid=
"myConsQuery"
/>
<include
refid=
"myConsQuery"
/>
order by cons.update_time desc
order by cons.update_time desc
limit #{start}, #{size}
limit #{start}, #{size}
...
...
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