src/main/java/com/zy/asrs/controller/TVController.java
@@ -3,34 +3,13 @@ import com.core.common.Arith; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.mapper.ReportQueryMapper; import com.zy.common.service.CommonService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.*; import com.core.common.Arith; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.domain.dto.AxisBean; import com.zy.asrs.domain.dto.WorkChartAxis; import com.zy.asrs.domain.vo.LocChartPie; import com.zy.asrs.mapper.ReportQueryMapper; import com.zy.common.model.annotations.RateLimit; import com.zy.common.properties.SlaveProperties; import com.zy.common.service.CommonService; import com.zy.core.CrnThread; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.LedSlave; import com.zy.core.model.command.LedCommand; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.LedThread; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -47,10 +26,12 @@ @RequestMapping("/monitor") public class TVController { private static final String[] WEEK = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; private static final String[] WEEK = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; @Autowired private ReportQueryMapper reportQueryMapper; @Autowired private SlaveProperties slaveProperties; /** * 获取当前时间 @@ -62,12 +43,12 @@ calendar.setTime(now); return R.ok( Cools.add("year", calendar.get(Calendar.YEAR)) .add("month", CommonService.zerofill(String.valueOf(calendar.get(Calendar.MONTH)+1), 2)) .add("month", CommonService.zerofill(String.valueOf(calendar.get(Calendar.MONTH) + 1), 2)) .add("day", CommonService.zerofill(String.valueOf(calendar.get(Calendar.DATE)), 2)) .add("hour", CommonService.zerofill(String.valueOf(calendar.get(Calendar.HOUR_OF_DAY)), 2)) .add("minute", CommonService.zerofill(String.valueOf(calendar.get(Calendar.MINUTE)), 2)) .add("second", CommonService.zerofill(String.valueOf(calendar.get(Calendar.SECOND)) , 2)) .add("week", WEEK[calendar.get(Calendar.DAY_OF_WEEK)-1]) .add("second", CommonService.zerofill(String.valueOf(calendar.get(Calendar.SECOND)), 2)) .add("week", WEEK[calendar.get(Calendar.DAY_OF_WEEK) - 1]) ); } @@ -80,13 +61,13 @@ Cools.add("xSpeed", Arith.multiplys(1, 0, 1)) // 行走速度 .add("ySpeed", Arith.multiplys(1, 60, 1)) // 升降速度 .add("zSpeed", Arith.multiplys(1, 30, 1)) // 叉牙速度 .add("forkPos", 30) // 叉牙速度 .add("forkPos", 25) // 叉牙速度 .add("xDistance", Arith.multiplys(1, 0, 1)) // 累计走行距离km .add("yDistance", Arith.multiplys(1, 3, 1)) // 累计升降距离km .add("yDistance", Arith.multiplys(1, 5, 1)) // 累计升降距离km .add("xDuration", Arith.multiplys(1, 0, 1)) // 累计走行时长h .add("yDuration", Arith.multiplys(1, 1, 1)) // 累计升降时长h .add("isShow", !Cools.isEmpty(200)) // 是否显示内容 .add("content", 200) // 显示内容 .add("yDuration", Arith.multiplys(1, 2, 1)) // 累计升降时长h .add("isShow", !Cools.isEmpty(1)) // 是否显示内容 .add("content", 1) // 显示内容 ); } @@ -95,11 +76,11 @@ */ @RateLimit(2) @GetMapping("/pakin/rep") public R monitorPakinRep(){ public R monitorPakinRep() { // 入库 List<Map<String, Object>> pakinRep = reportQueryMapper.queryPakinRep(); for (Map<String, Object> map : pakinRep) { if (map.get("node")!=null) { if (map.get("node") != null) { map.put("node", String.valueOf(map.get("node")).substring(5, 10)); } } @@ -109,32 +90,32 @@ } @GetMapping("/line/charts") public R locIoLineCharts(){ Map<String,Object> map=new HashMap<String, Object>(); public R locIoLineCharts() { Map<String, Object> map = new HashMap<String, Object>(); List<AxisBean> list = new ArrayList<AxisBean>(); List<WorkChartAxis> listChart = reportQueryMapper.getChartAxis(); if(listChart!=null) { if (listChart != null) { ArrayList<Integer> data1 = new ArrayList<Integer>(); ArrayList<Integer> data2 = new ArrayList<Integer>(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -12); for(int i=0;i<12;i++) { for (int i = 0; i < 12; i++) { boolean flag = true; calendar.add(Calendar.DATE, 1); String str = sf.format(calendar.getTime()); for(WorkChartAxis workChart : listChart) { if(str.equals(workChart.getYmd())) { for (WorkChartAxis workChart : listChart) { if (str.equals(workChart.getYmd())) { data1.add(workChart.getInqty()); data2.add(workChart.getOutqty()); flag = false; break; } } if(flag) { if (flag) { data1.add(0); data2.add(0); } @@ -150,7 +131,7 @@ outqty.setData(data2.toArray(array2)); list.add(outqty); } map.put("rows",list); map.put("rows", list); return R.ok(map); } @@ -160,11 +141,11 @@ */ @RateLimit(2) @GetMapping("/loc/rep") public R monitorLocRep(){ public R monitorLocRep() { List<Map<String, Object>> pie = new ArrayList<>(); LocChartPie locUseRate = reportQueryMapper.getLocUseRate(); if(locUseRate!=null) { if (locUseRate != null) { Map<String, Object> map = new HashMap<>(); map.put("name", "在库"); map.put("value", locUseRate.getFqty()); @@ -210,18 +191,7 @@ */ @GetMapping("/led") public R monitorLed(@RequestParam("ledId") Integer ledId) { String ledContent = ""; List<LedCommand> commandList = null; for (LedSlave slave : slaveProperties.getLed()) { if (slave.getStaArr().contains(ledId)) { LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId()); if (null != ledThread) { ledContent = ledThread.getStringBuffer().toString(); commandList = ledThread.getCommandList(); } } } return R.ok().add(commandList); return R.ok(); } /** @@ -229,71 +199,22 @@ */ @GetMapping("/led/error") public R monitorLedError(@RequestParam("ledId") Integer ledId) { String errorMsg = ""; for (LedSlave slave : slaveProperties.getLed()) { if (slave.getStaArr().contains(ledId)) { LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId()); if (null != ledThread) { errorMsg = ledThread.getErrorMsg().toString(); } } } return R.ok().add(errorMsg); return R.ok(); } /** * 自动补零 */ private List<Map<String, Object>> fill(List<Map<String, Object>> list, int start, int end){ for (int i = start ; i <= end; i++){ private List<Map<String, Object>> fill(List<Map<String, Object>> list, int start, int end) { for (int i = start; i <= end; i++) { boolean exist = false; for (Map seq : list){ if (Integer.parseInt(String.valueOf(seq.get("node"))) == i){ for (Map seq : list) { if (Integer.parseInt(String.valueOf(seq.get("node"))) == i) { exist = true; } } if (!exist){ if (!exist) { HashMap<String, Object> map = new HashMap<>(); map.put("node", i); map.put("val", 0); @@ -306,14 +227,15 @@ /** * x轴单位转换 * * @param dot y轴数值保留小数位 */ private List<Map<String, Object>> convert(List<Map<String, Object>> list, StatsType statsType, int dot){ for (Map<String, Object> map : list){ private List<Map<String, Object>> convert(List<Map<String, Object>> list, StatsType statsType, int dot) { for (Map<String, Object> map : list) { Object val = map.get("val"); map.put("val", Arith.multiplys(dot, 1, (Number) val)); Object node = map.get("node"); switch (statsType){ switch (statsType) { case MONTH: map.put("node", node + "号"); break; @@ -327,25 +249,25 @@ return list; } enum StatsType{ enum StatsType { YEAR(1,1, 12), MONTH(2,1, 30), YEAR(1, 1, 12), MONTH(2, 1, 30), ; int id; int start; int end; StatsType(int id, int start, int end) { this.id = id; this.start = start; this.end = end; } static StatsType get(int id) { StatsType[] values = StatsType.values(); for (StatsType statsType : values){ if (statsType.id == id){ for (StatsType statsType : values) { if (statsType.id == id) { return statsType; } } @@ -353,9 +275,4 @@ } } } src/main/java/com/zy/asrs/domain/dto/AxisBean.java
New file @@ -0,0 +1,24 @@ package com.zy.asrs.domain.dto; /** * 曲线图表json键 * @author admin * */ public class AxisBean { private String name; private Integer[] data; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer[] getData() { return data; } public void setData(Integer[] data) { this.data = data; } } src/main/java/com/zy/asrs/domain/dto/WorkChartAxis.java
New file @@ -0,0 +1,31 @@ package com.zy.asrs.domain.dto; /** * 入出库统计曲线图 * @author admin * @date 2018年12月12日 */ public class WorkChartAxis { private String ymd; private int inqty; private int outqty; public String getYmd() { return ymd; } public void setYmd(String ymd) { this.ymd = ymd; } public int getInqty() { return inqty; } public void setInqty(int inqty) { this.inqty = inqty; } public int getOutqty() { return outqty; } public void setOutqty(int outqty) { this.outqty = outqty; } } src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java
New file @@ -0,0 +1,53 @@ package com.zy.asrs.domain.enums; /** * 堆垛机状态枚举 */ public enum CrnStatusType { // 入库 MACHINE_PAKIN("入库"), // 出库 MACHINE_PAKOUT("出库"), // 库到库 MACHINE_STOCK_MOVE("库到库"), // 站到站 MACHINE_SITE_MOVE("站到站"), // p to p MACHINE_P_MOVE("PToP"), // 异常 MACHINE_ERROR("异常"), // 自动 MACHINE_AUTO("自动"), // 非自动/手动 MACHINE_UN_AUTO("非自动"), ; private String desc; CrnStatusType(String desc){ this.desc = desc; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public static CrnStatusType process(Integer ioType){ if (ioType>100) { return MACHINE_PAKOUT; } else if (ioType < 100 && ioType!=3 && ioType!=6 && ioType!=11) { return MACHINE_PAKIN; } else if (ioType == 3) { return MACHINE_SITE_MOVE; } else if (ioType == 11) { return MACHINE_STOCK_MOVE; } else { return MACHINE_ERROR; } } } src/main/java/com/zy/asrs/domain/enums/SiteStatusType.java
New file @@ -0,0 +1,46 @@ package com.zy.asrs.domain.enums; import com.zy.core.model.protocol.StaProtocol; /** * 站点状态枚举 */ public enum SiteStatusType { // 自动 SITE_AUTO, // 非自动 SITE_UNAUTO, // 自动+有物+ID SITE_AUTO_RUN_ID, // 自动+有物 SITE_AUTO_RUN, // 自动+ID SITE_AUTO_ID, ; public static SiteStatusType process(StaProtocol staProtocol){ if (staProtocol == null) { return null; } if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0) { return SITE_AUTO_RUN_ID; } if (staProtocol.isAutoing() && staProtocol.isLoading()) { return SITE_AUTO_RUN; } if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 0) { return SITE_AUTO_ID; } if (staProtocol.isAutoing()) { return SITE_AUTO; } if (!staProtocol.isAutoing()) { return SITE_UNAUTO; } return null; } } src/main/java/com/zy/asrs/domain/enums/WorkNoType.java
New file @@ -0,0 +1,48 @@ package com.zy.asrs.domain.enums; import com.core.exception.CoolException; /** * 工作号排序规则 */ public enum WorkNoType { PAKIN(0), PICK(1), PAKOUT(2), OTHER(3), ; public Integer type; WorkNoType(Integer type) { this.type = type; } public static Integer getWorkNoType(Integer ioType) { switch (ioType) { case 1: return PAKIN.type; case 10: return PAKIN.type; case 11: return PICK.type; case 53: case 54: case 57: return PICK.type; case 101: return PAKOUT.type; case 103: case 104: case 107: return PICK.type; case 110: return PAKOUT.type; default: break; } throw new CoolException(ioType + "的任务类型无法生成工作号"); } } src/main/java/com/zy/asrs/domain/param/CrnDemoParam.java
New file @@ -0,0 +1,20 @@ package com.zy.asrs.domain.param; import lombok.Data; /** * 堆垛机演示操作入参 * Created by vincent on 2020-06-03 */ @Data public class CrnDemoParam { // 操作类型 1: 打开; 0: 关闭 private Integer crnId; // 密码口令 private String password; private Boolean opt; } src/main/java/com/zy/asrs/domain/param/CrnOperatorParam.java
New file @@ -0,0 +1,38 @@ package com.zy.asrs.domain.param; import lombok.Data; /** * Created by vincent on 2020-06-02 */ @Data public class CrnOperatorParam { // 堆垛机号 private Integer crnNo; // 源站 private Short sourceStaNo; // 源库位-排 private Short sourceRow; // 源库位-列 private Short sourceBay; // 源库位-层 private Short sourceLev; // 目标站 private Short staNo; // 目标库位-排 private Short row; // 目标库位-列 private Short bay; // 目标库位-层 private Short lev; } src/main/java/com/zy/asrs/domain/param/SystemSwitchParam.java
New file @@ -0,0 +1,30 @@ package com.zy.asrs.domain.param; /** * 系统运行状态操作入参 * Created by vincent on 2020-06-03 */ public class SystemSwitchParam { // 操作类型 1: 打开; 0: 关闭 private Integer operatorType; // 密码口令 private String password; public Integer getOperatorType() { return operatorType; } public void setOperatorType(Integer operatorType) { this.operatorType = operatorType; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } src/main/java/com/zy/asrs/domain/vo/BarcodeDataVo.java
New file @@ -0,0 +1,18 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * 扫码器实时数据视图对象 * Created by vincent on 2020-06-03 */ @Data public class BarcodeDataVo { // 扫码器编号 private Integer barcodeId; // 扫码器内容 private String codeValue; } src/main/java/com/zy/asrs/domain/vo/CommandLogVo.java
New file @@ -0,0 +1,20 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * Created by vincent on 2020-06-02 */ @Data public class CommandLogVo { // 堆垛机编号 private Integer crnNo; // 状态 private Integer status; // 命令报文 private String command; } src/main/java/com/zy/asrs/domain/vo/CrnDetailVo.java
New file @@ -0,0 +1,42 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * 堆垛机详情视图对象 * Created by vincent on 2020-06-03 */ @Data public class CrnDetailVo { // 堆垛机号 private Integer crnNo; // 工作号 private Short workNo; // 源站 private String sourceStaNo = ""; // 目标站 private String staNo = ""; // 工作状态 private String wrkSts = ""; // 出入类型 private String ioType = ""; // 源库位 private String sourceLocNo = ""; // 目标库位 private String locNo = ""; // 堆垛机状态 private String crnStatus = ""; // 异常 private String error = ""; } src/main/java/com/zy/asrs/domain/vo/CrnLatestDataVo.java
New file @@ -0,0 +1,28 @@ package com.zy.asrs.domain.vo; import com.zy.asrs.domain.enums.CrnStatusType; import lombok.Data; /** * 堆垛机最新数据视图对象 * Created by vincent on 2020-06-01 */ @Data public class CrnLatestDataVo { // 堆垛机编号 private Integer crnId; // 偏移量 private Double offset; // 当前列 private Short bay; private CrnStatusType crnStatus; public String getCrnStatus(){ return crnStatus.toString().toLowerCase().replaceAll("_", "-"); } } src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java
New file @@ -0,0 +1,90 @@ package com.zy.asrs.domain.vo; import com.zy.asrs.utils.Utils; import lombok.Data; /** * Created by vincent on 2020-06-02 */ @Data public class CrnMsgTableVo { // 堆垛机号 private Integer crnNo; // 工作号 private Short workNo = 0; // 状态 private String status = "-"; // 源站 private String sourceStaNo = "-"; // 目标站 private String staNo = "-"; // 源库位 private String sourceLocNo = "-"; // 目标库位 private String locNo = "-"; // 异常 private String error = ""; // 原点 private String origin = ""; // 命令 private String command = ""; // 走行速度(m/min) private Float xspeed = 0.0F; // 升降速度(m/min) private Float yspeed = 0.0F; // 叉牙速度(m/min) private Float zspeed = 0.0F; // 走行距离(Km) private Float xdistance = 0.0F; // 升降距离(Km) private Float ydistance = 0.0F; // 走行时长(H) private Float xduration = 0.0F; // 升降时长(H) private Float yduration = 0.0F; public void setXspeed(Float xspeed) { this.xspeed = Utils.scale(xspeed); } public void setYspeed(Float yspeed) { this.yspeed = Utils.scale(yspeed); } public void setZspeed(Float zspeed) { this.zspeed = Utils.scale(zspeed); } public void setXdistance(Float xdistance) { this.xdistance = Utils.scale(xdistance); } public void setYdistance(Float ydistance) { this.ydistance = Utils.scale(ydistance); } public void setXduration(Float xduration) { this.xduration = Utils.scale(xduration); } public void setYduration(Float yduration) { this.yduration = Utils.scale(yduration); } } src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java
New file @@ -0,0 +1,65 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * Created by vincent on 2020-06-02 */ @Data public class CrnStateTableVo { // 堆垛机号 private Integer crnNo; // 模式 private String statusType = "-"; // 有物 private String loading = "-"; // 列 private Short bay; // 层 private Short lev; // 走行原点 private String xOrigin = "-"; // 升降原点 private String yOrigin = "-"; // 货叉位置 private String forkOffset = "-"; // 载货台位置 private String liftPos = "-"; // 走行定位 private String walkPos = "-"; // 急停 private String stop = "-"; // 列坐标 private String bayCoor = "-"; // 层坐标 private String levCoor = "-"; // 完成 private String complete = "-"; // 任务号 private Short workNo = 0; // 状态 private String status = "-"; // 异常码 private String warnCode = "-"; // 垂直故障码 private String alarm = "-"; } src/main/java/com/zy/asrs/domain/vo/LocChartPie.java
New file @@ -0,0 +1,37 @@ package com.zy.asrs.domain.vo; /** * 库位占用百分比 * @author admin * @date 2018年12月12日 */ public class LocChartPie { private int fqty; private int oqty; private int uqty; private int xqty; public int getFqty() { return fqty; } public void setFqty(int fqty) { this.fqty = fqty; } public int getOqty() { return oqty; } public void setOqty(int oqty) { this.oqty = oqty; } public int getUqty() { return uqty; } public void setUqty(int uqty) { this.uqty = uqty; } public int getXqty() { return xqty; } public void setXqty(int xqty) { this.xqty = xqty; } } src/main/java/com/zy/asrs/domain/vo/PlcErrorTableVo.java
New file @@ -0,0 +1,20 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * Created by vincent on 2020-06-02 */ @Data public class PlcErrorTableVo { // 序号 private Integer no; // plc异常描述 private String plcDesc; // 异常 private String error; } src/main/java/com/zy/asrs/domain/vo/ScaleDataVo.java
New file @@ -0,0 +1,18 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * 磅秤实时数据视图对象 * Created by vincent on 2020-06-03 */ @Data public class ScaleDataVo { // 磅秤编号 private Integer scaleId; // 磅秤内容 private String value; } src/main/java/com/zy/asrs/domain/vo/SiteDetailVo.java
New file @@ -0,0 +1,47 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * 输送设备详情视图对象 * Created by vincent on 2020-06-03 */ @Data public class SiteDetailVo { // 站点编号 private Integer siteId; // 工作号 private Short workNo; // 工作状态 private String wrkSts = ""; // 自动 private String autoing; // 有物 private String loading; // 能入 private String canining; // 能出 private String canouting; // 出入类型 private String ioType = ""; // 源站 private String sourceStaNo = ""; // 目标站 private String staNo = ""; // 源库位 private String sourceLocNo = ""; // 目标库位 private String locNo = ""; } src/main/java/com/zy/asrs/domain/vo/SiteLatestDataVo.java
New file @@ -0,0 +1,29 @@ package com.zy.asrs.domain.vo; import com.zy.asrs.domain.enums.SiteStatusType; import lombok.Data; /** * 站点最新数据视图对象 * Created by vincent on 2020-06-01 */ @Data public class SiteLatestDataVo { // 站点编号 private String siteId; // 工作号 private Short workNo; // 站点状态 private SiteStatusType siteStatus; // 隔壁站点(台车特性) private String nearbySta; public String getSiteStatus() { return siteStatus.toString().toLowerCase().replaceAll("_", "-"); } } src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java
New file @@ -0,0 +1,40 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * Created by vincent on 2020-06-02 */ @Data public class SiteTableVo { // 站号 private Integer devNo; // 工作号 private Short workNo = 0; // 自动 private String autoing = "-"; // 有物 private String loading = "-"; // 可入 private String inEnable = "-"; // 可出 private String outEnable = "-"; // 需求1 private String pakMk = "-"; // 空板信号 private String emptyMk = "-"; // 目标站 private Short staNo = 0; //高低库位 private String locType1 = "-"; } src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
@@ -1,83 +1,53 @@ package com.zy.asrs.mapper; import com.zy.asrs.entity.*; import com.zy.asrs.domain.dto.WorkChartAxis; import com.zy.asrs.domain.vo.LocChartPie; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Map; @Mapper @Repository public interface ReportQueryMapper { //分页查询库位使用率 List<ViewStockUseBean> queryViewStockUseList(ViewStockUseBean viewStockUse); int getViewStockUseCount(ViewStockUseBean viewStockUse); List<ViewStockUseBean> getViewStockUseAll(ViewStockUseBean viewStockUse); //分页查询库存滞留时间 public List<ViewStayTimeBean> queryViewStayTimeList(ViewStayTimeBean viewStayTime); public int getViewStayTimeCount(ViewStayTimeBean viewStayTime); //不分页查询所有信息,用于excel导出 public List<ViewStayTimeBean> getViewStayTimeAll(ViewStayTimeBean viewStayTime); // // 库位Map @Select("select distinct row1 from asr_loc_mast order by row1 asc") List<Integer> getViewLocRowTotal(); @Select("select distinct lev1 from asr_loc_mast where row1=#{row1} order by lev1 desc") public List<String> getViewLocLevCount(@Param("row1") int row1); // @Select("select loc_no as locNo, bay1,loc_sts as locSts from asr_loc_mast where row1=#{row1} and lev1=#{lev1} order by bay1") public List<ViewLocMapDto> getViewLocBays(@Param("row1") int row1, @Param("lev1") int lev1); // 库位Map @Select("select distinct bay1 from asr_loc_mast where row1=#{row1} order by bay1") public List<String> getViewLocBayCount(@Param("row1") int row1); @Select("select lev1,loc_sts as locSts from asr_loc_mast where row1=#{row1} and bay1=#{bay1} order by bay1") public List<ViewLocMapDto> getViewLocLevs(@Param("row1") int row1, @Param("bay1") int bay1); //分页查询站点入出库次数统计 public List<ViewInOutBean> queryViewInOutList(ViewInOutBean viewInOut); public int getViewInOutCount(ViewInOutBean viewInOut); //不分页查询所有信息,用于excel导出 public List<ViewInOutBean> getViewInOutAll(ViewInOutBean viewInOut); @Select("select \n" + "Min(wm.io_time) as node,\n" + "isnull(count(1), 0) as val\n" + "from asr_wrk_mast_log wm\n" + "where wm.wrk_sts = 5 \n" + "and (wm.io_type = 1 OR wm.io_type = 54)\n" + "and datediff(d, wm.io_time, getdate())<=7 \n" + "group by datediff(day,wm.io_time,getdate())\n" + "order by Min(wm.io_time) asc\n") List<Map<String, Object>> queryPakinRep(); //分页查询日入库记录 public List<ViewWorkInBean> queryViewWorkInList(ViewWorkInBean viewWorkIn); public int getViewWorkInCount(ViewWorkInBean viewWorkIn); //不分页查询所有信息,用于excel导出 public List<ViewWorkInBean> getViewWorkInAll(ViewWorkInBean viewWorkIn); @Select("select\n" + "Min(wm.io_time) as node,\n" + "isnull(count(1), 0) as val\n" + "from asr_wrk_mast_log wm\n" + "where 1=1\n" + "and ((wm.wrk_sts = 15 AND wm.io_type = 101) OR (wm.wrk_sts = 14 AND wm.io_type = 103))\n" + "and datediff(d, wm.io_time, getdate())<=7\n" + "group by datediff(day,wm.io_time,getdate())\n" + "order by Min(wm.io_time) asc") List<Map<String, Object>> queryPakOutRep(); //分页查询日出库记录 public List<ViewWorkInBean> queryViewWorkOutList(ViewWorkInBean viewWorkOut); public int getViewWorkOutCount(ViewWorkInBean viewWorkOut); //不分页查询所有信息,用于excel导出 public List<ViewWorkInBean> getViewWorkOutAll(ViewWorkInBean viewWorkOut); //曲线图 @Select("select ymd,SUM(sto_qty) inqty,SUM(ret_qty) outqty from asr_sta_inout_view " + "where ymd>CONVERT(char(10), DATEADD(DAY,-12,GETDATE()), 120) group by ymd order by ymd") public List<WorkChartAxis> getChartAxis(); @Select("select * from asr_loc_use_view") LocChartPie getLocUseRate(); // ------图表 //饼状图 @Select("select * from asr_loc_use_view") public LocChartPie getLocUseRate(); //曲线图 @Select("select ymd,SUM(sto_qty) inqty,SUM(ret_qty) outqty from asr_sta_inout_view " + "where ymd>CONVERT(char(10), DATEADD(DAY,-12,GETDATE()), 120) group by ymd order by ymd") public List<WorkChartAxis> getChartAxis(); @Select("select count(1) as totalWrk from asr_wrk_mast_log where crn_no = #{crnNo}") Integer getTotalWrkByCrnId(Integer crnNo); List<ViewWorkCountInView> selectWorkCountIn(@Param("curr") Integer curr, @Param("limit") Integer limit, @Param("matnr")String matnr, @Param("start") String startTime, @Param("end") String endTime); @Select("select count(1) as totalLoc from asr_loc_mast") Integer getTotalLocByCrnId(); Integer selectWorkCountInTotal(String matnr, @Param("start") String startTime, @Param("end") String endTime); List<ViewWorkCountInView> selectWorkCountOut(@Param("curr") Integer pageNumber, @Param("limit") Integer pageSize, String matnr, @Param("start") String startTime, @Param("end") String endTime); Integer selectWorkCountOutTotal(String matnr, @Param("start") String startTime, @Param("end") String endTime); Integer selectWorkCountInSum(String matnr, @Param("start") String startTime, @Param("end") String endTime); Integer selectWorkCountOutSum(String matnr, @Param("start") String startTime, @Param("end") String endTime); } src/main/java/com/zy/common/model/annotations/RateLimit.java
New file @@ -0,0 +1,15 @@ package com.zy.common.model.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; //接口频率限制 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface RateLimit { int value();//接口频率 } src/main/java/com/zy/common/model/annotations/bit.java
New file @@ -0,0 +1,16 @@ package com.zy.common.model.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 标识注解类 * @author vincent */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD}) public @interface bit { int value(); } src/main/java/com/zy/common/model/annotations/expr.java
New file @@ -0,0 +1,16 @@ package com.zy.common.model.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 标识注解类 * @author vincent */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD}) public @interface expr { String value(); } src/main/java/com/zy/common/model/annotations/flag.java
New file @@ -0,0 +1,16 @@ package com.zy.common.model.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 标识注解类 * @author vincent */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD}) public @interface flag { String value(); } src/main/java/com/zy/common/model/annotations/little.java
New file @@ -0,0 +1,14 @@ package com.zy.common.model.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 小端模式注解类 * @author vincent */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD}) public @interface little {} src/main/java/com/zy/common/model/annotations/size.java
New file @@ -0,0 +1,16 @@ package com.zy.common.model.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 标识注解类 * @author vincent */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD}) public @interface size { int value(); } src/main/java/com/zy/common/web/WcsController.java
@@ -187,7 +187,7 @@ int type=Cools.isEmpty(waitPakins.get(0).getBeBatch())?1:waitPakins.get(0).getBeBatch(); // 检索库位 locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1); int mbz=devpNo*10+Integer.valueOf(locMast1.getLocNo().substring(6)); //正常入库 workNo = commonService.getWorkNo(0); Date now = new Date(); @@ -199,6 +199,7 @@ wrkMast.setIoType(1); // 入出库状态:1.入库 wrkMast.setIoPri(13D); // 优先级 wrkMast.setSourceStaNo(devpNo); wrkMast.setStaNo(mbz); wrkMast.setLocNo(locMast1.getLocNo()); wrkMast.setBarcode(barcode); // 托盘码 wrkMast.setFullPlt("Y"); // 满板:Y