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/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/MesEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MesEnumUtil.java index 5821577..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 @@ -1298,7 +1298,14 @@ public class MesEnumUtil { MES_PACK_SPEC(80, "包装规格"), MES_PROD_PACK(90, "产品包装关系"), MES_PRODUCT_ENCODE_CFG(100, "产品编码配置"), - MES_BOM(110, "物料清单"); + 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; @@ -1544,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; + } + } /** @@ -3452,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-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);