Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit fe0b0488
由
LN
编写于
2022-03-28 14:22:14 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加与Mes对接代码
1 个父辈
baecefe2
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
662 行增加
和
34 行删除
pom.xml
src/main/java/com/neotel/smfcore/common/utils/Constants.java
src/main/java/com/neotel/smfcore/core/hik/rest/SingleInController.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/hikvision/HikApi.java
src/main/java/com/neotel/smfcore/hikvision/HikApiCache.java
src/main/java/com/neotel/smfcore/hikvision/bean/HikOutInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/InOutApiInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/OrderItemInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/ScheduleTaskInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/TransferOrderInInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/TransferOrderInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/api/HikApiRequest.java
src/main/java/com/neotel/smfcore/hikvision/bean/api/RequestParam.java
src/main/java/com/neotel/smfcore/hikvision/bean/api/ResponseParam.java
src/main/java/com/neotel/smfcore/hikvision/util/HttpHelper.java
src/main/java/com/neotel/smfcore/hikvision/util/JsonUtil.java
src/main/resources/config/application-dev.yml
src/main/resources/config/application.yml
pom.xml
查看文件 @
fe0b048
...
...
@@ -225,6 +225,11 @@
<artifactId>
httpclient
</artifactId>
<version>
4.4
</version>
</dependency>
<dependency>
<groupId>
commons-httpclient
</groupId>
<artifactId>
commons-httpclient
</artifactId>
<version>
3.1
</version>
</dependency>
</dependencies>
...
...
src/main/java/com/neotel/smfcore/common/utils/Constants.java
查看文件 @
fe0b048
...
...
@@ -143,4 +143,9 @@ public class Constants {
*/
public
static
final
String
CACHE_languageType
=
"CACHE_languageType"
;
/**
* HIKAPI重发消息key
*/
public
static
final
String
CACHE_failedRequestMap
=
"CACHE_failedRequestMap"
;
}
src/main/java/com/neotel/smfcore/core/hik/rest/SingleInController.java
查看文件 @
fe0b048
...
...
@@ -68,17 +68,19 @@ public class SingleInController {
public
List
<
ShelfPosInfo
>
codeIn
(
@RequestParam
Map
<
String
,
String
>
paramsMap
)
{
String
code
=
paramsMap
.
get
(
"code"
);
if
(
ObjectUtils
.
isEmpty
(
code
))
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"code"
});
int
width
=
0
;
int
height
=
0
;
if
(!
ObjectUtils
.
isEmpty
(
code
))
{
// throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"code"});
Barcode
barcode
=
resolveBarcode
(
code
);
width
=
barcode
.
getPlateSize
();
height
=
barcode
.
getHeight
();
}
Barcode
barcode
=
resolveBarcode
(
code
);
List
<
ShelfPosInfo
>
shelfPosInfos
=
new
ArrayList
<>();
int
width
=
barcode
.
getPlateSize
();
int
height
=
barcode
.
getHeight
();
//获取对应尺寸的空位列表
//TODO 增加用户权限判断
String
userId
=
SecurityUtils
.
getCurrentUserId
();
User
user
=
userManager
.
get
(
userId
);
Set
<
String
>
mygroups
=
user
.
getGroups
();
...
...
@@ -101,8 +103,10 @@ public class SingleInController {
//
for
(
UsageItem
item
:
storage
.
getUsageMap
().
values
())
{
if
(
item
.
getH
()
==
height
&&
item
.
getW
()
==
width
)
{
if
(
height
==
0
||
width
==
0
)
{
posTotalCount
+=
item
.
getTotalCount
();
posUsedCount
=
item
.
getUsedCount
();
}
else
if
(
item
.
getH
()
==
height
&&
item
.
getW
()
==
width
)
{
posTotalCount
+=
item
.
getTotalCount
();
posUsedCount
=
item
.
getUsedCount
();
}
...
...
@@ -120,10 +124,6 @@ public class SingleInController {
}
}
// List<Storage> storageList = storageManager.findAll();
// for (Storage storage : storageList
// ) {
// }
//根据空位数排序
Collections
.
sort
(
shelfPosInfos
);
return
shelfPosInfos
;
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
fe0b048
...
...
@@ -248,9 +248,9 @@ public class LiteOrder extends BasePo implements Serializable {
this
.
setBaseCode
(
outInfo
.
getBaseCode
());
this
.
setLgort
(
outInfo
.
getLgort
());
this
.
setWorkLine
(
outInfo
.
getWorkLine
());
this
.
setStartDate
(
outInfo
.
getStartD
ate
());
this
.
setStartDate
(
outInfo
.
getStartD
());
this
.
setUpdateDate
(
new
Date
());
this
.
setEndDate
(
outInfo
.
getEndD
ate
());
this
.
setEndDate
(
outInfo
.
getEndD
());
this
.
setWemng
(
outInfo
.
getWemng
());
}
...
...
src/main/java/com/neotel/smfcore/hikvision/HikApi.java
0 → 100644
查看文件 @
fe0b048
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/hikvision/HikApiCache.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.hikvision.bean.api.HikApiRequest
;
import
com.neotel.smfcore.hikvision.bean.api.ResponseParam
;
import
com.neotel.smfcore.hikvision.util.HttpHelper
;
import
com.neotel.smfcore.hikvision.util.JsonUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
@Slf4j
@Repository
public
class
HikApiCache
{
@Autowired
private
static
DataCache
dataCache
;
/**
* 需要重发的指令列表
*/
private
static
Map
<
String
,
HikApiRequest
>
failedRequestMap
;
private
static
boolean
isProcessTimer
=
false
;
/**
* 定时器,每10秒执行一次
*/
public
static
void
runTimer
()
{
if
(!
isProcessTimer
)
{
isProcessTimer
=
true
;
try
{
sendFailedRequest
();
}
catch
(
Exception
e
)
{
log
.
error
(
"发送失败请求定时器执行出错:"
+
e
.
getMessage
());
}
finally
{
isProcessTimer
=
false
;
}
}
}
public
static
void
addFailedRequest
(
HikApiRequest
apiRequest
)
{
String
mapKey
=
apiRequest
.
getParam
().
getReqCode
();
if
(
failedRequestMap
.
get
(
mapKey
)
==
null
)
{
log
.
info
(
mapKey
+
"通知指令发送到Hik失败,加入到缓存"
);
failedRequestMap
.
put
(
apiRequest
.
getParam
().
getReqCode
(),
apiRequest
);
dataCache
.
updateCache
(
Constants
.
CACHE_failedRequestMap
,
failedRequestMap
);
}
}
public
static
void
removeFailedRequest
(
HikApiRequest
apiRequest
)
{
String
mapKey
=
apiRequest
.
getParam
().
getReqCode
();
if
(
failedRequestMap
.
get
(
mapKey
)
!=
null
)
{
log
.
info
(
mapKey
+
"通知指令发送到Hik成功,从缓存中移除"
);
failedRequestMap
.
remove
(
apiRequest
.
getParam
().
getReqCode
());
dataCache
.
updateCache
(
Constants
.
CACHE_failedRequestMap
,
failedRequestMap
);
}
}
/**
* 加载请求指令信息
*/
private
static
void
initApiRequestMap
()
{
if
(
failedRequestMap
==
null
)
{
failedRequestMap
=
new
ConcurrentHashMap
<>();
Map
<
String
,
HikApiRequest
>
dbFailedRequestMap
=
dataCache
.
getCache
(
Constants
.
CACHE_failedRequestMap
);
if
(
dbFailedRequestMap
!=
null
)
{
failedRequestMap
.
putAll
(
dbFailedRequestMap
);
log
.
info
(
"当前发送通知失败指令:"
+
failedRequestMap
);
}
}
}
/**
* 获取失败列表,进行定时发送
*/
private
static
void
sendFailedRequest
()
throws
ApiException
{
List
<
HikApiRequest
>
failedList
=
new
ArrayList
<>();
failedList
.
addAll
(
failedRequestMap
.
values
());
failedList
.
sort
(
new
Comparator
<
HikApiRequest
>()
{
@Override
public
int
compare
(
HikApiRequest
o1
,
HikApiRequest
o2
)
{
return
o1
.
getCreateTime
().
compareTo
(
o2
.
getCreateTime
());
}
});
for
(
HikApiRequest
apiRequest
:
failedList
)
{
ResponseParam
responseParam
=
HttpHelper
.
postJson
(
apiRequest
.
getUrl
(),
apiRequest
.
getParam
());
boolean
needResend
=
false
;
if
(
responseParam
==
null
||
responseParam
.
getCode
().
equals
(-
1
))
{
needResend
=
true
;
log
.
info
(
"Hik 转储单接口 (transferOrderThread): 未收到返回值,需要重发"
);
}
else
if
(
responseParam
.
getCode
().
equals
(
HikApi
.
CODE_PARAMERROR
)
||
responseParam
.
getCode
().
equals
(
HikApi
.
CODE_REPEAT
))
{
needResend
=
true
;
log
.
info
(
"Hik 转储单接口 (transferOrderThread): 返回code="
+
responseParam
.
getCode
()
+
",需要重发,"
+
JsonUtil
.
toJsonStr
(
responseParam
));
}
else
{
log
.
info
(
"Hik 转储单接口 (transferOrderThread): 返回"
+
JsonUtil
.
toJsonStr
(
responseParam
));
// Map<String, Object> result = JsonUtil.toMap(responseParam.getData());
// return result;
}
}
}
}
src/main/java/com/neotel/smfcore/hikvision/bean/HikOutInfo.java
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.util.unit.DataUnit
;
import
java.io.Serializable
;
import
java.util.Date
;
@Slf4j
@Getter
@Setter
public
class
HikOutInfo
implements
Serializable
{
/**
* jobNo String true 工单号/合单号[合并唯一]
*/
pr
ivate
String
jobNo
;
pr
otected
String
jobNo
;
/**
*replenishmentNo String false 补料单号,如果有值表示此单为补料单[合并唯一]
*/
pr
ivate
String
replenishmentNo
;
pr
otected
String
replenishmentNo
;
/**
*baseCode String true 基地编号
*/
pr
ivate
String
baseCode
;
pr
otected
String
baseCode
;
/**
*lgort String true 库位
*/
pr
ivate
String
lgort
;
pr
otected
String
lgort
;
/**
*workLine String true 产线
*/
pr
ivate
String
workLine
;
pr
otected
String
workLine
;
/**
*startDate String true 开工时间
* "startDate": "2022-03-01 08:00:00",
*/
pr
ivate
Date
startDate
;
pr
otected
String
startDate
;
/**
*endDate String true 完工时间
* "endDate": "2022-03-01 22:00:00",
*/
pr
ivate
Date
endDate
;
pr
otected
String
endDate
;
/**
* materialNo String true 物料号[详情]
*/
pr
ivate
String
materialNo
;
pr
otected
String
materialNo
;
/**
* station String true 站位号
*/
pr
ivate
String
station
;
pr
otected
String
station
;
/**
*qty Integer true 需求数量
*/
pr
ivate
Integer
qty
;
pr
otected
Integer
qty
;
/**
*overFlag Integer true 超发标识[贵重物料](1是不允许超发,0是允许超发)
*/
pr
ivate
Integer
overFlag
;
pr
otected
Integer
overFlag
;
/**
*increment Integer true 发料增量
*/
pr
ivate
Integer
increment
;
pr
otected
Integer
increment
;
/**
*wemng Integer true 排程数量
*/
pr
ivate
Integer
wemng
;
pr
otected
Integer
wemng
;
/**
*reason String false 移动原因
*/
pr
ivate
String
reason
;
pr
otected
String
reason
;
public
LiteOrderItem
crateOrderItem
(
String
orderNo
)
{
LiteOrderItem
item
=
new
LiteOrderItem
();
...
...
@@ -87,4 +93,24 @@ public class HikOutInfo implements Serializable {
return
item
;
}
public
Date
getStartD
(){
// "startDate": "2022-03-01 08:00:00",
Date
sDate
=
null
;
try
{
sDate
=
DateUtil
.
toDate
(
startDate
,
"yyyy-MM-dd HH:mm:ss"
);
}
catch
(
Exception
ex
){
log
.
error
(
"HitOutInfo getStartD ["
+
startDate
+
"] 出错:"
+
ex
.
toString
());
}
return
sDate
;
}
public
Date
getEndD
(){
Date
sDate
=
null
;
try
{
sDate
=
DateUtil
.
toDate
(
endDate
,
"yyyy-MM-dd HH:mm:ss"
);
}
catch
(
Exception
ex
){
log
.
error
(
"HitOutInfo getStartD ["
+
endDate
+
"] 出错:"
+
ex
.
toString
());
}
return
sDate
;
}
}
src/main/java/com/neotel/smfcore/hikvision/bean/InOutApiInfo.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
com.sun.corba.se.impl.resolver.SplitLocalResolverImpl
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 7.5入库上架过账接口
* 7.6出库下架过账接口
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
InOutApiInfo
{
// warehousingType Integer 是 入库类型(0普通入库1退料入库2并盘入库3截料入库)
// trayId String 41 是 料盘ID/唯一码
// qty Integer 是 数量
// baseCode String 16 是 基地
// lgort String 16 是 库位
// warehousingType Integer 是 出库类型(0普通出库1并盘出库 2湿敏出库)
// trayId String 41 是 料盘ID/唯一码
// qty Integer 是 数量
// baseCode String 16 是 基地
// lgort String 16 是 库位
/**
* 入库类型(0普通入库1退料入库2并盘入库3截料入库)
*/
private
Integer
inType
;
/**
* 出库类型(0普通出库1并盘出库 2湿敏出库)
*/
private
Integer
outType
;
/**
* 料盘ID/唯一码
*/
private
String
trayId
;
/**
* 数量
*/
private
Integer
qty
;
/**
* 基地
*/
private
String
baseCode
;
/**
* 库位
*/
private
String
lgort
;
}
src/main/java/com/neotel/smfcore/hikvision/bean/OrderItemInfo.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.io.Serializable
;
import
java.util.Date
;
@Getter
@Setter
public
class
OrderItemInfo
extends
HikOutInfo
{
// jobNo String 16 工单号/合单号
// station String 32 站位号
// baseCode String 16 基地编号
// lgort String 16 库位
// workLine String 16 产线
// startDate String 19 开工时间
// endDate String 19 完工时间
// materialNo String 9 物料号
// qty Integer 需求数量
// overFlag Integer 超发标识(1是不允许超发,0是允许超发)
// prepareIncrement Integer 发料增量
// wemng Integer 排程数量
/**
*increment Integer true 发料增量
*/
private
Integer
prepareIncrement
;
public
Integer
getIncrement
(){
if
(
getIncrement
()<=
0
&&
prepareIncrement
>=
0
){
return
prepareIncrement
;
}
return
increment
;
}
}
src/main/java/com/neotel/smfcore/hikvision/bean/ScheduleTaskInfo.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
io.swagger.models.auth.In
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 7.3排程发料过账接口 参数
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ScheduleTaskInfo
{
// jobNo String 32 是 工单号/合单号
// replenishmentNo String 32 否 补料单号(补料单业务补料单为必填项)
// station String 40 是 站位号
// factoryCode String 8 是 工厂
// lgort String 8 是 库位
// qty Integer 数量
// interceptFlag Integer 截料标识(0为不截料,1为截料)
// interceptQty Integer 截料数量
// trayId String 41 是 料盘ID
/**
* 工单号/合单号
*/
private
String
jobNo
;
/**
*补料单号(补料单业务补料单为必填项)
*/
private
String
replenishmentNo
;
/**
*站位号
*/
private
String
station
;
/**
*工厂
*/
private
String
factoryCode
;
/**
*库位
*/
private
String
lgort
;
/**
*数量
*/
private
Integer
qty
;
/**
*截料标识(0为不截料,1为截料)
*/
private
Integer
interceptFlag
;
/**
*截料数量
*/
private
Integer
interceptQty
;
/**
*料盘ID
*/
private
String
trayId
;
}
src/main/java/com/neotel/smfcore/hikvision/bean/TransferOrderInInfo.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 转储单入库信息 ,7.2 转储单入库过账接口
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
TransferOrderInInfo
{
// docNo String 16 是 单据号
// docType Integer 是 单据类型(0物料凭证,1交货单,2预留单、3AGV任务单)
// trayId String 41 唯一码
// baseCode String 16 基地编号
// lgort String 16 库位
// qty Integer 数量
/**
* 单据号
*/
private
String
docNo
;
/**
*单据类型(0物料凭证,1交货单,2预留单、3AGV任务单)
*/
private
Integer
docType
;
/**
* 唯一码
*/
private
String
trayId
;
/**
* 基地编号
*/
private
String
baseCode
;
/**
* 库位
*/
private
String
lgort
;
/**
* 数量
*/
private
String
qty
;
}
src/main/java/com/neotel/smfcore/hikvision/bean/TransferOrderInfo.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 转储单 ,7.1 转储单接口
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
TransferOrderInfo
{
// docNo String 32 单据号
// outLgort String 16 转出库位
// inLgort String 16 转入库位
// materialNo String 16 物料号
// baseCode String 16 基地编号
// dumpQty Integer 转出数量
/**
* 单据号
*/
private
String
docNo
;
/**
* 单据类型(0物料凭证,1交货单,2预留单、3AGV任务单)
*/
private
Integer
docType
=
0
;
/**
* 转出库位
*/
private
String
outLgort
;
/**
* 转入库位
*/
private
String
inLgort
;
/**
* 物料号
*/
private
String
materialNo
;
/**
*基地编号
*/
private
String
baseCode
;
/**
*转出数量
*/
private
String
dumpQty
;
}
src/main/java/com/neotel/smfcore/hikvision/bean/api/HikApiRequest.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
.
api
;
import
com.neotel.smfcore.hikvision.bean.api.RequestParam
;
import
lombok.*
;
import
java.io.Serializable
;
import
java.util.Date
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
HikApiRequest
implements
Serializable
{
/**
* 消息类型
*/
private
int
apiType
=
0
;
/**
* url
*/
private
String
url
=
""
;
/**
* 消息创建时间
*/
private
Date
createTime
;
/**
* 参数信息
*/
private
RequestParam
param
;
}
src/main/java/com/neotel/smfcore/hikvision/bean/api/RequestParam.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
.
api
;
import
lombok.*
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RequestParam
{
/**
* reqCode 是 String 请求唯一标识
*/
private
String
reqCode
;
/**
*userCode String 32 是 操作人
*/
private
String
userCode
;
/**
* data 否 Json 视具体业务而定
*/
private
String
data
;
}
src/main/java/com/neotel/smfcore/hikvision/bean/api/ResponseParam.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
.
api
;
import
lombok.*
;
import
java.io.Serializable
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ResponseParam
implements
Serializable
{
/**
* reqCode 是 String 唯一请求号,与传入的参数reqCode保持一致
*/
private
String
reqCode
;
/**
* code 是 String 结果码:0-成功,1~N-失败
*/
private
String
code
;
/**
* message 是 String 0:成功 1~N:失败原因
*/
private
String
message
;
/**
*data 选填 Json 返回的数据结构
*/
private
String
data
;
}
src/main/java/com/neotel/smfcore/hikvision/util/HttpHelper.java
0 → 100644
查看文件 @
fe0b048
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/hikvision/util/JsonUtil.java
0 → 100644
查看文件 @
fe0b048
package
com
.
neotel
.
smfcore
.
hikvision
.
util
;
import
com.fasterxml.jackson.databind.DeserializationFeature
;
import
com.fasterxml.jackson.databind.JavaType
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
public
class
JsonUtil
{
// 定义jackson对象
private
static
final
ObjectMapper
MAPPER
=
new
ObjectMapper
();
static
{
MAPPER
.
configure
(
DeserializationFeature
.
FAIL_ON_UNKNOWN_PROPERTIES
,
false
);
}
/**
* 将对象转换成json字符串。
* <p>Title: pojoToJson</p>
* <p>Description: </p>
* @param data
* @return
*/
public
static
String
toJsonStr
(
Object
data
)
{
try
{
String
string
=
MAPPER
.
writeValueAsString
(
data
);
return
string
;
}
catch
(
Exception
e
)
{
log
.
info
(
"转换JSON字符串出错:"
,
e
);
}
return
null
;
}
/**
* 将json结果集转化为对象
*
* @param jsonStr json数据
* @param beanType 对象中的object类型
* @return
*/
public
static
<
T
>
T
toObj
(
String
jsonStr
,
Class
<
T
>
beanType
)
{
try
{
T
t
=
MAPPER
.
readValue
(
jsonStr
,
beanType
);
return
t
;
}
catch
(
Exception
e
)
{
log
.
info
(
jsonStr
+
"转换对象出错:"
,
e
);
}
return
null
;
}
/**
* 将json数据转换成对象list
* <p>Title: jsonToList</p>
* <p>Description: </p>
* @param jsonStr
* @param beanType
* @return
*/
public
static
<
T
>
List
<
T
>
toList
(
String
jsonStr
,
Class
<
T
>
beanType
)
{
JavaType
javaType
=
MAPPER
.
getTypeFactory
().
constructParametricType
(
List
.
class
,
beanType
);
try
{
List
<
T
>
list
=
MAPPER
.
readValue
(
jsonStr
,
javaType
);
return
list
;
}
catch
(
Exception
e
)
{
log
.
info
(
jsonStr
+
"转换List出错:"
,
e
);
}
return
new
ArrayList
<>();
}
public
static
Map
<
String
,
Object
>
toMap
(
String
jsonStr
){
//JavaType javaType = MAPPER.getTypeFactory().constructParametricType(HashMap.class, String.class, String.class);
try
{
//Map<String, String> map = MAPPER.readValue(jsonStr, javaType);
Map
<
String
,
Object
>
map
=
MAPPER
.
readValue
(
jsonStr
,
Map
.
class
);
return
map
;
}
catch
(
Exception
e
)
{
log
.
info
(
jsonStr
+
"转换Map出错:"
,
e
);
}
return
new
HashMap
<>();
}
public
static
void
main
(
String
args
[])
throws
Exception
{
String
jsonStr
=
"[{\n"
+
" \"action\": \"补料\",\n"
+
" \"hSerial\": \"82\",\n"
+
" \"so\": \"879235\",\n"
+
"\"refno\": \"F001_879235N_1\",\n"
+
"\"partNum\": \"7H.47134.1F1\",\n"
+
" \"slot\": \"1-11\",\n"
+
"\"qty\": \"2006\",\n"
+
"\"facility\": \"SU\",\n"
+
"\"sdte\": \"20191118\",\n"
+
"\"stme\": \"85957\",\n"
+
"\"reelcut\": \"N\",\n"
+
"\"mdte\": \"20191115\",\n"
+
"\"mtme\": \"172238\"\n"
+
"},\n{\n"
+
" \"action\": \"补料\",\n"
+
" \"hSerial\": \"82\",\n"
+
" \"so\": \"879235\",\n"
+
"\"refno\": \"F001_879235N_1\",\n"
+
"\"partNum\": \"7H.47134.1F1\",\n"
+
" \"slot\": \"1-11\",\n"
+
"\"qty\": \"2006\",\n"
+
"\"facility\": \"SU\",\n"
+
"\"sdte\": \"20191118\",\n"
+
"\"stme\": \"85957\",\n"
+
"\"reelcut\": \"N\",\n"
+
"\"mdte\": \"20191115\",\n"
+
"\"mtme\": \"172238\"\n"
+
"}\n]"
;
// List<RequestOutItemBean> items = JsonUtil.toList(jsonStr, RequestOutItemBean.class);
// for (RequestOutItemBean item : items) {
// System.out.println(item);
// }
// System.out.println(DateUtil.toDateString(new Date(),"yyyyMMddHHmmssS"));
// System.out.println(DateUtil.toDateString(new Date(),"yyyyMMddHHmmssS"));
// System.out.println(DateUtil.toDateString(new Date(),"yyyyMMddHHmmssS"));
// System.out.println(DateUtil.toDateString(new Date(),"yyyyMMddHHmmssS"));
//
// System.out.println(System.nanoTime());
// System.out.println(System.nanoTime());
// System.out.println(System.currentTimeMillis());
// System.out.println(System.currentTimeMillis());
jsonStr
=
"{\"state\":\"0\",\"msg\":\"鏂欏嵎浣嶆暟涓嶅尮閰??\",\"info\":{\"so\":\"\",\"facility\":\"12334\",\"company\":\"\",\"qty\":\"\",\"soseq\":\"\"}}"
;
jsonStr
=
"{\"data\":[{\"Serial\":\"58890\",\"VehicleID\":\"D15\",\"Status\":\"\"},{\"Serial\":\"58890\",\"VehicleID\":\"D44\",\"Status\":\"\"},{\"Serial\":\"58890\",\"VehicleID\":\"D83\",\"Status\":\"\"},{\"Serial\":\"58890\",\"VehicleID\":\"D90\",\"Status\":\"\"},{\"Serial\":\"58890\",\"VehicleID\":\"D98\",\"Status\":\"\"}]}"
;
Map
<
String
,
Object
>
map
=
JsonUtil
.
toMap
(
jsonStr
);
Object
data
=
map
.
get
(
"data"
);
if
(
data
!=
null
){
List
<
Object
>
dataList
=
(
List
)
data
;
for
(
Object
info
:
dataList
)
{
Map
<
String
,
String
>
infoMap
=
(
Map
)
info
;
System
.
out
.
println
(
infoMap
.
get
(
"Serial"
));
}
}
}
}
src/main/resources/config/application-dev.yml
查看文件 @
fe0b048
...
...
@@ -4,7 +4,7 @@ spring:
mongodb
:
host
:
localhost
# 主机地址
port
:
27017
# 端口
database
:
smf
# 数据库
database
:
hikvision
# 数据库
# 登录相关配置
login
:
...
...
src/main/resources/config/application.yml
查看文件 @
fe0b048
server
:
port
:
8800
hella
:
#host: 127.0.0.1
port
:
3333
hik
:
server
:
# 文件存储路径
file
:
...
...
@@ -22,7 +20,7 @@ spring:
mongodb
:
host
:
localhost
# 主机地址
port
:
27017
# 端口
database
:
smf
# 数据库
database
:
hikvision
# 数据库
messages
:
encoding
:
utf-8
main
:
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论