Commit 1045729e sunke

1 解析条码时过滤唯一码重复的条码

2 PN导入功能
3 PDA首页图标排布
4 工单数量修改
5 查找出库按钮放弹出页面上方
6 登陆页面标题改为SMD-BOX
7 增加DUO料仓类型,优先处理入库
8 导入工单时,支持FEEDER字段
9 Session过期时间设置为1分种(浏览器关闭10分钟后退出登陆)
10 将SPN统一为SP
11 去除虚拟仓
1 个父辈 d596dd3d
正在显示 35 个修改的文件 包含 293 行增加170 行删除
PN,W,H,QTY,SP,SPN PN,W,H,QTY,SP
1267370610,13,8,50000,, 1267370610,13,8,50000,
1267370613,13,8,50000,, 1267370613,13,8,50000,
1275100970,15,56,150,, 1275100970,15,56,150,
PN,FEEDER,QTY
6013A0825801,1-1,100
6013A0619401,1-2,500
6010A0617801,2-1,500
...@@ -549,7 +549,7 @@ ...@@ -549,7 +549,7 @@
</dependencies> </dependencies>
<properties> <properties>
<app.name>myproject</app.name> <app.name>smdbox</app.name>
<amp.genericCore>true</amp.genericCore> <amp.genericCore>true</amp.genericCore>
<amp.fullSource>false</amp.fullSource> <amp.fullSource>false</amp.fullSource>
<dao.framework>hibernate</dao.framework> <dao.framework>hibernate</dao.framework>
......
...@@ -287,11 +287,12 @@ public class OrderFileWatch { ...@@ -287,11 +287,12 @@ public class OrderFileWatch {
log.info("未包含PN列"); log.info("未包含PN列");
return null; return null;
} }
int qtyIndex = csvRead.getIndex("NUM"); int qtyIndex = csvRead.getIndex("NUM","QTY");
if (qtyIndex == -1){ if (qtyIndex == -1){
log.info("未包含【NUM】列"); log.info("未包含【NUM】列");
return null; return null;
} }
int feederIndex = csvRead.getIndex("FEEDER");
while(csvRead.readRecord()){ while(csvRead.readRecord()){
String[] lineValues = csvRead.getValues(); String[] lineValues = csvRead.getValues();
String partNumber = lineValues[partNumberIndex]; String partNumber = lineValues[partNumberIndex];
...@@ -310,9 +311,14 @@ public class OrderFileWatch { ...@@ -310,9 +311,14 @@ public class OrderFileWatch {
} }
} }
} }
String feeder = "";
if(feederIndex != -1){
feeder = lineValues[feederIndex];
}
LiteOrderItem item = new LiteOrderItem(); LiteOrderItem item = new LiteOrderItem();
item.setPn(partNumber); item.setPn(partNumber);
item.setNeedNum(num); item.setNeedNum(num);
item.setFeederInfo(feeder);
items.add(item); items.add(item);
} }
} }
......
...@@ -56,6 +56,11 @@ public class LiteOrder extends BaseMongoBean { ...@@ -56,6 +56,11 @@ public class LiteOrder extends BaseMongoBean {
private long taskFinishedTime = -1; private long taskFinishedTime = -1;
/** /**
* 套(倍)数
*/
private float orderTimes = 1f;
/**
* 订单的详细信息 * 订单的详细信息
*/ */
@Transient @Transient
...@@ -194,4 +199,15 @@ public class LiteOrder extends BaseMongoBean { ...@@ -194,4 +199,15 @@ public class LiteOrder extends BaseMongoBean {
public void setClosed(boolean closed) { public void setClosed(boolean closed) {
this.closed = closed; this.closed = closed;
} }
public float getOrderTimes() {
if(orderTimes == 0){
orderTimes = 1f;
}
return orderTimes;
}
public void setOrderTimes(float orderTimes) {
this.orderTimes = orderTimes;
}
} }
...@@ -77,7 +77,7 @@ public class Component extends BaseMongoBean { ...@@ -77,7 +77,7 @@ public class Component extends BaseMongoBean {
/** /**
* 供应商PN,用于扫码贴标机转换PN * 供应商PN,用于扫码贴标机转换PN
*/ */
private String supplierPn; // private String supplierPn;
//uid //uid
private String uid; private String uid;
...@@ -399,11 +399,11 @@ public class Component extends BaseMongoBean { ...@@ -399,11 +399,11 @@ public class Component extends BaseMongoBean {
return type == StorageConstants.COMPONENT_TYPE.SOLDERPASTE; return type == StorageConstants.COMPONENT_TYPE.SOLDERPASTE;
} }
public String getSupplierPn() { // public String getSupplierPn() {
return supplierPn; // return supplierPn;
} // }
//
public void setSupplierPn(String supplierPn) { // public void setSupplierPn(String supplierPn) {
this.supplierPn = supplierPn; // this.supplierPn = supplierPn;
} // }
} }
...@@ -22,6 +22,7 @@ public class Storage extends BaseMongoBean { ...@@ -22,6 +22,7 @@ public class Storage extends BaseMongoBean {
* 程序路径 * 程序路径
*/ */
private String sourcePath; private String sourcePath;
@NotEmpty(message = "{storage.cid.empty}")
private String cid; private String cid;
private int totalSlots; private int totalSlots;
private int emptySlots; private int emptySlots;
...@@ -53,25 +54,25 @@ public class Storage extends BaseMongoBean { ...@@ -53,25 +54,25 @@ public class Storage extends BaseMongoBean {
/** /**
* 禁止出入库的 box * 禁止出入库的 box
*/ */
private List<Integer> disableBoxes; // private List<Integer> disableBoxes;
//
public List<Integer> getDisableBoxes() { // public List<Integer> getDisableBoxes() {
return disableBoxes; // return disableBoxes;
} // }
//
/** // /**
* 判断 box 是否可用 // * 判断 box 是否可用
*/ // */
public boolean isBoxEnable(Integer boxId){ // public boolean isBoxEnable(Integer boxId){
if(disableBoxes != null){ // if(disableBoxes != null){
return disableBoxes.contains(boxId); // return disableBoxes.contains(boxId);
} // }
return true; // return true;
} // }
//
public void setDisableBoxes(List<Integer> disableBoxes) { // public void setDisableBoxes(List<Integer> disableBoxes) {
this.disableBoxes = disableBoxes; // this.disableBoxes = disableBoxes;
} // }
public String getType() { public String getType() {
return type; return type;
...@@ -217,6 +218,13 @@ public class Storage extends BaseMongoBean { ...@@ -217,6 +218,13 @@ public class Storage extends BaseMongoBean {
return StorageConstants.TYPE.SMD_XL.name().equals(type); return StorageConstants.TYPE.SMD_XL.name().equals(type);
} }
/**
* 是否是Duo料仓
*/
public boolean isSmdDuo() {
return StorageConstants.TYPE.SMD_DUO.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){
......
...@@ -183,9 +183,9 @@ public class StatusBean { ...@@ -183,9 +183,9 @@ public class StatusBean {
/** /**
* 获取客户端发送上来的二维码对应的 boxId * 获取客户端发送上来的二维码对应的 boxId
*/ */
public String getCodeBoxId(){ // public String getCodeBoxId(){
return data.get("boxId"); // return data.get("boxId");
} // }
public void setCode(String barcode){ public void setCode(String barcode){
data.put("code",barcode); data.put("code",barcode);
...@@ -362,82 +362,82 @@ public class StatusBean { ...@@ -362,82 +362,82 @@ public class StatusBean {
return false; return false;
} }
public List<Integer> allIdleBoxIds(){ // public List<Integer> allIdleBoxIds(){
List<Integer> idleBoxIds = new ArrayList<>(); // List<Integer> idleBoxIds = new ArrayList<>();
if(!timeOut()){//在线 // if(!timeOut()){//在线
if(StorageConstants.STATUS.OFFLINE != status){//在线 // if(StorageConstants.STATUS.OFFLINE != status){//在线
for (BoxStatusBean boxStatusBean : boxStatus.values()) { // for (BoxStatusBean boxStatusBean : boxStatus.values()) {
if(boxStatusBean.boxIsIdle()){ // if(boxStatusBean.boxIsIdle()){
idleBoxIds.add(boxStatusBean.getBoxId()); // idleBoxIds.add(boxStatusBean.getBoxId());
} // }
} // }
} // }
} // }
return idleBoxIds; // return idleBoxIds;
} // }
/** /**
* 所有可以出库的 box * 所有可以出库的 box
*/ */
public List<Integer> allCanCheckoutBoxIds(){ // public List<Integer> allCanCheckoutBoxIds(){
List<Integer> canCheckoutBoxIds = new ArrayList<>(); // List<Integer> canCheckoutBoxIds = new ArrayList<>();
if(StorageConstants.STATUS.OFFLINE != status){//在线 // if(StorageConstants.STATUS.OFFLINE != status){//在线
for (BoxStatusBean boxStatusBean : boxStatus.values()) { // for (BoxStatusBean boxStatusBean : boxStatus.values()) {
if(boxStatusBean.boxCanCheckout()){ // if(boxStatusBean.boxCanCheckout()){
canCheckoutBoxIds.add(boxStatusBean.getBoxId()); // canCheckoutBoxIds.add(boxStatusBean.getBoxId());
} // }
} // }
} // }
return canCheckoutBoxIds; // return canCheckoutBoxIds;
} // }
/** /**
* 获取所有可以入库的 BOXID(用正则的|线隔开),即 BOX 可以正常使用(没有急停,故障,调试等)并且不是出库状态(正在出库时如果再分配入库有可能会出现卡死的情况,即出库要等空托盘,但入库的托盘卡在移载处) * 获取所有可以入库的 BOXID(用正则的|线隔开),即 BOX 可以正常使用(没有急停,故障,调试等)并且不是出库状态(正在出库时如果再分配入库有可能会出现卡死的情况,即出库要等空托盘,但入库的托盘卡在移载处)
*/ */
public List<Integer> allCanPutInBoxIds(){ // public List<Integer> allCanPutInBoxIds(){
List<Integer> canPutInBoxIds = new ArrayList<>(); // List<Integer> canPutInBoxIds = new ArrayList<>();
String idleBoxIds = ""; // String idleBoxIds = "";
for (BoxStatusBean boxStatusBean : boxStatus.values()) { // for (BoxStatusBean boxStatusBean : boxStatus.values()) {
//可正常使用,且未在出库执行中 // //可正常使用,且未在出库执行中
if(boxStatusBean.boxIsAvailable() && !boxStatusBean.boxIsCheckingOut()){ // if(boxStatusBean.boxIsAvailable() && !boxStatusBean.boxIsCheckingOut()){
canPutInBoxIds.add(boxStatusBean.getBoxId()); // canPutInBoxIds.add(boxStatusBean.getBoxId());
} // }
} // }
return canPutInBoxIds; // return canPutInBoxIds;
} // }
/** /**
* 判断某个 box 是否可以执行入库操作 * 判断某个 box 是否可以执行入库操作
*/ */
public boolean isBoxCanPutIn(int boxId){ // public boolean isBoxCanPutIn(int boxId){
if(timeOut()){ // if(timeOut()){
return false; // return false;
} // }
for (BoxStatusBean boxStatusBean : boxStatus.values()) { // for (BoxStatusBean boxStatusBean : boxStatus.values()) {
//可正常使用,且未在出库执行中 // //可正常使用,且未在出库执行中
int bid = boxStatusBean.getBoxId(); // int bid = boxStatusBean.getBoxId();
if(bid == boxId){ // if(bid == boxId){
if(boxStatusBean.boxIsAvailable() && !boxStatusBean.boxIsCheckingOut()){ // if(boxStatusBean.boxIsAvailable() && !boxStatusBean.boxIsCheckingOut()){
return true; // return true;
} // }
return false; // return false;
} // }
} // }
return false; // return false;
} // }
public void updateBoxStatus(String posName, int boxStatusToChange){ // public void updateBoxStatus(String posName, int boxStatusToChange){
int index = posName.indexOf("#"); // int index = posName.indexOf("#");
if(index > 0){ // if(index > 0){
int boxId = Integer.valueOf(posName.substring(0,index)); // int boxId = Integer.valueOf(posName.substring(0,index));
for (BoxStatusBean boxStatusBean : boxStatus.values()) { // for (BoxStatusBean boxStatusBean : boxStatus.values()) {
if(boxStatusBean.getBoxId() == boxId){ // if(boxStatusBean.getBoxId() == boxId){
boxStatusBean.setStatus(boxStatusToChange); // boxStatusBean.setStatus(boxStatusToChange);
break; // break;
} // }
} // }
} // }
} // }
public String getMsgEn() { public String getMsgEn() {
return msgEn; return msgEn;
......
...@@ -10,6 +10,8 @@ public interface ILiteOrderDao extends IMongoDao { ...@@ -10,6 +10,8 @@ public interface ILiteOrderDao extends IMongoDao {
LiteOrder findByOrderNo(String orderNo); LiteOrder findByOrderNo(String orderNo);
void updateOrderTimes(String orderId, float orderTimes);
LiteOrder createWithItems(LiteOrder liteOrder); LiteOrder createWithItems(LiteOrder liteOrder);
LiteOrder findWithItemsByOrderNo(String orderNo); LiteOrder findWithItemsByOrderNo(String orderNo);
......
...@@ -17,6 +17,7 @@ import org.springframework.data.mongodb.core.aggregation.Aggregation; ...@@ -17,6 +17,7 @@ import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults; import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.*; import java.util.*;
...@@ -38,6 +39,18 @@ public class LiteOrderDaoImpl extends AbstractMongoDao implements ILiteOrderDao ...@@ -38,6 +39,18 @@ public class LiteOrderDaoImpl extends AbstractMongoDao implements ILiteOrderDao
} }
@Override @Override
public void updateOrderTimes(String orderId, float orderTimes){
update(orderId,"orderTimes",orderTimes);
}
private void update(String orderId, String key, Object value){
Criteria c = Criteria.where("id").is(orderId);
Query query = Query.query(c);
Update update = Update.update(key,value);
updateFirst(query,update);
}
@Override
public LiteOrder createWithItems(LiteOrder liteOrder){ public LiteOrder createWithItems(LiteOrder liteOrder){
List<LiteOrderItem> items = Lists.newArrayList(); List<LiteOrderItem> items = Lists.newArrayList();
for (LiteOrderItem liteOrderItem : liteOrder.getOrderItems()) { for (LiteOrderItem liteOrderItem : liteOrder.getOrderItems()) {
......
...@@ -62,7 +62,7 @@ public interface IStoragePosManager extends IManager<StoragePos> { ...@@ -62,7 +62,7 @@ public interface IStoragePosManager extends IManager<StoragePos> {
/** /**
* 查找物料,只返回入库时间最早的一个 * 查找物料,只返回入库时间最早的一个
*/ */
StoragePos findComponent(String storageId, String boxId, Collection<String> partNumbers, Collection<String> excludePosIds, StorageConstants.CHECKOUT_TYPE checkoutType); StoragePos findComponent(String storageId, Collection<String> partNumbers, Collection<String> excludePosIds, StorageConstants.CHECKOUT_TYPE checkoutType);
List<StoragePos> findNotEmptyByStorageId(String storageId); List<StoragePos> findNotEmptyByStorageId(String storageId);
......
...@@ -65,7 +65,7 @@ public class ComponentManagerImpl implements IComponentManager { ...@@ -65,7 +65,7 @@ public class ComponentManagerImpl implements IComponentManager {
@Override @Override
public List<Component> listPnBySupplierPn(String supplierPn){ public List<Component> listPnBySupplierPn(String supplierPn){
Criteria c = Criteria.where("supplierPn").regex(supplierPn); Criteria c = Criteria.where("provider").regex(supplierPn);
Query query = Query.query(c); Query query = Query.query(c);
query.limit(10); query.limit(10);
return componentDao.findByQuery(query); return componentDao.findByQuery(query);
......
...@@ -228,7 +228,7 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -228,7 +228,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
* @return * @return
*/ */
@Override @Override
public StoragePos findComponent(String storageId, String boxId, Collection<String> partNumbers, Collection<String> excludePosIds, StorageConstants.CHECKOUT_TYPE checkoutType){ public StoragePos findComponent(String storageId, Collection<String> partNumbers, Collection<String> excludePosIds, StorageConstants.CHECKOUT_TYPE checkoutType){
Criteria c = Criteria.where("storageId").is(storageId) Criteria c = Criteria.where("storageId").is(storageId)
.and("barcode.partNumber").in(partNumbers) .and("barcode.partNumber").in(partNumbers)
.and("barcode.lockId").is(null)//没有被锁定的仓位 .and("barcode.lockId").is(null)//没有被锁定的仓位
......
...@@ -297,7 +297,13 @@ public class StorageConstants { ...@@ -297,7 +297,13 @@ public class StorageConstants {
/** /**
* 12 SMD-XL(方仓) * 12 SMD-XL(方仓)
*/ */
SMD_XL("storage.type.smdXl") SMD_XL("storage.type.smdXl"),
/**
* 13 SMD-DUO(DUO料仓)
*/
SMD_DUO("storage.type.smdDuo")
; ;
...@@ -320,7 +326,7 @@ public class StorageConstants { ...@@ -320,7 +326,7 @@ public class StorageConstants {
} }
public static List<TYPE> availableTypeList(){ public static List<TYPE> availableTypeList(){
return Lists.newArrayList(AUTO,LINE,VIRTUAL,BATCH,ACCSHELF,CODESHELF,SOLDERPASTE,VERTICALBOX,SMD_XL); return Lists.newArrayList(AUTO,LINE,BATCH,ACCSHELF,CODESHELF,SOLDERPASTE,VERTICALBOX,SMD_XL);
} }
} }
......
...@@ -220,7 +220,7 @@ public class FileUploadController extends BaseFormController { ...@@ -220,7 +220,7 @@ public class FileUploadController extends BaseFormController {
// throw new ValidateException("必须包含【供应商】或【supplier】列"); // throw new ValidateException("必须包含【供应商】或【supplier】列");
// } // }
int spnIndex = csvRead.getIndex("供应商PN","SPN"); // int spnIndex = csvRead.getIndex("供应商PN","SPN");
// int typeIndex = csvRead.getIndex("类型","type"); // int typeIndex = csvRead.getIndex("类型","type");
// if (typeIndex == -1){ // if (typeIndex == -1){
...@@ -238,10 +238,10 @@ public class FileUploadController extends BaseFormController { ...@@ -238,10 +238,10 @@ public class FileUploadController extends BaseFormController {
qtyStr = lineValues[qtyIndex]; qtyStr = lineValues[qtyIndex];
} }
String spn = ""; // String spn = "";
if(spnIndex != -1){ // if(spnIndex != -1){
spn = lineValues[spnIndex]; // spn = lineValues[spnIndex];
} // }
String wStr = lineValues[wIndex]; String wStr = lineValues[wIndex];
String hStr = lineValues[hIndex]; String hStr = lineValues[hIndex];
...@@ -264,7 +264,7 @@ public class FileUploadController extends BaseFormController { ...@@ -264,7 +264,7 @@ public class FileUploadController extends BaseFormController {
component.setProvider(supplier); component.setProvider(supplier);
component.setSupplierPn(spn); // component.setSupplierPn(spn);
//component.setType(Integer.valueOf(typeStr)); //component.setType(Integer.valueOf(typeStr));
list.add(component); list.add(component);
......
...@@ -40,6 +40,9 @@ public class BarcodeSettingsController extends SettingsController { ...@@ -40,6 +40,9 @@ public class BarcodeSettingsController extends SettingsController {
} else { } else {
try { try {
String[] codeRuleList = request.getParameterValues("codeRuleList"); String[] codeRuleList = request.getParameterValues("codeRuleList");
if(codeRuleList.length > 10){
throw new ValidateException("barcode.error.maxRule","条码规则最多只允许有10个");
}
if(codeRuleList != null){ if(codeRuleList != null){
settings.setCodeRuleList(Lists.newArrayList(codeRuleList)); settings.setCodeRuleList(Lists.newArrayList(codeRuleList));
} }
......
...@@ -15,6 +15,7 @@ import com.myproject.dao.mongo.IDataLogDao; ...@@ -15,6 +15,7 @@ import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.exception.ValidateException; import com.myproject.exception.ValidateException;
import com.myproject.manager.IBarcodeManager; import com.myproject.manager.IBarcodeManager;
import com.myproject.manager.IStoragePosManager; import com.myproject.manager.IStoragePosManager;
import com.myproject.model.User;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.webService.DataCache; import com.myproject.webapp.controller.webService.DataCache;
import com.myproject.webapp.controller.webService.ITaskService; import com.myproject.webapp.controller.webService.ITaskService;
...@@ -154,6 +155,7 @@ public class CodeShelfController extends BaseController { ...@@ -154,6 +155,7 @@ public class CodeShelfController extends BaseController {
@RequestMapping("/service/store/codeShelf/codeIn") @RequestMapping("/service/store/codeShelf/codeIn")
@ResponseBody @ResponseBody
public String codeIn(HttpServletRequest request, HttpSession httpSession){ public String codeIn(HttpServletRequest request, HttpSession httpSession){
String sessionId = httpSession.getId(); String sessionId = httpSession.getId();
String codeStr = request.getParameter("code"); String codeStr = request.getParameter("code");
int delayCloseTime = 30000; int delayCloseTime = 30000;
......
...@@ -107,6 +107,7 @@ public class StoragePosUpdateController extends BaseUpdateController { ...@@ -107,6 +107,7 @@ public class StoragePosUpdateController extends BaseUpdateController {
if("false".equalsIgnoreCase(enabledStr)){ if("false".equalsIgnoreCase(enabledStr)){
enabled = false; enabled = false;
} }
log.info("库位禁/启用操作:" + enabled);
pos.setEnabled(enabled); pos.setEnabled(enabled);
try { try {
storagePosManager.save(pos); storagePosManager.save(pos);
......
...@@ -252,7 +252,7 @@ public class DataCache{ ...@@ -252,7 +252,7 @@ public class DataCache{
barcode.setHeight(codeBeanFromRule.getReelHeight()); barcode.setHeight(codeBeanFromRule.getReelHeight());
barcode = barcodeManager.save(barcode); barcode = barcodeManager.save(barcode);
}catch (Exception ve){ }catch (Exception ve){
log.error("重设尺寸出错",ve);
} }
} }
} }
......
...@@ -88,6 +88,15 @@ public class StorageDataController extends BaseController { ...@@ -88,6 +88,15 @@ public class StorageDataController extends BaseController {
} }
} }
/**
* 检查是否登陆
*/
@RequestMapping("/getLoginUser")
@ResponseBody
public String getLoginUser(HttpServletRequest request){
return StorageDataController.getLoginUsername();
}
@RequestMapping(value = "/countExpirePcb") @RequestMapping(value = "/countExpirePcb")
@ResponseBody @ResponseBody
public int countExpirePcb(){ public int countExpirePcb(){
...@@ -136,7 +145,7 @@ public class StorageDataController extends BaseController { ...@@ -136,7 +145,7 @@ public class StorageDataController extends BaseController {
for (LiteOrderItem item : items) { for (LiteOrderItem item : items) {
InventoryItem pnInventory = inventoryMap.get(item.getPn()); InventoryItem pnInventory = inventoryMap.get(item.getPn());
if(pnInventory != null){ if(pnInventory != null){
item.setInventoryNum(pnInventory.getStockCount()); item.setInventoryNum(pnInventory.getStockCount() - pnInventory.getLockCount());
} }
} }
order.setOrderItems(items); order.setOrderItems(items);
...@@ -522,16 +531,25 @@ public class StorageDataController extends BaseController { ...@@ -522,16 +531,25 @@ public class StorageDataController extends BaseController {
try{ try{
if(!Strings.isNullOrEmpty(orderNo) && !Strings.isNullOrEmpty(numStr)){ if(!Strings.isNullOrEmpty(orderNo) && !Strings.isNullOrEmpty(numStr)){
float numRate = Float.valueOf(numStr); float numRate = Float.valueOf(numStr);
List<LiteOrderItem> items = liteOrderItemDao.findOrderItems(orderNo); // List<LiteOrderItem> items = liteOrderItemDao.findOrderItems(orderNo);
for (LiteOrderItem item : items) { // for (LiteOrderItem item : items) {
int needNum = item.getNeedNum(); // int needNum = item.getNeedNum();
Float newNeedNum = needNum * numRate; // Float newNeedNum = needNum * numRate;
item.setNeedNum(newNeedNum.intValue()); // item.setNeedNum(newNeedNum.intValue());
liteOrderItemDao.save(item); // liteOrderItemDao.save(item);
// }
//LiteOrder liteOrder = liteOrderDao.findWithItemsByOrderNo(orderNo);
LiteOrder liteOrder = TaskService.liteOrderMap.get(orderNo);
if(liteOrder == null){
log.info("缓存中未找到["+orderNo+"],从数据库中重新加载");
liteOrder = liteOrderDao.findWithItemsByOrderNo(orderNo);
}
if(liteOrder != null){
liteOrderDao.updateOrderTimes(liteOrder.getId(),numRate);
liteOrder.setOrderTimes(numRate);
TaskService.liteOrderMap.put(liteOrder.getOrderNo(), liteOrder);
} }
LiteOrder liteOrder = liteOrderDao.findWithItemsByOrderNo(orderNo);
TaskService.liteOrderMap.put(liteOrder.getOrderNo(), liteOrder);
return "0"+getText("shelf.msg.opSucess",request.getLocale(),"操作成功"); return "0"+getText("shelf.msg.opSucess",request.getLocale(),"操作成功");
} }
}catch (Exception e){ }catch (Exception e){
......
...@@ -63,7 +63,7 @@ component.amount=Qty ...@@ -63,7 +63,7 @@ component.amount=Qty
component.encapsulation=Package component.encapsulation=Package
component.unit=Unit component.unit=Unit
component.unitCost=Unit Cost component.unitCost=Unit Cost
component.provider=Supplier component.provider=Supplier Code/PN
component.providerNumber=Supplier No. component.providerNumber=Supplier No.
component.producer=Manufacturer component.producer=Manufacturer
component.producerNumber=Manufacturer No. component.producerNumber=Manufacturer No.
...@@ -92,8 +92,7 @@ barcode.partNumber=Part Number ...@@ -92,8 +92,7 @@ barcode.partNumber=Part Number
barcode.amount=Qty barcode.amount=Qty
barcode.plateSize=Diameter barcode.plateSize=Diameter
barcode.height=Height barcode.height=Height
barcode.provider=Supplier barcode.provider=Supplier Code/PN
barcode.supplierPn=Supplier PN
barcode.batch=Batch barcode.batch=Batch
barcode.expireDate=Expiration Date barcode.expireDate=Expiration Date
barcode.saveSuccess=Barcode Saved barcode.saveSuccess=Barcode Saved
...@@ -152,6 +151,7 @@ storage.type.cabinet=Cabinet ...@@ -152,6 +151,7 @@ storage.type.cabinet=Cabinet
storage.type.solderPaste=SMD-SP storage.type.solderPaste=SMD-SP
storage.type.smdVl=SMD-VL storage.type.smdVl=SMD-VL
storage.type.smdXl=SMD-XL storage.type.smdXl=SMD-XL
storage.type.smdDuo=SMD-DUO
storage.type.codeShelf=Code Shelf storage.type.codeShelf=Code Shelf
storage.type.accShelf=Smart Shelf storage.type.accShelf=Smart Shelf
storage.compatibility=Compatibility storage.compatibility=Compatibility
...@@ -361,7 +361,7 @@ shelf.msg.opSucess=Operation complete ...@@ -361,7 +361,7 @@ shelf.msg.opSucess=Operation complete
shelf.msg.notFound=Shelf is not found. shelf.msg.notFound=Shelf is not found.
shelf.msg.outOk=Please take out the material from the location [{0}] shelf.msg.outOk=Please take out the material from the location [{0}]
shelf.msg.outConfirm=Delivery confirmation from [{0}] succeeded. shelf.msg.outConfirm=Delivery confirmation from [{0}] succeeded.
shelf.msg.noTask=Failed\: the material is in [{0}], but no task for it. shelf.msg.noTask=Failed: the material is in [{0}], but no task for it.
shelf.msg.outError=No material is found. shelf.msg.outError=No material is found.
shelf.msg.inOk=Please put the material in the location [{0}] shelf.msg.inOk=Please put the material in the location [{0}]
shelf.msg.inError=No suitable location for [{0}] is found. shelf.msg.inError=No suitable location for [{0}] is found.
...@@ -380,6 +380,9 @@ order.out.failed=Can not execute task ...@@ -380,6 +380,9 @@ 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
order.error.executing=The task is executing. order.error.executing=The task is executing.
order.inventory=inventory order.inventory=inventory
order.quantity=quantity
order.outQuantity=out quantity
order.feeder=feeder
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
order.close=Close order.close=Close
...@@ -407,12 +410,14 @@ storage.virtual.numEmpty=Reel Count is required. ...@@ -407,12 +410,14 @@ storage.virtual.numEmpty=Reel Count is required.
storage.virtual.numErrory=Reel Count must be a number that is greater than 0. storage.virtual.numErrory=Reel Count must be a number that is greater than 0.
barcode.error.noRi=Barcode rule must has RI and PN fields. barcode.error.noRi=Barcode rule must has RI and PN fields.
barcode.error.maxRule=The maximum of barcode rule is 12
barcode.error.notFound=Barcode is not found. barcode.error.notFound=Barcode is not found.
error.barcode.inQueue=Failed\: The barcode [{0}] is in queue. error.barcode.inQueue=Failed\: The barcode [{0}] is in queue.
error.pos.inQueue=Failed\: The location [{0}] is in queue. error.pos.inQueue=Failed\: The location [{0}] is in queue.
error.barcode.empty=No barcode is scanned. error.barcode.empty=No barcode is scanned.
error.barcode.many=more than one valid barcodes were found. error.barcode.many=more than one valid barcodes were found.
error.storage.unavailable=The storage is unavailable. error.storage.unavailable=The storage is unavailable.
error.storage.offline=The storage [{0}] is offline.
error.storage.noStorage=There is no storage can use. error.storage.noStorage=There is no storage can use.
error.storage.noPos=There is no availble position of [{0}] error.storage.noPos=There is no availble position of [{0}]
error.barcode.wrongSize=The reel has wrong size [{0}] error.barcode.wrongSize=The reel has wrong size [{0}]
...@@ -434,6 +439,7 @@ error.barcode.wrongProduceDate=The manufacturing date is wrong ...@@ -434,6 +439,7 @@ error.barcode.wrongProduceDate=The manufacturing date is wrong
error.barcode.pnNotExist=x Component {0} does not exist error.barcode.pnNotExist=x Component {0} does not exist
error.barcode.errorSize=x The reel has no size. 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.
error.barcode.taskNotEnd=Failure\: the task of the material[{0}] is not end.
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. barcode.error.used=Barcode is used.
......
...@@ -5,7 +5,7 @@ storage.clearAllPos=Clear All ...@@ -5,7 +5,7 @@ storage.clearAllPos=Clear All
shelf.msg.notFound=Shelf is not found. shelf.msg.notFound=Shelf is not found.
button.checkout=Material Retrieval button.checkout=Material Retrieval
op.status.pause=Process paused op.status.pause=Process paused
barcode.provider=Supplier barcode.provider=Supplier Code/PN
cabinet.error.validOp=Operation failure\: unable to open the door cabinet.error.validOp=Operation failure\: unable to open the door
workOrder.deleteSuccess=Work Order deleted workOrder.deleteSuccess=Work Order deleted
updatePassword.newPassword.label=New Password updatePassword.newPassword.label=New Password
...@@ -164,7 +164,7 @@ op.7=Rewarm Putting ...@@ -164,7 +164,7 @@ op.7=Rewarm Putting
op.6=Rewarm Taking op.6=Rewarm Taking
storage.virtual.numErrory=Reel quantity limit must be a number greater than 0. storage.virtual.numErrory=Reel quantity limit must be a number greater than 0.
barcode.error.component.notExist=No component is tied to {0}, please check. barcode.error.component.notExist=No component is tied to {0}, please check.
component.provider=Supplier component.provider=Supplier Code/PN
op.2=Material Retrieval op.2=Material Retrieval
button.return=Return button.return=Return
op.1=Material Storage op.1=Material Storage
...@@ -423,3 +423,10 @@ order.error.executing=The task is executing. ...@@ -423,3 +423,10 @@ order.error.executing=The task is executing.
error.barcode.noValidCode=There is no valid barcode in the [{0}] scanned code \: {1} error.barcode.noValidCode=There is no valid barcode in the [{0}] scanned code \: {1}
error.file.culumn.required=The column {0} is required. error.file.culumn.required=The column {0} is required.
file.upload.result=Read [{0}] items\: add\u3010{1}\u3011items, update\u3010{2}\u3011items. file.upload.result=Read [{0}] items\: add\u3010{1}\u3011items, update\u3010{2}\u3011items.
order.quantity=quantity
order.outQuantity=out quantity
order.feeder=feeder
storage.type.smdDuo=SMD-DUO
error.storage.offline=The storage [{0}] is offline.
barcode.error.maxRule=The maximum of barcode rule is 12
error.barcode.taskNotEnd=Failure\: the task of the material[{0}] is not end.
...@@ -215,7 +215,7 @@ shelf.msg.scanPos=\u30B9\u30C8\u30EC\u30FC\u30B8\u30B3\u30FC\u30C9\u3092\u30B9\u ...@@ -215,7 +215,7 @@ shelf.msg.scanPos=\u30B9\u30C8\u30EC\u30FC\u30B8\u30B3\u30FC\u30C9\u3092\u30B9\u
barcode.error.used=\u4F7F\u7528\u6E08\u307F\u306E\u30D0\u30FC\u30B3\u30FC\u30C9\u306F\u524A\u9664\u3067\u304D\u306A\u3044 barcode.error.used=\u4F7F\u7528\u6E08\u307F\u306E\u30D0\u30FC\u30B3\u30FC\u30C9\u306F\u524A\u9664\u3067\u304D\u306A\u3044
storage.slotAmount=\u30B9\u30C8\u30EC\u30FC\u30B8\u306E\u6570\u91CF storage.slotAmount=\u30B9\u30C8\u30EC\u30FC\u30B8\u306E\u6570\u91CF
area.name=\u30A8\u30EA\u30A2\u540D\u79F0 area.name=\u30A8\u30EA\u30A2\u540D\u79F0
shelf.msg.noTask=\u64CD\u4F5C\u5931\u6557\uFF1A\u30B9\u30C8\u30EC\u30FC\u30B8[{0}]\u306E\u4E2D\u306B\u3042\u308A\u307E\u3059\u304C\u3001\u5BFE\u5FDC\u3059\u308B\u51FA\u5EAB\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u3089\u306A\u3044 shelf.msg.noTask=\u64CD\u4F5C\u5931\u6557\: \u30B9\u30C8\u30EC\u30FC\u30B8[{0}]\u306E\u4E2D\u306B\u3042\u308A\u307E\u3059\u304C\u3001\u5BFE\u5FDC\u3059\u308B\u51FA\u5EAB\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u3089\u306A\u3044
area.view.subtitle=\u30A8\u30EA\u30A2\u76E3\u8996 area.view.subtitle=\u30A8\u30EA\u30A2\u76E3\u8996
dataLog.type=\u30BF\u30A4\u30D7 dataLog.type=\u30BF\u30A4\u30D7
shelf.nextPos.wrongSize=x \u6B21\u306E\u30B9\u30C8\u30EC\u30FC\u30B8[{0}]\u306E\u30B5\u30A4\u30BA[{2}]\u3068\u30EA\u30FC\u30EB\u306E\u30B5\u30A4\u30BA\u304C\u4E00\u81F4\u3057\u3066\u3044\u306A\u3044\u3001\u30B9\u30C8\u30EC\u30FC\u30B8\u306E\u30B3\u30FC\u30C9\u3092\u518D\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002 shelf.nextPos.wrongSize=x \u6B21\u306E\u30B9\u30C8\u30EC\u30FC\u30B8[{0}]\u306E\u30B5\u30A4\u30BA[{2}]\u3068\u30EA\u30FC\u30EB\u306E\u30B5\u30A4\u30BA\u304C\u4E00\u81F4\u3057\u3066\u3044\u306A\u3044\u3001\u30B9\u30C8\u30EC\u30FC\u30B8\u306E\u30B3\u30FC\u30C9\u3092\u518D\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002
...@@ -422,3 +422,10 @@ order.error.executing=The task is executing. ...@@ -422,3 +422,10 @@ order.error.executing=The task is executing.
error.barcode.noValidCode={0} \u306F\u6709\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9\u3067\u306F\u306A\u3044 error.barcode.noValidCode={0} \u306F\u6709\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9\u3067\u306F\u306A\u3044
error.file.culumn.required=\u6587\u4EF6\u672A\u5305\u542B{0}\u5217 error.file.culumn.required=\u6587\u4EF6\u672A\u5305\u542B{0}\u5217
file.upload.result=\u8BFB\u53D6\u5230[{0}]\u6761\u7269\u6599\u4FE1\u606F\:\u65B0\u589E\u3010{1}\u3011\u66F4\u65B0\u3010{2}\u3011 file.upload.result=\u8BFB\u53D6\u5230[{0}]\u6761\u7269\u6599\u4FE1\u606F\:\u65B0\u589E\u3010{1}\u3011\u66F4\u65B0\u3010{2}\u3011
order.quantity=\u9700\u6C42\u6570\u91CF
order.outQuantity=\u5DF2\u51FA\u6570\u91CF
order.feeder=\u7AD9\u4F4D
storage.type.smdDuo=SMD-DUO
error.storage.offline=\u8BBE\u5907[{0}]\u79BB\u7EBF
barcode.error.maxRule=The maximum of barcode rule is 12
error.barcode.taskNotEnd=\u6599\u76D8[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u65E0\u6CD5\u6267\u884C\u5165\u5E93\u64CD\u4F5C
...@@ -5,7 +5,7 @@ storage.clearAllPos=\u6E05\u7A7A\u6240\u6709\u4ED3\u4F4D ...@@ -5,7 +5,7 @@ storage.clearAllPos=\u6E05\u7A7A\u6240\u6709\u4ED3\u4F4D
shelf.msg.notFound=\u672A\u627E\u5230\u6599\u67B6 shelf.msg.notFound=\u672A\u627E\u5230\u6599\u67B6
button.checkout=\u51FA\u5E93 button.checkout=\u51FA\u5E93
op.status.pause=\u5DF2\u6682\u505C op.status.pause=\u5DF2\u6682\u505C
barcode.provider=\u4F9B\u5E94\u5546 barcode.provider=\u4F9B\u5E94\u5546\u7F16\u7801
cabinet.error.validOp=\u64CD\u4F5C\u5931\u8D25\uFF1A\u65E0\u6CD5\u5F00\u95E8 cabinet.error.validOp=\u64CD\u4F5C\u5931\u8D25\uFF1A\u65E0\u6CD5\u5F00\u95E8
workOrder.deleteSuccess=\u5DE5\u5355\u5220\u9664\u6210\u529F workOrder.deleteSuccess=\u5DE5\u5355\u5220\u9664\u6210\u529F
updatePassword.newPassword.label=\u65B0\u5BC6\u7801 updatePassword.newPassword.label=\u65B0\u5BC6\u7801
...@@ -163,7 +163,7 @@ op.7=\u56DE\u6E29\u653E\u6599 ...@@ -163,7 +163,7 @@ op.7=\u56DE\u6E29\u653E\u6599
op.6=\u56DE\u6E29\u53D6\u6599 op.6=\u56DE\u6E29\u53D6\u6599
storage.virtual.numErrory=\u53EF\u653E\u6599\u76D8\u6570\u91CF\u5FC5\u987B\u4E3A\u5927\u4E8E0\u7684\u6570\u5B57 storage.virtual.numErrory=\u53EF\u653E\u6599\u76D8\u6570\u91CF\u5FC5\u987B\u4E3A\u5927\u4E8E0\u7684\u6570\u5B57
barcode.error.component.notExist=\u6761\u7801{0}\u5173\u8054\u7684\u6599\u4EF6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u6570\u636E\u662F\u5426\u6B63\u786E\u3002 barcode.error.component.notExist=\u6761\u7801{0}\u5173\u8054\u7684\u6599\u4EF6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u6570\u636E\u662F\u5426\u6B63\u786E\u3002
component.provider=\u4F9B\u5E94\u5546 component.provider=\u4F9B\u5E94\u5546\u7F16\u7801
op.2=\u51FA\u5E93 op.2=\u51FA\u5E93
button.return=\u8FD4\u56DE\u5217\u8868 button.return=\u8FD4\u56DE\u5217\u8868
op.1=\u5165\u5E93 op.1=\u5165\u5E93
...@@ -215,7 +215,7 @@ barcode.error.used=\u5DF2\u88AB\u4F7F\u7528\u7684\u6761\u7801\u65E0\u6CD5\u5220\ ...@@ -215,7 +215,7 @@ barcode.error.used=\u5DF2\u88AB\u4F7F\u7528\u7684\u6761\u7801\u65E0\u6CD5\u5220\
shelf.msg.scanPos=\u8BF7\u5148\u626B\u63CF\u5E93\u4F4D\u7801 shelf.msg.scanPos=\u8BF7\u5148\u626B\u63CF\u5E93\u4F4D\u7801
storage.slotAmount=\u4ED3\u4F4D\u6570\u91CF storage.slotAmount=\u4ED3\u4F4D\u6570\u91CF
area.name=\u533A\u57DF\u540D\u79F0 area.name=\u533A\u57DF\u540D\u79F0
shelf.msg.noTask=\u64CD\u4F5C\u5931\u8D25\uFF1A\u5DF2\u5728\u5E93\u4F4D[{0}]\u4E2D\uFF0C\u672A\u627E\u5230\u5BF9\u5E94\u7684\u51FA\u5E93\u4EFB\u52A1 shelf.msg.noTask=\u64CD\u4F5C\u5931\u8D25: \u5DF2\u5728\u5E93\u4F4D[{0}]\u4E2D\uFF0C\u672A\u627E\u5230\u5BF9\u5E94\u7684\u51FA\u5E93\u4EFB\u52A1
area.view.subtitle=\u533A\u57DF\u76D1\u63A7 area.view.subtitle=\u533A\u57DF\u76D1\u63A7
dataLog.type=\u7C7B\u578B dataLog.type=\u7C7B\u578B
shelf.nextPos.wrongSize=\u5E93\u4F4D[{0}]\u5C3A\u5BF8[{1}]\u4E0E\u6599\u76D8\u5C3A\u5BF8[{2}]\u4E0D\u7B26\uFF0C\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801 shelf.nextPos.wrongSize=\u5E93\u4F4D[{0}]\u5C3A\u5BF8[{1}]\u4E0E\u6599\u76D8\u5C3A\u5BF8[{2}]\u4E0D\u7B26\uFF0C\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
...@@ -423,3 +423,10 @@ order.error.executing=\u4EFB\u52A1\u6B63\u5728\u6267\u884C ...@@ -423,3 +423,10 @@ order.error.executing=\u4EFB\u52A1\u6B63\u5728\u6267\u884C
error.barcode.noValidCode=\u626B\u5230\u7684{0}\u4E2A\u6761\u7801\u4E2D\u672A\u627E\u5230\u6709\u6548\u6761\u7801{1} error.barcode.noValidCode=\u626B\u5230\u7684{0}\u4E2A\u6761\u7801\u4E2D\u672A\u627E\u5230\u6709\u6548\u6761\u7801{1}
error.file.culumn.required=\u6587\u4EF6\u672A\u5305\u542B{0}\u5217 error.file.culumn.required=\u6587\u4EF6\u672A\u5305\u542B{0}\u5217
file.upload.result=\u8BFB\u53D6\u5230[{0}]\u6761\u7269\u6599\u4FE1\u606F\:\u65B0\u589E\u3010{1}\u3011\u66F4\u65B0\u3010{2}\u3011 file.upload.result=\u8BFB\u53D6\u5230[{0}]\u6761\u7269\u6599\u4FE1\u606F\:\u65B0\u589E\u3010{1}\u3011\u66F4\u65B0\u3010{2}\u3011
order.quantity=\u9700\u6C42\u6570\u91CF
order.outQuantity=\u5DF2\u51FA\u6570\u91CF
order.feeder=\u7AD9\u4F4D
storage.type.smdDuo=SMD-DUO
error.storage.offline=\u8BBE\u5907[{0}]\u79BB\u7EBF
barcode.error.maxRule=\u6761\u7801\u89C4\u5219\u7684\u6700\u5927\u6570\u91CF\u4E3A12
error.barcode.taskNotEnd=\u6599\u76D8[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u65E0\u6CD5\u6267\u884C\u5165\u5E93\u64CD\u4F5C
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<!--<mongo:mongo id="mongo" replica-set="${mongo.replica-set}">--> <!--<mongo:mongo id="mongo" replica-set="${mongo.replica-set}">-->
<mongo:mongo id="mongo" host="${mongo.host}" port="27017"> <mongo:mongo id="mongo" host="192.168.1.34" port="27017">
<mongo:options connections-per-host="${mongo.connectionsPerHost}" <mongo:options connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}" connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
......
...@@ -452,14 +452,14 @@ ...@@ -452,14 +452,14 @@
<form:input type="text" id="provider" path="provider" class="form-control"/> <form:input type="text" id="provider" path="provider" class="form-control"/>
</div> </div>
</div> </div>
<%--供应商PN--%> <%--&lt;%&ndash;供应商PN&ndash;%&gt;--%>
<label class="control-label col-md-2"><fmt:message key="barcode.supplierPn"/> </label> <%--<label class="control-label col-md-2"><fmt:message key="barcode.supplierPn"/> </label>--%>
<div class="col-md-3"> <%--<div class="col-md-3">--%>
<div style="text-align:left" class="input-group"> <%--<div style="text-align:left" class="input-group">--%>
<form:input type="text" id="supplierPn" path="supplierPn" class="form-control"/> <%--<form:input type="text" id="supplierPn" path="supplierPn" class="form-control"/>--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
<%--&lt;%&ndash;贵重物料&ndash;%&gt;--%> <%--&lt;%&ndash;贵重物料&ndash;%&gt;--%>
<%--<label class="control-label col-md-2"><fmt:message key="otherComponent.expensive"/> </label>--%> <%--<label class="control-label col-md-2"><fmt:message key="otherComponent.expensive"/> </label>--%>
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
</div> </div>
<div class="row iconMenu"> <div class="row iconMenu">
<security:authorize ifAnyGranted="ROLE_MANAGE_STACK_OUT"> <security:authorize ifAnyGranted="ROLE_MANAGE_STACK_OUT">
<div class="col-md-2 col-xs-2 menuItem"> <div class="col-md-2 col-xs-4 menuItem">
<a href="${ctx}/storage/boxChart.html"> <a href="${ctx}/storage/boxChart.html">
<img src="${ctx}/images/menu/10.png" class="menuImg"/> <img src="${ctx}/images/menu/10.png" class="menuImg"/>
<div>KANBAN</div> <div>KANBAN</div>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</div> </div>
</security:authorize> </security:authorize>
<security:authorize ifAnyGranted="ROLE_MANAGE_COMPONENT"> <security:authorize ifAnyGranted="ROLE_MANAGE_COMPONENT">
<div class="col-md-2 col-xs-2 menuItem"> <div class="col-md-2 col-xs-4 menuItem">
<a href="${ctx}/component/componentSearch.html?type=0"> <a href="${ctx}/component/componentSearch.html?type=0">
<img src="${ctx}/images/menu/4.png" class="menuImg"/> <img src="${ctx}/images/menu/4.png" class="menuImg"/>
<div><fmt:message key="menu.product"/></div> <div><fmt:message key="menu.product"/></div>
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
</div> </div>
</security:authorize> </security:authorize>
<security:authorize ifAnyGranted="ROLE_MANAGE_STACK_OUT, ROLE_MANAGE_FEEDER"> <security:authorize ifAnyGranted="ROLE_MANAGE_STACK_OUT, ROLE_MANAGE_FEEDER">
<div class="col-md-2 col-xs-2 menuItem"> <div class="col-md-2 col-xs-4 menuItem">
<a href="${ctx}/component/storagePosFind.html"> <a href="${ctx}/component/storagePosFind.html">
<img src="${ctx}/images/menu/5.png" class="menuImg"/> <img src="${ctx}/images/menu/5.png" class="menuImg"/>
<div><fmt:message key="menu.order"/></div> <div><fmt:message key="menu.order"/></div>
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
</div> </div>
</security:authorize> </security:authorize>
<security:authorize ifAnyGranted="ROLE_MANAGE_STACK_OUT"> <security:authorize ifAnyGranted="ROLE_MANAGE_STACK_OUT">
<div class="col-md-2 col-xs-2 menuItem"> <div class="col-md-2 col-xs-4 menuItem">
<a href="${ctx}/component/inventory.html"> <a href="${ctx}/component/inventory.html">
<img src="${ctx}/images/menu/9.png" class="menuImg"/> <img src="${ctx}/images/menu/9.png" class="menuImg"/>
<div><fmt:message key="menu.cloud"/></div> <div><fmt:message key="menu.cloud"/></div>
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
</security:authorize> </security:authorize>
<security:authorize ifAnyGranted="ROLE_MANAGE_BARCODE"> <security:authorize ifAnyGranted="ROLE_MANAGE_BARCODE">
<div class="col-md-2 col-xs-2 menuItem"> <div class="col-md-2 col-xs-4 menuItem">
<a href="${ctx}/barcode/barcodeSearch.html"> <a href="${ctx}/barcode/barcodeSearch.html">
<img src="${ctx}/images/menu/2.png" class="menuImg"/> <img src="${ctx}/images/menu/2.png" class="menuImg"/>
<div><fmt:message key="menu.barCode"/></div> <div><fmt:message key="menu.barCode"/></div>
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
</security:authorize> </security:authorize>
<security:authorize ifAnyGranted="ROLE_MANAGE_DATALOG"> <security:authorize ifAnyGranted="ROLE_MANAGE_DATALOG">
<div class="col-md-2 col-xs-2 menuItem"> <div class="col-md-2 col-xs-4 menuItem">
<a href="${ctx}/dataLog/search.html"> <a href="${ctx}/dataLog/search.html">
<img src="${ctx}/images/menu/1.png" class="menuImg"/> <img src="${ctx}/images/menu/1.png" class="menuImg"/>
<div><fmt:message key="menu.bigdata"/></div> <div><fmt:message key="menu.bigdata"/></div>
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
</security:authorize> </security:authorize>
<security:authorize ifAnyGranted="ROLE_MANAGE_USER,ROLE_MANAGE_ROLE"> <security:authorize ifAnyGranted="ROLE_MANAGE_USER,ROLE_MANAGE_ROLE">
<div class="col-md-2 col-xs-2 menuItem"> <div class="col-md-2 col-xs-4 menuItem">
<a href="${ctx}/system/settings.html"> <a href="${ctx}/system/settings.html">
<img src="${ctx}/images/menu/6.png" class="menuImg"/> <img src="${ctx}/images/menu/6.png" class="menuImg"/>
<div><fmt:message key="menu.system"/></div> <div><fmt:message key="menu.system"/></div>
......
...@@ -268,7 +268,11 @@ ...@@ -268,7 +268,11 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="modal-title"></h4> <h4 class="modal-title" id="modal-title" style="font-weight: 500;line-height: 2;margin-bottom: 5px;"><fmt:message key="button.checkout"/>
<a href="${ctx}/component/storagePosFind.html" class="btn yellow right" id="findAndOut" style="margin-right:20px;">
<i class="fa fa-sign-out"></i><fmt:message key="allBoxView.findAndOut"/>
</a>
</h4>
<input type="text" class="form-control" id="searchPn"/> <input type="text" class="form-control" id="searchPn"/>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -338,10 +342,14 @@ ...@@ -338,10 +342,14 @@
<fmt:message key="barcode.partNumber"/> <fmt:message key="barcode.partNumber"/>
</th> </th>
<th> <th>
<fmt:message key="checkOut.pos"/> <fmt:message key="order.feeder"/>
</th>
<th>
<fmt:message key="order.quantity"/>
</th> </th>
<th> <th>
<fmt:message key="component.amount"/> <fmt:message key="order.outQuantity"/>
</th> </th>
<th> <th>
<fmt:message key="order.inventory"/> <fmt:message key="order.inventory"/>
...@@ -526,7 +534,7 @@ ...@@ -526,7 +534,7 @@
var table = $('#orderItemsTable').DataTable(); var table = $('#orderItemsTable').DataTable();
table.clear(); table.clear();
var btnStr = "${supplementaryFinish}"; var btnStr = "${supplementary}";
for(var i in data){ for(var i in data){
var opStr = '<button class="btn yellow" onclick="checkoutByPartNumber(\''+data[i].pn+'\',\''+data[i].id+'\');"><i class="fa fa-upload"></i>'+btnStr+'</button>'; var opStr = '<button class="btn yellow" onclick="checkoutByPartNumber(\''+data[i].pn+'\',\''+data[i].id+'\');"><i class="fa fa-upload"></i>'+btnStr+'</button>';
...@@ -534,7 +542,8 @@ ...@@ -534,7 +542,8 @@
// //已出完或库存不足 // //已出完或库存不足
// opStr = ""; // opStr = "";
// } // }
table.row.add( [ i, data[i].pn, data[i].feederInfo,data[i].outNum+"/"+data[i].needNum,data[i].inventoryNum,opStr] ); var needQty = data[i].needNum + " x " + order.orderTimes;
table.row.add( [ i, data[i].pn, data[i].feederInfo,needQty,data[i].outNum,data[i].inventoryNum,opStr] );
} }
table.order( [ 3, 'asc' ] ).draw(); table.order( [ 3, 'asc' ] ).draw();
...@@ -557,11 +566,7 @@ ...@@ -557,11 +566,7 @@
var pnList = []; var pnList = [];
$("#outPn").click(function(){ $("#outPn").click(function(){
$("#searchPn").val(""); $("#searchPn").val("");
var findAndOutHref = '${ctx}/component/storagePosFind.html';
$("#findAndOut").attr("href",findAndOutHref);
var modalTitle = "${title_checkout}";
$("#modal-title").text(modalTitle);
$.post("${ctx}/service/store/storageTypeInventory", {cid: '${cids}'}, function (data) { $.post("${ctx}/service/store/storageTypeInventory", {cid: '${cids}'}, function (data) {
pnList = data; pnList = data;
showpnList(); showpnList();
......
...@@ -140,11 +140,15 @@ ...@@ -140,11 +140,15 @@
</div> </div>
<div id="allPartNumbers" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false"> <div id="allPartNumbers" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog" style="width: 800px; margin-top: 10%;"> <div class="modal-dialog" style="margin-top: 10%;width:80%;margin-left:10%;">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="modal-title" style="font-weight: 500;">出库</h4> <h4 class="modal-title" id="modal-title" style="font-weight: 500;line-height: 2;margin-bottom: 5px;"><fmt:message key="button.checkout"/>
<a href="${ctx}/component/storagePosFind.html" class="btn yellow right" id="findAndOut" style="margin-right:20px;">
<i class="fa fa-sign-out"></i><fmt:message key="allBoxView.findAndOut"/>
</a>
</h4>
<input type="text" class="form-control" id="searchPn"/> <input type="text" class="form-control" id="searchPn"/>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -157,7 +161,7 @@ ...@@ -157,7 +161,7 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<div id="footerBtn"> <div id="footerBtn">
<a href="" class="btn yellow left" id="findAndOut"><i class="fa fa-sign-out"></i><fmt:message key="allBoxView.findAndOut"/></a> <%--<a href="" class="btn yellow left" id="findAndOut"><i class="fa fa-sign-out"></i><fmt:message key="allBoxView.findAndOut"/></a>--%>
<button type="button" class="btn green" onclick="lastPage()" id="lastPage"><fmt:message key="allBoxView.lastPage"/></button> <button type="button" class="btn green" onclick="lastPage()" id="lastPage"><fmt:message key="allBoxView.lastPage"/></button>
<button type="button" class="btn green" onclick="nextPage()" id="nextPage"><fmt:message key="allBoxView.nextPage"/></button> <button type="button" class="btn green" onclick="nextPage()" id="nextPage"><fmt:message key="allBoxView.nextPage"/></button>
...@@ -233,11 +237,6 @@ ...@@ -233,11 +237,6 @@
showPartNumbers = function(type){ showPartNumbers = function(type){
$("#searchPn").val(); $("#searchPn").val();
var findAndOutHref = '${ctx}/component/storagePosFind.html';
$("#findAndOut").attr("href",findAndOutHref);
var modalTitle = "${title_checkout}";
$("#modal-title").text(modalTitle);
$.post("${ctx}/service/store/storageTypeInventory", {type: type, cid: '${show}'}, function (data) { $.post("${ctx}/service/store/storageTypeInventory", {type: type, cid: '${show}'}, function (data) {
if(!isLimitOpt(data)){ if(!isLimitOpt(data)){
pageIndex = -1; pageIndex = -1;
......
...@@ -501,10 +501,18 @@ ...@@ -501,10 +501,18 @@
} }
checkLogin = function(){
$.post("${ctx}/service/store/getLoginUser", {}, function (data) {
if(data == ""){
window.location.href="";
}
});
}
//updateTasks('${show}'); //updateTasks('${show}');
setInterval(function(){ setInterval(function(){
updateTasks('${show}'); updateTasks('${show}');
checkLogin();
}, 1000); }, 1000);
waitting = function(){ waitting = function(){
......
...@@ -96,10 +96,14 @@ ...@@ -96,10 +96,14 @@
<fmt:message key="barcode.partNumber"/> <fmt:message key="barcode.partNumber"/>
</th> </th>
<th> <th>
<fmt:message key="checkOut.pos"/> <fmt:message key="order.feeder"/>
</th> </th>
<th> <th>
<fmt:message key="component.amount"/> <fmt:message key="order.quantity"/>
</th>
<th>
<fmt:message key="order.outQuantity"/>
</th> </th>
<th> <th>
<fmt:message key="order.inventory"/> <fmt:message key="order.inventory"/>
...@@ -131,7 +135,8 @@ ...@@ -131,7 +135,8 @@
table.clear(); table.clear();
for(var i in data){ for(var i in data){
table.row.add( [ i, data[i].pn, data[i].feederInfo,data[i].outNum+"/"+data[i].needNum,data[i].inventoryNum] ); var needQty = data[i].needNum + " x " + order.orderTimes;
table.row.add( [ i, data[i].pn, data[i].feederInfo,needQty, data[i].outNum,data[i].inventoryNum] );
} }
table.order( [ 3, 'asc' ] ).draw(); table.order( [ 3, 'asc' ] ).draw();
......
...@@ -234,7 +234,7 @@ ...@@ -234,7 +234,7 @@
</jsp-config> </jsp-config>
<session-config> <session-config>
<session-timeout>15</session-timeout> <session-timeout>10</session-timeout>
<cookie-config> <cookie-config>
<http-only>true</http-only> <http-only>true</http-only>
<!--<secure>true</secure>--> <!--<secure>true</secure>-->
......
...@@ -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: 1.4.919</span> <span class="right" style="color: #a3a3a3;">Version: 1.5.1318</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>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!--<![endif]--> <!--<![endif]-->
<!-- BEGIN HEAD --> <!-- BEGIN HEAD -->
<head> <head>
<title>云料仓</title> <title>SMD-BOX</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="width=device-width, initial-scale=1.0" name="viewport"/> <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"> <meta http-equiv="Content-type" content="text/html; charset=utf-8">
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!