Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
Gree
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 00e6858a
由
sunke
编写于
2020-04-07 13:46:47 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
需求单增加查询条件, 从Qisda获取库存进行比对
1 个父辈
3a9dbd16
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
212 行增加
和
59 行删除
myproject/src/main/java/com/myproject/webapp/controller/qisda/DifferentInventoryController.java
myproject/src/main/java/com/myproject/webapp/controller/qisda/OutInfoSearchController.java
myproject/src/main/java/com/myproject/webapp/controller/qisda/QisdaController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaApiController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaDeviceController.java
myproject/src/main/webapp/WEB-INF/pages/qisda/dnIn.jsp
myproject/src/main/webapp/WEB-INF/pages/qisda/dnInfoSearch.jsp
myproject/src/main/webapp/WEB-INF/pages/qisda/outInfoSearch.jsp
myproject/src/main/webapp/common/metroTopMenu.jsp
myproject/src/main/java/com/myproject/webapp/controller/qisda/DifferentInventoryController.java
查看文件 @
00e6858
...
...
@@ -61,11 +61,18 @@ public class DifferentInventoryController extends BaseController {
* @param request
* @return
*/
@RequestMapping
(
"/qisda/diffInventory"
)
public
String
dnIn
(
HttpServletRequest
request
){
@RequestMapping
(
"/qisda/diffInventory
.html
"
)
public
String
dnIn
(
HttpServletRequest
request
)
throws
ApiException
{
String
file
=
request
.
getParameter
(
"file"
);
Map
<
String
,
DiffInfo
>
qisdaReelMap
=
null
;
if
(!
Strings
.
isNullOrEmpty
(
file
)){
log
.
info
(
"开始比对:"
+
file
);
qisdaReelMap
=
readQisda
(
file
);
}
else
{
log
.
info
(
"开始与Qisda比对库存"
);
qisdaReelMap
=
QisdaApiController
.
getInventory
();
}
List
<
StoragePos
>
posList
=
storagePosManager
.
findNotEmpty
();
Map
<
String
,
DiffInfo
>
neotelReelMap
=
new
HashMap
<>();
...
...
@@ -80,7 +87,7 @@ public class DifferentInventoryController extends BaseController {
neotelReelMap
.
put
(
barcode
.
getBarcode
(),
diffInfo
);
}
Map
<
String
,
DiffInfo
>
qisdaReelMap
=
readQisda
(
file
);
List
<
DiffInfo
>
neotelReels
=
new
ArrayList
<>();
...
...
@@ -106,6 +113,7 @@ public class DifferentInventoryController extends BaseController {
qisdaDiffReels
.
add
(
qisdaReelMap
.
get
(
reelId
));
}
}
log
.
info
(
"与Qisda库存比对完成"
);
request
.
setAttribute
(
"boxReels"
,
neotelReels
);
request
.
setAttribute
(
"qisdaReels"
,
qisdaDiffReels
);
request
.
setAttribute
(
"sameDiffList"
,
sameDiffList
);
...
...
myproject/src/main/java/com/myproject/webapp/controller/qisda/OutInfoSearchController.java
查看文件 @
00e6858
...
...
@@ -2,9 +2,12 @@ package com.myproject.webapp.controller.qisda;
import
com.myproject.bean.search.BaseSearchCriteria
;
import
com.myproject.bean.search.PageList
;
import
com.myproject.bean.update.qisda.OutItem
;
import
com.myproject.dao.mongo.ILiteOrderDao
;
import
com.myproject.dao.mongo.qisda.IOutInfoDao
;
import
com.myproject.dao.mongo.qisda.IOutItemDao
;
import
com.myproject.webapp.controller.storage.BaseSearchController
;
import
org.apache.logging.log4j.util.Strings
;
import
org.displaytag.properties.SortOrderEnum
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.query.Criteria
;
...
...
@@ -15,6 +18,8 @@ import org.springframework.web.bind.annotation.ModelAttribute;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.regex.Pattern
;
/**
...
...
@@ -27,13 +32,33 @@ public class OutInfoSearchController extends BaseSearchController {
@Autowired
protected
IOutInfoDao
outInfoDao
;
@Autowired
protected
IOutItemDao
outItemDao
;
@RequestMapping
(
"/outInfoSearch*"
)
public
String
onSubmit
(
@ModelAttribute
(
"searchCriteria"
)
BaseSearchCriteria
searchCriteria
,
HttpServletRequest
request
)
{
Query
query
=
new
Query
();
Criteria
criteria
=
new
Criteria
();
addLikeParam
(
request
,
criteria
,
"so"
);
String
reelId
=
request
.
getParameter
(
"reelId"
);
if
(
Strings
.
isNotBlank
(
reelId
)){
Pattern
pattern
=
Pattern
.
compile
(
reelId
,
Pattern
.
CASE_INSENSITIVE
);
Criteria
c
=
Criteria
.
where
(
"reelID"
).
regex
(
pattern
);
List
<
OutItem
>
itemList
=
outItemDao
.
findByQuery
(
new
Query
(
c
));
List
<
String
>
hSerialList
=
new
ArrayList
<>();
for
(
OutItem
outItem
:
itemList
)
{
hSerialList
.
add
(
outItem
.
gethSerial
());
}
criteria
.
and
(
"hSerial"
).
in
(
hSerialList
);
request
.
setAttribute
(
"reelId"
,
reelId
);
}
else
{
addLikeParam
(
request
,
criteria
,
"hSerial"
);
}
query
.
addCriteria
(
criteria
);
PageList
pageList
=
searchCriteria
.
getPageList
();
...
...
myproject/src/main/java/com/myproject/webapp/controller/qisda/QisdaController.java
查看文件 @
00e6858
...
...
@@ -143,13 +143,13 @@ public class QisdaController extends BaseController {
return
"move"
;
}
else
{
//料串和包装料料架
if
(
StorageConstants
.
SHEFL_TYPE
.
isAShelf
(
rfid
)
||
StorageConstants
.
SHEFL_TYPE
.
isBShelf
(
rfid
)
){
if
(
currentDnInfo
!=
null
){
rfidDnMap
.
put
(
rfid
,
currentDnInfo
);
log
.
info
(
"自动绑定["
+
rfid
+
"]"
+
currentDnInfo
.
getShowStr
());
return
"move"
;
}
}
//
if(StorageConstants.SHEFL_TYPE.isAShelf(rfid) || StorageConstants.SHEFL_TYPE.isBShelf(rfid) ){
//
if(currentDnInfo != null){
//
rfidDnMap.put(rfid, currentDnInfo);
//
log.info("自动绑定["+rfid+"]"+ currentDnInfo.getShowStr());
//
return "move";
//
}
//
}
}
return
"stop"
;
}
...
...
@@ -206,9 +206,9 @@ public class QisdaController extends BaseController {
String
rfid
=
request
.
getParameter
(
"rfid"
);
String
dnNo
=
request
.
getParameter
(
"dnNo"
);
String
facility
=
request
.
getParameter
(
"facility"
);
if
(
Strings
.
isNullOrEmpty
(
rfid
)){
rfid
=
vimRfid
;
}
//
if(Strings.isNullOrEmpty(rfid)){
//
rfid = vimRfid;
//
}
if
(
Strings
.
isNullOrEmpty
(
rfid
)){
return
"x未读到RFID"
;
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaApiController.java
查看文件 @
00e6858
...
...
@@ -410,6 +410,42 @@ public class QisdaApiController extends BaseController {
return
msg
;
}
public
static
Map
<
String
,
DiffInfo
>
getInventory
()
throws
ApiException
{
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIStcok"
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"area"
,
"4D"
);
log
.
info
(
"从Qisda获取库存信息进行比对"
);
Map
<
String
,
DiffInfo
>
diffInfoMap
=
new
HashMap
<>();
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"Qisda获取库存信息进行比对返回:"
+
result
);
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
toMap
(
result
);
String
code
=
resultMap
.
get
(
"code"
).
toString
();
if
(
code
.
equals
(
"200"
)){
List
<
Map
<
String
,
Object
>>
data
=
(
List
<
Map
<
String
,
Object
>>)
resultMap
.
get
(
"data"
);
for
(
Map
<
String
,
Object
>
itemMap
:
data
)
{
DiffInfo
diffInfo
=
new
DiffInfo
();
String
partno
=
itemMap
.
get
(
"partno"
).
toString
();
String
facility
=
itemMap
.
get
(
"facility"
).
toString
();
String
location
=
itemMap
.
get
(
"location"
).
toString
();
String
reelid
=
itemMap
.
get
(
"reelid"
).
toString
();
String
qty
=
itemMap
.
get
(
"qty"
).
toString
();
diffInfo
.
setPn
(
partno
);
diffInfo
.
setReelId
(
reelid
);
diffInfo
.
setLocation
(
location
);
diffInfo
.
setQty
(
qty
);
diffInfo
.
setFacility
(
facility
);
diffInfoMap
.
put
(
reelid
,
diffInfo
);
}
}
else
{
String
errorMsg
=
" Qisda获取库存信息进行比对转换出错:"
+
resultMap
.
get
(
"msg"
);
log
.
info
(
errorMsg
);
throw
new
ApiException
(
errorMsg
);
}
return
diffInfoMap
;
}
/**
*
...
...
@@ -889,8 +925,10 @@ public class QisdaApiController extends BaseController {
public
static
Barcode
VMILocationInCheck
(
Barcode
barcode
)
throws
ValidateException
{
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMILocationInCheck"
;
String
reelid
=
barcode
.
getBarcode
();
String
partNum
=
barcode
.
getPartNumber
();
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"reelid"
,
reelid
);
paramMap
.
put
(
"partNum"
,
partNum
);
log
.
info
(
"纯入库判断参数:reelid="
+
reelid
);
try
{
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaDeviceController.java
查看文件 @
00e6858
...
...
@@ -233,6 +233,9 @@ public class QisdaDeviceController extends BaseController {
//包装料RFID
String
packageRfid
=
request
.
getParameter
(
"packageRfid"
);
String
hSerial
=
outInfoCache
.
getCurrentOrderHSerial
();
if
(
hSerial
.
isEmpty
()){
return
ResultBean
.
newErrorResult
(-
2
,
"未找到大料架["
+
bigRfid
+
"]"
);
}
log
.
info
(
"收到机器人[3]获取包装料摆放位置信息请求:[packageRfid="
+
packageRfid
+
"]bigRfid="
+
bigRfid
+
"当前工单料需求:["
+
hSerial
+
"]"
);
ShelfInfo
packageShelf
=
inquiryShelfBean
.
findPackageShelf
(
hSerial
,
packageRfid
);
...
...
@@ -427,7 +430,7 @@ public class QisdaDeviceController extends BaseController {
taskService
.
updateFinishedTask
(
task
);
String
hSerial
=
outInfoCache
.
getCurrentOrderH
Serial
();
String
hSerial
=
appendInfo
.
geth
Serial
();
List
<
String
>
usedRfidList
=
inquiryShelfBean
.
getUsedRfidList
(
hSerial
);
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
...
...
@@ -564,10 +567,10 @@ public class QisdaDeviceController extends BaseController {
if
(
cacheTask
.
isUrgentReel
()
||
cacheTask
.
isCutReel
()){
log
.
info
(
"分盘料和紧急料不需要通知Qisda"
);
}
else
{
if
(
DataCache
.
isProductionFor
(
DataCache
.
CUSTOMER
.
QISDA
)){
Barcode
barcodeObj
=
barcodeManager
.
findByBarcode
(
cacheTask
.
getBarcode
());
if
(
barcodeObj
.
needToQisda
()){
String
latest
=
outInfo
.
getShelfLatest
();
QisdaApiController
.
VMIMateriaRecAss
(
cacheTask
,
barcodeObj
,
latest
);
//发料完成,更新发料数量
int
slotSeq
=
appendInfo
.
getSlotIndex
();
...
...
@@ -577,12 +580,6 @@ public class QisdaDeviceController extends BaseController {
outItem
.
setSendQty
(
sendQty
);
outItemDao
.
save
(
outItem
);
outInfoCache
.
updateOutItem
(
outItem
.
getId
());
}
else
{
log
.
info
(
"放置小车完成,条码["
+
barcodeObj
.
getBarcode
()+
"]不需要通知Qisda"
);
}
}
else
{
log
.
info
(
"放置小车完成通知Qisda接口关闭"
);
}
}
}
}
...
...
@@ -715,6 +712,9 @@ public class QisdaDeviceController extends BaseController {
int
packageEmpty
=
0
;
String
hSerial
=
outInfoCache
.
getCurrentOrderHSerial
();
if
(
cacheTask
!=
null
){
hSerial
=
cacheTask
.
getAppendInfo
().
gethSerial
();
}
ShelfInfo
shelfInfo
=
inquiryShelfBean
.
findSameShelf
(
hSerial
,
rfid
);
if
(
shelfInfo
!=
null
){
Map
<
Integer
,
ShelfLoc
>
locMap
=
shelfInfo
.
getLocMap
();
...
...
@@ -768,10 +768,12 @@ public class QisdaDeviceController extends BaseController {
log
.
info
(
"当前任务数:"
+
resultMap
);
}
else
{
if
(!
hSerial
.
isEmpty
()){
log
.
info
(
"工单总任务数为0,清空当前的工单序号["
+
hSerial
+
"]"
);
if
(!
usedRfidList
.
isEmpty
()){
log
.
info
(
"工单总任务数为0,且工单有料架已经绑定,清空当前的工单序号["
+
hSerial
+
"]"
);
outInfoCache
.
setCurrentOrderHSerial
(
null
);
}
}
}
return
ResultBean
.
newOkResult
(
resultMap
);
}
catch
(
Exception
e
){
...
...
myproject/src/main/webapp/WEB-INF/pages/qisda/dnIn.jsp
查看文件 @
00e6858
...
...
@@ -41,7 +41,10 @@
<div class="portlet-title">
<div class="caption">
<div><span id="currentOp"> </span>当前料架:<span id="vmiRFID"></span><input type="text" class="form-control" id="useRFID"/></div>
<div>
<span id="currentOp"> </span>
<%--当前料架:<span id="vmiRFID"></span>--%>
</div>
</div>
<ul class="nav nav-tabs">
<li class="active">
...
...
@@ -52,30 +55,48 @@
<a href="#portlet_tab_2" data-toggle="tab" id="facilityTab">
Facility收料</a>
</li>
<
li class=""
>
<
a href="#portlet_tab_3" data-toggle="tab" id="inTab"
>
纯入库</a
>
<
/li
>
<
%--<li class="">--%
>
<
%--<a href="#portlet_tab_3" data-toggle="tab" id="inTab">--%
>
<%--纯入库</a>--%
>
<
%--</li>--%
>
</ul>
</div>
<div class="portlet-body">
<div class="tab-content">
<div class="tab-pane active" id="portlet_tab_1">
<div class="row">
<div class="col-md-6 col-sm-6">
<input type="text" class="form-control" id="scan-dn" value="DNMISW1911197845"/>
<div class="col-md-5 col-sm-5">
<div class="form-group form-inline">
<div class="input-group margin-top-10">
<span class="input-group-addon"><fmt:message key="DN单"/></span>
<input type="text" class="form-control input-xlarge" id="scan-dn" value=""/>
</div>
</div>
<div class="col-md-6 col-sm-6">
<button type="button" class="btn green" onclick="bindDn('DN')"><i class="fa fa-sign-in"></i><fmt:message key="绑定"/></button>
</div>
<div class="col-md-3 col-sm-3">
<div class="form-group form-inline">
<div class="input-group margin-top-10">
<span class="input-group-addon"><fmt:message key="料架"/></span>
<input type="text" class="form-control input-small" id="dnRfid"/>
</div>
</div>
</div>
<div class="col-md-4 col-sm-4">
<button type="button" class="btn green margin-top-10 " onclick="bindDn('DN')"><i class="fa fa-sign-in"></i><fmt:message key="绑定"/></button>
</div>
</div>
</div>
<div class="tab-pane" id="portlet_tab_2">
<div class="row">
<div class="col-md-6 col-sm-6">
<select class="form-control" data-placeholder="Select..." id="facility">
<option value="AAA-TEST">AAA-TEST</option>
<div class="col-md-5 col-sm-5">
<div class="form-group form-inline">
<div class="input-group margin-top-10">
<span class="input-group-addon"><fmt:message key="Facility"/></span>
<select class="form-control input-xlarge" data-placeholder="Select..." id="facility">
<option value=""></option>
<option value="S5-BACHS">S5-BACHS</option>
<option value="S9-BACHS">S9-BACHS</option>
<option value="SC-BACHS">SC-BACHS</option>
...
...
@@ -96,9 +117,19 @@
<option value="SZ-BACHOS">SZ-BACHOS</option>
</select>
</div>
<div class="col-md-6 col-sm-6">
<button type="button" class="btn green" onclick="bindDn('Facility')"><i class="fa fa-sign-in"></i><fmt:message key="绑定"/></button>
</div>
</div>
<div class="col-md-3 col-sm-3">
<div class="form-group form-inline">
<div class="input-group margin-top-10">
<span class="input-group-addon"><fmt:message key="料架"/></span>
<input type="text" class="form-control input-small" id="facilityRfid"/>
</div>
</div>
</div>
<div class="col-md-4 col-sm-4">
<button type="button" class="btn green margin-top-10" onclick="bindDn('Facility')"><i class="fa fa-sign-in"></i><fmt:message key="绑定"/></button>
</div>
</div>
...
...
@@ -183,7 +214,11 @@
$.post("${ctx}/service/store/qisda/dnInfo", {}, function (dnInfo) {
$(".dataTableBody").html("");
if(dnInfo){
$("#currentOp").text("当前操作: "+ dnInfo.showStr);
var currentOp = "当前操作: "+ dnInfo.showStr;
if(currentOp != $("#currentOp").text()){
$("#currentOp").text(currentOp);
}
var data = dnInfo.items;
var thread = "";
if(dnInfo.cisIn){
...
...
@@ -263,6 +298,7 @@
bindDn = function(type){
var params = {};
var useRFID = "";
if(type == 'DN'){
var dnNo = $("#scan-dn").val().trim();
if(dnNo == ''){
...
...
@@ -270,17 +306,24 @@
return;
}else{
params["dnNo"] = dnNo;
var dnRfid = $("#dnRfid").val();
params["rfid"]=dnRfid;
$("#dnRfid").val("");
$("#scan-dn").val("");
}
}else if(type == 'Facility'){
var facility = $("#facility").val();
params["facility"] = facility;
var facilityRfid = $("#facilityRfid").val();
params["rfid"]=facilityRfid;
$("#facilityRfid").val("");
$("#facility").val("");
}else{
}
var useRFID = $("#useRFID").val();
params["rfid"]=useRFID;
$("#useRFID").val("");
params["stopCurrent"]=true;
$.post("${ctx}/service/store/qisda/bindDn", params, function (data) {
if(data.indexOf("c") == 0){
...
...
@@ -311,7 +354,7 @@
}
setInterval(function(){
flushVmiRfid();
//
flushVmiRfid();
flushDnItems();
}, 1000);
...
...
myproject/src/main/webapp/WEB-INF/pages/qisda/dnInfoSearch.jsp
查看文件 @
00e6858
...
...
@@ -10,6 +10,9 @@
height: 360px;
overflow-y: scroll;
}
.td-item{
display: block;
}
</style>
<!-- BEGIN PAGE HEADER-->
...
...
@@ -134,7 +137,15 @@
var dnQty = data[i].dnQty;
var inQty = data[i].inQty;
var diff = inQty - dnQty;
table.row.add( [ index, data[i].pn, data[i].facility, data[i].company, inQty+"/"+dnQty,diff,data[i].dnDateStr] );
var diffColor = "";
if(diff < 0){
diffColor = "bg-red";
}else if(diff > 0){
diffColor = "bg-yellow";
}
var diffInfoStr = "<span class='"+diffColor+" td-item'>"+diff+"</span>";
table.row.add( [ index, data[i].pn, data[i].facility, data[i].company, inQty+"/"+dnQty,diffInfoStr,data[i].dnDateStr] );
}
table.order( [ 0, 'asc' ] ).draw();
...
...
myproject/src/main/webapp/WEB-INF/pages/qisda/outInfoSearch.jsp
查看文件 @
00e6858
...
...
@@ -34,7 +34,7 @@
</div>
</div>
<div class="portlet-body">
<form id="searchCriteria" class="form-horizontal form-bordered" action="" method="post">
<form id="searchCriteria" class="form-horizontal form-bordered" action="
${ctx}/qisda/outInfoSearch.html
" method="post">
<div class="form-group">
<label class="control-label col-md-1"><fmt:message key="需求单号"/></label>
...
...
@@ -45,6 +45,22 @@
</div>
</div>
<label class="control-label col-md-1"><fmt:message key="工单号"/></label>
<div class="col-md-2">
<div style="text-align:left" class="input-group">
<input type="text" name="so" class="form-control" value="${so}"/>
</div>
</div>
<label class="control-label col-md-1"><fmt:message key="ReelId"/></label>
<div class="col-md-2">
<div style="text-align:left" class="input-group">
<input type="text" name="reelId" class="form-control" value="${reelId}"/>
</div>
</div>
<div class="col-md-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i>
<fmt:message key="button.search"/>
...
...
@@ -72,6 +88,9 @@
<display:column titleKey="任务" sortable="true" sortProperty="mdate">
${outInfo.taskFinishNum}/${outInfo.taskNum}
</display:column>
<display:column titleKey="创建时间" sortable="true" sortProperty="createDate">
<fmt:formatDate value="${outInfo.createDate}" pattern="yyyy-MM-dd HH:mm"/>
</display:column>
<display:column titleKey="checkOut.operate" media="html">
<c:if test="${outInfo.sendStatus != 2 && outInfo.taskNum == 0}">
...
...
@@ -156,6 +175,8 @@
$("#detailTitle").html(hSerial);
$("#theItems").html("");
$.post("${ctx}/service/store/qisda/outDetail", {hSerial: hSerial}, function (outInfo) {
$("#detailTitle").html("需求单: "+ outInfo.hSerial + " 工单: " + outInfo.so + " ["+outInfo.action+"]");
var data = outInfo.outItems;
var table = $('#itemsTable').DataTable();
table.clear();
...
...
myproject/src/main/webapp/common/metroTopMenu.jsp
查看文件 @
00e6858
...
...
@@ -10,21 +10,21 @@
<fmt:message key="menu.product.component"/><span class="selected">
</a>
</li>
<
li class="classic-menu-dropdown"
>
<
a href="${ctx}/component/componentSearch.html?type=1" name="component"
>
<
fmt:message key="menu.product.solder"/><span class="selected"></span
>
<
/a
>
<
/li
>
<
li class="classic-menu-dropdown"
>
<
a href="${ctx}/component/componentSearch.html?type=2" name="component"
>
<
fmt:message key="menu.product.pcb"/><span class="selected"></span
>
<
/a
>
<
/li
>
<
li class="classic-menu-dropdown"
>
<
a href="${ctx}/component/componentSearch.html?type=3" name="component"
>
<
fmt:message key="menu.product.others"/><span class="selected"></span
>
<
/a
>
<
/li
>
<
%--<li class="classic-menu-dropdown">--%
>
<
%--<a href="${ctx}/component/componentSearch.html?type=1" name="component">--%
>
<
%--<fmt:message key="menu.product.solder"/><span class="selected"></span>--%
>
<
%--</a>--%
>
<
%--</li>--%
>
<
%--<li class="classic-menu-dropdown">--%
>
<
%--<a href="${ctx}/component/componentSearch.html?type=2" name="component">--%
>
<
%--<fmt:message key="menu.product.pcb"/><span class="selected"></span>--%
>
<
%--</a>--%
>
<
%--</li>--%
>
<
%--<li class="classic-menu-dropdown">--%
>
<
%--<a href="${ctx}/component/componentSearch.html?type=3" name="component">--%
>
<
%--<fmt:message key="menu.product.others"/><span class="selected"></span>--%
>
<
%--</a>--%
>
<
%--</li>--%
>
</ul>
</security:authorize>
<security:authorize ifAnyGranted="ROLE_MANAGE_DATALOG">
...
...
@@ -49,6 +49,11 @@
<fmt:message key="出库"/><span class="selected"></span>
</a>
</li>
<li class="classic-menu-dropdown">
<a href="${ctx}/qisda/diffInventory.html" name="qisda">
<fmt:message key="库存"/><span class="selected"></span>
</a>
</li>
</ul>
</security:authorize>
<%--Work Order--%>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论