Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 00b067af
由
LN
编写于
2022-04-13 16:35:43 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
工单虚拟回仓功能
1 个父辈
d09ac086
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
247 行增加
和
133 行删除
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/system/util/TaskService.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
00b067a
...
...
@@ -91,6 +91,18 @@ public class LiteOrderCache implements ITaskListener {
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
}
// public LiteOrder getOrder(String orderNo){
// LiteOrder order = liteOrderMap.get(orderNo);
//
// if (order == null) {
// order = liteOrderManager.findByOrderNo(orderNo);
// if(order!=null){
// addOrderToMap(order);
// }
// }
// return order;
// }
private
boolean
isProcessTimer
=
false
;
public
void
runTimer
(){
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
00b067a
...
...
@@ -7,6 +7,12 @@ import com.neotel.smfcore.common.bean.PageData;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.*
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeDto
;
import
com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.order.rest.bean.dto.OrderDto
;
...
...
@@ -18,26 +24,17 @@ import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.order.util.OrderFileWatch
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.rest.bean.dto.TaskDto
;
import
com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.bean.FileProperties
;
import
com.neotel.smfcore.security.rest.bean.vo.UserPassVo
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.manager.IRoleManager
;
import
com.neotel.smfcore.security.service.manager.IUserManager
;
import
com.neotel.smfcore.security.service.po.Group
;
import
com.neotel.smfcore.security.service.po.Role
;
import
com.neotel.smfcore.security.service.po.User
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
javafx.concurrent.Task
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Criteria
;
...
...
@@ -92,6 +89,18 @@ public class OrderController {
@Autowired
private
OrderFileWatch
orderFileWatch
;
@Autowired
private
BarcodeMapper
barcodeMapper
;
@Autowired
private
CodeResolve
codeResolve
;
@Autowired
IBarcodeManager
barcodeManager
;
@Autowired
TaskService
taskService
;
// @ApiOperation("导出用户数据")
// @GetMapping(value = "/download")
// @PreAuthorize("@el.check('user:list')")
...
...
@@ -106,20 +115,20 @@ public class OrderController {
String
image
=
"csv"
;
String
fileType
=
FileUtil
.
getExtensionName
(
orderFile
.
getOriginalFilename
());
String
fileName
=
FileUtil
.
getFileNameNoEx
(
orderFile
.
getOriginalFilename
());
String
fileName
=
FileUtil
.
getFileNameNoEx
(
orderFile
.
getOriginalFilename
());
if
(
fileType
!=
null
&&
!
image
.
contains
(
fileType
))
{
throw
new
ValidateException
(
"smfcore.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
}
File
folder
=
new
File
(
properties
.
getPath
(),
"pos"
);
File
localFile
=
FileUtil
.
upload
(
orderFile
,
folder
.
getAbsolutePath
());
Map
<
String
,
List
<
LiteOrderItem
>>
itemMap
=
orderFileWatch
.
readCsvFile
(
fileName
,
localFile
.
getAbsolutePath
());
Map
<
String
,
List
<
LiteOrderItem
>>
itemMap
=
orderFileWatch
.
readCsvFile
(
fileName
,
localFile
.
getAbsolutePath
());
if
(
itemMap
==
null
||
itemMap
.
size
()
<=
0
)
{
throw
new
ValidateException
(
"smfcore.fileError"
,
"文件解析失败"
);
}
for
(
String
so
:
itemMap
.
keySet
()
)
{
for
(
String
so
:
itemMap
.
keySet
()
)
{
List
<
LiteOrderItem
>
liteOrderItems
=
itemMap
.
get
(
so
);
if
(
liteOrderItems
.
size
()
<=
0
)
{
...
...
@@ -146,7 +155,7 @@ public class OrderController {
liteOrderCache
.
addOrderToMap
(
liteOrder
);
}
return
ResultBean
.
newOkResult
(
"smfcore.order.uploadOK"
,
"工单上传成功"
,
""
);
return
ResultBean
.
newOkResult
(
"smfcore.order.uploadOK"
,
"工单上传成功"
,
""
);
}
@ApiOperation
(
"工单出库"
)
...
...
@@ -161,11 +170,11 @@ public class OrderController {
if
(
liteOrder
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"orderNo"
,
orderNo
});
}
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
return
ResultBean
.
newOkResult
(
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
}
...
...
@@ -178,11 +187,11 @@ public class OrderController {
if
(
orderNo
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
orderNo
,
true
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
orderNo
,
true
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
return
ResultBean
.
newOkResult
(
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
}
...
...
@@ -196,11 +205,11 @@ public class OrderController {
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
orderNo
,
false
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
orderNo
,
false
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
return
ResultBean
.
newOkResult
(
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
}
...
...
@@ -213,11 +222,11 @@ public class OrderController {
if
(
orderNo
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
orderItemSupplementOut
(
orderNo
,
orderItemId
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
String
result
=
liteOrderCache
.
orderItemSupplementOut
(
orderNo
,
orderItemId
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
return
ResultBean
.
newOkResult
(
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
}
...
...
@@ -231,10 +240,10 @@ public class OrderController {
if
(!
user
.
getIsAdmin
())
{
Set
<
String
>
groupIds
=
user
.
getGroups
();
List
<
String
>
excludeSources
=
Lists
.
newArrayList
();
List
<
Group
>
groups
=
groupManager
.
findAll
();
List
<
Group
>
groups
=
groupManager
.
findAll
();
for
(
Group
group
:
groups
)
{
if
(
groupIds
.
contains
(
group
.
getId
()))
{
if
(
groupIds
.
contains
(
group
.
getId
()))
{
continue
;
}
excludeSources
.
add
(
group
.
getGroupName
());
...
...
@@ -256,7 +265,7 @@ public class OrderController {
}
}
PageData
<
LiteOrder
>
orderList
=
liteOrderManager
.
findByPage
(
query
,
pageable
);
PageData
<
OrderDto
>
resultList
=
orderMapper
.
toDto
(
orderList
);
PageData
<
OrderDto
>
resultList
=
orderMapper
.
toDto
(
orderList
);
return
resultList
;
}
...
...
@@ -272,14 +281,14 @@ public class OrderController {
if
(!
ObjectUtils
.
isEmpty
(
id
))
{
LiteOrder
liteOrder
=
liteOrderManager
.
get
(
id
);
if
(
liteOrder
!=
null
)
{
OrderDto
dto
=
orderMapper
.
toDto
(
liteOrder
);
OrderDto
dto
=
orderMapper
.
toDto
(
liteOrder
);
dto
.
setOrderItems
(
orderItemMapper
.
toDto
(
liteOrder
.
getOrderItems
()));
return
dto
;
}
}
else
if
(!
ObjectUtils
.
isEmpty
(
orderNo
))
{
LiteOrder
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
liteOrder
!=
null
)
{
OrderDto
dto
=
orderMapper
.
toDto
(
liteOrder
);
OrderDto
dto
=
orderMapper
.
toDto
(
liteOrder
);
dto
.
setOrderItems
(
orderItemMapper
.
toDto
(
liteOrder
.
getOrderItems
()));
return
dto
;
}
...
...
@@ -294,7 +303,7 @@ public class OrderController {
@PreAuthorize
(
"@el.check('workOrder')"
)
public
ResultBean
updateNum
(
@RequestBody
OrderDto
param
)
{
String
orderNo
=
param
.
getOrderNo
();
float
orderTimes
=
param
.
getOrderTimes
();
float
orderTimes
=
param
.
getOrderTimes
();
if
(
orderNo
==
null
)
{
// throw new ValidateException("工单号不能为空");
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
...
...
@@ -303,16 +312,16 @@ public class OrderController {
if
(
liteOrder
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"orderNo"
,
orderNo
});
}
if
(!
liteOrder
.
isNew
())
{
throw
new
ValidateException
(
"smfcore.cannotUpdateOrderNum"
,
"工单已出库,不能修改数量"
);
if
(!
liteOrder
.
isNew
())
{
throw
new
ValidateException
(
"smfcore.cannotUpdateOrderNum"
,
"工单已出库,不能修改数量"
);
}
if
(
orderTimes
<
1
)
{
orderTimes
=
1
;
if
(
orderTimes
<
1
)
{
orderTimes
=
1
;
}
liteOrder
.
setOrderTimes
(
orderTimes
);
liteOrderManager
.
save
(
liteOrder
);
liteOrderManager
.
save
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
return
ResultBean
.
newOkResult
(
orderMapper
.
toDto
(
liteOrder
)
);
return
ResultBean
.
newOkResult
(
orderMapper
.
toDto
(
liteOrder
));
}
@ApiOperation
(
"关闭工单"
)
...
...
@@ -324,11 +333,11 @@ public class OrderController {
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
closeOrder
(
orderNo
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
return
ResultBean
.
newOkResult
(
result
,
result
,
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
String
result
=
liteOrderCache
.
closeOrder
(
orderNo
);
if
(
ObjectUtil
.
isEmpty
(
result
))
{
return
ResultBean
.
newOkResult
(
result
,
result
,
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
}
...
...
@@ -358,83 +367,117 @@ public class OrderController {
return
ResultBean
.
newOkResult
(
orderMapper
.
toDto
(
order
));
}
@ApiOperation
(
"虚拟回仓解析条码信息"
)
@PostMapping
(
value
=
"/barcodeInfo"
)
@PreAuthorize
(
"@el.check('materialBox')"
)
public
BarcodeDto
barcodeInfo
(
@RequestBody
String
code
)
{
CodeBean
codeBean
=
new
CodeBean
();
try
{
codeBean
=
codeResolve
.
resolveSingleCode
(
code
.
trim
());
}
catch
(
ValidateException
e
)
{
codeBean
.
setError
(
e
.
getMessage
());
}
if
(
codeBean
==
null
||
codeBean
.
getBarcode
()
==
null
)
{
throw
new
ValidateException
(
"smfcore.error.barcode.invalid"
,
"{0}不是有效的条码"
,
new
String
[]{
code
});
}
if
(
codeBean
.
getErrorCode
()
!=
null
)
{
throw
new
ValidateException
(
codeBean
.
getErrorCode
(),
codeBean
.
getError
(),
codeBean
.
getParams
());
}
Barcode
barcode
=
codeBean
.
getBarcode
();
BarcodeDto
barcodeDto
=
barcodeMapper
.
toDto
(
barcode
);
if
(
barcodeDto
.
getSubCodeList
()
==
null
)
{
barcodeDto
.
setSubCodeList
(
new
ArrayList
<>());
}
return
barcodeDto
;
}
@ApiOperation
(
"虚拟回仓发料接口"
)
@PostMapping
(
value
=
"/virtualOut"
)
@PreAuthorize
(
"@el.check('materialBox')"
)
public
ResultBean
virtualOut
(
@RequestBody
Map
<
String
,
String
>
paramsMap
)
{
String
orderNo
=
paramsMap
.
get
(
"orderNo"
);
String
reelId
=
paramsMap
.
get
(
"barcode"
);
Integer
num
=
Integer
.
valueOf
(
paramsMap
.
get
(
"num"
));
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
reelId
);
if
(
barcode
==
null
)
{
throw
new
ValidateException
(
"smfcore.error.barcode.invalid"
,
"{0}不是有效的条码"
,
new
String
[]{
reelId
});
}
//判断数量是否大于条码数量
if
(
num
>
barcode
.
getAmount
())
{
throw
new
ValidateException
(
"smfcore.error.virtualOut.num"
,
"数量不能超过{0}"
,
new
String
[]{
barcode
.
getAmount
()
+
""
});
}
LiteOrder
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
liteOrder
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"orderNo"
,
orderNo
});
}
if
(
liteOrder
.
isClosed
())
{
throw
new
ValidateException
(
"smfcore.order.hasClose"
,
"工单["
+
orderNo
+
"]已关闭,无法出库"
,
new
String
[]{
"orderNo"
,
orderNo
});
}
LiteOrderItem
findItem
=
findVirtualItem
(
liteOrder
,
barcode
,
true
);
if
(
findItem
==
null
)
{
findItem
=
findVirtualItem
(
liteOrder
,
barcode
,
false
);
}
if
(
findItem
==
null
)
{
throw
new
ValidateException
(
"smfcore.error.virtualOut.noItem"
,
"工单{0}中未找到对应的PN或物料编号"
,
new
String
[]{
liteOrder
.
getOrderNo
()
+
""
});
}
else
{
//增加一条出库完成记录
taskService
.
addVirtualOutToFinished
(
liteOrder
,
barcode
,
num
,
SecurityUtils
.
getCurrentUsername
());
findItem
.
setOutNum
(
findItem
.
getOutNum
()
+
num
);
findItem
.
setTotalOutNum
(
findItem
.
getTotalOutNum
()
+
num
);
findItem
.
setOutReelCount
(
findItem
.
getOutReelCount
()
+
1
);
findItem
.
setTotalOutReelCount
(
findItem
.
getTotalOutReelCount
()
+
1
);
findItem
.
setNeedReelCount
(
findItem
.
getNeedReelCount
()
+
1
);
liteOrderItemManager
.
save
(
findItem
);
liteOrder
.
updateOrderItems
(
findItem
);
//工单未关闭的话,检查状态,全部都出完进行关闭
boolean
closed
=
true
;
for
(
LiteOrderItem
liteOrderItem
:
liteOrder
.
getOrderItems
())
{
if
(!
liteOrderItem
.
isOutFinished
())
{
closed
=
false
;
break
;
}
}
if
(
closed
)
{
liteOrder
.
setClosed
(
closed
);
log
.
info
(
"工单【"
+
liteOrder
.
getOrderNo
()
+
"】虚拟回仓【"
+
barcode
.
getPartNumber
()
+
"-"
+
barcode
.
getBarcode
()
+
"】数量【"
+
num
+
"】后,所有料已出完,关闭工单"
);
}
liteOrderManager
.
save
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
}
return
ResultBean
.
newOkResult
(
""
);
}
private
LiteOrderItem
findVirtualItem
(
LiteOrder
liteOrder
,
Barcode
barcode
,
boolean
checkNum
)
{
LiteOrderItem
findItem
=
null
;
for
(
LiteOrderItem
item
:
liteOrder
.
getOrderItems
())
{
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
()))
{
findItem
=
item
;
break
;
}
}
return
findItem
;
}
// protected Map<String ,List<LiteOrderItem>> handleOrderCsv(String fileName,String fileURL) {
// try {
// fileName=fileName.replace(".csv","");
// log.info("开始更解析上传的工单");
// Map<String ,List<LiteOrderItem>> itemMap=new HashMap<>();
// List<LiteOrderItem> items = Lists.newArrayList();
//
// OrderSetting orderSetting = dataCache.getOrderSetting();
//
// CsvReader csvRead = CsvReader.newReader(fileURL,"PN", orderSetting.getPn());
// int partNumberIndex = csvRead.getIndex("PN", orderSetting.getPn());
// int qtyIndex = csvRead.getIndex("QTY", orderSetting.getQty());
// int feederIndex = csvRead.getIndex("FEEDER", orderSetting.getFeeder());
// int riIndex = csvRead.getIndex("RI",orderSetting.getRi());
// int soIndex = csvRead.getIndex("SO", orderSetting.getSo());
//
// int row = 1;
// int newRowCount = 0;
// int updateRowCount = 0;
//
// while (csvRead.readRecord()) {
// row++;
// String[] lineValues = csvRead.getValues();
// String partNumber = lineValues[partNumberIndex];
// String ri="";
// if(riIndex!=-1){
// ri=lineValues[riIndex];
// }
// if (partNumber.isEmpty()&&ri.isEmpty()) {
// log.warn("行[partNumber=" + partNumber + "]中PN和RI都 为空,此行忽略");
// } else {
// int num = 1;
// if (qtyIndex != -1) {
// String numStr = lineValues[qtyIndex];
// if (Strings.isNotBlank(numStr)) {
// try {
// num = Integer.valueOf(numStr);
// } catch (Exception e) {
// log.error(partNumber + "的数量:" + numStr + " 不是数字,使用1");
// }
// }
// }
// String feeder = "";
// if (feederIndex != -1) {
// feeder = lineValues[feederIndex];
// }
// String so=fileName;
//
// if(soIndex!=-1){
// so=lineValues[soIndex];
// }
// if(!ObjectUtil.isNotEmpty(so)){
// so=fileName;
// }
// LiteOrderItem item = new LiteOrderItem();
// item.setPn(partNumber);
// if(partNumber.isEmpty()){
// item.setNeedReelCount(1);
// }
// item.setNeedNum(num);
//
// item.setFeederInfo(feeder);
// item.setRi(ri);
// if(!itemMap.containsKey(so)){
// itemMap.put(so,new ArrayList<LiteOrderItem>());
// }
// itemMap.get(so).add(item);
//
//
// items.add(item);
// }
// }
// return itemMap;
// } catch (Exception ex) {
// log.error("解析上传的工单出错:" + ex.toString());
// }
// return null;
// }
}
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
00b067a
...
...
@@ -9,6 +9,7 @@ import org.springframework.data.annotation.Transient;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -216,5 +217,18 @@ public class LiteOrder extends BasePo implements Serializable {
return
sdate
;
}
public
void
updateOrderItems
(
LiteOrderItem
item
)
{
if
(
orderItems
==
null
)
{
orderItems
=
new
ArrayList
<>();
}
int
size
=
orderItems
.
size
();
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
if
(
orderItems
.
get
(
i
).
getId
().
equals
(
item
.
getId
()))
{
orderItems
.
set
(
i
,
item
);
return
;
}
}
orderItems
.
add
(
item
);
}
}
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
00b067a
...
...
@@ -16,19 +16,13 @@ import com.neotel.smfcore.core.device.bean.StatusBean;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
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.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto
;
import
com.neotel.smfcore.core.storage.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.impl.StorageManagerImpl
;
import
com.neotel.smfcore.core.storage.service.manager.impl.StoragePosManagerImpl
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.bean.MSDAppendInfo
;
import
com.neotel.smfcore.core.system.listener.ITaskListener
;
import
com.neotel.smfcore.core.system.service.dao.IDataLogDao
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
...
...
@@ -827,6 +821,57 @@ public class TaskService {
}
}
public
void
addVirtualOutToFinished
(
LiteOrder
liteOrder
,
Barcode
barcode
,
Integer
num
,
String
opUser
)
{
try
{
Collection
<
DataLog
>
allTasks
=
taskMap
.
values
();
DataLog
dataLog
=
new
DataLog
();
dataLog
.
setPartNumber
(
barcode
.
getPartNumber
());
dataLog
.
setBarcode
(
barcode
.
getBarcode
());
dataLog
.
setNum
(
num
);
dataLog
.
setMemo
(
barcode
.
getMemo
());
dataLog
.
setPutInDate
(
barcode
.
getPutInDate
());
MSDAppendInfo
msdAppendInfo
=
new
MSDAppendInfo
();
msdAppendInfo
.
setMsl
(
barcode
.
getMsl
());
msdAppendInfo
.
setOpenTime
(
barcode
.
getOpenTime
());
msdAppendInfo
.
setThickness
(
barcode
.
getThickness
());
dataLog
.
setMsdAppendInfo
(
msdAppendInfo
);
dataLog
.
setCid
(
""
);
dataLog
.
setStorageId
(
""
);
dataLog
.
setStorageName
(
"OutLine"
);
dataLog
.
setPosId
(
""
);
dataLog
.
setPosName
(
"OutLine"
);
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
//操作人,工单信息
dataLog
.
setOperator
(
opUser
);
dataLog
.
setSourceName
(
liteOrder
.
getOrderNo
());
dataLog
.
setSourceId
(
liteOrder
.
getId
());
log
.
info
(
opUser
+
"虚拟回仓: PN【"
+
barcode
.
getPartNumber
()+
"】条码【"
+
barcode
.
getBarcode
()
+
"】 工单号【"
+
liteOrder
.
getOrderNo
()
+
"】数量【"
+
num
+
"】"
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
barcode
.
setUsed
(
true
);
barcode
.
setUsedDate
(
new
Date
());
//仓位状态
barcode
.
setCheckOutDate
(
new
Date
(),
dataLog
.
getOperator
());
barcode
.
setPosName
(
""
);
barcodeManager
.
save
(
barcode
);
dataLog
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
dataLog
=
dataLogDao
.
save
(
dataLog
);
theFinishedTaskMap
.
put
(
dataLog
.
getBarcode
(),
dataLog
);
}
catch
(
Exception
e
)
{
log
.
error
(
"addVirtualOutToFinished Error:"
,
e
);
}
}
/**
* 出库完成
*/
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论