| | |
| | | if (Cools.isEmpty(param.getUpc())) { |
| | | return R.error("UPC[upc]不能为空"); |
| | | } |
| | | if (Cools.isEmpty(param.getSupplier())) { |
| | | return R.error("货源[supplier]不能为空"); |
| | | if (Cools.isEmpty(param.getItem())) { |
| | | return R.error("UPC[item]不能为空"); |
| | | } |
| | | // if (Cools.isEmpty(param.getSupplier())) { |
| | | // return R.error("货源[supplier]不能为空"); |
| | | // } |
| | | if (Cools.isEmpty(param.getStaNo())) { |
| | | return R.error("分拣点位[staNo]不能为空"); |
| | | } |
| | |
| | | |
| | | |
| | | /** |
| | | * 分拣线上报接收 |
| | | * AGV上报接收 |
| | | */ |
| | | @PostMapping("/agv/task/v1/agvCallback") |
| | | @AppAuth(memo = "AGV上报接收") |
| | |
| | | public BasArmMast(TaskArmReportParam param) { |
| | | this.orderNo = param.getOrderNo(); |
| | | this.sku = param.getSku(); |
| | | this.matnr = param.getSku(); |
| | | this.matnr = param.getItem(); |
| | | this.po = param.getPo(); |
| | | this.upc = param.getUpc(); |
| | | this.supplier = param.getSupplier(); |
| | |
| | | @Data |
| | | public static class MatList { |
| | | |
| | | // Sku\型号\分拣属性1\不可为空\扫码可获取 |
| | | private String item; |
| | | |
| | | // Sku\客人型号\分拣属性1\不可为空\扫码可获取 |
| | | private String sku; |
| | | |
| | |
| | | //0:不分拣,在线体循环 |
| | | private Integer sign; |
| | | |
| | | //货源\非分拣属性(不下发,数据在条码中,需上报) |
| | | private String supplier; |
| | | //货源\非分拣属性(不下发,数据在条码中,需上报) 废弃 |
| | | // private String supplier; |
| | | |
| | | //绑定标记(标识相同必须去同一个分拣口) |
| | | private Long bindingTags; |
| | |
| | | this.sku = sku; |
| | | this.po = po; |
| | | } |
| | | public MatList(String sku, String po, Double ctns, String upc, Integer sign, String supplier, Long bindingTags) { |
| | | public MatList(String item, String sku, String po, Double ctns, String upc, Integer sign, Long bindingTags) { |
| | | this.item = item; |
| | | this.sku = sku; |
| | | this.po = po; |
| | | this.ctns = ctns; |
| | | this.upc = upc; |
| | | this.sign = sign; |
| | | this.supplier = supplier; |
| | | this.bindingTags = bindingTags; |
| | | } |
| | | } |
| | |
| | | private String sku; |
| | | //客人PO |
| | | private String po; |
| | | private String item; |
| | | //条码值 |
| | | private String upc; |
| | | //货源 |
| | |
| | | //遍历单据 |
| | | for (String orderNo : orderNos) { |
| | | try{ |
| | | List<OrderDetlPakin> orderDetlPakinList = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_no",orderNo)); |
| | | List<OrderDetlPakin> orderDetlPakinListAll = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_no",orderNo).eq("inspect",0)); |
| | | if (orderDetlPakinListAll.size()<1){ |
| | | orderPakinService.updateOrderStatus(orderNo); //更新订单状态 0 -> 1 |
| | | continue; |
| | | } |
| | | List<String> boxType3List = new ArrayList<>(); |
| | | for (OrderDetlPakin orderDetl:orderDetlPakinListAll){ |
| | | if (!boxType3List.contains(orderDetl.getBoxType3())){ |
| | | boxType3List.add(orderDetl.getBoxType3()); |
| | | } |
| | | } |
| | | for (String boxType3 : boxType3List){ |
| | | List<OrderDetlPakin> orderDetlPakinList = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_no",orderNo).eq("box_type3",boxType3).eq("inspect",0)); |
| | | if (orderDetlPakinList.size()<1){ |
| | | continue; |
| | | } |
| | |
| | | } else if (number == 0){ |
| | | return; |
| | | } |
| | | String name = ToSortLineUtils.MergerParameter(orderDetl.getMatnr(),orderDetl.getStandby1(),orderDetl.getStandby2()); |
| | | String name = ToSortLineUtils.MergerParameter(orderDetl.getMatnr(),orderDetl.getStandby3(),orderDetl.getStandby1(),orderDetl.getStandby2()); |
| | | int maxCapacity = number; |
| | | int stock = orderDetl.getAnfme().intValue(); |
| | | items.add(new ItemUtilParam.Item(name, maxCapacity, stock)); |
| | | } |
| | | |
| | | OrderToLine orderToLine = new OrderToLine(); |
| | | orderToLine.setOrderNo(orderNo); //单据编号 |
| | | orderToLine.setOrderNo(boxType3); //单据编号 |
| | | orderToLine.setCreateTime(System.currentTimeMillis()); //创建时间 |
| | | OrderToLine orderToLineR = ToSortLineUtils.GetOrderToLine(items, orderToLine,"Opt3"); |
| | | |
| | |
| | | try{ |
| | | for (OrderToLine.MatList matList:orderToLineR.getMatList()){ |
| | | BasArmMastSign basArmMastSign = new BasArmMastSign(); |
| | | basArmMastSign.setMatnr(matList.getSku()); |
| | | basArmMastSign.setOrderNo(orderNo); |
| | | basArmMastSign.setSku(matList.getSku()); |
| | | basArmMastSign.setPo(matList.getPo()); |
| | | basArmMastSign.setUpc(matList.getUpc()); |
| | | basArmMastSign.setSupplier(matList.getSupplier()); |
| | | basArmMastSign.setMatnr(matList.getItem()); |
| | | basArmMastSign.setOrderNo(boxType3);//b3 |
| | | basArmMastSign.setSku(matList.getSku());//s3 |
| | | basArmMastSign.setPo(matList.getPo());//s1 |
| | | basArmMastSign.setUpc(matList.getUpc());//s2 |
| | | // basArmMastSign.setSupplier(matList.getSupplier()); |
| | | basArmMastSign.setStatus(0); |
| | | basArmMastSign.setAnfme(matList.getCtns()); |
| | | basArmMastSign.setCreateTime(matList.getBindingTags()); |
| | | basArmMastSignService.insert(basArmMastSign); |
| | | } |
| | | for (OrderDetlPakin orderDetl:orderDetlPakinList){ |
| | | orderDetl.setInspect(1); |
| | | orderDetlPakinService.updateById(orderDetl); |
| | | } |
| | | }catch (Exception e){} |
| | | } |
| | | } catch (Exception e){ |
| | | log.error("下发单据异常===>"+e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | } catch (Exception e){ |
| | | log.error("下发单据异常,跳转下一个订单===>"+e.getMessage()); |
| | | } |
| | |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | success = true; |
| | | orderPakinService.updateOrderStatus(orderToline.getOrderNo()); //更新订单状态 0 -> 1 |
| | | // orderPakinService.updateOrderStatus(orderToline.getOrderNo()); //更新订单状态 0 -> 1 |
| | | } else { |
| | | log.error("下发单据!!!url:{};request:{};response:{}", URL+Path, JSON.toJSONString(orderToline), response); |
| | | throw new CoolException("下发单据失败"); |
| | |
| | | System.out.println("\n" + solution); |
| | | } |
| | | |
| | | public static String MergerParameter(String sku,String po,String upc){ |
| | | return sku+sign_F+po+sign_F+upc; |
| | | public static String MergerParameter(String item,String sku,String po,String upc){ |
| | | return item+sign_F+sku+sign_F+po+sign_F+upc; |
| | | } |
| | | |
| | | public static OrderToLine GetOrderToLine(List<ItemUtilParam.Item> items, OrderToLine orderToLine,String sign){ |
| | |
| | | for (OptimizedLockerPackingUtils.Locker locker:packingSolution.lockers) { |
| | | for (String mantnr : locker.contents.keySet()){ |
| | | System.out.println(mantnr+"<===>"+locker.contents.get(mantnr)); |
| | | String[] split = mantnr.split(Pattern.quote(sign_F)); |
| | | String[] split = mantnr.split(Pattern.quote(sign_F),-1); |
| | | OrderToLine.MatList mat = new OrderToLine.MatList( |
| | | split[0], // matnr -> sku |
| | | split[1], // supp -> po -> s1 |
| | | split[0], // matnr -> matnr -> item |
| | | split[1], // sku -> sku |
| | | split[2], // standby1 -> po -> s1 |
| | | locker.contents.get(mantnr).doubleValue(), //整料 |
| | | split[2], //barcode -> upc -> s2 |
| | | split[3], //standby2 -> upc -> s2 |
| | | 1, |
| | | null, //origin -> supplier 货源 |
| | | locker.bindingTags |
| | | ); |
| | | matLists.add(mat); |
| | |
| | | // System.out.println(mantnr+"<===>"+locker.contents.get(mantnr)); |
| | | String[] split = mantnr.split(Pattern.quote(sign_F),-1); |
| | | OrderToLine.MatList mat = new OrderToLine.MatList( |
| | | split[0], // matnr -> sku |
| | | split[1], // supp -> po -> s1 |
| | | split[0], // matnr -> item -> matnr |
| | | split[1], // standby3 -> sku -> standby3 |
| | | split[2], // standby1 -> po -> standby1 |
| | | locker.contents.get(mantnr).doubleValue(), //整料 |
| | | split[2], //barcode -> upc -> s2 |
| | | split[3], //standby2 -> upc -> standby2 |
| | | 1, |
| | | null, //origin -> supplier 货源 |
| | | locker.bindingTags |
| | | ); |
| | | matLists.add(mat); |