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.*; import com.zy.asrs.entity.param.SingleMountUnstackingCompleteParam; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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 2023.07.25 * 徐工汉云..............以下.............上饶江铜.............拆垛信息上传 */ @Slf4j @Service @Transactional public class ReportToDismantleTheStackHandler extends AbstractHandler { @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlSingleService wrkDetlSingleService; @Autowired private WrkDetlService wrkDetlService; @Autowired private StaDescService staDescService; @Autowired private ApiLogService apiLogService; @Autowired private BasDevpService basDevpService; @Value("${srHangJia.url}") private String erpUrl; @Value("${srHangJia.reportOutPath}") private String reportOutPath; public ReturnT start(int staNo) { try { Date now = new Date(); BasDevp basDevp = basDevpService.selectById(staNo); Integer staOther = getStaOther(staNo); Integer staEnd = getStaEnd(staNo); if (staOther==0) return FAIL; BasDevp basDevpOther = basDevpService.selectById(staOther); if (Cools.isEmpty(basDevpOther) || basDevpOther.getReportSign()==1){ return FAIL; } BasDevp basDevpEnd = basDevpService.selectById(staEnd); if (!basDevpEnd.getLoading().equals("Y") || !basDevpEnd.getAutoing().equals("Y") || !basDevpEnd.getInEnable().equals("Y")){ return FAIL; } if ((basDevpEnd.getWrkNo()<9900 && basDevpEnd.getWrkNo()!=0 ) || basDevpEnd.getWrkNo()>10000 || basDevpEnd.getReportSign()!=0){ return FAIL; } WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper().eq("io_type", 202).eq("source_sta_no", staEnd).eq("wrk_sts",51L)); if (!Cools.isEmpty(wrkMast1)) return FAIL; if (!Cools.isEmpty(basDevp) && basDevp.getAutoing().equals("Y") && basDevp.getWrkNo()!=0){ //上传前工作号跟电控约定为9992中控(桁架):码垛完成下发入库信息(你可以自定义) WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper().eq("wrk_no", basDevp.getWrkNo())); if (Cools.isEmpty(wrkMast) || Cools.isEmpty(wrkMast.getSheetNo()) || !wrkMast.getSheetNo().equals("0")){ return FAIL; } List wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); if (Cools.isEmpty(wrkDetls) || wrkDetls.size()==0){ return FAIL; } List wrkDetlList = new ArrayList<>(); String signOne = ""; String signTwo = ""; for (WrkDetl wrkDetl:wrkDetls){ if (wrkDetl.getOrigin().equals("1") && signOne.equals("")){ wrkDetlList.add(wrkDetl); signOne = "1"; } else if (wrkDetl.getOrigin().equals("2") && signTwo.equals("")){ wrkDetlList.add(wrkDetl); signTwo = "2"; } if (!signOne.equals("") && !signTwo.equals("")){ break; } } SingleMountUnstackingCompleteParam singleMountUnstackingCompleteParam = new SingleMountUnstackingCompleteParam(wrkMast,wrkDetlList); singleMountUnstackingCompleteParam.setStaStart(staNo); singleMountUnstackingCompleteParam.setStaEnd(staEnd); // result = null; // if (true){ // return FAIL; // } log.error("上传机械臂时,站点状态:"+JSON.toJSONString(basDevpEnd)); log.error("上传机械臂时,工作号:"+JSON.toJSONString(wrkMast)); ReturnT result = postMesData(reportOutPath,singleMountUnstackingCompleteParam); // System.out.println(result); // if (true){ // for (WrkDetl wrkDetl:wrkDetls){ // WrkDetlSingle wrkDetlSingle = new WrkDetlSingle(); // wrkDetlSingle.sync(wrkDetl); // wrkDetlSingle.setWrkNo(wrkDetl.getWrkNo().longValue()); // wrkDetlSingleService.insert(wrkDetlSingle); // } // wrkMast.setSheetNo("1"); // wrkMastService.updateById(wrkMast); // basDevp.setReportSign(1); // basDevpService.updateById(basDevp); // basDevpEnd.setReportSign(1); // basDevpService.updateById(basDevp); // return SUCCESS; // } if (result.getCode()==200){ Date nowOne = new Date(); Date nowTwo = now; for (WrkDetl wrkDetl:wrkDetls){ if (wrkDetl.getOrigin().equals("1")){ now = nowOne; } else if (wrkDetl.getOrigin().equals("2")){ now = nowTwo; } WrkDetlSingle wrkDetlSingle = new WrkDetlSingle(); wrkDetlSingle.sync(wrkDetl); wrkDetlSingle.setWrkNo(wrkDetl.getWrkNo().longValue()); wrkDetlSingle.setIoTime(now); wrkDetlSingleService.insert(wrkDetlSingle); } wrkMast.setSheetNo("1"); wrkMastService.updateById(wrkMast); basDevp.setReportSign(1); basDevpService.updateById(basDevp); basDevpEnd.setReportSign(1); basDevpService.updateById(basDevpEnd); return SUCCESS; }else { log.error("拆垛信息上传失败"); } } }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("拆垛信息上传请求接口失败!!!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( "上报桁架系统", 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; } } public Integer getStaEnd(Integer staNo){ switch (staNo){ case 118: case 119: return 131; case 120: case 121: return 135; default: return 0; } } }