Commit 3d5aabd7 sunke

主分支

0 个父辈
正在显示 1000 个修改的文件 包含 5005 行增加0 行删除

要显示的修改太多。

为保证性能只显示 1000 of 1000+ 个文件。

# Created by .ignore support plugin (hsz.mobi)
### Java template
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
/.idea/
/myproject/target/
/myproject/logs/
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.
3. Modify the jdbc property in the pom.xml of myproject, make sure the
jdbc url, username and password is correct.
4. Run "mvn install" to install the parent pom.xml to your local repository.
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
打印机静默打印: Chrome快捷方式增加:--kiosk-printing
--disable-print-preview
安装Mongodb服务
1、创建 D:\MongoDB 及 D:\MongoDB\data 和 D:\MongoDB\logs 目录
2、执行 mongod --storageEngine=mmapv1 --journal --logpath D:\MongoDB\logs\MongoDB.log --logappend --dbpath D:\MongoDB\data --directoryperdb --serviceName MongoDB --install
移除MongoDB:
sc delete MongoDB
mongod --auth -dbpath D:\MongoDB\data --repair
mac mongo 启动:
sudo mongod -config /usr/local/etc/mongod.conf
Tomcat 8 启动时会出现 webresources.Cache.getResource Unable to add the resource at 的错误,需要在Tomcat的在 /conf/context.xml 的 </Context>前添加以下内容:
<Resources cachingAllowed="true" cacheMaxSize="100000" />
//备份
mongodump -h dbhost -d dbname -o dbdirectory
"C:\Program Files\MongoDB\Server\3.2\bin\mongodump" -d storage -o D:\storage
mongodump -h192.168.3.124 -d storage -o D:\MongoDB\
//还原
mongorestore -h <hostname><:port> -d dbname <path>
C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\myproject\WEB-INF\classes\com\myproject\webapp\controller\storage
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件的差异被折叠, 点击展开。
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
此文件的差异被折叠, 点击展开。
package com.myproject;
/**
* Constant values used throughout the application.
*
* @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
*/
public final class Constants {
private Constants() {
// hide me
}
//~ Static fields/initializers =============================================
/**
* Assets Version constant
*/
public static final String ASSETS_VERSION = "assetsVersion";
/**
* The name of the ResourceBundle used in this application
*/
public static final String BUNDLE_KEY = "ApplicationResources";
/**
* File separator from System properties
*/
public static final String FILE_SEP = System.getProperty("file.separator");
/**
* User home from System properties
*/
public static final String USER_HOME = System.getProperty("user.home") + FILE_SEP;
/**
* The name of the configuration hashmap stored in application scope.
*/
public static final String CONFIG = "appConfig";
/**
* Session scope attribute that holds the locale set by the user. By setting this key
* to the same one that Struts uses, we get synchronization in Struts w/o having
* to do extra work or have two session-level variables.
*/
public static final String PREFERRED_LOCALE_KEY = "PREFERRED_LOCALE";
/**
* The request scope attribute under which an editable user form is stored
*/
public static final String USER_KEY = "userForm";
/**
* The request scope attribute that holds the user list
*/
public static final String USER_LIST = "userList";
/**
* The request scope attribute for indicating a newly-registered user
*/
public static final String REGISTERED = "registered";
/**
* The name of the Administrator role, as specified in web.xml
*/
// public static final String ADMIN_ROLE = "ROLE_ADMIN";
//
// /**
// * The name of the User role, as specified in web.xml
// */
// public static final String USER_ROLE = "ROLE_USER";
/**
* The name of the user's role list, a request-scoped attribute
* when adding/editing a user.
*/
public static final String USER_ROLES = "userRoles";
/**
* The name of the available roles list, a request-scoped attribute
* when adding/editing a user.
*/
public static final String AVAILABLE_ROLES = "availableRoles";
/**
* The name of the CSS Theme setting.
* @deprecated No longer used to set themes.
*/
public static final String CSS_THEME = "csstheme";
}
package com.myproject.api;
import com.myproject.bean.update.DataLog;
/**
* 任务通知接口
* Created by sunke on 2019/8/20.
*/
public interface ITaskNotify {
/**
* 出库任务完成时调用此接口
* @param dataLog
*/
void onOutTaskFinished(DataLog dataLog);
void onOutTaskFailed(String partNumber);
void allTaskEnd();
String getNotifyName();
}
package com.myproject.api;
import com.google.common.collect.Lists;
import jcifs.Config;
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.util.Strings;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* Created by sunke on 2019/8/21.
*/
public class SmbUtil {
protected final static transient Logger log = LogManager.getLogger(SmbUtil.class);
/**
* 列出SMB服务器文件夹中的所有文件名称,如果目录不存在或者访问出错返回null
*/
public static List<String> smbFileNameList(String smbDir){
try {
SmbFile remoteFile = new SmbFile(smbDir);
if (remoteFile.exists() && remoteFile.isDirectory()) {
String[] fileNames = remoteFile.list();
return Lists.newArrayList(fileNames);
} else {
log.info("SMB目录["+smbDir+"]不存在");
}
} catch (Exception e) {
log.error("访问SMB目录["+smbDir+"]出错",e);
}
return null;
}
/**
* @Title smbGet
* @Param shareUrl 共享目录中的文件路径,如smb://132.20.2.33/CIMPublicTest/eg.txt
* @Param localDirectory 本地目录,如tempStore/smb
*/
public static boolean smbGet(String smbFile, String localDirectory){
InputStream in = null;
OutputStream out = null;
try {
Config.registerSmbURLHandler();
SmbFile remoteFile = new SmbFile(smbFile);
if (!remoteFile.exists()) {
log.info("共享文件不存在");
return false;
}
// 有文件的时候再初始化输入输出流
log.info("下载共享目录的文件 "+smbFile+" 到 "+ localDirectory);
String fileName = remoteFile.getName();
File localFile = new File(localDirectory + File.separator + fileName);
File fileParent = localFile.getParentFile();
if (null != fileParent && !fileParent.exists()) {
fileParent.mkdirs();
}
in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
out = new BufferedOutputStream(new FileOutputStream(localFile));
byte[] buffer = new byte[1024];
while (in.read(buffer) != -1) {
out.write(buffer);
buffer = new byte[1024];
}
out.flush(); //刷新缓冲区输出流
return true;
} catch (Exception e) {
log.error("获取 SMB 文件出错",e);
} finally {
close(in,out);
}
return false;
}
private static void close(InputStream in,OutputStream out){
try {
if(in != null){
out.close();
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @Title smbPut
* @Description 向共享目录上传文件
* @Param shareDirectory 共享目录
* @Param localFilePath 本地目录中的文件路径
* @date 2019-01-10 20:16
*/
public static boolean smbPut(String shareDirectory, String localFilePath) {
InputStream in = null;
OutputStream out = null;
String domain = "";
try {
if(!shareDirectory.toLowerCase().startsWith("smb")){
return false;
}
File localFile = new File(localFilePath);
Config.registerSmbURLHandler();
URI uri = new URI(shareDirectory);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(uri.getUserInfo());
String smbFileName = uri.getScheme() + "://" + uri.getHost() + uri.getPath() + localFile.getName();
SmbFile remoteFile = new SmbFile(smbFileName,auth);
log.info("put " + localFilePath + " to " +remoteFile.getPath());
in = new BufferedInputStream(new FileInputStream(localFile));
out = new BufferedOutputStream(remoteFile.getOutputStream());
byte[] buffer = new byte[1024];
while (in.read(buffer) != -1) {
out.write(buffer);
buffer = new byte[1024];
}
out.flush();
return true;
} catch (Exception e) {
log.error("上传 SMB 文件出错",e);
} finally {
close(in,out);
}
return false;
}
}
package com.myproject.bean;
import org.springframework.security.core.GrantedAuthority;
/**
* 基础权限
* Created by sunke on 17/1/3.
*/
public enum Authority implements GrantedAuthority {
/**
* 默认权限,不会展示
*/
ROLE_DEFAULT("",0),
//物料管理
ROLE_MANAGE_COMPONENT("authority.component.manage", 1),
//Bom 管理
//ROLE_MANAGE_BOM("authority.bom.manage", 2),
//工单管理
//ROLE_MANAGE_WORKORDER("authority.workorder.manage", 3),
//料仓管理
//ROLE_MANAGE_STORAGE("authority.storage.manage", 4),
//条码管理
ROLE_MANAGE_BARCODE("authority.barcode.manage", 5),
//用户管理
ROLE_MANAGE_USER("authority.user.manage", 6),
//角色管理
ROLE_MANAGE_ROLE("authority.role.manage", 7),
//出库
ROLE_MANAGE_STACK_OUT("authority.stockOut",8),
//入库
//ROLE_MANAGE_PUT_IN("authority.putIn",9),
//站位列表
ROLE_MANAGE_FEEDER("authority.feeder",10),
//指定批次
ROLE_MANAGE_SPECIFIEDBATCH("authority.specifiedBatch",11),
//虚拟仓管理
ROLE_MANAGE_VIRTUAL("authority.virtual",12),
// 站位列表查看勾选
ROLE_FEEDER_VIEW("authority.feeder.view",13),
// 贵重物料出库
ROLE_VALUABLE_OUT("authority.valuable.out",14),
/**
* 运行数据
*/
ROLE_MANAGE_DATALOG("authority.dataLog",15),
//超额入库
ROLE_MORE_STACK_IN("authority.stockIn.more",16),
;
private String key;
private int index;
private Authority(String key, int index) {
this.key = key;
this.index = index;
}
/**
* 根据 role 表里面存的 index 查找对应的authority
*/
public static Authority fromIndex(String index) {
if (index != null) {
for (Authority authority : Authority.values()) {
if (index.equals(String.valueOf(authority.getIndex()))) {
return authority;
}
}
}
return null;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
@Override
public String getAuthority() {
return this.name();
}
}
package com.myproject.bean;
import java.io.Serializable;
/**
* Created by kangmor on 2015/9/24.
*/
public class BaseFormBean implements Serializable {
}
package com.myproject.bean;
import com.myproject.util.DateUtil;
import java.util.Date;
/**
* Created by kangmor on 2015/9/14.
*/
public class BaseMongoBean {
private String id;
private Date createDate = new Date();
private Date updateDate;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getUpdateDate() {
if(updateDate == null){
return getCreateDate();
}
return updateDate;
}
public String getUpdateDateStr(){
return DateUtil.toDateTimeString(getUpdateDate());
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
}
package com.myproject.bean;
import com.myproject.bean.update.Barcode;
import com.myproject.util.StorageConstants;
/**
* 用于解析条码
* Created by sunke on 2017/10/10.
*/
public class CodeBean {
/**
* 码类型
*/
private StorageConstants.CODE_TYPE codeType;
/**
* 摄像头位置信息
*/
private int cameraIndex = 0;
//扫描到的二维码的位置信息
private float locationX = -1.0f;
private float locationY = -1.0f;
/**
* 用于显示的照片信息
*/
private String showImg = "";
/**
* 料盘宽度
*/
private int reelWidth = -1;
/**
* 料盘高度
*/
private int reelHeight = -1;
private String codeStr = "";
/**
* 错误消息,正常时为空
*/
private String error;
private String errorCode;
private String[] params;
private Barcode barcode;
public String getError() {
return error;
}
public void setError(String errorCode, String[] params,String error) {
this.error = error;
this.errorCode = errorCode;
this.params = params;
}
public void setError(String errorCode, String error) {
this.error = error;
this.errorCode = errorCode;
this.params = null;
}
public Barcode getBarcode() {
return barcode;
}
public void setBarcode(Barcode barcode) {
this.barcode = barcode;
}
public boolean isValid(){
return error == null && barcode != null;
}
/**
* 是否是夹具条码
*/
public boolean isFixtureCode(){
if(isValid()){
return StorageConstants.COMPONENT_TYPE.FIXTURE == barcode.getType();
}
return false;
}
public float getLocationX() {
return locationX;
}
public void setLocationX(float locationX) {
this.locationX = locationX;
}
public float getLocationY() {
return locationY;
}
public void setLocationY(float locationY) {
this.locationY = locationY;
}
public StorageConstants.CODE_TYPE getCodeType() {
return codeType;
}
public void setCodeType(StorageConstants.CODE_TYPE codeType) {
this.codeType = codeType;
}
public String getCodeStr() {
return codeStr;
}
public void setCodeStr(String codeStr) {
this.codeStr = codeStr;
}
public int getCameraIndex() {
return cameraIndex;
}
public void setCameraIndex(int cameraIndex) {
this.cameraIndex = cameraIndex;
}
public int getReelWidth() {
return reelWidth;
}
public void setReelWidth(int reelWidth) {
this.reelWidth = reelWidth;
}
public int getReelHeight() {
return reelHeight;
}
public void setReelHeight(int reelHeight) {
this.reelHeight = reelHeight;
}
public boolean hasReelSizeInfo() {
return reelWidth > 0 && reelHeight > 0;
}
public String getShowImg() {
return showImg;
}
public void setShowImg(String showImg) {
this.showImg = showImg;
}
public void setError(String error) {
this.error = error;
}
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String[] getParams() {
return params;
}
public void setParams(String[] params) {
this.params = params;
}
}
package com.myproject.bean;
import com.myproject.util.StorageConstants;
/**
* 用于展示到界面
* Created by sunke on 2017/10/13.
*/
public class CodeBox {
//显示的位置
private int location = 0;
private String msg = "";
private boolean valid = false;
private String codeType;
public CodeBox(int location, String msg, boolean valid, String codeType) {
this.location = location;
this.msg = msg;
this.valid = valid;
this.codeType = codeType;
}
public CodeBox(CodeBean codeBean) {
this.valid = codeBean.isValid();
if(valid){
msg = codeBean.getBarcode().getBarcode();
}else{
msg = codeBean.getError();
}
StorageConstants.CODE_TYPE type = codeBean.getCodeType();
if(type == null){
type = StorageConstants.CODE_TYPE.FIXTURE;
}
codeType = type.name();
int cameraIndex = codeBean.getCameraIndex();
float locationX = codeBean.getLocationX();
float locationY = codeBean.getLocationY();
if(locationX != 0 && locationY != 0){
if(cameraIndex == 1){
if(locationX < 1400){
location = 1;
}else {
location = 2;
}
}else {
if(locationX < 1000){
location = 4;
}else {
location = 3;
}
}
}
}
public int getLocation() {
return location;
}
public void setLocation(int location) {
this.location = location;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCodeType() {
return codeType;
}
public void setCodeType(String codeType) {
this.codeType = codeType;
}
public boolean isValid() {
return valid;
}
public void setValid(boolean valid) {
this.valid = valid;
}
}
package com.myproject.bean;
import java.util.Locale;
/**
* 基础权限
* Created by sunke on 17/1/3.
*/
public enum Language {
//英语
ENGLISH("en","English"),
//zh_CN 中文
ZH_CN("zh-CN","中文"),
;
private Language(String value, String label) {
this.label = label;
this.value = value;
}
private String label;
private String value;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public Locale getLocale(){
Locale preferredLocale = null;
if (label != null && !label.isEmpty()) {
int indexOfUnderscore = label.indexOf('-');
if (indexOfUnderscore != -1) {
String language = label.substring(0, indexOfUnderscore);
String country = label.substring(indexOfUnderscore + 1);
preferredLocale = new Locale(language, country);
} else {
preferredLocale = new Locale(label);
}
}
return preferredLocale;
}
}
package com.myproject.bean;
/**
* Created by kangmor on 2015/9/14.
*/
public class Sequence extends BaseMongoBean{
private Long seq;
public Long getSeq() {
return seq;
}
public void setSeq(Long seq) {
this.seq = seq;
}
}
package com.myproject.bean.excel;
import java.util.Date;
/**
* Created by kangmor on 2015/11/30.
*/
public class BarcodeExcel {
private String barcode;
private String partNumber;
private int amount;
private int plateSize;
private String provider;
private String batch;
private Date expireDate;
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public int getPlateSize() {
return plateSize;
}
public void setPlateSize(int plateSize) {
this.plateSize = plateSize;
}
public String getProvider() {
return provider;
}
public void setProvider(String provider) {
this.provider = provider;
}
public String getBatch() {
return batch;
}
public void setBatch(String batch) {
this.batch = batch;
}
public Date getExpireDate() {
return expireDate;
}
public void setExpireDate(Date expireDate) {
this.expireDate = expireDate;
}
}
package com.myproject.bean.excel;
/**
* Created by kangmor on 2015/11/11.
*/
public class BomExcel {
private String bomName;
private String partNumber;
private String componentName;
private int amount;
public String getBomName() {
return bomName;
}
public void setBomName(String bomName) {
this.bomName = bomName;
}
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public String getComponentName() {
return componentName;
}
public void setComponentName(String componentName) {
this.componentName = componentName;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
package com.myproject.bean.excel;
import org.displaytag.export.CsvView;
/**
* Created by sunke on 2019/2/26.
*/
public class CNCsvView extends CsvView{
@Override
public String getMimeType() {
return "text/csv";
}
}
package com.myproject.bean.excel;
import java.util.Date;
/**
* Created by kangmor on 2015/11/15.
*/
public class ComponentExcel {
//名称
private String name;
//料号
private String partNumber;
//uid
private String uid;
//物料描述
private String description;
//单耗
private String unitCost;
//"MSL等级"
private String msl;
//"封装"
private String encapsulation;
//"产品类型"
private String productionType;
//"单位"
private String unit;
//"厂商"
private String producer;
//"厂商编号"
private String producerNumber;
private int plateSize;
private int height;
private int amount;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getUnitCost() {
return unitCost;
}
public void setUnitCost(String unitCost) {
this.unitCost = unitCost;
}
public String getMsl() {
return msl;
}
public void setMsl(String msl) {
this.msl = msl;
}
public String getEncapsulation() {
return encapsulation;
}
public void setEncapsulation(String encapsulation) {
this.encapsulation = encapsulation;
}
public String getProductionType() {
return productionType;
}
public void setProductionType(String productionType) {
this.productionType = productionType;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getProducer() {
return producer;
}
public void setProducer(String producer) {
this.producer = producer;
}
public String getProducerNumber() {
return producerNumber;
}
public void setProducerNumber(String producerNumber) {
this.producerNumber = producerNumber;
}
public int getPlateSize() {
return plateSize;
}
public void setPlateSize(int plateSize) {
this.plateSize = plateSize;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
package com.myproject.bean.excel;
/**
* Created by kangmor on 2015/11/17.
*/
public class StoragePosExcel {
private String posName;
//进料优先级,数字越大优先级越高,例:1-1的优先级为100 仓1-2的优先级200,那么入仓时就会优先进入1-2仓
private double priority = 0f;
//高度
private int h;
//宽度(料盘尺寸)
private int w;
public String getPosName() {
return posName;
}
public void setPosName(String posName) {
this.posName = posName;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
public int getW() {
return w;
}
public void setW(int w) {
this.w = w;
}
public double getPriority() {
return priority;
}
public void setPriority(double priority) {
this.priority = priority;
}
}
package com.myproject.bean.form;
import com.myproject.bean.update.Barcode;
import com.myproject.webapp.controller.storage.BaseUpdateController;
/**
* Created by kangmor on 2016/5/16.
*/
public class BarcodeGenerateForm extends BaseUpdateForm {
private String patternBarcode;
private Barcode barcode;
public BarcodeGenerateForm() {
this.barcode = new Barcode();
this.barcode.setBarcode(System.currentTimeMillis() + "");
}
public String getPatternBarcode() {
return patternBarcode;
}
public void setPatternBarcode(String patternBarcode) {
this.patternBarcode = patternBarcode;
}
public Barcode getBarcode() {
return barcode;
}
public void setBarcode(Barcode barcode) {
this.barcode = barcode;
}
}
package com.myproject.bean.form;
import java.io.Serializable;
/**
* Created by kangmor on 2015/12/6.
*/
public class BaseUpdateForm implements Serializable{
private String operation;
private String opId;
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public String getOpId() {
return opId;
}
public void setOpId(String opId) {
this.opId = opId;
}
}
package com.myproject.bean.form;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import java.io.Serializable;
/**
* Created by kangmor on 2016/6/20.
*/
//@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class Message {
private String message;
private String error;
public Message() {
}
public Message(String message, String error) {
this.message = message;
this.error = error;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
package com.myproject.bean.form;
import com.myproject.bean.update.Storage;
import com.myproject.bean.update.StoragePos;
import java.util.List;
/**
* Created by kangmor on 2015/12/6.
*/
public class StorageUpdateForm extends BaseUpdateForm {
private Storage storage;
private List<StoragePos> slots;
public Storage getStorage() {
return storage;
}
public void setStorage(Storage storage) {
this.storage = storage;
}
public List<StoragePos> getSlots() {
return slots;
}
public void setSlots(List<StoragePos> slots) {
this.slots = slots;
}
}
package com.myproject.bean.json;
/**
* Created by sunke on 16/9/27.
*/
public class ChartData {
// private String name;
private String partNumber;
private Integer amount;
private Integer count;
// public String getName() {
// return name;
// }
//
// public void setName(String name) {
// this.name = name;
// }
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
this.amount = amount;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
}
package com.myproject.bean.json;
/**
*
* 图表显示时的一个选项数据 Bean
* Created by sunke on 16/12/5.
*/
public class ChartItem {
private String label;
private int value;
private int value2;
private int value3;
private int value4;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue2() {
return value2;
}
public void setValue2(int value2) {
this.value2 = value2;
}
public int getValue3() {
return value3;
}
public void setValue3(int value3) {
this.value3 = value3;
}
public int getValue4() {
return value4;
}
public void setValue4(int value4) {
this.value4 = value4;
}
}
package com.myproject.bean.json;
import java.util.Collection;
/**
* Created by sunke on 2017/12/20.
*/
public class ChartOption {
Collection<String> legend;
Collection<String> xAxis;
Collection<SeriesData> series;
public Collection<String> getLegend() {
return legend;
}
public void setLegend(Collection<String> legend) {
this.legend = legend;
}
public Collection<String> getxAxis() {
return xAxis;
}
public void setxAxis(Collection<String> xAxis) {
this.xAxis = xAxis;
}
public Collection<SeriesData> getSeries() {
return series;
}
public void setSeries(Collection<SeriesData> series) {
this.series = series;
}
}
package com.myproject.bean.json;
import java.io.Serializable;
/**
* Created by kangmor on 2015/11/21.
*/
public class ClientDataParams implements Serializable {
//条码
private String code;
private String temperature;
private String humidity;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getTemperature() {
return temperature;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
}
package com.myproject.bean.json;
import java.util.Collection;
import java.util.List;
/**
* Created by sunke on 17/6/29.
*/
public class HumitureData {
private Collection<String> boxNames;
private Collection<String> times;
private List<SeriesData> humidityData;
private List<SeriesData> temperatureData;
public Collection<String> getBoxNames() {
return boxNames;
}
public void setBoxNames(Collection<String> boxNames) {
this.boxNames = boxNames;
}
public Collection<String> getTimes() {
return times;
}
public void setTimes(Collection<String> times) {
this.times = times;
}
public List<SeriesData> getHumidityData() {
return humidityData;
}
public void setHumidityData(List<SeriesData> humidityData) {
this.humidityData = humidityData;
}
public List<SeriesData> getTemperatureData() {
return temperatureData;
}
public void setTemperatureData(List<SeriesData> temperatureData) {
this.temperatureData = temperatureData;
}
}
package com.myproject.bean.json;
/**
* 库存预警,放入内存中,出入库(上传 Feeder时重新计算)实时更新
* Created by sunke on 17/3/15.
*/
public class InventoryAlarmItem {
/**
* 物编
*/
private String partNumber;
/**
* 剩余所需数量
*/
private int needCount;
/**
* 使用该 partNumber 且未完成的站位数量
*/
private int posNum;
/**
* 所需料盘数,实际上应为:剩余数量/每盘数量(这样算出来的数量通常不是准确的,最多会差 n-1盘,其中 n 为站位的数量)这里从数据库查出来的时候是站位的数量,即n
*/
private int needReel;
/**
* 库存数量
*/
private int stockCount;
/**
* 库存盘数
*/
private int stockReel;
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public int getNeedCount() {
return needCount;
}
public void setNeedCount(int needCount) {
this.needCount = needCount;
}
public int getNeedReel() {
if(needReel < posNum){
return posNum;
}
return needReel;
}
public void setNeedReel(int needReel) {
this.needReel = needReel;
}
public int getStockCount() {
return stockCount;
}
public void setStockCount(int stockCount) {
this.stockCount = stockCount;
}
public int getStockReel() {
return stockReel;
}
public void setStockReel(int stockReel) {
this.stockReel = stockReel;
}
public int getPosNum() {
return posNum;
}
public void setPosNum(int posNum) {
this.posNum = posNum;
}
public void updateNeed(int amount) {
this.needCount = this.needCount + amount;
if(amount > 0){
this.needReel = this.needReel + 1;
}else{
this.needReel = this.needReel - 1;
}
}
/**
* 更新库存信息(数量更新,同时料盘数量根据amount 的正负+1或减1)
*/
public void updateInventory(int amount){
this.stockCount = this.stockCount + amount;
if(amount > 0){
this.stockReel = this.stockReel + 1;
}else {
this.stockReel = this.stockReel - 1;
}
}
}
package com.myproject.bean.json;
/**
* 库存
*/
public class InventoryItem {
/**
* 物编
*/
private String partNumber;
/**
* 库存数量
*/
private int stockCount = 0;
/**
* 锁定的数量
*/
private int lockCount = 0;
/**
* 库存盘数
*/
private int stockReel = 0;
/**
* 锁定的盘数(当加入出库队列时即锁定一盘),出库完成时锁定盘数减一
*/
private int lockReel = 0;
/**
* 过期的盘数
*/
private int expireReel = 0;
/**
* 即将过期的盘数(2个小时内)
*/
private int willExireReel = 0;
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public int getStockCount() {
return stockCount;
}
public void setStockCount(int stockCount) {
this.stockCount = stockCount;
}
public int getStockReel() {
if(stockReel < 0){
stockReel = 0;
}
return stockReel;
}
public void setStockReel(int stockReel) {
this.stockReel = stockReel;
}
/**
* 更新库存信息(数量更新,同时料盘数量根据amount 的正负+1或减1)
*/
public void updateInventory(int amount){
this.stockCount = this.stockCount + amount;
if(amount > 0){
this.stockReel = this.stockReel + 1;
}else {
this.stockReel = this.stockReel - 1;
}
}
public int getLockReel() {
return lockReel;
}
public void setLockReel(int lockReel) {
this.lockReel = lockReel;
}
/**
* 出库完成或取消任务时需要解除库存锁定,返回当前锁定数量
*/
public int unLock(int reelCount){
if(reelCount > 0){
lockReel = lockReel - reelCount;
}
if(lockReel<0){
lockReel = 0;
}
return lockReel;
}
/**
* 加入到出库列表中时需要锁定库存
*/
public boolean lockOne(){
if(stockReel - lockReel > 0){
lockReel++;
return true;
}
return false;
}
public int getExpireReel() {
return expireReel;
}
public void setExpireReel(int expireReel) {
this.expireReel = expireReel;
}
public int getWillExireReel() {
return willExireReel;
}
public void setWillExireReel(int willExireReel) {
this.willExireReel = willExireReel;
}
public int getLockCount() {
return lockCount;
}
public void setLockCount(int lockCount) {
this.lockCount = lockCount;
}
}
package com.myproject.bean.json;
import com.myproject.bean.BaseMongoBean;
import com.myproject.util.StorageConstants;
import org.springframework.data.annotation.Transient;
import java.util.List;
/**
* Created by sunke on 2019/9/23.
*/
public class LiteOrder extends BaseMongoBean {
public LiteOrder() {
}
public LiteOrder(String orderNo, List<LiteOrderItem> orderItems) {
this.orderItems = orderItems;
this.orderNo = orderNo;
}
/**
* 订单号
*/
private String orderNo;
/**
* 当前任务盘数
*/
private int taskReelCount = 0;
/**
* 当前任务已完成盘数
*/
private int finishedReelCount = 0;
/**
* 订单状态
*/
private int status = StorageConstants.LITEORDER_STATUS.NEW;
/**
* 出库状态, 2表示已完成
*/
private boolean closed = false;
/**
* 工单来源
*/
private String source = "";
/**
* 任务完成时间(用于关闭页面显示)
*/
@Transient
private long taskFinishedTime = -1;
/**
* 订单的详细信息
*/
@Transient
private List<LiteOrderItem> orderItems;
public List<LiteOrderItem> getOrderItems() {
return orderItems;
}
public void setOrderItems(List<LiteOrderItem> orderItems) {
this.orderItems = orderItems;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
/**
* 结束当前的任务
*/
public void finishedTasks(){
if(isOutOne()){
setStatus(StorageConstants.LITEORDER_STATUS.ONE_FINISHED);
}else if(isOutBom()){
setStatus(StorageConstants.LITEORDER_STATUS.BOM_FINISHED);
}else if(isOutTails()){
setStatus(StorageConstants.LITEORDER_STATUS.TAILS_FINISHED);
}
setTaskFinishedTime(System.currentTimeMillis());
}
/**
* 是否正在出首套料
* @return
*/
public boolean isOutBom(){
return status == StorageConstants.LITEORDER_STATUS.BOM;
}
/**
* 是否是未执行过的工单
*/
public boolean isNew(){
return status == StorageConstants.LITEORDER_STATUS.NEW;
}
public boolean isOutOne(){
return status == StorageConstants.LITEORDER_STATUS.ONE;
}
/**
* 补料任务完成
* @return
*/
public boolean isOutOneFinished(){
return status == StorageConstants.LITEORDER_STATUS.ONE_FINISHED;
}
/**
* 是否正在出尾料
*/
public boolean isOutTails(){
return status == StorageConstants.LITEORDER_STATUS.TAILS;
}
/**
* 任务料盘是否已出完
*/
public boolean isTaskFinished(){
return status == StorageConstants.LITEORDER_STATUS.BOM_FINISHED || status == StorageConstants.LITEORDER_STATUS.TAILS_FINISHED || status == StorageConstants.LITEORDER_STATUS.ONE_FINISHED;
}
public int getFinishedReelCount() {
return finishedReelCount;
}
public void setFinishedReelCount(int finishedReelCount) {
this.finishedReelCount = finishedReelCount;
}
public int getTaskReelCount() {
return taskReelCount;
}
public void setTaskReelCount(int taskReelCount) {
if(taskReelCount < 0) taskReelCount = 0;
this.taskReelCount = taskReelCount;
}
public long getTaskFinishedTime() {
return taskFinishedTime;
}
public void setTaskFinishedTime(long taskFinishedTime) {
this.taskFinishedTime = taskFinishedTime;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
/**
* 是否需要展示(已完成的,过20 秒自动清除)
*/
public boolean needToShow(){
if(isTaskFinished()){
if(taskFinishedTime != -1){
long now = System.currentTimeMillis();
return now - taskFinishedTime <= 20 * 1000;
}
}
return true;
}
public boolean isClosed() {
return closed;
}
public void setClosed(boolean closed) {
this.closed = closed;
}
}
package com.myproject.bean.json;
import com.myproject.bean.BaseMongoBean;
import org.springframework.data.annotation.Transient;
/**
* 出库订单详情
* Created by sunke on 2019/9/18.
*/
public class LiteOrderItem extends BaseMongoBean {
//物料编号
private String pn;
//需求数量
private int needNum = 0;
//已出数量
private int outNum = 0;
//已出盘数
private int outReelCount = 0;
/**
* 订单信息
*/
private String orderNo = "";
/**
* 站位信息
*/
private String feederInfo = "";
/**
* 库存信息
*/
@Transient
private int inventoryNum = 0;
public int getNeedNum() {
return needNum;
}
public void setNeedNum(int needNum) {
this.needNum = needNum;
}
public String getFeederInfo() {
return feederInfo;
}
public void setFeederInfo(String feederInfo) {
this.feederInfo = feederInfo;
}
public int getOutNum() {
return outNum;
}
public void setOutNum(int outNum) {
this.outNum = outNum;
}
public int getOutReelCount() {
return outReelCount;
}
public void setOutReelCount(int outReelCount) {
this.outReelCount = outReelCount;
}
public String getPn() {
return pn;
}
public void setPn(String pn) {
this.pn = pn;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public int getInventoryNum() {
return inventoryNum;
}
public void setInventoryNum(int inventoryNum) {
this.inventoryNum = inventoryNum;
}
/**
* 出库是否满足要求,已出库数量大于需求数量
*/
public boolean isOutFinished(){
return outNum - needNum >=0;
}
}
package com.myproject.bean.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
/**
* Created by sunke on 17/4/17.
*/
public class PanaMaterial {
@JsonProperty("TransactionID")
String transactionID;
@JsonProperty("TowerID")
String towerID;
// String Timestamp = request.getParameter("Timestamp");//Date(2009-02-15T00:00:00Z)
@JsonProperty("JobID")
String jobID;
@JsonProperty("ReelBarcodes")
List<String> ReelBarcodes;
@JsonProperty("TransactionType")
String transactionType;
@JsonProperty("ReelBarcodesReserved")
List<String> reelBarcodesReserved;
public String getTransactionID() {
return transactionID;
}
public void setTransactionID(String transactionID) {
this.transactionID = transactionID;
}
public String getTowerID() {
return towerID;
}
public void setTowerID(String towerID) {
this.towerID = towerID;
}
public String getJobID() {
return jobID;
}
public void setJobID(String jobID) {
this.jobID = jobID;
}
public List<String> getReelBarcodes() {
return ReelBarcodes;
}
public void setReelBarcodes(List<String> reelBarcodes) {
ReelBarcodes = reelBarcodes;
}
public String getTransactionType() {
return transactionType;
}
public void setTransactionType(String transactionType) {
this.transactionType = transactionType;
}
public List<String> getReelBarcodesReserved() {
return reelBarcodesReserved;
}
public void setReelBarcodesReserved(List<String> reelBarcodesReserved) {
this.reelBarcodesReserved = reelBarcodesReserved;
}
}
package com.myproject.bean.json;
import com.myproject.util.PLATE_SIZE;
/**
*
* 料盘尺寸
* Created by sunke on 17/3/27.
*/
public class PlateSizeBean {
private PLATE_SIZE plateSize;
private int count;
public PLATE_SIZE getPlateSize() {
return plateSize;
}
public void setPlateSize(PLATE_SIZE plateSize) {
this.plateSize = plateSize;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getSizeStr(){
return plateSize.getSizeStr();
}
}
package com.myproject.bean.json;
import java.util.Collection;
/**
* Created by sunke on 16/9/27.
*/
public class SeriesData {
private String nameKey;
private String name;
private String type = "line";
private Collection<Object> data;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public String getNameKey() {
return nameKey;
}
public void setNameKey(String nameKey) {
this.nameKey = nameKey;
}
public void setName(String name) {
this.name = name;
}
public Collection<Object> getData() {
return data;
}
public void setData(Collection<Object> data) {
this.data = data;
}
}
package com.myproject.bean.json;
/**
* Created by sunke on 2017/11/22.
*/
public class SolderInventoryItem {
private String partNumber;
//总库存数量
private int stockNum;
//正在回温数量
private int inWarmNum;
/**
* 快过期数量
*/
private int willExpireNum;
//失效数量
private int expireNum;
//最小存储量
private int minStoreNum;
//最大可存储量
private int maxStoreNum;
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public int getStockNum() {
return stockNum;
}
public void setStockNum(int stockNum) {
this.stockNum = stockNum;
}
public int getInWarmNum() {
return inWarmNum;
}
public void setInWarmNum(int inWarmNum) {
this.inWarmNum = inWarmNum;
}
public int getMinStoreNum() {
return minStoreNum;
}
public void setMinStoreNum(int minStoreNum) {
this.minStoreNum = minStoreNum;
}
public int getMaxStoreNum() {
return maxStoreNum;
}
public void setMaxStoreNum(int maxStoreNum) {
this.maxStoreNum = maxStoreNum;
}
public int getExpireNum() {
return expireNum;
}
public void setExpireNum(int expireNum) {
this.expireNum = expireNum;
}
public int getWillExpireNum() {
return willExpireNum;
}
public void setWillExpireNum(int willExpireNum) {
this.willExpireNum = willExpireNum;
}
}
package com.myproject.bean.json;
import com.myproject.model.User;
import com.myproject.util.StorageConstants;
import java.util.List;
/**
*
* 图表显示时的一个选项数据 Bean
* Created by sunke on 16/12/5.
*/
public class StepBean {
private String cid;
/**
* 当前状态:0=等待刷卡;1=等待开门;2=门已打开,等待关闭;
*/
private int step = StorageConstants.CABINET_STEP.WAIT_CARD;
/**
* 当前操作的库位
*/
private String currentPos = "";
/**
* 当前的用户
*/
private User currentUser;
/**
* 门开期间是否有出入库操作(关门时判断)
*/
private boolean hasOpInDoorOpen = true;
/**
* 上次操作时间,用于判断是否超时
*/
private long lastOpTime = -1;
/**
* 提示消息
*/
private String msg = "";
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getCurrentPos() {
return currentPos;
}
public void setCurrentPos(String currentPos) {
this.currentPos = currentPos;
}
public int getStep() {
return step;
}
public void setStep(int step) {
this.step = step;
}
public User getCurrentUser() {
return currentUser;
}
public void setCurrentUser(User currentUser) {
this.currentUser = currentUser;
}
public boolean isHasOpInDoorOpen() {
return hasOpInDoorOpen;
}
public void setHasOpInDoorOpen(boolean hasOpInDoorOpen) {
this.hasOpInDoorOpen = hasOpInDoorOpen;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public long getLastOpTime() {
return lastOpTime;
}
public void setLastOpTime(long lastOpTime) {
this.lastOpTime = lastOpTime;
}
}
package com.myproject.bean.json;
import java.io.Serializable;
/**
* Created by kangmor on 2015/10/12.
*/
public class StoreData implements Serializable{
private int storageId;
private double height;
public StoreData() {
}
public StoreData(int storageId, double height) {
this.storageId = storageId;
this.height = height;
}
public int getStorageId() {
return storageId;
}
public void setStorageId(int storageId) {
this.storageId = storageId;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
package com.myproject.bean.json;
import com.myproject.bean.BaseMongoBean;
import com.myproject.util.StorageConstants;
/**
* 任务集合
* Created by sunke on 17/3/31.
*/
public abstract class TaskSet extends BaseMongoBean {
/**
* 显示的任务集合名称
*/
private String name;
/**
* 操作出库的站位数量
*/
private int opNum;
/**
* 已完成出库的站位数量
*/
private int finishOpNum;
/**
* 任务创建人
*/
private String creator;
/**
* 状态
*/
private String status = StorageConstants.OP_STATUS.NONE.name();
public abstract StorageConstants.TASK_SOURCE getTaskSource();
public abstract String getTitle();
public String getKey(){
return getTaskSource().name() + getId();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getOpNum() {
return opNum;
}
public void setOpNum(int opNum) {
this.opNum = opNum;
}
public int getFinishOpNum() {
return finishOpNum;
}
public void setFinishOpNum(int finishOpNum) {
this.finishOpNum = finishOpNum;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public boolean isFeeder(){
return StorageConstants.TASK_SOURCE.FEEDER.name().equals(getTaskSource().name());
}
/**
* 是否被取消
*/
public boolean isCancel(){
return StorageConstants.OP_STATUS.CANCEL.name().equals(getStatus());
}
public boolean isEnd(){
return StorageConstants.OP_STATUS.END.name().equals(getStatus());
}
public boolean isExecuting(){
return StorageConstants.OP_STATUS.EXECUTING.name().equals(getStatus());
}
public boolean isFinished(){
return StorageConstants.OP_STATUS.FINISHED.name().equals(getStatus());
}
public boolean isWait(){
return StorageConstants.OP_STATUS.WAIT.name().equals(getStatus());
}
public boolean isPause(){
return StorageConstants.OP_STATUS.PAUSE.name().equals(getStatus());
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
/**
* 没有操作过的才可以删除
*/
public boolean isCanRemove(){
return StorageConstants.OP_STATUS.NONE.name().equals(getStatus()) && getOpNum() == 0 && getFinishOpNum() == 0;
}
@Override
public boolean equals(Object o) {
boolean eq = super.equals(o);
if(!eq && o != null){
if(o instanceof TaskSet){
eq = ((TaskSet)o).getId().equals(this.getId());
}
}
return eq;
}
}
package com.myproject.bean.search;
/**
* Created by kangmor on 2015/12/1.
*/
public class BarcodeSearchCriteria extends BaseSearchCriteria {
private String barcode;
private String partNumber;
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
}
package com.myproject.bean.search;
import org.displaytag.pagination.PaginatedList;
import org.displaytag.properties.SortOrderEnum;
import java.io.Serializable;
import java.util.List;
/**
* Created by kangmor on 2015/9/24.
*/
public class BaseSearchCriteria {
private PageList pageList;
public PageList getPageList() {
return pageList;
}
public void setPageList(PageList pageList) {
this.pageList = pageList;
}
}
package com.myproject.bean.search;
/**
* Created by kangmor on 2015/10/15.
*/
public class BomSearchCriteria extends BaseSearchCriteria {
private String bomName;
public String getBomName() {
return bomName;
}
public void setBomName(String bomName) {
this.bomName = bomName;
}
}
package com.myproject.bean.search;
import com.myproject.bean.BaseFormBean;
/**
* Created by kangmor on 2015/9/14.
*/
public class ComponentSearchCriteria extends BaseSearchCriteria {
private String componentName;
private String componentPartNumber;
public String getComponentName() {
return componentName;
}
public void setComponentName(String componentName) {
this.componentName = componentName;
}
public String getComponentPartNumber() {
return componentPartNumber;
}
public void setComponentPartNumber(String componentPartNumber) {
this.componentPartNumber = componentPartNumber;
}
}
package com.myproject.bean.search;
public class DataLogSearchCriteria extends BaseSearchCriteria {
private String barcode;
private String partNumber;
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
}
package com.myproject.bean.search;
import org.displaytag.pagination.PaginatedList;
import org.displaytag.properties.SortOrderEnum;
import java.util.List;
/**
* Created by kangmor on 2015/10/13.
*/
public class PageList implements PaginatedList {
private List list;
private int pageNumber = 1;
private int objectsPerPage = 20;
private int fullListSize;
private String sortCriterion = "id";
private String searchId;
private SortOrderEnum sortDirection = SortOrderEnum.DESCENDING;
@Override
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
@Override
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getObjectsPerPage() {
return objectsPerPage;
}
public void setObjectsPerPage(int objectsPerPage) {
this.objectsPerPage = objectsPerPage;
}
@Override
public int getFullListSize() {
return fullListSize;
}
public void setFullListSize(int fullListSize) {
this.fullListSize = fullListSize;
}
@Override
public String getSortCriterion() {
return sortCriterion;
}
public void setSortCriterion(String sortCriterion) {
this.sortCriterion = sortCriterion;
}
@Override
public String getSearchId() {
return searchId;
}
public void setSearchId(String searchId) {
this.searchId = searchId;
}
@Override
public SortOrderEnum getSortDirection() {
return sortDirection;
}
public void setSortDirection(SortOrderEnum sortDirection) {
this.sortDirection = sortDirection;
}
}
package com.myproject.bean.search;
/**
* Created by kangmor on 2015/12/4.
*/
public class StoragePosFindCriteria extends BaseSearchCriteria {
/**
* 类型
*/
private int type = -1;
private String name;
/**
* 供应商编号
*/
private String providerNumber;
/**
* 唯一编码信息
*/
private String barcode;
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
private String storageId;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getProviderNumber() {
return providerNumber;
}
public void setProviderNumber(String providerNumber) {
this.providerNumber = providerNumber;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getStorageId() {
return storageId;
}
public void setStorageId(String storageId) {
this.storageId = storageId;
}
}
package com.myproject.bean.search;
/**
* Created by kangmor on 2015/12/4.
*/
public class StorageSearchCriteria extends BaseSearchCriteria {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.myproject.bean.search;
/**
* Created by kangmor on 2016/1/15.
*/
public class WorkOrderSearchCriteria extends BaseSearchCriteria{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean;
import com.myproject.util.StorageConstants;
import java.util.Date;
/**
* 报警信息类型,内容,详情,Msg
0,消息,"1=原点返回 2=复位",
1,总体错误,"1=急停 2=没有气压信号 3=盘错乱",
2,运动轴错误,"1=第一轴(旋转)2=第二轴(上下轴)3=第三轴(前进轴)4=第四轴(压紧轴),5=上下电缸",
3,IO报警,信号超时,io电器定义(电器定义)
*/
public class AlarmInfo extends BaseMongoBean {
/**
* 料仓名称
*/
private String storageName;
/// <summary>
/// 料仓ID,0表示流水线
/// </summary>
private String boxId;
/// <summary>
/// 报警类型,
/// </summary>
private String alarmType;
/// <summary>
/// 报警详情
/// </summary>
private String alarmDetail;
/// <summary>
/// 报警消息
/// </summary>
private String alarmMsg;
/// <summary>
/// 报警消息(英文)
/// </summary>
private String alarmMsgEn;
/// <summary>
/// 0,1=入库,2=出库
/// </summary>
private String inOutStatus;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
public String getAlarmDetail() {
return alarmDetail;
}
public void setAlarmDetail(String alarmDetail) {
this.alarmDetail = alarmDetail;
}
public String getAlarmMsg() {
return alarmMsg;
}
public void setAlarmMsg(String alarmMsg) {
this.alarmMsg = alarmMsg;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getAlarmTypeMsg(){
return StorageConstants.ALARM_TYPE_MSG.getMsg(alarmType,alarmDetail);
}
public String getKey(){
return storageName + "-"+ boxId + "-" + alarmType+"-" + alarmDetail;
}
public String getStorageName() {
return storageName;
}
public String getBoxId() {
return boxId;
}
public void setBoxId(String boxId) {
this.boxId = boxId;
}
public String getAlarmType() {
return alarmType;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public String getInOutStatus() {
return inOutStatus;
}
public void setInOutStatus(String inOutStatus) {
this.inOutStatus = inOutStatus;
}
public void setStorageName(String storageName) {
this.storageName = storageName;
}
public String getAlarmMsgEn() {
return alarmMsgEn;
}
public void setAlarmMsgEn(String alarmMsgEn) {
this.alarmMsgEn = alarmMsgEn;
}
@Override
public boolean equals(Object o) {
boolean eq = super.equals(o);
if(!eq && o!= null && o instanceof AlarmInfo){
AlarmInfo a = (AlarmInfo)o;
//id 都不存在
if(a.getId() == null && getId() == null){
return a.getKey().equals(getKey());
}
}
return eq;
}
@Override
public int hashCode() {
return super.hashCode();
}
}
package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean;
import com.myproject.util.StorageConstants;
import org.hibernate.validator.constraints.NotEmpty;
/**
* Created by kangmor on 2015/9/15.
*/
public class Component extends BaseMongoBean {
/**
* 产品类型:0元器件,1锡膏2PCB3其他4夹具
*/
private int type = StorageConstants.COMPONENT_TYPE.COMPONENT;
/**
* 产品型号
*/
private String model;
//元器件型号
private String productionType;
//"封装"/组件型号
private String encapsulation;
/**
* 冰箱存储条件
*/
private int storageCondition;
/**
* 室温最多存储时间
*/
private int maxStorageTime;
/**
* 回温时间
*/
private int warmTime;
/**
* 夹具编号
*/
private String fixtureNumber;
/**
* 名称 用户输入文本
锡膏类型(productionType) 有铅/无铅 选择
型号 文本输入
包装方式(encapsulation) 罐装/管装 选择
冰箱存储条件 默认单位是摄氏度,仅作输入显示
室温最多存储时间 用户输入数字,单位为小时,此时间为锡膏在料仓内最大存储时间,报警提示
回温时间 用户输入数字,单位为小时,达到回温时间按才能出库
开封后可以保存时间 室温最多存储时间-回温时间,第一次出库,就认为是开封
*/
//名称
private String name;
//料号
//@NotEmpty(message = "{component.partNumber.empty}")
@NotEmpty(message = "{component.partNumber.empty}")
private String partNumber;
//uid
private String uid;
//物料描述
private String description;
//单耗
private String unitCost;
//"MSL等级"
private String msl;
//"单位"
private String unit;
//"厂商"
private String producer;
//"厂商编号"
private String producerNumber;
//"供应商"
private String provider;
//"供应商编号"
private String providerNumber;
private int amount;
/**
* 报警值,与贴片机连机时使用,值小于1时为初始数量amount百分比,大于等于1时为数量,小于此值时会根据贴片机信息自动出料
*/
private float alarmValue = 0.5f;
private int plateSize;
private int height;
/**
* 单台料仓可存储此种物料的最大数量
*/
private int maxStoreNum = 999999999;
/**
* 单台料仓存储此种物料的最小数量
*/
private int minStoreNum = 0;
/**
* 出库时是否需要授权
*/
private boolean needAuth = false;
/**
* 展示的图片
*/
private String showImg = "";
/**
* 有效时长(生产日期+此天数为过期日期),设置默认有效期为2年
*/
private int validDay = 730;
public Component() {
//this.height = StorageConstants.DEFAULT_HEIGHT;
//this.plateSize = StorageConstants.PLATE_SIZE_SMALL;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public String getMsl() {
return msl;
}
public void setMsl(String msl) {
this.msl = msl;
}
public String getEncapsulation() {
return encapsulation;
}
public void setEncapsulation(String encapsulation) {
this.encapsulation = encapsulation;
}
public String getProductionType() {
return productionType;
}
public void setProductionType(String productionType) {
this.productionType = productionType;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getProducer() {
return producer;
}
public void setProducer(String producer) {
this.producer = producer;
}
public String getProducerNumber() {
return producerNumber;
}
public void setProducerNumber(String producerNumber) {
this.producerNumber = producerNumber;
}
public String getProvider() {
return provider;
}
public void setProvider(String provider) {
this.provider = provider;
}
public String getProviderNumber() {
return providerNumber;
}
public void setProviderNumber(String providerNumber) {
this.providerNumber = providerNumber;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getUnitCost() {
return unitCost;
}
public void setUnitCost(String unitCost) {
this.unitCost = unitCost;
}
public int getPlateSize() {
return plateSize;
}
public void setPlateSize(int plateSize) {
this.plateSize = plateSize;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public void setPSize(String pSize){
}
public String getPSize(){
if(plateSize == 0 || height == 0){
return "";
}
if(type == StorageConstants.COMPONENT_TYPE.FIXTURE){
return plateSize + "x" +height+"x" + partNumber;
}
return plateSize + "x" +height;
}
public boolean isNeedAuth() {
return needAuth;
}
public void setNeedAuth(boolean needAuth) {
this.needAuth = needAuth;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getWarmTime() {
return warmTime;
}
public void setWarmTime(int warmTime) {
this.warmTime = warmTime;
}
public int getStorageCondition() {
return storageCondition;
}
public void setStorageCondition(int storageCondition) {
this.storageCondition = storageCondition;
}
public int getMaxStorageTime() {
return maxStorageTime;
}
public void setMaxStorageTime(int maxStorageTime) {
this.maxStorageTime = maxStorageTime;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getFixtureNumber() {
return fixtureNumber;
}
public void setFixtureNumber(String fixtureNumber) {
this.fixtureNumber = fixtureNumber;
}
public int getMaxStoreNum() {
return maxStoreNum;
}
public void setMaxStoreNum(int maxStoreNum) {
this.maxStoreNum = maxStoreNum;
}
public int getMinStoreNum() {
return minStoreNum;
}
public void setMinStoreNum(int minStoreNum) {
this.minStoreNum = minStoreNum;
}
public float getAlarmValue() {
return alarmValue;
}
public void setAlarmValue(float alarmValue) {
this.alarmValue = alarmValue;
}
public int getAlarmAmount(){
if(alarmValue < 1){
return Float.valueOf(getAmount() * alarmValue).intValue();
}else{
return Float.valueOf(alarmValue).intValue();
}
}
public String getShowImg() {
return showImg;
}
public void setShowImg(String showImg) {
this.showImg = showImg;
}
public int getValidDay() {
return validDay;
}
public void setValidDay(int validDay) {
this.validDay = validDay;
}
}
package com.myproject.bean.update;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.myproject.bean.BaseMongoBean;
import com.myproject.util.StorageConstants;
import java.util.Date;
import java.util.List;
/**
* 系统出入库记录
*/
public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
/**
* 是否是单盘出库(联电指出库项目,默认为false即默认批量出库)
*/
private boolean singleOut = false;
/**
* 所属料仓
*/
private String storageName;
/**
* 料仓 cid
*/
private String cid;
/**
* 料仓 ID
*/
private String storageId;
/**
* 仓位 ID
*/
private String posId;
/**
* 仓位名称
*/
private String posName;
//二维码(Reel ID)
private String barcode;
/**
* 物料编号
*/
private String partNumber;
/**
*数量(从 barCode 中读取)
*/
private int num;
/**
* 类型:入库StorageConstants.OP.PUT_IN,出库StorageConstants.OP.CHECKOUT
*/
private int type;
/**
* 状态:StorageConstants.OP_STATUS
*/
private String status;
/**
* 指定批次Id
*/
private String batchId;
/**
* 指定批次显示内容
*/
private String batchInfo;
/**
* 指令来源:站位列表 指定订单工单 MES
*/
private String sourceType;
/**
* 来源 id,
*/
private String sourceId;
/**
* 来源名称
*/
private String sourceName;
/**
* 子来源 ID(单个站位)
*/
private String subSourceId;
/**
* 子来源名称
*/
private String subSourceInfo;
/**
* 创建人
*/
private String creator;
/**
* 操作人
*/
private String operator;
/**
* 关联条码,夹具时关联相关的物料,用于入库完成时插入相关物料
*/
private List<String> relationCodes;
private String memo;
public String getStorageName() {
return storageName;
}
public void setStorageName(String storageName) {
this.storageName = storageName;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getBarcode() {
if(barcode == null){
return "";
}
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getSourceType() {
return sourceType;
}
public void setSourceType(String sourceType) {
this.sourceType = sourceType;
}
public String getSourceId() {
return sourceId;
}
public String getSourceKey(){
return getSourceType() + getSourceId();
}
public void setSourceId(String sourceId) {
this.sourceId = sourceId;
}
public String getSourceName() {
return sourceName;
}
public void setSourceName(String sourceName) {
this.sourceName = sourceName;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getStorageId() {
if(storageId == null){
return "";
}
return storageId;
}
public void setStorageId(String storageId) {
this.storageId = storageId;
}
public String getPosId() {
if(posId == null){
return "";
}
return posId;
}
public void setPosId(String posId) {
this.posId = posId;
}
public String getPosName() {
return posName;
}
public void setPosName(String posName) {
this.posName = posName;
}
public String getSubSourceId() {
return subSourceId;
}
public void setSubSourceId(String subSourceId) {
this.subSourceId = subSourceId;
}
public String getSubSourceInfo() {
return subSourceInfo;
}
public void setSubSourceInfo(String subSourceInfo) {
this.subSourceInfo = subSourceInfo;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
/**
* 是否被取消
*/
public boolean isCancel(){
return StorageConstants.OP_STATUS.CANCEL.name().equals(status);
}
public boolean isExecuting(){
return StorageConstants.OP_STATUS.EXECUTING.name().equals(status);
}
public boolean isFinished(){
return StorageConstants.OP_STATUS.FINISHED.name().equals(status);
}
public boolean isWait(){
return StorageConstants.OP_STATUS.WAIT.name().equals(status);
}
public boolean isEnd(){
return StorageConstants.OP_STATUS.END.name().equals(status);
}
/**
* 是否是入库任务
*/
public boolean isPutInTask(){
return StorageConstants.OP.PUT_IN == type;
}
/**
* 是否是出库任务
*/
public boolean isCheckOutTask(){
return StorageConstants.OP.CHECKOUT == type;
}
/**
* 超过5分钟的已完成,已取消的任务都不再
*/
public boolean needRemoveFromCache(){
if(isFinished() || isCancel()){
if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 3 * 60 * 1000){
return true;
}
}
return false;
}
/**
* 超过5秒的任务不再显示
* @return
*/
public boolean needRemoveFromShow(){
if(isFinished() || isCancel()){
if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 25 * 1000){
return true;
}
}
return false;
}
/**
* 正在执行的出库任务,如果30秒还未完成,再次发送到客户端
*/
public boolean needReSendToClient(){
if(isCheckOutTask() && isExecuting()){
return System.currentTimeMillis() - super.getUpdateDate().getTime() >= 30 * 1000;
}
return false;
}
public String getSourceStr(){
String sourceStr = "";
if (!Strings.isNullOrEmpty(sourceName)){
sourceStr = sourceName;
if(!Strings.isNullOrEmpty(subSourceInfo)){
sourceStr = sourceName + "【"+subSourceInfo+"】";
}
}
return sourceStr;
}
public String getPosStr(){
return storageName +"["+posName +"]";
}
/**
* 任务展示字符串
*/
public String getShowStr(){
String msg = "";
if(isPutInTask()){//入库
msg = "物料["+ partNumber + "] 入库到"+ getPosStr();
}else{
String sourceInfo = "";
if(!Strings.isNullOrEmpty(subSourceInfo)){
sourceInfo = "站位 ["+subSourceInfo+"] 的";
}
if(!Strings.isNullOrEmpty(storageName)){
msg = sourceInfo + "物料["+partNumber + "] 从"+ getPosStr() + "出库";
}else{
msg = sourceInfo + "物料["+partNumber + "] 出库";
}
}
return msg;
}
public String getBatchId() {
return batchId;
}
public void setBatchId(String batchId) {
this.batchId = batchId;
}
public String getBatchInfo() {
return batchInfo;
}
public void setBatchInfo(String batchInfo) {
this.batchInfo = batchInfo;
}
/**
* 是否是站位列表任务
*/
public boolean isFeederTask(){
return StorageConstants.TASK_SOURCE.FEEDER.name().equals(getSourceType());
}
/**
* 是否是呆滞料出库任务
*/
public boolean isInactionTask(){
return StorageConstants.TASK_SOURCE.INACTION.name().equals(getSourceType());
}
// @Override
// public int compareTo(DataLog o) {
// return getCreateDate().compareTo(o.getCreateDate());
// }
@Override
public boolean equals(Object o) {
boolean eq = super.equals(o);
if(!eq && o != null){
if(o instanceof DataLog){
return ((DataLog) o).getId().equals(this.getId());
}
}
return eq;
}
@Override
public int hashCode() {
return getId().hashCode();
}
public List<String> getRelationCodes() {
return relationCodes;
}
public void setRelationCodes(List<String> relationCodes) {
this.relationCodes = relationCodes;
}
public void addRelationCode(String relationCode){
if(relationCodes == null){
relationCodes = Lists.newArrayList();
}
relationCodes.add(relationCode);
}
public boolean isSingleOut() {
return singleOut;
}
public void setSingleOut(boolean singleOut) {
this.singleOut = singleOut;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}
package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean;
/**
*
*/
public class Humiture extends BaseMongoBean {
/**
* 料仓号
*/
private String cid;
public Integer getBoxId() {
return boxId;
}
public void setBoxId(Integer boxId) {
this.boxId = boxId;
}
/**
* BOX 的 ID
*/
private Integer boxId;
/**
* 温度
*/
private String temperature;
/**
* 湿度
*/
private String humidity;
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getTemperature() {
return temperature;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getBoxKey(){
return cid +"-"+ boxId;
}
}
package com.myproject.bean.update;
import com.myproject.bean.json.TaskSet;
import com.myproject.util.StorageConstants;
/**
* 呆料出库
*/
public class InactionTaskSet extends TaskSet {
public static InactionTaskSet create(String areaId, int day){
InactionTaskSet inactionTaskSet = new InactionTaskSet();
inactionTaskSet.setName(day + "天前呆滞物料出库");
inactionTaskSet.setStatus(StorageConstants.OP_STATUS.WAIT.name());
inactionTaskSet.setId("-1");
inactionTaskSet.setDay(day);
return inactionTaskSet;
}
/**
* 总共的物料数量
*/
private int totalOp;
/**
* 几天前的呆滞料
*/
private int day;
public int getTotalOp() {
return totalOp;
}
/**
* 返回总任务数
* @return
*/
@Override
public int getOpNum() {
return totalOp;
}
public int currentOpNum(){
return super.getOpNum();
}
public void setTotalOp(int totalOp) {
this.totalOp = totalOp;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
@Override
public StorageConstants.TASK_SOURCE getTaskSource() {
return StorageConstants.TASK_SOURCE.INACTION;
}
@Override
public String getTitle() {
return getName();
}
}
package com.myproject.bean.update;
import com.google.common.collect.Maps;
import com.myproject.bean.BaseMongoBean;
import com.myproject.bean.utils.DeviceStatusBean;
import com.myproject.util.DateUtil;
import java.util.Date;
import java.util.Map;
public class Maintenance extends BaseMongoBean {
/**
* 料仓CID
*/
private String storageCid;
/**
* 料仓名称
*/
private String storageName;
/**
* 下次维护时间
*/
private Date nextTime;
/**
* 提前多少小时邮件通知
*/
private int hoursInAdvance = 10;
/**
* 邮件地址
*/
private String emails = "";
/**
* 设备运行信息,key为设备名称,设备状态
*/
private Map<String, DeviceStatusBean> deviceData = Maps.newHashMap();
public String getStorageCid() {
return storageCid;
}
public void setStorageCid(String storageCid) {
this.storageCid = storageCid;
}
public Date getNextTime() {
return nextTime;
}
public void setNextTime(Date nextTime) {
this.nextTime = nextTime;
}
public String getNextTimeStr(){
if(nextTime != null){
return DateUtil.toDateString(nextTime);
}
return "";
}
public int getHoursInAdvance() {
return hoursInAdvance;
}
public void setHoursInAdvance(int hoursInAdvance) {
this.hoursInAdvance = hoursInAdvance;
}
public String getEmails() {
return emails;
}
public void setEmails(String emails) {
this.emails = emails;
}
public Map<String, DeviceStatusBean> getDeviceData() {
return deviceData;
}
public void setDeviceData(Map<String, DeviceStatusBean> deviceData) {
this.deviceData = deviceData;
}
/**
* 更新设备的运行状态,返回值表示是否需要保存到数据库
*/
public boolean updateDeviceStatus(String device, int status){
boolean needSaveToDb = false;
DeviceStatusBean deviceInfo = deviceData.get(device);
if(deviceInfo == null){
deviceInfo = new DeviceStatusBean();
deviceInfo.setDeviceName(device);
needSaveToDb = true;
}
long now = System.currentTimeMillis();
//状态改变
if(status != deviceInfo.getStatus()){
//如果当前状态是0(即上一状态是运动,现在是停止),更新轴运行时间, 同时要满足上次更新时间小于5秒,即设备在线
if(status == 0){
if(now - deviceInfo.getStatusUpdateTime() < 5000){
long runTime = now - deviceInfo.getStatusStartTime();
deviceInfo.setRunTimes(deviceInfo.getRunTimes() + runTime);
needSaveToDb = true;
}
}
deviceInfo.setStatus(status);
deviceInfo.setStatusStartTime(now);
}
deviceInfo.setStatusUpdateTime(now);
deviceData.put(device,deviceInfo);
return needSaveToDb;
}
public String getStorageName() {
return storageName;
}
public void setStorageName(String storageName) {
this.storageName = storageName;
}
}
package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean;
/**
* Created by kangmor on 2015/12/8.
*/
public class PreWareHousing extends BaseMongoBean {
private String storageId;
private String barcodeId;
private int amount;
public String getStorageId() {
return storageId;
}
public void setStorageId(String storageId) {
this.storageId = storageId;
}
public String getBarcodeId() {
return barcodeId;
}
public void setBarcodeId(String barcodeId) {
this.barcodeId = barcodeId;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean;
/**
* Created by kangmor on 2016/5/13.
*/
public class ProviderPattern extends BaseMongoBean {
private String provider;
private String providerNumber;
private String regex;
}
package com.myproject.bean.update;
import com.google.common.collect.Lists;
import com.myproject.bean.BaseMongoBean;
import java.util.Date;
import java.util.List;
public class Settings extends BaseMongoBean {
/**
* 指定软件是为哪个客户单独定制的
*/
private String productCustom = "";
/**
* 出库方式
*/
private String outType;
/**
* 打印条码的纸张宽度(条码为方形,大小是长宽中最小的)
*/
private int pageWidth = 500;
/**
* 打印条码的纸张高度
*/
private int pageHeight = 160;
/**
* 最低温度
*/
private float minTemperature = 22.0F;
/**
* 仪表显示最低温度
*/
private float minTemperatureShow = 20.0F;
/**
* 最高温度
*/
private float maxTemperature = 38.0F;
/**
* 仪表显示最高温度
*/
private float maxTemperatureShow = 30.0F;
/**
* 最低湿度值
*/
private float minHumidity = 0.0F;
/**
* 仪表显示最低湿度值
*/
private float minHumidityShow = 0.0F;
/**
* 湿度值
*/
private float maxHumidity = 100.0F;
/**
* 仪表显示最高湿度值
*/
private float maxHumidityShow = 15.0F;
/**
* 条码规则,可用字段有: PN为物料编号即 PartNumber, RI 为唯一码即ReelId, QTY 为数量,SP 为供应商,SPC供应商代码,BATCH 为批次,xx或空为无对应的字段其中必须含有PN和 RI, QTY为空时使用输入产器时的封装数量
* 1@2@3@PN@5@6@7@8@9@10@11@12@13@14@15@16@RI@18@19@20@21@22@23@24
* [)>@06@12S0002@P5292001000@1P1690215@31P1690215@12V527973628@10VCHN-YANTAI@2P@20P@6D20170626@14D20171223@30PY@ZN@K0@16K0@V815@3SB370000000EZZ@Q500GRM000@20T1@1TMT72543954@2T@1Z@@'
*/
@Deprecated
private String codeRule = "";
/**
* 多条条码规则
*/
private List<String> codeRuleList = Lists.newArrayList();
/**
* 打印条码纸张的页边距
*/
private int pageSpace = 5;
/**
* 打印条码时的字体大小
*/
private int fontSize = 18;
/**
* 条码检查 API
*/
private String reelCheckApi;
/**
* 呆滞物料提醒时间(天)
*/
private int inactionDay = 0;
public String getProductCustom() {
return productCustom;
}
public void setProductCustom(String productCustom) {
this.productCustom = productCustom;
}
/**
* 入库通知api地址
*/
private String inNotifyApi;
/**
* 出库通知api地址
*/
private String outNotifyApi;
/**
* PCB 过期提醒提前天数
*/
private int pcbExpireDay = 0;
/**
* PCB 过期提醒邮件地址
*/
private String pcbExpireEmail;
/**
* 备份路径
*/
private String backupPath = "";
/**
* 备份周期
*/
private int backupHours = 0;
/**
* 维护周期
*/
private int maintenanceDays = 60;
/**
* 维护通知邮件地址
*/
private String maintenanceEmail;
/**
* PCB 过期提醒时间(0-23)
*/
private int pcbExpireTime = 0;
/**
* 过期 PCB 上次检测时间
*/
private Date lastPcbCheckDate;
/**
* 订单文件的路径
*/
private String orderFileDir;
public Date getLastPcbCheckDate() {
return lastPcbCheckDate;
}
public void setLastPcbCheckDate(Date lastPcbCheckDate) {
this.lastPcbCheckDate = lastPcbCheckDate;
}
public int getPcbExpireDay() {
return pcbExpireDay;
}
public void setPcbExpireDay(int pcbExpireDay) {
this.pcbExpireDay = pcbExpireDay;
}
public String getPcbExpireEmail() {
return pcbExpireEmail;
}
public void setPcbExpireEmail(String pcbExpireEmail) {
this.pcbExpireEmail = pcbExpireEmail;
}
public int getPcbExpireTime() {
return pcbExpireTime;
}
public void setPcbExpireTime(int pcbExpireTime) {
this.pcbExpireTime = pcbExpireTime;
}
public String getReelCheckApi() {
return reelCheckApi;
}
public void setReelCheckApi(String reelCheckApi) {
this.reelCheckApi = reelCheckApi;
}
public String getInNotifyApi() {
return inNotifyApi;
}
public void setInNotifyApi(String inNotifyApi) {
this.inNotifyApi = inNotifyApi;
}
public String getOutNotifyApi() {
return outNotifyApi;
}
public void setOutNotifyApi(String outNotifyApi) {
this.outNotifyApi = outNotifyApi;
}
public String getOutType() {
return outType;
}
public void setOutType(String outType) {
this.outType = outType;
}
public int getPageWidth() {
return pageWidth;
}
public void setPageWidth(int pageWidth) {
this.pageWidth = pageWidth;
}
public int getPageHeight() {
return pageHeight;
}
public void setPageHeight(int pageHeight) {
this.pageHeight = pageHeight;
}
public int getFontSize() {
return fontSize;
}
public void setFontSize(int fontSize) {
this.fontSize = fontSize;
}
public int getPageSpace() {
return pageSpace;
}
public void setPageSpace(int pageSpace) {
this.pageSpace = pageSpace;
}
public String getCodeRule() {
return codeRule;
}
public void setCodeRule(String codeRule) {
this.codeRule = codeRule;
}
public float getMinTemperature() {
return minTemperature;
}
public void setMinTemperature(float minTemperature) {
this.minTemperature = minTemperature;
}
public float getMaxTemperature() {
return maxTemperature;
}
public void setMaxTemperature(float maxTemperature) {
this.maxTemperature = maxTemperature;
}
public float getMinHumidity() {
return minHumidity;
}
public void setMinHumidity(float minHumidity) {
this.minHumidity = minHumidity;
}
public float getMaxHumidity() {
return maxHumidity;
}
public void setMaxHumidity(float maxHumidity) {
this.maxHumidity = maxHumidity;
}
public float getMinTemperatureShow() {
return minTemperatureShow;
}
public void setMinTemperatureShow(float minTemperatureShow) {
this.minTemperatureShow = minTemperatureShow;
}
public float getMaxTemperatureShow() {
return maxTemperatureShow;
}
public void setMaxTemperatureShow(float maxTemperatureShow) {
this.maxTemperatureShow = maxTemperatureShow;
}
public float getMinHumidityShow() {
return minHumidityShow;
}
public void setMinHumidityShow(float minHumidityShow) {
this.minHumidityShow = minHumidityShow;
}
public float getMaxHumidityShow() {
return maxHumidityShow;
}
public void setMaxHumidityShow(float maxHumidityShow) {
this.maxHumidityShow = maxHumidityShow;
}
public List<String> getCodeRuleList() {
return codeRuleList;
}
public void setCodeRuleList(List<String> codeRuleList) {
this.codeRuleList = codeRuleList;
}
public String getMaintenanceEmail() {
return maintenanceEmail;
}
public void setMaintenanceEmail(String maintenanceEmail) {
this.maintenanceEmail = maintenanceEmail;
}
public String getBackupPath() {
return backupPath;
}
public void setBackupPath(String backupPath) {
this.backupPath = backupPath;
}
public int getBackupHours() {
return backupHours;
}
public void setBackupHours(int backupHours) {
this.backupHours = backupHours;
}
public int getMaintenanceDays() {
return maintenanceDays;
}
public void setMaintenanceDays(int maintenanceDays) {
this.maintenanceDays = maintenanceDays;
}
public String getOrderFileDir() {
return orderFileDir;
}
public void setOrderFileDir(String orderFileDir) {
this.orderFileDir = orderFileDir;
}
public int getInactionDay() {
return inactionDay;
}
public void setInactionDay(int inactionDay) {
this.inactionDay = inactionDay;
}
}
package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean;
import com.myproject.util.PLATE_SIZE;
import com.myproject.util.StorageConstants;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.data.annotation.Transient;
import java.util.List;
/**
* Created by kangmor on 2015/12/3.
*/
public class Storage extends BaseMongoBean {
@NotEmpty(message = "{storage.name.empty}")
private String name;
/**
* 程序路径
*/
private String sourcePath;
private String cid;
private int totalSlots;
private int emptySlots;
/**
* 兼容类型:完全匹配,完全兼容,同尺寸兼容
*/
private StorageConstants.COMPATIBLE_TYPE compatibleType = StorageConstants.COMPATIBLE_TYPE.EXACT_MATCH;
/**
* 料仓类型:单台自动料仓,手动料仓流水线料仓
*/
private String type = StorageConstants.TYPE.AUTO.name();
//包含料仓 Box数量
private Integer boxCount=1;
public Integer getBoxCount() {
if (boxCount == null){
boxCount = 1;
}
return boxCount;
}
/**
* 禁止出入库的 box
*/
private List<Integer> disableBoxes;
/**
* 允许放入的料盘尺寸信息
*/
@Transient
private List<PLATE_SIZE> plateSizes;
public List<Integer> getDisableBoxes() {
return disableBoxes;
}
public List<PLATE_SIZE> getPlateSizes() {
return plateSizes;
}
public void setPlateSizes(List<PLATE_SIZE> plateSizes) {
this.plateSizes = plateSizes;
}
/**
* 判断 box 是否可用
*/
public boolean isBoxEnable(Integer boxId){
if(disableBoxes != null){
return disableBoxes.contains(boxId);
}
return true;
}
public void setDisableBoxes(List<Integer> disableBoxes) {
this.disableBoxes = disableBoxes;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void setBoxCount(Integer boxCount) {
this.boxCount = boxCount;
}
private boolean available = true;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public int getTotalSlots() {
return totalSlots;
}
public void setTotalSlots(int totalSlots) {
this.totalSlots = totalSlots;
}
public int getEmptySlots() {
return emptySlots;
}
public void setEmptySlots(int emptySlots) {
this.emptySlots = emptySlots;
}
public boolean isAvailable() {
return available;
}
public void setAvailable(boolean available) {
this.available = available;
}
/**
* 是否是上下层的在线料仓
* @return
*/
public boolean isOnlineStorage(){
return StorageConstants.TYPE.ONLINE.name().equals(type);
}
/**
* 是否是指上下料的料仓
* @return
*/
public boolean isBatchStorage(){
return StorageConstants.TYPE.BATCH.name().equals(type);
}
/**
* 是否是单台自动仓
*/
public boolean isAuto(){
return StorageConstants.TYPE.AUTO.name().equals(type);
}
/**
* 是否是虚拟仓
*/
public boolean isVirtual(){
return StorageConstants.TYPE.VIRTUAL.name().equals(type);
}
/**
* 是否是流水线料仓
*/
public boolean isLine() {
return StorageConstants.TYPE.LINE.name().equals(type);
}
/**
* 是否是智能料架
*/
public boolean isShelf() {
return StorageConstants.TYPE.SHELF.name().equals(type);
}
/**
* 是否是ACC智能料架
*/
public boolean isAccShelf() {
return StorageConstants.TYPE.ACCSHELF.name().equals(type);
}
/**
* 是否是料柜
*/
public boolean isCabinet() {
return StorageConstants.TYPE.CABINET.name().equals(type);
}
public boolean canPutInPos(int w, int h, int PosW, int posH){
if(compatibleType == StorageConstants.COMPATIBLE_TYPE.EXACT_MATCH){//完全匹配
if(w == PosW && h == posH){
return true;
}
}else if(compatibleType == StorageConstants.COMPATIBLE_TYPE.FULLY_COMPATIBLE){//完全兼容
if(w <= PosW && h <= posH){
return true;
}
}else if(compatibleType == StorageConstants.COMPATIBLE_TYPE.SIZE_COMPATIBLE){//同尺寸兼容
if(w == PosW && h <= posH){
return true;
}
}
return false;
}
/**
* 判断料盘是否能够放入该仓库: 0=完全匹配,1=完全兼容,2=同尺寸兼容
*/
public boolean canPutIn(int w, int h){
if(plateSizes != null){
for (PLATE_SIZE plateSize : plateSizes) {
if(canPutInPos(w,h, plateSize.getW(), plateSize.getH())){
return true;
}
}
}
return false;
}
public String getSourcePath() {
return sourcePath;
}
public void setSourcePath(String sourcePath) {
this.sourcePath = sourcePath;
}
public StorageConstants.COMPATIBLE_TYPE getCompatibleType() {
return compatibleType;
}
public void setCompatibleType(StorageConstants.COMPATIBLE_TYPE compatibleType) {
this.compatibleType = compatibleType;
}
}
package com.myproject.bean.update;
import com.google.common.base.Strings;
import com.myproject.bean.BaseMongoBean;
import java.util.List;
/**
* Created by kangmor on 2015/12/4.
*/
public class StoragePos extends BaseMongoBean {
private String storageId;
private Barcode barcode;
private String posName;
/**
* 该仓位是否限制物编,虚拟仓使用
*/
private List<String> limitPnList;
//进料优先级,数字越大优先级越高,例:1-1的优先级为100 仓1-2的优先级200,那么入仓时就会优先进入1-2仓
private double priority = 0f;
//高度
private int h;
//是否可用了
private boolean enabled = true;
//是否使用了
private boolean used = false;
//Width
private int w;
//可出库时间,类型的锡膏时,可出库时间为最新放入的锡膏的可出库时间
private long canCheckOutTime = 0;
/**
* 并联的其他库位,合并入主库位的库位
*/
private List<String> mergePosList;
public Barcode getBarcode() {
return barcode;
}
public void setBarcode(Barcode barcode) {
this.barcode = barcode;
}
public String getStorageId() {
return storageId;
}
public void setStorageId(String storageId) {
this.storageId = storageId;
}
public String getPosName() {
return posName;
}
public String getLabelStr(){
String posNameLabel = posName;
int index = posNameLabel.lastIndexOf(":");
if(index > 0){
posNameLabel = posNameLabel.substring(0,index);
}
return posNameLabel;
}
public int getLabelIndex(){
int index = posName.lastIndexOf(":");
if(index > 0){
String posIndex = posName.substring(index+1);
try{
return Integer.valueOf(posIndex);
}catch (Exception e){
}
}
return 1;
}
public void setPosName(String posName) {
this.posName = posName;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public boolean isUsed() {
return used;
}
public void setUsed(boolean used) {
this.used = used;
}
public int getW() {
return w;
}
public void setW(int w) {
this.w = w;
}
public double getPriority() {
return priority;
}
public void setPriority(double priority) {
this.priority = priority;
}
public boolean isLocked(){
return getBarcode() != null && !Strings.isNullOrEmpty(getBarcode().getLockId());
}
@Override
public boolean equals(Object o) {
boolean eq = super.equals(o);
if(!eq && o != null){
if(o instanceof StoragePos){
return ((StoragePos) o).getId().equals(this.getId());
}
}
return eq;
}
@Override
public int hashCode() {
return getId().hashCode();
}
/**
* 在库分钟数
*/
public long getInStoreMiniute(){
if(barcode != null){
return barcode.getInStoreMiniute();
}
return 0;
}
/**
* 在库小时数
*/
public long getInStoreHour(){
if(barcode != null){
return barcode.getInStoreHour();
}
return 0;
}
/**
* 是否达到回温时间(只有锡膏需要判断)
*/
public boolean isReachedWarmTime(){
if(barcode != null){
return barcode.isReachedWarmTime();
}
return true;
}
public long getCanCheckOutTime() {
return canCheckOutTime;
}
public void setCanCheckOutTime(long canCheckOutTime) {
this.canCheckOutTime = canCheckOutTime;
}
public List<String> getLimitPnList() {
return limitPnList;
}
public void setLimitPnList(List<String> limitPnList) {
this.limitPnList = limitPnList;
}
public List<String> getMergePosList() {
return mergePosList;
}
public void setMergePosList(List<String> mergePosList) {
this.mergePosList = mergePosList;
}
}
此文件的差异太大,无法显示。
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!