package com.zy.asrs.controller; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.core.annotations.AppAuth; 
 | 
import com.core.common.*; 
 | 
import com.core.exception.CoolException; 
 | 
import com.zy.asrs.entity.param.MatSyncParam; 
 | 
import com.zy.asrs.entity.param.OpenOrderCompleteParam; 
 | 
import com.zy.asrs.entity.param.OpenOrderPakinParam; 
 | 
import com.zy.asrs.entity.param.OpenOrderPakoutParam; 
 | 
import com.zy.asrs.service.OpenService; 
 | 
import com.zy.common.model.DetlDto; 
 | 
import com.zy.common.web.BaseController; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import javax.servlet.http.HttpServletRequest; 
 | 
import java.util.ArrayList; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * Created by vincent on 2022/4/8 
 | 
 */ 
 | 
@Slf4j 
 | 
@RestController 
 | 
@RequestMapping("open/asrs") 
 | 
public class OpenController extends BaseController { 
 | 
  
 | 
    private static final boolean auth = true; 
 | 
    public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{ 
 | 
        add("ea1f0459efc02a79f046f982767939ae"); 
 | 
    }}; 
 | 
  
 | 
    @Autowired 
 | 
    private OpenService openService; 
 | 
  
 | 
    @PostMapping("/order/matSync/default/v2") 
 | 
