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.apache.poi.ss.formula.functions.T;
|
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(Class<T> tClass, Object param) {
|
|
}
|
@Transactional
|
public void query(String orderNo) {
|
OrderPakin orderPakin = orderPakinService.selectByNo(orderNo);
|
if (!Cools.isEmpty(orderPakin)) {
|
throw new CoolException(orderNo + "单据已存在,请勿重复提交");
|
}
|
}
|
@Transactional
|
public Order selectOrder(String orderNo) {
|
OrderPakin orderPakin = orderPakinService.selectByNo(orderNo);
|
if (Cools.isEmpty(orderPakin)) {
|
return null;
|
}
|
Order order = new Order();
|
order.sync(orderPakin);
|
return order;
|
}
|
@Transactional
|
public List<OrderDetl> selectOrderDetl(Long orderId) {
|
List<OrderDetl> orderDetlList = new ArrayList<>();
|
List<OrderDetlPakin> orderDetlPakinList = orderDetlPakinService.selectByOrderId(orderId);
|
if (!orderDetlPakinList.isEmpty()) {
|
for (OrderDetlPakin orderDetlPakin : orderDetlPakinList){
|
OrderDetl orderDetl = new OrderDetl();
|
orderDetl.sync(orderDetlPakin);
|
orderDetlList.add(orderDetl);
|
}
|
}
|
return orderDetlList;
|
}
|
@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("生成单据明细失败,请联系管理员");
|
}
|
}
|
},
|
PAKOUT{
|
@Transactional
|
public void implement(Class<T> tClass, Object param) {
|
|
}
|
@Transactional
|
public void query(String orderNo) {
|
OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
|
if (!Cools.isEmpty(orderPakout)) {
|
throw new CoolException(orderNo + "单据已存在,请勿重复提交");
|
}
|
}
|
@Transactional
|
public Order selectOrder(String orderNo) {
|
OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
|
if (Cools.isEmpty(orderPakout)) {
|
return null;
|
}
|
Order order = new Order();
|
order.sync(orderPakout);
|
return order;
|
}
|
@Transactional
|
public List<OrderDetl> selectOrderDetl(Long orderId) {
|
List<OrderDetl> orderDetlList = new ArrayList<>();
|
List<OrderDetlPakout> orderDetlPakoutList = orderDetlPakoutService.selectByOrderId(orderId);
|
if (!orderDetlPakoutList.isEmpty()) {
|
for (OrderDetlPakout orderDetlPakout : orderDetlPakoutList){
|
OrderDetl orderDetl = new OrderDetl();
|
orderDetl.sync(orderDetlPakout);
|
orderDetlList.add(orderDetl);
|
}
|
}
|
return orderDetlList;
|
}
|
@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("生成单据明细失败,请联系管理员");
|
}
|
}
|
};
|
|
public abstract void implement(Class<T> tClass, Object param);
|
public abstract void query(String orderNo);
|
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);
|
|
@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);
|
}
|
}
|
}
|
|
}
|