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 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 call = new Callable() { 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; } }