package com.zy.asrs.timer; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.entity.BasStation; import com.zy.asrs.entity.dto.TvWrkDetlDto; import com.zy.asrs.entity.dto.WcsStationDto; import com.zy.asrs.service.BasStationService; import com.zy.asrs.utils.StationUtils; import com.zy.common.utils.HttpHandler; import com.zy.common.utils.RedisUtil; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.concurrent.TimeUnit; @Component public class WmsDataTimer { @Autowired private ConfigService configService; @Autowired private BasStationService basStationService; @Autowired private StationUtils stationUtils; @Autowired private RedisUtil redisUtil; @Scheduled(cron = "0/3 * * * * ? ") public synchronized void execute() { Config wmsTaskQueryUrlConfig = configService.selectOne(new EntityWrapper().eq("code", "wmsTaskQueryUrl")); if (wmsTaskQueryUrlConfig == null) { return; } String wmsTaskQueryUrl = wmsTaskQueryUrlConfig.getValue(); String response = null; try { HashMap requestParam = new HashMap<>(); List basStations = basStationService.selectList(new EntityWrapper().eq("out_enable", "Y")); for (BasStation basStation : basStations) { WcsStationDto wcsStationDto = stationUtils.stationMap.get(basStation.getStationId()); if (wcsStationDto == null) { continue; } if (wcsStationDto.getAuto() != 1 || wcsStationDto.getLoading() != 1 || wcsStationDto.getTaskNo().equals("0") ) { continue; } requestParam.put("taskNo", wcsStationDto.getTaskNo()); response = new HttpHandler.Builder() .setUri(wmsTaskQueryUrl) .setJson(JSON.toJSONString(requestParam)) .setTimeout(30, TimeUnit.SECONDS) .build() .doPost(); if (response != null) { JSONObject jsonObject = JSON.parseObject(response); JSONObject data = jsonObject.getJSONObject("data"); List list = new ArrayList<>(); for (Object o : data.getJSONArray("wrkDetls")) { JSONObject wrkDetl = (JSONObject) o; TvWrkDetlDto tvWrkDetlDto = new TvWrkDetlDto(); list.add(tvWrkDetlDto); tvWrkDetlDto.setMatnr(wrkDetl.getString("matnr")); tvWrkDetlDto.setMaktx(wrkDetl.getString("maktx")); tvWrkDetlDto.setSpecs(wrkDetl.getString("specs")); tvWrkDetlDto.setBatch(wrkDetl.getString("batch")); tvWrkDetlDto.setAnfme(wrkDetl.getDouble("anfme")); } wcsStationDto.setIoType(data.getInteger("ioType")); wcsStationDto.setWrkDetls(list); stationUtils.stationMap.put(wcsStationDto.getStationId(), wcsStationDto); } } } catch (Exception e) { e.printStackTrace(); } } }