package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.escalationParam.StaEscalationParam; import com.zy.common.utils.HttpHandler; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by Monkey D. Luffy on 2024.07.11 * 亳州煜星..............以下.............亳州煜星.............2楼翻转倒料信息上传处理失败 */ @Slf4j @Service @Transactional public class StaEscalationHandler extends AbstractHandler { @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlService wrkDetlService; @Autowired private StaDescService staDescService; @Autowired private ApiLogService apiLogService; @Autowired private BasDevpService basDevpService; // @Value("${srHangJia.url}") private String erpUrl = "10.10.11.100:8580"; // @Value("${srHangJia.reportOutPath}") private String reportOutPath = "mes/wms-service/inStorageEndReport"; public ReturnT start(int staNo) { try{ Date now = new Date(); BasDevp basDevp = basDevpService.selectById(staNo); if (Cools.isEmpty(basDevp) || basDevp.getReportSign()==1){ return FAIL; } SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); StaProtocol staProtocol = devpThread.getStation().get(staNo); if (staProtocol == null) { return FAIL; } else { staProtocol = staProtocol.clone(); } if (!Cools.isEmpty(basDevp) && basDevp.getAutoing().equals("Y") && basDevp.getWrkNo()!=0){ //上传前工作号跟电控约定为9992中控(桁架):码垛完成下发入库信息(你可以自定义) if (staProtocol.isAutoing() && staProtocol.getWorkNo()!=0){ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper().eq("wrk_no", staProtocol.getWorkNo())); if (Cools.isEmpty(wrkMast)) return FAIL; if (wrkMast.getSheetNo().equals("2")) return FAIL; if (wrkMast.getSheetNo()!=null && wrkMast.getSheetNo()=="2") return FAIL; List wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); WrkDetl wrkDetl = null; if (Cools.isEmpty(wrkDetls) || wrkDetls.isEmpty()){ // return FAIL; wrkDetl = new WrkDetl(); wrkDetl.setMatnr("1"); wrkDetl.setBatch("1"); wrkDetl.setModel("1"); wrkDetl.setSpecs("1"); wrkDetl.setWeight(1.0); } else { wrkDetl = wrkDetls.get(0); } log.error("2楼翻转倒料信息上传时,站点状态:"+JSON.toJSONString(staProtocol)); log.error("2楼翻转倒料信息上传时,工作号:"+JSON.toJSONString(wrkMast)); StaEscalationParam staEscalationParam = new StaEscalationParam(); staEscalationParam.setDevNo(staNo); staEscalationParam.setIoType(wrkMast.getIoTypeMes$()); staEscalationParam.setMatnr(wrkDetl.getMatnr()); staEscalationParam.setBatch(wrkDetl.getBatch()); staEscalationParam.setOrderNo(wrkDetl.getSpecs()); staEscalationParam.setTaskNo(wrkDetl.getModel()); staEscalationParam.setWeight(wrkDetl.getWeight()); ReturnT result = postMesData(reportOutPath,staEscalationParam); if (result.getCode()==200){ wrkMast.setSheetNo("2"); wrkMastService.updateById(wrkMast); basDevp.setReportSign(1); basDevpService.updateById(basDevp); return SUCCESS; }else { log.error("2楼翻转倒料信息上传失败"); } } } }catch (Exception e){ log.error("异常!!!"+e); return FAIL; } return FAIL; } private ReturnT postMesData(String erpPath,Object combParam){ if(combParam != null){ String response = ""; boolean success = false; try { response = new HttpHandler.Builder() .setUri(erpUrl) .setPath(erpPath) .setJson(JSON.toJSONString(combParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code")==200) { success = true; } else { log.error("2楼翻转倒料信息上传请求接口失败!!!url:{};request:{};response:{}"+erpUrl+erpPath, JSON.toJSONString(combParam), response); throw new CoolException("上报erp系统失败"); } } catch (Exception e) { log.error("fail", e); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } finally { try { // 保存接口日志 apiLogService.save( "上报MES系统", erpUrl + erpPath, null, erpUrl, JSON.toJSONString(combParam), response, success ); } catch (Exception e) { log.error("", e); } } } return SUCCESS; } public Integer getStaOther(Integer staNo){ switch (staNo){ case 118: return 119; case 119: return 118; case 120: return 121; case 121: return 120; default: return 0; } } }