Commit b1cd5c35 sunke

中英文,料仓状态页面放入缓存

1 个父辈 3d5aabd7
正在显示 27 个修改的文件 包含 344 行增加182 行删除
To get started, please complete the following steps:
1. Download and install a MySQL 5.x database from ## 阳光电源:
http://dev.mysql.com/downloads/mysql/5.0.html#downloads.
2. Install maven 3.x, and configure it. 与扫码贴标batch连接:
3. Modify the jdbc property in the pom.xml of myproject, make sure the > URL: http://IP:port/myproject/rest/api/v2/mes/barcode
jdbc url, username and password is correct. > 参数:
4. Run "mvn install" to install the parent pom.xml to your local repository. >> codeStr 条码字符串
>> batch 批次字符串
5. Run "mvn jetty:run" under myproject, and view the application at http://localhost:8080.
It takes long time to download jars at the first time, so be patient.
By the way, there wasn't data in your database, so you need run "mvn dbunit:operation"
to insert the basic data to your DB. Use admin/admin to login the system.
6. If you want to make a war file, just run "mvn package -DskipTests" under myproject,
it will generate a war file under myproject/target.
More information please contact Lu xiaojun.
C:\Windows\system32>mongod --storageEngine=mmapv1 --logappend --directoryperdb --serviceName MongoDB --install C:\Windows\system32>mongod --storageEngine=mmapv1 --logappend --directoryperdb --serviceName MongoDB --install
打印机静默打印: Chrome快捷方式增加:--kiosk-printing 打印机静默打印: Chrome快捷方式增加:--kiosk-printing
......
...@@ -70,7 +70,7 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ { ...@@ -70,7 +70,7 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
private String batchId; private String batchId;
/** /**
* 指定批次显示内容 * 批次显示内容
*/ */
private String batchInfo; private String batchInfo;
......
package com.myproject.bean.update; package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean; import com.myproject.bean.BaseMongoBean;
import com.myproject.bean.json.PlateSizeBean;
import com.myproject.bean.json.UsageItem;
import com.myproject.util.PLATE_SIZE; import com.myproject.util.PLATE_SIZE;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.data.annotation.Transient; import org.springframework.data.annotation.Transient;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* Created by kangmor on 2015/12/3. * Created by kangmor on 2015/12/3.
...@@ -42,27 +46,19 @@ public class Storage extends BaseMongoBean { ...@@ -42,27 +46,19 @@ public class Storage extends BaseMongoBean {
} }
/** /**
* 禁止出入库的 box * 使用情况
*/ */
private List<Integer> disableBoxes; private Map<String, UsageItem> usageMap = new ConcurrentHashMap<>();
/** /**
* 允许放入的料盘尺寸信息 * 禁止出入库的 box
*/ */
@Transient private List<Integer> disableBoxes;
private List<PLATE_SIZE> plateSizes;
public List<Integer> getDisableBoxes() { public List<Integer> getDisableBoxes() {
return disableBoxes; return disableBoxes;
} }
public List<PLATE_SIZE> getPlateSizes() {
return plateSizes;
}
public void setPlateSizes(List<PLATE_SIZE> plateSizes) {
this.plateSizes = plateSizes;
}
/** /**
* 判断 box 是否可用 * 判断 box 是否可用
*/ */
...@@ -214,9 +210,9 @@ public class Storage extends BaseMongoBean { ...@@ -214,9 +210,9 @@ public class Storage extends BaseMongoBean {
* 判断料盘是否能够放入该仓库: 0=完全匹配,1=完全兼容,2=同尺寸兼容 * 判断料盘是否能够放入该仓库: 0=完全匹配,1=完全兼容,2=同尺寸兼容
*/ */
public boolean canPutIn(int w, int h){ public boolean canPutIn(int w, int h){
if(plateSizes != null){ if(usageMap != null){
for (PLATE_SIZE plateSize : plateSizes) { for (UsageItem usageItem : usageMap.values()) {
if(canPutInPos(w,h, plateSize.getW(), plateSize.getH())){ if(canPutInPos(w,h, usageItem.getW(), usageItem.getH())){
return true; return true;
} }
} }
...@@ -239,4 +235,69 @@ public class Storage extends BaseMongoBean { ...@@ -239,4 +235,69 @@ public class Storage extends BaseMongoBean {
public void setCompatibleType(StorageConstants.COMPATIBLE_TYPE compatibleType) { public void setCompatibleType(StorageConstants.COMPATIBLE_TYPE compatibleType) {
this.compatibleType = compatibleType; this.compatibleType = compatibleType;
} }
public Map<String, UsageItem> getUsageMap() {
return usageMap;
}
public void setUsageMap(Map<String, UsageItem> usageMap) {
this.usageMap = usageMap;
}
/**
* 使用一个仓位,更新使用情况
*/
public void useOnePos(StoragePos pos){
if(usageMap != null){
String sizeStr = pos.getSizeStr();
UsageItem usageItem = usageMap.get(sizeStr);
if(usageItem != null){
this.emptySlots = this.emptySlots - 1;
int usedCount = usageItem.getUsedCount();
usageItem.setUsedCount(usedCount + 1);
usageMap.put(sizeStr, usageItem);
}
}
}
public void emptyOnePos(StoragePos pos){
if(usageMap != null){
String sizeStr = pos.getSizeStr();
UsageItem usageItem = usageMap.get(sizeStr);
if(usageItem != null){
this.emptySlots = this.emptySlots + 1;
int usedCount = usageItem.getUsedCount();
usageItem.setUsedCount(usedCount - 1);
usageMap.put(sizeStr, usageItem);
}
}
}
public void initUsage(List<PlateSizeBean> plateSizeBeanList){
usageMap = new ConcurrentHashMap<>();
int totalPosCount = 0;
int emptyPosCount = 0;
for (PlateSizeBean plateSizeBean : plateSizeBeanList) {
String sizeStr = plateSizeBean.getSizeStr();
UsageItem usageItem = usageMap.get(sizeStr);
if(usageItem == null){
usageItem = new UsageItem();
usageItem.setW(plateSizeBean.getPlateSize().getW());
usageItem.setH(plateSizeBean.getPlateSize().getH());
}
if(plateSizeBean.getPlateSize().isUsed()){
int usedCount = plateSizeBean.getCount();
usageItem.setUsedCount(usedCount);
usageItem.setTotalCount(usedCount + usageItem.getTotalCount());
}else{
//未使用的数量
int idleCount = plateSizeBean.getCount();
usageItem.setTotalCount(idleCount + usageItem.getTotalCount());
emptyPosCount = emptyPosCount + idleCount;
}
totalPosCount = totalPosCount + plateSizeBean.getCount();
usageMap.put(sizeStr, usageItem);
}
this.setEmptySlots(emptyPosCount);
this.setTotalSlots(totalPosCount);
}
} }
...@@ -200,4 +200,8 @@ public class StoragePos extends BaseMongoBean { ...@@ -200,4 +200,8 @@ public class StoragePos extends BaseMongoBean {
public void setMergePosList(List<String> mergePosList) { public void setMergePosList(List<String> mergePosList) {
this.mergePosList = mergePosList; this.mergePosList = mergePosList;
} }
public String getSizeStr(){
return w + "x" + h;
}
} }
...@@ -544,12 +544,13 @@ public class BarcodeRule { ...@@ -544,12 +544,13 @@ public class BarcodeRule {
codeStr = ")》@06@120S002@P8908018028@1PBLM18PG121SH1D@31PBLM18PG121SH1D@12V690588124@10VJPN-AM@2P@20P@6D192400@14D210205@30PY@Z1@K0@16K0@V97294419@3SS191908055X1Z@Q4000NAR000@20T1@1TAM961458E@2T@1Z@@"; codeStr = ")》@06@120S002@P8908018028@1PBLM18PG121SH1D@31PBLM18PG121SH1D@12V690588124@10VJPN-AM@2P@20P@6D192400@14D210205@30PY@Z1@K0@16K0@V97294419@3SS191908055X1Z@Q4000NAR000@20T1@1TAM961458E@2T@1Z@@";
// codeStr = "=1+0x0-0x0=A0002"; // codeStr = "=1+0x0-0x0=A0002";
//阳光电源 //阳光电源
//[RI]_PN_PRODATEyyMMdd_QTYxxxx rule = "[RI]_PN_PRODATEyyMMdd_QTYxxxx";
rule = "[RI]_PN_PRODATEyyMMdd_QTY[0:5:4]"; //rule = "[RI]_PN_PRODATEyyMMdd_QTY[0:5:4]";
codeStr = "4500065747_CS000069_180101_0300000041"; codeStr = "4500065747_CS000069_180101_030000041";
codeStr = "4500089600_DC000045_190528_003000006";
//佳世达 //佳世达
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;PRODATEyyyyMMdd[1:8:-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;E20190901 0365;B8C.R2003.V81506072019090103000;R506072019102200356";
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){
......
...@@ -392,7 +392,7 @@ public class FileUploadController extends BaseFormController { ...@@ -392,7 +392,7 @@ public class FileUploadController extends BaseFormController {
storagePosManager.save(storagePos); storagePosManager.save(storagePos);
} }
} }
dataCache.updateStorage(storage); dataCache.reloadStorage(storage);
String msg = "读取到["+list.size()+"]个位置信息:新增【"+newRowCount+"】更新【" +updateRowCount +"】"; String msg = "读取到["+list.size()+"]个位置信息:新增【"+newRowCount+"】更新【" +updateRowCount +"】";
log.info(msg); log.info(msg);
......
...@@ -85,13 +85,13 @@ public class StorageCloudUpdateController extends BaseUpdateController { ...@@ -85,13 +85,13 @@ public class StorageCloudUpdateController extends BaseUpdateController {
} else { } else {
try { try {
Storage storage = storageUpdateForm.getStorage(); Storage storage = storageUpdateForm.getStorage();
storage = dataCache.updateStorage(storage); storage = dataCache.reloadStorage(storage);
fileUpload.setParam(storage.getId()); fileUpload.setParam(storage.getId());
saveMessage(request, getText("storage.saveSuccess", request.getLocale())); saveMessage(request, getText("storage.saveSuccess", request.getLocale()));
return "redirect:storageUpdate.html?id="+storage.getId(); return "redirect:storageUpdate.html?id="+storage.getId();
} catch (ValidateException e) { } catch (Exception e) {
log.error(e); log.error(e);
String errormsg = getText(e.getMessage(), e.getParams(), request.getLocale()); String errormsg = getText(e.getMessage(), request.getLocale());
log.error(errormsg); log.error(errormsg);
saveError(request, errormsg); saveError(request, errormsg);
} }
......
...@@ -173,6 +173,12 @@ public class AccShelfController extends BaseController { ...@@ -173,6 +173,12 @@ public class AccShelfController extends BaseController {
if(storage.isAccShelf()){ if(storage.isAccShelf()){
Barcode barcode = codeBean.getBarcode(); Barcode barcode = codeBean.getBarcode();
try { try {
if(barcode.getPlateSize() == 1){
//长宽为1的需要弹框设置尺寸
throw new ValidateException("error.barcode.errorSize","条码未设置尺寸");
}
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
//5秒内同一个条码忽略 //5秒内同一个条码忽略
Date usedDate = barcode.getUsedDate(); Date usedDate = barcode.getUsedDate();
...@@ -216,7 +222,7 @@ public class AccShelfController extends BaseController { ...@@ -216,7 +222,7 @@ public class AccShelfController extends BaseController {
} }
} catch (ValidateException e) { } catch (ValidateException e) {
log.error("Error:"+e.getMessage()); log.error("Error:"+e.getMessage());
return e.getMessage(); return getText(e.getMessage(), e.getParams(),request.getLocale(),e.getMessage());
} }
} }
}else{ }else{
......
...@@ -121,6 +121,13 @@ public class StoragePosFindController extends BaseSearchController { ...@@ -121,6 +121,13 @@ public class StoragePosFindController extends BaseSearchController {
request.setAttribute("lockId",lockId); request.setAttribute("lockId",lockId);
} }
String batch = request.getParameter("batch");
if(!Strings.isNullOrEmpty(batch)){
Pattern pattern = Pattern.compile(batch, Pattern.CASE_INSENSITIVE);
baseCriteria.and("barcode.batch").regex(pattern);
request.setAttribute("batch",batch);
}
addLikeParam(baseCriteria, request, "otherField1"); addLikeParam(baseCriteria, request, "otherField1");
addLikeParam(baseCriteria, request, "otherField2"); addLikeParam(baseCriteria, request, "otherField2");
addLikeParam(baseCriteria, request, "otherField3"); addLikeParam(baseCriteria, request, "otherField3");
......
...@@ -66,13 +66,13 @@ public class StorageUpdateController extends BaseUpdateController { ...@@ -66,13 +66,13 @@ public class StorageUpdateController extends BaseUpdateController {
return getSuccessView(); return getSuccessView();
} else { } else {
try { try {
dataCache.updateStorage(storage); dataCache.reloadStorage(storage);
//fileUpload.setParam(storage.getId()); //fileUpload.setParam(storage.getId());
saveMessage(request, getText("storage.saveSuccess", request.getLocale())); saveMessage(request, getText("storage.saveSuccess", request.getLocale()));
//return "redirect:storageUpdate.html?id="+storage.getId(); //return "redirect:storageUpdate.html?id="+storage.getId();
} catch (ValidateException e) { } catch (Exception e) {
log.error(e); log.error(e);
String errormsg = getText(e.getMessage(), e.getParams(), request.getLocale()); String errormsg = getText(e.getMessage(), request.getLocale());
log.error(errormsg); log.error(errormsg);
saveError(request, errormsg); saveError(request, errormsg);
} }
......
...@@ -204,7 +204,7 @@ public class VirtualBoxController extends BaseController{ ...@@ -204,7 +204,7 @@ public class VirtualBoxController extends BaseController{
} }
storagePosManager.insertAll(posList); storagePosManager.insertAll(posList);
dataCache.updateStorage(virtualStorage); dataCache.reloadStorage(virtualStorage);
return "保存成功"; return "保存成功";
......
...@@ -70,10 +70,11 @@ public class DataLogSearchController extends BaseSearchController { ...@@ -70,10 +70,11 @@ public class DataLogSearchController extends BaseSearchController {
criteria.and("subSourceId").is(pid); criteria.and("subSourceId").is(pid);
} }
String bid = request.getParameter("bid"); String batch = request.getParameter("batch");
if(!Strings.isNullOrEmpty(bid)){ if(!Strings.isNullOrEmpty(batch)){
criteria.and("batchId").is(bid); Pattern pattern = Pattern.compile(batch, Pattern.CASE_INSENSITIVE);
criteria.and("batchInfo").regex(pattern);
} }
if(taskSource != null){ if(taskSource != null){
......
...@@ -7,6 +7,7 @@ import com.google.common.collect.Maps; ...@@ -7,6 +7,7 @@ import com.google.common.collect.Maps;
import com.google.common.collect.Multiset; import com.google.common.collect.Multiset;
import com.myproject.bean.CodeBean; import com.myproject.bean.CodeBean;
import com.myproject.bean.json.InventoryItem; import com.myproject.bean.json.InventoryItem;
import com.myproject.bean.json.PlateSizeBean;
import com.myproject.bean.update.*; import com.myproject.bean.update.*;
import com.myproject.dao.mongo.*; import com.myproject.dao.mongo.*;
import com.myproject.exception.ValidateException; import com.myproject.exception.ValidateException;
...@@ -505,9 +506,13 @@ public class DataCache{ ...@@ -505,9 +506,13 @@ public class DataCache{
if(all != null){ if(all != null){
Map<String, Storage> map = new ConcurrentHashMap<>(); Map<String, Storage> map = new ConcurrentHashMap<>();
for(Storage storage : all){ for(Storage storage : all){
List<PLATE_SIZE> plateSizes = storagePosManager.distinctPlateSize(storage.getId());
storage.setPlateSizes(plateSizes); List<PlateSizeBean> plateSizeBeanList = storagePosManager.getStoragePosUsage(storage.getId());
storage.initUsage(plateSizeBeanList);
map.put(storage.getCid(), storage); map.put(storage.getCid(), storage);
} }
allStorage = map; allStorage = map;
log.info("加载所有料仓["+all.size()+"]信息到缓存"); log.info("加载所有料仓["+all.size()+"]信息到缓存");
...@@ -552,24 +557,10 @@ public class DataCache{ ...@@ -552,24 +557,10 @@ public class DataCache{
return null; return null;
} }
/** public Storage reloadStorage(Storage storage){
* 更新料仓信息 List<PlateSizeBean> plateSizeBeanList = storagePosManager.getStoragePosUsage(storage.getId());
*/ storage.initUsage(plateSizeBeanList);
public Storage updateStorage(String cid) throws ValidateException { allStorage.put(storage.getCid(), storage);
Storage storage = getStorage(cid);
return updateStorage(storage);
}
/**
* 更新料仓信息
*/
public Storage updateStorage(Storage storage) throws ValidateException {
storage.setTotalSlots(storagePosManager.countTotalStorageSize(storage.getId()));
storage.setEmptySlots(storagePosManager.countEmptyStorageSize(storage.getId()));
storageManager.save(storage);
List<PLATE_SIZE> plateSizes = storagePosManager.distinctPlateSize(storage.getId());
storage.setPlateSizes(plateSizes);
getAllStorage().put(storage.getCid(), storage);
return storage; return storage;
} }
...@@ -677,7 +668,24 @@ public class DataCache{ ...@@ -677,7 +668,24 @@ public class DataCache{
/** /**
* 修改库存,出库为负,入库为正 * 修改库存,出库为负,入库为正
*/ */
public int updateInventory(String cid, String partNumber, int amount){ public int updateInventory(StoragePos pos, Barcode barcode){
Storage storage = getStorageById(pos.getStorageId());
String cid = storage.getCid();
String partNumber = barcode.getPartNumber();
int amount = 0;
String sizeStr = pos.getSizeStr();
if(pos.getBarcode() == null){
//出库
amount = - barcode.getAmount();
storage.emptyOnePos(pos);
}else{
//入库
amount = barcode.getAmount();
storage.useOnePos(pos);
}
allStorage.put(cid, storage);
if(amount != 0){ if(amount != 0){
InventoryItem inventoryItem = getStorageInventoryByPartNumber(cid,partNumber); InventoryItem inventoryItem = getStorageInventoryByPartNumber(cid,partNumber);
if(inventoryItem == null){ if(inventoryItem == null){
......
...@@ -4,6 +4,7 @@ import com.google.common.base.Strings; ...@@ -4,6 +4,7 @@ import com.google.common.base.Strings;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.myproject.bean.CodeBean;
import com.myproject.bean.update.*; import com.myproject.bean.update.*;
import com.myproject.dao.mongo.IDataLogDao; import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.exception.ValidateException; import com.myproject.exception.ValidateException;
...@@ -89,6 +90,32 @@ public class MesApiController extends BaseController { ...@@ -89,6 +90,32 @@ public class MesApiController extends BaseController {
return value; return value;
} }
@RequestMapping(value = "/barcode")
@ResponseBody
public String barcode(HttpServletRequest request) {
try{
String codeStr = checkParameter(request,"codeStr");
String batch = checkParameter(request,"batch");
log.info("收到MES接口条码更新指令:codeStr="+codeStr + " batch="+batch);
String sizeCodeStr = "=1x1=" + codeStr;
CodeBean codeBean = dataCache.resolveSingleCode(sizeCodeStr);
if(codeBean.isValid()){
Barcode barcode = codeBean.getBarcode();
barcode.setBatch(batch);
barcodeManager.save(barcode);
return "OK";
}else{
return "Error:" + codeBean.getError();
}
}catch (ValidateException ve) {
return "Error:" + ve.getMessage();
}catch (Exception e){
return "Error:" + e.getMessage();
}
}
@RequestMapping(value = "/codeUpdate") @RequestMapping(value = "/codeUpdate")
@ResponseBody @ResponseBody
public String codeUpdate(HttpServletRequest request) { public String codeUpdate(HttpServletRequest request) {
......
...@@ -45,12 +45,11 @@ public class StatusController extends BaseController{ ...@@ -45,12 +45,11 @@ public class StatusController extends BaseController{
if(Strings.isNullOrEmpty(cid)){ if(Strings.isNullOrEmpty(cid)){
cid = dataCache.defaultStorageCid(); cid = dataCache.defaultStorageCid();
} }
return getStatus(cid,request);
}
private StatusBean getStatus(String cid, HttpServletRequest request){
StatusBean statusBean = taskService.getStatus(cid); StatusBean statusBean = taskService.getStatus(cid);
// if(!Strings.isNullOrEmpty(statusBean.getMsgCode())){
// //String localeMsg = getText("client."+statusBean.getMsgCode(),statusBean.getMsgParam(),request.getLocale(),statusBean.msg);
// statusBean.setMsg(localeMsg);
// statusBean.setMsgEn();
// }
Exception e = taskService.getServerException(cid); Exception e = taskService.getServerException(cid);
if(e != null){ if(e != null){
...@@ -68,6 +67,27 @@ public class StatusController extends BaseController{ ...@@ -68,6 +67,27 @@ public class StatusController extends BaseController{
return statusBean; return statusBean;
} }
@RequestMapping(value = "/statusList")
@ResponseBody
public List<StatusBean> statusList(HttpServletRequest request){
String cids = request.getParameter("cids");
Collection<String> cidList;
if(Strings.isNullOrEmpty(cids)){
cidList = dataCache.getAllStorage().keySet();
}else{
cidList = Lists.newArrayList(cids.split(","));
}
List<StatusBean> statusList = Lists.newArrayList();
for (String cid : cidList) {
if(cid.isEmpty()){
continue;
}
StatusBean statusBean = getStatus(cid, request);
statusList.add(statusBean);
}
return statusList;
}
@RequestMapping(value = "/latestStatus") @RequestMapping(value = "/latestStatus")
@ResponseBody @ResponseBody
......
...@@ -533,7 +533,7 @@ public class StorageDataController extends BaseController { ...@@ -533,7 +533,7 @@ public class StorageDataController extends BaseController {
/** /**
* 流水线提示消息 * 流水线提示消息
*/ */
private static String lineMsg = ""; private static ValidateException lineMsgParams;
/** /**
* 保存界面的一些操作 * 保存界面的一些操作
...@@ -541,7 +541,10 @@ public class StorageDataController extends BaseController { ...@@ -541,7 +541,10 @@ public class StorageDataController extends BaseController {
@RequestMapping(value = "/getLineMsg") @RequestMapping(value = "/getLineMsg")
@ResponseBody @ResponseBody
public String getLineMsg(HttpServletRequest request) { public String getLineMsg(HttpServletRequest request) {
return lineMsg; if(lineMsgParams != null){
return "";
}
return getText(lineMsgParams.getMessage(),lineMsgParams.getParams(), request.getLocale(),lineMsgParams.getDefaultMsg());
} }
...@@ -553,7 +556,7 @@ public class StorageDataController extends BaseController { ...@@ -553,7 +556,7 @@ public class StorageDataController extends BaseController {
public Map<String,Object> emptyPosForPutin(HttpServletRequest request) { public Map<String,Object> emptyPosForPutin(HttpServletRequest request) {
String code = request.getParameter("code"); String code = request.getParameter("code");
String cids = request.getParameter("cids"); String cids = request.getParameter("cids");
lineMsg = ""; lineMsgParams = null;
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();
if(Strings.isNullOrEmpty(cids)){ if(Strings.isNullOrEmpty(cids)){
resultMap.put("result","101"); resultMap.put("result","101");
...@@ -568,8 +571,9 @@ public class StorageDataController extends BaseController { ...@@ -568,8 +571,9 @@ public class StorageDataController extends BaseController {
} }
if(storageList.isEmpty()){ if(storageList.isEmpty()){
resultMap.put("result","102"); resultMap.put("result","102");
lineMsg = "无可用的料仓"; lineMsgParams = new ValidateException("error.storage.noStorage","无可用的料仓");
resultMap.put("msg",lineMsg); String msg = getText(lineMsgParams.getMessage(),lineMsgParams.getParams(), request.getLocale(),lineMsgParams.getDefaultMsg());
resultMap.put("msg",msg);
}else{ }else{
Collection<CodeBean> codeBeans = dataCache.resolveCodeStr(code); Collection<CodeBean> codeBeans = dataCache.resolveCodeStr(code);
Barcode barcode = null; Barcode barcode = null;
...@@ -581,8 +585,9 @@ public class StorageDataController extends BaseController { ...@@ -581,8 +585,9 @@ public class StorageDataController extends BaseController {
} }
if(barcode == null){ if(barcode == null){
resultMap.put("result","103"); resultMap.put("result","103");
lineMsg = "无效的条码"; lineMsgParams = new ValidateException("error.barcode.invalid",new String[]{code}, "无效的条码");
resultMap.put("msg",lineMsg); String msg = getText(lineMsgParams.getMessage(),lineMsgParams.getParams(), request.getLocale(),lineMsgParams.getDefaultMsg());
resultMap.put("msg",msg);
}else { }else {
StoragePos pos = null; StoragePos pos = null;
try { try {
...@@ -594,17 +599,20 @@ public class StorageDataController extends BaseController { ...@@ -594,17 +599,20 @@ public class StorageDataController extends BaseController {
resultMap.put("barcode",barcode.getBarcode()); resultMap.put("barcode",barcode.getBarcode());
Storage theStorage = dataCache.getStorageById(pos.getStorageId()); Storage theStorage = dataCache.getStorageById(pos.getStorageId());
resultMap.put("cid",theStorage.getCid()); resultMap.put("cid",theStorage.getCid());
lineMsg = "["+barcode.getBarcode()+"]准备入库到["+pos.getPosName()+"]"; String lineMsg = "["+barcode.getBarcode()+"]准备入库到["+pos.getPosName()+"]";
lineMsgParams = new ValidateException("msg.line.putIn",new String[]{code}, lineMsg);
}else{ }else{
resultMap.put("result","104"); resultMap.put("result","104");
lineMsg = "未找到可用的仓位"; lineMsgParams = new ValidateException("error.storage.noPosFind",new String[]{code}, "未找到可用的仓位");
resultMap.put("msg",lineMsg); String msg = getText(lineMsgParams.getMessage(),lineMsgParams.getParams(), request.getLocale(),lineMsgParams.getDefaultMsg());
resultMap.put("msg",msg);
} }
} catch (ValidateException e) { } catch (ValidateException e) {
lineMsg = e.getMessage(); lineMsgParams = e;
log.info("查找空库位失败:" + lineMsg);
resultMap.put("result","105"); resultMap.put("result","105");
resultMap.put("msg",lineMsg); String msg = getText(lineMsgParams.getMessage(),lineMsgParams.getParams(), request.getLocale(),lineMsgParams.getDefaultMsg());
log.info("查找空库位失败:" + msg);
resultMap.put("msg",msg);
} }
} }
} }
...@@ -640,16 +648,32 @@ public class StorageDataController extends BaseController { ...@@ -640,16 +648,32 @@ public class StorageDataController extends BaseController {
return componentList.getList(); return componentList.getList();
} }
@RequestMapping("/getStorageUseage") @RequestMapping("/getStorage")
@ResponseBody @ResponseBody
public List<PlateSizeBean> getStorageUseage(HttpServletRequest request, HttpServletResponse response){ public Storage getStorageUseage(HttpServletRequest request, HttpServletResponse response){
String cid = request.getParameter("cid"); String cid = request.getParameter("cid");
Storage storage = dataCache.getStorage(cid); return dataCache.getStorage(cid);
if(storage == null){ }
return null;
@RequestMapping("/storageList")
@ResponseBody
public Collection<Storage> usageMap(HttpServletRequest request, HttpServletResponse response){
String cids = request.getParameter("cids");
Collection<Storage> storageList = null;
if(Strings.isNullOrEmpty(cids)){
storageList = dataCache.getAllStorage().values();
}else{
storageList = new ArrayList<>();
for (String cid : Lists.newArrayList(cids.split(","))) {
Storage storage = dataCache.getStorage(cid);
if(storage == null){
continue;
}
storageList.add(storage);
}
} }
String storageId = storage.getId();
return storagePosManager.getStoragePosUsage(storageId); return storageList;
} }
......
...@@ -1321,8 +1321,8 @@ public class TaskService implements ITaskService { ...@@ -1321,8 +1321,8 @@ public class TaskService implements ITaskService {
task.setNum(barcode.getAmount()); task.setNum(barcode.getAmount());
task.setMemo(barcode.getMemo()); task.setMemo(barcode.getMemo());
dataCache.updateInventory(task.getCid(), barcode.getPartNumber(),barcode.getAmount()); dataCache.updateInventory(pos,barcode);
dataCache.updateStorage(task.getCid()); //dataCache.updateStorage(task.getCid());
}else{ }else{
barcode = pos.getBarcode(); barcode = pos.getBarcode();
...@@ -1339,9 +1339,8 @@ public class TaskService implements ITaskService { ...@@ -1339,9 +1339,8 @@ public class TaskService implements ITaskService {
pos.setUsed(false); pos.setUsed(false);
storagePosManager.save(pos); storagePosManager.save(pos);
dataCache.updateInventory(pos, barcode);
dataCache.updateInventory(task.getCid(), barcode.getPartNumber(), - barcode.getAmount()); //dataCache.updateStorage(task.getCid());
dataCache.updateStorage(task.getCid());
} }
...@@ -1476,9 +1475,9 @@ public class TaskService implements ITaskService { ...@@ -1476,9 +1475,9 @@ public class TaskService implements ITaskService {
//更新缓存中的库存信息 //更新缓存中的库存信息
int stockReel = dataCache.updateInventory(task.getCid(), componentBarcode.getPartNumber(),componentBarcode.getAmount()); int stockReel = dataCache.updateInventory(storagePos,componentBarcode);
dataCache.updateStorage(task.getCid()); //dataCache.updateStorage(task.getCid());
log.info("入库"+componentBarcode.getPartNumber()+"["+componentBarcode.getBarcode()+"]当前库存:"+stockReel+"到"+componentPos.getPosName()+"可出库时间:"+new Date(canCheckOutTime)); log.info("入库"+componentBarcode.getPartNumber()+"["+componentBarcode.getBarcode()+"]当前库存:"+stockReel+"到"+componentPos.getPosName()+"可出库时间:"+new Date(canCheckOutTime));
componentPos.setBarcode(componentBarcode); componentPos.setBarcode(componentBarcode);
...@@ -1511,9 +1510,9 @@ public class TaskService implements ITaskService { ...@@ -1511,9 +1510,9 @@ public class TaskService implements ITaskService {
storagePosManager.save(storagePos); storagePosManager.save(storagePos);
//更新缓存中的库存信息 //更新缓存中的库存信息
dataCache.updateInventory(task.getCid(), task.getPartNumber(),barcode.getAmount()); dataCache.updateInventory(storagePos,barcode);
dataCache.updateStorage(task.getCid()); //dataCache.updateStorage(task.getCid());
Storage storage = dataCache.getStorage(task.getCid()); Storage storage = dataCache.getStorage(task.getCid());
if(storage != null){ if(storage != null){
...@@ -1523,6 +1522,7 @@ public class TaskService implements ITaskService { ...@@ -1523,6 +1522,7 @@ public class TaskService implements ITaskService {
//记录日志,完成 task //记录日志,完成 task
task.setBatchInfo(barcode.getBatch());
task.setNum(barcode.getAmount()); task.setNum(barcode.getAmount());
task.setStatus(StorageConstants.OP_STATUS.FINISHED.name()); task.setStatus(StorageConstants.OP_STATUS.FINISHED.name());
dataLogDao.save(task); dataLogDao.save(task);
...@@ -1605,11 +1605,12 @@ public class TaskService implements ITaskService { ...@@ -1605,11 +1605,12 @@ public class TaskService implements ITaskService {
barcode.setPosName(""); barcode.setPosName("");
barcodeManager.save(barcode); barcodeManager.save(barcode);
String specifiedBatchId = barcode.getLockId(); // String specifiedBatchId = barcode.getLockId();
if(!Strings.isNullOrEmpty(specifiedBatchId)){ // if(!Strings.isNullOrEmpty(specifiedBatchId)){
task.setBatchId(specifiedBatchId); // task.setBatchId(specifiedBatchId);
task.setBatchInfo(barcode.getLockName()); // task.setBatchInfo(barcode.getLockName());
} // }
task.setBatchInfo(barcode.getBatch());
} }
storagePos.setBarcode(null); storagePos.setBarcode(null);
...@@ -1617,9 +1618,9 @@ public class TaskService implements ITaskService { ...@@ -1617,9 +1618,9 @@ public class TaskService implements ITaskService {
storagePosManager.save(storagePos); storagePosManager.save(storagePos);
log.info("出库完成,清空仓位: " + storagePos.getId() + "[" + storagePos.getPosName() + "]"); log.info("出库完成,清空仓位: " + storagePos.getId() + "[" + storagePos.getPosName() + "]");
dataCache.updateStorage(task.getCid());
//更新缓存中的库存信息 //更新缓存中的库存信息
dataCache.updateInventory(task.getCid(), task.getPartNumber(),0-task.getNum()); dataCache.updateInventory(storagePos,barcode);
//通知消息 //通知消息
...@@ -1636,7 +1637,7 @@ public class TaskService implements ITaskService { ...@@ -1636,7 +1637,7 @@ public class TaskService implements ITaskService {
finishedTaskMap.put(task.getBarcode(),task); finishedTaskMap.put(task.getBarcode(),task);
//notifyTask(task); //notifyTask(task);
dataCache.updateStorage(task.getCid()); //dataCache.updateStorage(task.getCid());
finishedOrderTask(task); finishedOrderTask(task);
//checkTaskSetFinished(task); //checkTaskSetFinished(task);
......
...@@ -412,6 +412,7 @@ error.pos.inQueue=Failed\: The location [{0}] is in queue. ...@@ -412,6 +412,7 @@ 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.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}]
error.barcode.executing=The task of barcode [{0}] is executing. error.barcode.executing=The task of barcode [{0}] is executing.
...@@ -427,4 +428,7 @@ error.barcode.noRule=There is no rule of the barcode is setted. ...@@ -427,4 +428,7 @@ error.barcode.noRule=There is no rule of the barcode is setted.
error.barcode.wrongLength=The code string [{0}] has wrong length. error.barcode.wrongLength=The code string [{0}] has wrong length.
error.barcode.noField=There is no {0} field in the code string. error.barcode.noField=There is no {0} field in the code string.
error.barcode.wrongPn=The partnumber is wrong error.barcode.wrongPn=The partnumber is wrong
error.barcode.pnNotExist=x Component {0} does not exist
\ No newline at end of file \ No newline at end of file
error.barcode.pnNotExist=x Component {0} does not exist
error.barcode.errorSize=x The reel has no size.
error.storage.noPosFind=No availble position is found.
msg.line.putIn=Put [{0}] into [{1}]
\ No newline at end of file \ No newline at end of file
...@@ -423,4 +423,8 @@ error.barcode.noRule=There is no rule of the barcode is setted. ...@@ -423,4 +423,8 @@ error.barcode.noRule=There is no rule of the barcode is setted.
error.barcode.wrongLength=The code string [{0}] has wrong length. error.barcode.wrongLength=The code string [{0}] has wrong length.
error.barcode.noField=There is no {0} field in the code string. error.barcode.noField=There is no {0} field in the code string.
error.barcode.wrongPn=The partnumber is wrong error.barcode.wrongPn=The partnumber is wrong
error.barcode.pnNotExist=x Component {0} does not exist
\ No newline at end of file \ No newline at end of file
error.barcode.pnNotExist=x Component {0} does not exist
error.barcode.errorSize=x The reel has no size.
error.storage.noStorage=There is no storage can use.
error.storage.noPosFind=No availble position is found.
msg.line.putIn=Put [{0}] into [{1}]
\ No newline at end of file \ No newline at end of file
...@@ -405,6 +405,7 @@ error.barcode.empty=\u672A\u626B\u63CF\u5230\u6761\u7801 ...@@ -405,6 +405,7 @@ error.barcode.empty=\u672A\u626B\u63CF\u5230\u6761\u7801
error.barcode.many=\u53D1\u73B0\u591A\u4E2A\u6709\u6548\u6761\u7801 error.barcode.many=\u53D1\u73B0\u591A\u4E2A\u6709\u6548\u6761\u7801
error.storage.unavailable=\u6599\u4ED3[{0}]\u4E0D\u53EF\u7528 error.storage.unavailable=\u6599\u4ED3[{0}]\u4E0D\u53EF\u7528
error.storage.noPos=\u65E0\u53EF\u7528\u7684\u6599\u683C[{0}],\u65E0\u6CD5\u7EE7\u7EED\u653E\u5165 error.storage.noPos=\u65E0\u53EF\u7528\u7684\u6599\u683C[{0}],\u65E0\u6CD5\u7EE7\u7EED\u653E\u5165
error.storage.noPosFind=\u672A\u627E\u5230\u53EF\u7528\u7684\u4ED3\u4F4D
error.barcode.wrongSize=\u6599\u76D8\u5C3A\u5BF8[{0}]\u4E0D\u7B26 error.barcode.wrongSize=\u6599\u76D8\u5C3A\u5BF8[{0}]\u4E0D\u7B26
error.barcode.executing=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u6B63\u5728\u6267\u884C error.barcode.executing=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u6B63\u5728\u6267\u884C
error.pos.notExist=\u5E93\u4F4D\u3010{0}\u3011\u4E0D\u5B58\u5728,\u65E0\u6CD5\u5165\u5E93 error.pos.notExist=\u5E93\u4F4D\u3010{0}\u3011\u4E0D\u5B58\u5728,\u65E0\u6CD5\u5165\u5E93
...@@ -413,10 +414,13 @@ error.pos.wrong=\u5E93\u4F4D\u3010{0}\u3011\u4E0E\u6599\u4ED3[{1}]\u4E0D\u5339\u ...@@ -413,10 +414,13 @@ error.pos.wrong=\u5E93\u4F4D\u3010{0}\u3011\u4E0E\u6599\u4ED3[{1}]\u4E0D\u5339\u
error.pos.sizeNotMatch=\u6599\u76D8\u5C3A\u5BF8[{0}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\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.barcode.invalid={0} \u4E0D\u662F\u6709\u6548\u7684\u6761\u7801 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.expired=\u7269\u6599\u5DF2\u8FC7\u671F,\u65E0\u6CD5\u5165\u5E93.
error.barcode.wrongQty=\u6599\u76D8[0]\u6570\u91CF[{1}]\u9519\u8BEF. 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.inStorage=\u6599\u76D8[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.noRule=\u6761\u7801\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49
error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF 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 error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5
error.barcode.wrongPn=PartNumber\u4E0D\u4E00\u81F4 error.barcode.wrongPn=PartNumber\u4E0D\u4E00\u81F4
error.barcode.pnNotExist=x\u6863\u6848 {0} \u4E0D\u5B58\u5728
\ No newline at end of file \ No newline at end of file
error.barcode.pnNotExist=x\u6863\u6848 {0} \u4E0D\u5B58\u5728
error.barcode.errorSize=x \u6599\u76D8\u672A\u8BBE\u7F6E\u5C3A\u5BF8
error.storage.noStorage=\u65E0\u53EF\u7528\u7684\u6599\u4ED3
msg.line.putIn=[{0}]\u51C6\u5907\u5165\u5E93\u5230[{1}]
\ No newline at end of file \ No newline at end of file
...@@ -68,6 +68,7 @@ ...@@ -68,6 +68,7 @@
<a href="${ctx}/barcode/barcodeUpdate.html?id=${barcode.id}">${barcode.barcode}</a> <a href="${ctx}/barcode/barcodeUpdate.html?id=${barcode.id}">${barcode.barcode}</a>
</display:column> </display:column>
<display:column property="partNumber" sortProperty="partNumber" sortable="true" titleKey="barcode.partNumber"/> <display:column property="partNumber" sortProperty="partNumber" sortable="true" titleKey="barcode.partNumber"/>
<display:column property="batch" escapeXml="true" titleKey="barcode.batch" sortable="true" sortProperty="batch"/>
<!-- 成都凯天--> <!-- 成都凯天-->
<c:if test='<%=DataCache.isProductionFor("ChengDuKaiTian") %>'> <c:if test='<%=DataCache.isProductionFor("ChengDuKaiTian") %>'>
<display:column property="otherField2" sortProperty="otherField2" sortable="true" titleKey="产品型号"/> <display:column property="otherField2" sortProperty="otherField2" sortable="true" titleKey="产品型号"/>
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
</div> </div>
<label class="control-label col-md-1"><fmt:message key="dataLog.date"/></label> <label class="control-label col-md-1"><fmt:message key="dataLog.date"/></label>
<div class="col-md-3"> <div class="col-md-3" style="padding-left:0px;">
<div class="input-group input-large date-picker input-daterange" data-date="2017-05-10" data-date-format="${datePatten}"> <div class="input-group input-large date-picker input-daterange" data-date="2017-05-10" data-date-format="${datePatten}">
<input type="text" class="form-control" name="startDay" value="${startDay}"> <input type="text" class="form-control" name="startDay" value="${startDay}">
<span class="input-group-addon"> <span class="input-group-addon">
...@@ -70,6 +70,10 @@ ...@@ -70,6 +70,10 @@
<span class="help-block"> </span> <span class="help-block"> </span>
</div> </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> </div>
<div class="form-group"> <div class="form-group">
...@@ -102,10 +106,13 @@ ...@@ -102,10 +106,13 @@
</div> </div>
</div> </div>
<label class="control-label col-md-1"><fmt:message key="barcode.batch"/></label>
<div class="col-md-2"> <div class="col-md-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i><fmt:message key="button.search"/> </button> <div style="text-align:left">
<input id="batch" name="batch" class="form-control" value="${batch}"/>
</div>
</div> </div>
</div> </div>
</form:form> </form:form>
...@@ -165,10 +172,11 @@ ...@@ -165,10 +172,11 @@
<c:if test="${pos.barcode.type == 4}"><fmt:message key="inOutList.type.fixture"/></c:if> <c:if test="${pos.barcode.type == 4}"><fmt:message key="inOutList.type.fixture"/></c:if>
</display:column> </display:column>
<display:column property="barcode.barcode" titleKey="barcode.barcode"/> <display:column property="barcode.barcode" titleKey="barcode.barcode"/>
<display:column property="barcode.inFixture" titleKey="storagePosFind.inFixture"/> <%--<display:column property="barcode.inFixture" titleKey="storagePosFind.inFixture"/>--%>
<display:column property="barcode.batch" titleKey="barcode.batch" sortable="true" sortProperty="barcode.batch"/>
<%--<display:column property="barcode.providerNumber" titleKey="component.providerNumber"/>--%> <%--<display:column property="barcode.providerNumber" titleKey="component.providerNumber"/>--%>
<%--<display:column property="barcode.amount" titleKey="数量"/>--%> <%--<display:column property="barcode.amount" titleKey="数量"/>--%>
<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"> <display:column titleKey="barcode.inStoreRemainTime" sortProperty="barcode.putInTime" sortable="true">
......
...@@ -53,10 +53,6 @@ ...@@ -53,10 +53,6 @@
</div> </div>
<div class="col-md-2 col-xs-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i><fmt:message
key="button.search"/></button>
</div>
</div> </div>
<div class="form-group"> <div class="form-group">
...@@ -100,6 +96,22 @@ ...@@ -100,6 +96,22 @@
</div> </div>
<div class="col-md-2 col-xs-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i><fmt:message
key="button.search"/></button>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-1 col-xs-2"><fmt:message key="barcode.batch"/></label>
<div class="col-md-2 col-xs-4">
<div style="text-align:left" class="input-group">
<input type="text" name="batch" class="form-control" value="${batch}"/>
</div>
</div>
<label class="control-label col-md-1 col-xs-2"><fmt:message key="dataLog.orderSource"/></label> <label class="control-label col-md-1 col-xs-2"><fmt:message key="dataLog.orderSource"/></label>
<div class="col-md-2 col-xs-4"> <div class="col-md-2 col-xs-4">
...@@ -108,6 +120,8 @@ ...@@ -108,6 +120,8 @@
</div> </div>
</div> </div>
</div> </div>
</form:form> </form:form>
...@@ -142,7 +156,7 @@ ...@@ -142,7 +156,7 @@
<display:column titleKey="dataLog.orderSource" sortable="true" sortProperty="sourceName"> <display:column titleKey="dataLog.orderSource" sortable="true" sortProperty="sourceName">
${dataLog.sourceStr} ${dataLog.sourceStr}
</display:column> </display:column>
<display:column titleKey="dataLog.batch" sortable="true" sortProperty="batchInfo" property="batchInfo"/> <display:column titleKey="barcode.batch" sortable="true" sortProperty="batchInfo" property="batchInfo"/>
<display:column property="operator" titleKey="dataLog.operator" sortable="true" sortProperty="operator"/> <display:column property="operator" titleKey="dataLog.operator" sortable="true" sortProperty="operator"/>
<display:column titleKey="dataLog.date" sortable="true" sortProperty="updateDate"> <display:column titleKey="dataLog.date" sortable="true" sortProperty="updateDate">
<fmt:formatDate value="${dataLog.updateDate}" pattern="yyyy-MM-dd HH:mm"/> <fmt:formatDate value="${dataLog.updateDate}" pattern="yyyy-MM-dd HH:mm"/>
......
...@@ -130,9 +130,9 @@ ...@@ -130,9 +130,9 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="row"> <div class="row">
<c:forEach items="${storage.plateSizes}" var="psize"> <c:forEach items="${storage.usageMap}" var="usageEntry">
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3"> <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
<div class="bg-blue-madison partnumber-box psizeBox">${psize.sizeStr}</div> <div class="bg-blue-madison partnumber-box psizeBox">${usageEntry.value.sizeStr}</div>
</div> </div>
</c:forEach> </c:forEach>
</div> </div>
......
...@@ -587,32 +587,16 @@ ...@@ -587,32 +587,16 @@
} }
function flushUsageItem(){ function flushUsageItem(){
$.post("${ctx}/service/store/getStorageUseage", {cid: '${show}'}, function (data) { $.post("${ctx}/service/store/getStorage", {cid: '${show}'}, function (storage) {
if(!isLimitOpt(data)){ if(!isLimitOpt(storage)){
var sizeData = {}; var sizeData = storage.usageMap;
for(var i in data){
var itemData = data[i];
var sizeItem = sizeData[itemData.sizeStr];
if(!sizeItem){
sizeItem = {};
sizeItem["w"] = itemData.plateSize.w;
sizeItem["h"] = itemData.plateSize.h;
sizeItem["usedCount"] = 0;
sizeItem["idleCount"] = 0;
}
if(itemData.plateSize.used){
sizeItem["usedCount"] = itemData.count;
}else{
sizeItem["idleCount"] = itemData.count;
}
sizeData[itemData.sizeStr] = sizeItem;
}
var totalCount = 0; var cid = storage.cid;
var totalCount = storage.totalSlots;
for(var sizeStr in sizeData){ for(var sizeStr in sizeData){
sizeItem = sizeData[sizeStr]; var sizeItem = sizeData[sizeStr];
totalCount = totalCount + sizeItem["usedCount"] + sizeItem["idleCount"]; var idleCount = sizeItem.totalCount - sizeItem.usedCount;
var html = getItemBar(sizeItem["w"],sizeItem["h"],sizeItem["usedCount"],sizeItem["idleCount"]); var html = getItemBar(sizeItem["w"],sizeItem["h"],sizeItem["usedCount"],idleCount);
var sizeDom = $("#"+sizeStr); var sizeDom = $("#"+sizeStr);
if(sizeDom.length == 0){ if(sizeDom.length == 0){
......
...@@ -3,8 +3,7 @@ ...@@ -3,8 +3,7 @@
<%@ page language="java" pageEncoding="UTF-8" %> <%@ page language="java" pageEncoding="UTF-8" %>
<style type="text/css"> <style type="text/css">
.kabanTitle{
.kabanTitle{
padding: 10px; padding: 10px;
font-size: 30px; font-size: 30px;
margin-bottom: 10px; margin-bottom: 10px;
...@@ -58,15 +57,16 @@ ...@@ -58,15 +57,16 @@
background-color: #FFFFFF; background-color: #FFFFFF;
margin: 0px 10px; margin: 0px 10px;
padding: 10px; padding: 10px;
height: 200px; text-align: center;
} }
#clientMsg{ #clientMsg{
margin-left: 30px; margin-left: 30px;
font-size: 30px; font-size: 18px;
color: #ff5500; color: #ff5500;
text-align: center;
} }
#smdstatus{ #smdstatus{
line-height: 200px; line-height: 80px;
font-size: 30px; font-size: 30px;
} }
.barheight{ .barheight{
...@@ -100,6 +100,13 @@ ...@@ -100,6 +100,13 @@
border-color: #c8c8c8 !important; border-color: #c8c8c8 !important;
text-decoration:line-through; text-decoration:line-through;
} }
.red{
color:red;
}
.green{
color:green;
}
</style> </style>
<link href="${ctx}/scripts/lobibox/css/lobibox.min.css?id=2" rel="stylesheet" type="text/css"/> <link href="${ctx}/scripts/lobibox/css/lobibox.min.css?id=2" rel="stylesheet" type="text/css"/>
...@@ -127,7 +134,8 @@ ...@@ -127,7 +134,8 @@
</div> </div>
<div class="statusMsg"> <div class="statusMsg">
<span id="smdstatus"></span><span id="clientMsg"></span> <div id="smdstatus"></div>
<div id="clientMsg"></div>
</div> </div>
</div> </div>
...@@ -474,32 +482,16 @@ ...@@ -474,32 +482,16 @@
} }
function flushUsageItem(){ function flushUsageItem(){
$.post("${ctx}/service/store/getStorageUseage", {cid: '${show}'}, function (data) { $.post("${ctx}/service/store/getStorage", {cid: '${show}'}, function (storage) {
if(!isLimitOpt(data)){ if(!isLimitOpt(storage)){
var sizeData = {}; var sizeData = storage.usageMap;
for(var i in data){
var itemData = data[i];
var sizeItem = sizeData[itemData.sizeStr];
if(!sizeItem){
sizeItem = {};
sizeItem["w"] = itemData.plateSize.w;
sizeItem["h"] = itemData.plateSize.h;
sizeItem["usedCount"] = 0;
sizeItem["idleCount"] = 0;
}
if(itemData.plateSize.used){
sizeItem["usedCount"] = itemData.count;
}else{
sizeItem["idleCount"] = itemData.count;
}
sizeData[itemData.sizeStr] = sizeItem;
}
var totalCount = 0; var cid = storage.cid;
var totalCount = storage.totalSlots;
for(var sizeStr in sizeData){ for(var sizeStr in sizeData){
sizeItem = sizeData[sizeStr]; var sizeItem = sizeData[sizeStr];
totalCount = totalCount + sizeItem["usedCount"] + sizeItem["idleCount"]; var idleCount = sizeItem.totalCount - sizeItem.usedCount;
var html = getItemBar(sizeItem["w"],sizeItem["h"],sizeItem["usedCount"],sizeItem["idleCount"]); var html = getItemBar(sizeItem["w"],sizeItem["h"],sizeItem["usedCount"],idleCount);
var sizeDom = $("#"+sizeStr); var sizeDom = $("#"+sizeStr);
if(sizeDom.length == 0){ if(sizeDom.length == 0){
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!