|  |  | 
 |  |  | package com.zy.asrs.task.handler; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSON; | 
 |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.transaction.interceptor.TransactionAspectSupport; | 
 |  |  | import springfox.documentation.spring.web.json.Json; | 
 |  |  |  | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  | 
 |  |  |                             locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 | 
 |  |  |                             locDetl.setModiTime(now); | 
 |  |  |                             locDetl.setAppeTime(now); | 
 |  |  |                             locDetl.setOrigin("在库"); | 
 |  |  |                             if (!locDetlService.insert(locDetl)) { | 
 |  |  | //                                exceptionHandle("全板入库 ===>> 添加库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         // 更新订单完成数量 | 
 |  |  |                         OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem | 
 |  |  |                                 (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         if (orderDetlPakin==null){ | 
 |  |  |                             orderDetlPakin = orderDetlPakinService.selectItem | 
 |  |  |                                     (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), | 
 |  |  |                                             wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                             wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         } | 
 |  |  |                         try { | 
 |  |  |                             if(!Cools.isEmpty(orderDetlPakin)){ | 
 |  |  |                                 if(!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                         orderDetlPakin.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ | 
 |  |  |                         if (!Cools.isEmpty(wrkDetl.getOrderNo())){ | 
 |  |  |                             log.info("进入入库任务完成,带订单:"+ JSON.toJSONString(wrkDetl)); | 
 |  |  |                             // 更新订单完成数量 | 
 |  |  |                             OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem | 
 |  |  |                                     (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                             wrkDetl.getBatch(), wrkDetl.getBrand(), | 
 |  |  |                                             wrkDetl.getStandby1(), wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                             wrkDetl.getBoxType1(),wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); | 
 |  |  |                             if (orderDetlPakin==null){ | 
 |  |  |                                 log.info("进入入库任务完成,查询订单失败:"+ JSON.toJSONString(wrkDetl)); | 
 |  |  |  | 
 |  |  |                                 orderDetlPakin = orderDetlPakinService.selectItem | 
 |  |  |                                         (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                                 wrkDetl.getBatch(), wrkDetl.getBrand(), | 
 |  |  |                                                 wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                                 wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                             } | 
 |  |  |                             try { | 
 |  |  |                                 if(!Cools.isEmpty(orderDetlPakin)){ | 
 |  |  |                                     if(!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                             orderDetlPakin.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                             wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ | 
 |  |  | //                                    exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", | 
 |  |  | //                                            wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
 |  |  |                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                     return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                         return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } catch (Exception ignore){} | 
 |  |  |                             } catch (Exception ignore){} | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                     // 修改库位状态 S ====>> F | 
 |  |  | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         // 更新订单完成数量 | 
 |  |  |                         OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem | 
 |  |  |                                 (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(), | 
 |  |  |                                         wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         if (orderDetlPakin==null){ | 
 |  |  |                             orderDetlPakin = orderDetlPakinService.selectItem | 
 |  |  |                                     (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                             wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         } | 
 |  |  |                         try { | 
 |  |  |                             if(!Cools.isEmpty(orderDetlPakin)){ | 
 |  |  |                                 if(!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                         orderDetlPakin.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ | 
 |  |  |                         if (!Cools.isEmpty(wrkDetl.getOrderNo())){ | 
 |  |  |                             // 更新订单完成数量 | 
 |  |  |                             OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem | 
 |  |  |                                     (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), | 
 |  |  |                                             wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), | 
 |  |  |                                             wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); | 
 |  |  |                             if (orderDetlPakout==null){ | 
 |  |  |                                 orderDetlPakout = orderDetlPakoutService.selectItem | 
 |  |  |                                         (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                                 wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                             } | 
 |  |  |                             try { | 
 |  |  |                                 if(!Cools.isEmpty(orderDetlPakout)){ | 
 |  |  |                                     if(!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                             orderDetlPakout.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                             wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ | 
 |  |  | //                                    exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", | 
 |  |  | //                                            wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
 |  |  |                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                     return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                         return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } catch (Exception ignore){} | 
 |  |  |                             } catch (Exception ignore){} | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                     // 修改库位状态 Q ====>> F | 
 |  |  | 
 |  |  |                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                         return FAIL.setMsg("盘点入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                     } | 
 |  |  |                     for (WrkDetl wrkDetl : wrkDetls57) { | 
 |  |  |                         if (!Cools.isEmpty(wrkDetl.getOrderNo())) { | 
 |  |  |                             // 更新订单完成数量 | 
 |  |  |                             OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), | 
 |  |  |                                     wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); | 
 |  |  |                             if (!Cools.isEmpty(orderDetlPakout)) { | 
 |  |  |                                 if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                         orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { | 
 |  |  |                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                     return FAIL.setMsg("盘点入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     // 修改库位状态 Q ====>> F | 
 |  |  |                     if (locMast.getLocSts().equals("Q")) { | 
 |  |  |                         locMast.setLocSts(wrkMast.getFullPlt().equals("Y")?"F":"D"); | 
 |  |  | 
 |  |  |         Date now = new Date(); | 
 |  |  |         LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); | 
 |  |  |         try { | 
 |  |  |             if (null == locMast) { | 
 |  |  |             if (null == locMast && wrkMast.getIoType() !=12) { | 
 |  |  | //                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
 |  |  |                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                 return FAIL.setMsg("工作档库位号错误; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  | 
 |  |  |                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                         return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                     for (WrkDetl wrkDetl : wrkDetls101) { | 
 |  |  |                         // 更新订单完成数量 | 
 |  |  |                         OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                 wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         if (orderDetlPakout==null){ | 
 |  |  |                             orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                         if (!Cools.isEmpty(wrkDetl.getOrderNo())){ | 
 |  |  |                             // 更新订单完成数量 | 
 |  |  |                             OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                     wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         } | 
 |  |  |                         try { | 
 |  |  |                             if(!Cools.isEmpty(orderDetlPakout)){ | 
 |  |  |                                 if(!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                         orderDetlPakout.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ | 
 |  |  |                             if (orderDetlPakout==null){ | 
 |  |  |                                 orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                             } | 
 |  |  |                             try { | 
 |  |  |                                 if(!Cools.isEmpty(orderDetlPakout)){ | 
 |  |  |                                     if(!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                             orderDetlPakout.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                             wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ | 
 |  |  | //                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", | 
 |  |  | //                                            wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
 |  |  |                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                     return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
 |  |  |                                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                         return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } catch (Exception ignore){} | 
 |  |  |                             } catch (Exception ignore){} | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     // 删除工作档源库位的库存明细 | 
 |  |  |                     if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) { | 
 |  |  | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     break; | 
 |  |  |                 //3号堆垛机衔接 | 
 |  |  |                 case 12: | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     break; | 
 |  |  |             } |