package com.zy.common.model.enumUtils; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.service.OrderDetlPakinService; import com.zy.asrs.service.OrderDetlPakoutService; import com.zy.asrs.service.OrderPakinService; import com.zy.asrs.service.OrderPakoutService; import lombok.Setter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; public enum OrderInAndOutType { PAKIN{ @Transactional public void implement() {} @Transactional public void query(String orderNo) { OrderPakin orderPakin = orderPakinService.selectByNo(orderNo); if (!Cools.isEmpty(orderPakin)) { throw new CoolException(orderNo + "单据已存在,请勿重复提交"); } } @Transactional public Order selectByNo(String orderNo) { OrderPakin orderPakin = orderPakinService.selectByNo(orderNo); if (Cools.isEmpty(orderPakin)) { return null; } return transformationOrder(orderPakin); } @Transactional public List selectByOrderId(Long orderId) { List orderDetlPakinList = orderDetlPakinService.selectByOrderId(orderId); return transformationOrderDetlList(orderDetlPakinList); } @Transactional public List selectWorkingDetls(Long orderId) { List orderDetlPakinList = orderPakinService.selectWorkingDetls(orderId); return transformationOrderDetlList(orderDetlPakinList); } @Transactional public void checkComplete(String orderNo) { orderPakinService.checkComplete(orderNo); } @Transactional public boolean saveHandlerOrder(Boolean pakin, WrkMast wrkMast, List wrkDetls) { return orderPakinService.saveHandlerOrder(pakin,wrkMast,wrkDetls); } @Transactional public void insertOrder(Order order) { OrderPakin orderPakin = new OrderPakin(); orderPakin.sync(order); if (!orderPakinService.insert(orderPakin)) { throw new CoolException("生成单据主档失败,请联系管理员"); } } @Transactional public void insertOrderDetl(Order order, OrderDetl orderDetl) { OrderPakin orderPakin = orderPakinService.selectByNo(order.getOrderNo()); OrderDetlPakin orderDetlPakin = new OrderDetlPakin(); orderDetlPakin.sync(orderDetl); orderDetlPakin.setOrderId(orderPakin.getId()); orderDetlPakin.setOrderNo(orderPakin.getOrderNo()); if (!orderDetlPakinService.insert(orderDetlPakin)) { throw new CoolException("生成单据明细失败,请联系管理员"); } } @Transactional public void updateOrder(Long id, Long settle, Long userId) { if (!orderPakinService.updateSettle(id, settle, userId)) { throw new CoolException("服务器内部错误,请联系管理员"); } } @Transactional public void updateOrderDetl(Order order, OrderDetl orderDetl) { OrderPakin orderPakin = orderPakinService.selectByNo(order.getOrderNo()); OrderDetlPakin orderDetlPakin = new OrderDetlPakin(); orderDetlPakin.sync(orderDetl); orderDetlPakin.setOrderId(orderPakin.getId()); orderDetlPakin.setOrderNo(orderPakin.getOrderNo()); if (!orderDetlPakinService.insert(orderDetlPakin)) { throw new CoolException("生成单据明细失败,请联系管理员"); } } @Transactional public void remove(Long orderId) { try{ orderPakinService.remove(orderId); } catch (Exception e){ throw new CoolException("删除单据失败"); } } @Transactional public List selectComplete() { List orderPakinList = orderPakinService.selectComplete(); return transformationOrderList(orderPakinList); } @Transactional public OrderDetl selectItem(Long orderId, String matnr, String batch) { OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(orderId, matnr, batch); return transformationOrderDetl(orderDetlPakin); } @Transactional public OrderDetl selectItem(String orderNo, String matnr, String batch) { OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(orderNo, matnr, batch); return transformationOrderDetl(orderDetlPakin); } @Transactional public OrderDetl findByLook(List orderDetls, Long orderId, String matnr, String batch) { List orderDetlPakins = transformationDetlList(orderDetls); OrderDetlPakin orderDetlPakin = orderDetlPakinService.findByLook(orderDetlPakins, orderId, matnr,batch); return transformationOrderDetl(orderDetlPakin); } @Transactional public boolean increase(Long orderId, String matnr, String batch, Double qty) { return orderDetlPakinService.increase(orderId, matnr, batch, qty); } @Transactional public boolean decrease(String orderNo, String matnr, String batch, Double qty) { return orderDetlPakinService.decrease(orderNo, matnr, batch, qty); } @Transactional public boolean modifyStatus(Long orderId, Integer status) { return orderDetlPakinService.modifyStatus(orderId, status); } @Transactional public boolean addToLogTable(OrderDetl orderDetl) { OrderDetlPakin orderDetlPakin = transformationDetl(orderDetl); return orderDetlPakinService.addToLogTable(orderDetlPakin); } @Transactional public boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty) { return orderDetlPakinService.increaseQtyByOrderNo(orderNo, matnr, batch, qty); } @Transactional public boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty) { return orderDetlPakinService.increaseWorkQty(orderId, matnr, batch, workQty); } public Order transformationOrder(OrderPakin orderPakin){ Order order = new Order(); order.sync(orderPakin); return order; } public List transformationOrderList(List orderPakinList){ List orderList = new ArrayList<>(); for (OrderPakin orderPakin : orderPakinList){ Order order = new Order(); order.sync(orderPakin); orderList.add(order); } return orderList; } public OrderDetl transformationOrderDetl(OrderDetlPakin orderDetlPakin){ OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(orderDetlPakin); return orderDetl; } public List transformationOrderDetlList(List orderDetlPakinList){ List orderDetlList = new ArrayList<>(); for (OrderDetlPakin orderDetlPakin : orderDetlPakinList){ OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(orderDetlPakin); orderDetlList.add(orderDetl); } return orderDetlList; } public OrderPakin transformation(Order order){ OrderPakin orderPakin = new OrderPakin(); orderPakin.sync(order); return orderPakin; } public List transformationList(List orderList){ List orderPakinList = new ArrayList<>(); for (Order order : orderList){ OrderPakin orderPakin = new OrderPakin(); orderPakin.sync(order); orderPakinList.add(orderPakin); } return orderPakinList; } public OrderDetlPakin transformationDetl(OrderDetl orderDetl){ OrderDetlPakin orderDetlPakin = new OrderDetlPakin(); orderDetlPakin.sync(orderDetl); return orderDetlPakin; } public List transformationDetlList(List orderDetlList){ List orderDetlPakinList = new ArrayList<>(); for (OrderDetl orderDetl : orderDetlList){ OrderDetlPakin orderDetlPakin = new OrderDetlPakin(); orderDetlPakin.sync(orderDetl); orderDetlPakinList.add(orderDetlPakin); } return orderDetlPakinList; } }, PAKOUT{ @Transactional public void implement() {} @Transactional public void query(String orderNo) { OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo); if (!Cools.isEmpty(orderPakout)) { throw new CoolException(orderNo + "单据已存在,请勿重复提交"); } } @Transactional public Order selectByNo(String orderNo) { OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo); if (Cools.isEmpty(orderPakout)) { return null; } return transformationOrder(orderPakout); } @Transactional public List selectByOrderId(Long orderId) { List orderDetlPakoutList = orderDetlPakoutService.selectByOrderId(orderId); return transformationOrderDetlList(orderDetlPakoutList); } @Transactional public List selectWorkingDetls(Long orderId) { List orderDetlPakoutList = orderPakoutService.selectWorkingDetls(orderId); return transformationOrderDetlList(orderDetlPakoutList); } @Transactional public void checkComplete(String orderNo) { orderPakoutService.checkComplete(orderNo); } @Transactional public boolean saveHandlerOrder(Boolean Pakout, WrkMast wrkMast, List wrkDetls) { return orderPakoutService.saveHandlerOrder(Pakout,wrkMast,wrkDetls); } @Transactional public void insertOrder(Order order) { OrderPakout orderPakout = new OrderPakout(); orderPakout.sync(order); if (!orderPakoutService.insert(orderPakout)) { throw new CoolException("生成单据主档失败,请联系管理员"); } } @Transactional public void insertOrderDetl(Order order, OrderDetl orderDetl) { OrderPakout orderPakout = orderPakoutService.selectByNo(order.getOrderNo()); OrderDetlPakout orderDetlPakout = new OrderDetlPakout(); orderDetlPakout.sync(orderDetl); orderDetlPakout.setOrderId(orderPakout.getId()); orderDetlPakout.setOrderNo(orderPakout.getOrderNo()); if (!orderDetlPakoutService.insert(orderDetlPakout)) { throw new CoolException("生成单据明细失败,请联系管理员"); } } @Transactional public void updateOrder(Long id, Long settle, Long userId) { if (!orderPakoutService.updateSettle(id, settle, userId)) { throw new CoolException("服务器内部错误,请联系管理员"); } } @Transactional public void updateOrderDetl(Order order, OrderDetl orderDetl) { OrderPakout orderPakout = orderPakoutService.selectByNo(order.getOrderNo()); OrderDetlPakout orderDetlPakout = new OrderDetlPakout(); orderDetlPakout.sync(orderDetl); orderDetlPakout.setOrderId(orderPakout.getId()); orderDetlPakout.setOrderNo(orderPakout.getOrderNo()); if (!orderDetlPakoutService.insert(orderDetlPakout)) { throw new CoolException("生成单据明细失败,请联系管理员"); } } @Transactional public void remove(Long orderId) { try{ orderPakoutService.remove(orderId); } catch (Exception e){ throw new CoolException("删除单据失败"); } } @Transactional public List selectComplete() { List orderPakoutList = orderPakoutService.selectComplete(); return transformationOrderList(orderPakoutList); } @Transactional public OrderDetl selectItem(Long orderId, String matnr, String batch) { OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(orderId, matnr, batch); return transformationOrderDetl(orderDetlPakout); } @Transactional public OrderDetl selectItem(String orderNo, String matnr, String batch) { OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(orderNo, matnr, batch); return transformationOrderDetl(orderDetlPakout); } @Transactional public OrderDetl findByLook(List orderDetls, Long orderId, String matnr, String batch) { List orderDetlPakouts = transformationDetlList(orderDetls); OrderDetlPakout orderDetlPakout = orderDetlPakoutService.findByLook(orderDetlPakouts, orderId, matnr,batch); return transformationOrderDetl(orderDetlPakout); } @Transactional public boolean increase(Long orderId, String matnr, String batch, Double qty) { return orderDetlPakoutService.increase(orderId, matnr, batch, qty); } @Transactional public boolean decrease(String orderNo, String matnr, String batch, Double qty) { return orderDetlPakoutService.decrease(orderNo, matnr, batch, qty); } @Transactional public boolean modifyStatus(Long orderId, Integer status) { return orderDetlPakoutService.modifyStatus(orderId, status); } @Transactional public boolean addToLogTable(OrderDetl orderDetl) { OrderDetlPakout orderDetlPakout = transformationDetl(orderDetl); return orderDetlPakoutService.addToLogTable(orderDetlPakout); } @Transactional public boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty) { return orderDetlPakoutService.increaseQtyByOrderNo(orderNo, matnr, batch, qty); } @Transactional public boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty) { return orderDetlPakoutService.increaseWorkQty(orderId, matnr, batch, workQty); } public Order transformationOrder(OrderPakout orderPakout){ Order order = new Order(); order.sync(orderPakout); return order; } public List transformationOrderList(List orderPakoutList){ List orderList = new ArrayList<>(); for (OrderPakout orderPakout : orderPakoutList){ Order order = new Order(); order.sync(orderPakout); orderList.add(order); } return orderList; } public OrderDetl transformationOrderDetl(OrderDetlPakout orderDetlPakout){ OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(orderDetlPakout); return orderDetl; } public List transformationOrderDetlList(List orderDetlPakoutList){ List orderDetlList = new ArrayList<>(); for (OrderDetlPakout orderDetlPakout : orderDetlPakoutList){ OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(orderDetlPakout); orderDetlList.add(orderDetl); } return orderDetlList; } public OrderPakout transformation(Order order){ OrderPakout orderPakout = new OrderPakout(); orderPakout.sync(order); return orderPakout; } public List transformationList(List orderList){ List orderPakoutList = new ArrayList<>(); for (Order order : orderList){ OrderPakout orderPakout = new OrderPakout(); orderPakout.sync(order); orderPakoutList.add(orderPakout); } return orderPakoutList; } public OrderDetlPakout transformationDetl(OrderDetl orderDetl){ OrderDetlPakout orderDetlPakout = new OrderDetlPakout(); orderDetlPakout.sync(orderDetl); return orderDetlPakout; } public List transformationDetlList(List orderDetlList){ List orderDetlPakoutList = new ArrayList<>(); for (OrderDetl orderDetl : orderDetlList){ OrderDetlPakout orderDetlPakout = new OrderDetlPakout(); orderDetlPakout.sync(orderDetl); orderDetlPakoutList.add(orderDetlPakout); } return orderDetlPakoutList; } }; public abstract void implement(); public abstract void query(String orderNo); public abstract Order selectByNo(String orderNo); public abstract List selectByOrderId(Long orderId); public abstract List selectWorkingDetls(Long orderId); public abstract void checkComplete(String orderNo); public abstract boolean saveHandlerOrder(Boolean pakin, WrkMast wrkMast, List wrkDetls); public abstract void insertOrder(Order order); public abstract void insertOrderDetl(Order order, OrderDetl orderDetl); public abstract void updateOrder(Long id, Long settle, Long userId); public abstract void updateOrderDetl(Order order, OrderDetl orderDetl); public abstract void remove(Long orderId); public abstract List selectComplete(); public abstract OrderDetl selectItem(Long orderId, String matnr, String batch); public abstract OrderDetl selectItem(String orderNo, String matnr, String batch); public abstract OrderDetl findByLook(List orderDetls, Long orderId, String matnr, String batch); public abstract boolean increase(Long orderId, String matnr, String batch, Double qty); public abstract boolean decrease(String orderNo, String matnr, String batch, Double qty); public abstract boolean modifyStatus(Long orderId, Integer status); public abstract boolean addToLogTable(OrderDetl orderDetl); public abstract boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty); public abstract boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty); @Setter OrderPakinService orderPakinService; @Setter OrderDetlPakinService orderDetlPakinService; @Setter OrderPakoutService orderPakoutService; @Setter OrderDetlPakoutService orderDetlPakoutService; @Component public static class ReportTypeServiceInjector { @Autowired OrderPakinService orderPakinService; @Autowired OrderDetlPakinService orderDetlPakinService; @Autowired OrderPakoutService orderPakoutService; @Autowired OrderDetlPakoutService orderDetlPakoutService; @PostConstruct public void postConstruct(){ for(OrderInAndOutType orderInAndOutType : EnumSet.allOf(OrderInAndOutType.class)){ orderInAndOutType.setOrderPakinService(orderPakinService); orderInAndOutType.setOrderDetlPakinService(orderDetlPakinService); orderInAndOutType.setOrderPakoutService(orderPakoutService); orderInAndOutType.setOrderDetlPakoutService(orderDetlPakoutService); } } } }