Commit 00e6858a sunke

需求单增加查询条件, 从Qisda获取库存进行比对

1 个父辈 3a9dbd16
...@@ -61,11 +61,18 @@ public class DifferentInventoryController extends BaseController { ...@@ -61,11 +61,18 @@ public class DifferentInventoryController extends BaseController {
* @param request * @param request
* @return * @return
*/ */
@RequestMapping("/qisda/diffInventory") @RequestMapping("/qisda/diffInventory.html")
public String dnIn(HttpServletRequest request){ public String dnIn(HttpServletRequest request) throws ApiException {
String file = request.getParameter("file"); String file = request.getParameter("file");
Map<String,DiffInfo> qisdaReelMap = null;
if(!Strings.isNullOrEmpty(file)){
log.info("开始比对:" + file); log.info("开始比对:" + file);
qisdaReelMap = readQisda(file);
}else{
log.info("开始与Qisda比对库存");
qisdaReelMap = QisdaApiController.getInventory();
}
List<StoragePos> posList = storagePosManager.findNotEmpty(); List<StoragePos> posList = storagePosManager.findNotEmpty();
Map<String,DiffInfo> neotelReelMap = new HashMap<>(); Map<String,DiffInfo> neotelReelMap = new HashMap<>();
...@@ -80,7 +87,7 @@ public class DifferentInventoryController extends BaseController { ...@@ -80,7 +87,7 @@ public class DifferentInventoryController extends BaseController {
neotelReelMap.put(barcode.getBarcode(), diffInfo); neotelReelMap.put(barcode.getBarcode(), diffInfo);
} }
Map<String,DiffInfo> qisdaReelMap = readQisda(file);
List<DiffInfo> neotelReels = new ArrayList<>(); List<DiffInfo> neotelReels = new ArrayList<>();
...@@ -106,6 +113,7 @@ public class DifferentInventoryController extends BaseController { ...@@ -106,6 +113,7 @@ public class DifferentInventoryController extends BaseController {
qisdaDiffReels.add(qisdaReelMap.get(reelId)); qisdaDiffReels.add(qisdaReelMap.get(reelId));
} }
} }
log.info("与Qisda库存比对完成");
request.setAttribute("boxReels", neotelReels); request.setAttribute("boxReels", neotelReels);
request.setAttribute("qisdaReels", qisdaDiffReels); request.setAttribute("qisdaReels", qisdaDiffReels);
request.setAttribute("sameDiffList", sameDiffList); request.setAttribute("sameDiffList", sameDiffList);
......
...@@ -2,9 +2,12 @@ package com.myproject.webapp.controller.qisda; ...@@ -2,9 +2,12 @@ package com.myproject.webapp.controller.qisda;
import com.myproject.bean.search.BaseSearchCriteria; import com.myproject.bean.search.BaseSearchCriteria;
import com.myproject.bean.search.PageList; import com.myproject.bean.search.PageList;
import com.myproject.bean.update.qisda.OutItem;
import com.myproject.dao.mongo.ILiteOrderDao; import com.myproject.dao.mongo.ILiteOrderDao;
import com.myproject.dao.mongo.qisda.IOutInfoDao; import com.myproject.dao.mongo.qisda.IOutInfoDao;
import com.myproject.dao.mongo.qisda.IOutItemDao;
import com.myproject.webapp.controller.storage.BaseSearchController; import com.myproject.webapp.controller.storage.BaseSearchController;
import org.apache.logging.log4j.util.Strings;
import org.displaytag.properties.SortOrderEnum; import org.displaytag.properties.SortOrderEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
...@@ -15,6 +18,8 @@ import org.springframework.web.bind.annotation.ModelAttribute; ...@@ -15,6 +18,8 @@ import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** /**
...@@ -27,13 +32,33 @@ public class OutInfoSearchController extends BaseSearchController { ...@@ -27,13 +32,33 @@ public class OutInfoSearchController extends BaseSearchController {
@Autowired @Autowired
protected IOutInfoDao outInfoDao; protected IOutInfoDao outInfoDao;
@Autowired
protected IOutItemDao outItemDao;
@RequestMapping("/outInfoSearch*") @RequestMapping("/outInfoSearch*")
public String onSubmit(@ModelAttribute("searchCriteria") BaseSearchCriteria searchCriteria, HttpServletRequest request) { public String onSubmit(@ModelAttribute("searchCriteria") BaseSearchCriteria searchCriteria, HttpServletRequest request) {
Query query = new Query(); Query query = new Query();
Criteria criteria = new Criteria(); 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"); addLikeParam(request,criteria,"hSerial");
}
query.addCriteria(criteria); query.addCriteria(criteria);
PageList pageList = searchCriteria.getPageList(); PageList pageList = searchCriteria.getPageList();
......
...@@ -143,13 +143,13 @@ public class QisdaController extends BaseController { ...@@ -143,13 +143,13 @@ public class QisdaController extends BaseController {
return "move"; return "move";
}else{ }else{
//料串和包装料料架 //料串和包装料料架
if(StorageConstants.SHEFL_TYPE.isAShelf(rfid) || StorageConstants.SHEFL_TYPE.isBShelf(rfid) ){ // if(StorageConstants.SHEFL_TYPE.isAShelf(rfid) || StorageConstants.SHEFL_TYPE.isBShelf(rfid) ){
if(currentDnInfo != null){ // if(currentDnInfo != null){
rfidDnMap.put(rfid, currentDnInfo); // rfidDnMap.put(rfid, currentDnInfo);
log.info("自动绑定["+rfid+"]"+ currentDnInfo.getShowStr()); // log.info("自动绑定["+rfid+"]"+ currentDnInfo.getShowStr());
return "move"; // return "move";
} // }
} // }
} }
return "stop"; return "stop";
} }
...@@ -206,9 +206,9 @@ public class QisdaController extends BaseController { ...@@ -206,9 +206,9 @@ public class QisdaController extends BaseController {
String rfid = request.getParameter("rfid"); String rfid = request.getParameter("rfid");
String dnNo = request.getParameter("dnNo"); String dnNo = request.getParameter("dnNo");
String facility = request.getParameter("facility"); String facility = request.getParameter("facility");
if(Strings.isNullOrEmpty(rfid)){ // if(Strings.isNullOrEmpty(rfid)){
rfid = vimRfid; // rfid = vimRfid;
} // }
if(Strings.isNullOrEmpty(rfid)){ if(Strings.isNullOrEmpty(rfid)){
return "x未读到RFID"; return "x未读到RFID";
} }
......
...@@ -410,6 +410,42 @@ public class QisdaApiController extends BaseController { ...@@ -410,6 +410,42 @@ public class QisdaApiController extends BaseController {
return msg; 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 { ...@@ -889,8 +925,10 @@ public class QisdaApiController extends BaseController {
public static Barcode VMILocationInCheck(Barcode barcode) throws ValidateException{ public static Barcode VMILocationInCheck(Barcode barcode) throws ValidateException{
String url = "http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMILocationInCheck"; String url = "http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMILocationInCheck";
String reelid = barcode.getBarcode(); String reelid = barcode.getBarcode();
String partNum = barcode.getPartNumber();
Map<String,Object> paramMap = new HashMap<String,Object>(); Map<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("reelid",reelid); paramMap.put("reelid",reelid);
paramMap.put("partNum",partNum);
log.info("纯入库判断参数:reelid=" + reelid); log.info("纯入库判断参数:reelid=" + reelid);
try { try {
......
...@@ -233,6 +233,9 @@ public class QisdaDeviceController extends BaseController { ...@@ -233,6 +233,9 @@ public class QisdaDeviceController extends BaseController {
//包装料RFID //包装料RFID
String packageRfid = request.getParameter("packageRfid"); String packageRfid = request.getParameter("packageRfid");
String hSerial = outInfoCache.getCurrentOrderHSerial(); String hSerial = outInfoCache.getCurrentOrderHSerial();
if(hSerial.isEmpty()){
return ResultBean.newErrorResult(-2, "未找到大料架["+bigRfid+"]");
}
log.info("收到机器人[3]获取包装料摆放位置信息请求:[packageRfid=" + packageRfid + "]bigRfid=" + bigRfid + "当前工单料需求:["+hSerial+"]"); log.info("收到机器人[3]获取包装料摆放位置信息请求:[packageRfid=" + packageRfid + "]bigRfid=" + bigRfid + "当前工单料需求:["+hSerial+"]");
ShelfInfo packageShelf = inquiryShelfBean.findPackageShelf(hSerial, packageRfid); ShelfInfo packageShelf = inquiryShelfBean.findPackageShelf(hSerial, packageRfid);
...@@ -427,7 +430,7 @@ public class QisdaDeviceController extends BaseController { ...@@ -427,7 +430,7 @@ public class QisdaDeviceController extends BaseController {
taskService.updateFinishedTask(task); taskService.updateFinishedTask(task);
String hSerial = outInfoCache.getCurrentOrderHSerial(); String hSerial = appendInfo.gethSerial();
List<String> usedRfidList = inquiryShelfBean.getUsedRfidList(hSerial); List<String> usedRfidList = inquiryShelfBean.getUsedRfidList(hSerial);
Map<String,Object> resultMap = new HashMap<>(); Map<String,Object> resultMap = new HashMap<>();
...@@ -564,10 +567,10 @@ public class QisdaDeviceController extends BaseController { ...@@ -564,10 +567,10 @@ public class QisdaDeviceController extends BaseController {
if(cacheTask.isUrgentReel() || cacheTask.isCutReel()){ if(cacheTask.isUrgentReel() || cacheTask.isCutReel()){
log.info("分盘料和紧急料不需要通知Qisda"); log.info("分盘料和紧急料不需要通知Qisda");
}else{ }else{
if(DataCache.isProductionFor(DataCache.CUSTOMER.QISDA)){
Barcode barcodeObj = barcodeManager.findByBarcode(cacheTask.getBarcode()); Barcode barcodeObj = barcodeManager.findByBarcode(cacheTask.getBarcode());
if(barcodeObj.needToQisda()){
String latest = outInfo.getShelfLatest(); String latest = outInfo.getShelfLatest();
QisdaApiController.VMIMateriaRecAss(cacheTask, barcodeObj,latest); QisdaApiController.VMIMateriaRecAss(cacheTask, barcodeObj,latest);
//发料完成,更新发料数量 //发料完成,更新发料数量
int slotSeq = appendInfo.getSlotIndex(); int slotSeq = appendInfo.getSlotIndex();
...@@ -577,12 +580,6 @@ public class QisdaDeviceController extends BaseController { ...@@ -577,12 +580,6 @@ public class QisdaDeviceController extends BaseController {
outItem.setSendQty(sendQty); outItem.setSendQty(sendQty);
outItemDao.save(outItem); outItemDao.save(outItem);
outInfoCache.updateOutItem(outItem.getId()); outInfoCache.updateOutItem(outItem.getId());
}else{
log.info("放置小车完成,条码["+barcodeObj.getBarcode()+"]不需要通知Qisda");
}
}else{
log.info("放置小车完成通知Qisda接口关闭");
}
} }
} }
} }
...@@ -715,6 +712,9 @@ public class QisdaDeviceController extends BaseController { ...@@ -715,6 +712,9 @@ public class QisdaDeviceController extends BaseController {
int packageEmpty = 0; int packageEmpty = 0;
String hSerial = outInfoCache.getCurrentOrderHSerial(); String hSerial = outInfoCache.getCurrentOrderHSerial();
if(cacheTask != null){
hSerial = cacheTask.getAppendInfo().gethSerial();
}
ShelfInfo shelfInfo = inquiryShelfBean.findSameShelf(hSerial,rfid); ShelfInfo shelfInfo = inquiryShelfBean.findSameShelf(hSerial,rfid);
if(shelfInfo != null){ if(shelfInfo != null){
Map<Integer, ShelfLoc> locMap = shelfInfo.getLocMap(); Map<Integer, ShelfLoc> locMap = shelfInfo.getLocMap();
...@@ -768,10 +768,12 @@ public class QisdaDeviceController extends BaseController { ...@@ -768,10 +768,12 @@ public class QisdaDeviceController extends BaseController {
log.info("当前任务数:" + resultMap); log.info("当前任务数:" + resultMap);
}else{ }else{
if(!hSerial.isEmpty()){ if(!hSerial.isEmpty()){
log.info("工单总任务数为0,清空当前的工单序号["+hSerial+"]"); if(!usedRfidList.isEmpty()){
log.info("工单总任务数为0,且工单有料架已经绑定,清空当前的工单序号["+hSerial+"]");
outInfoCache.setCurrentOrderHSerial(null); outInfoCache.setCurrentOrderHSerial(null);
} }
} }
}
return ResultBean.newOkResult(resultMap); return ResultBean.newOkResult(resultMap);
}catch(Exception e){ }catch(Exception e){
......
...@@ -41,7 +41,10 @@ ...@@ -41,7 +41,10 @@
<div class="portlet-title"> <div class="portlet-title">
<div class="caption"> <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> </div>
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="active"> <li class="active">
...@@ -52,30 +55,48 @@ ...@@ -52,30 +55,48 @@
<a href="#portlet_tab_2" data-toggle="tab" id="facilityTab"> <a href="#portlet_tab_2" data-toggle="tab" id="facilityTab">
Facility收料</a> Facility收料</a>
</li> </li>
<li class=""> <%--<li class="">--%>
<a href="#portlet_tab_3" data-toggle="tab" id="inTab"> <%--<a href="#portlet_tab_3" data-toggle="tab" id="inTab">--%>
纯入库</a> <%--纯入库</a>--%>
</li> <%--</li>--%>
</ul> </ul>
</div> </div>
<div class="portlet-body"> <div class="portlet-body">
<div class="tab-content"> <div class="tab-content">
<div class="tab-pane active" id="portlet_tab_1"> <div class="tab-pane active" id="portlet_tab_1">
<div class="row"> <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>
<div class="col-md-6 col-sm-6"> </div>
<button type="button" class="btn green" onclick="bindDn('DN')"><i class="fa fa-sign-in"></i><fmt:message key="绑定"/></button> <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>
</div> </div>
<div class="tab-pane" id="portlet_tab_2"> <div class="tab-pane" id="portlet_tab_2">
<div class="row"> <div class="row">
<div class="col-md-6 col-sm-6"> <div class="col-md-5 col-sm-5">
<select class="form-control" data-placeholder="Select..." id="facility"> <div class="form-group form-inline">
<option value="AAA-TEST">AAA-TEST</option> <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="S5-BACHS">S5-BACHS</option>
<option value="S9-BACHS">S9-BACHS</option> <option value="S9-BACHS">S9-BACHS</option>
<option value="SC-BACHS">SC-BACHS</option> <option value="SC-BACHS">SC-BACHS</option>
...@@ -96,9 +117,19 @@ ...@@ -96,9 +117,19 @@
<option value="SZ-BACHOS">SZ-BACHOS</option> <option value="SZ-BACHOS">SZ-BACHOS</option>
</select> </select>
</div> </div>
<div class="col-md-6 col-sm-6"> </div>
<button type="button" class="btn green" onclick="bindDn('Facility')"><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="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>
</div> </div>
...@@ -183,7 +214,11 @@ ...@@ -183,7 +214,11 @@
$.post("${ctx}/service/store/qisda/dnInfo", {}, function (dnInfo) { $.post("${ctx}/service/store/qisda/dnInfo", {}, function (dnInfo) {
$(".dataTableBody").html(""); $(".dataTableBody").html("");
if(dnInfo){ if(dnInfo){
$("#currentOp").text("当前操作: "+ dnInfo.showStr); var currentOp = "当前操作: "+ dnInfo.showStr;
if(currentOp != $("#currentOp").text()){
$("#currentOp").text(currentOp);
}
var data = dnInfo.items; var data = dnInfo.items;
var thread = ""; var thread = "";
if(dnInfo.cisIn){ if(dnInfo.cisIn){
...@@ -263,6 +298,7 @@ ...@@ -263,6 +298,7 @@
bindDn = function(type){ bindDn = function(type){
var params = {}; var params = {};
var useRFID = "";
if(type == 'DN'){ if(type == 'DN'){
var dnNo = $("#scan-dn").val().trim(); var dnNo = $("#scan-dn").val().trim();
if(dnNo == ''){ if(dnNo == ''){
...@@ -270,17 +306,24 @@ ...@@ -270,17 +306,24 @@
return; return;
}else{ }else{
params["dnNo"] = dnNo; params["dnNo"] = dnNo;
var dnRfid = $("#dnRfid").val();
params["rfid"]=dnRfid;
$("#dnRfid").val("");
$("#scan-dn").val("");
} }
}else if(type == 'Facility'){ }else if(type == 'Facility'){
var facility = $("#facility").val(); var facility = $("#facility").val();
params["facility"] = facility; params["facility"] = facility;
var facilityRfid = $("#facilityRfid").val();
params["rfid"]=facilityRfid;
$("#facilityRfid").val("");
$("#facility").val("");
}else{ }else{
} }
var useRFID = $("#useRFID").val();
params["rfid"]=useRFID; params["stopCurrent"]=true;
$("#useRFID").val("");
$.post("${ctx}/service/store/qisda/bindDn", params, function (data) { $.post("${ctx}/service/store/qisda/bindDn", params, function (data) {
if(data.indexOf("c") == 0){ if(data.indexOf("c") == 0){
...@@ -311,7 +354,7 @@ ...@@ -311,7 +354,7 @@
} }
setInterval(function(){ setInterval(function(){
flushVmiRfid(); //flushVmiRfid();
flushDnItems(); flushDnItems();
}, 1000); }, 1000);
......
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
height: 360px; height: 360px;
overflow-y: scroll; overflow-y: scroll;
} }
.td-item{
display: block;
}
</style> </style>
<!-- BEGIN PAGE HEADER--> <!-- BEGIN PAGE HEADER-->
...@@ -134,7 +137,15 @@ ...@@ -134,7 +137,15 @@
var dnQty = data[i].dnQty; var dnQty = data[i].dnQty;
var inQty = data[i].inQty; var inQty = data[i].inQty;
var diff = inQty - dnQty; 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(); table.order( [ 0, 'asc' ] ).draw();
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</div> </div>
</div> </div>
<div class="portlet-body"> <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"> <div class="form-group">
<label class="control-label col-md-1"><fmt:message key="需求单号"/></label> <label class="control-label col-md-1"><fmt:message key="需求单号"/></label>
...@@ -45,6 +45,22 @@ ...@@ -45,6 +45,22 @@
</div> </div>
</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"> <div class="col-md-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i> <button class="btn purple" type="submit"><i class="fa fa-search"></i>
<fmt:message key="button.search"/> <fmt:message key="button.search"/>
...@@ -72,6 +88,9 @@ ...@@ -72,6 +88,9 @@
<display:column titleKey="任务" sortable="true" sortProperty="mdate"> <display:column titleKey="任务" sortable="true" sortProperty="mdate">
${outInfo.taskFinishNum}/${outInfo.taskNum} ${outInfo.taskFinishNum}/${outInfo.taskNum}
</display:column> </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"> <display:column titleKey="checkOut.operate" media="html">
<c:if test="${outInfo.sendStatus != 2 && outInfo.taskNum == 0}"> <c:if test="${outInfo.sendStatus != 2 && outInfo.taskNum == 0}">
...@@ -156,6 +175,8 @@ ...@@ -156,6 +175,8 @@
$("#detailTitle").html(hSerial); $("#detailTitle").html(hSerial);
$("#theItems").html(""); $("#theItems").html("");
$.post("${ctx}/service/store/qisda/outDetail", {hSerial: hSerial}, function (outInfo) { $.post("${ctx}/service/store/qisda/outDetail", {hSerial: hSerial}, function (outInfo) {
$("#detailTitle").html("需求单: "+ outInfo.hSerial + " 工单: " + outInfo.so + " ["+outInfo.action+"]");
var data = outInfo.outItems; var data = outInfo.outItems;
var table = $('#itemsTable').DataTable(); var table = $('#itemsTable').DataTable();
table.clear(); table.clear();
......
...@@ -10,21 +10,21 @@ ...@@ -10,21 +10,21 @@
<fmt:message key="menu.product.component"/><span class="selected"> <fmt:message key="menu.product.component"/><span class="selected">
</a> </a>
</li> </li>
<li class="classic-menu-dropdown"> <%--<li class="classic-menu-dropdown">--%>
<a href="${ctx}/component/componentSearch.html?type=1" name="component"> <%--<a href="${ctx}/component/componentSearch.html?type=1" name="component">--%>
<fmt:message key="menu.product.solder"/><span class="selected"></span> <%--<fmt:message key="menu.product.solder"/><span class="selected"></span>--%>
</a> <%--</a>--%>
</li> <%--</li>--%>
<li class="classic-menu-dropdown"> <%--<li class="classic-menu-dropdown">--%>
<a href="${ctx}/component/componentSearch.html?type=2" name="component"> <%--<a href="${ctx}/component/componentSearch.html?type=2" name="component">--%>
<fmt:message key="menu.product.pcb"/><span class="selected"></span> <%--<fmt:message key="menu.product.pcb"/><span class="selected"></span>--%>
</a> <%--</a>--%>
</li> <%--</li>--%>
<li class="classic-menu-dropdown"> <%--<li class="classic-menu-dropdown">--%>
<a href="${ctx}/component/componentSearch.html?type=3" name="component"> <%--<a href="${ctx}/component/componentSearch.html?type=3" name="component">--%>
<fmt:message key="menu.product.others"/><span class="selected"></span> <%--<fmt:message key="menu.product.others"/><span class="selected"></span>--%>
</a> <%--</a>--%>
</li> <%--</li>--%>
</ul> </ul>
</security:authorize> </security:authorize>
<security:authorize ifAnyGranted="ROLE_MANAGE_DATALOG"> <security:authorize ifAnyGranted="ROLE_MANAGE_DATALOG">
...@@ -49,6 +49,11 @@ ...@@ -49,6 +49,11 @@
<fmt:message key="出库"/><span class="selected"></span> <fmt:message key="出库"/><span class="selected"></span>
</a> </a>
</li> </li>
<li class="classic-menu-dropdown">
<a href="${ctx}/qisda/diffInventory.html" name="qisda">
<fmt:message key="库存"/><span class="selected"></span>
</a>
</li>
</ul> </ul>
</security:authorize> </security:authorize>
<%--Work Order--%> <%--Work Order--%>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!