|  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void comb(CombParam param, Long userId) { | 
|---|
|  |  |  | if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { | 
|---|
|  |  |  | throw new CoolException(BaseRes.PARAM); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { | 
|---|
|  |  |  | //            throw new CoolException(BaseRes.PARAM); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | // 判断是否有相同条码的数据 | 
|---|
|  |  |  | if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). | 
|---|
|  |  |  | eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { | 
|---|
|  |  |  | throw new CoolException(param.getBarcode() + "数据正在进行入库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //判断托盘是否已经在库 | 
|---|
|  |  |  | if (locDetlService.selectCount(new EntityWrapper<LocDetl>() | 
|---|
|  |  |  | .eq("zpallet", param.getBarcode())) > 0) { | 
|---|
|  |  |  | throw new CoolException(param.getBarcode() + "数据已经在库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //判断托盘是否已经在工作档 | 
|---|
|  |  |  | if (wrkMastService.selectCount(new EntityWrapper<WrkMast>() | 
|---|
|  |  |  | .eq("barcode", param.getBarcode())) > 0) { | 
|---|
|  |  |  | throw new CoolException(param.getBarcode() + "数据已经在任务档中"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //判断是否存在料箱码 => 存在料箱码则要求提交上来的物料list必须全部都有料箱码 | 
|---|
|  |  |  | boolean hasContainerCode = false; | 
|---|
|  |  |  | int containerCodeCount = 0;//料箱码数量 | 
|---|
|  |  |  | for (CombParam.CombMat combMat : param.getCombMats()) { | 
|---|
|  |  |  | if(!Cools.isEmpty(combMat.getContainerCode())){ | 
|---|
|  |  |  | //if (combMat.getContainerCode() != null) { | 
|---|
|  |  |  | hasContainerCode = true; | 
|---|
|  |  |  | containerCodeCount++; | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //判断料箱是否已经出现在入库通知档、库存中 | 
|---|
|  |  |  | if (hasContainerCode) { | 
|---|
|  |  |  | if (containerCodeCount != param.getCombMats().size()) { | 
|---|
|  |  |  | throw new CoolException(param.getBarcode() + "托盘有" + (param.getCombMats().size()-containerCodeCount) + "个未扫描的料箱"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (CombParam.CombMat combMat : param.getCombMats()) { | 
|---|
|  |  |  | //判断料箱是否正在入库 | 
|---|
|  |  |  | if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). | 
|---|
|  |  |  | eq("supp_code", combMat.getContainerCode()).eq("io_status", "N")) > 0) { | 
|---|
|  |  |  | throw new CoolException(combMat.getContainerCode() + "料箱正在进行入库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //判断料箱是否已经在库 | 
|---|
|  |  |  | if (locDetlService.selectCount(new EntityWrapper<LocDetl>() | 
|---|
|  |  |  | .eq("supp_code", combMat.getContainerCode())) > 0) { | 
|---|
|  |  |  | throw new CoolException(combMat.getContainerCode() + "料箱已经在库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // todo: 不下线重新入库 | 
|---|
|  |  |  | WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); | 
|---|
|  |  |  | 
|---|
|  |  |  | waitPakinList.forEach(waitPakin -> { | 
|---|
|  |  |  | //料想码 | 
|---|
|  |  |  | String containerCode = waitPakin.getSuppCode(); | 
|---|
|  |  |  | //如果当前料想码已存在,则修改该料想的物料数量 | 
|---|
|  |  |  | ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("container_code", containerCode)); | 
|---|
|  |  |  | //如果当前库位已存在货物 | 
|---|
|  |  |  | Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",waitPakin.getMatnr()); | 
|---|
|  |  |  | Utils.wapperSetCondition(wrapper,"container_code",containerCode); | 
|---|
|  |  |  | Utils.wapperSetCondition(wrapper,"batch",waitPakin.getBatch()); | 
|---|
|  |  |  | Utils.wapperSetCondition(wrapper,"csocode",waitPakin.getThreeCode()); | 
|---|
|  |  |  | Utils.wapperSetCondition(wrapper,"isoseq",waitPakin.getDeadTime()); | 
|---|
|  |  |  | ManLocDetl manLocDetl = manLocDetlService.selectOne(wrapper); | 
|---|
|  |  |  | if(Cools.isEmpty(manLocDetl)){ | 
|---|
|  |  |  | saveManlocDetl(waitPakin,now,locNo); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | if(Cools.eq(manLocDetl.getMatnr(),waitPakin.getMatnr()) | 
|---|
|  |  |  | && Cools.eq(manLocDetl.getCsocode(),waitPakin.getThreeCode()) | 
|---|
|  |  |  | && Cools.eq(manLocDetl.getIsoseq(),waitPakin.getDeadTime())){ | 
|---|
|  |  |  | manLocDetl.setAnfme(manLocDetl.getAnfme() + waitPakin.getAnfme()); | 
|---|
|  |  |  | manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>() | 
|---|
|  |  |  | .eq("loc_no",manLocDetl.getLocNo()) | 
|---|
|  |  |  | .eq("container_code",manLocDetl.getContainerCode())); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | saveManlocDetl(waitPakin,now,locNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | manLocDetl.setAnfme(manLocDetl.getAnfme() + waitPakin.getAnfme()); | 
|---|
|  |  |  | manLocDetlService.update(manLocDetl,wrapper); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //生成平库入出库日志 | 
|---|
|  |  |  | SaasUtils.insertLog(0,locNo,waitPakin.getMatnr(), waitPakin.getAnfme(),user.getUsername()); | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void nodePakinNoComb(CombParam param) { | 
|---|
|  |  |  | if(Cools.isEmpty(param.getLocno())){ | 
|---|
|  |  |  | throw new CoolException("库位号未填写,无法入库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | param.getCombMats().forEach(combMat -> { | 
|---|
|  |  |  | Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", param.getLocno()).eq("matnr",combMat.getMatnr()); | 
|---|
|  |  |  | Utils.wapperSetCondition(wrapper,"container_code",combMat.getContainerCode()); | 
|---|
|  |  |  | Utils.wapperSetCondition(wrapper,"batch",combMat.getBatch()); | 
|---|
|  |  |  | Utils.wapperSetCondition(wrapper,"csocode",combMat.getCsocode()); | 
|---|
|  |  |  | Utils.wapperSetCondition(wrapper,"isoseq",combMat.getIsoseq()); | 
|---|
|  |  |  | ManLocDetl manLocDetl = manLocDetlService.selectOne(wrapper); | 
|---|
|  |  |  | if(Cools.isEmpty(manLocDetl)){ | 
|---|
|  |  |  | saveManlocDetl(combMat,param.getLocno()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | manLocDetl.setAnfme(manLocDetl.getAnfme() + combMat.getAnfme()); | 
|---|
|  |  |  | manLocDetlService.update(manLocDetl,wrapper); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //生成平库入出库日志 | 
|---|
|  |  |  | SaasUtils.insertLog(0,param.getLocno(),combMat.getMatnr(), combMat.getAnfme(),""); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private boolean saveManlocDetl(CombParam.CombMat combMat, String locNo){ | 
|---|
|  |  |  | Node node = nodeService.selectOne(new EntityWrapper<Node>() | 
|---|
|  |  |  | .eq("name", locNo)); | 
|---|
|  |  |  | Mat mat = matService.selectByMatnr(combMat.getMatnr()); | 
|---|
|  |  |  | ManLocDetl manLocDetl = new ManLocDetl(); | 
|---|
|  |  |  | BeanUtils.copyProperties(mat,manLocDetl); | 
|---|
|  |  |  | manLocDetl.setAnfme(combMat.getAnfme()); | 
|---|
|  |  |  | manLocDetl.setNodeId(node.getId()); | 
|---|
|  |  |  | manLocDetl.setContainerCode(combMat.getContainerCode()); | 
|---|
|  |  |  | manLocDetl.setCsocode(combMat.getCsocode()); | 
|---|
|  |  |  | manLocDetl.setIsoseq(combMat.getIsoseq()); | 
|---|
|  |  |  | manLocDetl.setCreateTime(new Date()); | 
|---|
|  |  |  | manLocDetl.setModiTime(new Date()); | 
|---|
|  |  |  | manLocDetl.setLocNo(locNo); | 
|---|
|  |  |  | manLocDetl.setStatus(1); | 
|---|
|  |  |  | return manLocDetlService.insert(manLocDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void saveManlocDetl(WaitPakin waitPakin, Date now, String locNo){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Node node = nodeService.selectOne(new EntityWrapper<Node>() | 
|---|