Commit 544dd334 sunke

锡膏料仓Bug修复

1 个父辈 2e9db25e
正在显示 21 个修改的文件 包含 272 行增加202 行删除
......@@ -78,10 +78,6 @@ public class Barcode extends BaseMongoBean {
*/
private Date expireDate;
private boolean used = false;
//夹具PartNumber
private String fixtureNumber;
// 所在夹具 ReelId
private String inFixture;
//备注信息
private String memo;
......@@ -426,22 +422,6 @@ public class Barcode extends BaseMongoBean {
return 0;
}
public String getInFixture() {
return inFixture;
}
public void setInFixture(String inFixture) {
this.inFixture = inFixture;
}
public String getFixtureNumber() {
return fixtureNumber;
}
public void setFixtureNumber(String fixtureNumber) {
this.fixtureNumber = fixtureNumber;
}
public String getOtherField2() {
return otherField2;
}
......
......@@ -69,7 +69,6 @@ public class BarcodeManagerImpl implements IBarcodeManager {
barcode.setWarmTime(component.getWarmTime());
barcode.setMixTime(component.getMixTime());
barcode.setOtherField1(component.getProductionType());
barcode.setFixtureNumber(component.getFixtureNumber());
if(barcode.getPlateSize() <= 0){
log.info("设置置["+barcode.getBarcode()+"]的尺寸信息");
barcode.setPlateSize(component.getPlateSize());
......
......@@ -104,12 +104,12 @@ public class StoragePosManagerImpl implements IStoragePosManager {
@Override
public StoragePos getEmptyPosByStorage(Storage storage, Barcode barcode, Collection<String> excludePosIds) throws ValidateException {
if(barcode.getUsedCount() > 0){
//二次入库获取可用的回温库位
return getEmptyPos(storage,barcode, excludePosIds,true);
}else{
// if(barcode.getUsedCount() > 0){
// //二次入库获取可用的回温库位
// return getEmptyPos(storage,barcode, excludePosIds,true);
// }else{
return getEmptyPos(storage,barcode, excludePosIds,false);
}
// }
}
@Override
......
......@@ -26,12 +26,6 @@ import java.util.Date;
*
*
*
*
*
*
*
*
*
*条码规则,可用字段有:
* PN为物料编号即 PartNumber
* RI 为唯一码即ReelId,[RI]为所有字符串作为一个唯一码
......@@ -47,12 +41,12 @@ import java.util.Date;
* 中间一位数字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位
* 例一: 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]
......@@ -102,7 +96,9 @@ public class BarcodeRule {
if(!Strings.isNullOrEmpty(ruleStr)){
//先去除[prefix,length,suffix]这样的配置字段
String canSplitStr = ruleStr.replaceAll("\\[[^\\]]*?\\]","");
String canSplitStr =ruleStr.replaceAll("DATE.*?\\]","");
canSplitStr = canSplitStr.replaceAll("\\[[^\\]]*?\\]","");
//先找分割符,分割出来数组数量最多的放第一个
String trySeparator = "";
//找最多的字符
......@@ -233,9 +229,9 @@ public class BarcodeRule {
private RuleItem quantity_item = new RuleItem("QTY");
private RuleItem produceDate_item = new RuleItem("PRODATE");
private RuleItem expireDate_item = new RuleItem("EXPDATE");
private RuleItem expireYear_item = new RuleItem("EXPY");
private RuleItem expireMonth_item = new RuleItem("EXPM");
private RuleItem expireDay_item = new RuleItem("EXPD");
private RuleItem expireYear_item = new RuleItem("EXPYEAR");
private RuleItem expireMonth_item = new RuleItem("EXPMONTH");
private RuleItem expireDay_item = new RuleItem("EXPDAY");
private RuleItem supplier_item = new RuleItem("SP");
private RuleItem batch_item = new RuleItem("BATCH");
private RuleItem msl_item = new RuleItem("MSL");
......@@ -626,9 +622,20 @@ public class BarcodeRule {
//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";
codeStr = "??M8431CZ8133ZHMJQ21EJ3545-2016;IN?????BM6005K01;PH20012005;SC;CJ;LH;DDMO20072200041;CB;SX2023-2-27 0:00:00;SL1;JL;KG;HG;DL;ZP;QT;XT1001AS10000000517DT2;";
rule = "1;2;PN[-1:0:-1];BATCH[-1:0:-1];5;6;7;8;9;EXPDATEyyyy-MM-dd[2:0:8];QTY[2:0:-1];12;13;14;15;16;17;RI[-1:0:-1]";
//rule = "1>PN[-1:0:6]>3>RI[-1:0:6]";
//codeStr = "<ckdh>CC200612000194</ckdh><jybh>ADK20-\n" +"JY19060012~/jybh>";
//rule = "1;2;PN[-1:0:-1];BATCH[-1:0:-1];5;6;7;8;9;EXPDATEyyyy-MM-dd[2:0:8];QTY[2:0:-1];12;13;14;15;16;17;RI[-1:0:-1]";
//codeStr = "DM8431CZ8133ZHMJQ21EJ3545-2016;IN;BM6005K01;PH20012005;SC;CJ;LH;DDMO20072200041;CB;SX2023-2-27 00:10:00;SL1;JL;KG;HG;DL;ZP;QT;XT1001AS10000000517DT2;";
//803
//rule = "PN[6:0:-1],EXPDATEyyyy-MM-dd[-1:0:-1],BATCH,RI";
//codeStr = "ALPHA OL107E,2021-11-11,00714026Z,002";
codeStr = "LOCTITE3609,20200930,001";
rule = "PN,EXPDATEyyyyMMdd,RI";
BarcodeRule br = BarcodeRule.newRule(rule);
Barcode b = br.toCodeBean(codeStr).getBarcode();
if(b != null){
......
package com.myproject.webapp.controller.barcode;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.myproject.bean.update.Settings;
import com.myproject.exception.ValidateException;
import com.myproject.util.BarcodeRule;
......@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.ArrayList;
@Controller
......@@ -37,6 +39,11 @@ public class BarcodeSettingsController extends SettingsController {
return updateView();
} else {
try {
String[] codeRuleList = request.getParameterValues("codeRuleList");
if(codeRuleList != null){
settings.setCodeRuleList(Lists.newArrayList(codeRuleList));
}
for(String codeRule : settings.getCodeRuleList()){
if(!Strings.isNullOrEmpty(codeRule)){
BarcodeRule barcodeRule = BarcodeRule.newRule(codeRule);
......@@ -54,7 +61,7 @@ public class BarcodeSettingsController extends SettingsController {
oldSettings.setCodeRuleList(settings.getCodeRuleList());
dataCache.updateSettings(oldSettings);
saveMessage(request, getText("storage.saveSuccess", request.getLocale()));
return "redirect:/barcode/barcodeSettings.html";
return "redirect:barcodeSettings.html";
} catch (ValidateException e) {
handValidateException(e, request);
}
......
......@@ -289,17 +289,17 @@ public class VerticalBoxController extends BaseController{
public VerticalBoxOperateBean currentTask(HttpServletRequest request) {
String cid = request.getParameter("cid");
DataLog currentTask = verticalBoxHandler.getCurrentTask(cid);
// if(currentTask == null){
// //测试使用
// Collection<DataLog> queueTasks = taskService.getQueueTasks(cid);
// for (DataLog queueTask : queueTasks) {
// queueTask.setStatus(StorageConstants.OP_STATUS.EXECUTING.name());
// taskService.updateQueueTask(queueTask);
// verticalBoxHandler.updateCurrentTask(queueTask.getCid(), queueTask);
// break;
// }
// currentTask = verticalBoxHandler.getCurrentTask(cid);
// }
if(currentTask == null){
//测试使用
Collection<DataLog> queueTasks = taskService.getQueueTasks(cid);
for (DataLog queueTask : queueTasks) {
queueTask.setStatus(StorageConstants.OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(queueTask);
verticalBoxHandler.updateCurrentTask(queueTask.getCid(), queueTask);
break;
}
currentTask = verticalBoxHandler.getCurrentTask(cid);
}
if(currentTask != null){
VerticalBoxOperateBean operateBean = new VerticalBoxOperateBean();
operateBean.setCurrentTask(currentTask);
......
......@@ -45,6 +45,11 @@ public class DataCache{
* 松下
*/
public static String PANACIM = "Pana";
/**
* 闵行航天803研究所
*/
public static String H803 = "803";
}
/**
......
......@@ -336,7 +336,7 @@ public class StorageDataController extends BaseController {
boolean needReFind = false;//是否需要重新查找
//检查锡膏夹具上面是否有未达到回温时间锡膏,有的话是不能出库的
Barcode barcode = pos.getBarcode();
if(barcode != null && StorageConstants.PACKAGE_TYPE.SOLDER_FIXTURE.getCode().equals(barcode.getFixtureNumber())){
if(barcode != null && barcode.isSolder()){
List<StoragePos> solderPoses = storagePosManager.findByLabel(pos.getStorageId(), pos.getLabelStr());
for (StoragePos solderPos : solderPoses) {
Barcode posBarcode = solderPos.getBarcode();
......
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;
/**
* Created by sunke on 2020/8/5.
* 夹具出入库处理
*/
@Service
public class FixtureHandler {
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;
}
}
......@@ -309,6 +309,9 @@ cabinet.error.noOp=No operation during door opening period
op.1=Material Receiving
op.2=Material Retrieval
op.6=Rewarm Taking
op.7=Rewarm Putting
op.8=Mix
op.status.none=
op.status.wait=In Process
op.status.executing=In Operation
......@@ -404,11 +407,11 @@ error.barcode.executing=The task of barcode [{0}] is executing.
error.pos.notExist=The location [{0}] in the storage is not exist.
error.pos.hasReel=There is already one reel in the location [{0}].
error.pos.wrong=The location [{0}] does not match the storage [{1}]
error.pos.sizeNotMatch=The size[{0}] of the reel is not matching the size [{2}]of the location {1}
error.pos.sizeNotMatch=The size[{0}] is not matching the size [{2}]of the location {1}
error.barcode.invalid=The barcode [{0}] is invalid.
error.barcode.expired=The reel is expired.
error.barcode.wrongQty=The quantity [{1}] of the reel[{0}] is invalid.
error.barcode.inStorage=The reel [{0}] is already in the location [2] of the stroage [1]
error.barcode.inStorage=The reel [{0}] is already in the location [{2}] of the stroage [1]
error.barcode.noRule=There is no rule of the barcode is setted.
error.barcode.wrongLength=The code string [{0}] has wrong length.
error.barcode.noField=There is no {0} field in the code string.
......
......@@ -379,11 +379,11 @@ error.barcode.executing=The task of barcode [{0}] is executing.
error.pos.notExist=The location [{0}] in the storage is not exist.
error.pos.hasReel=There is already one reel in the location [{0}].
error.pos.wrong=The location [{0}] does not match the storage [{1}]
error.pos.sizeNotMatch=The size[{0}] of the reel is not matching the size [{2}]of the location {1}
error.pos.sizeNotMatch=The size[{0}] is not matching the size [{2}]of the location {1}
error.barcode.invalid=The barcode [{0}] is invalid.
error.barcode.expired=The reel is expired.
error.barcode.wrongQty=The quantity [{1}] of the reel[{0}] is invalid.
error.barcode.inStorage=The reel [{0}] is already in the location [2] of the stroage [1]
error.barcode.inStorage=The reel [{0}] is already in the location [{2}] of the stroage [1]
error.barcode.noRule=There is no rule of the barcode is setted.
error.barcode.wrongLength=The code string [{0}] has wrong length.
error.barcode.noField=There is no {0} field in the code string.
......@@ -424,3 +424,6 @@ solder.status.4=Strring
solder.status.5=Waiting shipment
solder.status.6=Outting
solder.status.7=Retreat storage
op.6=Rewarm Taking
op.7=Rewarm Putting
op.8=Mix
......@@ -375,11 +375,11 @@ error.barcode.executing=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u6B63\u5728\u6267\u8
error.pos.notExist=\u5E93\u4F4D\u3010{0}\u3011\u4E0D\u5B58\u5728,\u65E0\u6CD5\u5165\u5E93
error.pos.hasReel=\u5E93\u4F4D\u3010{0}\u3011\u4E2D\u5DF2\u6709\u7269\u6599,\u65E0\u6CD5\u5165\u5E93
error.pos.wrong=\u5E93\u4F4D\u3010{0}\u3011\u4E0E\u6599\u4ED3[{1}]\u4E0D\u5339\u914D,\u65E0\u6CD5\u5165\u5E93
error.pos.sizeNotMatch=\u6599\u76D8\u5C3A\u5BF8[{0}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u65E0\u6CD5\u5165\u5E93
error.pos.sizeNotMatch=\u5C3A\u5BF8[{0}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u65E0\u6CD5\u5165\u5E93
error.barcode.invalid={0} \u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
error.barcode.expired=\u7269\u6599\u5DF2\u8FC7\u671F,\u65E0\u6CD5\u5165\u5E93.
error.barcode.wrongQty=\u6599\u76D8[{0}]\u6570\u91CF[{1}]\u9519\u8BEF.
error.barcode.inStorage=\u6599\u76D8[0]\u5DF2\u5728\u6599\u4ED3[1]\u7684\u5E93\u4F4D[2]\u4E2D
error.barcode.wrongQty=\u7269\u6599[{0}]\u6570\u91CF[{1}]\u9519\u8BEF.
error.barcode.inStorage=\u7269\u6599[{0}]\u5DF2\u5728\u6599\u4ED3[{1}]\u7684\u5E93\u4F4D[{2}]\u4E2D
error.barcode.noRule=\u6761\u7801\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49
error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF
error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5
......@@ -419,4 +419,8 @@ 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
solder.status.7=\u30EA\u30C8\u30EA\u30FC\u30C8\u53CE\u7D0D
op.6=\u56DE\u6E29\u53D6\u6599
op.7=\u56DE\u6E29\u653E\u6599
op.8=\u6405\u62CC
delete.confirm=\u786E\u5B9A\u8981\u5220\u9664\u5417?
\ No newline at end of file
......@@ -375,11 +375,11 @@ error.barcode.executing=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u6B63\u5728\u6267\u8
error.pos.notExist=\u5E93\u4F4D\u3010{0}\u3011\u4E0D\u5B58\u5728,\u65E0\u6CD5\u5165\u5E93
error.pos.hasReel=\u5E93\u4F4D\u3010{0}\u3011\u4E2D\u5DF2\u6709\u7269\u6599,\u65E0\u6CD5\u5165\u5E93
error.pos.wrong=\u5E93\u4F4D\u3010{0}\u3011\u4E0E\u6599\u4ED3[{1}]\u4E0D\u5339\u914D,\u65E0\u6CD5\u5165\u5E93
error.pos.sizeNotMatch=\u6599\u76D8\u5C3A\u5BF8[{0}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u65E0\u6CD5\u5165\u5E93
error.pos.sizeNotMatch=\u5C3A\u5BF8[{0}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u65E0\u6CD5\u5165\u5E93
error.barcode.invalid={0} \u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
error.barcode.expired=\u7269\u6599\u5DF2\u8FC7\u671F,\u65E0\u6CD5\u5165\u5E93.
error.barcode.wrongQty=\u6599\u76D8[{0}]\u6570\u91CF[{1}]\u9519\u8BEF.
error.barcode.inStorage=\u6599\u76D8[0]\u5DF2\u5728\u6599\u4ED3[1]\u7684\u5E93\u4F4D[2]\u4E2D
error.barcode.wrongQty=\u7269\u6599[{0}]\u6570\u91CF[{1}]\u9519\u8BEF.
error.barcode.inStorage=\u7269\u6599[{0}]\u5DF2\u5728\u6599\u4ED3[{1}]\u7684\u5E93\u4F4D[{2}]\u4E2D
error.barcode.noRule=\u6761\u7801\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49
error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF
error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5
......@@ -419,4 +419,8 @@ 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
solder.status.7=\u9000\u5E93\u5B58\u50A8
op.6=\u56DE\u6E29\u53D6\u6599
op.7=\u56DE\u6E29\u653E\u6599
op.8=\u6405\u62CC
delete.confirm=\u786E\u5B9A\u8981\u5220\u9664\u5417?
\ No newline at end of file
......@@ -13,6 +13,8 @@
<div class="row">
<div class="col-md-12">
<%@include file="/common/success.jsp"%>
<%@include file="/common/error.jsp"%>
<form:form commandName="settings" class="form-horizontal form-bordered" id="settings" action="barcodeSettings.html">
<form:hidden path="id"/>
<!-- BEGIN CHART PORTLET-->
......
......@@ -39,7 +39,6 @@
<%@include file="/common/success.jsp"%>
<%@include file="/common/error.jsp"%>
<c:if test='<%=!DataCache.isProductionFor("ChengDuKaiTian") %>'>
<div class="form-group">
<label class="control-label col-md-2"><fmt:message key="barcode.barcode"/></label>
<div class="col-md-4">
......@@ -104,113 +103,6 @@
</div>
</div>
</c:if>
<c:if test='<%=DataCache.isProductionFor("ChengDuKaiTian") %>'>
<div class="form-group">
<label class="control-label col-md-2"><fmt:message key="component.auto.scancode"/></label>
<div class="col-md-8">
<div style="text-align:left">
<input type="text" id="scan-code" class="form-control" autofocus placeholder="产品型号@组件型号@配套单号@元器件型号@上级库位置号@检验编号@数量"/>
<span id="code-errors" style="color: red"></span>
</div>
</div>
</div>
<form:hidden id="partNumber" path="partNumber"/>
<div class="form-group">
<label class="control-label col-md-2"><fmt:message key="barcode.barcode"/></label>
<div class="col-md-4">
<div style="text-align:left" class="input-group">
<form:input type="text" id="barcodeStr" path="barcode" class="form-control"/>
<span class="input-group-addon">
<a onclick="printFun();"><fmt:message key="barcode.print"/> </a>
</span>
<form:errors path="barcode" cssStyle="color: red"/>
</div>
</div>
<label class="control-label col-md-2"><fmt:message key="产品型号"/></label>
<div class="col-md-4">
<div style="text-align:left" class="input-group">
<form:input type="text" path="otherField2" class="form-control" id="otherField2"/>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2"><fmt:message key="组件型号"/></label>
<div class="col-md-4">
<div style="text-align:left" class="input-group">
<form:input type="text" path="otherField3" class="form-control" id="otherField3"/>
</div>
</div>
<label class="control-label col-md-2"><fmt:message key="配套单号"/></label>
<div class="col-md-4">
<div style="text-align:left" class="input-group">
<form:input type="text" path="otherField1" class="form-control" id="otherField1"/>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2"><fmt:message key="元器件型号"/></label>
<div class="col-md-4">
<div style="text-align:left" class="input-group">
<form:input type="text" path="otherField4" class="form-control" id="otherField4"/>
</div>
</div>
<label class="control-label col-md-2"><fmt:message key="检验编号"/></label>
<div class="col-md-4">
<div style="text-align:left" class="input-group">
<form:input type="text" path="otherField5" class="form-control" id="otherField5"/>
</div>
</div>
</div>
<div class="form-group extraInfo">
<label class="control-label col-md-2"><fmt:message key="barcode.amount"/></label>
<div class="col-md-4">
<div style="text-align:left" class="input-group">
<form:input type="text" id="amount" path="amount" class="form-control"/>
</div>
</div>
<form:hidden id="plateSize" path="plateSize"/>
<form:hidden id="height" path="height"/>
<label class="control-label col-md-2"><fmt:message key="barcode.plateSize"/></label>
<div class="col-md-4">
<select class="form-control input-small" id="size">
<option value="7x8">7 x 8</option>
<option value="7x12">7 x 12</option>
<option value="7x16">7 x 16</option>
<option value="8x20"selected="true">散料夹具</option>
<option value="8.0x20" >格料夹具</option>
</select>
</div>
</div>
<div class="form-group extraInfo">
<%--备注--%>
<label class="control-label col-md-2"><fmt:message key="备注"/></label>
<div class="col-md-6">
<form:textarea id="description" path="otherField6" class="form-control"/>
</div>
</div>
</c:if>
<div class="form-actions">
<div class="row">
......
......@@ -166,7 +166,7 @@
<c:set var="limitCheckOut" value="${pos.locked || (pos.barcode.maxStorageTime != 0 && pos.inStoreHour * 60 + pos.inStoreMiniute <= pos.barcode.warmTime * 60)}"/>
<display:column title="<input type='checkbox' id='allCheck'/>" media="html">
<c:if test="${!limitCheckOut}">
<input type="checkbox" name="posIds" value="${pos.id}" id="check${pos.id}" class="limit${pos.barcode.inFixture}"/>
<input type="checkbox" name="posIds" value="${pos.id}" id="check${pos.id}" class="limit"/>
</c:if>
</display:column>
......@@ -217,13 +217,13 @@
<display:column property="barcode.memo" titleKey="barcode.memo"/>
<display:column titleKey="checkOut.operate" media="html">
<c:if test="${!limitCheckOut}">
<button class="btn yellow limit${pos.barcode.inFixture}" id="btn${pos.id}"
<button class="btn yellow limit" 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:set var="limitCodes" value="${limitCodes}"/>
</c:if>
</display:table>
</div>
......
......@@ -430,6 +430,12 @@
<fmt:message key="inOutList.out" var="out_label"/>
<fmt:message key="dataLog.orderSource" var="source_label"/>
<fmt:message key="op.1" var="op_1"/>
<fmt:message key="op.2" var="op_2"/>
<fmt:message key="op.6" var="op_6"/>
<fmt:message key="op.7" var="op_7"/>
<fmt:message key="op.8" var="op_8"/>
<fmt:message key="alarm.inaction.title" var="inactionAlarmTitle"/>
<fmt:message key="alarm.expire.title" var="expireAlarmTitle"/>
<fmt:message key="alarm.store.title" var="storeAlarmTitle"/>
......@@ -666,6 +672,14 @@
});
});
var opLabelMap={
"op1":"${op_1}",
"op1":"${op_2}",
"op1":"${op_6}",
"op1":"${op_7}",
"op1":"${op_8}"
}
var allTasks = {};
function updateTasks(){
//任务列表
......@@ -686,8 +700,10 @@
var options = {};
//入库
var showStr = partNumber + " ["+barcode+"] ${in_label}" + posStr;
//var showStr = partNumber + " ["+barcode+"] ${in_label}" + posStr;
var opLabel = opLabelMap["op_"+data[item].type]
var showStr = posStr+ opLabel + partNumber + "["+barcode+"]";
var status = data[item].status.toLowerCase();
options['status'] = status;
......@@ -699,7 +715,7 @@
options['icon']='fa fa-download';
if(data[item].type == 2){//出库
options['icon']='fa fa-upload';
showStr = partNumber + "["+barcode+"]${out_label}" + posStr;
//showStr = partNumber + "["+barcode+"]${out_label}" + posStr;
}else{
options['onClick']= modifyClick;
}
......
<%@ page import="com.myproject.util.StorageConstants" %>
<%@ page import="com.myproject.webapp.controller.webService.DataCache" %>
<%@ include file="/common/taglibs.jsp" %>
<%@ page language="java" pageEncoding="UTF-8" %>
......@@ -118,13 +119,18 @@
<tr role="row">
<th></th>
<th><fmt:message key="barcode.barcode"/></th>
<th><fmt:message key="barcode.partNumber"/></th>
<%--803研究所--%>
<c:if test="<%= DataCache.isProductionFor(DataCache.CUSTOMER.H803)%>">
<th><fmt:message key="规格型号"/></th>
</c:if>
<c:if test="<%= !DataCache.isProductionFor(DataCache.CUSTOMER.H803)%>">
<th><fmt:message key="barcode.partNumber"/></th>
</c:if>
<th><fmt:message key="barcode.expireDate"/></th>
<th><fmt:message key="checkOut.pos"/></th>
<th><fmt:message key="dataLog.status"/></th>
<th><fmt:message key="solderBox.task.outTime"/></th>
<%--<th><fmt:message key="状态"/></th>--%>
<%--<th><fmt:message key="dataLog.date"/></th>--%>
</tr>
</thead>
<tbody class="dataTable">
......@@ -181,6 +187,13 @@
<fmt:message key="allBoxView.boxStatus" var="boxStatus_label"/>
<fmt:message key="inOutList.in" var="in_label"/>
<fmt:message key="inOutList.out" var="out_label"/>
<fmt:message key="op.1" var="op_1"/>
<fmt:message key="op.2" var="op_2"/>
<fmt:message key="op.6" var="op_6"/>
<fmt:message key="op.7" var="op_7"/>
<fmt:message key="op.8" var="op_8"/>
<fmt:message key="dataLog.orderSource" var="source_label"/>
<fmt:message key="boxView.taskCancel" var="taskCancel_label"/>
......@@ -250,6 +263,14 @@
"7":"${solder_status_7}"
};
var opLabelMap={
"op1":"${op_1}",
"op1":"${op_2}",
"op1":"${op_6}",
"op1":"${op_7}",
"op1":"${op_8}"
}
listNotEmpty = function(){
var str= "";
$("[name=posIds]").each(function(){
......@@ -386,7 +407,8 @@
newTasks.push(taskId);
var options = {};
//入库
var showStr = posStr+"${in_label}"+ partNumber + "["+barcode+"]";
var opLabel = opLabelMap["op_"+data[item].type]
var showStr = posStr+ opLabel + partNumber + "["+barcode+"]";
var status = data[item].status.toLowerCase();
......@@ -399,14 +421,14 @@
options['icon']='fa fa-database';
if(data[item].type == 2){//出库
options['icon']='fa fa-sign-out';
showStr = posStr+"${out_label}"+ partNumber + "["+barcode+"]";
//showStr = posStr+"${out_label}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 6){//回温取料
options['icon']='fa fa-sign-out';
showStr = posStr+"${status_14}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 7){//出库
showStr = posStr+"${status_16}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 8){//出库
showStr = posStr+"${status_20}"+ partNumber + "["+barcode+"]";
//showStr = posStr+"${status_14}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 7){//回温放料
//showStr = posStr+"${status_16}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 8){//搅拌
//showStr = posStr+"${status_20}"+ partNumber + "["+barcode+"]";
}else{
//options['onClick']= modifyClick;
}
......
......@@ -49,7 +49,7 @@
defaultsort="1" class="table table-striped table-bordered table-hover" export="false">
<display:column property="name" escapeXml="true" titleKey="storage.name"/>
<display:column titleKey="storage.boxCount" property="boxCount"/>
<display:column titleKey="storage.type" property="type"/>
<display:column titleKey="storage.slotAmount">
${storage.totalSlots - storage.emptySlots} / ${storage.totalSlots}
</display:column>
......
......@@ -416,15 +416,6 @@
if(data[item].type == 2){//出库
options['icon']='fa fa-sign-out';
showStr = posStr+"${out_label}"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 6){//回温取料
options['icon']='fa fa-sign-out';
showStr = posStr+"回温取料"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 7){//出库
showStr = posStr+"回温放料"+ partNumber + "["+barcode+"]";
}else if(data[item].type == 8){//出库
showStr = posStr+"搅拌"+ partNumber + "["+barcode+"]";
}else{
//options['onClick']= modifyClick;
}
......@@ -608,7 +599,7 @@
$(this).attr("disabled", true);
$("#scan-code").removeAttr("disabled");
}
showOperateWindow();
//showOperateWindow();
});
$("#scan-code").change(function () {
......@@ -620,7 +611,7 @@
$("#scan-code").val("");
});
}
showOperateWindow();
//showOperateWindow();
});
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!