Commit 6f69995c sunke

方仓

1 个父辈 815c4faf
...@@ -9,6 +9,11 @@ import java.util.List; ...@@ -9,6 +9,11 @@ import java.util.List;
public class Settings extends BaseMongoBean { public class Settings extends BaseMongoBean {
/** /**
* 脱机调试
*/
private boolean debugTest = false;
/**
* 指定软件是为哪个客户单独定制的 * 指定软件是为哪个客户单独定制的
*/ */
private String productCustom = ""; private String productCustom = "";
...@@ -387,5 +392,13 @@ public class Settings extends BaseMongoBean { ...@@ -387,5 +392,13 @@ public class Settings extends BaseMongoBean {
public void setInactionDay(int inactionDay) { public void setInactionDay(int inactionDay) {
this.inactionDay = inactionDay; this.inactionDay = inactionDay;
} }
public boolean isDebugTest() {
return debugTest;
}
public void setDebugTest(boolean debugTest) {
this.debugTest = debugTest;
}
} }
...@@ -210,6 +210,13 @@ public class Storage extends BaseMongoBean { ...@@ -210,6 +210,13 @@ public class Storage extends BaseMongoBean {
return StorageConstants.TYPE.CABINET.name().equals(type); return StorageConstants.TYPE.CABINET.name().equals(type);
} }
/**
* 是否是方仓
*/
public boolean isSmdXl() {
return StorageConstants.TYPE.SMD_XL.name().equals(type);
}
public boolean canPutInPos(int w, int h, int PosW, int posH){ public boolean canPutInPos(int w, int h, int PosW, int posH){
......
...@@ -291,7 +291,13 @@ public class StorageConstants { ...@@ -291,7 +291,13 @@ public class StorageConstants {
/** /**
* 11 垂直货柜 * 11 垂直货柜
*/ */
VERTICALBOX("storage.type.verticalBox") VERTICALBOX("storage.type.smdVl"),
/**
* 12 SMD-XL(方仓)
*/
SMD_XL("storage.type.smdXl")
; ;
......
...@@ -28,7 +28,7 @@ import java.util.*; ...@@ -28,7 +28,7 @@ import java.util.*;
/** /**
* 锡膏料仓 * 垂直货柜
*/ */
@Controller @Controller
public class VerticalBoxController extends BaseController{ public class VerticalBoxController extends BaseController{
...@@ -207,6 +207,7 @@ public class VerticalBoxController extends BaseController{ ...@@ -207,6 +207,7 @@ public class VerticalBoxController extends BaseController{
StoragePos posToPut = getOrCreateNewPos(hostPos, barcode.getId()); StoragePos posToPut = getOrCreateNewPos(hostPos, barcode.getId());
posToPut.setBarcode(barcode); posToPut.setBarcode(barcode);
posToPut.setUsed(true);
storagePosManager.save(posToPut); storagePosManager.save(posToPut);
finishTask(posToPut,currentTask,barcode, opQty); finishTask(posToPut,currentTask,barcode, opQty);
...@@ -248,6 +249,7 @@ public class VerticalBoxController extends BaseController{ ...@@ -248,6 +249,7 @@ public class VerticalBoxController extends BaseController{
if(currentTask.isPutInTask()){ if(currentTask.isPutInTask()){
StoragePos posToPut = getOrCreateNewPos(hostPos, barcode.getId()); StoragePos posToPut = getOrCreateNewPos(hostPos, barcode.getId());
posToPut.setUsed(true);
posToPut.setBarcode(barcode); posToPut.setBarcode(barcode);
storagePosManager.save(posToPut); storagePosManager.save(posToPut);
finishTask(posToPut,currentTask, barcode, barcode.getAmount()); finishTask(posToPut,currentTask, barcode, barcode.getAmount());
...@@ -289,17 +291,22 @@ public class VerticalBoxController extends BaseController{ ...@@ -289,17 +291,22 @@ public class VerticalBoxController extends BaseController{
public VerticalBoxOperateBean currentTask(HttpServletRequest request) { public VerticalBoxOperateBean currentTask(HttpServletRequest request) {
String cid = request.getParameter("cid"); String cid = request.getParameter("cid");
DataLog currentTask = verticalBoxHandler.getCurrentTask(cid); DataLog currentTask = verticalBoxHandler.getCurrentTask(cid);
if(currentTask == null){ if(dataCache.getSettings().isDebugTest()){
//测试使用 if(currentTask == null){
Collection<DataLog> queueTasks = taskService.getQueueTasks(cid); //测试使用
for (DataLog queueTask : queueTasks) { Collection<DataLog> queueTasks = taskService.getQueueTasks(cid);
queueTask.setStatus(StorageConstants.OP_STATUS.EXECUTING.name()); for (DataLog queueTask : queueTasks) {
taskService.updateQueueTask(queueTask); if(queueTask.isWait()){
verticalBoxHandler.updateCurrentTask(queueTask.getCid(), queueTask); queueTask.setStatus(StorageConstants.OP_STATUS.EXECUTING.name());
break; taskService.updateQueueTask(queueTask);
verticalBoxHandler.updateCurrentTask(queueTask.getCid(), queueTask);
break;
}
}
currentTask = verticalBoxHandler.getCurrentTask(cid);
} }
currentTask = verticalBoxHandler.getCurrentTask(cid);
} }
if(currentTask != null){ if(currentTask != null){
VerticalBoxOperateBean operateBean = new VerticalBoxOperateBean(); VerticalBoxOperateBean operateBean = new VerticalBoxOperateBean();
operateBean.setCurrentTask(currentTask); operateBean.setCurrentTask(currentTask);
......
...@@ -41,6 +41,13 @@ public class SettingsController extends BaseUpdateController { ...@@ -41,6 +41,13 @@ public class SettingsController extends BaseUpdateController {
settings.setProductCustom(product); settings.setProductCustom(product);
settings = dataCache.updateSettings(settings); settings = dataCache.updateSettings(settings);
} }
String debugStr = request.getParameter("debug");
if(!Strings.isNullOrEmpty(debugStr)){
boolean debugTest = Boolean.valueOf(debugStr);
settings.setDebugTest(debugTest);
settings = dataCache.updateSettings(settings);
}
model.addAttribute("settings", settings); model.addAttribute("settings", settings);
return new ModelAndView(updateView(), model.asMap()); return new ModelAndView(updateView(), model.asMap());
} }
......
...@@ -270,7 +270,7 @@ public class StorageDataController extends BaseController { ...@@ -270,7 +270,7 @@ public class StorageDataController extends BaseController {
@RequestMapping(value = "/checkout.html") @RequestMapping(value = "/checkout.html")
@ResponseBody @ResponseBody
public String checkPos(HttpServletRequest request) { public String checkout(HttpServletRequest request) {
String cid = request.getParameter("cid"); String cid = request.getParameter("cid");
String partnumber = request.getParameter("pn"); String partnumber = request.getParameter("pn");
...@@ -537,6 +537,9 @@ public class StorageDataController extends BaseController { ...@@ -537,6 +537,9 @@ public class StorageDataController extends BaseController {
* @param opValue * @param opValue
*/ */
public static void addOp(String cid, String opKey, String opValue){ public static void addOp(String cid, String opKey, String opValue){
if(opValue == null){
return;
}
Map<String, String> opMap = storageOpMap.get(cid); Map<String, String> opMap = storageOpMap.get(cid);
if(opMap == null){ if(opMap == null){
opMap = new ConcurrentHashMap<>(); opMap = new ConcurrentHashMap<>();
......
...@@ -17,6 +17,7 @@ import com.myproject.manager.IHumitureManager; ...@@ -17,6 +17,7 @@ import com.myproject.manager.IHumitureManager;
import com.myproject.manager.IStoragePosManager; import com.myproject.manager.IStoragePosManager;
import com.myproject.model.User; import com.myproject.model.User;
import com.myproject.service.UserManager; import com.myproject.service.UserManager;
import com.myproject.webapp.controller.webService.boxHandler.SmdXlBoxHandler;
import com.myproject.webapp.controller.webService.boxHandler.VerticalBoxHandler; import com.myproject.webapp.controller.webService.boxHandler.VerticalBoxHandler;
import com.myproject.util.HttpHelper; import com.myproject.util.HttpHelper;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
...@@ -110,6 +111,9 @@ public class TaskService implements ITaskService { ...@@ -110,6 +111,9 @@ public class TaskService implements ITaskService {
@Autowired @Autowired
private VerticalBoxHandler verticalBoxHandler; private VerticalBoxHandler verticalBoxHandler;
@Autowired
private SmdXlBoxHandler smdXlBoxHandler;
/** /**
* 更新客户端发上来的消息(设备故障等消息) * 更新客户端发上来的消息(设备故障等消息)
*/ */
...@@ -690,7 +694,8 @@ public class TaskService implements ITaskService { ...@@ -690,7 +694,8 @@ public class TaskService implements ITaskService {
String posName = task.getPosName(); String posName = task.getPosName();
int index = posName.indexOf("#"); int index = posName.indexOf("#");
if(index>0){ if(index>0){
String boxId = posName.substring(0,index); //String boxId = posName.substring(0,index);
String boxId = "1";
excuteBoxIds.add(Integer.valueOf(boxId)); excuteBoxIds.add(Integer.valueOf(boxId));
} }
} }
...@@ -970,28 +975,31 @@ public class TaskService implements ITaskService { ...@@ -970,28 +975,31 @@ public class TaskService implements ITaskService {
synchronized (storage){ synchronized (storage){
//log.info("reqseq:"+statusBean.getSeq()); //log.info("reqseq:"+statusBean.getSeq());
StatusBean resultStatus = saveStatus(statusBean); statusBean = saveStatus(statusBean);
if(storage.isVerticalBox()){ if(storage.isVerticalBox()){
//垂直货柜 //垂直货柜
return verticalBoxHandler.handleClientStatusBean(statusBean); return verticalBoxHandler.handleClientStatusBean(statusBean);
} }
statusBean = handleClientStatusBean(statusBean); if(storage.isSmdXl()){
statusBean = smdXlBoxHandler.handleClientStatusBean(statusBean);
}
statusBean = handleClientStatusBean(statusBean);
if(statusBean.getOp() == StorageConstants.OP.ALARM_DATA){ if(statusBean.getOp() == StorageConstants.OP.ALARM_DATA){
log.info("获取温湿度报警值"); log.info("获取温湿度报警值");
statusBean.setTemperature(dataCache.getSettings().getMaxTemperature()); statusBean.setTemperature(dataCache.getSettings().getMaxTemperature());
statusBean.setHumidity(dataCache.getSettings().getMaxHumidity()); statusBean.setHumidity(dataCache.getSettings().getMaxHumidity());
resultStatus = statusBean; //resultStatus = statusBean;
return resultStatus; return statusBean;
}else if(dataCache.needUpdateHumidiy(cid)){ }else if(dataCache.needUpdateHumidiy(cid)){
log.info("发送温湿度报警值"); log.info("发送温湿度报警值");
statusBean.setTemperature(dataCache.getSettings().getMaxTemperature()); statusBean.setTemperature(dataCache.getSettings().getMaxTemperature());
statusBean.setHumidity(dataCache.getSettings().getMaxHumidity()); statusBean.setHumidity(dataCache.getSettings().getMaxHumidity());
resultStatus = statusBean; //resultStatus = statusBean;
return resultStatus; return statusBean;
} }
if(storage.isCabinet() || storage.isShelf() || storage.isAccShelf() || storage.isCodeShelf()){ if(storage.isCabinet() || storage.isShelf() || storage.isAccShelf() || storage.isCodeShelf()){
...@@ -1006,15 +1014,18 @@ public class TaskService implements ITaskService { ...@@ -1006,15 +1014,18 @@ public class TaskService implements ITaskService {
} }
} }
if(statusBean.getOp() == StorageConstants.OP.PUT_IN){ if(!storage.isSmdXl()){
log.debug("入库:"+mapper.writeValueAsString(statusBean)); if(statusBean.getOp() == StorageConstants.OP.PUT_IN){
resultStatus = putInLine(storage, statusBean); log.debug("入库:"+mapper.writeValueAsString(statusBean));
}else { statusBean = putInLine(storage, statusBean);
//查看是否有要出库的操作 }else {
resultStatus = checkOut(storage, resultStatus); //查看是否有要出库的操作
statusBean = checkOut(storage, statusBean);
}
} }
//log.info(mapper.writeValueAsString(resultStatus)); //log.info(mapper.writeValueAsString(resultStatus));
return resultStatus; return statusBean;
} }
} catch (Exception e) { } catch (Exception e) {
log.error("", e); log.error("", e);
...@@ -1702,28 +1713,31 @@ public class TaskService implements ITaskService { ...@@ -1702,28 +1713,31 @@ public class TaskService implements ITaskService {
StoragePos storagePos = storagePosManager.get(task.getPosId()); StoragePos storagePos = storagePosManager.get(task.getPosId());
//二维码状态 //二维码状态
Barcode barcode = barcodeManager.findByBarcode(task.getBarcode()); Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
barcode.setUsedCount(barcode.getUsedCount() + 1); if(barcode != null){
//barcode.setUsedDate(new Date()); barcode.setUsedCount(barcode.getUsedCount() + 1);
barcode.setPutInTime(System.currentTimeMillis()); //barcode.setUsedDate(new Date());
barcode.setInOpor(task.getOperator()); barcode.setPutInTime(System.currentTimeMillis());
barcode.setCheckOutDate(null,""); barcode.setInOpor(task.getOperator());
barcode.setPosName(task.getPosName()); barcode.setCheckOutDate(null,"");
if(barcode.isSolder()){ barcode.setPosName(task.getPosName());
if(storagePos.isWarmPos()){ if(barcode.isSolder()){
//回温仓位 if(storagePos.isWarmPos()){
barcode.setSolderStatus(StorageConstants.SOLDER_STATUS.RETREAT_STORAGE); //回温仓位
}else{ barcode.setSolderStatus(StorageConstants.SOLDER_STATUS.RETREAT_STORAGE);
barcode.setSolderStatus(StorageConstants.SOLDER_STATUS.UNDER_REFRIGERATION); }else{
barcode.setSolderStatus(StorageConstants.SOLDER_STATUS.UNDER_REFRIGERATION);
}
barcode.setNeedOutDate(null);
} }
barcode.setNeedOutDate(null);
}
// if(Strings.isNullOrEmpty(barcode.getProviderNumber())){//补上供应商编号 // if(Strings.isNullOrEmpty(barcode.getProviderNumber())){//补上供应商编号
// Component component = componentManager.findByPartNumber(barcode.getPartNumber()); // Component component = componentManager.findByPartNumber(barcode.getPartNumber());
// if(component != null){ // if(component != null){
// barcode.setProviderNumber(component.getProviderNumber()); // barcode.setProviderNumber(component.getProviderNumber());
// } // }
// } // }
barcodeManager.save(barcode); barcodeManager.save(barcode);
}
/** /**
...@@ -1734,20 +1748,23 @@ public class TaskService implements ITaskService { ...@@ -1734,20 +1748,23 @@ public class TaskService implements ITaskService {
storagePos.setCanCheckOutTime(System.currentTimeMillis()); storagePos.setCanCheckOutTime(System.currentTimeMillis());
storagePosManager.save(storagePos); storagePosManager.save(storagePos);
//更新缓存中的库存信息 if(barcode != null){
dataCache.updateInventory(storagePos,barcode); dataCache.updateInventory(storagePos,barcode);
//dataCache.updateStorage(task.getCid()); //dataCache.updateStorage(task.getCid());
Storage storage = dataCache.getStorage(task.getCid()); Storage storage = dataCache.getStorage(task.getCid());
if(storage != null){ if(storage != null){
postInNotification(dataCache.getSettings().getInNotifyApi(), task.getBarcode(), task.getStorageId()); postInNotification(dataCache.getSettings().getInNotifyApi(), task.getBarcode(), task.getStorageId());
} }
//记录日志,完成 task //记录日志,完成 task
task.setBatchInfo(barcode.getBatch()); task.setBatchInfo(barcode.getBatch());
task.setNum(barcode.getAmount()); task.setNum(barcode.getAmount());
}
//更新缓存中的库存信息
task.setStatus(StorageConstants.OP_STATUS.FINISHED.name()); task.setStatus(StorageConstants.OP_STATUS.FINISHED.name());
dataLogDao.save(task); dataLogDao.save(task);
......
package com.myproject.webapp.controller.webService.boxHandler;
import com.google.common.base.Strings;
import com.myproject.bean.update.DataLog;
import com.myproject.bean.update.StoragePos;
import com.myproject.bean.utils.BoxStatusBean;
import com.myproject.bean.utils.StatusBean;
import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.manager.IStoragePosManager;
import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.webService.TaskService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* 垂直货柜处理类
*/
@Service
public class SmdXlBoxHandler {
protected final transient Logger log = LogManager.getLogger(getClass());
@Autowired
protected TaskService taskService;
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private IDataLogDao dataLogDao;
/**
* 当前出入库操作的库位(key为cid, value为当前执行的任务)
*/
private Map<String,DataLog> operateTaskMap = new ConcurrentHashMap<>();
/**
* 获取当前正在执行的任务
*/
public DataLog getCurrentTask(String cid){
return operateTaskMap.get(cid);
}
/**
* 更新或清理(task为null)当前正在执行的任务
*/
public void updateCurrentTask(String cid, DataLog task){
if(task == null){
operateTaskMap.remove(cid);
}else{
operateTaskMap.put(cid, task);
}
}
public StatusBean handleClientStatusBean(StatusBean statusBean){
String cid = statusBean.getCid();
Collection<DataLog> queueTasks = taskService.getQueueTasks(cid);
Map<Integer, BoxStatusBean> statusOfBoxes = statusBean.getBoxStatus();
if (statusOfBoxes != null) {
for (BoxStatusBean boxStatus : statusOfBoxes.values()) {
try {
//出库入库动作完成处理
int status = boxStatus.getStatus();
String posName = boxStatus.getPosId();
if(!Strings.isNullOrEmpty(posName)){//客户端发一次完成之后,会发空的 posName,不需要处理
if (StorageConstants.BOX_STATUS.OUT_FINISHED == status) {//出仓完成,设置当前任务
DataLog currentTask = null;
for (DataLog queueTask : queueTasks) {
if(queueTask.isExecuting() && queueTask.getPosName().equals(posName)){
currentTask = queueTask;
String doorInfo = statusBean.getFromData("door");
if(doorInfo == null){
doorInfo = "1";
}
currentTask.setSubSourceId(doorInfo);
taskService.updateQueueTask(currentTask);
break;
}
}
DataLog cacheTask = operateTaskMap.get(cid);
if(currentTask != null){
if(cacheTask == null || !cacheTask.getId().equals(currentTask.getId())){
updateCurrentTask(currentTask.getCid(),currentTask);
}
}
}
}
} catch (Exception e) {
log.error("方仓到位时出错",e);
}
}
}
if(statusBean.getStatus() == StorageConstants.STATUS.READY){
DataLog currentTask = getCurrentTask(cid);
if(currentTask != null){
//当前有任务未完成,暂不执行其他任务
return statusBean;
}
for (DataLog task : queueTasks) {
if (cid.equals(task.getCid()) && task.isWait()) {
StoragePos pos = storagePosManager.getByPosName(task.getPosName());
if(pos.isExpandPos()){
continue;
}
if(task.isPutInTask()){
statusBean.setOp(StorageConstants.OP.PUT_IN);
statusBean.addData("door",task.getSubSourceId());
}else if(task.isCheckOutTask()){
statusBean.setOp(StorageConstants.OP.CHECKOUT);
}
statusBean.addPosInfo("",pos.getPosName(),pos.getW(),pos.getH(),false);
log.info("发送["+task.getType()+"]任务["+pos.getPosName()+"]到客户端door="+task.getSubSourceId());
task.setStatus(StorageConstants.OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(task);
dataLogDao.save(task);
return statusBean;
}
}
}
return statusBean;
}
}
...@@ -148,6 +148,9 @@ storage.type.online=Inline System ...@@ -148,6 +148,9 @@ storage.type.online=Inline System
storage.type.batch=Batch storage.type.batch=Batch
storage.type.shelf=Shelf storage.type.shelf=Shelf
storage.type.cabinet=Cabinet storage.type.cabinet=Cabinet
storage.type.solderPaste=SMD-SP
storage.type.smdVl=SMD-VL
storage.type.smdXl=SMD-XL
storage.compatibility=Compatibility storage.compatibility=Compatibility
storage.enable=Enable storage.enable=Enable
storage.enable.yes=Yes storage.enable.yes=Yes
......
...@@ -433,3 +433,6 @@ order.close.notExist=The order of [{0}] is not found. ...@@ -433,3 +433,6 @@ order.close.notExist=The order of [{0}] is not found.
order.close=Close order.close=Close
order.out.failed=Can not execute task order.out.failed=Can not execute task
order.out.notFound=The order info was not found order.out.notFound=The order info was not found
storage.type.smdXl=SMD-XL
storage.type.smdVl=SMD-VL
storage.type.solderPaste=SMD-SP
...@@ -429,4 +429,7 @@ order.close.empty=\u5DE5\u5355\u53F7\u4E0D\u80FD\u4E3A\u7A7A ...@@ -429,4 +429,7 @@ order.close.empty=\u5DE5\u5355\u53F7\u4E0D\u80FD\u4E3A\u7A7A
order.close.notExist=\u672A\u627E\u5230\u5DE5\u5355[{0}] order.close.notExist=\u672A\u627E\u5230\u5DE5\u5355[{0}]
order.close=\u5173\u95ED order.close=\u5173\u95ED
order.out.failed=\u65E0\u6CD5\u6267\u884C\u5DE5\u5355\u8865\u6599\u4EFB\u52A1 order.out.failed=\u65E0\u6CD5\u6267\u884C\u5DE5\u5355\u8865\u6599\u4EFB\u52A1
order.out.notFound=\u672A\u627E\u5230\u5DE5\u5355\u4FE1\u606F
\ No newline at end of file \ No newline at end of file
order.out.notFound=\u672A\u627E\u5230\u5DE5\u5355\u4FE1\u606F
storage.type.smdXl=SMD-XL
storage.type.smdVl=SMD-VL
storage.type.solderPaste=SMD-SP
\ No newline at end of file \ No newline at end of file
...@@ -429,4 +429,7 @@ order.close.empty=\u5DE5\u5355\u53F7\u4E0D\u80FD\u4E3A\u7A7A ...@@ -429,4 +429,7 @@ order.close.empty=\u5DE5\u5355\u53F7\u4E0D\u80FD\u4E3A\u7A7A
order.close.notExist=\u672A\u627E\u5230\u5DE5\u5355[{0}] order.close.notExist=\u672A\u627E\u5230\u5DE5\u5355[{0}]
order.close=\u5173\u95ED order.close=\u5173\u95ED
order.out.failed=\u65E0\u6CD5\u6267\u884C\u5DE5\u5355\u8865\u6599\u4EFB\u52A1 order.out.failed=\u65E0\u6CD5\u6267\u884C\u5DE5\u5355\u8865\u6599\u4EFB\u52A1
order.out.notFound=\u672A\u627E\u5230\u5DE5\u5355\u4FE1\u606F
\ No newline at end of file \ No newline at end of file
order.out.notFound=\u672A\u627E\u5230\u5DE5\u5355\u4FE1\u606F
storage.type.smdXl=SMD-XL
storage.type.smdVl=SMD-VL
storage.type.solderPaste=SMD-SP
\ No newline at end of file \ No newline at end of file
...@@ -175,7 +175,7 @@ ...@@ -175,7 +175,7 @@
${pos.barcode.partNumber} ${pos.barcode.partNumber}
</display:column> </display:column>
<display:column property="barcode.provider" titleKey="barcode.provider"/> <display:column property="barcode.provider" titleKey="barcode.provider" sortProperty="barcode.provider" sortable="true"/>
<%--<display:column titleKey="inOutList.type">--%> <%--<display:column titleKey="inOutList.type">--%>
<%--<c:if test="${pos.barcode.type == 0 || empty pos.barcode.type}"><fmt:message key="inOutList.type.component"/></c:if>--%> <%--<c:if test="${pos.barcode.type == 0 || empty pos.barcode.type}"><fmt:message key="inOutList.type.component"/></c:if>--%>
......
...@@ -190,6 +190,10 @@ ...@@ -190,6 +190,10 @@
<c:set var="detailUrl" value="${ctx}/storage/vertical/${storage.cid}"/> <c:set var="detailUrl" value="${ctx}/storage/vertical/${storage.cid}"/>
</c:if> </c:if>
<c:if test="${storage.smdXl}">
<c:set var="detailUrl" value="${ctx}/storage/xl/${storage.cid}"/>
</c:if>
<div class="portlet box green-haze tasks-widget"> <div class="portlet box green-haze tasks-widget">
<c:choose> <c:choose>
<c:when test="${storage.shelf || storage.cabinet || storage.accShelf || storage.virtual || storage.codeShelf}"> <c:when test="${storage.shelf || storage.cabinet || storage.accShelf || storage.virtual || storage.codeShelf}">
...@@ -725,7 +729,7 @@ ...@@ -725,7 +729,7 @@
options['onClose']=cancelTask; options['onClose']=cancelTask;
operate = '<a class="btn btn-xs default" href="#" onclick=cancelTask('+data[item].id+');><i class="fa fa-trash-o"></i> ${cancelTask_label} </a>'; operate = '<a class="btn btn-xs default" href="#" onclick=cancelTask('+data[item].id+');><i class="fa fa-trash-o"></i> ${cancelTask_label} </a>';
}else{ }else{
options['onClose']=hideTask; //options['onClose']=hideTask;
} }
var sourceStr = ""; var sourceStr = "";
......
...@@ -241,7 +241,7 @@ ...@@ -241,7 +241,7 @@
<div class="page-footer-inner"> <div class="page-footer-inner">
2016&copy; <a href="${ctx}/updateHistory.html">SMD BOX</a> 2016&copy; <a href="${ctx}/updateHistory.html">SMD BOX</a>
</div> </div>
<span class="right" style="color: #a3a3a3;">Version: 2020.09.09</span> <span class="right" style="color: #a3a3a3;">Version: 2020.09.17</span>
<div class="scroll-to-top"> <div class="scroll-to-top">
<i class="icon-arrow-up"></i> <i class="icon-arrow-up"></i>
</div> </div>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!