Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
yangxiujun
/
paidan_demo
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 4598058a
authored
Aug 01, 2023
by
丁伟峰
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-order-saas' into develop
2 parents
443ac184
d615067a
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
130 additions
and
86 deletions
project-order/src/main/java/com/dituhui/pea/order/common/SaasUtils.java
project-order/src/main/java/com/dituhui/pea/order/dto/SaasFendanDTO.java
project-order/src/main/java/com/dituhui/pea/order/dto/SaasXyFendanDTO.java
project-order/src/main/java/com/dituhui/pea/order/feign/ISaaSRemoteService.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/CapacityQueryServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/common/SaasUtils.java
View file @
4598058
package
com
.
dituhui
.
pea
.
order
.
common
;
package
com
.
dituhui
.
pea
.
order
.
common
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dto.SaasFendanDTO
;
import
com.dituhui.pea.order.dto.SaasXyFendanDTO
;
import
com.dituhui.pea.order.feign.ISaaSRemoteService
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.
apache.commons.lang3.StringUtils
;
import
org.
springframework.beans.factory.annotation.Autowired
;
import
org.springframework.
http.*
;
import
org.springframework.
beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.client.RestTemplate
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Random
;
import
java.util.stream.Collectors
;
@Component
@Component
@Slf4j
@Slf4j
public
class
SaasUtils
{
public
class
SaasUtils
{
@Value
(
"${SaaS.ak}"
)
String
ak
;
@Value
(
"${SaaS.url}"
)
String
url
;
@Autowired
ISaaSRemoteService
saasRemoteService
;
/**
/**
* 根据提供的地址信息,获取对应的片区图层定义的工作队;如果没有找到,返回为空
* 根据提供的地址信息,获取对应的片区图层定义的工作队;如果没有找到,返回为空
*/
*/
...
@@ -29,45 +37,29 @@ public class SaasUtils {
...
@@ -29,45 +37,29 @@ public class SaasUtils {
// todo 由于saas的分单接口尚未完成,目前仅仅是调用分单获取图层、区块名称,对于我们的容量查询没有真正使用,目前采用随机返回方式
// todo 由于saas的分单接口尚未完成,目前仅仅是调用分单获取图层、区块名称,对于我们的容量查询没有真正使用,目前采用随机返回方式
// 创建RestTemplate实例
// 创建RestTemplate实例
log
.
info
(
"===> queryBlocksByLocation({})"
,
location
);
log
.
info
(
"===> queryBlocksByLocation({})"
,
location
);
RestTemplate
restTemplate
=
new
RestTemplate
();
// 设置请求头
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_FORM_URLENCODED
);
// 构建请求参数
String
url
;
MultiValueMap
<
String
,
Object
>
params
=
new
LinkedMultiValueMap
<>();
params
.
add
(
"ak"
,
"284c57cbabad4755a9c657885a8df3e2"
);
url
=
"https://pea-test.bshg.com.cn/v1/xyfendan"
;
String
[]
coordinates
=
location
.
split
(
","
);
String
[]
coordinates
=
location
.
split
(
","
);
params
.
add
(
"coordinate"
,
String
.
format
(
"{\"x\":%s, \"y\":%s}"
,
coordinates
[
0
],
coordinates
[
1
]));
String
coordinate
=
String
.
format
(
"{\"x\":%s, \"y\":%s}"
,
coordinates
[
0
],
coordinates
[
1
]);
Boolean
need_district
=
false
;
params
.
add
(
"need_district"
,
"false"
);
Boolean
need_layer
=
true
;
params
.
add
(
"need_layer"
,
"true"
);
// params.add("related_point_fields", "");
// params.add("related_point_fields", "");
params
.
add
(
"area_fields"
,
"名称,唯一编号,区块"
);
String
area_fields
=
"名称,唯一编号,区块"
;
String
str
=
saasRemoteService
.
blockByLocation
(
ak
,
coordinate
,
need_district
,
need_layer
,
area_fields
);
log
.
info
(
"request params ==> {}"
,
params
);
log
.
info
(
"blockByLocation返回结果: ===> {}"
,
str
);
// 构建请求实体
HttpEntity
<
MultiValueMap
<
String
,
Object
>>
requestEntity
=
new
HttpEntity
<>(
params
,
headers
);
// 发送POST请求
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
exchange
(
url
,
HttpMethod
.
POST
,
requestEntity
,
String
.
class
);
// 获取响应结果
String
responseBody
=
responseEntity
.
getBody
();
log
.
info
(
"after call saas ==> {}"
,
responseEntity
.
getBody
());
// 使用Jackson库解析JSON数据
List
<
BlockInfo
>
blocks
=
new
ArrayList
<>();
List
<
BlockInfo
>
blocks
=
new
ArrayList
<>();
ObjectMapper
objectMapper
=
new
ObjectMapper
();
try
{
try
{
JsonNode
responseJson
=
objectMapper
.
readTree
(
responseBody
);
// 发现下面的语句,二级dto总是被解析为LinkedTreeMap,导致后面逻辑处理失败,因此改为自己用ObjectMapper来解析
// 坐标模式
// Result<List<SaasXyFendanDTO.AreaInfo>> rs = TypeUtils.<List<SaasXyFendanDTO.AreaInfo>>convertResult(str);
for
(
JsonNode
r
:
responseJson
.
get
(
"result"
))
{
Result
<
List
<
SaasXyFendanDTO
.
AreaInfo
>>
rs
=
(
new
ObjectMapper
()).
readValue
(
str
,
new
TypeReference
<
Result
<
List
<
SaasXyFendanDTO
.
AreaInfo
>>>()
{
});
assert
rs
!=
null
;
for
(
SaasXyFendanDTO
.
AreaInfo
r
:
rs
.
getResult
())
{
// 分单接口暂时无图层返回
// 分单接口暂时无图层返回
if
(
r
.
get
(
"field3"
)
!=
null
&&
r
.
get
(
"field1"
)
!=
null
)
{
if
(
r
.
getField2
()
!=
null
&&
r
.
getField1
()
!=
null
)
{
blocks
.
add
(
new
BlockInfo
().
setBlockId
(
r
.
get
(
"field3"
).
asText
()).
setBlockName
(
r
.
get
(
"field1"
).
asText
()));
blocks
.
add
(
new
BlockInfo
()
.
setBlockId
(
r
.
getField2
())
.
setBlockName
(
r
.
getField1
()));
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -83,45 +75,30 @@ public class SaasUtils {
...
@@ -83,45 +75,30 @@ public class SaasUtils {
// todo 由于saas的分单接口尚未完成,目前仅仅是调用分单获取图层、区块名称,对于我们的容量查询没有真正使用,目前采用随机返回方式
// todo 由于saas的分单接口尚未完成,目前仅仅是调用分单获取图层、区块名称,对于我们的容量查询没有真正使用,目前采用随机返回方式
// 创建RestTemplate实例
// 创建RestTemplate实例
log
.
info
(
"===> queryBlocksByAddress({})"
,
address
);
log
.
info
(
"===> queryBlocksByAddress({})"
,
address
);
RestTemplate
restTemplate
=
new
RestTemplate
();
// 设置请求头
String
addresses
=
String
.
format
(
"[{\"address\":\"%s\"}]"
,
address
);
HttpHeaders
headers
=
new
HttpHeaders
();
Boolean
need_district
=
false
;
headers
.
setContentType
(
MediaType
.
APPLICATION_FORM_URLENCODED
);
Boolean
need_layer
=
true
;
String
area_fields
=
"名称,唯一编号,区块"
;
String
str
=
saasRemoteService
.
blockByAddress
(
ak
,
addresses
,
need_district
,
need_layer
,
area_fields
);
log
.
info
(
"blockByAddress返回结果: ===> {}"
,
str
);
// 构建请求参数
String
url
;
MultiValueMap
<
String
,
Object
>
params
=
new
LinkedMultiValueMap
<>();
params
.
add
(
"ak"
,
"284c57cbabad4755a9c657885a8df3e2"
);
url
=
"https://pea-test.bshg.com.cn/v2/fendan"
;
params
.
add
(
"addresses"
,
String
.
format
(
"[{\"address\":\"%s\"}]"
,
address
));
params
.
add
(
"need_district"
,
"false"
);
params
.
add
(
"need_layer"
,
"true"
);
// params.add("related_point_fields", "");
params
.
add
(
"area_fields"
,
"名称,唯一编号,区块"
);
log
.
info
(
"request params ==> {}"
,
params
);
// 构建请求实体
HttpEntity
<
MultiValueMap
<
String
,
Object
>>
requestEntity
=
new
HttpEntity
<>(
params
,
headers
);
// 发送POST请求
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
exchange
(
url
,
HttpMethod
.
POST
,
requestEntity
,
String
.
class
);
// 获取响应结果
String
responseBody
=
responseEntity
.
getBody
();
log
.
info
(
"after call saas ==> {}"
,
responseEntity
.
getBody
());
// 使用Jackson库解析JSON数据
List
<
BlockInfo
>
blocks
=
new
ArrayList
<>();
List
<
BlockInfo
>
blocks
=
new
ArrayList
<>();
ObjectMapper
objectMapper
=
new
ObjectMapper
();
try
{
try
{
JsonNode
responseJson
=
objectMapper
.
readTree
(
responseBody
);
// 地址模式
// 地址模式
// 获取areaResults[0]的值
// 获取areaResults[0]的值
for
(
JsonNode
r
:
responseJson
.
get
(
"result"
).
get
(
0
).
get
(
"areaResults"
))
{
// Result<List<SaasFendanDTO.Result>> rs = TypeUtils.<List<SaasFendanDTO.Result>>convertResult(str);
// 分单接口暂时无图层返回
Result
<
List
<
SaasFendanDTO
.
ResultDATA
>>
rs
=
new
ObjectMapper
().
readValue
(
str
,
new
TypeReference
<
Result
<
List
<
SaasFendanDTO
.
ResultDATA
>>>()
{
if
(
r
.
get
(
"field3"
)
!=
null
&&
r
.
get
(
"field1"
)
!=
null
)
{
});
blocks
.
add
(
new
BlockInfo
().
setBlockId
(
r
.
get
(
"field3"
).
asText
()).
setBlockName
(
r
.
get
(
"field1"
).
asText
()));
assert
rs
!=
null
;
for
(
SaasFendanDTO
.
ResultDATA
r
:
rs
.
getResult
())
{
for
(
SaasFendanDTO
.
AreaResult
ar
:
r
.
getAreaResults
())
{
// 分单接口暂时无图层返回
if
(
ar
.
getField1
()
!=
null
&&
ar
.
getField3
()
!=
null
)
{
blocks
.
add
(
new
BlockInfo
()
.
setBlockId
(
ar
.
getField3
())
.
setBlockName
(
ar
.
getField1
()));
}
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
...
project-order/src/main/java/com/dituhui/pea/order/dto/SaasFendanDTO.java
0 → 100644
View file @
4598058
package
com
.
dituhui
.
pea
.
order
.
dto
;
import
lombok.Data
;
import
java.util.List
;
public
class
SaasFendanDTO
{
@Data
public
static
class
ResultDATA
{
private
List
<
AreaResult
>
areaResults
;
}
@Data
public
static
class
AreaResult
{
private
InnerPoint
innerPoint
;
private
String
field1
;
private
String
field2
;
private
String
field3
;
private
String
field4
;
private
String
field5
;
private
String
areaName
;
private
String
layer
;
}
@Data
public
static
class
InnerPoint
{
private
Float
x
;
private
Float
y
;
}
}
project-order/src/main/java/com/dituhui/pea/order/dto/SaasXyFendanDTO.java
0 → 100644
View file @
4598058
package
com
.
dituhui
.
pea
.
order
.
dto
;
import
lombok.Data
;
public
class
SaasXyFendanDTO
{
@Data
public
static
class
AreaInfo
{
private
String
areaName
;
private
String
layer
;
private
String
field1
;
private
String
field2
;
private
String
field3
;
private
String
field4
;
private
String
field5
;
}
}
project-order/src/main/java/com/dituhui/pea/order/feign/ISaaSRemoteService.java
View file @
4598058
package
com
.
dituhui
.
pea
.
order
.
feign
;
package
com
.
dituhui
.
pea
.
order
.
feign
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
@FeignClient
(
url
=
"${SaaS.url}"
,
name
=
"saasService"
)
@FeignClient
(
url
=
"${SaaS.url}"
,
name
=
"saasService"
)
public
interface
ISaaSRemoteService
{
public
interface
ISaaSRemoteService
{
@PostMapping
(
"/v1/area/add"
)
@PostMapping
(
"/v1/area/add"
)
public
String
addArea
(
@RequestParam
String
ak
,
@RequestParam
String
name
,
@RequestParam
String
layerId
,
public
String
addArea
(
@RequestParam
String
ak
,
@RequestParam
String
name
,
@RequestParam
String
layerId
,
@RequestParam
String
region
,
@RequestParam
String
coordType
);
@RequestParam
String
region
,
@RequestParam
String
coordType
);
@PostMapping
(
"/v1/area/delById"
)
@PostMapping
(
"/v1/area/delById"
)
public
String
deleteArea
(
@RequestParam
String
ak
,
@RequestParam
String
id
);
public
String
deleteArea
(
@RequestParam
String
ak
,
@RequestParam
String
id
);
@PostMapping
(
"/v1/layer/save"
)
@PostMapping
(
"/v1/layer/save"
)
public
String
addLayer
(
@RequestParam
String
ak
,
@RequestParam
String
layerName
,
@RequestParam
Integer
layerType
,
public
String
addLayer
(
@RequestParam
String
ak
,
@RequestParam
String
layerName
,
@RequestParam
Integer
layerType
,
@RequestParam
Integer
clipType
);
@RequestParam
Integer
clipType
);
@PostMapping
(
"/v1/layer/delete"
)
@PostMapping
(
"/v1/layer/delete"
)
public
String
deleteLayer
(
@RequestParam
String
ak
,
@RequestParam
String
layerId
);
public
String
deleteLayer
(
@RequestParam
String
ak
,
@RequestParam
String
layerId
);
@GetMapping
(
"/v1/xyfendan"
)
public
String
blockByLocation
(
@RequestParam
String
ak
,
@RequestParam
String
coordinate
,
@RequestParam
Boolean
need_district
,
@RequestParam
Boolean
need_layer
,
@RequestParam
String
area_fields
);
@GetMapping
(
"/v2/fendan"
)
public
String
blockByAddress
(
@RequestParam
String
ak
,
@RequestParam
String
addresses
,
@RequestParam
Boolean
need_district
,
@RequestParam
Boolean
need_layer
,
@RequestParam
String
area_fields
);
}
}
project-order/src/main/java/com/dituhui/pea/order/service/impl/CapacityQueryServiceImpl.java
View file @
4598058
...
@@ -5,9 +5,13 @@ import com.dituhui.pea.order.common.CapacityUtils;
...
@@ -5,9 +5,13 @@ import com.dituhui.pea.order.common.CapacityUtils;
import
com.dituhui.pea.order.common.DateUtils
;
import
com.dituhui.pea.order.common.DateUtils
;
import
com.dituhui.pea.order.common.EngineerUtils
;
import
com.dituhui.pea.order.common.EngineerUtils
;
import
com.dituhui.pea.order.common.SaasUtils
;
import
com.dituhui.pea.order.common.SaasUtils
;
import
com.dituhui.pea.order.dao.*
;
import
com.dituhui.pea.order.dao.CapacityEngineerStatDao
;
import
com.dituhui.pea.order.dao.EngineerSkillDao
;
import
com.dituhui.pea.order.dao.OrgTeamDao
;
import
com.dituhui.pea.order.dao.SkillInfoDao
;
import
com.dituhui.pea.order.dto.CapacityOrderQueryDTO
;
import
com.dituhui.pea.order.dto.CapacityOrderQueryDTO
;
import
com.dituhui.pea.order.entity.*
;
import
com.dituhui.pea.order.entity.*
;
import
com.dituhui.pea.order.feign.ISaaSRemoteService
;
import
com.dituhui.pea.order.service.CapacityQueryService
;
import
com.dituhui.pea.order.service.CapacityQueryService
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -17,7 +21,8 @@ import org.springframework.stereotype.Service;
...
@@ -17,7 +21,8 @@ import org.springframework.stereotype.Service;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.time.temporal.ChronoUnit
;
import
java.time.temporal.ChronoUnit
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
java.util.stream.Stream
;
...
@@ -39,6 +44,8 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
...
@@ -39,6 +44,8 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
private
CapacityEngineerStatDao
capacityEngineerStatDao
;
private
CapacityEngineerStatDao
capacityEngineerStatDao
;
@Autowired
@Autowired
private
OrgTeamDao
orgTeamDao
;
private
OrgTeamDao
orgTeamDao
;
@Autowired
ISaaSRemoteService
saasRemoteService
;
@Override
@Override
public
Result
<?>
queryMatchCapacityData
(
CapacityOrderQueryDTO
.
Request
reqDTO
)
{
public
Result
<?>
queryMatchCapacityData
(
CapacityOrderQueryDTO
.
Request
reqDTO
)
{
...
@@ -46,6 +53,8 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
...
@@ -46,6 +53,8 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
log
.
info
(
"===> queryMatchCapacityData()"
);
log
.
info
(
"===> queryMatchCapacityData()"
);
List
<
String
>
layerIds
=
capacityUtils
.
getLayers
(
reqDTO
.
getBrand
(),
reqDTO
.
getType
(),
reqDTO
.
getSkill
());
List
<
String
>
layerIds
=
capacityUtils
.
getLayers
(
reqDTO
.
getBrand
(),
reqDTO
.
getType
(),
reqDTO
.
getSkill
());
// 同步到saas,返回blockId
List
<
String
>
blockIds
=
null
;
List
<
String
>
blockIds
=
null
;
if
(
StringUtils
.
isNotBlank
(
reqDTO
.
getLocation
()))
{
if
(
StringUtils
.
isNotBlank
(
reqDTO
.
getLocation
()))
{
blockIds
=
saasUtils
.
queryBlocksByLocation
(
reqDTO
.
getLocation
()).
stream
().
map
(
SaasUtils
.
BlockInfo
::
getBlockId
).
collect
(
Collectors
.
toList
());
blockIds
=
saasUtils
.
queryBlocksByLocation
(
reqDTO
.
getLocation
()).
stream
().
map
(
SaasUtils
.
BlockInfo
::
getBlockId
).
collect
(
Collectors
.
toList
());
...
@@ -58,7 +67,7 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
...
@@ -58,7 +67,7 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
}
}
List
<
String
>
teamIds
=
capacityUtils
.
getTeamIdsByBlockIdsAndLayerIds
(
blockIds
,
layerIds
);
List
<
String
>
teamIds
=
capacityUtils
.
getTeamIdsByBlockIdsAndLayerIds
(
blockIds
,
layerIds
);
if
(
teamIds
==
null
||
teamIds
.
size
()
==
0
)
{
if
(
teamIds
==
null
||
teamIds
.
size
()
==
0
)
{
Result
.
failed
(
"没有找到匹配的工作队"
);
return
Result
.
failed
(
"没有找到匹配的工作队"
);
}
}
// 选择一个工作队(理论上,只有1个合适的工作队),然后遍历下面的各个技术员,从符合技能的技术员中,汇总相关的容量
// 选择一个工作队(理论上,只有1个合适的工作队),然后遍历下面的各个技术员,从符合技能的技术员中,汇总相关的容量
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment