1.增加牌号作为唯一物料条件 (当前牌号 批号 包号可以筛选出唯一物料)
2.增加移库接口
3.订单出库可替换物料
4.页面ui完善
|  |  |  | 
|---|
|  |  |  | JSONArray jsonArray = JSONArray.parseArray(json.getJSONArray("pla").toJSONString()); | 
|---|
|  |  |  | for (Object o : jsonArray){ | 
|---|
|  |  |  | JSONObject jsonObject = (JSONObject)o; | 
|---|
|  |  |  | String brand = json.get("brand").toString(); | 
|---|
|  |  |  | String brand = jsonObject.get("brand").toString(); | 
|---|
|  |  |  | String batch = jsonObject.get("batch").toString(); | 
|---|
|  |  |  | Integer packageNo = Integer.parseInt(jsonObject.get("packageNo").toString()); | 
|---|
|  |  |  | if(Cools.isEmpty(locNo) || Cools.isEmpty(batch) || Cools.isEmpty(packageNo)){ | 
|---|
|  |  |  | 
|---|
|  |  |  | String orderDetlId = json.get("orderDetlId").toString(); | 
|---|
|  |  |  | String wrkNo = json.get("wrkNo").toString(); | 
|---|
|  |  |  | Double anfme = Double.parseDouble(json.get("anfme").toString()); | 
|---|
|  |  |  | boolean isReplace = Cools.eq(json.get("replace").toString(),"y"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(Cools.isEmpty(locNo) || Cools.isEmpty(batch) || Cools.isEmpty(packageNo)){ | 
|---|
|  |  |  | return R.error("有参数为空,无法入库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | mobileService.plaPakout(brand,locNo,batch,packageNo,orderNo,orderDetlId,wrkNo,anfme); | 
|---|
|  |  |  | mobileService.plaPakout(brand,locNo,batch,packageNo,orderNo,orderDetlId,wrkNo,anfme,isReplace); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | String batch = json.get("batch").toString(); | 
|---|
|  |  |  | Integer packageNo = Integer.parseInt(json.get("packageNo").toString()); | 
|---|
|  |  |  | String orderNo = json.get("orderNo").toString(); | 
|---|
|  |  |  | String orderDetlId = json.get("orderDetlId").toString(); | 
|---|
|  |  |  | String plaQtyId = json.get("orderDetlId").toString(); | 
|---|
|  |  |  | String wrkNo = json.get("wrkNo").toString(); | 
|---|
|  |  |  | Double anfme = Double.parseDouble(json.get("anfme").toString()); | 
|---|
|  |  |  | boolean isReplace = !Cools.isEmpty(json.get("replace")) && Cools.eq(json.get("replace").toString(),"y"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(Cools.isEmpty(locNo) || Cools.isEmpty(batch) || Cools.isEmpty(packageNo)){ | 
|---|
|  |  |  | return R.error("有参数为空,无法入库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | mobileService.plaPakout(brand,locNo,batch,packageNo,orderNo,orderDetlId,wrkNo,anfme); | 
|---|
|  |  |  | mobileService.plaPakout(brand,locNo,batch,packageNo,orderNo,plaQtyId,wrkNo,anfme,isReplace); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | 无订单拣货出库 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping("/plaDetl/packout/noOrder/v1") | 
|---|
|  |  |  | //@ManagerAuth(memo="pla手动出库") | 
|---|
|  |  |  | public R plaPackOutWithoutOrder(@RequestBody List<PlaParam> params){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (PlaParam param : params){ | 
|---|
|  |  |  | mobileService.plaPackOutWithoutOrder(param.getBrand(),param.getBatch(),param.getPackageNo(),param.getAnfme()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.entity.param; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import lombok.Data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | public class PlaParam { | 
|---|
|  |  |  | private String brand; | 
|---|
|  |  |  | private String batch; | 
|---|
|  |  |  | private Integer packageNo; | 
|---|
|  |  |  | private Double anfme; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | void plaPakin(String brand,String locNo, String batch, Integer packageNo, User user); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | void plaPakout(String brand,String locNo, String batch, Integer packageNo, String orderNo, String orderDetlId, String wrkNo,Double anfme); | 
|---|
|  |  |  | void plaPakout(String brand,String locNo, String batch, Integer packageNo, String orderNo, String plaQtyId, String wrkNo,Double anfme, boolean isReplace); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | void plaPackOutWithoutOrder(String brand, String batch, Integer packageNo, Double anfme ); | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | 获取拣货单信息 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void plaPakout(String brand, String locNo, String batch, Integer packageNo, String orderNo, String orderDetlId, String wrkNo, Double anfme) { | 
|---|
|  |  |  | public void plaPakout(String brand, String locNo, String batch, Integer packageNo, String orderNo, String plaQtyId, String wrkNo, Double anfme, boolean isReplace) { | 
|---|
|  |  |  | Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo,brand); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ManPakOut manPakOut = manPakOutService.selectById(wrkNo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | PlaQty plaQty = plaQtyService.selectById(orderDetlId); | 
|---|
|  |  |  | PlaQty plaQty = plaQtyService.selectById(plaQtyId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //物料替换 | 
|---|
|  |  |  | if(isReplace){ | 
|---|
|  |  |  | replacePla(pla,manPakOut,plaQty); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | if(!Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_2) || | 
|---|
|  |  |  | !Cools.eq(pla.getBatch(),manPakOut.getBatch()) || | 
|---|
|  |  |  | !Cools.eq(pla.getPackageNo()+"",manPakOut.getBarcode()) || | 
|---|
|  |  |  | !Cools.eq(pla.getBrand(),manPakOut.getMaktx()) ){ | 
|---|
|  |  |  | throw new CoolException("物料不一致,无法出库" + "批号:" + pla.getBatch() + ",包号:" + pla.getPackageNo() + ",牌号:" + pla.getBrand()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //更新拣货单信息 | 
|---|
|  |  |  | if(manPakOut.getCount() + anfme > manPakOut.getAnfme()){ | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void plaPackOutWithoutOrder(String brand, String batch, Integer packageNo, Double anfme) { | 
|---|
|  |  |  | Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo,brand); | 
|---|
|  |  |  | if(Cools.isEmpty(pla)){ | 
|---|
|  |  |  | throw new CoolException("当前物料明细不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!pla.getStatus().equals(GlobleParameter.PLA_STATUS_1) && !pla.getStatus().equals(GlobleParameter.PLA_STATUS_3)){ | 
|---|
|  |  |  | throw new CoolException("当前物料状态无法出库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(anfme > pla.getWeightAnfme()){ | 
|---|
|  |  |  | throw new CoolException("当前物料剩余库存不足"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | pla.setWeightAnfme(pla.getWeightAnfme() - anfme); | 
|---|
|  |  |  | if(pla.getWeightAnfme() > 0){ | 
|---|
|  |  |  | pla.setStatus(GlobleParameter.PLA_STATUS_3); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | pla.setStatus(GlobleParameter.PLA_STATUS_4); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | plaService.updateById(pla); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | SaasUtils.insertLog(1,pla.getLocNo(),pla.getBrand(),anfme,null,null,pla.getBatch(),pla.getPackageNo(),pla.getOwner(),pla.getWorkshop()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<ManPakOut> getManPakoutByOrderNo(String orderNo) { | 
|---|
|  |  |  | return manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num",orderNo).eq("status",0)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void replacePla(Pla plaNew, ManPakOut manPakOut, PlaQty plaQty){ | 
|---|
|  |  |  | //还原旧物料状态 | 
|---|
|  |  |  | Pla plaOld = plaService.selectByBatchAndPackageNo(manPakOut.getBatch(), Integer.parseInt(manPakOut.getBarcode()), manPakOut.getMaktx()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | plaOld.setStatus(GlobleParameter.PLA_STATUS_1); | 
|---|
|  |  |  | plaOld.setQtyAnfme(0.0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | plaService.updateById(plaOld); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //更新plaQty信息 | 
|---|
|  |  |  | plaQty.setBatch(plaNew.getBatch()); | 
|---|
|  |  |  | plaQty.setBrand(plaNew.getBrand()); | 
|---|
|  |  |  | plaQty.setPackageNo(plaNew.getPackageNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | plaQtyService.updateById(plaQty); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //更新拣货单信息 | 
|---|
|  |  |  | manPakOut.setMaktx(plaNew.getBrand()); | 
|---|
|  |  |  | manPakOut.setBatch(plaNew.getBatch()); | 
|---|
|  |  |  | manPakOut.setBarcode(plaNew.getPackageNo() + ""); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | manPakOutService.updateById(manPakOut); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | var className = templateDom.attr("class"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (className === 'template-barcode') { | 
|---|
|  |  |  | json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2¶m=" + (json.data[i].docNum+";"+json.data[i].matnr+";"+json.data[i].batch+";"+json.data[i].anfme+";"+json.data[i].locNo+";"+json.data[i].barcode+";"+json.data[i].nodeId+";"+json.data[i].wrkNo+";"); | 
|---|
|  |  |  | json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2¶m=" + (json.data[i].docNum+";"+json.data[i].matnr+";"+json.data[i].batch+";"+json.data[i].anfme+";"+json.data[i].locNo+";"+json.data[i].barcode+";"+json.data[i].nodeId+";"+json.data[i].wrkNo+";"+json.data[i].maktx); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2¶m=" + (json.data[i].docNum+";"+json.data[i].matnr+";"+json.data[i].batch+";"+json.data[i].anfme+";"+json.data[i].locNo+";"+json.data[i].barcode+";"+json.data[i].nodeId+";"+json.data[i].wrkNo+";"); | 
|---|
|  |  |  | json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2¶m=" + (json.data[i].docNum+";"+json.data[i].matnr+";"+json.data[i].batch+";"+json.data[i].anfme+";"+json.data[i].locNo+";"+json.data[i].barcode+";"+json.data[i].nodeId+";"+json.data[i].wrkNo+";"+json.data[i].maktx); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var tpl = templateDom.html(); | 
|---|
|  |  |  | 
|---|
|  |  |  | headers: {token: localStorage.getItem('token')}, | 
|---|
|  |  |  | url: baseUrl+'/plaQty/list/auth', | 
|---|
|  |  |  | where: { | 
|---|
|  |  |  | brand: data.brand, | 
|---|
|  |  |  | batch: data.batch, | 
|---|
|  |  |  | package_no: data.packageNo | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | type: 1, | 
|---|
|  |  |  | title: "数量修改", | 
|---|
|  |  |  | content: $('#editDialog').html(), | 
|---|
|  |  |  | area: '700px', | 
|---|
|  |  |  | area: ['700px', top.detailHeight], | 
|---|
|  |  |  | success: function (layero, dIndex) { | 
|---|
|  |  |  | // 明细表格 | 
|---|
|  |  |  | tableIns = table.render({ | 
|---|
|  |  |  | 
|---|
|  |  |  | data: dataList, | 
|---|
|  |  |  | limit: 100, | 
|---|
|  |  |  | even: true, | 
|---|
|  |  |  | height: '400px', | 
|---|
|  |  |  | cellMinWidth: 50, | 
|---|
|  |  |  | cols: [[ | 
|---|
|  |  |  | {field: 'batch', title: '批号', width: 160}, | 
|---|