Commit 9794c7a0 sunke

垂直货柜

1 个父辈 55bc85f5
正在显示 28 个修改的文件 包含 480 行增加198 行删除
package com.myproject.bean.json;
import com.myproject.bean.update.DataLog;
import com.myproject.bean.update.StoragePos;
import java.util.List;
/**
* Created by sunke on 2020/7/27.
*/
public class VerticalBoxOperateBean {
private DataLog currentTask;
private List<StoragePos> extendPosList;
public DataLog getCurrentTask() {
return currentTask;
}
public void setCurrentTask(DataLog currentTask) {
this.currentTask = currentTask;
}
public List<StoragePos> getExtendPosList() {
return extendPosList;
}
public void setExtendPosList(List<StoragePos> extendPosList) {
this.extendPosList = extendPosList;
}
}
...@@ -628,6 +628,13 @@ public class Barcode extends BaseMongoBean { ...@@ -628,6 +628,13 @@ public class Barcode extends BaseMongoBean {
return DateUtil.toDateTimeString(needOutDate); return DateUtil.toDateTimeString(needOutDate);
} }
public String getExpireDateStr(){
if(expireDate != null){
return DateUtil.toDateString(expireDate);
}
return "";
}
// public void setNoChangeField(Barcode oldBarcode){ // public void setNoChangeField(Barcode oldBarcode){
// if(oldBarcode != null){ // if(oldBarcode != null){
// this.expireDate = oldBarcode.getExpireDate(); // this.expireDate = oldBarcode.getExpireDate();
......
...@@ -187,6 +187,15 @@ public class Storage extends BaseMongoBean { ...@@ -187,6 +187,15 @@ public class Storage extends BaseMongoBean {
} }
/** /**
* 是否是垂直货柜
*/
public boolean isVerticalBox(){
return StorageConstants.TYPE.VERTICALBOX.name().equals(type);
}
/**
* 是否是锡膏料仓 * 是否是锡膏料仓
*/ */
public boolean isSolderPaste(){ public boolean isSolderPaste(){
......
...@@ -2,6 +2,7 @@ package com.myproject.bean.update; ...@@ -2,6 +2,7 @@ package com.myproject.bean.update;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.myproject.bean.BaseMongoBean; import com.myproject.bean.BaseMongoBean;
import com.myproject.util.StorageConstants;
import java.util.List; import java.util.List;
...@@ -15,6 +16,11 @@ public class StoragePos extends BaseMongoBean { ...@@ -15,6 +16,11 @@ public class StoragePos extends BaseMongoBean {
private String posName; private String posName;
/** /**
* 扩展库位的主库位
*/
private String hostPosId;
/**
* 该仓位是否限制物编,虚拟仓使用 * 该仓位是否限制物编,虚拟仓使用
*/ */
private List<String> limitPnList; private List<String> limitPnList;
...@@ -217,4 +223,16 @@ public class StoragePos extends BaseMongoBean { ...@@ -217,4 +223,16 @@ public class StoragePos extends BaseMongoBean {
public void setWarmPos(boolean warmPos) { public void setWarmPos(boolean warmPos) {
this.warmPos = warmPos; this.warmPos = warmPos;
} }
public boolean isExpandPos(){
return !Strings.isNullOrEmpty(hostPosId);
}
public String getHostPosId() {
return hostPosId;
}
public void setHostPosId(String hostPosId) {
this.hostPosId = hostPosId;
}
} }
...@@ -38,6 +38,8 @@ public interface IStoragePosManager extends IManager<StoragePos> { ...@@ -38,6 +38,8 @@ public interface IStoragePosManager extends IManager<StoragePos> {
StoragePos getByBarcodeId(String barcodeId); StoragePos getByBarcodeId(String barcodeId);
List<StoragePos> findEnablePosList(String storageId);
void clearPos(String storageId); void clearPos(String storageId);
StoragePos getEmptyPosByPartNumber(String storageId, String partNumber, Collection<String> excludePosIds); StoragePos getEmptyPosByPartNumber(String storageId, String partNumber, Collection<String> excludePosIds);
...@@ -88,6 +90,10 @@ public interface IStoragePosManager extends IManager<StoragePos> { ...@@ -88,6 +90,10 @@ public interface IStoragePosManager extends IManager<StoragePos> {
StoragePos getByPosName(String posName); StoragePos getByPosName(String posName);
StoragePos getByHostPosId(String hostPosId, String pn);
List<StoragePos> getExtendPosList(String hostPosId);
List<StoragePos> findByLabel(String storageId, String labelStr); List<StoragePos> findByLabel(String storageId, String labelStr);
void insertAll(List<StoragePos> posList); void insertAll(List<StoragePos> posList);
......
...@@ -62,9 +62,9 @@ public class BarcodeManagerImpl implements IBarcodeManager { ...@@ -62,9 +62,9 @@ public class BarcodeManagerImpl implements IBarcodeManager {
if(barcode.getMaxStorageTime() <= 0){ if(barcode.getMaxStorageTime() <= 0){
barcode.setMaxStorageTime(component.getMaxStorageTime()); barcode.setMaxStorageTime(component.getMaxStorageTime());
} }
if(barcode.getAmount() == 1){ // if(barcode.getAmount() == 1){
barcode.setAmount(component.getAmount()); // barcode.setAmount(component.getAmount());
} // }
barcode.setType(component.getType()); barcode.setType(component.getType());
barcode.setWarmTime(component.getWarmTime()); barcode.setWarmTime(component.getWarmTime());
barcode.setMixTime(component.getMixTime()); barcode.setMixTime(component.getMixTime());
......
...@@ -48,6 +48,15 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -48,6 +48,15 @@ public class StoragePosManagerImpl implements IStoragePosManager {
} }
@Override @Override
public List<StoragePos> findEnablePosList(String storageId) {
Criteria c = Criteria.where("storageId").is(storageId).and("enabled").is(true);//可用
Query query = new Query(c);
query.with(new Sort(Sort.Direction.ASC, "posName"));
List<StoragePos> storagePosList = storagePosDao.findByQuery(query);
return storagePosList;
}
@Override
public StoragePos get(String id) { public StoragePos get(String id) {
return storagePosDao.findOneById(id); return storagePosDao.findOneById(id);
} }
...@@ -466,6 +475,20 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -466,6 +475,20 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return storagePosDao.findOneByCondition(new String[]{"posName"}, new String[]{posName}); return storagePosDao.findOneByCondition(new String[]{"posName"}, new String[]{posName});
} }
@Override
public StoragePos getByHostPosId(String hostPosId, String pn){
return storagePosDao.findOneByCondition(new String[]{"hostPosId","barcode.partNumber"}, new String[]{hostPosId, pn});
}
@Override
public List<StoragePos> getExtendPosList(String hostPosId){
Criteria c = Criteria.where("hostPosId").is(hostPosId)
.and("enabled").is(true)//可用
;
Query q = new Query(c);
return storagePosDao.findByQuery(q);
}
/** /**
*查找一个库位可以放多种料的库位 *查找一个库位可以放多种料的库位
*/ */
......
...@@ -25,7 +25,55 @@ import java.util.Date; ...@@ -25,7 +25,55 @@ import java.util.Date;
* MSL 为MSL等级 * MSL 为MSL等级
* *
* *
* 其中必须含有PN和 RI, QTY为空时使用产品档案的封装数量,如果字段前或者后有无用字符,可使用 x(一个字符) 替代 *
*
*
*
*
*
*
*条码规则,可用字段有:
* PN为物料编号即 PartNumber
* RI 为唯一码即ReelId,[RI]为所有字符串作为一个唯一码
* QTY 为数量
* PRODATE为生产日期xxPRODATEyyyyMMdd
* EXPDATE为过期日期xxxEXPDATEyyyyMMdd
* SP 为供应商,
* BATCH 为批次
* MSL 为MSL等级
* 其中必须含有PN和 RI, QTY为空时使用产品档案的封装数量
*
* 前面一位数字大于0表示去除前面第n位, -1表示不去除,并且对字段长数不做限制, 等于0表示不去除,但对字段长度做限制
* 中间一位数字0表示为变长,正值表示从前面截取,负值表示从后面开始截取,前缀和后缀及长度都有效时,需要验证字串总长度
* 后面一位数字大于0表示去除后面第n位, -1表示不去除,并且对字段长数不做限制, 等于0表示不去除,但对字段长度做限制
*
* 例一: QTY[-1,5,-1]取前5位作为数量
* 例二: QTY[-1,-5,-1]取后5位作为数量
* 例三: QTY[1,5,-1]去除前面第1位后,取前5位作为数量
* 例四: QTY[-1,-5,1]去除后面第1位后,取后5位作为数量
* 例五: QTY[1,0,-1]去除前面1位后,剩余的作为数量
* 例六: QTY[0,5,3]去除前面0位和后面3位,剩余的5位作为数量,也就是说只能为8位
*
* 示例:
* 规则为: [RI]_PN_PRODATEyyMMdd_QTY[0:5:4]
* 条码: 4500065747_CS000069_180101_030000041
* 解析后: RI=4500065747_CS000069_180101_030000041
* PN=CS000069
* 生产日期为: 2018年1月1日
* 数量为:去掉前面0位,去掉后面4位,剩下03000正好为5位,所以数量是3000,
* 如果条码变为4500065747_CS000069_180101_0300000410则会提示不合规则,因为去掉前面0位,去掉后面4位,剩下的030004是6位,不是5位
*
* 示例:
* 规则为: BATCH;PRODATEyyyyMMdd[1:8:-1];PN[1:12:-1]SP[13:5:-1]QTY[-1:-5:-1];RI
* 条码为: L00002019090199951797;E20190901 0365;B8C.R2003.V81506072019090103000;R506072019102200356
* 解析后: PN=8C.R2003.V81
* RI=R506072019102200356
* QTY=3000
* BATCH=L00002019090199951797
* PRODATE=2019年9月1日
* 供应商=50607
*
*
* *
* 1@2@3@PN@5@6@7@8@9@10@11@12@13@14@15@16@RI@18@19@20@21@22@23@24 * 1@2@3@PN@5@6@7@8@9@10@11@12@13@14@15@16@RI@18@19@20@21@22@23@24
* [)>@06@12S0002@P5292001000@1P1690215@31P1690215@12V527973628@10VCHN-YANTAI@2P@20P@6D20170626@14D20171223@30PY@ZN@K0@16K0@V815@3SB370000000EZZ@Q500GRM000@20T1@1TMT72543954@2T@1Z@@ * [)>@06@12S0002@P5292001000@1P1690215@31P1690215@12V527973628@10VCHN-YANTAI@2P@20P@6D20170626@14D20171223@30PY@ZN@K0@16K0@V815@3SB370000000EZZ@Q500GRM000@20T1@1TMT72543954@2T@1Z@@
...@@ -203,15 +251,7 @@ public class BarcodeRule { ...@@ -203,15 +251,7 @@ public class BarcodeRule {
private int index = -1; private int index = -1;
//前缀(-1时表示没有前缀)如果要验证总长度,可设置为0 //前缀(-1时表示没有前缀)如果要验证总长度,可设置为0
private int prefix = -1; private int prefix = -1;
/**
*长度,0表示为变长,正值表示从前面截取,负值表示从后面开始截取,前缀和后缀及长度都有效时,需要验证字串总长度
* 例一: QTY[0,5,0]取前5位作为数量
* 例二: QTY[0,-5,0]取后5位作为数量
* 例三: QTY[1,5,0]去除前面第1位后,取前5位作为数量
* 例四: QTY[0,-5,1]去除后面第1位后,取后5位作为数量
* 例五: QTY[1,0,0]去除前面1位后,剩余的作为数量
* 例六: QTY[0,5,3]去除前面0位和后面3位,剩余的5位作为数量,也就是说只能为8位
*/
private int length = 0; private int length = 0;
//后缀(-1时表示没有前缀)如果要验证总长度,可设置为0 //后缀(-1时表示没有前缀)如果要验证总长度,可设置为0
private int suffix = -1; private int suffix = -1;
...@@ -577,14 +617,18 @@ public class BarcodeRule { ...@@ -577,14 +617,18 @@ public class BarcodeRule {
// //
// rule = "PN[0:8:-1]QTY[8:5:-1]RI[13:7:-1]EXPDATEyyyyMMdd[20:8:-1]MSL[28:4:-1]BATCH[32:4:-1]SP[36:4:-1]"; // rule = "PN[0:8:-1]QTY[8:5:-1]RI[13:7:-1]EXPDATEyyyyMMdd[20:8:-1]MSL[28:4:-1]BATCH[32:4:-1]SP[36:4:-1]";
// //佳世达 // //佳世达
// rule ="BATCH;PRODATEyyyyMMdd[1:8:-1]EXPD[-1:-4:-1];PN[1:12:-1]SP[13:5:-1]QTY[-1:-5:-1];RI"; rule ="BATCH;PRODATEyyyy-MM-dd[1:10:-1]EXPD[-1:-4:-1];PN[1:12:-1]SP[13:5:-1]QTY[-1:-5:-1];RI";
// codeStr = "L00002019090199951797;E20190901 0365;B8C.R2003.V81506072019090103000;R506072019102200356"; codeStr = "L00002019090199951797;E2019-09-01 0365;B8C.R2003.V81506072019090103000;R506072019102200356";
//rule = "1;PN;BATCH;PRODATEyyyyMMdd;EXPDATEyyyyMMdd;QTY;RI";
//codeStr = ";RMK1608-K-B-10300;7B16081217B0;20200506;20250203;5000;000";
//rule = "1;2;PN;BATCH[2:0:-1];5;6;EXPDATEyyyy/MM/dd[2:0:8];QTY[2:0:-1];8;9;10;RI[2:0:-1]";
//codeStr = "锘緿M;IN13浠跺\uE69C缁勮灪涓濇壒09913涓栬揪;BM;PH11A-ZZG02;DDDDMO180525;GG624-71;SX2019/8/25 0:00:00;SL2;HG;DL;ZP;QT90CECB112D1448DA91F485D0AA984B08";
rule = "1;PN;BATCH;PRODATEyyyyMMdd;EXPDATEyyyyMMdd;QTY;RI"; //rule = "1>PN[-1:0:6]>3>RI[-1:0:6]";
codeStr = ";RMK1608-K-B-10300;7B16081217B0;20200506;20250203;5000;000"; //codeStr = "<ckdh>CC200612000194</ckdh><jybh>ADK20-\n" +"JY19060012~/jybh>";
rule = "1;2;PN;BATCH[2:0:-1];5;6;EXPDATEyyyy/MM/dd[2:0:8];QTY[2:0:-1];8;9;10;RI[2:0:-1]";
codeStr = "锘緿M;IN13浠跺\uE69C缁勮灪涓濇壒09913涓栬揪;BM;PH11A-ZZG02;DDDDMO180525;GG624-71;SX2019/8/25 0:00:00;SL2;HG;DL;ZP;QT90CECB112D1448DA91F485D0AA984B08";
BarcodeRule br = BarcodeRule.newRule(rule); BarcodeRule br = BarcodeRule.newRule(rule);
Barcode b = br.toCodeBean(codeStr).getBarcode(); Barcode b = br.toCodeBean(codeStr).getBarcode();
if(b != null){ if(b != null){
......
...@@ -223,7 +223,6 @@ public class StorageConstants { ...@@ -223,7 +223,6 @@ public class StorageConstants {
public final static int MIX_END = 22; public final static int MIX_END = 22;
} }
/** /**
* 料仓类型:0单台自动料仓,1手动料仓2流水线料仓 * 料仓类型:0单台自动料仓,1手动料仓2流水线料仓
*/ */
...@@ -288,6 +287,12 @@ public class StorageConstants { ...@@ -288,6 +287,12 @@ public class StorageConstants {
*/ */
SOLDERPASTE("storage.type.solderPaste"), SOLDERPASTE("storage.type.solderPaste"),
/**
* 11 垂直货柜
*/
VERTICALBOX("storage.type.verticalBox")
; ;
private String key; private String key;
......
...@@ -204,7 +204,7 @@ public class AccShelfController extends BaseController { ...@@ -204,7 +204,7 @@ public class AccShelfController extends BaseController {
List<Storage> storageList = Lists.newArrayList(storage); List<Storage> storageList = Lists.newArrayList(storage);
StoragePos pos = taskService.findEmptyPosForPutIn(storageList, barcode); StoragePos pos = taskService.findEmptyPosForPutIn(storageList, barcode);
int delayCloseTime = 30000; int delayCloseTime = 30000;
String color = "red"; String color = "green";
if(pos != null){ if(pos != null){
log.info(barcode.getPartNumber()+" [ "+barcode.getBarcode()+" ] " + "入库到:" + storage.getName()+"["+cid+"] " + pos.getPosName()); log.info(barcode.getPartNumber()+" [ "+barcode.getBarcode()+" ] " + "入库到:" + storage.getName()+"["+cid+"] " + pos.getPosName());
taskService.addTaskToFinished(pos,barcode,null); taskService.addTaskToFinished(pos,barcode,null);
......
...@@ -141,10 +141,12 @@ public class StoragePosFindController extends BaseSearchController { ...@@ -141,10 +141,12 @@ public class StoragePosFindController extends BaseSearchController {
} }
int inactionDay = dataCache.getSettings().getInactionDay(); int inactionDay = dataCache.getSettings().getInactionDay();
if(inactionDay <=0){
inactionDay = 3; if(inactionDay > 0){
Date inactionDate = DateUtil.addDays(new Date(), -inactionDay);
request.setAttribute("inactionDate",inactionDate);
} }
request.setAttribute("inactionDay",inactionDay);
String singeOutStr = request.getParameter("singleOut"); String singeOutStr = request.getParameter("singleOut");
boolean isSingleOut = false; boolean isSingleOut = false;
......
...@@ -44,6 +44,12 @@ public interface ITaskService { ...@@ -44,6 +44,12 @@ public interface ITaskService {
*/ */
Collection<DataLog> getQueueTasks(); Collection<DataLog> getQueueTasks();
Collection<DataLog> getQueueTasks(String cid);
void updateQueueTask(DataLog task);
void moveTaskToFinished(DataLog task);
List<DataLog> getFinishedTasks(); List<DataLog> getFinishedTasks();
Exception getServerException(String cid); Exception getServerException(String cid);
......
package com.myproject.webapp.controller.webService.boxHandler;
import com.google.common.base.Strings;
import com.myproject.bean.search.PageList;
import com.myproject.bean.update.*;
import com.myproject.bean.utils.BoxStatusBean;
import com.myproject.bean.utils.StatusBean;
import com.myproject.dao.mongo.IBarcodeDao;
import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.exception.ValidateException;
import com.myproject.manager.IBarcodeManager;
import com.myproject.manager.IComponentManager;
import com.myproject.manager.IStoragePosManager;
import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.webService.DataCache;
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.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* 垂直货柜处理类
*/
@Service
public class VerticalBoxHandler {
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);
if(queueTasks.isEmpty()){
return statusBean;
}
if(statusBean.getStatus() == StorageConstants.STATUS.READY){
for (DataLog task : queueTasks) {
if (cid.equals(task.getCid()) && task.isWait()) {
if(task.isPutInTask()){
statusBean.setOp(StorageConstants.OP.PUT_IN);
}else if(task.isCheckOutTask()){
statusBean.setOp(StorageConstants.OP.CHECKOUT);
}
StoragePos pos = storagePosManager.getByPosName(task.getPosName());
if(pos.isExpandPos()){
pos = storagePosManager.get(pos.getHostPosId());
}
statusBean.addPosInfo("",pos.getPosName(),pos.getW(),pos.getH(),false);
log.info("发送到["+task.getType()+"]任务["+pos.getPosName()+"]到客户端");
task.setStatus(StorageConstants.OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(task);
updateCurrentTask(task.getCid(),task);
dataLogDao.save(task);
return statusBean;
}
}
}
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,不需要处理
boolean needShow = false;
if (StorageConstants.BOX_STATUS.IN_FINISHED == status) {//入仓完成
needShow = true;
//弹出入库框
} else if (StorageConstants.BOX_STATUS.OUT_FINISHED == status) {//出仓完成
//弹出出库框
needShow = true;
}
if(needShow){
DataLog currentTask = null;
for (DataLog queueTask : queueTasks) {
if(queueTask.isExecuting() && queueTask.getPosName().equals(posName)){
currentTask = queueTask;
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);
}
}
}
return statusBean;
}
}
...@@ -100,8 +100,7 @@ icon.email=E-Mail ...@@ -100,8 +100,7 @@ icon.email=E-Mail
icon.email.img=/images/iconEmail.gif icon.email.img=/images/iconEmail.gif
icon.warning=Warning icon.warning=Warning
icon.warning.img=/images/iconWarning.gif icon.warning.img=/images/iconWarning.gif
date.format=MM/dd/yyyy date.format=yyyy-MM-dd
search.enterTerms=Enter search terms...
delete.confirm=Are you sure you want to delete this {0}? delete.confirm=Are you sure you want to delete this {0}?
# -- for calendar widget: bootstrap-datepicker -- # -- for calendar widget: bootstrap-datepicker --
#See: https://github.com/eternicode/bootstrap-datepicker#readme #See: https://github.com/eternicode/bootstrap-datepicker#readme
......
...@@ -100,8 +100,7 @@ icon.email=E-Mail ...@@ -100,8 +100,7 @@ icon.email=E-Mail
icon.email.img=/images/iconEmail.gif icon.email.img=/images/iconEmail.gif
icon.warning=Warning icon.warning=Warning
icon.warning.img=/images/iconWarning.gif icon.warning.img=/images/iconWarning.gif
date.format=MM/dd/yyyy date.format=yyyy-MM-dd
search.enterTerms=Enter search terms...
delete.confirm=Are you sure you want to delete this {0}? delete.confirm=Are you sure you want to delete this {0}?
# -- for calendar widget: bootstrap-datepicker -- # -- for calendar widget: bootstrap-datepicker --
#See: https://github.com/eternicode/bootstrap-datepicker#readme #See: https://github.com/eternicode/bootstrap-datepicker#readme
......
...@@ -83,7 +83,7 @@ icon.email=E-Mail ...@@ -83,7 +83,7 @@ icon.email=E-Mail
icon.email.img=/images/iconEmail.gif icon.email.img=/images/iconEmail.gif
icon.warning=\u8B66\u544A icon.warning=\u8B66\u544A
icon.warning.img=/images/iconWarning.gif icon.warning.img=/images/iconWarning.gif
date.format=MM/dd/yyyy date.format=yyyy-MM-dd
# -- role form -- # -- role form --
roleForm.name=\u540D\u79F0 roleForm.name=\u540D\u79F0
......
...@@ -83,7 +83,7 @@ icon.email=E-Mail ...@@ -83,7 +83,7 @@ icon.email=E-Mail
icon.email.img=/images/iconEmail.gif icon.email.img=/images/iconEmail.gif
icon.warning=\u8B66\u544A icon.warning=\u8B66\u544A
icon.warning.img=/images/iconWarning.gif icon.warning.img=/images/iconWarning.gif
date.format=MM/dd/yyyy date.format=yyyy-MM-dd
# -- role form -- # -- role form --
roleForm.name=\u540D\u79F0 roleForm.name=\u540D\u79F0
......
...@@ -110,6 +110,7 @@ barcode.error.notExist={0} does not exist ...@@ -110,6 +110,7 @@ barcode.error.notExist={0} does not exist
barcode.error.inStorage={0} in the storage barcode.error.inStorage={0} in the storage
barcode.error.slotExist=Component is not in the storage barcode.error.slotExist=Component is not in the storage
barcode.memo=Memo barcode.memo=Memo
barcode.lastDate=Put In Date
storage.search.subtitle=Storage Search storage.search.subtitle=Storage Search
storage.item.name=Storage storage.item.name=Storage
...@@ -131,6 +132,15 @@ storage.status.10=Materail Retrieval Completed ...@@ -131,6 +132,15 @@ storage.status.10=Materail Retrieval Completed
storage.status.11=Material Retrieval End storage.status.11=Material Retrieval End
storage.status.12=Material transfering storage.status.12=Material transfering
storage.status.13=System resetting storage.status.13=System resetting
storage.status.14=Fetching for rewarm
storage.status.15=rewarm fetch finished
storage.status.16=putting for rewarm
storage.status.17=rewarm put finished
storage.status.18=Fetching for stir
storage.status.19=Waiting to stir
storage.status.20=stirring
storage.status.21=Backing to position after stirring
storage.status.22=finish stirring
sotrage.status.999=Offline sotrage.status.999=Offline
storage.type=Type storage.type=Type
storage.type.auto=Auto storage.type.auto=Auto
...@@ -408,4 +418,16 @@ error.barcode.errorSize=x The reel has no size. ...@@ -408,4 +418,16 @@ error.barcode.errorSize=x The reel has no size.
error.storage.noPosFind=No availble position is found. error.storage.noPosFind=No availble position is found.
msg.line.putIn=Put [{0}] into [{1}] msg.line.putIn=Put [{0}] into [{1}]
delete.confirm=Are you sure to delete? delete.confirm=Are you sure to delete?
barcode.error.used=Barcode is used.
\ No newline at end of file \ No newline at end of file
barcode.error.used=Barcode is used.
solderBox.btn.closeDoor=Close Door
solderBox.btn.openDoor=Open Door
solderBox.task.outTime=Estimated shipping time
solder.status.1=Refrigerated
solder.status.2=Rewarming
solder.status.3=Waiting to stir
solder.status.4=Strring
solder.status.5=Waiting shipment
solder.status.6=Outting
solder.status.7=Retreat storage
\ No newline at end of file \ No newline at end of file
...@@ -404,3 +404,23 @@ settings.remind.title=Remind Setting ...@@ -404,3 +404,23 @@ settings.remind.title=Remind Setting
settings.remind.deadday=days dead metiral remind settings.remind.deadday=days dead metiral remind
order.num.modify=Order Qty Modify order.num.modify=Order Qty Modify
order.modify.tip=Modify Qty to\: current quantity times order.modify.tip=Modify Qty to\: current quantity times
barcode.lastDate=Put In Date
solderBox.btn.closeDoor=Close Door
solderBox.btn.openDoor=Open Door
solderBox.task.outTime=Estimated shipping time
storage.status.14=Fetching for rewarm
storage.status.15=rewarm fetch finished
storage.status.16=putting for rewarm
storage.status.17=rewarm put finished
storage.status.18=Fetching for stir
storage.status.19=Waiting to stir
storage.status.20=stirring
storage.status.21=Backing to position after stirring
storage.status.22=finish stirring
solder.status.1=Refrigerated
solder.status.2=Rewarming
solder.status.3=Waiting to stir
solder.status.4=Strring
solder.status.5=Waiting shipment
solder.status.6=Outting
solder.status.7=Retreat storage
...@@ -399,4 +399,24 @@ settings.remind.title=\u63D0\u9192\u8BBE\u7F6E ...@@ -399,4 +399,24 @@ settings.remind.title=\u63D0\u9192\u8BBE\u7F6E
settings.remind.deadday=\u5929\u524D\u5446\u6EDE\u7269\u6599\u63D0\u9192 settings.remind.deadday=\u5929\u524D\u5446\u6EDE\u7269\u6599\u63D0\u9192
barcode.error.used=\u5DF2\u88AB\u4F7F\u7528\u7684\u6761\u7801\u65E0\u6CD5\u5220\u9664 barcode.error.used=\u5DF2\u88AB\u4F7F\u7528\u7684\u6761\u7801\u65E0\u6CD5\u5220\u9664
order.num.modify=\u5DE5\u5355\u6570\u91CF\u4FEE\u6539 order.num.modify=\u5DE5\u5355\u6570\u91CF\u4FEE\u6539
order.modify.tip=\u4FEE\u6539\u5DE5\u5355\u6570\u91CF\u4E3A\: \u5F53\u524D\u6570\u91CF x
\ No newline at end of file \ No newline at end of file
order.modify.tip=\u4FEE\u6539\u5DE5\u5355\u6570\u91CF\u4E3A\: \u5F53\u524D\u6570\u91CF x
barcode.lastDate=\u5165\u5E93\u65F6\u95F4
solderBox.btn.closeDoor=\u6238\u3092\u9589\u3081\u308B
solderBox.btn.openDoor=\u30C9\u30A2\u3092\u958B\u3051\u308B
solderBox.task.outTime=\u767A\u9001\u307E\u3067\u306E\u6642\u9593\u306E\u76EE\u5B89
storage.status.14=\u518D\u6696\u3092\u53D6\u308B\u3053\u3068
storage.status.15=\u6E29\u3081\u76F4\u3057
storage.status.16=\u6E29\u3081\u7F6E\u304D
storage.status.17=\u6E29\u3081\u76F4\u3059
storage.status.18=\u64B9\u62CC\u306E\u305F\u3081\u306E\u30D5\u30A7\u30C3\u30C1\u30F3\u30B0
storage.status.19=\u652A\u62CC\u3092\u5F85\u3063\u3066\u3044\u308B
storage.status.20=\u9032\u884C\u4E2D\u306E\u30DF\u30AD\u30B7\u30F3\u30B0
storage.status.21=\u30DF\u30AD\u30B7\u30F3\u30B0\u304C\u7D42\u308F\u3063\u3066\u5009\u5EAB\u306B\u623B\u308B
storage.status.22=\u304B\u304D\u307E\u308F\u3059
solder.status.1=\u51B7\u8535
solder.status.2=\u6E29\u6696\u5316
solder.status.3=\u652A\u62CC\u3092\u5F85\u3063\u3066\u3044\u308B
solder.status.4=\u9032\u884C\u4E2D\u306E\u30DF\u30AD\u30B7\u30F3\u30B0
solder.status.5=\u5165\u8377\u5F85\u3061
solder.status.6=\u4FDD\u7BA1\u5834\u6240\u306E\u5916
solder.status.7=\u30EA\u30C8\u30EA\u30FC\u30C8\u53CE\u7D0D
\ No newline at end of file \ No newline at end of file
...@@ -399,4 +399,24 @@ settings.remind.title=\u63D0\u9192\u8BBE\u7F6E ...@@ -399,4 +399,24 @@ settings.remind.title=\u63D0\u9192\u8BBE\u7F6E
settings.remind.deadday=\u5929\u524D\u5446\u6EDE\u7269\u6599\u63D0\u9192 settings.remind.deadday=\u5929\u524D\u5446\u6EDE\u7269\u6599\u63D0\u9192
barcode.error.used=\u5DF2\u88AB\u4F7F\u7528\u7684\u6761\u7801\u65E0\u6CD5\u5220\u9664 barcode.error.used=\u5DF2\u88AB\u4F7F\u7528\u7684\u6761\u7801\u65E0\u6CD5\u5220\u9664
order.num.modify=\u5DE5\u5355\u6570\u91CF\u4FEE\u6539 order.num.modify=\u5DE5\u5355\u6570\u91CF\u4FEE\u6539
order.modify.tip=\u4FEE\u6539\u5DE5\u5355\u6570\u91CF\u4E3A\: \u5F53\u524D\u6570\u91CF x
\ No newline at end of file \ No newline at end of file
order.modify.tip=\u4FEE\u6539\u5DE5\u5355\u6570\u91CF\u4E3A\: \u5F53\u524D\u6570\u91CF x
barcode.lastDate=\u5165\u5E93\u65F6\u95F4
solderBox.btn.closeDoor=\u5173\u95E8
solderBox.btn.openDoor=\u5F00\u95E8
solderBox.task.outTime=\u9884\u8BA1\u51FA\u5E93\u65F6\u95F4
storage.status.14=\u56DE\u6E29\u53D6\u6599\u4E2D
storage.status.15=\u56DE\u6E29\u53D6\u6599\u5B8C\u6210
storage.status.16=\u56DE\u6E29\u653E\u6599\u4E2D
storage.status.17=\u56DE\u6E29\u653E\u6599\u5B8C\u6210
storage.status.18=\u6405\u62CC\u53D6\u6599\u4E2D
storage.status.19=\u7B49\u5F85\u6405\u62CC
storage.status.20=\u6405\u62CC\u6267\u884C\u4E2D
storage.status.21=\u6405\u62CC\u5B8C\u6210\u56DE\u4ED3
storage.status.22=\u6405\u62CC\u5B8C\u6210
solder.status.1=\u51B7\u85CF\u4E2D
solder.status.2=\u56DE\u6E29\u4E2D
solder.status.3=\u5F85\u6405\u62CC
solder.status.4=\u6405\u62CC\u4E2D
solder.status.5=\u5F85\u51FA\u5E93
solder.status.6=\u51FA\u5E93\u4E2D
solder.status.7=\u9000\u5E93\u5B58\u50A8
\ No newline at end of file \ No newline at end of file
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
</c:if> </c:if>
<div class="portlet-body"> <div class="portlet-body">
<!-- 正常展示--> <!-- 正常展示-->
<c:if test='<%=!DataCache.isProductionFor("ChengDuKaiTian") %>'>
<form:form commandName="searchCriteria" class="form-horizontal form-bordered" id="searchCriteria" <form:form commandName="searchCriteria" class="form-horizontal form-bordered" id="searchCriteria"
action="storagePosFind.html"> action="storagePosFind.html">
...@@ -157,7 +156,7 @@ ...@@ -157,7 +156,7 @@
<c:set var="alarmClass" value="alarmItem"/> <c:set var="alarmClass" value="alarmItem"/>
</c:if> </c:if>
<c:set var="inactionClass" value=""/> <c:set var="inactionClass" value=""/>
<c:if test="${pos.inStoreHour/24 >= inactionDay}"> <c:if test="${pos.updateDate <= inactionDate}">
<c:set var="inactionClass" value="inactionItem"/> <c:set var="inactionClass" value="inactionItem"/>
</c:if> </c:if>
...@@ -194,11 +193,14 @@ ...@@ -194,11 +193,14 @@
<%--<display:column property="barcode.lockName" titleKey="menu.inRule"/>--%> <%--<display:column property="barcode.lockName" titleKey="menu.inRule"/>--%>
<display:column property="posName" titleKey="checkOut.pos" sortProperty="posName" sortable="true"/> <display:column property="posName" titleKey="checkOut.pos" sortProperty="posName" sortable="true"/>
<display:column titleKey="barcode.inStoreRemainTime" sortProperty="barcode.putInTime" sortable="true" class="${inactionClass}"> <%--<display:column titleKey="barcode.inStoreRemainTime" sortProperty="barcode.putInTime" sortable="true" class="${inactionClass}">--%>
<c:if test="${pos.inStoreHour >= 1}">${pos.inStoreHour}<fmt:message key="solder.hour"/></c:if><c:if test="${pos.inStoreMiniute != 0}">${pos.inStoreMiniute}<fmt:message key="runStatus.minutes"/> <%--<c:if test="${pos.inStoreHour >= 1}">${pos.inStoreHour}<fmt:message key="solder.hour"/></c:if><c:if test="${pos.inStoreMiniute != 0}">${pos.inStoreMiniute}<fmt:message key="runStatus.minutes"/>--%>
<c:if test="${pos.barcode.maxStorageTime != 0 }"> <%--<c:if test="${pos.barcode.maxStorageTime != 0 }">--%>
/${pos.barcode.maxStorageTime}<fmt:message key="solder.hour"/></c:if> <%--/${pos.barcode.maxStorageTime}<fmt:message key="solder.hour"/></c:if>--%>
</c:if> <%--</c:if>--%>
<%--</display:column>--%>
<display:column titleKey="barcode.lastDate" sortProperty="updateDate" sortable="true" class="${inactionClass}">
<fmt:formatDate value="${pos.updateDate}" pattern="yyyy-MM-dd"/>
</display:column> </display:column>
<display:column titleKey="component.amount"> <display:column titleKey="component.amount">
...@@ -225,114 +227,7 @@ ...@@ -225,114 +227,7 @@
</c:if> </c:if>
</display:table> </display:table>
</div> </div>
</c:if>
<!-- 成都凯天-->
<c:if test='<%=DataCache.isProductionFor("ChengDuKaiTian") %>'>
<form:form commandName="searchCriteria" class="form-horizontal form-bordered" id="searchCriteria"
action="storagePosFind.html">
<div class="form-group">
<label class="control-label col-md-1"><fmt:message key="产品型号"/></label>
<div class="col-md-2">
<input type="text" name="otherField2" class="form-control" value="${otherField2}"/>
</div>
<label class="control-label col-md-1"><fmt:message key="组件型号"/></label>
<div class="col-md-2">
<input type="text" name="otherField3" class="form-control" value="${otherField3}"/>
</div>
<label class="control-label col-md-1"><fmt:message key="配套单号"/></label>
<div class="col-md-2">
<input type="text" name="otherField1" class="form-control" value="${otherField1}"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-1"><fmt:message key="元件型号"/></label>
<div class="col-md-2">
<input type="text" name="otherField4" class="form-control" value="${otherField4}"/>
</div>
<label class="control-label col-md-1"><fmt:message key="检验编号"/></label>
<div class="col-md-2">
<input type="text" name="otherField5" class="form-control" value="${otherField5}"/>
</div>
<div class="col-md-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i><fmt:message key="button.search"/> </button>
</div>
</div>
</form:form>
<div class="table-toolbar">
<div class="col-md-6">
<div class="btn-group">
<button class="btn yellow" id="checkoutBtn">
<i class="fa fa-sign-out"></i><fmt:message key="出库所选仓位"/></button>
</div>
</div>
<div class="col-md-6">
<div class="input-inline input right">
<div class="input-group">
<input id="day" type="text" value="3" class="form-control" style="display: block;text-align:right;">
<span class="input-group-addon">天前</span>
<span class="input-group-btn">
<button class="btn green" type="button" id="inactionCheckOut"><i class="fa fa-check"></i>呆滞料出库</button>
</span>
</div>
</div>
</div>
</div>
<div class="table-scrollable">
<display:table name="searchCriteria.pageList" requestURI="storagePosFind.html" sort="external"
defaultsort="1" class="table table-striped table-bordered table-hover" export="false"
id="pos">
<c:set var="alarmClass" value=""/>
<c:if test="${pos.barcode.type == 1 && pos.barcode.maxStorageTime != 0 && pos.inStoreHour >= pos.barcode.maxStorageTime}">
<c:set var="alarmClass" value="alarmItem"/>
</c:if>
<c:set var="limitCheckOut" value="${pos.locked || (pos.barcode.solder && pos.barcode.solderStatus >= 5)}"/>
<display:column title="<input type='checkbox' id='allCheck'/>">
<c:if test="${!limitCheckOut}">
<input type="checkbox" name="posIds" value="${pos.id}" id="check${pos.id}" class="limit${pos.barcode.inFixture}"/>
</c:if>
</display:column>
<display:column titleKey="">${pos_rowNum}</display:column>
<display:column property="barcode.barcode" sortProperty="barcode.barcode" sortable="true" titleKey="barcode.barcode"/>
<%--<display:column property="barcode.otherField2" sortProperty="barcode.otherField2" sortable="true" titleKey="产品型号"/>--%>
<%--<display:column property="barcode.otherField3" sortProperty="barcode.otherField3" sortable="true" titleKey="组件型号"/>--%>
<%--<display:column property="barcode.otherField1" sortProperty="barcode.otherField1" sortable="true" titleKey="配套单号"/>--%>
<%--<display:column property="barcode.otherField4" sortProperty="barcode.otherField4" sortable="true" titleKey="元件型号"/>--%>
<%--<display:column property="barcode.otherField5" sortProperty="barcode.otherField5" sortable="true" titleKey="检验编号"/>--%>
<display:column property="barcode.otherField6" titleKey="barcode.memo"/>
<display:column property="barcode.amount" titleKey="barcode.amount"/>
<display:column property="barcode.lockName" titleKey="menu.inRule"/>
<display:column titleKey="barcode.inStoreRemainTime" sortProperty="barcode.putInTime" sortable="true">
<c:if test="${pos.inStoreHour >= 1}">${pos.inStoreHour}<fmt:message key="time.hours"/></c:if><c:if test="${pos.inStoreMiniute != 0}">${pos.inStoreMiniute}<fmt:message key="time.minutes"/>
<c:if test="${pos.barcode.maxStorageTime != 0 }">
/${pos.barcode.maxStorageTime}<fmt:message key="time.hours"/></c:if>
</c:if>
</display:column>
<display:column titleKey="checkOut.operate">
<c:if test="${!limitCheckOut}">
<button class="btn yellow limit${pos.barcode.inFixture}" id="btn${pos.id}"
onclick="checkoutStorage('${pos.id}')">
<i class="fa fa-sign-out"></i><fmt:message key="button.checkout"/></button>
</c:if>
</display:column>
<c:if test="${limitCheckOut}">
<c:set var="limitCodes" value="${pos.barcode.inFixture},${limitCodes}"/>
</c:if>
</display:table>
</div>
</c:if>
</div> </div>
</div> </div>
<!-- END EXAMPLE TABLE PORTLET--> <!-- END EXAMPLE TABLE PORTLET-->
......
...@@ -185,6 +185,11 @@ ...@@ -185,6 +185,11 @@
<c:if test="${storage.solderPaste}"> <c:if test="${storage.solderPaste}">
<c:set var="detailUrl" value="${ctx}/storage/solder/${storage.cid}"/> <c:set var="detailUrl" value="${ctx}/storage/solder/${storage.cid}"/>
</c:if> </c:if>
<c:if test="${storage.verticalBox}">
<c:set var="detailUrl" value="${ctx}/storage/vertical/${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}">
......
...@@ -92,8 +92,8 @@ ...@@ -92,8 +92,8 @@
</div> </div>
<div class="col-md-8"> <div class="col-md-8">
<button class="btn yellow right sm-btn-box" id="openDoor" ><fmt:message key="开门"/></button> <button class="btn yellow right sm-btn-box" id="openDoor" ><fmt:message key="solderBox.btn.openDoor"/></button>
<button class="btn yellow right sm-btn-box" id="closeDoor"><fmt:message key="关门"/></button> <button class="btn yellow right sm-btn-box" id="closeDoor"><fmt:message key="solderBox.btn.closeDoor"/></button>
</div> </div>
<div class="col-md-12 col-sm-12"> <div class="col-md-12 col-sm-12">
...@@ -119,10 +119,10 @@ ...@@ -119,10 +119,10 @@
<th></th> <th></th>
<th><fmt:message key="barcode.barcode"/></th> <th><fmt:message key="barcode.barcode"/></th>
<th><fmt:message key="barcode.partNumber"/></th> <th><fmt:message key="barcode.partNumber"/></th>
<th><fmt:message key="重量(克)"/></th> <th><fmt:message key="barcode.expireDate"/></th>
<th><fmt:message key="checkOut.pos"/></th> <th><fmt:message key="checkOut.pos"/></th>
<th><fmt:message key="dataLog.status"/></th> <th><fmt:message key="dataLog.status"/></th>
<th><fmt:message key="预计出库时间"/></th> <th><fmt:message key="solderBox.task.outTime"/></th>
<%--<th><fmt:message key="状态"/></th>--%> <%--<th><fmt:message key="状态"/></th>--%>
<%--<th><fmt:message key="dataLog.date"/></th>--%> <%--<th><fmt:message key="dataLog.date"/></th>--%>
</tr> </tr>
...@@ -166,15 +166,15 @@ ...@@ -166,15 +166,15 @@
<fmt:message key="storage.status.11" var="status_11"/> <fmt:message key="storage.status.11" var="status_11"/>
<fmt:message key="storage.status.12" var="status_12"/> <fmt:message key="storage.status.12" var="status_12"/>
<fmt:message key="storage.status.13" var="status_13"/> <fmt:message key="storage.status.13" var="status_13"/>
<fmt:message key="回温取料中" var="status_14"/> <fmt:message key="storage.status.14" var="status_14"/>
<fmt:message key="回温取料完成" var="status_15"/> <fmt:message key="storage.status.15" var="status_15"/>
<fmt:message key="回温放料中" var="status_16"/> <fmt:message key="storage.status.16" var="status_16"/>
<fmt:message key="回温放料完成" var="status_17"/> <fmt:message key="storage.status.17" var="status_17"/>
<fmt:message key="搅拌取料中" var="status_18"/> <fmt:message key="storage.status.18" var="status_18"/>
<fmt:message key="等待搅拌" var="status_19"/> <fmt:message key="storage.status.19" var="status_19"/>
<fmt:message key="搅拌执行中" var="status_20"/> <fmt:message key="storage.status.20" var="status_20"/>
<fmt:message key="搅拌完成回仓" var="status_21"/> <fmt:message key="storage.status.21" var="status_21"/>
<fmt:message key="搅拌完成" var="status_22"/> <fmt:message key="storage.status.22" var="status_22"/>
<fmt:message key="sotrage.status.999" var="status_999"/> <fmt:message key="sotrage.status.999" var="status_999"/>
...@@ -189,13 +189,13 @@ ...@@ -189,13 +189,13 @@
<fmt:message key="boxView.taskWaiting" var="taskWaiting_label"/> <fmt:message key="boxView.taskWaiting" var="taskWaiting_label"/>
<fmt:message key="boxView.cancelTask" var="cancelTask_label"/> <fmt:message key="boxView.cancelTask" var="cancelTask_label"/>
<fmt:message key="冷藏中" var="solder_status_1"/> <fmt:message key="solder.status.1" var="solder_status_1"/>
<fmt:message key="回温中" var="solder_status_2"/> <fmt:message key="solder.status.2" var="solder_status_2"/>
<fmt:message key="待搅拌" var="solder_status_3"/> <fmt:message key="solder.status.3" var="solder_status_3"/>
<fmt:message key="搅拌中" var="solder_status_4"/> <fmt:message key="solder.status.4" var="solder_status_4"/>
<fmt:message key="待出库" var="solder_status_5"/> <fmt:message key="solder.status.5" var="solder_status_5"/>
<fmt:message key="出库中" var="solder_status_6"/> <fmt:message key="solder.status.6" var="solder_status_6"/>
<fmt:message key="退库存储" var="solder_status_7"/> <fmt:message key="solder.status.7" var="solder_status_7"/>
<c:set var="scripts" scope="request"> <c:set var="scripts" scope="request">
...@@ -271,14 +271,14 @@ ...@@ -271,14 +271,14 @@
checkBox = ""; checkBox = "";
} }
var partNumber = data[item].barcode.partNumber; var partNumber = data[item].barcode.partNumber;
var weight = data[item].barcode.amount; var expireDate = data[item].barcode.expireDateStr;
var posStr = data[item].posName; var posStr = data[item].posName;
var statusStr = solderStatusMsg[barcodeObj.solderStatus]; var statusStr = solderStatusMsg[barcodeObj.solderStatus];
var tdStr = var tdStr =
"<td>"+checkBox+"</td>" + "<td>"+checkBox+"</td>" +
"<td>"+barcodeObj.barcode+"</td>"+ "<td>"+barcodeObj.barcode+"</td>"+
"<td>"+partNumber+"</td>"+ "<td>"+partNumber+"</td>"+
"<td>"+weight+"</td>" + "<td>"+expireDate+"</td>" +
"<td>"+posStr+"</td>" + "<td>"+posStr+"</td>" +
"<td>"+statusStr+"</td>" + "<td>"+statusStr+"</td>" +
"<td>"+needOutDateStr+"</td>"; "<td>"+needOutDateStr+"</td>";
...@@ -339,6 +339,34 @@ ...@@ -339,6 +339,34 @@
} }
}); });
var statusMsg={
"1":"${status_1}",
"2":"${status_2}",
"3":"${status_3}",
"4":"${status_4}",
"5":"${status_5}",
"6":"${status_6}",
"7":"${status_7}",
"8":"${status_8}",
"9":"${status_9}",
"10":"${status_10}",
"11":"${status_11}",
"12":"${status_12}",
"13":"${status_13}",
"14":"${status_14}",
"15":"${status_15}",
"16":"${status_16}",
"17":"${status_17}",
"18":"${status_18}",
"19":"${status_19}",
"20":"${status_20}",
"21":"${status_21}",
"22":"${status_22}",
"999":"${status_999}"
};
var allTasks = {}; var allTasks = {};
function updateTasks(){ function updateTasks(){
//任务列表 //任务列表
...@@ -374,11 +402,11 @@ ...@@ -374,11 +402,11 @@
showStr = posStr+"${out_label}"+ partNumber + "["+barcode+"]"; showStr = posStr+"${out_label}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 6){//回温取料 }else if(data[item].type == 6){//回温取料
options['icon']='fa fa-sign-out'; options['icon']='fa fa-sign-out';
showStr = posStr+"回温取料"+ partNumber + "["+barcode+"]"; showStr = posStr+"${status_14}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 7){//出库 }else if(data[item].type == 7){//出库
showStr = posStr+"回温放料"+ partNumber + "["+barcode+"]"; showStr = posStr+"${status_16}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 8){//出库 }else if(data[item].type == 8){//出库
showStr = posStr+"搅拌"+ partNumber + "["+barcode+"]"; showStr = posStr+"${status_20}"+ partNumber + "["+barcode+"]";
}else{ }else{
//options['onClick']= modifyClick; //options['onClick']= modifyClick;
} }
...@@ -440,32 +468,6 @@ ...@@ -440,32 +468,6 @@
}); });
} }
var statusMsg={
"1":"${status_1}",
"2":"${status_2}",
"3":"${status_3}",
"4":"${status_4}",
"5":"${status_5}",
"6":"${status_6}",
"7":"${status_7}",
"8":"${status_8}",
"9":"${status_9}",
"10":"${status_10}",
"11":"${status_11}",
"12":"${status_12}",
"13":"${status_13}",
"14":"${status_14}",
"15":"${status_15}",
"16":"${status_16}",
"17":"${status_17}",
"18":"${status_18}",
"19":"${status_19}",
"20":"${status_20}",
"21":"${status_21}",
"22":"${status_22}",
"999":"${status_999}"
};
function flushStatus(){ function flushStatus(){
$.get('${ctx}/service/store/status?cid=${show}', function (statusBean) { $.get('${ctx}/service/store/status?cid=${show}', function (statusBean) {
......
...@@ -67,6 +67,8 @@ ...@@ -67,6 +67,8 @@
<link href="${ctx}/assets/admin/layout/css/custom.css?id=0" rel="stylesheet" type="text/css"/> <link href="${ctx}/assets/admin/layout/css/custom.css?id=0" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" type="text/css" href="${ctx}/assets/global/plugins/bootstrap-editable/bootstrap-editable/css/bootstrap-editable.css"/>
<!-- END THEME STYLES --> <!-- END THEME STYLES -->
<link rel="shortcut icon" href="${ctx}/favicon.ico"/> <link rel="shortcut icon" href="${ctx}/favicon.ico"/>
<decorator:head/> <decorator:head/>
...@@ -330,6 +332,7 @@ ...@@ -330,6 +332,7 @@
<script src="${ctx}/scripts/lobibox/js/lobibox.js?id=32"></script> <script src="${ctx}/scripts/lobibox/js/lobibox.js?id=32"></script>
<script type="text/javascript" src="${ctx}/assets/global/plugins/bootstrap-editable/bootstrap-editable/js/bootstrap-editable.js"></script>
<!-- END PAGE LEVEL SCRIPTS --> <!-- END PAGE LEVEL SCRIPTS -->
<script> <script>
jQuery(document).ready(function() { jQuery(document).ready(function() {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!