Commit 3ae6dee1 sunke

常州博世料架

0 个父辈
正在显示 1000 个修改的文件 包含 5121 行增加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>
此文件类型无法预览
PN,supplier,count,w,h,type
1001,ABC,1000,7,12,0
1002,,1000,15,12,0
此文件类型无法预览
此文件的差异被折叠, 点击展开。
位置,优先级,高度,宽度,料仓ID,设备IP,灯索引
1_01,10,20,7,1,192.168.1.151,1
1_02,10,20,7,1,192.168.1.151,2
1_03,10,20,7,1,192.168.1.151,3
1_04,10,20,7,1,192.168.1.151,4
1_05,10,20,7,1,192.168.1.151,5
1_06,10,20,7,1,192.168.1.151,6
1_07,10,20,7,1,192.168.1.151,7
1_08,10,20,7,1,192.168.1.151,8
1_09,10,20,7,1,192.168.1.151,9
1_10,10,20,7,1,192.168.1.151,10
1_11,10,20,7,1,192.168.1.151,11
1_12,10,20,7,1,192.168.1.151,12
1_13,10,20,7,1,192.168.1.151,13
1_14,10,20,7,1,192.168.1.151,14
1_15,10,20,7,1,192.168.1.151,15
1_16,10,20,7,1,192.168.1.151,16
1_17,10,20,7,1,192.168.1.151,17
1_18,10,20,7,1,192.168.1.151,18
1_19,10,20,7,1,192.168.1.151,19
1_20,10,20,7,1,192.168.1.151,20
1_21,10,20,7,1,192.168.1.151,21
1_22,10,20,7,1,192.168.1.151,22
1_23,10,20,7,1,192.168.1.151,23
1_24,10,20,7,1,192.168.1.151,24
1_25,10,20,7,1,192.168.1.151,25
1_26,10,20,7,1,192.168.1.151,26
1_27,10,20,7,1,192.168.1.151,27
1_28,10,20,7,1,192.168.1.151,28
1_29,10,20,7,1,192.168.1.151,29
1_30,10,20,7,1,192.168.1.151,30
1_31,10,20,7,1,192.168.1.151,31
1_20,10,20,7,1,192.168.1.151,32
1_33,10,20,7,1,192.168.1.151,33
1_34,10,20,7,1,192.168.1.151,34
1_35,10,20,7,1,192.168.1.151,35
1_36,10,20,7,1,192.168.1.151,36
1_37,10,20,7,1,192.168.1.151,37
1_38,10,20,7,1,192.168.1.151,38
1_39,10,20,7,1,192.168.1.151,39
1_40,10,20,7,1,192.168.1.151,40
1_41,10,20,7,1,192.168.1.151,41
2_01,10,20,13,1,192.168.1.151,84
2_02,10,20,13,1,192.168.1.151,83
2_03,10,20,13,1,192.168.1.151,82
2_04,10,20,13,1,192.168.1.151,81
2_05,10,20,13,1,192.168.1.151,80
2_06,10,20,13,1,192.168.1.151,79
2_07,10,20,13,1,192.168.1.151,78
2_08,10,20,13,1,192.168.1.151,77
2_09,10,20,13,1,192.168.1.151,76
2_10,10,20,13,1,192.168.1.151,75
2_11,10,20,13,1,192.168.1.151,74
2_12,10,20,13,1,192.168.1.151,73
2_13,10,20,13,1,192.168.1.151,72
2_14,10,20,13,1,192.168.1.151,71
2_15,10,20,13,1,192.168.1.151,70
2_16,10,20,13,1,192.168.1.151,69
2_17,10,20,13,1,192.168.1.151,68
2_18,10,20,13,1,192.168.1.151,67
2_19,10,20,13,1,192.168.1.151,66
2_20,10,20,13,1,192.168.1.151,65
2_21,10,20,13,1,192.168.1.151,64
2_22,10,20,13,1,192.168.1.151,63
2_23,10,20,13,1,192.168.1.151,62
2_24,10,20,13,1,192.168.1.151,61
2_25,10,20,13,1,192.168.1.151,60
2_26,10,20,13,1,192.168.1.151,59
2_27,10,20,13,1,192.168.1.151,58
2_28,10,20,13,1,192.168.1.151,57
2_29,10,20,13,1,192.168.1.151,56
2_30,10,20,13,1,192.168.1.151,55
2_31,10,20,13,1,192.168.1.151,54
2_20,10,20,13,1,192.168.1.151,53
2_33,10,20,13,1,192.168.1.151,52
2_34,10,20,13,1,192.168.1.151,51
2_35,10,20,13,1,192.168.1.151,50
2_36,10,20,13,1,192.168.1.151,49
2_37,10,20,13,1,192.168.1.151,48
2_38,10,20,13,1,192.168.1.151,47
2_39,10,20,13,1,192.168.1.151,46
2_40,10,20,13,1,192.168.1.151,45
2_41,10,20,13,1,192.168.1.151,44
3_01,10,20,15,1,192.168.1.151,87
3_02,10,20,15,1,192.168.1.151,88
3_03,10,20,15,1,192.168.1.151,89
3_04,10,20,15,1,192.168.1.151,90
3_05,10,20,15,1,192.168.1.151,91
3_06,10,20,15,1,192.168.1.151,92
3_07,10,20,15,1,192.168.1.151,93
3_08,10,20,15,1,192.168.1.151,94
3_09,10,20,15,1,192.168.1.151,95
3_10,10,20,15,1,192.168.1.151,96
3_11,10,20,15,1,192.168.1.151,97
3_12,10,20,15,1,192.168.1.151,98
3_13,10,20,15,1,192.168.1.151,99
3_14,10,20,15,1,192.168.1.151,100
3_15,10,20,15,1,192.168.1.151,101
3_16,10,20,15,1,192.168.1.151,102
3_17,10,20,15,1,192.168.1.151,103
3_18,10,20,15,1,192.168.1.151,104
3_19,10,20,15,1,192.168.1.151,105
3_20,10,20,15,1,192.168.1.151,106
3_21,10,20,15,1,192.168.1.151,107
3_22,10,20,15,1,192.168.1.151,108
3_23,10,20,15,1,192.168.1.151,109
3_24,10,20,15,1,192.168.1.151,110
3_25,10,20,15,1,192.168.1.151,111
3_26,10,20,15,1,192.168.1.151,112
3_27,10,20,15,1,192.168.1.151,113
3_28,10,20,15,1,192.168.1.151,114
3_29,10,20,15,1,192.168.1.151,115
3_30,10,20,15,1,192.168.1.151,116
3_31,10,20,15,1,192.168.1.151,117
3_20,10,20,15,1,192.168.1.151,118
3_33,10,20,15,1,192.168.1.151,119
3_34,10,20,15,1,192.168.1.151,120
3_35,10,20,15,1,192.168.1.151,121
3_36,10,20,15,1,192.168.1.151,122
3_37,10,20,15,1,192.168.1.151,123
3_38,10,20,15,1,192.168.1.151,124
3_39,10,20,15,1,192.168.1.151,125
3_40,10,20,15,1,192.168.1.151,126
3_41,10,20,15,1,192.168.1.151,127
此文件类型无法预览
此文件类型无法预览
此文件的差异被折叠, 点击展开。
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
此文件的差异被折叠, 点击展开。
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.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 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 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 Barcode barcode;
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
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;
}
}
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;
/**
* 基础权限
* 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;
}
}
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.czshelf;
import java.util.Date;
/**
* SMTLINENO线别, PARTNO料号, SENDTIME发料时间, SMEDSCANTIME smed扫料时间, SMEDPACKAGEID packageid, SPLICEREELBAR matid, TOID 同, SAPPLANTID
可以根据数据packageid与扫描入库packageid检索出线别和前后侧位置,例如:根据packageid检索出这盘物料是Line28后侧物料,软件应该会自动创建库位号=Line28-R-1001(1001表示电子料架库位号)
*/
public class Ecall {
/**
* 产线编号
*/
private String smtLineNo;
/**
* ] 料号
*/
private String partNo;
/**
* SENDTIME发料时间
*/
private Date sendTime;
/**
* SMEDSCANTIME smed扫料时间
*/
private Date smedScanTime;
/**
* SMEDPACKAGEID packageid
*/
private String smedPackageId;
/**
* SPLICEREELBAR matid,
*/
private String spliceReelbar;
public String getPartNo() {
return partNo;
}
public void setPartNo(String partNo) {
this.partNo = partNo;
}
public Date getSendTime() {
return sendTime;
}
public void setSendTime(Date sendTime) {
this.sendTime = sendTime;
}
public String getSmedPackageId() {
return smedPackageId;
}
public void setSmedPackageId(String smedPackageId) {
this.smedPackageId = smedPackageId;
}
public Date getSmedScanTime() {
return smedScanTime;
}
public void setSmedScanTime(Date smedScanTime) {
this.smedScanTime = smedScanTime;
}
public String getSmtLineNo() {
return smtLineNo;
}
public void setSmtLineNo(String smtLineNo) {
this.smtLineNo = smtLineNo;
}
public String getSpliceReelbar() {
return spliceReelbar;
}
public void setSpliceReelbar(String spliceReelbar) {
this.spliceReelbar = spliceReelbar;
}
@Override
public String toString() {
return "Ecall{" +
"partNo='" + partNo + '\'' +
", smtLineNo='" + smtLineNo + '\'' +
", sendTime=" + sendTime +
", smedScanTime=" + smedScanTime +
", smedPackageId='" + smedPackageId + '\'' +
", spliceReelbar='" + spliceReelbar + '\'' +
'}';
}
}
package com.myproject.bean.czshelf;
import com.myproject.bean.update.StoragePos;
import com.myproject.util.DateUtil;
import java.util.Date;
/**
* Created by sunke on 2019/6/27.
*/
public class RemainingTime {
/**
* 产线编号
*/
private int lineNo;
/**
* 产品型号
*/
private String mCFileName;
/**
* feeder位置
*/
private int slot;
/**
* feeder位置
*/
private int slotNum;
/**
* feeder位置
*/
private int subslot;
/**
* feeder位置
*/
private int tableNo;
/**
* ] 料号
*/
private String partNo;
/**
* 时间
*/
private Date time_on;
/**
* 物料唯一码matid
*/
private String reelbar;
/**
* ] 剩余数量
*/
private int current_remaining_quantity;
/**
* ] 状态
*/
private int status;
/**
* 发料时间
*/
private Date sendTime;
/**
* ] 库位
*/
private String cabinet;
/**
* ] 可使用的剩余时间
*/
private int remainingTime;
/**
* 接料时间
*/
private Date partTimeOn;
/**
* 料架上的位置
*/
private String shelfLoc = "";
/**
* 锁定的库位信息
*/
private StoragePos lockPos = null;
/**
* 显示的颜色
*/
private String colorClass = "";
public String getCabinet() {
return cabinet;
}
public void setCabinet(String cabinet) {
this.cabinet = cabinet;
}
public int getCurrent_remaining_quantity() {
return current_remaining_quantity;
}
public void setCurrent_remaining_quantity(int current_remaining_quantity) {
this.current_remaining_quantity = current_remaining_quantity;
}
public int getLineNo() {
return lineNo;
}
public void setLineNo(int lineNo) {
this.lineNo = lineNo;
}
public String getmCFileName() {
return mCFileName;
}
public void setmCFileName(String mCFileName) {
this.mCFileName = mCFileName;
}
public String getPartNo() {
return partNo;
}
public void setPartNo(String partNo) {
this.partNo = partNo;
}
public String getReelbar() {
return reelbar;
}
public void setReelbar(String reelbar) {
this.reelbar = reelbar;
}
public int getRemainingTime() {
return remainingTime;
}
public void setRemainingTime(int remainingTime) {
this.remainingTime = remainingTime;
}
public Date getSendTime() {
return sendTime;
}
public void setSendTime(Date sendTime) {
this.sendTime = sendTime;
}
public int getSlot() {
return slot;
}
public void setSlot(int slot) {
this.slot = slot;
}
public int getSlotNum() {
return slotNum;
}
public void setSlotNum(int slotNum) {
this.slotNum = slotNum;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getSubslot() {
return subslot;
}
public void setSubslot(int subslot) {
this.subslot = subslot;
}
public int getTableNo() {
return tableNo;
}
public void setTableNo(int tableNo) {
this.tableNo = tableNo;
}
public Date getTime_on() {
return time_on;
}
public void setTime_on(Date time_on) {
this.time_on = time_on;
}
public Date getPartTimeOn() {
return partTimeOn;
}
public void setPartTimeOn(Date partTimeOn) {
this.partTimeOn = partTimeOn;
}
public String getKey(){
return lineNo + "-" + slot + "-" + subslot + "-" + partNo;
}
public String getPartTimeOnStr(){
if(partTimeOn != null){
return DateUtil.toDateTimeString(partTimeOn);
}
return "";
}
public String getSendTimeStr(){
if(sendTime != null){
return DateUtil.toDateTimeString(sendTime);
}
return "";
}
public String getShelfLoc() {
return shelfLoc;
}
public void setShelfLoc(String shelfLoc) {
this.shelfLoc = shelfLoc;
}
public String getColorClass() {
return colorClass;
}
public void setColorClass(String colorClass) {
this.colorClass = colorClass;
}
public StoragePos getLockPos() {
return lockPos;
}
public void setLockPos(StoragePos lockPos) {
this.lockPos = lockPos;
}
}
\ No newline at end of file \ No newline at end of file
package com.myproject.bean.czshelf;
import java.util.Date;
/**
* 接料信息
* Created by sunke on 2019/6/27.
*/
public class Splice {
/**
* 产线编号
*/
private String lineNo;
/**
* feeder位置
*/
private int slot;
/**
* feeder位置
*/
private int subslot;
/**
* ] 料号
*/
private String partNo;
/**
* 接料时间
*/
private Date partTimeOn;
/**
* 物料唯一码matid
*/
private String reelbar;
public String getLineNo() {
return lineNo;
}
public void setLineNo(String lineNo) {
this.lineNo = lineNo;
}
public String getPartNo() {
return partNo;
}
public void setPartNo(String partNo) {
this.partNo = partNo;
}
public Date getPartTimeOn() {
return partTimeOn;
}
public void setPartTimeOn(Date partTimeOn) {
this.partTimeOn = partTimeOn;
}
public String getReelbar() {
return reelbar;
}
public void setReelbar(String reelbar) {
this.reelbar = reelbar;
}
public int getSlot() {
return slot;
}
public void setSlot(int slot) {
this.slot = slot;
}
public int getSubslot() {
return subslot;
}
public void setSubslot(int subslot) {
this.subslot = subslot;
}
public String getKey(){
return lineNo + "-" + slot + "-" + subslot + "-" + partNo;
}
}
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;charset=GBK";
}
}
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.myproject.bean.update.Bom;
import com.myproject.bean.update.Component;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;
/**
* Created by kangmor on 2015/10/15.
*/
public class BomUpdateForm extends BaseUpdateForm {
@Valid
private Bom bom;
private List<Component> componentList;
private int amount;
public Bom getBom() {
return bom;
}
public void setBom(Bom bom) {
this.bom = bom;
}
public List<Component> getComponentList() {
return componentList;
}
public void setComponentList(List<Component> componentList) {
this.componentList = componentList;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
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.form;
import com.myproject.bean.update.WorkOrder;
/**
* Created by kangmor on 2016/1/15.
*/
public class WorkOrderUpdateForm extends BaseUpdateForm {
private WorkOrder workOrder;
public WorkOrder getWorkOrder() {
return workOrder;
}
public void setWorkOrder(WorkOrder workOrder) {
this.workOrder = workOrder;
}
}
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 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;
}
}
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;
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;
}
}
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 areaId;
/**
* 显示的任务集合名称
*/
private String name;
/**
* 操作出库的站位数量
*/
private int opNum;
/**
* 已完成出库的站位数量
*/
private int finishOpNum;
/**
* 任务创建人
*/
private String creator;
/**
* 状态
*/
private String status = StorageConstants.OP_STATUS.NONE.name();
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
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;
}
public String getPosName() {
return posName;
}
public void setPosName(String posName) {
this.posName = posName;
}
private String posName;
private String storageName;
public String getStorageName() {
return storageName;
}
public void setStorageName(String storageName) {
this.storageName = storageName;
}
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;
}
}
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>
/// 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;
}
@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 org.springframework.data.annotation.Transient;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
/**
* 料仓区域,一个区域包含多个料仓
*/
public class Area extends BaseMongoBean {
/**
* 区域名称
*/
private String name;
/**
* 允许入库截止时间
*/
private Date putInEndTime;
/**
* 区域所包含的料仓,不存数据库
*/
@Transient
private Collection<Storage> storages = new ArrayList<>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getPutInEndTime() {
return putInEndTime;
}
public void setPutInEndTime(Date putInEndTime) {
this.putInEndTime = putInEndTime;
}
public Collection<Storage> getStorages() {
return storages;
}
public void setStorages(Collection<Storage> storages) {
this.storages = storages;
}
}
package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean;
import javax.validation.constraints.Size;
import java.util.List;
/**
* Created by kangmor on 2015/10/15.
*/
public class Bom extends BaseMongoBean {
//料号
private List<Comps> components;
//名称
@Size(min = 2, max = 50, message = "长度必须为2-20个字符")
private String name;
/* //型号
private String type;
//物料描述
private String description;
//单耗
private String unitCost;
//单位
private String unit;
//送料器位置
private String position;
//贴片机
private String smd;
//生产线
private String produceLine;*/
public List<Comps> getComponents() {
return components;
}
public void setComponents(List<Comps> components) {
this.components = components;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// public String getType() {
// return type;
// }
//
// public void setType(String type) {
// this.type = type;
// }
//
// 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 getUnit() {
// return unit;
// }
//
// public void setUnit(String unit) {
// this.unit = unit;
// }
//
// public String getPosition() {
// return position;
// }
//
// public void setPosition(String position) {
// this.position = position;
// }
//
// public String getSmd() {
// return smd;
// }
//
// public void setSmd(String smd) {
// this.smd = smd;
// }
//
// public String getProduceLine() {
// return produceLine;
// }
//
// public void setProduceLine(String produceLine) {
// this.produceLine = produceLine;
// }
}
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 int amount;
/**
* 报警值,与贴片机连机时使用,值小于1时为初始数量amount百分比,大于等于1时为数量,小于此值时会根据贴片机信息自动出料
*/
private float alarmValue = 0.5f;
private int plateSize;
private int height;
/**
* 单台料仓可存储此种物料的最大数量
*/
private int maxStoreNum = 100000;
/**
* 单台料仓存储此种物料的最小数量
*/
private int minStoreNum = 0;
/**
* 出库时是否需要授权
*/
private boolean needAuth = false;
/**
* 展示的图片
*/
private String showImg = "";
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 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;
}
}
package com.myproject.bean.update;
/**
* Created by kangmor on 2015/10/15.
*/
public class Comps {
private String componentId;
private int amount;
public Comps() {
}
public Comps(String componentId, int amount) {
this.componentId = componentId;
this.amount = amount;
}
public String getComponentId() {
return componentId;
}
public void setComponentId(String componentId) {
this.componentId = componentId;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
package com.myproject.bean.update;
import com.myproject.bean.json.TaskSet;
import com.myproject.util.StorageConstants;
import org.springframework.data.annotation.Transient;
import java.util.ArrayList;
import java.util.List;
/**
* 站位列表信息
*/
public class Feeder extends TaskSet {
/**
* 生产线信息
*/
private String line;
/**
* 批量信息
*/
private int amount;
/**
* 有效站位数量
*/
private int posNum;
/**
* 关联的指定批次 ID
*/
private String specifiedBatchId;
/**
* 关联的指定批次显示信息
*/
private String specifiedBatchInfo;
@Transient
private List<FeederPosition> positions = new ArrayList<>();
public List<FeederPosition> getPositions() {
return positions;
}
public void setPositions(List<FeederPosition> positions) {
this.positions = positions;
}
public int getPosNum() {
return posNum;
}
public void setPosNum(int posNum) {
this.posNum = posNum;
}
public String getLine() {
return line;
}
public void setLine(String line) {
this.line = line;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public String getSpecifiedBatchId() {
return specifiedBatchId;
}
public void setSpecifiedBatchId(String specifiedBatchId) {
this.specifiedBatchId = specifiedBatchId;
}
public String getSpecifiedBatchInfo() {
return specifiedBatchInfo;
}
public void setSpecifiedBatchInfo(String specifiedBatchInfo) {
this.specifiedBatchInfo = specifiedBatchInfo;
}
@Override
public StorageConstants.TASK_SOURCE getTaskSource() {
return StorageConstants.TASK_SOURCE.FEEDER;
}
@Override
public String getTitle() {
return getName() + "("+getLine()+"线)";
}
}
package com.myproject.bean.update;
import com.myproject.bean.BaseMongoBean;
import com.myproject.util.StorageConstants;
/**
* 站位列表信息(机型 区域 站位 左右 物料编码 用量 Feeder 类型 间距 )飞利浦无间距信息
*/
public class FeederPosition extends BaseMongoBean {
private String areaId;
/**
* 机型
*/
private String zone;
/**
* 区域
*/
private String table;
/**
* 站位
*/
private String position;
/**
* 左右
*/
private String lane;
/**
* 物料编码
*/
private String partNumber;
/**
* 用量
*/
private String quantity;
/**
* Feeder 类型
*/
private String feederType;
/**
* 间距
*/
private String pitch;
/**
* 站位列表 ID
*/
private String feederId;
/**
* 所需数量(批量信息 x quantity)
*/
private int needNum = 0;
/**
* 剩余所需数量(needNum - remainNeed= 已出数量)
*/
private int remainNeed = 0;
/**
* 当前状态:是否是等待出库
*/
private String status = StorageConstants.OP_STATUS.NONE.name();
public String getPartNumber() {
return partNumber;
}
public void setPartNumber(String partNumber) {
this.partNumber = partNumber;
}
public String getZone() {
if(zone == null){
return "";
}
return zone;
}
public void setZone(String zone) {
this.zone = zone;
}
public String getTable() {
if(table == null){
return "";
}
return table;
}
public void setTable(String table) {
this.table = table;
}
public String getPosition() {
if(position == null){
return "";
}
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getLane() {
if(position == null){
return "";
}
return lane;
}
public void setLane(String lane) {
this.lane = lane;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
public String getFeederType() {
return feederType;
}
public void setFeederType(String feederType) {
this.feederType = feederType;
}
public String getPitch() {
return pitch;
}
public void setPitch(String pitch) {
this.pitch = pitch;
}
public String getFeederId() {
return feederId;
}
public void setFeederId(String feederId) {
this.feederId = feederId;
}
public String getPosInfo(){
return /**""+getZone() + "-"+*/getTable() + "-" + getPosition() + "-"+getLane()+"";
}
public int getRemainNeed() {
return remainNeed;
}
public void setRemainNeed(int remainNeed) {
this.remainNeed = remainNeed;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public int getNeedNum() {
return needNum;
}
public void setNeedNum(int needNum) {
this.needNum = needNum;
}
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
}
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.setAreaId(areaId);
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;
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;
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;
}
}
package com.myproject.bean.update;
/**
* Created by kangmor on 2015/12/3.
*/
@Deprecated
public class Slot extends Barcode{
private String storagePosId;
private String storagePosName;
private String barcodeId;
private String storageId;
private String storageName;
public String getStoragePosId() {
return storagePosId;
}
public void setStoragePosId(String storagePosId) {
this.storagePosId = storagePosId;
}
public String getStoragePosName() {
return storagePosName;
}
public void setStoragePosName(String storagePosName) {
this.storagePosName = storagePosName;
}
public String getBarcodeId() {
return barcodeId;
}
public void setBarcodeId(String barcodeId) {
this.barcodeId = barcodeId;
}
public String getStorageId() {
return storageId;
}
public void setStorageId(String storageId) {
this.storageId = storageId;
}
public String getStorageName() {
return storageName;
}
public void setStorageName(String storageName) {
this.storageName = storageName;
}
}
package com.myproject.bean.update;
import com.myproject.bean.json.TaskSet;
import com.myproject.util.StorageConstants;
/**
* 指定批次(与站位列表匹配规则)name 与站位列表的第一个字段完全匹配,side 与站位列表的第三个字段完全匹配,bottom与站位列表的第二个字段部分匹配
*/
public class SpecifiedBatch extends TaskSet {
/**
* 版底()
*/
private String bottom;
/**
* 面(A面,B面 T 面等)
*/
private String side;
@Override
public StorageConstants.TASK_SOURCE getTaskSource() {
return StorageConstants.TASK_SOURCE.BATCH;
}
@Override
public String getTitle() {
return getName() + "-" + getBottom() + "-" + getSide();
}
public String getBottom() {
return bottom;
}
public void setBottom(String bottom) {
this.bottom = bottom;
}
public String getSide() {
return side;
}
public void setSide(String side) {
this.side = side;
}
}
package com.myproject.bean.update;
import com.google.common.base.Strings;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 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;
/**
* 区域 ID
*/
@NotEmpty(message = "{storage.area.empty}")
private String areaId;
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
/**
* 料仓类型:单台自动料仓,手动料仓流水线料仓
*/
private String type = StorageConstants.TYPE.AUTO.name();
/**
* 亮灯备注信息 lineNo=TableNo=color;lineNo=TableNo=color;statusLight=20=5
*/
private String lightMemo = "";
//包含料仓 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;
}
/**
* 是否是手动料仓
*/
public boolean isManual(){
return StorageConstants.TYPE.MANUAL.name().equals(type);
}
/**
* 是否是上下层的在线料仓
* @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);
}
/**
* 是否是料柜
*/
public boolean isCabinet() {
return StorageConstants.TYPE.CABINET.name().equals(type);
}
/**
* 是否是料柜
*/
public boolean isAccShelf() {
return StorageConstants.TYPE.ACC_SHELF.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;
}
public String getLightMemo() {
return lightMemo;
}
public void setLightMemo(String lightMemo) {
this.lightMemo = lightMemo;
}
/**
* 发料信息是否需要展示
* @param lineNo
* @param tableNo
* @return
*/
public boolean needShow(int lineNo, int tableNo){
if(!Strings.isNullOrEmpty(lightMemo)){
String lineNoStr = "" + lineNo;
String tableNoStr = "" + tableNo;
String[] lineInfos = lightMemo.split(";");
for(String lineInfo : lineInfos){
if(!Strings.isNullOrEmpty(lineInfo)){
String[] lightInfos = lineInfo.split("=");
if(lineNoStr.equalsIgnoreCase(lightInfos[0]) && tableNoStr.equalsIgnoreCase(lightInfos[1])){
return true;
}
}
}
}else{
return true;
}
return false;
}
/**
* 要显示的线别(lineNo=TableNo=color;lineNo=TableNo=color;statusLight=20=5)
* 1为 F 2为 R
* 12=1=green;8=2=yellow;statusLight=30=5
* @return
*/
public Map<String,String> getShowLines(){
Map lineMap = new HashMap();
if(!Strings.isNullOrEmpty(lightMemo)){
String[] lineInfos = lightMemo.split(";");
for(String lineInfoStr : lineInfos){
if(!Strings.isNullOrEmpty(lineInfoStr)){
String[] lightInfos = lineInfoStr.split("=");
if(!"statusLight".equalsIgnoreCase(lightInfos[0])){
//lineList.add(lightInfos[0] + "-" + lightInfos[1]);
String lineInfo = lightInfos[0] + "-" + lightInfos[1];
lineInfo = lineInfo.replace("-1","-F");
lineInfo = lineInfo.replace("-2","-R");
lineMap.put(lineInfo,lightInfos[2].toLowerCase());
}
}
}
}
return lineMap;
}
/**
* 获取线体灯的颜色
* @param lineNo
* @return
*/
public String getLightColor(int lineNo){
if(!Strings.isNullOrEmpty(lightMemo)){
String lineNoStr = "" + lineNo;
String[] lineInfos = lightMemo.split(";");
for(String lineInfo : lineInfos){
if(!Strings.isNullOrEmpty(lineInfo)){
String[] lightInfos = lineInfo.split("=");
if(lineNoStr.equalsIgnoreCase(lightInfos[0])){
return lightInfos[2];
}
}
}
}
return "Green";
}
/**
* 状态灯显示红灯的分钟数
*/
public int getRedLightMiniute(){
if(!Strings.isNullOrEmpty(lightMemo)){
String[] lineInfos = lightMemo.split(";");
for(String lineInfo : lineInfos){
if(!Strings.isNullOrEmpty(lineInfo)){
String[] lightInfos = lineInfo.split("=");
if("statusLight".equalsIgnoreCase(lightInfos[0])){
return Integer.valueOf(lightInfos[1]);
}
}
}
}
return 5;
}
/**
* 状态灯显示黄灯的分钟数
*/
public int getYellowLightMinute(){
if(!Strings.isNullOrEmpty(lightMemo)){
String[] lineInfos = lightMemo.split(";");
for(String lineInfo : lineInfos){
if(!Strings.isNullOrEmpty(lineInfo)){
String[] lightInfos = lineInfo.split("=");
if("statusLight".equalsIgnoreCase(lightInfos[0])){
return Integer.valueOf(lightInfos[2]);
}
}
}
}
return 20;
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!