|  |  | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.asrs.utils.MatUtils; | 
 |  |  | import com.zy.asrs.utils.OrderInAndOutUtil; | 
 |  |  | import com.zy.asrs.utils.Utils; | 
 |  |  | import com.zy.common.constant.MesConstant; | 
 |  |  | import com.zy.common.entity.Parameter; | 
 |  |  | import com.zy.common.model.DetlDto; | 
 |  |  | import com.zy.common.model.LocDto; | 
 |  |  | import com.zy.common.model.MesCombParam; | 
 |  |  | import com.zy.common.model.enums.WorkNoType; | 
 |  |  | import com.zy.common.service.CommonService; | 
 |  |  | 
 |  |  |         if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { | 
 |  |  |             throw new CoolException(BaseRes.PARAM); | 
 |  |  |         } | 
 |  |  |         if(param.getCombMats().size()>1){ | 
 |  |  |             throw new CoolException("请提取一个商品,或者刷新重新组托!"); | 
 |  |  |         } | 
 |  |  | //        if(param.getCombMats().size()>1){ | 
 |  |  | //            throw new CoolException("请提取一个商品,或者刷新重新组托!"); | 
 |  |  | //        } | 
 |  |  |         // 判断是否有相同条码的数据 | 
 |  |  |         if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). | 
 |  |  |                 eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { | 
 |  |  |             throw new CoolException(param.getBarcode() + "数据正在进行入库"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if(param.getBarcode().length()!=8){ | 
 |  |  |             throw new CoolException("条码长度不是8位===>>" + param.getBarcode()); | 
 |  |  |         if(param.getBarcode().length()!=6){ | 
 |  |  |             throw new CoolException("条码长度不是6位===>>" + param.getBarcode()); | 
 |  |  |         } | 
 |  |  | //        if (param.getCombMats().size()>1){ | 
 |  |  | //            throw new CoolException("不允许混料===>>" + param.getBarcode()); | 
 |  |  | 
 |  |  |                 waitPakin.setAppeTime(now); | 
 |  |  |                 waitPakin.setModiUser(userId); | 
 |  |  |                 waitPakin.setModiTime(now); | 
 |  |  |                 waitPakin.setStandby1(detlDto.getStandby1()); | 
 |  |  |                 waitPakin.setStandby2(detlDto.getStandby2()); | 
 |  |  |                 waitPakin.setStandby3(detlDto.getStandby3()); | 
 |  |  |                 waitPakin.setStandby1(detlDto.getStandby1()); | 
 |  |  |                 waitPakin.setStandby2(detlDto.getStandby2()); | 
 |  |  |                 waitPakin.setStandby3(detlDto.getStandby3()); | 
 |  |  |                 if (!waitPakinService.insert(waitPakin)) { | 
 |  |  |                     throw new CoolException("保存入库通知档失败"); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                 waitPakin.setAppeTime(now); | 
 |  |  |                 waitPakin.setModiUser(userId); | 
 |  |  |                 waitPakin.setModiTime(now); | 
 |  |  |                 waitPakin.setStandby1(detlDto.getStandby1()); | 
 |  |  |                 waitPakin.setStandby2(detlDto.getStandby2()); | 
 |  |  |                 waitPakin.setStandby3(detlDto.getStandby3()); | 
 |  |  |                 waitPakin.setStandby1(detlDto.getStandby1()); | 
 |  |  |                 waitPakin.setStandby2(detlDto.getStandby2()); | 
 |  |  |                 waitPakin.setStandby3(detlDto.getStandby3()); | 
 |  |  |                 if (!waitPakinService.insert(waitPakin)) { | 
 |  |  |                     throw new CoolException("保存入库通知档失败"); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public R kittingQuery(CombParam combParam, Long userId) { | 
 |  |  |         List<Map<String, Object>> result = new ArrayList<>(); | 
 |  |  |         List<LocDetl> locDetlResultList = new ArrayList<>(); | 
 |  |  |         List<LocDetl> locDetlResultListHalf = new ArrayList<>(); | 
 |  |  |         List<CombParam.CombMat> combMats = combParam.getCombMats(); | 
 |  |  |         for (CombParam.CombMat combMat : combMats){ | 
 |  |  |             Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>() | 
 |  |  |                     .eq("matnr", combMat.getMatnr()) | 
 |  |  |                     .eq("specs", combMat.getSpecs()) | 
 |  |  |                     .eq("sku", combMat.getSku()) | 
 |  |  |                     .eq("origin", "不在库"); | 
 |  |  |             List<LocDetl> locDetlList = locDetlService.selectList(wrapper); | 
 |  |  |             for (LocDetl locDetl : locDetlList){ | 
 |  |  |                 LocDetlFusion locDetlFusion = getLocDetlFusion(combParam, locDetl.getLocNo()); | 
 |  |  |                 if (locDetlFusion.sign != 0 && locDetlFusion.sign != 9999){ | 
 |  |  |                     if (locDetlFusion.sign == combMats.size()){ | 
 |  |  |                         locDetlResultList.add(locDetlFusion.locDetl); | 
 |  |  |                     } else { | 
 |  |  |                         locDetlResultListHalf.add(locDetlFusion.locDetl); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         for (LocDetl locDetl : locDetlResultList){ | 
 |  |  |             Map<String, Object> map = new HashMap<>(); | 
 |  |  |             map.put("locNo", locDetl.getLocNo()); | 
 |  |  |             map.put("matnr", locDetl.getMatnr()); | 
 |  |  |             map.put("sku", locDetl.getSku()); | 
 |  |  |             map.put("anfme", locDetl.getAnfme()); | 
 |  |  |             map.put("memo", locDetl.getMemo()); | 
 |  |  |             result.add(map); | 
 |  |  |         } | 
 |  |  |         for (LocDetl locDetl : locDetlResultListHalf){ | 
 |  |  |             Map<String, Object> map = new HashMap<>(); | 
 |  |  |             map.put("locNo", locDetl.getLocNo()); | 
 |  |  |             map.put("matnr", locDetl.getMatnr()); | 
 |  |  |             map.put("sku", locDetl.getSku()); | 
 |  |  |             map.put("anfme", locDetl.getAnfme()); | 
 |  |  |             map.put("memo", locDetl.getMemo()); | 
 |  |  |             result.add(map); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return R.ok().add(result); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public class LocDetlFusion{ | 
 |  |  |         public Integer sign; | 
 |  |  |         public LocDetl locDetl; | 
 |  |  |  | 
 |  |  |         public LocDetlFusion(Integer sign, LocDetl locDetl) { | 
 |  |  |             this.sign = sign; | 
 |  |  |             this.locDetl = locDetl; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public LocDetlFusion getLocDetlFusion(CombParam combParam,String locNo){ | 
 |  |  |         LocDetl locDetl = new LocDetl(); | 
 |  |  |         locDetl.setLocNo(locNo); | 
 |  |  |         locDetl.setAnfme(0D); | 
 |  |  |         Integer sign = 0; | 
 |  |  |         Map<Integer, LocDetl> map = new HashMap<>(); | 
 |  |  |         List<LocDetl> locDetls= new ArrayList<>(); | 
 |  |  |  | 
 |  |  |         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo)); | 
 |  |  |         if (locMast.getLocSts().equals("F")){ | 
 |  |  |             List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo)); | 
 |  |  |             for (CombParam.CombMat combMatNow : combParam.getCombMats()){ | 
 |  |  |                 boolean flag = true; | 
 |  |  |                 while (flag){ | 
 |  |  |                     flag = false; | 
 |  |  |                     for (LocDetl locDetlNow : locDetlList){ | 
 |  |  |                         if (locDetlNow.getOrigin().equals("不在库")){ | 
 |  |  |                             if (combMatNow.getMatnr().equals(locDetlNow.getMatnr())){ | 
 |  |  |                                 if (combMatNow.getAnfme().equals(locDetlNow.getAnfme())){ | 
 |  |  |                                     LocDetl locDetlAdd = new LocDetl(); | 
 |  |  |  | 
 |  |  |                                     locDetlAdd.sync(locDetlNow); | 
 |  |  |                                     locDetls.add(locDetlAdd); | 
 |  |  |                                     locDetlList.remove(locDetlNow); | 
 |  |  |  | 
 |  |  |                                     sign++; | 
 |  |  |                                     combMatNow.setMemo("完全匹配"); | 
 |  |  |                                     break; | 
 |  |  |                                 } else if (combMatNow.getAnfme()>locDetlNow.getAnfme()){ | 
 |  |  |                                     double anfme = combMatNow.getAnfme() - locDetlNow.getAnfme(); | 
 |  |  |                                     combMatNow.setAnfme(anfme); | 
 |  |  |  | 
 |  |  |                                     LocDetl locDetlAdd = new LocDetl(); | 
 |  |  |                                     locDetlAdd.sync(locDetlNow); | 
 |  |  |                                     locDetls.add(locDetlAdd); | 
 |  |  |  | 
 |  |  |                                     locDetlList.remove(locDetlNow); | 
 |  |  |                                     flag = true; | 
 |  |  |                                     break; | 
 |  |  |                                 } else if (combMatNow.getAnfme()<locDetlNow.getAnfme()){ | 
 |  |  |                                     double anfme = locDetlNow.getAnfme() - combMatNow.getAnfme(); | 
 |  |  |                                     locDetlNow.setAnfme(combMatNow.getAnfme()); | 
 |  |  |  | 
 |  |  |                                     LocDetl locDetlAdd = new LocDetl(); | 
 |  |  |                                     locDetlAdd.sync(locDetlNow); | 
 |  |  |                                     locDetls.add(locDetlAdd); | 
 |  |  |  | 
 |  |  |                                     locDetlNow.setAnfme(anfme); | 
 |  |  |                                     sign++; | 
 |  |  |                                     combMatNow.setMemo("完全匹配"); | 
 |  |  |                                     break; | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if (sign == combParam.getCombMats().size()){ | 
 |  |  |                 if (locDetlList.size() == 0 ){ | 
 |  |  |                     locDetl.setMemo("完全匹配"); | 
 |  |  |                 } else { | 
 |  |  |                     locDetl.setMemo("溢出匹配"); | 
 |  |  |                 } | 
 |  |  |             } else if (locDetls.size() != 0 ){ | 
 |  |  |                 locDetl.setMemo("未完全匹配"); | 
 |  |  |                 sign = 99999999; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         for (LocDetl locDetlNow : locDetls){ | 
 |  |  |             if (Cools.isEmpty(locDetl.getMatnr())){ | 
 |  |  |                 locDetl.setMatnr(locDetlNow.getMatnr()); | 
 |  |  |             } else { | 
 |  |  |                 locDetl.setMatnr(locDetl.getMatnr() + "," + locDetlNow.getMatnr()); | 
 |  |  |             } | 
 |  |  |             if (Cools.isEmpty(locDetl.getSku())){ | 
 |  |  |                 locDetl.setSku(locDetlNow.getSku()); | 
 |  |  |             } else { | 
 |  |  |                 locDetl.setSku(locDetl.getSku() + "," + locDetlNow.getSku()); | 
 |  |  |             } | 
 |  |  |             locDetl.setAnfme(locDetlNow.getAnfme() + locDetl.getAnfme()); | 
 |  |  |         } | 
 |  |  |         return new LocDetlFusion(sign,locDetl); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public void kittingCall(String locNo, Long userId) { | 
 |  |  |         try{ | 
 |  |  |             List<StockOutParam.LocDetl> locDetls = new ArrayList<>(); | 
 |  |  |  | 
 |  |  |             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo)); | 
 |  |  |             if (locMast.getLocSts().equals("F")){ | 
 |  |  |                 List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo)); | 
 |  |  |                 for (LocDetl locDetl:locDetlList){ | 
 |  |  |                     StockOutParam.LocDetl locDto = new StockOutParam.LocDetl(); | 
 |  |  |                     locDto.setLocNo(locDetl.getLocNo()); | 
 |  |  |                     locDto.setMatnr(locDetl.getMatnr()); | 
 |  |  |                     locDto.setBatch(locDetl.getBatch()); | 
 |  |  |                     locDto.setBrand(locDetl.getBrand()); | 
 |  |  |                     locDto.setCount(locDetl.getAnfme()); | 
 |  |  |                     locDto.setStandby1(locDetl.getStandby1()); | 
 |  |  |                     locDto.setStandby2(locDetl.getStandby2()); | 
 |  |  |                     locDto.setStandby3(locDetl.getStandby3()); | 
 |  |  |                     locDto.setBoxType1(locDetl.getBoxType1()); | 
 |  |  |                     locDto.setBoxType2(locDetl.getBoxType2()); | 
 |  |  |                     locDto.setBoxType3(locDetl.getBoxType3()); | 
 |  |  |                     locDetls.add(locDto); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             StockOutParam param = new StockOutParam(); | 
 |  |  |             param.setOutSite(101); | 
 |  |  |             param.setLocDetls(locDetls); | 
 |  |  |             WorkService workService = SpringUtils.getBean(WorkService.class); | 
 |  |  |             workService.locCheckOut(param,userId); | 
 |  |  |         } catch (Exception e){ | 
 |  |  |             throw new CoolException("盘点启动失败!!!"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public R locOriginInOut(LocDetl locDetl, Long userId) { | 
 |  |  |         try{ | 
 |  |  |             Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>() | 
 |  |  |                     .eq("loc_no", locDetl.getLocNo()) | 
 |  |  |                     .eq("zpallet", locDetl.getZpallet()) | 
 |  |  |                     .eq("matnr", locDetl.getMatnr()) | 
 |  |  |                     .eq("specs", locDetl.getSpecs()) | 
 |  |  |                     .eq("batch", locDetl.getBatch()) | 
 |  |  |                     .eq("origin", locDetl.getOrigin()); | 
 |  |  |             LocDetl locDetl1 = locDetlService.selectOne(wrapper); | 
 |  |  |             if (Cools.isEmpty(locDetl1)){ | 
 |  |  |                 return R.error(); | 
 |  |  |             } else if (locDetl1.getOrigin().equals("不在库")){ | 
 |  |  |                 locDetl1.setOrigin("在库"); | 
 |  |  |             }else{ | 
 |  |  |                 locDetl1.setOrigin("不在库"); | 
 |  |  |             } | 
 |  |  |             if (locDetlService.update(locDetl1,wrapper)){ | 
 |  |  |                 return R.ok(); | 
 |  |  |             } | 
 |  |  |         } catch (Exception e){ | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         return R.error(); | 
 |  |  |     } | 
 |  |  |     // 商品上架 | 
 |  |  |     @Override | 
 |  |  |     public void onSale(CombParam param) { |