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.entity.WrkMastSta; import com.zy.asrs.entity.param.BalconyWrkMastParam; import com.zy.asrs.entity.param.TrussCombParam; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.PostMesDataUtils; 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.Date; import java.util.List; /** * Created by Monkey D. Luffy on 2023.09.17 * 徐工汉云..............以下.............上饶江铜.............退库拆码垛 */ @Slf4j @Service @Transactional public class OneLouHangJiaHandler extends AbstractHandler { @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlService wrkDetlService; @Autowired private CommonService commonService; @Autowired private StaDescService staDescService; @Autowired private ApiLogService apiLogService; @Autowired private BasDevpService basDevpService; @Autowired private WrkMastStaService wrkMastStaService; @Value("${srHangJia.url}") private String srHangJiaUrl; @Value("${srHangJia.reportInPath}") private String reportOutPath; public ReturnT start(int staNo,int staNoEnd) { try { Integer staOther = getStaOther(staNoEnd); BasDevp basDevp = basDevpService.selectById(staNo); if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0 || !basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y") || !basDevp.getLoadingSuper().equals("Y") || !basDevp.getInEnable().equals("Y")){ return FAIL; } BasDevp basDevp131 = basDevpService.selectById(131); if (Cools.isEmpty(basDevp131) || !basDevp131.getAutoing().equals("Y") || !( basDevp131.getWrkNo()>9899 && basDevp131.getWrkNo()<10000) || basDevp131.getReportSign()!=0){ return FAIL; } WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper() .eq("wrk_no", basDevp.getWrkNo()).eq("source_sta_no",145)); if (Cools.isEmpty(wrkMast) || wrkMast.getIoType()!=1 || wrkMast.getWrkSts()!=2){ return FAIL; } List wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); if (Cools.isEmpty(wrkDetls) || wrkDetls.size()==0){ return FAIL; } WrkDetl wrkDetl = wrkDetls.get(0); if (Cools.isEmpty(wrkDetl) || Cools.isEmpty(wrkDetl.getOrigin()) || Cools.isEmpty(wrkDetl.getBatch()) || Cools.isEmpty(wrkDetl.getBrand())){ return FAIL; } BasDevp basDevpEnd = basDevpService.selectById(staNoEnd); if (Cools.isEmpty(basDevpEnd) || !basDevpEnd.getAutoing().equals("Y") || basDevpEnd.getReportSign()!=0 ){ return FAIL; } BasDevp basDevpOther = basDevpService.selectById(staOther); if (Cools.isEmpty(basDevpOther) || basDevpOther.getReportSign()!=0){ return FAIL; } if (basDevpEnd.getLoading().equals("Y") && basDevpEnd.getLoadingSuper().equals("Y") && basDevpEnd.getEmptyMk().equals("Y")){ //生成机械臂任务 TrussCombParam trussCombParam = new TrussCombParam(wrkDetl,staNoEnd); try{ ReturnT success = postMesData(reportOutPath, trussCombParam); if (success.getCode()!=200){ log.error("桁架上位软件退库失败"); return FAIL; }else { wrkMast.setSheetNo("3"); wrkMastService.updateById(wrkMast); basDevp.setReportSign(3); basDevpService.updateById(basDevp); basDevpEnd.setReportSign(3); basDevpService.updateById(basDevpEnd); wrkDetl.setOrigin(trussCombParam.getPalletizingNo2()==118? "2":"1"); wrkDetlService.update(wrkDetl,new EntityWrapper().eq("wrk_no",wrkDetl.getWrkNo())); } return SUCCESS; } catch (Exception e){ log.error("桁架上位软件退库失败"+e); return FAIL; } }else if (!basDevpEnd.getLoading().equals("Y") && !basDevpEnd.getLoadingSuper().equals("Y")){ Thread.sleep(1000); basDevpEnd = basDevpService.selectById(staNoEnd); if (Cools.isEmpty(basDevpEnd) || !basDevpEnd.getAutoing().equals("Y") || basDevpEnd.getReportSign()!=0 || basDevpEnd.getLoading().equals("Y") || basDevpEnd.getLoadingSuper().equals("Y")){ return FAIL; } WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper().eq("wrk_no",staNoEnd + 19999L)); if (Cools.isEmpty(wrkMastSta)){ //生成拆盘任务 WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),staNoEnd); wrkMastSta1.setType(2); //类型 1:非空 2:空板 wrkMastSta1.setWrkType(2); //工作类型 1:取(叠盘) 2:拆盘 3:取放 5:满取 6:满放 wrkMastStaService.insert(wrkMastSta1); } return SUCCESS; } }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(srHangJiaUrl) .setPath(erpPath) .setJson(JSON.toJSONString(combParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("Code").equals(200)) { success = true; } else { log.error("请求接口失败!!!url:{};request:{};response:{}"+srHangJiaUrl+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( "桁架上位软件退库", srHangJiaUrl + erpPath, null, srHangJiaUrl, 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; } } }