package com.zy.asrs.utils; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import com.zy.common.model.enumUtils.OrderEnumVo; import com.zy.common.model.enumUtils.OrderInAndOutType; import com.zy.common.model.enumUtils.OrderMethodVo; import org.apache.poi.ss.formula.functions.T; import java.lang.reflect.Method; import java.util.List; public class OrderInAndOutUtil { public static String enumUtil(boolean sign) { if (sign){ return OrderEnumVo.PAKIN.getCode(); } return OrderEnumVo.PAKOUT.getCode(); } public static OrderInAndOutType getOrderInAndOutType(boolean sign) { return OrderInAndOutType.valueOf(enumUtil(sign)); } public static boolean aBoolean(Object object){ if (Cools.isEmpty(object)){ throw new CoolException("null"); } else if (object instanceof Boolean) { return (boolean) object; } else { throw new CoolException("Unexpected return type"); } } public static Order aOrder(Object object){ if (Cools.isEmpty(object)){ return null; } else if (object instanceof Order) { return (Order) object; } else { throw new CoolException("Unexpected return type"); } } public static OrderDetl aOrderDetl(Object object){ if (Cools.isEmpty(object)){ return null; } else if (object instanceof OrderDetl) { return (OrderDetl) object; } else { throw new CoolException("Unexpected return type"); } } public static Method implement(OrderMethodVo orderMethodVo){ Class casual = OrderInAndOutType.class; try{ switch (orderMethodVo){ case QUERY: return casual.getDeclaredMethod(OrderMethodVo.QUERY.getCode(), String.class); case SELECT_BY_NO: return casual.getDeclaredMethod(OrderMethodVo.SELECT_BY_NO.getCode(), String.class); case SELECT_BY_ORDER_ID: return casual.getDeclaredMethod(OrderMethodVo.SELECT_BY_ORDER_ID.getCode(), Long.class); case SELECT_WORKING_DETLS: return casual.getDeclaredMethod(OrderMethodVo.SELECT_WORKING_DETLS.getCode(), Long.class); case CHECK_COMPLETE: return casual.getDeclaredMethod(OrderMethodVo.CHECK_COMPLETE.getCode(), String.class); case SAVE_HANDLER_ORDER: return casual.getDeclaredMethod(OrderMethodVo.SAVE_HANDLER_ORDER.getCode(), Boolean.class, WrkMast.class, List.class); case INSERT_ORDER: return casual.getDeclaredMethod(OrderMethodVo.INSERT_ORDER.getCode(), Order.class); case INSERT_ORDERDETL: return casual.getDeclaredMethod(OrderMethodVo.INSERT_ORDERDETL.getCode(), Order.class, OrderDetl.class); case UPDATE_ORDER: return casual.getDeclaredMethod(OrderMethodVo.UPDATE_ORDER.getCode(), Long.class,Long.class,Long.class); case UPDATE_ORDERDETL: return casual.getDeclaredMethod(OrderMethodVo.UPDATE_ORDERDETL.getCode(), Order.class,OrderDetl.class); case REMOVE: return casual.getDeclaredMethod(OrderMethodVo.REMOVE.getCode(), Long.class); case SELECT_COMPLETE: return casual.getDeclaredMethod(OrderMethodVo.SELECT_COMPLETE.getCode()); case SELECT_ITEM1: return casual.getDeclaredMethod(OrderMethodVo.SELECT_ITEM1.getCode(), Long.class,String.class,String.class); case SELECT_ITEM2: return casual.getDeclaredMethod(OrderMethodVo.SELECT_ITEM2.getCode(), String.class,String.class,String.class); case FIND_BY_LOOK: return casual.getDeclaredMethod(OrderMethodVo.FIND_BY_LOOK.getCode(), List.class, Long.class,String.class,String.class); case INCREASE: return casual.getDeclaredMethod(OrderMethodVo.INCREASE.getCode(), Long.class,String.class,String.class,Double.class); case DECREASE: return casual.getDeclaredMethod(OrderMethodVo.DECREASE.getCode(), String.class,String.class,String.class,Double.class); case MODIFY_STATUS: return casual.getDeclaredMethod(OrderMethodVo.MODIFY_STATUS.getCode(), Long.class,Integer.class); case ADD_TO_LOG_TABLE: return casual.getDeclaredMethod(OrderMethodVo.ADD_TO_LOG_TABLE.getCode(), OrderDetl.class); case INCREASE_QTY_BY_ORDER_NO: return casual.getDeclaredMethod(OrderMethodVo.INCREASE_QTY_BY_ORDER_NO.getCode(), String.class,String.class,String.class,Double.class); case INCREASE_WORKING_QTY: return casual.getDeclaredMethod(OrderMethodVo.INCREASE_WORKING_QTY.getCode(), Long.class,String.class,String.class,Double.class); } } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } throw new CoolException("未知异常"); } public static void query(boolean sign,OrderMethodVo orderMethodVo,String orderNo){ try{ implement(orderMethodVo).invoke(getOrderInAndOutType(sign),orderNo); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static Order selectByNo(boolean sign,OrderMethodVo orderMethodVo,String orderNo){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderNo); return aOrder(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static List selectByOrderId(boolean sign,OrderMethodVo orderMethodVo,Long orderId){ try{ Object result = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderId); if (Cools.isEmpty(result)){ return null; } else if (result instanceof List) { return (List) result; } else { throw new CoolException("Unexpected return type"); } } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static List selectWorkingDetls(boolean sign,OrderMethodVo orderMethodVo,Long orderId){ try{ Object result = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderId); if (Cools.isEmpty(result)){ return null; } else if (result instanceof List) { return (List) result; } else { throw new CoolException("Unexpected return type"); } } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static void checkComplete(boolean sign,OrderMethodVo orderMethodVo,String orderNo){ try{ implement(orderMethodVo).invoke(getOrderInAndOutType(sign),orderNo); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static boolean saveHandlerOrder(boolean sign,OrderMethodVo orderMethodVo,Boolean pakin, WrkMast wrkMast, List wrkDetls){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), pakin, wrkMast, wrkDetls); return aBoolean(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static void insertOrder(boolean sign,OrderMethodVo orderMethodVo,Order order){ try{ implement(orderMethodVo).invoke(getOrderInAndOutType(sign),order); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static void insertOrderDetl(boolean sign,OrderMethodVo orderMethodVo,Order order, OrderDetl orderDetl){ try{ implement(orderMethodVo).invoke(getOrderInAndOutType(sign),order,orderDetl); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static void updateOrder(boolean sign,OrderMethodVo orderMethodVo,Long id, Long settle, Long userId){ try{ implement(orderMethodVo).invoke(getOrderInAndOutType(sign),id,settle,userId); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static void updateOrderDetl(boolean sign,OrderMethodVo orderMethodVo,Order order, OrderDetl orderDetl){ try{ implement(orderMethodVo).invoke(getOrderInAndOutType(sign),order,orderDetl); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static void remove(boolean sign,OrderMethodVo orderMethodVo,Long orderId){ try{ implement(orderMethodVo).invoke(getOrderInAndOutType(sign),orderId); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static List selectComplete(boolean sign,OrderMethodVo orderMethodVo){ try{ Object result = implement(orderMethodVo).invoke(getOrderInAndOutType(sign)); if (Cools.isEmpty(result)){ return null; } else if (result instanceof List) { return (List) result; } else { throw new CoolException("Unexpected return type"); } } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static OrderDetl selectItem(boolean sign,OrderMethodVo orderMethodVo,Long orderId, String matnr, String batch){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderId, matnr, batch); return aOrderDetl(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static OrderDetl selectItem(boolean sign,OrderMethodVo orderMethodVo,String orderNo, String matnr, String batch){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderNo, matnr, batch); return aOrderDetl(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static OrderDetl findByLook(boolean sign,OrderMethodVo orderMethodVo,List orderDetls, Long orderId, String matnr, String batch){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderDetls, orderId, matnr, batch); return aOrderDetl(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static boolean increase(boolean sign,OrderMethodVo orderMethodVo,Long orderId, String matnr, String batch, Double qty){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderId, matnr, batch, qty); return aBoolean(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static boolean decrease(boolean sign,OrderMethodVo orderMethodVo,String orderNo, String matnr, String batch, Double qty){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderNo, matnr, batch, qty); return aBoolean(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static boolean modifyStatus(boolean sign,OrderMethodVo orderMethodVo,Long orderId, Integer status){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderId, status); return aBoolean(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static boolean addToLogTable(boolean sign,OrderMethodVo orderMethodVo,OrderDetl orderDetl){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderDetl); return aBoolean(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static boolean increaseQtyByOrderNo(boolean sign,OrderMethodVo orderMethodVo,String orderNo, String matnr, String batch, Double qty){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderNo, matnr, batch, qty); return aBoolean(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } public static boolean increaseWorkQty(boolean sign,OrderMethodVo orderMethodVo,Long orderId, String matnr, String batch, Double workQty){ try{ Object invoke = implement(orderMethodVo).invoke(getOrderInAndOutType(sign), orderId, matnr, batch, workQty); return aBoolean(invoke); } catch (Exception e) { throw new CoolException(e.getCause().getMessage()); } } }