| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/4/8 |
| | |
| | | private static final boolean auth = true; |
| | | private static final String sign_arm_order = "|s|LABEL_"; |
| | | private static final String sign_arm_sku = "|sku|LABEL_"; |
| | | private static final long MILLIS_PER_MINUTE = 60L * 1000L; |
| | | public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{ |
| | | add("ea1f0459efc02a79f046f982767939ae"); |
| | | }}; |
| | |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private WrkDetlService wrkDetlService; |
| | | @Autowired |
| | | private WrkDetlLogService wrkDetlLogService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | |
| | | */ |
| | | @PostMapping("/outOrder") |
| | | public synchronized R outOrder(@RequestBody ArrayList<OutTaskParam> params, HttpServletRequest request) { |
| | | int count = params.size(); |
| | | if (Cools.isEmpty(params)) { |
| | | return R.error("请求参数不能为空"); |
| | | } |
| | |
| | | return R.error("没有找到托盘码对应库位:" + String.join(",", badPalletIds)).add(missingLoc); |
| | | } |
| | | |
| | | return openService.outOrderBatch(linesByBatchSeq); |
| | | return openService.outOrderBatch(linesByBatchSeq,count); |
| | | } |
| | | |
| | | /** |
| | |
| | | ArrayList<Integer> data2 = new ArrayList<>(); |
| | | ArrayList<Double> data3 = new ArrayList<>(); |
| | | ArrayList<Double> data4 = new ArrayList<>(); |
| | | ArrayList<Double> data5 = new ArrayList<>(); |
| | | List<String> categories = new ArrayList<>(); |
| | | |
| | | final int n = 12; |
| | |
| | | int outV = 0; |
| | | double inC = 0; |
| | | double outC = 0; |
| | | double outD = 0; |
| | | for (WorkChartAxis w : listChart) { |
| | | if (w.getYmd() != null && key.equals(w.getYmd().trim())) { |
| | | inV = w.getInqty(); |
| | | outV = w.getOutqty(); |
| | | inC = w.getCubeInqty(); |
| | | outC = w.getCubeOutqty(); |
| | | outD = w.getOutTeu(); |
| | | break; |
| | | } |
| | | } |
| | |
| | | data2.add(outV); |
| | | data3.add(inC); |
| | | data4.add(outC); |
| | | data5.add(outD); |
| | | calendar.add(Calendar.HOUR_OF_DAY, 1); |
| | | } |
| | | |
| | |
| | | if (data3.size() >0) { |
| | | AxisBean cubeInqty = new AxisBean(); |
| | | cubeInqty.setName("入库体积"); |
| | | Integer[] array3 = new Integer[data3.size()]; |
| | | Double [] array3 = new Double[data3.size()]; |
| | | cubeInqty.setData(data3.toArray(array3)); |
| | | list.add(cubeInqty); |
| | | } |
| | | |
| | | if (data3.size() >0) { |
| | | if (data4.size() >0) { |
| | | AxisBean cubeOutqty = new AxisBean(); |
| | | cubeOutqty.setName("出库体积"); |
| | | Integer[] array4 = new Integer[data4.size()]; |
| | | Double[] array4 = new Double[data4.size()]; |
| | | cubeOutqty.setData(data4.toArray(array4)); |
| | | list.add(cubeOutqty); |
| | | } |
| | | |
| | | if (data5.size() >0) { |
| | | AxisBean cubeOutqty = new AxisBean(); |
| | | cubeOutqty.setName("出库TEU"); |
| | | Double[] array5 = new Double[data4.size()]; |
| | | cubeOutqty.setData(data5.toArray(array5)); |
| | | list.add(cubeOutqty); |
| | | } |
| | | |
| | | |
| | | map.put("categories", categories); |
| | | map.put("rows", list); |
| | | return R.ok(map); |
| | |
| | | |
| | | // 总库位数 |
| | | Integer total1 = (int) Arith.add(0, locUseRate.getFqty(), locUseRate.getOqty(), locUseRate.getUqty(), locUseRate.getXqty()); |
| | | Integer total = total1>40000?40000:total1; |
| | | Integer total = total1>40000?6528:total1; |
| | | // 使用中 |
| | | Integer used = locUseRate.getFqty() + locUseRate.getUqty(); |
| | | // 库位使用率 |
| | |
| | | Integer count = 0; |
| | | String supp = ""; |
| | | //该订单累计入出库件数 |
| | | List<WrkMast> orderNo = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", wrkMast.getUserNo())); |
| | | List<WrkMastLog> userNo = wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>().eq("user_no", wrkMast.getUserNo()).eq("wrk_sts",15L)); |
| | | Integer ioType = wrkMast.getIoType(); |
| | | Integer suppCount = 0; |
| | | Integer sum = 0; |
| | | if (ioType != null && ioType < 100) { |
| | | if (orderNo != null && orderNo.size() > 0) { |
| | | count = orderNo.size(); |
| | | } |
| | | if (userNo != null && userNo.size() > 0) { |
| | | count = userNo.size()+count+1; |
| | | } |
| | | supp = count + ""; |
| | | supp = String.valueOf(resolveInboundSupp(wrkMast)); |
| | | map.put("supp", supp); |
| | | }else { |
| | | if (userNo != null && userNo.size() > 0) { |
| | | count = userNo.size()+1; |
| | | String[] split = wrkDetls.get(0).getSupp().split("/"); |
| | | if (split != null && split.length > 0) { |
| | | sum = Integer.valueOf(split[split.length - 1]); |
| | | }else { |
| | | sum = Integer.valueOf(wrkDetls.get(0).getSupp()); |
| | | } |
| | | supp = count + ""; |
| | | List<WrkMast> userNo = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", wrkMast.getUserNo()).in("wrk_sts",11,12,21,22,25)); |
| | | suppCount = sum - userNo.size()+1; |
| | | map.put("supp", suppCount + "/" + sum); |
| | | } |
| | | map.put("supp", supp); |
| | | |
| | | //耗时 |
| | | String costTime = resolveCostTime(wrkMast, wrkDetls); |
| | | map.put("costTime", costTime); |
| | | Long costTime = resolveCostTime(wrkMast); |
| | | map.put("costTime", String.valueOf(costTime)); |
| | | |
| | | return R.ok().add(map); |
| | | } |
| | | |
| | | private String resolveCostTime(WrkMast wrkMast, List<WrkDetl> wrkDetls) { |
| | | Long resolveCostTime(WrkMast wrkMast) { |
| | | return resolveCostTime(wrkMast, new Date()); |
| | | } |
| | | |
| | | Long resolveCostTime(WrkMast wrkMast, Date now) { |
| | | if (wrkMast == null || wrkMast.getIoType() == null) { |
| | | return "0"; |
| | | return 0L; |
| | | } |
| | | |
| | | Date createTime; |
| | | if (wrkMast.getIoType() < 100) { |
| | | createTime = resolveInboundTaskCreateTime(wrkMast, wrkDetls); |
| | | } else { |
| | | createTime = resolveTaskCreateTime(wrkMast); |
| | | } |
| | | |
| | | if (createTime == null) { |
| | | return "0"; |
| | | } |
| | | |
| | | long minutes = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis() - createTime.getTime()); |
| | | if (minutes < 0L) { |
| | | minutes = 0L; |
| | | } |
| | | return String.valueOf(minutes); |
| | | } |
| | | |
| | | private Date resolveInboundTaskCreateTime(WrkMast wrkMast, List<WrkDetl> wrkDetls) { |
| | | if (wrkMast == null) { |
| | | return null; |
| | | } |
| | | |
| | | if (!Cools.isEmpty(wrkMast.getUserNo())) { |
| | | Date userNoCreateTime = resolveUserNoCreateTime(wrkMast.getUserNo()); |
| | | if (userNoCreateTime != null) { |
| | | return userNoCreateTime; |
| | | if (Cools.isEmpty(wrkMast.getTrainNo())) { |
| | | return 0L; |
| | | } |
| | | return minutesBetween(wrkMastService.firstInboundCreateTimeByTrainNo(wrkMast.getTrainNo()), resolveTaskCreateTime(wrkMast)); |
| | | } |
| | | |
| | | String orderNo = resolveOrderNo(wrkMast, wrkDetls); |
| | | if (Cools.isEmpty(orderNo)) { |
| | | return null; |
| | | } |
| | | return resolveOrderCreateTime(orderNo); |
| | | return minutesBetween(resolveTaskCreateTime(wrkMast), now); |
| | | } |
| | | |
| | | private Date resolveUserNoCreateTime(String userNo) { |
| | | if (Cools.isEmpty(userNo)) { |
| | | return null; |
| | | int resolveInboundSupp(WrkMast wrkMast) { |
| | | if (wrkMast == null || wrkMast.getIoType() == null || wrkMast.getIoType() >= 100 || Cools.isEmpty(wrkMast.getTrainNo())) { |
| | | return 0; |
| | | } |
| | | return minDate( |
| | | minCreateTime(wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", userNo))), |
| | | minCreateTime(wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>().eq("user_no", userNo))) |
| | | ); |
| | | } |
| | | |
| | | private String resolveOrderNo(WrkMast wrkMast, List<WrkDetl> wrkDetls) { |
| | | if (wrkMast != null && !Cools.isEmpty(wrkMast.getUserNo())) { |
| | | return wrkMast.getUserNo(); |
| | | } |
| | | if (Cools.isEmpty(wrkDetls)) { |
| | | return null; |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | if (wrkDetl != null && !Cools.isEmpty(wrkDetl.getOrderNo())) { |
| | | return wrkDetl.getOrderNo(); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private Date resolveOrderCreateTime(String orderNo) { |
| | | if (Cools.isEmpty(orderNo)) { |
| | | return null; |
| | | } |
| | | |
| | | Date historyCreateTime = minDate( |
| | | minCreateTime(wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>().eq("user_no", orderNo))), |
| | | minCreateTime(wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>().eq("order_no", orderNo))) |
| | | ); |
| | | Date currentCreateTime = minDate( |
| | | minCreateTime(wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", orderNo))), |
| | | minCreateTime(wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("order_no", orderNo))) |
| | | ); |
| | | return minDate(historyCreateTime, currentCreateTime); |
| | | } |
| | | |
| | | private Date minDate(Date first, Date second) { |
| | | if (first == null) { |
| | | return second; |
| | | } |
| | | if (second == null) { |
| | | return first; |
| | | } |
| | | return first.before(second) ? first : second; |
| | | return wrkMastService.finishedInboundPalletCountByTrainNo(wrkMast.getTrainNo()); |
| | | } |
| | | |
| | | private Date resolveTaskCreateTime(WrkMast wrkMast) { |
| | | if (wrkMast == null) { |
| | | return null; |
| | | } |
| | | return minDate(minDate(wrkMast.getAppeTime(), wrkMast.getIoTime()), wrkMast.getModiTime()); |
| | | return wrkMast.getAppeTime() == null ? wrkMast.getIoTime() : wrkMast.getAppeTime(); |
| | | } |
| | | |
| | | private Date minCreateTime(List<?> list) { |
| | | if (Cools.isEmpty(list)) { |
| | | return null; |
| | | private Long minutesBetween(Date startTime, Date endTime) { |
| | | if (startTime == null || endTime == null) { |
| | | return 0L; |
| | | } |
| | | Date min = null; |
| | | for (Object item : list) { |
| | | Date createTime = resolveCreateTime(item); |
| | | if (createTime == null) { |
| | | continue; |
| | | } |
| | | if (min == null || createTime.before(min)) { |
| | | min = createTime; |
| | | } |
| | | long diff = endTime.getTime() - startTime.getTime(); |
| | | if (diff <= 0) { |
| | | return 0L; |
| | | } |
| | | return min; |
| | | } |
| | | |
| | | private Date resolveCreateTime(Object item) { |
| | | if (item instanceof WrkMast) { |
| | | WrkMast wrkMast = (WrkMast) item; |
| | | return minDate(minDate(wrkMast.getAppeTime(), wrkMast.getIoTime()), wrkMast.getModiTime()); |
| | | } |
| | | if (item instanceof WrkMastLog) { |
| | | WrkMastLog wrkMastLog = (WrkMastLog) item; |
| | | return minDate(minDate(wrkMastLog.getAppeTime(), wrkMastLog.getIoTime()), wrkMastLog.getModiTime()); |
| | | } |
| | | if (item instanceof WrkDetl) { |
| | | WrkDetl wrkDetl = (WrkDetl) item; |
| | | return minDate(minDate(wrkDetl.getAppeTime(), wrkDetl.getIoTime()), wrkDetl.getModiTime()); |
| | | } |
| | | if (item instanceof WrkDetlLog) { |
| | | WrkDetlLog wrkDetlLog = (WrkDetlLog) item; |
| | | return minDate(minDate(wrkDetlLog.getAppeTime(), wrkDetlLog.getIoTime()), wrkDetlLog.getModiTime()); |
| | | } |
| | | return null; |
| | | return diff / MILLIS_PER_MINUTE; |
| | | } |
| | | } |
| | | |