Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit f6f47470
由
sunke
编写于
2022-10-20 13:47:54 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
去除工单中的type字段
工单出库增加singleOut字段标识出库到料串还是紧急料口 代码加密
1 个父辈
1810b4f4
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
407 行增加
和
43 行删除
pom.xml
src/main/java/com/neotel/smfcore/common/utils/EncryptUtils.java
src/main/java/com/neotel/smfcore/common/utils/SecurityUtils.java
src/main/java/com/neotel/smfcore/common/utils/SysUtils.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/custom/neotel/NeotelController.java
pom.xml
查看文件 @
f6f4747
...
...
@@ -26,6 +26,7 @@
<fastjson.version>
1.2.70
</fastjson.version>
<swagger.version>
2.9.2
</swagger.version>
<log4j2.version>
2.17.0
</log4j2.version>
<classfinal.version>
1.2.1
</classfinal.version>
</properties>
<profiles>
<profile>
...
...
@@ -310,6 +311,46 @@
</execution>
</executions>
</plugin>
<plugin>
<!-- https://gitee.com/roseboy/classfinal -->
<groupId>
net.roseboy
</groupId>
<artifactId>
classfinal-maven-plugin
</artifactId>
<version>
${classfinal.version}
</version>
<configuration>
<!--加密密码,如果是#号,则使用无密码模式加密,【加密后没有pom文件,不用担心泄漏】
将加密后的war放在tomcat/webapps下, tomcat/bin/catalina 增加以下配置:
//linux下 catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -javaagent:classfinal-fatjar.jar='-pwd 0000000'";
export CATALINA_OPTS;
//win下catalina.bat
set JAVA_OPTS="-javaagent:classfinal-fatjar.jar=-pwd 000000"
set "JAVA_OPTS=%JAVA_OPTS% -javaagent:classfinal-fatjar.jar='-nopwd'"
//参数说明
// -pwd 加密项目的密码
// -nopwd 无密码加密时启动加上此参数,跳过输密码过程
// -pwdname 环境变量中密码的名字
-->
<password>
#
</password>
<!-- <code>F0CC84061C58DADF9AC3F20600C6EF6398CB5A55F9A086A9671136521C4B40CF5F7589F6D78A591D6456AA5055E1E9E9</code>-->
<packages>
com.neotel
</packages>
<cfgfiles>
application.yml
</cfgfiles>
<excludes>
org.spring
</excludes>
<!-- <libjars>a.jar,b.jar</libjars>-->
</configuration>
<executions>
<execution>
<phase>
package
</phase>
<goals>
<goal>
classFinal
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
...
src/main/java/com/neotel/smfcore/common/utils/EncryptUtils.java
查看文件 @
f6f4747
...
...
@@ -20,7 +20,13 @@ import javax.crypto.SecretKey;
import
javax.crypto.SecretKeyFactory
;
import
javax.crypto.spec.DESKeySpec
;
import
javax.crypto.spec.IvParameterSpec
;
import
java.nio.ByteBuffer
;
import
java.nio.CharBuffer
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharsets
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.Arrays
;
/**
* 加密
...
...
@@ -97,4 +103,98 @@ public class EncryptUtils {
}
return
b2
;
}
/**
* md5加密
*
* @param str 字符串
* @return md5字串
*/
public
static
byte
[]
md5byte
(
char
[]
str
)
{
byte
[]
b
=
null
;
try
{
MessageDigest
md
=
MessageDigest
.
getInstance
(
"MD5"
);
byte
[]
buffer
=
toBytes
(
str
);
md
.
update
(
buffer
);
b
=
md
.
digest
();
}
catch
(
NoSuchAlgorithmException
e
)
{
e
.
printStackTrace
();
}
return
b
;
}
/**
* 字符数组转成字节数组
*
* @param chars 字符数组
* @return 字节数组
*/
public
static
byte
[]
toBytes
(
char
[]
chars
)
{
char
[]
chars0
=
new
char
[
chars
.
length
];
System
.
arraycopy
(
chars
,
0
,
chars0
,
0
,
chars
.
length
);
CharBuffer
charBuffer
=
CharBuffer
.
wrap
(
chars0
);
ByteBuffer
byteBuffer
=
Charset
.
forName
(
"UTF-8"
).
encode
(
charBuffer
);
byte
[]
bytes
=
Arrays
.
copyOfRange
(
byteBuffer
.
array
(),
byteBuffer
.
position
(),
byteBuffer
.
limit
());
Arrays
.
fill
(
charBuffer
.
array
(),
'\u0000'
);
// clear sensitive data
Arrays
.
fill
(
byteBuffer
.
array
(),
(
byte
)
0
);
// clear sensitive data
return
bytes
;
}
/**
* md5
*
* @param str 字串
* @return 32位md5
*/
public
static
char
[]
md5
(
char
[]
str
)
{
return
md5
(
str
,
false
);
}
/**
* md5
*
* @param str 字串
* @param sh0rt 是否16位
* @return 32位/16位md5
*/
public
static
char
[]
md5
(
char
[]
str
,
boolean
sh0rt
)
{
byte
s
[]
=
md5byte
(
str
);
if
(
s
==
null
)
{
return
null
;
}
int
begin
=
0
;
int
end
=
s
.
length
;
if
(
sh0rt
)
{
begin
=
8
;
end
=
16
;
}
char
[]
result
=
new
char
[
0
];
for
(
int
i
=
begin
;
i
<
end
;
i
++)
{
result
=
merger
(
result
,
Integer
.
toHexString
((
0x000000FF
&
s
[
i
])
|
0xFFFFFF00
).
substring
(
6
).
toCharArray
());
}
return
result
;
}
/**
* 合并byte[]
*
* @param bts 字节数组
* @return 合并后的字节
*/
public
static
char
[]
merger
(
char
[]...
bts
)
{
int
lenght
=
0
;
for
(
char
[]
b
:
bts
)
{
lenght
+=
b
.
length
;
}
char
[]
bt
=
new
char
[
lenght
];
int
lastLength
=
0
;
for
(
char
[]
b
:
bts
)
{
System
.
arraycopy
(
b
,
0
,
bt
,
lastLength
,
b
.
length
);
lastLength
+=
b
.
length
;
}
return
bt
;
}
}
src/main/java/com/neotel/smfcore/common/utils/SecurityUtils.java
查看文件 @
f6f4747
...
...
@@ -55,12 +55,16 @@ public class SecurityUtils {
return
userDetailsService
.
loadUserByUsername
(
getCurrentUsername
());
}
public
static
String
getCurrentUsername
(){
return
getLoginUsername
();
}
/**
* 获取系统用户名称,如果未登陆抛出异常
*
* @return 系统用户名称
*/
public
static
String
get
Current
Username
()
{
public
static
String
getUsername
()
{
final
Authentication
authentication
=
SecurityContextHolder
.
getContext
().
getAuthentication
();
if
(
authentication
==
null
)
{
throw
new
ValidateException
(
HttpStatus
.
UNAUTHORIZED
,
"当前登录状态过期"
);
...
...
@@ -77,7 +81,7 @@ public class SecurityUtils {
*/
public
static
String
getLoginUsername
(){
try
{
return
get
Current
Username
();
return
getUsername
();
}
catch
(
Exception
e
){
return
""
;
}
...
...
src/main/java/com/neotel/smfcore/common/utils/SysUtils.java
0 → 100644
查看文件 @
f6f4747
package
com
.
neotel
.
smfcore
.
common
.
utils
;
import
com.alibaba.excel.util.IoUtils
;
import
java.io.Closeable
;
import
java.net.InetAddress
;
import
java.net.InterfaceAddress
;
import
java.net.NetworkInterface
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Scanner
;
/**
* @author sunke
* @date 2022/10/12 10:18 AM
*/
public
class
SysUtils
{
/**
* 运行命令
*
* @param cmd 命令
* @param line 返回第几行结果,0返回所有
* @return 结果
*/
public
static
String
runCmd
(
String
cmd
,
int
line
)
{
Process
process
;
Scanner
sc
=
null
;
StringBuffer
sb
=
new
StringBuffer
();
try
{
process
=
Runtime
.
getRuntime
().
exec
(
cmd
);
process
.
getOutputStream
().
close
();
sc
=
new
Scanner
(
process
.
getInputStream
());
int
i
=
0
;
while
(
sc
.
hasNextLine
())
{
i
++;
String
str
=
sc
.
nextLine
();
if
(
line
<=
0
)
{
sb
.
append
(
str
).
append
(
"\r\n"
);
}
else
if
(
i
==
line
)
{
return
str
.
trim
();
}
}
sc
.
close
();
}
catch
(
Exception
e
)
{
}
finally
{
close
(
sc
);
}
return
sb
.
toString
();
}
/**
* 关闭流
*
* @param outs Closeable
*/
public
static
void
close
(
Closeable
...
outs
)
{
if
(
outs
!=
null
)
{
for
(
Closeable
out
:
outs
)
{
if
(
out
!=
null
)
{
try
{
out
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
}
}
/**
* 运行cmd命令
*
* @param cmd 命令
* @param substr 关键字
* @return 包含关键字的行数
*/
public
static
String
runCmd
(
String
cmd
,
String
substr
)
{
Process
process
;
Scanner
sc
=
null
;
try
{
process
=
Runtime
.
getRuntime
().
exec
(
cmd
);
process
.
getOutputStream
().
close
();
sc
=
new
Scanner
(
process
.
getInputStream
());
while
(
sc
.
hasNextLine
())
{
String
str
=
sc
.
nextLine
();
if
(
str
!=
null
&&
str
.
contains
(
substr
))
{
return
str
.
trim
();
}
}
sc
.
close
();
}
catch
(
Exception
e
)
{
}
finally
{
close
(
sc
);
}
return
null
;
}
/**
* 获取mac地址
*
* @return mac 列表
*/
public
static
List
<
String
>
getMacList
()
{
ArrayList
<
String
>
list
=
new
ArrayList
<>();
StringBuilder
sb
=
new
StringBuilder
();
try
{
java
.
util
.
Enumeration
<
NetworkInterface
>
en
=
NetworkInterface
.
getNetworkInterfaces
();
while
(
en
.
hasMoreElements
())
{
NetworkInterface
iface
=
en
.
nextElement
();
List
<
InterfaceAddress
>
addrs
=
iface
.
getInterfaceAddresses
();
for
(
InterfaceAddress
addr
:
addrs
)
{
InetAddress
ip
=
addr
.
getAddress
();
if
(
ip
.
isLinkLocalAddress
())
{
//本地的不要
continue
;
}
NetworkInterface
network
=
NetworkInterface
.
getByInetAddress
(
ip
);
if
(
network
==
null
)
{
continue
;
}
byte
[]
mac
=
network
.
getHardwareAddress
();
if
(
mac
==
null
)
{
continue
;
}
sb
.
delete
(
0
,
sb
.
length
());
for
(
int
i
=
0
;
i
<
mac
.
length
;
i
++)
{
sb
.
append
(
String
.
format
(
"%02X%s"
,
mac
[
i
],
(
i
<
mac
.
length
-
1
)
?
"-"
:
""
));
}
if
(!
list
.
contains
(
sb
.
toString
()))
{
list
.
add
(
sb
.
toString
());
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
list
;
}
/**
* 获取cpu序列号
*
* @return 序列号
*/
public
static
String
getCPUSerialNumber
()
{
String
sysName
=
System
.
getProperty
(
"os.name"
);
if
(
sysName
.
contains
(
"Windows"
))
{
//win
String
str
=
runCmd
(
"wmic cpu get ProcessorId"
,
2
);
return
str
;
}
else
if
(
sysName
.
contains
(
"Linux"
))
{
String
str
=
runCmd
(
"dmidecode |grep -A16 \"Processor Information$\""
,
"ID"
);
if
(
str
!=
null
)
{
return
str
.
substring
(
str
.
indexOf
(
":"
)).
trim
();
}
}
else
if
(
sysName
.
contains
(
"Mac"
))
{
String
str
=
runCmd
(
"system_profiler SPHardwareDataType"
,
"Serial Number"
);
if
(
str
!=
null
)
{
return
str
.
substring
(
str
.
indexOf
(
":"
)
+
1
).
trim
();
}
}
return
""
;
}
/**
* 获取硬盘序列号
*
* @return 硬盘序列号
*/
public
static
String
getHardDiskSerialNumber
()
{
String
sysName
=
System
.
getProperty
(
"os.name"
);
if
(
sysName
.
contains
(
"Windows"
))
{
//win
String
str
=
runCmd
(
"wmic path win32_physicalmedia get serialnumber"
,
2
);
return
str
;
}
else
if
(
sysName
.
contains
(
"Linux"
))
{
String
str
=
runCmd
(
"dmidecode |grep -A16 \"System Information$\""
,
"Serial Number"
);
if
(
str
!=
null
)
{
return
str
.
substring
(
str
.
indexOf
(
":"
)).
trim
();
}
}
else
if
(
sysName
.
contains
(
"Mac"
))
{
String
str
=
runCmd
(
"system_profiler SPStorageDataType"
,
"Volume UUID"
);
if
(
str
!=
null
)
{
return
str
.
substring
(
str
.
indexOf
(
":"
)
+
1
).
trim
();
}
}
return
""
;
}
/**
* 生成机器码
*
* @return 机器码
*/
public
static
char
[]
makeMarchinCode
()
{
char
[]
c1
=
EncryptUtils
.
md5
(
getMacList
().
toString
().
toCharArray
());
char
[]
c2
=
EncryptUtils
.
md5
(
getCPUSerialNumber
().
toCharArray
());
char
[]
c3
=
EncryptUtils
.
md5
(
getHardDiskSerialNumber
().
toCharArray
());
char
[]
chars
=
EncryptUtils
.
merger
(
c1
,
c2
,
c3
);
for
(
int
i
=
0
;
i
<
chars
.
length
;
i
++)
{
chars
[
i
]
=
Character
.
toUpperCase
(
chars
[
i
]);
}
return
chars
;
}
public
static
void
main
(
String
[]
args
)
{
String
code
=
new
String
(
SysUtils
.
makeMarchinCode
());
System
.
out
.
println
(
code
);
}
}
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
查看文件 @
f6f4747
...
...
@@ -79,34 +79,38 @@ public class NLPShelfHandler extends BaseDeviceHandler {
// WebSocketServer.sendMsg("", new SocketMsg("{0}未找到库位:{1}"+code, MsgType.INFO,"smfclient.nlp.cannotFindPos",new String[]{"消息测试","库位号"}));
String
loginUser
=
SecurityUtils
.
getLoginUsername
();
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
();
ResultBean
resultBean
=
null
;
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
isPutInTask
()
&&
(
queueTask
.
isWait
()
||
queueTask
.
isExecuting
()))
{
if
(!
Strings
.
isNullOrEmpty
(
groupId
)
&&
queueTask
.
getGroupId
().
equals
(
groupId
))
{
log
.
info
(
"codeIn ["
+
code
+
"]["
+
groupId
+
"]入库失败:条码["
+
queueTask
.
getBarcode
()
+
"]的任务还未结束 "
);
throw
new
ValidateException
(
"smfcore.unfinished"
,
"the task of [{0}] is unfinished"
,
new
String
[]{
queueTask
.
getBarcode
()});
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.unfinished"
,
"the task of [{0}] is unfinished"
,
new
String
[]{
queueTask
.
getBarcode
()});
}
if
(!
Strings
.
isNullOrEmpty
(
storageId
)
&&
queueTask
.
getStorageId
().
equals
(
storageId
))
{
log
.
info
(
"codeIn ["
+
code
+
"]["
+
storageId
+
"]入库失败:
条码["
+
queueTask
.
getBarcode
()
+
"]的任务还未结束 "
);
throw
new
ValidateException
(
"smfcore.unfinished"
,
"the task of [{0}] is unfinished"
,
new
String
[]{
queueTask
.
getBarcod
e
()});
log
.
info
(
"codeIn ["
+
code
+
"]["
+
storageId
+
"]入库失败:
料架["
+
queueTask
.
getStorageId
()
+
"]的任务还未结束 "
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.unfinished"
,
"the task of [{0}] is unfinished"
,
new
String
[]{
queueTask
.
getStorageNam
e
()});
}
}
}
CodeValidateParam
params
=
new
CodeValidateParam
(
loginUser
,
groupId
,
storageId
,
code
,
token
);
Barcode
barcodeSave
=
smfApi
.
canPutInBeforeResolve
(
params
);
try
{
CodeValidateParam
params
=
new
CodeValidateParam
(
loginUser
,
groupId
,
storageId
,
code
,
token
);
Barcode
barcodeSave
=
smfApi
.
canPutInBeforeResolve
(
params
);
if
(
barcodeSave
==
null
)
{
barcodeSave
=
codeResolve
.
resolveOneValideBarcode
(
"=1x1="
+
code
);
}
if
(
barcodeSave
==
null
)
{
barcodeSave
=
codeResolve
.
resolveOneValideBarcode
(
"=1x1="
+
code
);
}
//从API验证
Barcode
verResult
=
smfApi
.
canPutInAfterResolve
(
barcodeSave
);
//从API验证
Barcode
verResult
=
smfApi
.
canPutInAfterResolve
(
barcodeSave
);
if
(
verResult
!=
null
)
{
barcodeSave
=
verResult
;
if
(
verResult
!=
null
)
{
barcodeSave
=
verResult
;
}
return
putIn
(
loginUser
,
groupId
,
storageId
,
barcodeSave
,
token
);
}
catch
(
ValidateException
ve
){
return
ResultBean
.
newErrorResult
(-
1
,
ve
.
getMsgKey
(),
ve
.
getDefaultMsg
(),
ve
.
getMsgParam
());
}
return
putIn
(
loginUser
,
groupId
,
storageId
,
barcodeSave
,
token
);
}
protected
ResultBean
putIn
(
String
loginUser
,
String
groupId
,
String
storageId
,
Barcode
barcode
,
String
token
)
{
...
...
@@ -309,11 +313,16 @@ public class NLPShelfHandler extends BaseDeviceHandler {
if
(
hasReelPosList
!=
null
)
{
Set
<
String
>
disabledPosNameSet
=
dataCache
.
getDisabledPosNameSet
();
List
<
String
>
usedPosList
=
dataCache
.
getUsedPosNameList
(
cid
);
List
<
String
>
newList
=
new
ArrayList
<>();
for
(
String
posName
:
hasReelPosList
)
{
if
(
disabledPosNameSet
.
contains
(
posName
)){
log
.
info
(
cid
+
"sensorChange hasReelPosList ["
+
posName
+
"]库位被禁用,忽略"
);
continue
;
}
else
if
(
usedPosList
.
contains
(
posName
)){
log
.
info
(
cid
+
"sensorChange hasReelPosList ["
+
posName
+
"]库位已有物料,加入到ok列表"
);
inOkList
.
add
(
posName
);
continue
;
}
newList
.
add
(
posName
);
}
...
...
@@ -505,6 +514,7 @@ public class NLPShelfHandler extends BaseDeviceHandler {
}
String
hasReelPosColor
=
"orange"
;
//hasReelPosColor = ORDER_COLOR.DARKGREEN.name().toLowerCase();
// if(lightPosCidList.contains(cid)){
// hasReelPosColor = ORDER_COLOR.LIGHTBLUE.name();
// }
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
f6f4747
...
...
@@ -326,10 +326,18 @@ public class LiteOrderCache {
ORDER_COLOR
nextColor
=
ORDER_COLOR
.
nextColor
(
currentColors
);
return
nextColor
;
}
/**
* 执行工单出库,批量料仓默认出库到料串上
*/
public
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
){
boolean
singleOut
=
false
;
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
);
}
/**
*
锁定物料
*
执行工单出库
*/
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
)
{
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
,
boolean
singleOut
)
{
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
)
{
...
...
@@ -426,6 +434,7 @@ public class LiteOrderCache {
task
.
setType
(
OP
.
CHECKOUT
);
task
.
setLightColor
(
nextColor
.
getRgb
());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
task
.
setSingleOut
(
singleOut
);
// task = dataLogDao.save(task);
taskService
.
addTaskToExecute
(
task
);
}
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
f6f4747
...
...
@@ -517,13 +517,10 @@ public class OrderController {
if
(
checkNum
&&
item
.
getTotalOutNum
()
>=
item
.
getNeedNum
())
{
continue
;
}
//pn
if
(
liteOrder
.
getType
()
==
1
)
{
if
(
item
.
getPn
().
equals
(
barcode
.
getPartNumber
()))
{
findItem
=
item
;
break
;
}
}
else
if
(
item
.
getRi
().
equals
(
barcode
.
getBarcode
()))
{
if
(
item
.
getRi
()
!=
null
&&
item
.
getRi
().
equals
(
barcode
.
getBarcode
())){
findItem
=
item
;
break
;
}
else
if
(
item
.
getPn
()
!=
null
&&
item
.
getPn
().
equals
(
barcode
.
getPartNumber
())){
findItem
=
item
;
break
;
}
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
f6f4747
...
...
@@ -23,14 +23,6 @@ public class LiteOrder extends BasePo implements Serializable {
public
LiteOrder
(
String
orderNo
,
List
<
LiteOrderItem
>
orderItems
)
{
this
.
orderItems
=
orderItems
;
this
.
orderNo
=
orderNo
;
this
.
type
=
2
;
for
(
LiteOrderItem
item
:
orderItems
)
{
if
(!
StringUtils
.
isEmpty
(
item
.
getPn
())
&&
(
StringUtils
.
isEmpty
(
item
.
getRi
())))
{
this
.
type
=
1
;
break
;
}
}
this
.
status
=
LITEORDER_STATUS
.
NEW
;
}
...
...
@@ -41,7 +33,7 @@ public class LiteOrder extends BasePo implements Serializable {
/**
* 工单号
*/
private
String
so
;
private
String
so
=
""
;
/**
* 当前任务盘数
*/
...
...
@@ -92,11 +84,6 @@ public class LiteOrder extends BasePo implements Serializable {
private
float
orderTimes
=
1
f
;
/**
* 工单类型,默认1=PN,2=RI
*/
private
int
type
=
1
;
/**
* 订单的详细信息
*/
@Transient
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
查看文件 @
f6f4747
...
...
@@ -13,12 +13,12 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
/**
* 物料编号
*/
private
String
pn
;
private
String
pn
=
""
;
/**
* 唯一码
*/
private
String
ri
;
private
String
ri
=
""
;
/**
...
...
src/main/java/com/neotel/smfcore/custom/neotel/NeotelController.java
查看文件 @
f6f4747
...
...
@@ -91,17 +91,20 @@ public class NeotelController {
orderItemList
.
add
(
orderItem
);
}
}
boolean
singleOut
=
false
;
if
(
paramMap
.
get
(
"singleOut"
)
!=
null
)
{
singleOut
=
Boolean
.
valueOf
(
paramMap
.
get
(
"singleOut"
).
toString
());
}
//开始保存数据
LiteOrder
liteOrder
=
new
LiteOrder
();
liteOrder
.
setOrderNo
(
orderNo
);
liteOrder
.
setLine
(
line
);
liteOrder
.
setSo
(
so
);
liteOrder
.
setType
(
2
);
liteOrder
.
setOrderItems
(
orderItemList
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
if
(
execute
){
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
);
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
,
singleOut
);
}
}
return
ResultBean
.
newOkResult
(
""
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论