diff --git a/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/bean/AndonCellGroupCfg.java b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/bean/AndonCellGroupCfg.java index d9d47c3..c194faf 100644 --- a/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/bean/AndonCellGroupCfg.java +++ b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/bean/AndonCellGroupCfg.java @@ -7,6 +7,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiParam; import lombok.Data; import lombok.EqualsAndHashCode; +import org.hibernate.Interceptor; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; @@ -41,7 +42,6 @@ public class AndonCellGroupCfg extends BaseBean { @ApiParam(value = "工作单元组") private String cellGroup; - @Column(name = "GROUP_CODE") @ApiParam(value = "分组代码") private String groupCode; @@ -49,4 +49,20 @@ public class AndonCellGroupCfg extends BaseBean { @Column(name = "GROUP_NAME") @ApiParam(value = "分组名称") private String groupName; + + @Column(name = "HORIZONTAL_AXIS") + @ApiParam(value = "横坐标") + private Float horizontalAxis ; + + @Column(name = "VERTICAL_AXIS") + @ApiParam(value = "纵坐标") + private Float verticalAxis; + + @Column(name = "ABNORMAL_SRC") + @ApiParam(value = "异常图片") + private String abnormalSrc; + + @Column(name = "NORMAL_SRC") + @ApiParam(value = "正常图片") + private String normalSrc; } diff --git a/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/bean/AndonManageQueue.java b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/bean/AndonManageQueue.java index 82ff8c5..ea05280 100644 --- a/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/bean/AndonManageQueue.java +++ b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/bean/AndonManageQueue.java @@ -111,6 +111,10 @@ public class AndonManageQueue extends BaseManageQueue { private Double avgSignTime; @Transient + @ApiParam(value = "解决时长", example = "0") + private Long resolveTime; + + @Transient @ApiParam(value = "平均解决时长", example = "0") private Double avgResolveTime; diff --git a/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/AndonBoardModel.java b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/AndonBoardModel.java index cee23af..819fdd7 100644 --- a/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/AndonBoardModel.java +++ b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/AndonBoardModel.java @@ -15,20 +15,51 @@ import java.io.Serializable; @Data public class AndonBoardModel { + @ApiParam("工作单元代码") + private String workCellCode; + + @ApiParam("工作单元名称") + private String workCellName; + + @ApiParam("安灯任务编号") + private String andonOrderNo; + @ApiParam("安灯类型") private String alarmCode; @ApiParam("安灯类型名称") private String alarmName; + @ApiParam("故障时长 单位:分钟") + private Long exceptionTimeCount = 0L; + + @ApiParam("响应时长 单位:分钟") + private Long responseTimeCount = 0L; + + @ApiParam("解决时长 单位:分钟") + private Long resetTimeCount = 0L; + @ApiParam("安灯正常处理的次数") - private Integer inTime; + private Integer inTime = 0; @ApiParam("安灯超时次数") - private Integer overTime; + private Integer overTime = 0; @ApiParam("安灯总次数") - private Integer totalTime; + private Integer totalTime = 0; + + @ApiParam("安灯类型百分比") + private float propagation = 0; + + @ApiParam("事件描述代码") + private String acCode; + + @ApiParam("事件描述详情") + private String acDesc; + + @ApiParam("工位运行状态") + private String cellStatus; + public int getTotalTimeVal() { return totalTime == null ? 0 : totalTime; @@ -42,5 +73,18 @@ public class AndonBoardModel { return inTime == null ? 0 : inTime; } + public double getExceptionCountVal() { + return exceptionTimeCount == null ? 0 : exceptionTimeCount; + } + + public double getResponseTimeCountVal() { + return responseTimeCount == null ? 0 : responseTimeCount; + } + + public double getResetTimeCountVal() { + return resetTimeCount == null ? 0 : resetTimeCount; + } + + } diff --git a/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/AndonMenuInterfaceModel.java b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/AndonMenuInterfaceModel.java new file mode 100644 index 0000000..cad9398 --- /dev/null +++ b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/AndonMenuInterfaceModel.java @@ -0,0 +1,89 @@ +package cn.estsh.i3plus.pojo.andon.model; + +import cn.estsh.i3plus.pojo.andon.bean.AndonManageQueue; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 安灯主界面Model + * @Reference: + * @Author: Crish + * @CreateDate:2019-11-22-13:44 + * @Modify: + **/ +@Data +public class AndonMenuInterfaceModel{ + + @ApiParam("工作中心代码") + private String workCenterCode; + + @ApiParam("工作中心名称") + private String workCenterName; + + @ApiParam("产线运行状态") + private String workCenterStatus; + + @ApiParam("安灯类型") + private String alarmCode; + + @ApiParam("安灯类型名称") + private String alarmName; + + @ApiParam("故障总时长 单位:分钟") + private Long exceptionTime = 0L; + + @ApiParam("当前安灯类型故障时长 单位:分钟") + private Long currentExceptionTime = 0L; + + @ApiParam("当前安灯类型故障比例") + private Double proportion = 0D; + + @ApiParam("当前工厂的产线故障统计") + private List andonWorkcenterList; + + @ApiParam("当前产线的所有故障统计") + private List alarmBrokenInfoList; + + @ApiParam("当前产线的未解决故障统计") + private List pendingSolveBrokenInfoList; + + @ApiParam("当前产线的响应时长top10") + private List responseInfoList; + + @ApiParam("当前产线的解决时长top10") + private List solveInfoList; + + @ApiParam("当前产线的异常时长top10") + private List exceptionInfoList; + + @ApiParam("当前产线的站点状态统计") + private List andonCellGroupStatusList; + + public double getExceptionTimeVal() { + return exceptionTime == null ? 0 : exceptionTime; + } + + public double getCurrentExceptionTimeVal() { + return currentExceptionTime == null ? 0 : currentExceptionTime; + } + + public double getProportionVal() { + return proportion == null ? 0 : proportion; + } + + @Override + public String toString() { + return "AndonMenuInterfaceModel{" + + "workCenterCode='" + workCenterCode + '\'' + + ", workCenterName='" + workCenterName + '\'' + + ", workCenterStatus='" + workCenterStatus + '\'' + + ", alarmCode='" + alarmCode + '\'' + + ", alarmName='" + alarmName + '\'' + + ", exceptionTime=" + exceptionTime + + ", currentExceptionTime=" + currentExceptionTime + + ", proportion=" + proportion + + '}'; + } +} \ No newline at end of file diff --git a/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/CellGroupStatusModel.java b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/CellGroupStatusModel.java new file mode 100644 index 0000000..42af00f --- /dev/null +++ b/modules/i3plus-pojo-andon/src/main/java/cn/estsh/i3plus/pojo/andon/model/CellGroupStatusModel.java @@ -0,0 +1,55 @@ +package cn.estsh.i3plus.pojo.andon.model; + +/** + * @Description: 站点统计分组model + * @Reference: + * @Author: Crish + * @CreateDate:2019-11-22-16:02 + * @Modify: + **/ + +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import javax.persistence.Column; +import java.util.List; + +/** + * 工位分组配置model + */ +@Data +public class CellGroupStatusModel{ + + @ApiParam("工作中心代码") + private String workCenterCode; + + @ApiParam("安灯类型") + private String groupCode; + + @ApiParam("安灯类型名称") + private String groupName; + + @ApiParam("安灯类型名称") + private String workCellCode; + + @ApiParam("安灯类型名称") + private String workCellName; + + @ApiParam("站点运行状态") + private String cellGroupStatus; + + @ApiParam(value = "横坐标") + private Float horizontalAxis = 0f; + + @ApiParam(value = "纵坐标") + private Float verticalAxis = 0f; + + @ApiParam(value = "异常图片") + private String abnormalSrc; + + @ApiParam(value = "正常图片") + private String normalSrc; + + @ApiParam("当前站点下的工位故障统计") + private List andonBoardModelList; +} diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ReportPager.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ReportPager.java index aa9b938..7116296 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ReportPager.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/ReportPager.java @@ -1,7 +1,10 @@ package cn.estsh.i3plus.pojo.aps.model; -import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateDeserializer; +import cn.estsh.i3plus.pojo.aps.converter.CustomDateSerializer; import cn.estsh.i3plus.pojo.base.enumutil.ApsEnumUtil; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.annotations.Api; import lombok.Data; @@ -16,9 +19,12 @@ import java.util.Date; **/ @Data @Api("报表分页查询参数") -public class ReportPager extends Pager { - private String filter; // 物料筛选条件 +public class ReportPager extends APSPager { + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date begin; // 统计开始时间 + @JsonSerialize(using = CustomDateSerializer.class) + @JsonDeserialize(using = CustomDateDeserializer.class) private Date end; // 统计结束时间 private ApsEnumUtil.MATERIAL_REPORT_TYPE type; private ApsEnumUtil.REPORT_TIME_SPAN span; // 统计时间间隔 diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/StatisticReportReponse.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/StatisticReportReponse.java new file mode 100644 index 0000000..91a36ab --- /dev/null +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/model/StatisticReportReponse.java @@ -0,0 +1,13 @@ +package cn.estsh.i3plus.pojo.aps.model; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +public class StatisticReportReponse { + private List headers = new ArrayList<>(); + private List> datas = new ArrayList<>(); +} diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/codemaker/SnowflakeIdMaker.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/codemaker/SnowflakeIdMaker.java index 7b74ecf..7441b96 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/codemaker/SnowflakeIdMaker.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/codemaker/SnowflakeIdMaker.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.pojo.base.codemaker; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.management.VMManagement; @@ -10,6 +11,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.net.InetAddress; import java.net.NetworkInterface; +import java.util.concurrent.ConcurrentHashMap; /** * @Description : 使用SnowFlake,生成分布式ID @@ -20,32 +22,73 @@ import java.net.NetworkInterface; * @CreateDate : 2018-09-11 16:35 * @Modify: **/ -public class SnowflakeIdMaker { +public class SnowflakeIdMaker { public static final Logger LOGGER = LoggerFactory.getLogger(SnowflakeIdMaker.class); + private static final ConcurrentHashMap RAM_CACHE_MAP = new ConcurrentHashMap(); + private long workerId; private long datacenterId; private long sequence = 0L; - public SnowflakeIdMaker(){ + /** + * 禁止私自构建,防止ID重复 + */ + @Deprecated + private SnowflakeIdMaker() { this.workerId = getWorkerMacId(); this.datacenterId = getDatacenterPid(); this.sequence = 0L; } - public SnowflakeIdMaker(long workerId, long datacenterId){ + /** + * 禁止私自构建 防止 ID 生成重复 + * @param workerId 工作区ID + * @param datacenterId 数据区ID + */ + private SnowflakeIdMaker(long workerId, long datacenterId) { if (workerId > maxWorkerId || workerId < 0) { - throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0",maxWorkerId)); + throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId)); } if (datacenterId > maxDatacenterId || datacenterId < 0) { - throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0",maxDatacenterId)); + throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId)); } this.workerId = workerId; this.datacenterId = datacenterId; } + /** + * 获取雪花生成器 + * @param workerId 工作区ID + * @param softType 产品类型 + * @return + */ + public static SnowflakeIdMaker getSnowflakeIdMaker(long workerId, CommonEnumUtil.SOFT_TYPE softType) { + if(softType == null){ + throw new IllegalArgumentException(String.format("The data warehouse soft type in the data center cannot be empty")); + } + + return getSnowflakeIdMaker(workerId, softType.getSnowflakeId()); + } + + /** + * 获取雪花生成器 + * @param workerId 工作区ID + * @param datacenterId 数据仓ID + * @return + */ + public static SnowflakeIdMaker getSnowflakeIdMaker(long workerId, long datacenterId) { + String cacheKey = workerId + "_" + datacenterId; + SnowflakeIdMaker maker = RAM_CACHE_MAP.get(cacheKey); + if (maker == null) { + maker = new SnowflakeIdMaker(workerId, datacenterId); + RAM_CACHE_MAP.put(cacheKey, maker); + } + return maker; + } + private long twepoch = 1288834974657L; private long workerIdBits = 5L; diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/AndonEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/AndonEnumUtil.java index 6b88127..afcbeff 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/AndonEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/AndonEnumUtil.java @@ -13,6 +13,52 @@ import org.apache.commons.lang3.StringUtils; public class AndonEnumUtil { /** + * 安灯主界面产线或者站点运行状态 + * 正常 = 10,故障 = 20 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum RUNNING_STATUS{ + RUNNING("10","正常"), + STOP("20","故障"); + + private String value; + private String description; + + RUNNING_STATUS(String value, String description) { + this.value = value; + this.description = description; + } + + public String getValue() { + return value; + } + + public String getDescription() { + return description; + } + + public static String valueOfDescription(String val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (StringUtils.equalsIgnoreCase(values()[i].value,val)) { + tmp = values()[i].description; + } + } + return tmp; + } + + public static String descriptionOfValue(String val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (StringUtils.equalsIgnoreCase(values()[i].description, val)) { + tmp = values()[i].value; + } + } + return tmp; + } + } + + /** * 安灯配置表分组列枚举 * 10-是,20-否 */ diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/ApsEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/ApsEnumUtil.java index 1f6c237..f1c1054 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/ApsEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/ApsEnumUtil.java @@ -84,7 +84,6 @@ public class ApsEnumUtil { */ @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum MATERIAL_REPORT_TYPE { - PRODUCE("PRODUCE", "生产"), PURCHASE("PURCHASE", "采购"), INVENTORY("INVENTORY", "库存"); diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java index 4a5197c..46172c2 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java @@ -17,35 +17,54 @@ public class CommonEnumUtil { */ @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum SOFT_TYPE { - IMPP(1, "impp-platform", "IMPP平台"), - CORE(2, "i3core", "i3业务平台"), - WMS(3, "i3wms", "仓库管理软件"), - MES(4, "i3mes", "生产管理软件"), - QMS(5, "i3qms", "质量管理软件"), - MES_PCN(6, "i3mes-pcn", "生产管理软件-节点中心"), - SWEB(7, "i3sweb", "供应商服务"), - - FORM(20,"block-form","智能表单"), - REPORT(21,"block-report","智能报表"), - WORKFLOW(22,"block-workflow","智能工作流"), - JOBFLOW(23,"block-jobflow","智能作业流"), - SOFTSWITCH(24,"block-softswitch","软件适配器"), - HARDSWITCH(25,"block-hardswitch","硬件适配器"), - LAC(26,"lac","连接适配器"), - ANDON(27,"andon","安灯"), - APS(28,"APS","高级计划与排程"), - CENTER(99,"icloud-server","注册中心"), - SURFACE(98,"i3surface","对外服务"), - CLOUD(97,"i3cloud","微服务"), - GATEWAY(96,"impp-gateway","服务网关"), - CONSOLE(95,"impp-console","服务监控台"); + IMPP(1, 0, 0, "impp-platform", "IMPP平台"), + CORE(2, 8100, 4, "i3core", "i3业务平台"), + WMS(3, 8200, 10, "i3wms", "仓库管理软件"), + MES(4, 8300, 11, "i3mes", "生产管理软件"), + QMS(5, 0, 0, "i3qms", "质量管理软件"), + MES_PCN(6, 8350, 12, "i3mes-pcn", "生产管理软件-节点中心"), + SWEB(7, 8800, 19, "i3sweb", "供应商服务"), + + FORM(20, 8900, 16, "block-form", "智能表单"), + REPORT(21, 8910, 17, "block-report", "智能报表"), + WORKFLOW(22, 0, 0, "block-workflow", "智能工作流"), + JOBFLOW(23, 0, 0, "block-jobflow", "智能作业流"), + SOFTSWITCH(24, 8920, 18, "block-softswitch", "软件适配器"), + HARDSWITCH(25, 0, 0, "block-hardswitch", "硬件适配器"), + LAC(26, 8600, 13, "lac", "连接适配器"), + ANDON(27, 8500, 14, "andon", "安灯"), + APS(28, 8410, 15, "APS", "高级计划与排程"), + CENTER(99, 8000, 1, "icloud-server", "注册中心"), + SURFACE(98, 0, 0, "i3surface", "对外服务"), + CLOUD(97, 0, 0, "i3cloud", "微服务"), + GATEWAY(96, 9000, 3, "impp-gateway", "服务网关"), + CONSOLE(95, 8010, 2, "impp-console", "服务监控台"); + /** + * 产品ID + */ private int value; + /** + * 应用默认端口 + */ + private int prot; + /** + * 应用默认雪花DataBaseId(0-31)共32 个存储区 + */ + private int snowflakeId; + /** + * 产品代码 + */ private String code; + /** + * 产品描述 + */ private String description; - private SOFT_TYPE(int value, String code, String description) { + SOFT_TYPE(int value, int prot, int snowflakeId, String code, String description) { this.value = value; + this.prot = prot; + this.snowflakeId = snowflakeId; this.code = code; this.description = description; } @@ -62,6 +81,14 @@ public class CommonEnumUtil { return description; } + public int getProt() { + return prot; + } + + public int getSnowflakeId() { + return snowflakeId; + } + public static String valueOfCode(int val) { String tmp = null; for (int i = 0; i < values().length; i++) { @@ -82,6 +109,15 @@ public class CommonEnumUtil { return tmp; } + public static SOFT_TYPE codeOf(String code) { + for (int i = 0; i < values().length; i++) { + if (values()[i].code.equals(code)) { + return values()[i]; + } + } + return null; + } + public static String valueOfDescription(int val) { String tmp = null; for (int i = 0; i < values().length; i++) { diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java index 650cc9b..23cb6b4 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java @@ -629,6 +629,16 @@ public class MesEnumUtil { } return tmp; } + + public static Integer descriptionOfValue(String description) { + Integer tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].description.equals(description)) { + tmp = values()[i].value; + } + } + return tmp; + } } /** @@ -1285,7 +1295,17 @@ public class MesEnumUtil { MES_PCN_SYNC_CFG(50, "PCN同步配置"), MES_PART(60, "物料表"), MES_PRODUCE_CATEGORY(70, "产品类型"), - MES_PACK_SPEC(80, "包装规格"); + MES_PACK_SPEC(80, "包装规格"), + MES_PROD_PACK(90, "产品包装关系"), + MES_PRODUCT_ENCODE_CFG(100, "产品编码配置"), + MES_BOM(110, "物料清单"), + MES_PROD_CFG_TYPE(120, "产品配置类型"), + MES_CUSTOMER(130, "客户表"), + MES_CUSTOMER_PART(140, "客户零件关系表"), + MES_WORK_CENTER(150, "生产线"), + MES_WORK_CELL(160, "工位"), + MES_WC_EQUIPMENT(170, "工位设备关系表"), + MES_SHIFT(180, "班次"); private int value; private String description; @@ -1531,6 +1551,16 @@ public class MesEnumUtil { return tmp; } + public static Integer descriptionOfValue(String description) { + Integer tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].description.equals(description)) { + tmp = values()[i].value; + } + } + return tmp; + } + } /** @@ -3134,9 +3164,8 @@ public class MesEnumUtil { */ @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum CONFIG_TYPE { - FASTDFS_SAVE_PATH(10, "SAVE_PATH", ""), - NGINX_IP(20, "NGINX_HOST", ""), + NGINX_HOST(20, "NGINX_HOST", ""), MES_STATION_SOCKET(30, "mes_station_socket", ""), GATEWAY_IP(40, "GATEWAY_HOST", ""), UPDATE_SYNC_TIME(50, "SYNC_DATA_URL", "UPDATE_SYNC_TIME"), @@ -3440,6 +3469,16 @@ public class MesEnumUtil { } return tmp; } + + public static String descriptionOfValue(String description) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].description.equals(description)) { + tmp = values()[i].value; + } + } + return tmp; + } } } diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java index 7bafaf6..69259c5 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java @@ -368,7 +368,7 @@ public class WmsEnumUtil { */ @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum PRODUCT_INSTOCK_STATUS { - CREATE(10, "创建"), FINISH(20, "已处理"), FAIL(30, "处理出错"); + CREATE(10, "创建"), FINISH(20, "已处理"), FAIL(30, "处理出错"),CREATE_DOCMOVE(40, "生成移库单"),PULL_FAIL(50, "拉动出错"); private int value; private String description; @@ -950,6 +950,7 @@ public class WmsEnumUtil { INSTOCKED(40, "入库"), PICKED(50, "配料"), OUT_STOCK(60, "出库"), + SCRAP(70, "报废"), COMMING(80, "在途"); private int value; diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/BeanMapUtils.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/BeanMapUtils.java index 387ed78..1504765 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/BeanMapUtils.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/BeanMapUtils.java @@ -1,8 +1,12 @@ package cn.estsh.i3plus.pojo.base.util; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.cglib.beans.BeanGenerator; import org.springframework.cglib.beans.BeanMap; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; public class BeanMapUtils { @@ -30,4 +34,31 @@ public class BeanMapUtils { return bean; } + + /** + * 键值对转换为对象 + * @param mapList + * @return + */ + public static List generateObjectByField(List> mapList) { + try { + List resultList = new ArrayList<>(); + for (Map propertyMap : mapList) { + BeanGenerator generator = new BeanGenerator(); + for (Map.Entry entry : propertyMap.entrySet()) { + generator.addProperty(entry.getKey(), String.class); + } + // 构建对象 + Object obj = generator.create(); + // 赋值 + for (Map.Entry en : propertyMap.entrySet()) { + BeanUtils.setProperty(obj, en.getKey(), en.getValue()); + } + resultList.add(obj); + } + return resultList; + } catch (Exception e) { + return null; + } + } } diff --git a/modules/i3plus-pojo-mes-pcn/src/main/java/cn/estsh/i3plus/pojo/mes/pcn/sqlpack/MesHqlPack.java b/modules/i3plus-pojo-mes-pcn/src/main/java/cn/estsh/i3plus/pojo/mes/pcn/sqlpack/MesHqlPack.java index a55e442..8b6ac75 100644 --- a/modules/i3plus-pojo-mes-pcn/src/main/java/cn/estsh/i3plus/pojo/mes/pcn/sqlpack/MesHqlPack.java +++ b/modules/i3plus-pojo-mes-pcn/src/main/java/cn/estsh/i3plus/pojo/mes/pcn/sqlpack/MesHqlPack.java @@ -350,4 +350,25 @@ public class MesHqlPack { } + /** + * MES班组信息查询条件封装 + * + * @param shiftGroup + * @param organizeCode + * @return + */ + public static DdlPackBean getMesShiftGroup(MesShiftGroup shiftGroup, String organizeCode) { + + DdlPackBean packBean = getAllBaseDataByNormalPro(shiftGroup, organizeCode); + if (!StringUtils.isEmpty(shiftGroup.getGroupCode())) { + DdlPreparedPack.getStringLikerPack(shiftGroup.getGroupCode(), "groupCode", packBean); + } + if (!StringUtils.isEmpty(shiftGroup.getGroupName())) { + DdlPreparedPack.getStringLikerPack(shiftGroup.getGroupName(), "groupName", packBean); + } + if (!StringUtils.isEmpty(shiftGroup.getWorkCenterCode())) { + DdlPreparedPack.getStringLikerPack(shiftGroup.getWorkCenterCode(), "workCenterCode", packBean); + } + return packBean; + } } diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefectRecord.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefectRecord.java index 89540d9..9008e5e 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefectRecord.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesDefectRecord.java @@ -26,33 +26,49 @@ import java.util.Date; @DynamicUpdate @EqualsAndHashCode(callSuper = true) @Table(name = "MES_DEFECT_RECORD") -@Api("生产工单") +@Api("不良信息记录表") public class MesDefectRecord extends BaseBean { - @Column(name = "SERIAL_NUMBER") + @Column(name="SERIAL_NUMBER") @ApiParam("产品条码") private String serialNumber; - @Column(name = "PART_NO") + @Column(name="PART_NO") @ApiParam("物料号") private String partNo; - @Column(name = "DEFECT_CODE") - @ApiParam("不良代码") + @Column(name="PART_NAME") + @ApiParam("物料名称") + private String partName; + + @Column(name="DEFECT_CODE") + @ApiParam("缺陷代码") private String defectCode; - @Column(name = "REPAIR_STATUS") + @Column(name="DEFECT_NAME") + @ApiParam("缺陷名称") + private String defectName; + + @Column(name="DEFECT_LOCATION") + @ApiParam("缺陷位置") + private String defectLocation; + + @Column(name = "SIDE_LOCATION") + @ApiParam("面位") + private String sideLocation; + + @Column(name="REPAIR_STATUS") @ApiParam("维修状态") private Integer repairStatus; - @Column(name = "WORK_CENTER_CODE") + @Column(name="WORK_CENTER_CODE") @ApiParam("工作中心代码") private String workCenterCode; - @Column(name = "WORK_CELL_CODE") + @Column(name="WORK_CELL_CODE") @ApiParam("工作单元代码") private String workCellCode; - @Column(name = "MEMO") + @Column(name="MEMO") @ApiParam("备注") private String memo; diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesQcCheckData.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesQcCheckData.java new file mode 100644 index 0000000..495fec2 --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/bean/MesQcCheckData.java @@ -0,0 +1,97 @@ +package cn.estsh.i3plus.pojo.mes.bean; + +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.util.List; + +/** + * @Description: + * @Reference: + * @Author: joke.wang + * @CreateDate: 2019\10\12 16:33 + * @Modify: + **/ +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name = "MES_QC_CHECK_DATA") +@Api("质量过程检测数据") +public class MesQcCheckData extends BaseBean { + + @Column(name = "CHECK_ID") + @ApiParam("检测id") + private String checkId; + + @Column(name = "PART_NO") + @ApiParam("物料编码") + private String partNo; + + @Column(name = "WORK_CENTER_CODE") + @ApiParam("工作中心代码") + private String workCenterCode; + + @Column(name = "WORK_CELL_CODE") + @ApiParam("工作单元代码") + private String workCellCode; + + @Column(name = "CHECK_TYPE") + @ApiParam("检测类型") + private Integer checkType; + + @Column(name = "CHECK_ITEM") + @ApiParam("检测项") + private String checkItem; + + @Column(name = "CHECK_STANDARD") + @ApiParam("检测标准") + private String checkStandard; + + @Column(name = "CHECK_GUIDE") + @ApiParam("检测指导") + private String checkGuide; + + @Column(name = "CHECK_FREQUENCY") + @ApiParam("频率") + private String checkFrequency; + + @Column(name = "CHECK_VALUE") + @ApiParam("检测值") + private String checkValue; + + @Column(name = "CHECK_RESULT") + @ApiParam("判定结果") + private String checkResult; + + @Column(name = "SN") + @ApiParam("产品条码") + private String sn; + + @Column(name = "QTY") + @ApiParam("产品数量") + private Integer qty; + + @Column(name = "MEMO") + @ApiParam("备注") + private String memo; + + @Column(name = "ORDER_NO") + @ApiParam("工单号") + private String orderNo; + + @Column(name = "CUST_CODE") + @ApiParam("客户代码") + private String custCode; + +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/IMesPartObjectRepository.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/IMesPartObjectRepository.java new file mode 100644 index 0000000..c26afa5 --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/IMesPartObjectRepository.java @@ -0,0 +1,14 @@ +package cn.estsh.i3plus.pojo.mes.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.mes.bean.MesPartObject; + +/** + * @Description: + * @Reference: + * @Author: joke.wang + * @CreateDate: 2019\11\25 15:07 + * @Modify: + **/ +public interface IMesPartObjectRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesQcCheckDataRepository.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesQcCheckDataRepository.java new file mode 100644 index 0000000..dba2f1c --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesQcCheckDataRepository.java @@ -0,0 +1,14 @@ +package cn.estsh.i3plus.pojo.mes.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.mes.bean.MesQcCheckData; + +/** + * @Description: + * @Reference: + * @Author: joke.wang + * @CreateDate: 2019\11\25 13:50 + * @Modify: + **/ +public interface MesQcCheckDataRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesRepairRecordRepository.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesRepairRecordRepository.java new file mode 100644 index 0000000..ccead63 --- /dev/null +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/repository/MesRepairRecordRepository.java @@ -0,0 +1,14 @@ +package cn.estsh.i3plus.pojo.mes.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.mes.bean.MesRepairRecord; + +/** + * @Description: + * @Reference: + * @Author: joke.wang + * @CreateDate: 2019\11\25 13:39 + * @Modify: + **/ +public interface MesRepairRecordRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesHqlPack.java b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesHqlPack.java index 70087fd..d125255 100644 --- a/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesHqlPack.java +++ b/modules/i3plus-pojo-mes/src/main/java/cn/estsh/i3plus/pojo/mes/sqlpack/MesHqlPack.java @@ -365,6 +365,9 @@ public class MesHqlPack { if (!StringUtils.isEmpty(shiftGroup.getGroupName())) { DdlPreparedPack.getStringLikerPack(shiftGroup.getGroupName(), "groupName", packBean); } + if (!StringUtils.isEmpty(shiftGroup.getWorkCenterCode())) { + DdlPreparedPack.getStringLikerPack(shiftGroup.getWorkCenterCode(), "workCenterCode", packBean); + } return packBean; } @@ -1923,4 +1926,70 @@ public class MesHqlPack { return packBean; } + /** + * 维修记录 + * @param mesRepairRecord + * @param organizeCode + * @return + */ + public static DdlPackBean getMesRepairRecord(MesRepairRecord mesRepairRecord, String organizeCode) { + DdlPackBean packBean = getAllBaseDataByNormalPro(mesRepairRecord, organizeCode); + if (!StringUtils.isEmpty(mesRepairRecord.getPartNo())) { + DdlPreparedPack.getStringLikerPack(mesRepairRecord.getPartNo(), "partNo", packBean); + } + if (!StringUtils.isEmpty(mesRepairRecord.getSerialNumber())) { + DdlPreparedPack.getStringLikerPack(mesRepairRecord.getSerialNumber(), "serialNumber", packBean); + } + if (!StringUtils.isEmpty(mesRepairRecord.getWorkCenterCode())) { + DdlPreparedPack.getStringLikerPack(mesRepairRecord.getWorkCenterCode(), "workCenterCode", packBean); + } + if (!StringUtils.isEmpty(mesRepairRecord.getWorkCellCode())) { + DdlPreparedPack.getStringLikerPack(mesRepairRecord.getWorkCellCode(), "workCellCode", packBean); + } + if (!StringUtils.isEmpty(mesRepairRecord.getDefectCode())) { + DdlPreparedPack.getStringLikerPack(mesRepairRecord.getDefectCode(), "defectCode", packBean); + } + if (!StringUtils.isEmpty(mesRepairRecord.getRepairCode())) { + DdlPreparedPack.getStringLikerPack(mesRepairRecord.getRepairCode(), "repairCode", packBean); + } + if (!StringUtils.isEmpty(mesRepairRecord.getDcCode())) { + DdlPreparedPack.getStringLikerPack(mesRepairRecord.getDcCode(), "dcCode", packBean); + } + DdlPreparedPack.timeBuilder( + mesRepairRecord.getCreateDateTimeStart(), + mesRepairRecord.getCreateDateTimeEnd(), + "createDatetime", packBean, true); + return packBean; + } + + /** + * 过程质量检测数据 + * @param mesQcCheckData + * @param organizeCode + * @return + */ + public static DdlPackBean getMesQcCheckData(MesQcCheckData mesQcCheckData, String organizeCode) { + DdlPackBean packBean = getAllBaseDataByNormalPro(mesQcCheckData, organizeCode); + if (!StringUtils.isEmpty(mesQcCheckData.getPartNo())) { + DdlPreparedPack.getStringLikerPack(mesQcCheckData.getPartNo(), "partNo", packBean); + } + if (!StringUtils.isEmpty(mesQcCheckData.getOrderNo())) { + DdlPreparedPack.getStringLikerPack(mesQcCheckData.getOrderNo(), "orderNo", packBean); + } + if (!StringUtils.isEmpty(mesQcCheckData.getSn())) { + DdlPreparedPack.getStringLikerPack(mesQcCheckData.getSn(), "sn", packBean); + } + if (!StringUtils.isEmpty(mesQcCheckData.getWorkCenterCode())) { + DdlPreparedPack.getStringLikerPack(mesQcCheckData.getWorkCenterCode(), "workCenterCode", packBean); + } + if (!StringUtils.isEmpty(mesQcCheckData.getWorkCellCode())) { + DdlPreparedPack.getStringLikerPack(mesQcCheckData.getWorkCellCode(), "workCellCode", packBean); + } + DdlPreparedPack.timeBuilder( + mesQcCheckData.getCreateDateTimeStart(), + mesQcCheckData.getCreateDateTimeEnd(), + "createDatetime", packBean, true); + return packBean; + } + } diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementDetails.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementDetails.java index 591b77b..5703187 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementDetails.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementDetails.java @@ -147,6 +147,9 @@ public class WmsDocMovementDetails extends BaseBean { @ApiParam("目的库存地代码") public String destAreaNo; + @Column(name = "LOT_NO") + @ApiParam("批次") + public String lotNo; @Transient @ApiParam("实际批次") private String actualLot; diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementMaster.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementMaster.java index 8ea05e4..fc098a8 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementMaster.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsDocMovementMaster.java @@ -175,6 +175,10 @@ public class WmsDocMovementMaster extends BaseBean { @ApiParam("物料编号") public String partNo; + @ApiParam(value = "标题") + @Transient + public String title; + public int getOrderStatusVal() { return this.orderStatus == null ? 0 : this.orderStatus; } diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsVendorPart.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsVendorPart.java index 3d90a3d..042c111 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsVendorPart.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsVendorPart.java @@ -42,6 +42,10 @@ public class WmsVendorPart extends BaseBean { @ApiParam(value = "供应商物料号") private String vendorPartNo; + @Column(name = "MAX_AMOUNT") + @ApiParam(value = "供应商月提供最大数量") + private Double maxAmount; + @Transient @ApiParam("物料名称") private String partName; diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java index d94d784..9b00052 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java @@ -228,6 +228,7 @@ public class WmsHqlPack { DdlPreparedPack.getStringEqualPack(wmsPOMaster.getVendorNo(), "vendorNo", result); DdlPreparedPack.getStringEqualPack(wmsPOMaster.getSrc(), "src", result); DdlPreparedPack.getStringEqualPack(wmsPOMaster.getIsAsn(), "isAsn", result); + DdlPreparedPack.getStringEqualPack(wmsPOMaster.getContainerNo(), "containerNo", result); if (wmsPOMaster.getPriorRC()!=null&&wmsPOMaster.getPriorRC()==WmsEnumUtil.TRUE_OR_FALSE.FALSE.getValue()){ ArrayList numList = new ArrayList<>(); numList.add(0);