package com.ld.igds.wms.controller;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.ld.igds.wms.constant.WmsCodeEnum;
|
import com.ld.igds.wms.data.WmsRequest;
|
import com.ld.igds.wms.data.WmsResponse;
|
import com.ld.igds.wms.manager.WmsManager;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import java.util.concurrent.Callable;
|
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.Executors;
|
|
/**
|
* 武汉黄陂军粮-立体库接口
|
*
|
* @author czt
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("api/wms/v1")
|
public class WmsController {
|
|
@Autowired
|
private WmsManager wmsManager;
|
|
/**
|
* 业务入口
|
* @param request
|
* @return
|
*/
|
@ResponseBody
|
@RequestMapping("/gateway")
|
public WmsResponse gateway(@RequestBody WmsRequest<JSONObject> request) {
|
|
log.info("-----立体库-----收到的消息={}-----", request);
|
|
//判断参数
|
if (null == request) {
|
return new WmsResponse(WmsCodeEnum.WMS_CODE_1002.getCode(), WmsCodeEnum.WMS_CODE_1002.getMsg());
|
}
|
|
//判断接口编码
|
if (null == request.getInterfaceId()) {
|
return new WmsResponse(WmsCodeEnum.WMS_CODE_1002.getCode(), WmsCodeEnum.WMS_CODE_1002.getMsg());
|
}
|
|
//判断数据
|
if (null == request.getData()) {
|
return new WmsResponse(WmsCodeEnum.WMS_CODE_1002.getCode(), WmsCodeEnum.WMS_CODE_1002.getMsg());
|
}
|
|
WmsResponse result;
|
try{
|
//异步处理,子线程解析事件
|
final ExecutorService exec = Executors.newFixedThreadPool(1);
|
Callable<String> call = new Callable<String>() {
|
public String call() throws Exception {
|
|
//执行业务操作
|
WmsResponse wmsResponse = wmsManager.execute(request);
|
return wmsResponse.getMsg();
|
}
|
};
|
exec.submit(call);
|
exec.shutdown();
|
result = new WmsResponse(WmsCodeEnum.WMS_CODE_0000.getCode(), WmsCodeEnum.WMS_CODE_0000.getMsg());
|
|
}catch (Exception e){
|
|
log.error("----立体库信息解析异常={}-----", e.getLocalizedMessage());
|
|
//后端异常
|
result = new WmsResponse(WmsCodeEnum.WMS_CODE_1111.getCode(), WmsCodeEnum.WMS_CODE_1111.getMsg());
|
}
|
return result;
|
}
|
}
|