New file |
| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | 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.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; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/11/16 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/monitor") |
| | | public class TVController { |
| | | |
| | | private static final String[] WEEK = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; |
| | | |
| | | @Autowired |
| | | private ReportQueryMapper reportQueryMapper; |
| | | |
| | | /** |
| | | * 获取当前时间 |
| | | */ |
| | | @GetMapping("/date") |
| | | public R monitorDate() { |
| | | Date now = new Date(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | 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("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]) |
| | | ); |
| | | } |
| | | |
| | | /** |
| | | * 获取其他信息 |
| | | */ |
| | | @GetMapping("/other") |
| | | public R monitorOther(@RequestParam("crnId") Integer crnId, @RequestParam("ledId") Integer sta) { |
| | | return R.ok( |
| | | 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("xDistance", Arith.multiplys(1, 0, 1)) // 累计走行距离km |
| | | .add("yDistance", Arith.multiplys(1, 3, 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) // 显示内容 |
| | | ); |
| | | } |
| | | |
| | | /** |
| | | * 入库报表 -- 折线图 |
| | | */ |
| | | @RateLimit(2) |
| | | @GetMapping("/pakin/rep") |
| | | public R monitorPakinRep(){ |
| | | // 入库 |
| | | List<Map<String, Object>> pakinRep = reportQueryMapper.queryPakinRep(); |
| | | for (Map<String, Object> map : pakinRep) { |
| | | if (map.get("node")!=null) { |
| | | map.put("node", String.valueOf(map.get("node")).substring(5, 10)); |
| | | } |
| | | } |
| | | // 出库 |
| | | List<Map<String, Object>> pakoutRep = reportQueryMapper.queryPakinRep(); |
| | | return R.ok(pakinRep); |
| | | } |
| | | |
| | | @GetMapping("/line/charts") |
| | | 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) { |
| | | 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++) { |
| | | boolean flag = true; |
| | | calendar.add(Calendar.DATE, 1); |
| | | String str = sf.format(calendar.getTime()); |
| | | for(WorkChartAxis workChart : listChart) { |
| | | if(str.equals(workChart.getYmd())) { |
| | | data1.add(workChart.getInqty()); |
| | | data2.add(workChart.getOutqty()); |
| | | flag = false; |
| | | break; |
| | | } |
| | | } |
| | | if(flag) { |
| | | data1.add(0); |
| | | data2.add(0); |
| | | } |
| | | } |
| | | AxisBean inqty = new AxisBean(); |
| | | inqty.setName("入库数量"); |
| | | Integer[] array1 = new Integer[data1.size()]; |
| | | inqty.setData(data1.toArray(array1)); |
| | | list.add(inqty); |
| | | AxisBean outqty = new AxisBean(); |
| | | outqty.setName("出库数量"); |
| | | Integer[] array2 = new Integer[data2.size()]; |
| | | outqty.setData(data2.toArray(array2)); |
| | | list.add(outqty); |
| | | } |
| | | map.put("rows",list); |
| | | return R.ok(map); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 库位使用情况统计 |
| | | */ |
| | | @RateLimit(2) |
| | | @GetMapping("/loc/rep") |
| | | public R monitorLocRep(){ |
| | | List<Map<String, Object>> pie = new ArrayList<>(); |
| | | |
| | | LocChartPie locUseRate = reportQueryMapper.getLocUseRate(); |
| | | if(locUseRate!=null) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("name", "在库"); |
| | | map.put("value", locUseRate.getFqty()); |
| | | pie.add(map); |
| | | |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("name", "空"); |
| | | map1.put("value", locUseRate.getOqty()); |
| | | pie.add(map1); |
| | | |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("name", "使用"); |
| | | map2.put("value", locUseRate.getUqty()); |
| | | pie.add(map2); |
| | | |
| | | Map<String, Object> map3 = new HashMap<>(); |
| | | map3.put("name", "禁用"); |
| | | map3.put("value", locUseRate.getXqty()); |
| | | pie.add(map3); |
| | | } |
| | | |
| | | // 总库位数 |
| | | Integer total = (int) Arith.add(0, locUseRate.getFqty(), locUseRate.getOqty(), locUseRate.getUqty(), locUseRate.getXqty()); |
| | | // 使用中 |
| | | Integer used = locUseRate.getFqty() + locUseRate.getUqty(); |
| | | // 库位使用率 |
| | | double usedDivides = Arith.divides(3, used, total); |
| | | double usedPr = Arith.multiplys(1, usedDivides, 100); |
| | | |
| | | return R.ok( |
| | | Cools.add("pie", pie) |
| | | .add("stockCunt", locUseRate.getFqty()) |
| | | .add("emptyCount", locUseRate.getOqty()) |
| | | .add("noneCount", locUseRate.getXqty()) |
| | | .add("total", total) |
| | | .add("used", used) |
| | | .add("usedPr", usedPr) |
| | | ); |
| | | } |
| | | |
| | | /** |
| | | * 获取其他信息 |
| | | */ |
| | | @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); |
| | | } |
| | | |
| | | /** |
| | | * 异常通知 |
| | | */ |
| | | @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); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 自动补零 |
| | | */ |
| | | 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){ |
| | | exist = true; |
| | | } |
| | | } |
| | | if (!exist){ |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("node", i); |
| | | map.put("val", 0); |
| | | list.add(map); |
| | | } |
| | | } |
| | | list.sort(Comparator.comparingInt(o -> (int) o.get("node"))); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 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){ |
| | | Object val = map.get("val"); |
| | | map.put("val", Arith.multiplys(dot, 1, (Number) val)); |
| | | Object node = map.get("node"); |
| | | switch (statsType){ |
| | | case MONTH: |
| | | map.put("node", node + "号"); |
| | | break; |
| | | case YEAR: |
| | | map.put("node", node + "月"); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | enum StatsType{ |
| | | |
| | | 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){ |
| | | return statsType; |
| | | } |
| | | } |
| | | throw new RuntimeException("找不到StatsType类型"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 2021/3/23 |
| | | */ |
| | | @Data |
| | | public class BillDto { |
| | | |
| | | private String matnr; |
| | | |
| | | private Double qty; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/3/25 |
| | | */ |
| | | @Data |
| | | public class DetlDto { |
| | | |
| | | private String orderNo; |
| | | |
| | | private String matnr; |
| | | |
| | | private String batch; |
| | | |
| | | private Double anfme; |
| | | |
| | | public DetlDto() { |
| | | } |
| | | |
| | | public DetlDto(String matnr, Double anfme) { |
| | | this.matnr = matnr; |
| | | this.anfme = anfme; |
| | | } |
| | | |
| | | public DetlDto(String matnr, String batch) { |
| | | this.matnr = matnr; |
| | | this.batch = batch; |
| | | } |
| | | |
| | | public DetlDto(String matnr, String batch, Double anfme) { |
| | | this.matnr = matnr; |
| | | this.batch = batch; |
| | | this.anfme = anfme; |
| | | } |
| | | |
| | | public DetlDto(String orderNo, String matnr, String batch, Double anfme) { |
| | | this.orderNo = orderNo; |
| | | this.matnr = matnr; |
| | | this.batch = batch; |
| | | this.anfme = anfme; |
| | | } |
| | | |
| | | public static boolean hasList(Set<DetlDto> detlDtos, OrderDetl orderDetl) { |
| | | for (DetlDto dto : detlDtos) { |
| | | if (Cools.isEmpty(dto.getBatch()) && Cools.isEmpty(orderDetl.getBatch())) { |
| | | if (dto.getMatnr().equals(orderDetl.getMatnr())) { |
| | | return true; |
| | | } |
| | | } else { |
| | | if (!Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(orderDetl.getBatch())) { |
| | | if (dto.getMatnr().equals(orderDetl.getMatnr()) && dto.getBatch().equals(orderDetl.getBatch())) { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public static boolean has(List<DetlDto> detlDtos, DetlDto detlDto) { |
| | | for (DetlDto dto : detlDtos) { |
| | | if (dto.getMatnr().equals(detlDto.getMatnr()) && Cools.eq(dto.getBatch(), detlDto.getBatch())) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public static DetlDto find(List<DetlDto> detlDtos, String matnr, String batch) { |
| | | if (Cools.isEmpty(matnr)) { |
| | | return null; |
| | | } |
| | | for (DetlDto detlDto : detlDtos) { |
| | | if (matnr.equals(detlDto.getMatnr()) && Cools.eq(batch, detlDto.getBatch())) { |
| | | return detlDto; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2021/6/18 |
| | | */ |
| | | @Data |
| | | public class ErpUpload { |
| | | |
| | | private List<BillDto> dtos; |
| | | |
| | | private Integer docId; |
| | | |
| | | private String docNumber; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/3/23 |
| | | */ |
| | | @Data |
| | | public class KeyValueVo { |
| | | |
| | | private String name; |
| | | |
| | | private String value; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.zy.asrs.entity.LocDetl; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/6/17 |
| | | */ |
| | | public class LocDetlDto { |
| | | |
| | | private LocDetl locDetl; |
| | | |
| | | private Double count; |
| | | |
| | | public LocDetlDto() { |
| | | } |
| | | |
| | | public LocDetlDto(LocDetl locDetl, Double count) { |
| | | this.locDetl = locDetl; |
| | | this.count = count; |
| | | } |
| | | |
| | | public LocDetl getLocDetl() { |
| | | return locDetl; |
| | | } |
| | | |
| | | public void setLocDetl(LocDetl locDetl) { |
| | | this.locDetl = locDetl; |
| | | } |
| | | |
| | | public Double getCount() { |
| | | return count; |
| | | } |
| | | |
| | | public void setCount(Double count) { |
| | | this.count = count; |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.core.common.Cools; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/3/28 |
| | | */ |
| | | @Data |
| | | public class LocDto { |
| | | |
| | | private String locNo; |
| | | |
| | | private String matnr; |
| | | |
| | | private String maktx; |
| | | |
| | | private String batch; |
| | | |
| | | private String orderNo; |
| | | |
| | | private Double anfme; |
| | | |
| | | private boolean lack = false; |
| | | |
| | | //目标站点 |
| | | private List<Integer> staNos; |
| | | |
| | | private Integer staNo; |
| | | |
| | | |
| | | public LocDto() { |
| | | } |
| | | |
| | | public LocDto(String locNo, String matnr, String batch, Double anfme) { |
| | | this.locNo = locNo; |
| | | this.matnr = matnr; |
| | | this.batch = batch; |
| | | this.anfme = anfme; |
| | | } |
| | | |
| | | public LocDto(String locNo, String matnr, String batch, String orderNo, Double anfme) { |
| | | this.locNo = locNo; |
| | | this.matnr = matnr; |
| | | this.batch = batch; |
| | | this.orderNo = orderNo; |
| | | this.anfme = anfme; |
| | | } |
| | | |
| | | public LocDto(String locNo, String matnr, String maktx, String batch, String orderNo, Double anfme) { |
| | | this.locNo = locNo; |
| | | this.matnr = matnr; |
| | | this.maktx = maktx; |
| | | this.batch = batch; |
| | | this.orderNo = orderNo; |
| | | this.anfme = anfme; |
| | | } |
| | | |
| | | public String getTitle() { |
| | | return this.matnr + "(" + this.maktx + ")"; |
| | | } |
| | | |
| | | public void setStaNos(List<Integer> staNos) { |
| | | this.staNos = staNos; |
| | | if (!Cools.isEmpty(staNos)) { |
| | | this.staNo = staNos.get(0); |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/10/19 |
| | | */ |
| | | @Slf4j |
| | | @Data |
| | | public class LocTypeDto { |
| | | |
| | | // 高低类型{0:未知,1:低库位,2:高库位} |
| | | private Short locType1; |
| | | |
| | | // 宽窄类型{0:未知,1:窄库位,2:宽库位} |
| | | private Short locType2; |
| | | |
| | | // 轻重类型{0:未知,1:轻库位,2:重库位} |
| | | private Short locType3; |
| | | |
| | | public LocTypeDto() { |
| | | } |
| | | |
| | | public LocTypeDto(BasDevp basDevp) { |
| | | if (basDevp.getLocType1() == null || basDevp.getLocType1() == 0) { |
| | | throw new CoolException("plc高低检测异常"); |
| | | } |
| | | if (basDevp.getLocType1() == 1) { |
| | | this.locType1 = 1; // 低库位 |
| | | } else { |
| | | this.locType1 = 2; // 高库位 |
| | | } |
| | | log.info(JSON.toJSONString(this)); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 2021/3/31 |
| | | */ |
| | | @Data |
| | | public class MatnrDto { |
| | | |
| | | private String matnr; |
| | | |
| | | private Double count; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/4/21 |
| | | */ |
| | | @Data |
| | | public class MesCombParam { |
| | | |
| | | // 托盘条码 |
| | | private String zpallet; |
| | | |
| | | // 帮托时间 |
| | | private String pakinTime; |
| | | |
| | | // 仓库编号 - 写死 |
| | | private String lgort; |
| | | |
| | | // 新增 |
| | | private String plantCode; |
| | | |
| | | private String fromCode; |
| | | |
| | | private String stationCode; |
| | | |
| | | private List<Detl> list = new ArrayList<>(); |
| | | |
| | | @Data |
| | | public static class Detl { |
| | | |
| | | // 物料条码 |
| | | private String barcode; |
| | | |
| | | // 数量 |
| | | private Double anfme; |
| | | |
| | | public Detl() { |
| | | } |
| | | |
| | | public Detl(String barcode, Double anfme) { |
| | | this.barcode = barcode; |
| | | this.anfme = anfme; |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/4/21 |
| | | */ |
| | | @Data |
| | | public class MesPakinParam { |
| | | |
| | | // 入库时间 |
| | | private String pakinTime; |
| | | |
| | | // 来源地 - 写死 |
| | | private String lgortFrom; |
| | | |
| | | // 目的地 - 写死 |
| | | private String lgortTo; |
| | | |
| | | private List<Detl> list = new ArrayList<>(); |
| | | |
| | | @Data |
| | | public static class Detl { |
| | | |
| | | // 物料条码 |
| | | private String barcode; |
| | | |
| | | // 数量 |
| | | private Double anfme; |
| | | |
| | | public Detl() { |
| | | } |
| | | |
| | | public Detl(String barcode, Double anfme) { |
| | | this.barcode = barcode; |
| | | this.anfme = anfme; |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.core.common.DateUtils; |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/4/21 |
| | | */ |
| | | @Data |
| | | public class MesPakoutParam { |
| | | |
| | | // true: 订单出; false: 手动出 |
| | | private boolean tag; |
| | | |
| | | // 单据编号 |
| | | private String orderNo; |
| | | |
| | | // 出库时间 |
| | | private String pakoutTime; |
| | | |
| | | // 来源地 - 写死 |
| | | private String lgortFrom; |
| | | |
| | | // 目的地 - 写死 |
| | | private String lgortTo; |
| | | |
| | | // 客户号 |
| | | private String kunnr; |
| | | |
| | | private List<Detl> list = new ArrayList<>(); |
| | | |
| | | @Data |
| | | public static class Detl { |
| | | |
| | | // 物料条码 |
| | | private String barcode; |
| | | |
| | | // 数量 |
| | | private Double anfme; |
| | | |
| | | public Detl() { |
| | | } |
| | | |
| | | public Detl(String barcode, Double anfme) { |
| | | this.barcode = barcode; |
| | | this.anfme = anfme; |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | MesPakoutParam param = new MesPakoutParam(); |
| | | param.setTag(true); |
| | | param.setOrderNo("8135998"); |
| | | param.setPakoutTime(DateUtils.convert(new Date())); |
| | | param.setLgortFrom("5006"); |
| | | param.setLgortTo("1111"); |
| | | |
| | | |
| | | Detl detl = new Detl(); param.getList().add(detl); |
| | | detl.setBarcode("1100146-10000-23132132"); |
| | | detl.setAnfme(1.0D); |
| | | |
| | | System.out.println(JSON.toJSONString(param)); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/6/29 |
| | | */ |
| | | public class MobileLocDetlVo { |
| | | |
| | | private String locNo; |
| | | |
| | | private String matnr; |
| | | |
| | | private String maktx; |
| | | |
| | | private Double count; |
| | | |
| | | public String getLocNo() { |
| | | return locNo; |
| | | } |
| | | |
| | | public void setLocNo(String locNo) { |
| | | this.locNo = locNo; |
| | | } |
| | | |
| | | public String getMatnr() { |
| | | return matnr; |
| | | } |
| | | |
| | | public void setMatnr(String matnr) { |
| | | this.matnr = matnr; |
| | | } |
| | | |
| | | public String getMaktx() { |
| | | return maktx; |
| | | } |
| | | |
| | | public void setMaktx(String maktx) { |
| | | this.maktx = maktx; |
| | | } |
| | | |
| | | public Double getCount() { |
| | | return count; |
| | | } |
| | | |
| | | public void setCount(Double count) { |
| | | this.count = count; |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.SpringUtils; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.service.LocDetlService; |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/6/17 |
| | | */ |
| | | @Data |
| | | public class OutLocDto { |
| | | |
| | | private String locNo; |
| | | |
| | | private List<LocDetlDto> locDetlDtos = new ArrayList<>(); |
| | | |
| | | public OutLocDto() { |
| | | } |
| | | |
| | | public OutLocDto(String locNo, LocDetlDto locDetlDto) { |
| | | this.locNo = locNo; |
| | | this.locDetlDtos.add(locDetlDto); |
| | | } |
| | | |
| | | public boolean isAll(){ |
| | | List<LocDetlDto> locDetlDtosCp = new ArrayList<>(this.locDetlDtos); |
| | | // 查询当前库位号所有的库存明细 |
| | | LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class); |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", this.locNo)); |
| | | if (locDetls == null || locDetls.isEmpty()){ |
| | | throw new CoolException("检索库存明细失败,库位号=" + this.locNo); |
| | | } |
| | | int sameNumber = 0; |
| | | for (LocDetl locDetl : locDetls) { |
| | | Iterator<LocDetlDto> iterator = locDetlDtosCp.iterator(); |
| | | while (iterator.hasNext()) { |
| | | LocDetlDto next = iterator.next(); |
| | | if (!next.getLocDetl().getMatnr().equals(locDetl.getMatnr())) { |
| | | continue; |
| | | } |
| | | if (!Cools.eq(next.getLocDetl().getBatch(), locDetl.getBatch())) { |
| | | continue; |
| | | } |
| | | if (next.getCount() > locDetl.getAnfme()) { |
| | | throw new CoolException("服务器内部错误"); |
| | | } |
| | | if (next.getCount().equals(locDetl.getAnfme())) { |
| | | sameNumber++; |
| | | iterator.remove(); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | return sameNumber == locDetls.size(); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | /** |
| | | * 分页参数 |
| | | * Created by vincent on 2020-04-10 |
| | | */ |
| | | public class PageParam { |
| | | |
| | | @ApiModelProperty(value="分页索引",required=true) |
| | | private int page = 1; |
| | | |
| | | @ApiModelProperty(value="单页数量",required=true) |
| | | private int size = 10; |
| | | |
| | | public Integer getPage() { |
| | | return page; |
| | | } |
| | | |
| | | public void setPage(Integer page) { |
| | | this.page = page; |
| | | } |
| | | |
| | | public Integer getSize() { |
| | | return size; |
| | | } |
| | | |
| | | public void setSize(Integer size) { |
| | | this.size = size; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2020-05-12 |
| | | */ |
| | | public class PowerDto { |
| | | |
| | | private String two; |
| | | |
| | | private List<String> three; |
| | | |
| | | public String getTwo() { |
| | | return two; |
| | | } |
| | | |
| | | public void setTwo(String two) { |
| | | this.two = two; |
| | | } |
| | | |
| | | public List<String> getThree() { |
| | | return three; |
| | | } |
| | | |
| | | public void setThree(List<String> three) { |
| | | this.three = three; |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.core.common.Arith; |
| | | import com.core.exception.CoolException; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <strong>立库货架实体类</strong> |
| | | * Created by vincent on 2020/6/11 |
| | | */ |
| | | public class Shelves { |
| | | |
| | | // 货架排数量 |
| | | public final int size; |
| | | |
| | | // 货架组数量 |
| | | public final int group; |
| | | |
| | | // 偏移量[default:0] |
| | | public final int offset; |
| | | |
| | | // 货架实例节点集合 |
| | | public List<List<Integer>> nodes; |
| | | |
| | | public Shelves(int size, int group) { |
| | | this(size, group, 0); |
| | | } |
| | | |
| | | /** |
| | | * @param size 货架单排总数 |
| | | * @param group 货架组数量 |
| | | * @param offset 序列号偏移量 |
| | | */ |
| | | public Shelves(int size, int group, int offset) { |
| | | this.size = size; |
| | | this.group = group; |
| | | this.offset = offset; |
| | | init(); |
| | | } |
| | | |
| | | /** |
| | | * 初始化方法【私有】 |
| | | */ |
| | | private void init(){ |
| | | if (group == 0 || size%group != 0) { |
| | | throw new RuntimeException("shelves init fail!"); |
| | | } |
| | | nodes = new ArrayList<>(); |
| | | for (int g = 1; g <= this.group; g++){ |
| | | int unit = size/group; |
| | | List<Integer> node = new ArrayList<>(); |
| | | for (int i = (g-1)*unit+1+offset ; i <= g*unit+offset; i++){ |
| | | node.add(i); |
| | | } |
| | | nodes.add(node); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 开始计算 =======>>> |
| | | * |
| | | * 货架命中规则如下: |
| | | * 安装位置: [1] [2] | [3] [4] -------- [5] [6] | [7] [8] |
| | | * 命中顺序: 1 -> 5 -> 4 -> 8 -> 2 -> 6 -> 3 -> 7 -> 1 ... |
| | | * |
| | | * 1.该规则适不限制货架数量,总数与组别在构造器中设置 |
| | | * 2.如有序列号起始问题,用偏移量规避即可 |
| | | * |
| | | * @param curSeq 当前货架号 |
| | | * @return 规则命中货架号 |
| | | */ |
| | | public int start(int curSeq){ |
| | | Iterator<List<Integer>> iterator = nodes.iterator(); |
| | | while (iterator.hasNext()){ |
| | | List<Integer> node = iterator.next(); |
| | | if (node.contains(curSeq)) { |
| | | int idx = node.indexOf(curSeq); |
| | | // 是否为末尾货架 |
| | | if (iterator.hasNext()) { |
| | | return iterator.next().get(idx); |
| | | } else { |
| | | List<Integer> first = nodes.get(0); |
| | | int val = first.get(idx); |
| | | int res = size / group + 1 + offset - val; |
| | | // 反向命中货架时不再是对立下标(相对于巷道) |
| | | if (res < val) { |
| | | // 轮询所有货架后重新开始定位 |
| | | if (val - res - offset == 1) { |
| | | return first.get(0); |
| | | } |
| | | res = res + 1; |
| | | } |
| | | return res + offset; |
| | | } |
| | | } |
| | | } |
| | | return -1; |
| | | } |
| | | |
| | | public Integer get(Integer curRow) { |
| | | for (List<Integer> node : nodes){ |
| | | if (node.contains(curRow)) { |
| | | return nodes.indexOf(node) + 1; |
| | | } |
| | | } |
| | | throw new CoolException("货排检索系统报错, node:" + JSON.toJSONString(nodes) + ", curRow:" + curRow); |
| | | } |
| | | |
| | | public static void main(String[] args) throws InterruptedException { |
| | | |
| | | double remainder = Arith.divides(1,16 - 1, 16); |
| | | System.out.println(remainder); |
| | | System.out.println((int) remainder); |
| | | // Shelves shelves = new Shelves(8,2); |
| | | // System.out.println(shelves.nodes.toString()); |
| | | // int start = 1; |
| | | // while (true) { |
| | | // System.out.println(start); |
| | | // start = shelves.start(start); |
| | | // Thread.sleep(500L); |
| | | // } |
| | | } |
| | | |
| | | } |
| | | |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/6/11 |
| | | */ |
| | | @Data |
| | | public class StartupDto { |
| | | |
| | | private Integer sourceStaNo; |
| | | |
| | | private Integer staNo; |
| | | |
| | | private Integer crnNo; |
| | | |
| | | private String locNo; |
| | | |
| | | private Integer workNo; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.SpringUtils; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.service.LocDetlService; |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/3/28 |
| | | */ |
| | | @Data |
| | | public class TaskDto { |
| | | |
| | | private String locNo; |
| | | |
| | | private Integer staNo; |
| | | |
| | | private List<LocDto> locDtos; |
| | | |
| | | { |
| | | locDtos = new ArrayList<>(); |
| | | } |
| | | |
| | | public TaskDto(String locNo, Integer staNo) { |
| | | this.locNo = locNo; |
| | | this.staNo = staNo; |
| | | } |
| | | |
| | | public TaskDto(String locNo, Integer staNo, LocDto locDto) { |
| | | this.locNo = locNo; |
| | | this.staNo = staNo; |
| | | this.locDtos.add(locDto); |
| | | } |
| | | |
| | | public TaskDto(String locNo, Integer staNo, List<LocDto> locDtos) { |
| | | this.locNo = locNo; |
| | | this.staNo = staNo; |
| | | this.locDtos = locDtos; |
| | | } |
| | | |
| | | public static boolean has(List<TaskDto> list, TaskDto dto) { |
| | | if (Cools.isEmpty(list)) { |
| | | return false; |
| | | } |
| | | for (TaskDto taskDto : list) { |
| | | if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getStaNo().equals(dto.getStaNo())) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public static TaskDto find(List<TaskDto> list, TaskDto dto) { |
| | | if (Cools.isEmpty(list)) { |
| | | return null; |
| | | } |
| | | for (TaskDto taskDto : list) { |
| | | if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getStaNo().equals(dto.getStaNo())) { |
| | | return taskDto; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public boolean isAll(){ |
| | | // 汇总不考虑序列码 |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | for (LocDto locDto : this.getLocDtos()) { |
| | | DetlDto dto = new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme()); |
| | | if (DetlDto.has(detlDtos, dto)) { |
| | | DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), dto.getBatch()); |
| | | assert detlDto != null; |
| | | detlDto.setAnfme(detlDto.getAnfme() + locDto.getAnfme()); |
| | | } else { |
| | | detlDtos.add(new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme())); |
| | | } |
| | | } |
| | | |
| | | // 查询当前库位号所有的库存明细 |
| | | LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class); |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", this.locNo)); |
| | | if (locDetls == null || locDetls.isEmpty()){ |
| | | throw new CoolException("检索库存明细失败,库位号=" + this.locNo); |
| | | } |
| | | int sameNumber = 0; |
| | | for (LocDetl locDetl : locDetls) { |
| | | Iterator<DetlDto> iterator = detlDtos.iterator(); |
| | | while (iterator.hasNext()) { |
| | | DetlDto dto = iterator.next(); |
| | | if (!dto.getMatnr().equals(locDetl.getMatnr())) { |
| | | continue; |
| | | } |
| | | if (Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(locDetl.getBatch())) { |
| | | continue; |
| | | } |
| | | if (!Cools.isEmpty(dto.getBatch()) && Cools.isEmpty(locDetl.getBatch())) { |
| | | continue; |
| | | } |
| | | if (!Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(locDetl.getBatch())) { |
| | | if (!dto.getBatch().equals(locDetl.getBatch())) { |
| | | continue; |
| | | } |
| | | } |
| | | if (dto.getAnfme() > locDetl.getAnfme()) { |
| | | throw new CoolException("服务器内部错误"); |
| | | } |
| | | if (dto.getAnfme().equals(locDetl.getAnfme())) { |
| | | sameNumber++; |
| | | iterator.remove(); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | return sameNumber == locDetls.size(); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2021/3/23 |
| | | */ |
| | | @Data |
| | | public class UploadBill { |
| | | |
| | | private String number; |
| | | |
| | | private Integer vchType; |
| | | |
| | | private String billDate; |
| | | |
| | | private String bTypeID; |
| | | |
| | | private String kTypeID; |
| | | |
| | | private String summary; |
| | | |
| | | // 自增 |
| | | private Double Vchcode; |
| | | |
| | | private Integer difAtype; |
| | | |
| | | private List<UploadBillDetail> detail; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 2021/3/23 |
| | | */ |
| | | @Data |
| | | public class UploadBillDetail { |
| | | |
| | | private String userCode; |
| | | |
| | | private Double qty; |
| | | |
| | | private Integer Price; |
| | | |
| | | private String comment; |
| | | |
| | | private String unit; |
| | | |
| | | // 商品明细行号 |
| | | private Double RowNo; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model; |
| | | |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/5/13 |
| | | */ |
| | | @Data |
| | | public class WrkDto { |
| | | |
| | | private Integer wrkNo; |
| | | |
| | | private List<WrkDetl> wrkDetls = new ArrayList<>(); |
| | | |
| | | public WrkDto() { |
| | | } |
| | | |
| | | public WrkDto(Integer wrkNo, WrkDetl wrkDetl) { |
| | | this.wrkNo = wrkNo; |
| | | this.wrkDetls .add(wrkDetl); |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model.enums; |
| | | |
| | | public enum HtmlNavIconType { |
| | | |
| | | INDEX("index", "layui-icon-home"), |
| | | SYSTEM("system", "layui-icon-component"), |
| | | SET("set", "layui-icon-set"), |
| | | MERCHANT("merchant", "layui-icon-user"), |
| | | DEVELOP("develop", "layui-icon-util"), |
| | | STOCK("stock", "layui-icon-templeate-1"), |
| | | LOG_REPORT("logReport", "layui-icon-read"), |
| | | IO_WORK("ioWork", "layui-icon-flag"), |
| | | WORK_FLOW("workFlow", "layui-icon-form"), |
| | | BASE("base", "layui-icon-file"), |
| | | ORDER("erp", "layui-icon-senior"), |
| | | SENSOR("sensor", "layui-icon-engine"), |
| | | ; |
| | | |
| | | |
| | | private String code; |
| | | private String icon; |
| | | HtmlNavIconType(String code, String icon){ |
| | | this.code = code; |
| | | this.icon = icon; |
| | | } |
| | | |
| | | public static String get(String code) { |
| | | for (HtmlNavIconType type : HtmlNavIconType.values()){ |
| | | if (type.code.equals(code)){ |
| | | return type.icon; |
| | | } |
| | | } |
| | | return "layui-icon-file-b"; |
| | | } |
| | | |
| | | public String getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(String code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | public String getIcon() { |
| | | return icon; |
| | | } |
| | | |
| | | public void setIcon(String icon) { |
| | | this.icon = icon; |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model.enums; |
| | | |
| | | public enum IoWorkType { |
| | | |
| | | ALL_IN, |
| | | PICK_IN, |
| | | ALL_OUT, |
| | | PICK_OUT, |
| | | CHECK_OUT, |
| | | ; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model.enums; |
| | | |
| | | public enum SysOsType { |
| | | |
| | | Any("any", null), |
| | | Linux("Linux", null), |
| | | Mac_OS("Mac OS", null), |
| | | Mac_OS_X("Mac OS X", null), |
| | | Windows("Windows", "D:\\licensed.txt"), |
| | | OS2("OS/2", null), |
| | | Solaris("Solaris", null), |
| | | SunOS("SunOS", null), |
| | | MPEiX("MPE/iX", null), |
| | | HP_UX("HP-UX", null), |
| | | AIX("AIX", null), |
| | | OS390("OS/390", null), |
| | | FreeBSD("FreeBSD", null), |
| | | Irix("Irix", null), |
| | | Digital_Unix("Digital Unix", null), |
| | | NetWare_411("NetWare", null), |
| | | OSF1("OSF1", null), |
| | | OpenVMS("OpenVMS", null), |
| | | Others("Others", null); |
| | | |
| | | private String description; |
| | | private String activationCodePath; |
| | | |
| | | SysOsType(String desc, String activationCodePath) { |
| | | this.description = desc; |
| | | this.activationCodePath = activationCodePath; |
| | | } |
| | | |
| | | public String getDescription() { |
| | | return description; |
| | | } |
| | | |
| | | public void setDescription(String description) { |
| | | this.description = description; |
| | | } |
| | | |
| | | public String getActivationCodePath() { |
| | | return activationCodePath; |
| | | } |
| | | |
| | | public void setActivationCodePath(String activationCodePath) { |
| | | this.activationCodePath = activationCodePath; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.model.enums.model.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 + "的任务类型无法生成工作号"); |
| | | } |
| | | |
| | | } |