Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 17974676
由
LN
编写于
2022-05-26 16:37:01 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
西门子入库增加 checkIn 接口
1 个父辈
169373a4
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
148 行增加
和
21 行删除
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/siemens/SiemensApi.java
src/main/java/com/neotel/smfcore/siemens/SiemensConfig.java
src/main/java/com/neotel/smfcore/siemens/bean/LotCheckInfo.java
src/main/resources/config/application.yml
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
查看文件 @
1797467
...
@@ -295,7 +295,7 @@ public class CodeResolve {
...
@@ -295,7 +295,7 @@ public class CodeResolve {
return
null
;
return
null
;
}
}
p
rivate
Collection
<
CodeBean
>
resolveCodeStr
(
String
codeStr
,
int
type
){
p
ublic
Collection
<
CodeBean
>
resolveCodeStr
(
String
codeStr
,
int
type
){
List
<
CodeBean
>
codeBeans
=
Lists
.
newArrayList
();
List
<
CodeBean
>
codeBeans
=
Lists
.
newArrayList
();
//Map<String, CodeBean> codeBeanMap = Maps.newHashMap();
//Map<String, CodeBean> codeBeanMap = Maps.newHashMap();
if
(!
Strings
.
isNullOrEmpty
(
codeStr
)){
if
(!
Strings
.
isNullOrEmpty
(
codeStr
)){
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
1797467
...
@@ -3,18 +3,15 @@ package com.neotel.smfcore.core.device.handler.impl;
...
@@ -3,18 +3,15 @@ package com.neotel.smfcore.core.device.handler.impl;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.base.Strings
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE
;
import
com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE
;
import
com.neotel.smfcore.core.barcode.enums.SOLDER_STATUS
;
import
com.neotel.smfcore.core.barcode.enums.SOLDER_STATUS
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.device.api.IOpAuthApi
;
import
com.neotel.smfcore.core.device.api.IOpAuthApi
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
...
@@ -25,7 +22,6 @@ import com.neotel.smfcore.core.device.handler.IDeviceHandler;
...
@@ -25,7 +22,6 @@ import com.neotel.smfcore.core.device.handler.IDeviceHandler;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
...
@@ -35,7 +31,6 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
...
@@ -35,7 +31,6 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.service.dao.IAlarmInfoDao
;
import
com.neotel.smfcore.core.system.service.dao.IAlarmInfoDao
;
import
com.neotel.smfcore.core.system.service.dao.IDataLogDao
;
import
com.neotel.smfcore.core.system.service.manager.IHumitureManager
;
import
com.neotel.smfcore.core.system.service.manager.IHumitureManager
;
import
com.neotel.smfcore.core.system.service.po.AlarmInfo
;
import
com.neotel.smfcore.core.system.service.po.AlarmInfo
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
...
@@ -44,10 +39,9 @@ import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
...
@@ -44,10 +39,9 @@ import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.siemens.SiemensApi
;
import
com.neotel.smfcore.siemens.SiemensApi
;
import
lombok.Data
;
import
com.neotel.smfcore.siemens.bean.LotCheckInfo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.web.csrf.CsrfTokenRepository
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
...
@@ -93,6 +87,9 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -93,6 +87,9 @@ public class BaseDeviceHandler implements IDeviceHandler {
@Autowired
@Autowired
protected
LiteOrderCache
liteOrderCache
;
protected
LiteOrderCache
liteOrderCache
;
@Autowired
protected
IComponentManager
componentManager
;
/**
/**
* CID的服务器消息(key 为 cid)
* CID的服务器消息(key 为 cid)
*/
*/
...
@@ -231,6 +228,66 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -231,6 +228,66 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
}
}
}
protected
Barcode
siemensCheckCode
(
String
codeStr
,
int
type
)
{
try
{
Collection
<
CodeBean
>
codeBeans
=
codeResolve
.
resolveCodeStr
(
codeStr
,
type
);
// Collection<CodeBean> codeBeans = codeResolve.resolveCodeStr("=1+0x0-7x8=5YM05960654", COMPONENT_TYPE.COMPONENT);
boolean
ok
=
false
;
for
(
CodeBean
codebean
:
codeBeans
)
{
if
(
codebean
.
hasReelSizeInfo
())
{
LotCheckInfo
info
=
SiemensApi
.
lotCheckIn
(
codebean
.
getCodeStr
());
if
(
info
!=
null
&&
info
.
isStatus
()
&&
ObjectUtil
.
isNotEmpty
(
info
.
getPartnum
())
&&
ObjectUtil
.
isNotEmpty
(
info
.
getQuantity
()))
{
//查找元器件是否存在
Component
component
=
componentManager
.
findOneByPN
(
info
.
getPartnum
());
if
(
component
==
null
)
{
//新建元器件和条码
component
=
new
Component
();
component
.
setPartNumber
(
info
.
getPartnum
());
component
.
setAmount
(
info
.
getQuantity
());
component
.
setHeight
(
codebean
.
getReelHeight
());
component
.
setPlateSize
(
codebean
.
getReelWidth
());
component
=
componentManager
.
saveComponent
(
component
);
log
.
info
(
"siemensCheckCode 新增 元器件:["
+
component
.
getPartNumber
()
+
"]["
+
component
.
getAmount
()
+
"]["
+
component
.
getPlateSize
()
+
"]X["
+
component
.
getHeight
()
+
"]"
);
}
else
if
(
component
.
getAmount
()
!=
info
.
getQuantity
())
{
component
.
setAmount
(
info
.
getQuantity
());
component
=
componentManager
.
saveComponent
(
component
);
log
.
info
(
"siemensCheckCode 修改 元器件:["
+
component
.
getPartNumber
()
+
"]数量为["
+
component
.
getAmount
()
+
"] "
);
}
//判断条码是否存在
Barcode
barcode
=
barcodeManager
.
get
(
codebean
.
getCodeStr
());
if
(
barcode
==
null
)
{
barcode
=
new
Barcode
();
barcode
.
setPlateSize
(
component
.
getPlateSize
());
barcode
.
setHeight
(
component
.
getHeight
());
barcode
.
setBarcode
(
codebean
.
getCodeStr
());
barcode
.
setAmount
(
component
.
getAmount
());
barcode
.
setFullCode
(
codebean
.
getCodeStr
());
barcode
.
setPartNumber
(
component
.
getPartNumber
());
barcode
=
barcodeManager
.
saveBarcode
(
barcode
);
log
.
info
(
"siemensCheckCode 新增 条码:["
+
barcode
.
getBarcode
()
+
"] "
);
}
else
if
(!
barcode
.
getPartNumber
().
equals
(
component
.
getPartNumber
())){
barcode
.
setPlateSize
(
component
.
getPlateSize
());
barcode
.
setHeight
(
component
.
getHeight
());
barcode
.
setBarcode
(
codebean
.
getCodeStr
());
barcode
.
setAmount
(
component
.
getAmount
());
barcode
.
setPartNumber
(
component
.
getPartNumber
());
log
.
info
(
"siemensCheckCode 修改 条码:["
+
barcode
.
getBarcode
()
+
"] pn为 ["
+
barcode
.
getPartNumber
()+
"] "
);
}
return
barcode
;
}
}
}
}
catch
(
Exception
ex
)
{
log
.
info
(
"siemensCheckCode 验证条码 ["
+
codeStr
+
"] 出错:"
,
ex
);
}
return
null
;
}
/**
/**
* 流水线入库:优先查找空闲BOX中同尺寸的,如果找不到,再查找可入库 BOX(可用且不是出库状态) 同尺寸或比盘尺寸大的仓位
* 流水线入库:优先查找空闲BOX中同尺寸的,如果找不到,再查找可入库 BOX(可用且不是出库状态) 同尺寸或比盘尺寸大的仓位
*/
*/
...
@@ -241,7 +298,16 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -241,7 +298,16 @@ public class BaseDeviceHandler implements IDeviceHandler {
type
=
COMPONENT_TYPE
.
FIXTURE
;
type
=
COMPONENT_TYPE
.
FIXTURE
;
}
}
String
codeStr
=
statusBean
.
getCode
();
String
codeStr
=
statusBean
.
getCode
();
Barcode
barcodeSave
=
codeResolve
.
resolveOneValideBarcode
(
codeStr
,
type
);
Barcode
barcodeSave
=
null
;
try
{
barcodeSave
=
codeResolve
.
resolveOneValideBarcode
(
codeStr
,
type
);
}
catch
(
ValidateException
validateException
)
{
barcodeSave
=
siemensCheckCode
(
codeStr
,
type
);
if
(
barcodeSave
==
null
)
{
throw
validateException
;
}
}
// Barcode barcodeSave = codeResolve.resolveOneValideBarcode(codeStr,type);
//本地难条码是否可以入库
//本地难条码是否可以入库
verifyBarcodePutIn
(
Lists
.<
Storage
>
newArrayList
(
storage
),
barcodeSave
);
verifyBarcodePutIn
(
Lists
.<
Storage
>
newArrayList
(
storage
),
barcodeSave
);
//从API验证
//从API验证
...
...
src/main/java/com/neotel/smfcore/siemens/SiemensApi.java
查看文件 @
1797467
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/siemens/SiemensConfig.java
查看文件 @
1797467
...
@@ -19,13 +19,15 @@ public class SiemensConfig {
...
@@ -19,13 +19,15 @@ public class SiemensConfig {
@Value
(
"${siemens.url:}"
)
@Value
(
"${siemens.url:}"
)
public
String
url
=
""
;
public
String
url
=
""
;
@Value
(
"${siemens.url_checkIn:}"
)
public
String
url_checkIn
=
""
;
@Value
(
"${siemens.action.GetMaterialLot:}"
)
//
@Value("${siemens.action.GetMaterialLot:}")
public
String
action_GetMaterialLot
=
""
;
//
public String action_GetMaterialLot = "";
//
//
@Value
(
"${siemens.action.ProcessMaterialLot:}"
)
//
@Value("${siemens.action.ProcessMaterialLot:}")
public
String
action_ProcessMaterialLot
=
""
;
//
public String action_ProcessMaterialLot = "";
public
int
GetPort
(){
public
int
GetPort
(){
try
{
try
{
...
@@ -48,6 +50,6 @@ public class SiemensConfig {
...
@@ -48,6 +50,6 @@ public class SiemensConfig {
// action_ProcessMaterialLot = dataCache.GetConfigCache("siemens.action.ProcessMaterialLot", "siemens.action.ProcessMaterialLot", action_ProcessMaterialLot);
// action_ProcessMaterialLot = dataCache.GetConfigCache("siemens.action.ProcessMaterialLot", "siemens.action.ProcessMaterialLot", action_ProcessMaterialLot);
log
.
info
(
"siemens服务器rul:"
+
url
+
",
GetMaterialLot="
+
action_GetMaterialLot
+
",ProcessMaterialLot="
+
action_ProcessMaterialLot
);
log
.
info
(
"siemens服务器rul:"
+
url
+
",
url_checkIn="
+
url_checkIn
);
}
}
}
}
src/main/java/com/neotel/smfcore/siemens/bean/LotCheckInfo.java
0 → 100644
查看文件 @
1797467
package
com
.
neotel
.
smfcore
.
siemens
.
bean
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
java.io.Serializable
;
import
java.util.Map
;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Slf4j
public
class
LotCheckInfo
implements
Serializable
{
// {"Status":true,"Message":"OK","Code":0,"partnum":"A5E00119983","quantity":10000}
private
boolean
Status
=
false
;
private
String
Message
;
private
String
Code
;
private
String
lotId
;
private
String
partnum
;
private
Integer
quantity
;
public
static
LotCheckInfo
toObj
(
String
lotId
,
String
result
)
{
try
{
Map
<
String
,
Object
>
map
=
JsonUtil
.
toMap
(
result
);
if
(
map
.
containsKey
(
"Status"
))
{
boolean
s
=
Boolean
.
parseBoolean
(
map
.
get
(
"Status"
).
toString
());
LotCheckInfo
lotCheckInfo
=
new
LotCheckInfo
();
lotCheckInfo
.
setStatus
(
s
);
lotCheckInfo
.
setLotId
(
lotId
);
if
(
map
.
containsKey
(
"Message"
))
{
lotCheckInfo
.
setMessage
(
map
.
get
(
"Message"
).
toString
());
}
if
(
map
.
containsKey
(
"Code"
))
{
lotCheckInfo
.
setCode
(
map
.
get
(
"Code"
).
toString
());
}
if
(
map
.
containsKey
(
"partnum"
))
{
lotCheckInfo
.
setPartnum
(
map
.
get
(
"partnum"
).
toString
());
}
if
(
map
.
containsKey
(
"quantity"
))
{
lotCheckInfo
.
setQuantity
(
Integer
.
parseInt
(
map
.
get
(
"quantity"
).
toString
()));
}
return
lotCheckInfo
;
}
}
catch
(
Exception
ex
)
{
log
.
error
(
"LotCheckInfo ["
+
result
+
"] toObj 出错:"
,
ex
);
}
return
null
;
}
}
src/main/resources/config/application.yml
查看文件 @
1797467
...
@@ -6,9 +6,13 @@ hella:
...
@@ -6,9 +6,13 @@ hella:
port
:
3333
port
:
3333
siemens
:
siemens
:
host
:
"
127.0.0.1"
#host: "140.231.193.101"
port
:
3333
port
:
# url: "http://cnctu041p059.cn104.local/Production/WebServices/MaterialLot.svc"
#url: "http://cnctu04053:8014/api/JsonC"
#url_checkIn: "http://cnctu04053:8014/api/JsonC"
#url: "http://cnctu041p059:8014/api/JsonC"
#url: "http://cnctu04053:8014/api/JsonC"
action
:
action
:
GetMaterialLot
:
"
http://siplace.com/facts/materiallot/2010/01/MaterialLot/GetMaterialLot"
GetMaterialLot
:
"
http://siplace.com/facts/materiallot/2010/01/MaterialLot/GetMaterialLot"
ProcessMaterialLot
:
"
http://siplace.com/facts/materiallot/2010/01/MaterialLot/ProcessMaterialLot"
ProcessMaterialLot
:
"
http://siplace.com/facts/materiallot/2010/01/MaterialLot/ProcessMaterialLot"
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论