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.common.R; import com.core.common.SnowflakeIdWorker; import com.zy.asrs.entity.OrderDetlPakout; import com.zy.asrs.entity.OrderPakout; import com.zy.asrs.entity.param.OrderCargoBookingNoteParam; import com.zy.asrs.entity.param.OrderInspectionRollParam; import com.zy.asrs.entity.param.OrderOutLocBoxCsUtilParam; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.CodeDetectionUtil; import com.zy.asrs.utils.OrderOutBatchUtil; import com.zy.common.constant.MesConstant; import com.zy.common.utils.HttpHandler; 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 2025.11.10 * 徐工汉云..............以下.............上饶江铜.............拆垛完成信息处理 */ @Slf4j @Service public class GroupOrderFormHandler extends AbstractHandler { @Autowired private OrderPakoutService orderPakoutService; @Autowired private OrderDetlPakoutService orderDetlPakoutService; @Autowired private ApiLogService apiLogService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Transactional public ReturnT abandoned(OrderPakout orderPakout) { List orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId()); moveBoth(orderPakout,orderDetls); return SUCCESS; } private void moveBoth(OrderPakout order, List orderDetls){ Date now = new Date(); if (!Cools.isEmpty(orderDetls)) { for (OrderDetlPakout orderDetl : orderDetls) { orderDetl.setUpdateBy(0L); orderDetl.setUpdateTime(now); // orderDetlPakoutService.addToLogTable(orderDetl); orderDetlPakoutService.delete(new EntityWrapper() .eq("id",orderDetl.getId())); } } if (!Cools.isEmpty(order)){ order.setUpdateBy(0L); order.setUpdateTime(now); // orderPakoutService.addToLogTable(order); orderPakoutService.delete(new EntityWrapper() .eq("id",order.getId())); } } @Transactional public ReturnT inspection(OrderPakout orderPakout) { List orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId()); String memo = ""; for (OrderDetlPakout orderDetl : orderDetls) { if (!CodeDetectionUtil.barcodeDetection(orderDetl.getManu(),7)){ if (Cools.isEmpty(memo)){ memo = "无库存"; }else { memo = memo+";无库存"; } continue; } if (Cools.isEmpty(orderDetl.getDanger$()) || orderDetl.getDanger()==1){//合格不需要检验 continue; } OrderInspectionRollParam orderInspectionRollParam = new OrderInspectionRollParam(orderDetl.getModel()); String response = ""; boolean success = false; try { response = new HttpHandler.Builder() .setUri(MesConstant.URL) .setPath(MesConstant.PAKIN_URL) .setJson(JSON.toJSONString(orderInspectionRollParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { if (jsonObject.getBoolean("state")) { String value = jsonObject.getString("value"); if (value.equals("合格")){ orderDetl.setDanger(1); orderDetlPakoutService.updateById(orderDetl); } else if (value.equals(orderDetl.getDanger$())){ if (Cools.isEmpty(memo)){ memo = "查询卷号结果:"+jsonObject.getString("message"); }else { memo = memo+";查询卷号结果:"+jsonObject.getString("message"); } continue; } else { if (Cools.isEmpty(memo)){ memo = "查询卷号结果:"+jsonObject.getString("message"); }else { memo = memo+";查询卷号结果:"+jsonObject.getString("message"); } if (value.equals("不合格")){ orderDetl.setDanger(2); orderDetlPakoutService.updateById(orderDetl); } continue; } } else { if (Cools.isEmpty(memo)){ memo = "查询卷号结果:"+jsonObject.getString("message"); }else { memo = memo+";查询卷号结果:"+jsonObject.getString("message"); } } success = true; } else { if (Cools.isEmpty(memo)){ memo = "查询卷号结果:"+jsonObject.getString("message"); }else { memo = memo+";查询卷号结果:"+jsonObject.getString("message"); } log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(orderInspectionRollParam), response); // throw new CoolException("查询卷号是否合格失败"); } } catch (Exception e) { if (Cools.isEmpty(memo)){ memo = "查询卷号结果:"+"异常"+e.getMessage(); }else { memo = memo+";查询卷号结果:"+"异常"+e.getMessage(); } log.error("fail", e); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg(e.getMessage()); } finally { try { // 保存接口日志 apiLogService.save( "查询卷号是否合格", MesConstant.URL + MesConstant.PAKIN_URL, null, "127.0.0.1", JSON.toJSONString(orderInspectionRollParam), response, success ); } catch (Exception e) { log.error("查询卷号是否合格保存接口日志异常", e); } } } if (Cools.isEmpty(memo)){ return SUCCESS; } orderPakout.setSettle(13L);//检验存在不合格 orderPakout.setMemo(memo); orderPakoutService.updateById(orderPakout); return FAIL; } @Transactional public ReturnT start(OrderPakout orderPakout) { List orderDetlPakoutList = orderDetlPakoutService.selectByOrderId(orderPakout.getId()); if (orderDetlPakoutList.isEmpty()){ orderPakout.setSettle(98L); orderPakout.setMemo("不存在明细!!!"); orderPakoutService.updateById(orderPakout); return FAIL; } List outLocBoxCs = new ArrayList<>(); String orderNo = "ZH" + snowflakeIdWorker.nextId(); for (OrderDetlPakout orderDetl : orderDetlPakoutList) { if (!CodeDetectionUtil.barcodeDetection(orderDetl.getManu(),7)){//无库存 continue; } if (Cools.isEmpty(orderDetl.getDanger$()) || orderDetl.getDanger()!=1){//不合格不出库 continue; } OrderOutLocBoxCsUtilParam outLocBox = new OrderOutLocBoxCsUtilParam(); outLocBox.setBoxNo(orderDetl.getBatch()); outLocBox.setRoll(orderDetl.getModel()); outLocBox.setMemo(orderDetl.getMemo()); outLocBox.setOrderOneNo(orderNo); outLocBox.setCstmrName(orderPakout.getCstmrName()); outLocBox.setDanger(orderDetl.getDanger$()); outLocBoxCs.add(outLocBox); } if (outLocBoxCs.isEmpty()){ orderPakout.setSettle(98L); orderPakout.setMemo("不存在合格的物料明细!!!"); orderPakoutService.updateById(orderPakout); return FAIL; } OrderOutBatchUtil orderOutBatchUtil = new OrderOutBatchUtil(orderNo,orderPakout.getCstmrName(),"","MES下发组货单","组货单",true,orderPakout.getItemName()); R r = orderOutBatchUtil.outGroupOrderForm(outLocBoxCs); int code = Integer.parseInt(String.valueOf(r.get("code"))); if (code==200){ return SUCCESS; } String meg = String.valueOf(r.get("msg")); orderPakout.setSettle(98L); orderPakout.setMemo(meg); orderPakoutService.updateById(orderPakout); return FAIL; } }