package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.utils.Utils; import com.zy.common.model.StartupDto; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Date; /** * @author pang.jiabao * @description 下位WCS系统相关定时任务处理 * @createDate 2026/3/4 15:23 */ @Component @Slf4j public class WcsSchedulerHandler { @Value("${wcs.URL}") private String wcsAddress; @Value("${wcs.createOutTask}") private String createOutTask; @Value("${wcs.createLocMoveTask}") private String createLocMoveTask; @Resource private ApiLogService apiLogService; @Resource private WrkMastService wrkMastService; public void outboundTaskDispatch(WrkMast wrkMast) { StartupDto startupDto = new StartupDto(); startupDto.setTaskNo(wrkMast.getWrkNo()); startupDto.setTaskPri(wrkMast.getIoPri()); String nameSpaces = "出库任务派发"; String path = createOutTask; if (wrkMast.getIoType() == 11 ) { path = createLocMoveTask; nameSpaces = "移库任务派发"; startupDto.setSourceLocNo(Utils.locToLocNo(wrkMast.getSourceLocNo())); startupDto.setLocNo(Utils.locToLocNo(wrkMast.getLocNo())); } else { startupDto.setStaNo(Integer.valueOf(wrkMast.getStaNo())); startupDto.setLocNo(Utils.locToLocNo(wrkMast.getSourceLocNo())); } String response = ""; boolean success = false; String errorMsg = null; String requestJson = JSON.toJSONString(startupDto); String url = wcsAddress + "/" + path; try { response = new HttpHandler.Builder() .setUri(wcsAddress) .setPath(path) .setJson(requestJson) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) { wrkMast.setWrkSts(12L); wrkMast.setCrnStrTime(new Date()); wrkMastService.updateById(wrkMast); success = true; } else { errorMsg = response; log.error(nameSpaces + "调用外部接口失败,url:{},request:{},response:{}", url, requestJson, response); } } catch (Exception e) { errorMsg = e.getMessage(); log.error(nameSpaces + "调用外部接口异常,url:{},request:{},response:{}", url, requestJson, response, e); } finally { try { apiLogService.save( nameSpaces, url, null, "127.0.0.1", requestJson, response, success, errorMsg ); } catch (Exception e) { log.error(nameSpaces + "保存接口日志失败", e); } } } }