Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
5970d4a0
提交
5970d4a0
authored
10月 28, 2023
作者:
liuhaiquan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改创建货单一个车辆只能绑定一个定向单的拦截逻辑
上级
1292537a
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
178 行增加
和
0 行删除
+178
-0
OrderGoodsTruckBindDao.java
.../java/com/clx/performance/dao/OrderGoodsTruckBindDao.java
+2
-0
OrderGoodsTruckBindDaoImpl.java
.../clx/performance/dao/impl/OrderGoodsTruckBindDaoImpl.java
+9
-0
GoodsOrderStrategy.java
...java/com/clx/performance/strategy/GoodsOrderStrategy.java
+32
-0
SpringContextUtils.java
...in/java/com/clx/performance/utils/SpringContextUtils.java
+135
-0
没有找到文件。
performance-web/src/main/java/com/clx/performance/dao/OrderGoodsTruckBindDao.java
浏览文件 @
5970d4a0
...
@@ -7,6 +7,7 @@ import com.msl.common.dao.BaseDao;
...
@@ -7,6 +7,7 @@ import com.msl.common.dao.BaseDao;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
/**
/**
* @Author: huyufan
* @Author: huyufan
...
@@ -40,4 +41,5 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
...
@@ -40,4 +41,5 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
List
<
OrderGoodsTruckBind
>
getTrucksBindByOrderGoodsNo
(
String
orderGoodsNo
,
String
truckNo
);
List
<
OrderGoodsTruckBind
>
getTrucksBindByOrderGoodsNo
(
String
orderGoodsNo
,
String
truckNo
);
List
<
OrderGoodsTruckBind
>
judgeTruckIsBindDxOrder
(
Set
<
String
>
set
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderGoodsTruckBindDaoImpl.java
浏览文件 @
5970d4a0
...
@@ -14,6 +14,7 @@ import org.springframework.stereotype.Repository;
...
@@ -14,6 +14,7 @@ import org.springframework.stereotype.Repository;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
/**
/**
* @Author: huyufan
* @Author: huyufan
...
@@ -124,4 +125,12 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
...
@@ -124,4 +125,12 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
query
.
orderByDesc
(
OrderGoodsTruckBind
::
getCreateTime
);
query
.
orderByDesc
(
OrderGoodsTruckBind
::
getCreateTime
);
return
baseMapper
.
selectList
(
query
);
return
baseMapper
.
selectList
(
query
);
}
}
@Override
public
List
<
OrderGoodsTruckBind
>
judgeTruckIsBindDxOrder
(
Set
<
String
>
set
)
{
LambdaQueryWrapper
<
OrderGoodsTruckBind
>
query
=
new
LambdaQueryWrapper
<>();
query
.
in
(
OrderGoodsTruckBind:
:
getTruckNo
,
set
);
query
.
in
(
OrderGoodsTruckBind
::
getStatus
,
OrderGoodsTruckBindEnum
.
Status
.
SUCCESS
.
getCode
(),
OrderGoodsTruckBindEnum
.
Status
.
GET
.
getCode
());
return
baseMapper
.
selectList
(
query
);
}
}
}
performance-web/src/main/java/com/clx/performance/strategy/GoodsOrderStrategy.java
浏览文件 @
5970d4a0
...
@@ -2,21 +2,31 @@ package com.clx.performance.strategy;
...
@@ -2,21 +2,31 @@ package com.clx.performance.strategy;
import
com.clx.order.enums.OrderStopEnum
;
import
com.clx.order.enums.OrderStopEnum
;
import
com.clx.order.enums.ResultEnum
;
import
com.clx.order.enums.ResultEnum
;
import
com.clx.order.params.OrderGoodsChildParams
;
import
com.clx.order.params.OrderGoodsParams
;
import
com.clx.order.params.OrderGoodsParams
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.model.OrderGoodsTruckBind
;
import
com.clx.performance.utils.SpringContextUtils
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.exception.ServiceSystemException
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
@Slf4j
@Slf4j
public
abstract
class
GoodsOrderStrategy
{
public
abstract
class
GoodsOrderStrategy
{
/**
/**
* 不同的用车需求执行不同的策略 1:one 2:two 3:three
* 不同的用车需求执行不同的策略 1:one 2:two 3:three
* 用车需求: 1平台车辆 2部分平台车辆 3自有车辆
* 用车需求: 1平台车辆 2部分平台车辆 3自有车辆
...
@@ -33,6 +43,28 @@ public abstract class GoodsOrderStrategy {
...
@@ -33,6 +43,28 @@ public abstract class GoodsOrderStrategy {
if
(
Objects
.
equals
(
orderInfo
.
getStopFlag
(),
OrderStopEnum
.
Status
.
YES
.
getCode
())){
if
(
Objects
.
equals
(
orderInfo
.
getStopFlag
(),
OrderStopEnum
.
Status
.
YES
.
getCode
())){
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"订单已暂停,无法进行提量"
);
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"订单已暂停,无法进行提量"
);
}
}
//多个定向单不允许车辆重复
List
<
OrderGoodsChildParams
>
orderGoodsChildParams
=
orderGoodsParams
.
getOrderGoodsChildParams
();
Set
<
String
>
set
=
new
HashSet
<>();
int
i
=
0
;
for
(
OrderGoodsChildParams
item
:
orderGoodsChildParams
)
{
if
(
CollectionUtils
.
isNotEmpty
(
item
.
getTruckList
())){
set
.
addAll
(
item
.
getTruckList
());
i
=
i
+
item
.
getTruckList
().
size
();
}
}
if
(!
Objects
.
equals
(
set
.
size
(),
i
)
){
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"定向单选择车辆重复"
);
}
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
=
SpringContextUtils
.
getBeanByClass
(
OrderGoodsTruckBindDao
.
class
);
List
<
OrderGoodsTruckBind
>
binds
=
orderGoodsTruckBindDao
.
judgeTruckIsBindDxOrder
(
set
);
if
(
CollectionUtils
.
isNotEmpty
(
binds
)){
List
<
String
>
repeatBind
=
binds
.
stream
().
map
(
OrderGoodsTruckBind:
:
getTruckNo
).
collect
(
Collectors
.
toList
());
String
trucks
=
repeatBind
.
stream
().
collect
(
Collectors
.
joining
(
", "
));
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"已被定向单绑定车辆:"
+
trucks
);
}
//根据不同的订单类型创建不同的货单
//根据不同的订单类型创建不同的货单
LocalDateTime
sendLazyTime
=
goodsOrderProcess
(
orderGoodsParams
,
orderInfo
,
now
);
LocalDateTime
sendLazyTime
=
goodsOrderProcess
(
orderGoodsParams
,
orderInfo
,
now
);
...
...
performance-web/src/main/java/com/clx/performance/utils/SpringContextUtils.java
0 → 100644
浏览文件 @
5970d4a0
package
com
.
clx
.
performance
.
utils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeansException
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpSession
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLEncoder
;
import
java.util.Map
;
/**
*
* Spring 工具类
*/
@Component
public
class
SpringContextUtils
implements
ApplicationContextAware
{
private
static
ConfigurableApplicationContext
applicationContext
;
@Override
public
void
setApplicationContext
(
ApplicationContext
context
)
throws
BeansException
{
applicationContext
=
(
ConfigurableApplicationContext
)
context
;
}
/**
* 获取ApplicationContext对象
*/
public
static
ApplicationContext
getApplicationContext
(){
return
applicationContext
;
}
/**
* 停止应用程序
*/
public
static
void
close
(){
if
(
applicationContext
!=
null
){
applicationContext
.
close
();
}
}
/**
* 根据bean的名称获取bean
*/
public
static
Object
getBeanByName
(
String
name
){
return
applicationContext
.
getBean
(
name
);
}
/**
* 根据bean的class来查找对象
*/
public
static
<
T
>
T
getBeanByClass
(
Class
<
T
>
clazz
){
return
applicationContext
.
getBean
(
clazz
);
}
/**
* 根据bean的class来查找所有的对象(包括子类)
*/
public
static
<
T
>
Map
<
String
,
T
>
getBeansByClass
(
Class
<
T
>
c
){
return
applicationContext
.
getBeansOfType
(
c
);
}
/**
* 获取HttpServletRequest
*/
public
static
HttpServletRequest
getRequest
()
{
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
currentRequestAttributes
();
return
attributes
.
getRequest
();
}
/**
* 获取HttpSession
*/
public
static
HttpSession
getSession
()
{
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
currentRequestAttributes
();
return
attributes
.
getRequest
().
getSession
();
}
/**
* 获取完整的请求URL
*/
public
static
String
getRequestUrl
(){
return
getRequestUrl
(
getRequest
());
}
/**
* 获取完整的请求URL
*/
public
static
String
getRequestUrl
(
HttpServletRequest
request
){
//当前请求路径
String
currentUrl
=
request
.
getRequestURL
().
toString
();
//请求参数
String
queryString
=
request
.
getQueryString
();
if
(!
StringUtils
.
isEmpty
(
queryString
)){
currentUrl
=
currentUrl
+
"?"
+
queryString
;
}
String
result
=
""
;
try
{
result
=
URLEncoder
.
encode
(
currentUrl
,
"UTF-8"
);
}
catch
(
UnsupportedEncodingException
e
)
{
//ignore
}
return
result
;
}
/**
* 获取请求的客户端IP
*/
public
static
String
getRequestIp
(
HttpServletRequest
request
)
{
String
ip
=
request
.
getHeader
(
"X-Forwarded-For"
);
if
(
StringUtils
.
isNoneBlank
(
ip
)
&&
!
"unKnown"
.
equalsIgnoreCase
(
ip
)){
//多次反向代理后会有多个ip值,第一个ip才是真实ip
int
index
=
ip
.
indexOf
(
","
);
if
(
index
!=
-
1
){
return
ip
.
substring
(
0
,
index
);
}
else
{
return
ip
;
}
}
ip
=
request
.
getHeader
(
"X-Real-IP"
);
if
(
StringUtils
.
isNoneBlank
(
ip
)
&&
!
"unKnown"
.
equalsIgnoreCase
(
ip
)){
return
ip
;
}
return
request
.
getRemoteAddr
();
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论