| | |
| | | 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.LocDetl; |
| | | import com.zy.asrs.entity.OrderDetlPakout; |
| | | import com.zy.asrs.entity.OrderPakout; |
| | | import com.zy.asrs.service.OrderDetlPakoutService; |
| | | import com.zy.asrs.service.OrderDetlService; |
| | | import com.zy.asrs.service.OrderPakoutService; |
| | | import com.zy.asrs.service.OrderService; |
| | | 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<String> { |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private OrderPakoutService orderPakoutService; |
| | | @Autowired |
| | | private OrderDetlPakoutService orderDetlPakoutService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private LocDetlService locDetlService; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> abandoned(OrderPakout orderPakout) { |
| | | List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId()); |
| | | |
| | | moveBoth(orderPakout,orderDetls); |
| | | return SUCCESS; |
| | | } |
| | | |
| | | private void moveBoth(OrderPakout order, List<OrderDetlPakout> 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<OrderDetlPakout>() |
| | | .eq("id",orderDetl.getId())); |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(order)){ |
| | | order.setUpdateBy(0L); |
| | | order.setUpdateTime(now); |
| | | // orderPakoutService.addToLogTable(order); |
| | | orderPakoutService.delete(new EntityWrapper<OrderPakout>() |
| | | .eq("id",order.getId())); |
| | | } |
| | | } |
| | | |
| | | @Transactional |
| | | public ReturnT<String> inspection(OrderPakout orderPakout) { |
| | | List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId()); |
| | | String memo = ""; |
| | | for (OrderDetlPakout orderDetl : orderDetls) { |
| | | boolean signD = true; |
| | | if (!CodeDetectionUtil.barcodeDetection(orderDetl.getManu(),7)){ |
| | | LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("model", orderDetl.getModel())); |
| | | if (!Cools.isEmpty(locDetl)){ |
| | | signD = false; |
| | | orderDetl.sync(locDetl); |
| | | orderDetl.setManu(locDetl.getLocNo()); |
| | | orderDetl.setBarcode(locDetl.getBarcode()); |
| | | orderDetl.setDanger(locDetl.getDanger()); |
| | | orderDetl.setMemo(locDetl.getMemo()); |
| | | if (!Cools.isEmpty(locDetl.getDanger$()) && locDetl.getDanger()==1){ |
| | | orderDetl.setDanger(1); |
| | | orderDetlPakoutService.updateById(orderDetl); |
| | | continue; |
| | | } |
| | | } else { |
| | | if (Cools.isEmpty(memo)){ |
| | | memo = "无库存"; |
| | | }else { |
| | | memo = memo+";无库存"; |
| | | } |
| | | continue; |
| | | } |
| | | } |
| | | if (signD){ |
| | | if (!Cools.isEmpty(orderDetl.getDanger$()) && orderDetl.getDanger()==1){//合格不需要检验 |
| | | continue; |
| | | } else { |
| | | LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("model", orderDetl.getModel())); |
| | | if (!Cools.isEmpty(locDetl.getDanger$()) && locDetl.getDanger()==1){ |
| | | orderDetl.setDanger(1); |
| | | orderDetlPakoutService.updateById(orderDetl); |
| | | 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 (!Cools.isEmpty(orderDetl.getDanger$()) && 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<String> start(OrderPakout orderPakout) { |
| | | List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(orderPakout.getId()); |
| | | List<OrderDetlPakout> orderDetlPakoutList = orderDetlPakoutService.selectByOrderId(orderPakout.getId()); |
| | | if (orderDetlPakoutList.isEmpty()){ |
| | | orderPakout.setSettle(98L); |
| | | orderPakout.setMemo("不存在明细!!!"); |
| | | orderPakoutService.updateById(orderPakout); |
| | | return FAIL; |
| | | } |
| | | List<OrderOutLocBoxCsUtilParam> 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; |
| | | } |
| | | |
| | | return SUCCESS; |
| | | 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; |
| | | } |
| | | |
| | | } |