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.core.common.Cools;
|
import com.zy.asrs.entity.BasStation;
|
import com.zy.asrs.entity.dto.*;
|
import com.zy.asrs.enums.RedisKeyType;
|
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 lombok.Synchronized;
|
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;
|
|
//WMS任务查询接口
|
@Scheduled(cron = "0/3 * * * * ? ")
|
public synchronized void taskQuery() {
|
Config wmsTaskQueryUrlConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "wmsTaskQueryUrl"));
|
if (wmsTaskQueryUrlConfig == null) {
|
return;
|
}
|
|
String wmsTaskQueryUrl = wmsTaskQueryUrlConfig.getValue();
|
|
String response = null;
|
try {
|
HashMap<String, Object> requestParam = new HashMap<>();
|
|
List<BasStation> basStations = basStationService.selectList(new EntityWrapper<BasStation>().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<TvWrkDetlDto> 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();
|
}
|
}
|
|
//WMS入库任务查询接口
|
@Scheduled(cron = "0/3 * * * * ? ")
|
public synchronized void inTaskQuery() {
|
Config wmsCombQueryUrlConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "wmsCombQueryUrl"));
|
if (wmsCombQueryUrlConfig == null) {
|
return;
|
}
|
|
String wmsCombQueryUrl = wmsCombQueryUrlConfig.getValue();
|
|
String response = null;
|
try {
|
HashMap<String, Object> requestParam = new HashMap<>();
|
|
List<BasStation> basStations = basStationService.selectList(new EntityWrapper<BasStation>().eq("in_enable", "Y"));
|
for (BasStation basStation : basStations) {
|
WcsStationDto wcsStationDto = stationUtils.stationMap.get(basStation.getStationId());
|
if (wcsStationDto == null) {
|
continue;
|
}
|
|
if (wcsStationDto.getAuto() != 1
|
|| wcsStationDto.getLoading() != 1
|
) {
|
continue;
|
}
|
|
if (Cools.isEmpty(wcsStationDto.getBarcode())) {
|
continue;
|
}
|
|
requestParam.put("barcode", wcsStationDto.getBarcode());
|
response = new HttpHandler.Builder()
|
.setUri(wmsCombQueryUrl)
|
.setJson(JSON.toJSONString(requestParam))
|
.setTimeout(30, TimeUnit.SECONDS)
|
.build()
|
.doPost();
|
if (response != null) {
|
JSONObject jsonObject = JSON.parseObject(response);
|
JSONObject data = jsonObject.getJSONObject("data");
|
|
List<TvWrkDetlDto> list = new ArrayList<>();
|
for (Object o : data.getJSONArray("combDetls")) {
|
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(1);
|
wcsStationDto.setWrkDetls(list);
|
stationUtils.stationMap.put(wcsStationDto.getStationId(), wcsStationDto);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
//WMS库存数据查询
|
@Synchronized
|
@Scheduled(cron = "0/3 * * * * ? ")
|
public void locQuery() {
|
Config wmsUrlConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "wmsLocQueryUrl"));
|
if (wmsUrlConfig == null) {
|
return;
|
}
|
|
String wmsUrl = wmsUrlConfig.getValue();
|
|
String response = null;
|
try {
|
response = new HttpHandler.Builder()
|
.setUri(wmsUrl)
|
.setTimeout(30, TimeUnit.SECONDS)
|
.build()
|
.doGet();
|
if (response != null) {
|
JSONObject jsonObject = JSON.parseObject(response);
|
JSONObject data = jsonObject.getJSONObject("data");
|
|
TvLocDataDto tvLocDataDto = new TvLocDataDto();
|
tvLocDataDto.setEmptyCount(data.getInteger("emptyCount"));
|
tvLocDataDto.setDisableCount(data.getInteger("disableCount"));
|
tvLocDataDto.setTotal(data.getInteger("total"));
|
tvLocDataDto.setStockCount(data.getInteger("stockCount"));
|
tvLocDataDto.setUsedPr(data.getDouble("usedPr"));
|
tvLocDataDto.setUsed(data.getInteger("used"));
|
|
List<CommonNvDto> pieList = new ArrayList<>();
|
JSONArray list = data.getJSONArray("pie");
|
for (Object o : list) {
|
CommonNvDto commonNvDto = JSON.parseObject(JSON.toJSONString(o), CommonNvDto.class);
|
pieList.add(commonNvDto);
|
}
|
|
tvLocDataDto.setPie(pieList);
|
|
redisUtil.set(RedisKeyType.TV_LOC_DATA_DTO.key, JSON.toJSONString(tvLocDataDto));
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
//WMS入出库折线图
|
@Synchronized
|
@Scheduled(cron = "0/3 * * * * ? ")
|
public void inOutLineCharts() {
|
Config wmsUrlConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "wmsInOutLineChartsQueryUrl"));
|
if (wmsUrlConfig == null) {
|
return;
|
}
|
|
String wmsUrl = wmsUrlConfig.getValue();
|
|
String response = null;
|
try {
|
response = new HttpHandler.Builder()
|
.setUri(wmsUrl)
|
.setTimeout(30, TimeUnit.SECONDS)
|
.build()
|
.doGet();
|
if (response != null) {
|
JSONObject jsonObject = JSON.parseObject(response);
|
JSONObject data = jsonObject.getJSONObject("data");
|
|
redisUtil.set(RedisKeyType.TV_LINE_CHARTS.key, JSON.toJSONString(data));
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
//WMS库存数据统计
|
@Synchronized
|
@Scheduled(cron = "0/3 * * * * ? ")
|
public void locDetlStatistics() {
|
Config wmsUrlConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "wmsLocDetlStatisticsQueryUrl"));
|
if (wmsUrlConfig == null) {
|
return;
|
}
|
|
String wmsUrl = wmsUrlConfig.getValue();
|
|
String response = null;
|
try {
|
response = new HttpHandler.Builder()
|
.setUri(wmsUrl)
|
.setTimeout(30, TimeUnit.SECONDS)
|
.build()
|
.doGet();
|
if (response != null) {
|
JSONObject jsonObject = JSON.parseObject(response);
|
JSONObject data = jsonObject.getJSONObject("data");
|
|
List<TvLocDetlStatisticsDto> list = new ArrayList<>();
|
JSONArray records = data.getJSONArray("records");
|
for (Object record : records) {
|
TvLocDetlStatisticsDto tvLocDetlStatisticsDto = JSON.parseObject(JSON.toJSONString(record), TvLocDetlStatisticsDto.class);
|
list.add(tvLocDetlStatisticsDto);
|
}
|
|
redisUtil.set(RedisKeyType.TV_LOC_DETL_STATISTICS.key, JSON.toJSONString(list));
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|