Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
21f100d7
提交
21f100d7
authored
10月 31, 2023
作者:
huyufan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化相关代码
上级
93996aaf
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
98 行增加
和
85 行删除
+98
-85
OrderGoodsStatusLazyComponent.java
.../performance/component/OrderGoodsStatusLazyComponent.java
+2
-2
OrderGoodsDao.java
.../src/main/java/com/clx/performance/dao/OrderGoodsDao.java
+4
-0
OrderGoodsDaoImpl.java
.../java/com/clx/performance/dao/impl/OrderGoodsDaoImpl.java
+14
-0
OrderCancelServiceImpl.java
.../clx/performance/service/impl/OrderCancelServiceImpl.java
+75
-80
OrderGoodsSqlProvider.java
...om/clx/performance/sqlProvider/OrderGoodsSqlProvider.java
+3
-3
没有找到文件。
performance-web/src/main/java/com/clx/performance/component/OrderGoodsStatusLazyComponent.java
浏览文件 @
21f100d7
...
...
@@ -186,7 +186,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
List
<
Integer
>
ids
=
new
LinkedList
<>();
for
(
OrderChild
orderChild
:
orderChildrenList
)
{
childSum
.
add
(
orderChild
.
getWeight
());
childSum
=
childSum
.
add
(
orderChild
.
getWeight
());
ids
.
add
(
orderChild
.
getId
());
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
ids
);
...
...
@@ -212,7 +212,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
//只更新货单
未拉运吨数,
已拉运吨数
//只更新货单已拉运吨数
orderGoodsDao
.
updateOrderGoodsSetAlreadyWeight
(
childSum
,
orderGoods
.
getId
());
orderFeign
.
rollbackOrderWeight
(
param
);
}
else
{
...
...
performance-web/src/main/java/com/clx/performance/dao/OrderGoodsDao.java
浏览文件 @
21f100d7
...
...
@@ -74,4 +74,8 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
List
<
OrderGoods
>
selectListByOrderGoodsList
(
List
<
String
>
orderNos
);
Integer
updateOrderGoods
(
OrderGoodsEditParams
orderGoodsEditParams
);
boolean
batchUpdateOrderGoodsStatus
(
Integer
status
,
List
<
Integer
>
ids
);
boolean
batchUpdateOrderGoodsWeight
(
BigDecimal
residueWeight
,
List
<
Integer
>
ids
);
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderGoodsDaoImpl.java
浏览文件 @
21f100d7
...
...
@@ -194,5 +194,19 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
return
baseMapper
.
updateOrderGoods
(
orderGoodsEditParams
);
}
@Override
public
boolean
batchUpdateOrderGoodsStatus
(
Integer
status
,
List
<
Integer
>
ids
)
{
return
update
(
lUdWrapper
().
in
(
OrderGoods
::
getId
,
ids
)
.
set
(
OrderGoods
::
getOrderGoodsStatus
,
status
))
;
}
@Override
public
boolean
batchUpdateOrderGoodsWeight
(
BigDecimal
residueWeight
,
List
<
Integer
>
ids
)
{
return
update
(
lUdWrapper
().
in
(
OrderGoods
::
getId
,
ids
)
.
set
(
OrderGoods:
:
getResidueTransportWeight
,
residueWeight
)
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderCancelServiceImpl.java
浏览文件 @
21f100d7
...
...
@@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
...
...
@@ -48,7 +49,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private
final
RabbitTemplate
rabbitTemplate
;
//
//
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void platformCancelOrderPre(String orderNo) {
...
...
@@ -410,13 +411,10 @@ public class OrderCancelServiceImpl implements OrderCancelService {
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
for
(
OrderChild
orderChild
:
orderChildrenList
)
{
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao
.
updateEntityByKey
(
update
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
orderChildrenList
.
stream
().
map
(
OrderChild:
:
getId
).
collect
(
Collectors
.
toList
()));
Map
<
String
,
List
<
OrderGoods
>>
orderGoodsMap
=
orderGoodsList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderGoods:
:
getOrderGoodsNo
));
...
...
@@ -436,29 +434,25 @@ public class OrderCancelServiceImpl implements OrderCancelService {
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
().
add
(
sum
)));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态 注意判断货单是已完结还是已完成
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setAlreadyTransportWeight
(
orderGoods
.
getAlreadyTransportWeight
().
subtract
(
sum
));
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeight
(
BigDecimal
.
ZERO
,
sum
,
orderGoods
.
getId
());
}
}
else
if
(
OrderEnum
.
Status
.
CANCELED
.
getCode
().
equals
(
orderInfoFeignVO
.
getOrderStatus
()))
{
//已取消
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
// for (OrderGoods orderGoods : orderGoodsList) {
// truckDemandMap.put(orderGoods.getTruckDemand(),
// truckDemandMap.get(orderGoods.getTruckDemand())
// .add(orderGoods.getResidueTransportWeight()));
//// OrderGoods update = new OrderGoods();
//// update.setId(orderGoods.getId());
//// //TODO 补充批量更新接口 关闭货单状态
//// update.setResidueTransportWeight(BigDecimal.ZERO);
//
//// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(BigDecimal.ZERO, BigDecimal.ZERO, orderGoods.getId());
// }
orderGoodsDao
.
batchUpdateOrderGoodsWeight
(
BigDecimal
.
ZERO
,
orderGoodsList
.
stream
().
map
(
OrderGoods:
:
getId
).
collect
(
Collectors
.
toList
()));
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
Integer
truckDemand
=
orderInfoFeignVO
.
getTruckDemand
();
...
...
@@ -491,13 +485,14 @@ public class OrderCancelServiceImpl implements OrderCancelService {
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
for
(
OrderChild
orderChild
:
orderChildrenList
)
{
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao
.
updateEntityByKey
(
update
);
}
// for (OrderChild orderChild : orderChildrenList) {
// OrderChild update = new OrderChild();
// update.setId(orderChild.getId());
// update.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
// //TODO 补充批量更新接口 关闭运单状态
// orderChildDao.updateEntityByKey(update);
// }
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
orderChildrenList
.
stream
().
map
(
OrderChild:
:
getId
).
collect
(
Collectors
.
toList
()));
//货单
Map
<
String
,
List
<
OrderGoods
>>
orderGoodsMap
=
orderGoodsList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderGoods:
:
getOrderGoodsNo
));
...
...
@@ -518,29 +513,26 @@ public class OrderCancelServiceImpl implements OrderCancelService {
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
().
add
(
sum
)));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setAlreadyTransportWeight
(
orderGoods
.
getAlreadyTransportWeight
().
subtract
(
sum
));
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeight
(
BigDecimal
.
ZERO
,
sum
,
orderGoods
.
getId
());
}
}
else
if
(
OrderEnum
.
Status
.
CANCELED
.
getCode
().
equals
(
orderInfoFeignVO
.
getOrderStatus
()))
{
//已取消
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
// for (OrderGoods orderGoods : orderGoodsList) {
// vehicleUsageMap.put(orderGoods.getVehicleUsage(),
// vehicleUsageMap.get(orderGoods.getVehicleUsage())
// .add(orderGoods.getResidueTransportWeight()));
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// //TODO 补充批量更新接口 关闭货单状态
// update.setResidueTransportWeight(BigDecimal.ZERO);
// //update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// orderGoodsDao.updateEntityByKey(update);
// }
orderGoodsDao
.
batchUpdateOrderGoodsWeight
(
BigDecimal
.
ZERO
,
orderGoodsList
.
stream
().
map
(
OrderGoods:
:
getId
).
collect
(
Collectors
.
toList
()));
}
//归还吨数
...
...
@@ -552,7 +544,16 @@ public class OrderCancelServiceImpl implements OrderCancelService {
param
.
setResidueWeight
(
residueSum
);
param
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
param
.
setOwnResidueCarryWeight
(
ownResidueSum
);
orderFeign
.
rollbackOrderWeight
(
param
);
try
{
Result
<
Object
>
result
=
orderFeign
.
rollbackOrderWeight
(
param
);
if
(!
result
.
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"远程调用更新订单余量失败"
);
}
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
e
.
getMessage
());
}
}
...
...
@@ -571,23 +572,21 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if
(
CollectionUtil
.
isNotEmpty
(
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
)))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
orderGoodsList
.
stream
().
map
(
OrderGoods:
:
getId
).
collect
(
Collectors
.
toList
()));
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
break
;
case
2
:
//取消未拉运吨数的货单
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
()).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
//
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode()).succeed()) {
//
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
//
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
...
...
@@ -613,9 +612,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
()).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
//
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode()).succeed()) {
//
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
//
}
List
<
Integer
>
ids
=
orderChildren
.
stream
().
map
(
OrderChild:
:
getId
).
collect
(
Collectors
.
toList
());
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
ids
);
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
...
...
@@ -671,23 +670,19 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if
(
CollectionUtil
.
isNotEmpty
(
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
)))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
orderGoodsList
.
stream
().
map
(
OrderGoods:
:
getId
).
collect
(
Collectors
.
toList
()));
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
break
;
case
2
:
//取消未拉运吨数的货单
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
()).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
//
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode()).succeed()) {
//
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
//
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
...
...
@@ -713,9 +708,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
()).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
//
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode()).succeed()) {
//
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
//
}
List
<
Integer
>
ids
=
orderChildren
.
stream
().
map
(
OrderChild:
:
getId
).
collect
(
Collectors
.
toList
());
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
ids
);
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/OrderGoodsSqlProvider.java
浏览文件 @
21f100d7
...
...
@@ -177,7 +177,7 @@ public class OrderGoodsSqlProvider {
public
String
updateOrderGoodsSetAlreadyWeight
(
@Param
(
value
=
"alreadyWeight"
)
BigDecimal
alreadyWeight
,
@Param
(
value
=
"id"
)
Integer
id
){
String
sql
=
new
SQL
()
{{
UPDATE
(
"order_goods"
)
.
SET
(
"already_transport_weight = already_transport_weight
+
#{residueWeight}"
)
.
SET
(
"already_transport_weight = already_transport_weight
-
#{residueWeight}"
)
.
WHERE
(
"id = #{id}"
);
}}.
toString
();
...
...
@@ -188,7 +188,7 @@ public class OrderGoodsSqlProvider {
String
sql
=
new
SQL
()
{{
UPDATE
(
"order_goods"
)
.
SET
(
"residue_transport_weight = residue_transport_weight + #{residueWeight}"
)
.
SET
(
"already_transport_weight = already_transport_weight
+
#{alreadyWeight}"
)
.
SET
(
"already_transport_weight = already_transport_weight
-
#{alreadyWeight}"
)
.
WHERE
(
"id = #{id}"
);
}}.
toString
();
...
...
@@ -248,7 +248,7 @@ public class OrderGoodsSqlProvider {
String
sql
=
new
SQL
()
{{
UPDATE
(
"order_goods"
)
.
SET
(
"residue_transport_weight = residue_transport_weight + #{residueWeight}"
)
.
SET
(
"already_transport_weight = already_transport_weight
+
#{alreadyWeight}"
)
.
SET
(
"already_transport_weight = already_transport_weight
-
#{alreadyWeight}"
)
.
SET
(
"status = #{status}"
)
.
WHERE
(
"id = #{id}"
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论