| | |
| | | |
| | | private static final Map<Integer, BigDecimal> INBOUND_WEIGHT_FACTOR_BY_SOURCE_STA; |
| | | private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; |
| | | private static final int DEFAULT_OUT_ORDER_BATCH_PRIORITY = 100; |
| | | private static final int DEFAULT_OUT_ORDER_BATCH_PRIORITY_THRESHOLD = 1; |
| | | // ERP 出库口大于该阈值时,/outOrder 只落出库订单,由定时器后续生成任务。 |
| | | private static final int PENDING_OUT_ORDER_STATION_THRESHOLD = 600; |
| | | // 延迟出库订单使用独立单据类型,便于和人工/页面创建的出库单区分来源。 |
| | |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID |
| | | wrkMast.setIoType(ioType); // 入出库状态 |
| | | wrkMast.setIoPri(13D); // 优先级:13 |
| | | wrkMast.setIoPri(Double.valueOf(i)); // 优先级 |
| | | wrkMast.setCrnNo(locMast.getCrnNo()); |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R outOrderBatch(Map<String, List<OutTaskParam>> linesByBatchSeq,int count) { |
| | | int i = 0; |
| | | |
| | | for (Map.Entry<String, List<OutTaskParam>> entry : linesByBatchSeq.entrySet()) { |
| | | int i = DEFAULT_OUT_ORDER_BATCH_PRIORITY; |
| | | int j = 0; |
| | | int priorityThreshold = getOutOrderBatchPriorityThreshold(); |
| | | for (OutTaskParam outTaskParam : entry.getValue()) { |
| | | if(outTaskParam.getSeq()!=0){ |
| | | i= outTaskParam.getSeq(); |
| | | }else{ |
| | | i++; |
| | | } |
| | | int teu = Cools.isEmpty(outTaskParam.getTeu())?0:outTaskParam.getTeu(); |
| | | R r = outOrder(outTaskParam, count, teu ,i); |
| | | if (!Objects.equals(r.get("code"), 200)) { |
| | | throw new CoolException("出库建单失败"); |
| | | } |
| | | j++; |
| | | if (j >= priorityThreshold) { |
| | | i--; |
| | | j = 0; |
| | | } |
| | | } |
| | | |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | private int getOutOrderBatchPriorityThreshold() { |
| | | Parameter parameter = Parameter.get(); |
| | | if (parameter == null || Cools.isEmpty(parameter.getOutOrderBatchPriorityThreshold())) { |
| | | return DEFAULT_OUT_ORDER_BATCH_PRIORITY_THRESHOLD; |
| | | } |
| | | try { |
| | | int threshold = Integer.parseInt(parameter.getOutOrderBatchPriorityThreshold().trim()); |
| | | return threshold <= 0 ? DEFAULT_OUT_ORDER_BATCH_PRIORITY_THRESHOLD : threshold; |
| | | } catch (NumberFormatException ignored) { |
| | | return DEFAULT_OUT_ORDER_BATCH_PRIORITY_THRESHOLD; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R outOrderCreatePakoutOrder(List<OutTaskParam> params) { |