package com.zy.asrs.task; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.param.GwmsGenerateInventoryDto; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.LocDetlService; import com.zy.common.constant.MesConstant; import com.zy.common.utils.HttpHandler; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; 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.Map; /** * */ @Component @Slf4j public class SyncLocDetlScheduler { @Autowired private LocDetlService locDetlService; @Autowired private ApiLogService apiLogService; @Autowired private ConfigService configService; @Scheduled(fixedRate = 3000) @Async("orderThreadPool") public void sync() { Config config = configService.selectOne(new EntityWrapper().eq("code", "sync")); if (config != null && config.getValue() != null && (config.getValue().equals("true") || config.getValue().equals("1"))) { List locDetls = locDetlService.selectList(new EntityWrapper<>()); GwmsGenerateInventoryDto gwmsGenerateInventoryDto = new GwmsGenerateInventoryDto(); gwmsGenerateInventoryDto.setWarehouseType(4); List matLists = new ArrayList<>(); for (LocDetl wrkDetl : locDetls) { gwmsGenerateInventoryDto.setBarcode(wrkDetl.getBarcode()); //gwmsGenerateInventoryDto.setPalletizingNo(wrkMast.getStaNo()); boolean flag = true; for (GwmsGenerateInventoryDto.MatList matList : matLists) { if (matList.getPackageGroupNo().equals(wrkDetl.getBrand())) { matList.getRolls().add(new GwmsGenerateInventoryDto.Rolls(wrkDetl.getModel(), wrkDetl.getUnit(), wrkDetl.getMaktx(), wrkDetl.getLength(), Integer.parseInt(wrkDetl.getSpecs()), wrkDetl.getWeight(), wrkDetl.getVolume(), wrkDetl.getManuDate())); flag = false; break; } } if (flag) { GwmsGenerateInventoryDto.MatList matList = new GwmsGenerateInventoryDto.MatList(); matList.setBoxPos(wrkDetl.getOrigin()); matList.setPackageGroupNo(wrkDetl.getBrand()); matList.setOutOrIn("in"); matList.setStockType("成品入库"); matList.setBoxType(wrkDetl.getColor()); matList.setRollType(wrkDetl.getManu()); matList.setWideInWidth(wrkDetl.getItemNum()); matList.setThickness(wrkDetl.getSku()); List rollsList = new ArrayList<>(); GwmsGenerateInventoryDto.Rolls roll = new GwmsGenerateInventoryDto.Rolls(wrkDetl.getModel(), wrkDetl.getUnit(), wrkDetl.getMaktx(), wrkDetl.getLength(), Integer.parseInt(wrkDetl.getSpecs()), wrkDetl.getWeight(), wrkDetl.getVolume(), wrkDetl.getManuDate()); rollsList.add(roll); matList.setRolls(rollsList); matLists.add(matList); } } gwmsGenerateInventoryDto.setMatList(matLists); boolean success = false; // 获取请求头 Map headers = new HashMap<>(); headers.put("Content-Type", "application/json;charset=UTF-8"); // 构造请求体 String body = JSON.toJSONString(gwmsGenerateInventoryDto); String response = ""; try { response = new HttpHandler.Builder() .setUri(MesConstant.MES_CC_IP_PORT) .setPath(MesConstant.MES_CC_KCTB_URL) .setHeaders(headers) .setJson(body) .build() .doGet(); if (!Cools.isEmpty(response)) { JSONObject jsonObject1 = JSONObject.parseObject(response); int code = (int) jsonObject1.get("code"); boolean state = jsonObject1.getBoolean("state"); if (code == 200 && state) { success = true; } } else { log.error("同步期初数据失败!!!url:{};request:{};response:{}", MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_KCTB_URL, body, response); } } catch (Exception e) { log.error("同步期初数据异常:{}", e.getMessage()); } finally { config.setValue("0"); configService.updateById(config); try { // 保存接口日志 apiLogService.save( "同步期初数据", MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_KCTB_URL, null, "127.0.0.1", null, response, success ); } catch (Exception e) { log.error("", e); } } } } }