|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>()); | 
|---|
|  |  |  | return R.ok().add(locDetlList); | 
|---|
|  |  |  | 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) { | 
|---|