package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.core.exception.CoolException; import com.zy.asrs.controller.requestParam.StationRequestParam; import com.zy.asrs.controller.vo.ApplyInDto; import com.zy.asrs.controller.vo.ApplyInRepsonseDto; import com.zy.asrs.controller.vo.OpenBusSubmitParam; import com.zy.asrs.controller.vo.StationStatus; import com.zy.asrs.service.CtuMainService; import com.zy.asrs.service.WmsMainService; import com.zy.common.utils.HttpHandler; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; /** * 立体仓库WCS系统主流程业务 * Created by vincent on 2020/8/6 */ @Slf4j @Service @Transactional @Data public class WmsMainServiceImpl implements WmsMainService { @Value("${ctu.url}") private String wmsUrl; @Value("${ctu.sendTask}") private String apply; private String code ="code"; private String dataCode ="data"; private Integer codeValue =200; private Integer timeout = 1200; /** * 检查站点状态 * * @param applyInDto 站点编号 * @return 库位信息 */ public ApplyInRepsonseDto getLocOfWms(ApplyInDto applyInDto) { String response = ""; try { response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath(apply) .setTimeout(timeout, TimeUnit.SECONDS) .setJson(JSON.toJSONString(applyInDto)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger(code).equals(codeValue)) { log.info("WMS返回数据:{}", response); JSONArray data = jsonObject.getJSONArray(dataCode); return JSONObject.parseObject(data.toString(), ApplyInRepsonseDto.class); } else { log.error("调用下发任务接口报错,响应码:{},响应内容:{}", jsonObject.getInteger(code), response); throw new CoolException("调用下发任务接口报错,响应码:" + jsonObject.getInteger(code)); } } catch (CoolException e) { log.error("调用站点状态接口异常", e); throw e; } catch (Exception e) { log.error("检查站点状态失败,条码编号:{},站点:{}", applyInDto.getBarcode(),applyInDto.getStaNo(), e); } return null; } }