//    @AppAuth(memo = "商品信息同步接口") 
 | 
    public synchronized R syncMatInfoV2(@RequestHeader(required = false) String appkey, 
 | 
                                        @RequestBody(required = false) MatSyncParam.MatParam param, 
 | 
                                        HttpServletRequest request) { 
 | 
  
 | 
        auth(appkey, param, request); 
 | 
        if (Cools.isEmpty(param)) { 
 | 
            return R.parse(BaseRes.PARAM); 
 | 
        } 
 | 
        MatSyncParam matSyncParam = new MatSyncParam(); 
 | 
        List<MatSyncParam.MatParam> objects = new ArrayList<>(); 
 | 
        objects.add(param); 
 | 
        matSyncParam.matDetails = objects; 
 | 
        openService.syncMat(matSyncParam); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    @PostMapping("/order/matSync/default/v1") 
 | 
//    @AppAuth(memo = "商品信息同步接口") 
 | 
    public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey, 
 | 
                                      @RequestBody(required = false) MatSyncParam param, 
 | 
                                      HttpServletRequest request) { 
 | 
        auth(appkey, param, request); 
 | 
        if (Cools.isEmpty(param)) { 
 | 
            return R.parse(BaseRes.PARAM); 
 | 
        } 
 | 
        openService.syncMat(param); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    /****************************************************************************/ 
 | 
    /********************************* 打包上线 **********************************/ 
 | 
    /****************************************************************************/ 
 | 
  
 | 
//    @PostMapping("/order/pakin/new/package/v1") 
 | 
//    @AppAuth(memo = "打包上线接口") 
 | 
//    public synchronized R pakinOrderPackage(@RequestHeader(required = false) String appkey, 
 | 
//                                            @RequestBody(required = false) PackParam param, 
 | 
//                                            HttpServletRequest request) { 
 | 
//        auth(appkey, param, request); 
 | 
//        if (Cools.isEmpty(param)) { 
 | 
//            return R.parse(BaseRes.PARAM); 
 | 
//        } 
 | 
//        openService.packageUp(param); 
 | 
//        return R.ok(); 
 | 
//    } 
 | 
  
 | 
    /** 
 | 
     * 添加入库单 
 | 
     */ 
 | 
    @PostMapping("/order/pakin/default/v1") 
 | 
    public synchronized R pakinOrderCreate(@RequestHeader(required = false) String appkey, 
 | 
                                           @RequestBody OpenOrderPakinParam param, 
 | 
                                           HttpServletRequest request) { 
 | 
        auth(appkey, param, request); 
 | 
        if (Cools.isEmpty(param)) { 
 | 
            return R.parse(BaseRes.PARAM); 
 | 
        } 
 | 
        if (Cools.isEmpty(param.getOrderNo())) { 
 | 
            return R.error("单据编号[orderNo]不能为空"); 
 | 
        } 
 | 
        if (Cools.isEmpty(param.getOrderType())) { 
 | 
            return R.error("单据类型[orderType]不能为空"); 
 | 
        } 
 | 
        if (Cools.isEmpty(param.getOrderDetails())) { 
 | 
            return R.error("单据明细[orderDetails]不能为空"); 
 | 
        } 
 | 
        openService.pakinOrderCreate(param); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 入库单回写 
 | 
     */ 
 | 
//    @PostMapping("/order/pakin/complete/default/v1") 
 | 
    public synchronized R orderPakinComplete(@RequestHeader(required = false) String appkey, 
 | 
                                             @RequestBody(required = false) OpenOrderCompleteParam param, 
 | 
                                             HttpServletRequest request) { 
 | 
        auth(appkey, param, request); 
 | 
        return R.ok().add(openService.pakinOrderComplete(param)); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 添加出库单 
 | 
     */ 
 | 
    @PostMapping("/order/pakout/default/v1") 
 | 
    @AppAuth(memo = "添加订单出库") 
 | 
    public synchronized R pakoutOrderCreate(@RequestHeader(required = false) String appkey, 
 | 
                                            @RequestBody OpenOrderPakoutParam param, 
 | 
                                            HttpServletRequest request) { 
 | 
        auth(appkey, param, request); 
 | 
        if (Cools.isEmpty(param)) { 
 | 
            return R.parse(BaseRes.PARAM); 
 | 
        } 
 | 
        if (Cools.isEmpty(param.getOrderNo())) { 
 | 
            return R.error("单据编号[orderNo]不能为空"); 
 | 
        } 
 | 
        if (Cools.isEmpty(param.getOrderType())) { 
 | 
            return R.error("单据类型[orderType]不能为空"); 
 | 
        } 
 | 
        if (Cools.isEmpty(param.getOrderDetails())) { 
 | 
            return R.error("单据明细[orderDetails]不能为空"); 
 | 
        } 
 | 
        openService.pakoutOrderCreate(param); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 出库单回写 
 | 
     */ 
 | 
//    @PostMapping("/order/pakout/complete/default/v1") 
 | 
    public synchronized R orderPakoutComplete(@RequestHeader(required = false) String appkey, 
 | 
                                              @RequestBody(required = false) OpenOrderCompleteParam param, 
 | 
                                              HttpServletRequest request) { 
 | 
        auth(appkey, param, request); 
 | 
        return R.ok().add(openService.pakoutOrderComplete(param)); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 库存统计 
 | 
     */ 
 | 
    @RequestMapping("/stock/default/v1") 
 | 
    public R queryStock(@RequestHeader(required = false) String appkey, 
 | 
                        HttpServletRequest request) { 
 | 
        auth(appkey, null, request); 
 | 
        return R.ok().add(openService.queryStock()); 
 | 
    } 
 | 
  
 | 
    private void auth(String appkey, Object obj, HttpServletRequest request) { 
 | 
        log.info("{}接口被访问;appkey:{};请求数据:{}", "open/sensorType/list/auth/v1", appkey, JSON.toJSONString(obj)); 
 | 
        request.setAttribute("cache", obj); 
 | 
        if (!auth) { 
 | 
            return; 
 | 
        } 
 | 
        if (Cools.isEmpty(appkey)) { 
 | 
            throw new CoolException("认证失败,请确认appkey无误!"); 
 | 
        } 
 | 
        if (!APP_KEY_LIST.contains(appkey)) { 
 | 
            throw new CoolException("认证失败,请确认appkey无误!"); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
        // 1 
 | 
        System.out.println("======================================"); 
 | 
        OpenOrderPakinParam param = new OpenOrderPakinParam(); 
 | 
        param.setOrderNo(String.valueOf(new SnowflakeIdWorker().nextId())); 
 | 
        param.setOrderType("打包上线单"); 
 | 
        param.setOrderTime(DateUtils.convert(new Date())); 
 | 
        List<DetlDto> orderDetails = new ArrayList<>(); 
 | 
        param.setOrderDetails(orderDetails); 
 | 
        for (int i = 0; i < 3; i++) { 
 | 
            DetlDto detlDto = new DetlDto(); 
 | 
            switch (i) { 
 | 
                case 0: 
 | 
                    detlDto.setMatnr("MDH020030530"); 
 | 
                    detlDto.setBatch("500"); 
 | 
                    detlDto.setAnfme(18.0); 
 | 
                    break; 
 | 
                case 1: 
 | 
                    detlDto.setMatnr("MDH020016416"); 
 | 
                    detlDto.setBatch("500"); 
 | 
                    detlDto.setAnfme(32.0); 
 | 
                    break; 
 | 
                case 2: 
 | 
                    detlDto.setMatnr("LSH90152025"); 
 | 
                    detlDto.setAnfme(50.0); 
 | 
                    break; 
 | 
                default: 
 | 
                    break; 
 | 
            } 
 | 
            orderDetails.add(detlDto); 
 | 
        } 
 | 
        System.out.println(JSON.toJSONString(param)); 
 | 
        // 2 
 | 
        System.out.println("======================================"); 
 | 
        OpenOrderCompleteParam param1 = new OpenOrderCompleteParam(); 
 | 
        param1.setOrderNo("963001846497017856"); 
 | 
        System.out.println(JSON.toJSONString(param1)); 
 | 
    } 
 | 
  
 | 
} 
 |