| | |
| | | @TableField("uuid") |
| | | private String uuid; |
| | | |
| | | //料箱码 |
| | | //货架码 |
| | | private String containerCode; |
| | | //销售订单号 |
| | | private String csocode; |
| | |
| | | //销售订单行号 |
| | | private String deadTime; |
| | | |
| | | //料箱码 |
| | | //货架码 |
| | | private String suppCode; |
| | | |
| | | public LocDetlAdjust(String matnr, String batch, Double count, String orderNo,String threeCode, String deadTime, String suppCode) { |
| | |
| | | public class ModifyPakoutParam { |
| | | //货架码 |
| | | String barcode; |
| | | //料箱取出的数量 |
| | | //货架取出的数量 |
| | | List<CA> params; |
| | | |
| | | @Data |
| | |
| | | // throw new CoolException(param.getBarcode() + "料想码已存在AGV入库通知档中"); |
| | | // } |
| | | |
| | | //检查库存是否有相同料箱,存在则抛出异常 |
| | | //检查库存是否有相同货架,存在则抛出异常 |
| | | if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){ |
| | | throw new CoolException(param.getBarcode() + "料箱码已存在AGV库存明细中"); |
| | | throw new CoolException(param.getBarcode() + "货架码已存在AGV库存明细中"); |
| | | } |
| | | |
| | | //检查库存是否有相同料箱,存在则抛出异常 |
| | | //检查库存是否有相同货架,存在则抛出异常 |
| | | if(!Cools.isEmpty(agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode",param.getBarcode())))){ |
| | | throw new CoolException(param.getBarcode() + "料箱码已存在AGV库存主档中"); |
| | | throw new CoolException(param.getBarcode() + "货架码已存在AGV库存主档中"); |
| | | } |
| | | |
| | | //查看工作档是否有相同料箱,存在则抛出异常 |
| | | //查看工作档是否有相同货架,存在则抛出异常 |
| | | if(!Cools.isEmpty(agvWrkMastService.selectByContainerCode(param.getBarcode()))){ |
| | | throw new CoolException(param.getBarcode() + "料箱码已存在AGV工作档中"); |
| | | throw new CoolException(param.getBarcode() + "货架码已存在AGV工作档中"); |
| | | } |
| | | |
| | | if (Cools.isEmpty(param.getOrderNo())) { |
| | |
| | | } |
| | | |
| | | if(Cools.isEmpty(agvWaitPakinService.selectByContainerCode(barcode))){ |
| | | throw new CoolException("该料箱未组托,无法绑定站点"); |
| | | throw new CoolException("该货架未组托,无法绑定站点"); |
| | | } |
| | | |
| | | AgvBasDevp agvBasDevp1 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode)); |
| | |
| | | throw new CoolException(param.getBarcode() + "数据已经在库"); |
| | | } |
| | | |
| | | //判断是否存在料箱码 => 存在料箱码则要求提交上来的物料list必须全部都有料箱码 |
| | | //判断是否存在货架码 => 存在货架码则要求提交上来的物料list必须全部都有货架码 |
| | | boolean hasContainerCode = false; |
| | | int containerCodeCount = 0;//料箱码数量 |
| | | int containerCodeCount = 0;//货架码数量 |
| | | for (CombParam.CombMat combMat : param.getCombMats()) { |
| | | if (combMat.getContainerCode() != null) { |
| | | hasContainerCode = true; |
| | |
| | | } |
| | | } |
| | | |
| | | //判断料箱是否已经出现在入库通知档、库存中 |
| | | //判断货架是否已经出现在入库通知档、库存中 |
| | | if (hasContainerCode) { |
| | | if (containerCodeCount != param.getCombMats().size()) { |
| | | throw new CoolException(param.getBarcode() + "货架有" + (param.getCombMats().size()-containerCodeCount) + "个未扫描的料箱"); |
| | | 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() + "料箱正在进行入库"); |
| | | throw new CoolException(combMat.getContainerCode() + "货架正在进行入库"); |
| | | } |
| | | |
| | | //判断料箱是否已经在库 |
| | | //判断货架是否已经在库 |
| | | if (locDetlService.selectCount(new EntityWrapper<LocDetl>() |
| | | .eq("supp_code", combMat.getContainerCode())) > 0) { |
| | | throw new CoolException(combMat.getContainerCode() + "料箱已经在库"); |
| | | throw new CoolException(combMat.getContainerCode() + "货架已经在库"); |
| | | } |
| | | } |
| | | } |
| | |
| | | BeanUtils.copyProperties(locDetl,wrkDetl); |
| | | wrkDetl.setWrkNo(wrkDetls.get(0).getWrkNo()); |
| | | if(wrkDetl.getAnfme() < param.getAnfme()){ |
| | | throw new CoolException("料箱"+param.getContainerCode()+"的物料数量小于拣料数量,请重新核对"); |
| | | throw new CoolException("货架"+param.getContainerCode()+"的物料数量小于拣料数量,请重新核对"); |
| | | } |
| | | wrkDetl.setAnfme(param.getAnfme()); |
| | | wrkDetl.setModiTime(new Date()); |
| | |
| | | if(anfmeSum > mat.getStoreMin()){ |
| | | continue; |
| | | } |
| | | //查询当前物料四项库是否存在,并且货架不含有非料箱物料 |
| | | //查询当前物料四项库是否存在,并且货架不含有非货架物料 |
| | | if(Cools.isEmpty(locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("matnr", mat.getMatnr())))){ |
| | | continue; |
| | | } |
| | |
| | | if(locMast.getLocType1() == 3){ |
| | | return false; |
| | | }else { |
| | | //且检测该库位是否含没有料箱码的物料,如有有则不允许出库 |
| | | //且检测该库位是否含没有货架码的物料,如有有则不允许出库 |
| | | // LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locNo) |
| | | // .andNew().eq("supp_code", "").or().isNull("supp_code")); |
| | | |
| | |
| | | //销售订单行号 |
| | | private String isoseq; |
| | | |
| | | //料箱码 |
| | | //货架码 |
| | | private String containerCode; |
| | | |
| | | public LocDto() { |
| | |
| | | |
| | | String containerCode = param.getContainerCode(); |
| | | if(Cools.isEmpty(containerCode)){ |
| | | throw new CoolException("料箱码为空"); |
| | | throw new CoolException("货架码为空"); |
| | | } |
| | | |
| | | if(!Character.isDigit(containerCode.charAt(0))){ |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | return R.error("没有查询到该料箱信息"); |
| | | return R.error("没有查询到该货架信息"); |
| | | |
| | | } |
| | | |
| | |
| | | String containerCode = param.getContainerCode().split(";")[0]; |
| | | |
| | | if(Cools.isEmpty(containerCode)){ |
| | | throw new CoolException("料箱码为空"); |
| | | throw new CoolException("货架码为空"); |
| | | } |
| | | |
| | | if(!Character.isDigit(containerCode.charAt(0))){ |
| | |
| | | ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false} |
| | | ,{field: 'batch', align: 'center',title: '序列码', width: 300} |
| | | ,{field: 'anfme', align: 'center',title: '数量'} |
| | | ,{field: 'suppCode', align: 'center',title: '料箱码'} |
| | | ,{field: 'suppCode', align: 'center',title: '货架码'} |
| | | ,{field: 'threeCode', align: 'center',title: '销售订单号'} |
| | | ,{field: 'deadTime', align: 'center',title: '销售订单行号'} |
| | | ,{field: 'specs', align: 'center',title: '规格型号', hide: false} |
| | |
| | | ,{field: 'batch', align: 'center',title: '序列码', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'threeCode', align: 'center',title: '销售订单号', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'deadTime', align: 'center',title: '销售订单行号', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'suppCode', align: 'center',title: '料箱码', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'suppCode', align: 'center',title: '货架码', edit: true, style: 'font-weight:bold'} |
| | | ]; |
| | | arrRemove(detlCols, "field", "zpallet"); |
| | | arrRemove(detlCols, "field", "anfme"); |
| | |
| | | function getCol() { |
| | | var cols = [ {type: 'checkbox'} ]; |
| | | cols.push( |
| | | //{field: 'suppCode', align: 'center',title: '料箱码'}, |
| | | //{field: 'suppCode', align: 'center',title: '货架码'}, |
| | | {field: 'anfme', align: 'center',title: '数量'}); |
| | | arrRemove(detlCols, 'field', 'zpallet'); |
| | | cols.push.apply(cols, detlCols); |
| | |
| | | var cols = [ |
| | | ]; |
| | | cols.push( |
| | | //{field: 'suppCode', align: 'center',title: '料箱码'}, |
| | | //{field: 'suppCode', align: 'center',title: '货架码'}, |
| | | {field: 'anfme', align: 'center',title: '数量'}); |
| | | arrRemove(detlCols, 'field', 'zpallet'); |
| | | cols.push.apply(cols, detlCols); |
| | |
| | | ,{field: 'ioTime$', align: 'center',title: '工作时间', width: 160} |
| | | ]; |
| | | cols.push( |
| | | //{field: 'suppCode', align: 'center',title: '料箱码'}, |
| | | //{field: 'suppCode', align: 'center',title: '货架码'}, |
| | | {field: 'anfme', align: 'center',title: '数量'}); |
| | | arrRemove(detlCols, 'field', 'zpallet'); |
| | | cols.push.apply(cols, detlCols); |
| | |
| | | ,{field: 'ioTime$', align: 'center',title: '工作时间'} |
| | | ]; |
| | | cols.push( |
| | | //{field: 'suppCode', align: 'center',title: '料箱码'}, |
| | | //{field: 'suppCode', align: 'center',title: '货架码'}, |
| | | {field: 'anfme', align: 'center',title: '数量'}); |
| | | arrRemove(detlCols, 'field', 'zpallet'); |
| | | cols.push.apply(cols, detlCols); |
| | |
| | | ,{field: 'locNo', align: 'center',title: '目标库位'} |
| | | ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true} |
| | | ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true} |
| | | ,{field: 'barcode', align: 'center',title: '料箱码'} |
| | | ,{field: 'barcode', align: 'center',title: '货架码'} |
| | | ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 80} |
| | | ]], |
| | | request: { |
| | |
| | | function getCol() { |
| | | var cols = [ |
| | | {field: 'locNo', align: 'center',title: '库位号'} |
| | | ,{field: 'suppCode', align: 'center',title: '料箱码', sort:true} |
| | | ,{field: 'suppCode', align: 'center',title: '货架码', sort:true} |
| | | ,{field: 'matnr', align: 'center',title: '商品编码', sort:true} |
| | | ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} |
| | | ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false} |
| | |
| | | ,{field: 'zpallet', align: 'center',title: '货架条码', hide: true} |
| | | ,{field: 'zpallet', align: 'center',title: '货架条码', hide: false} |
| | | ,{field: 'matnr', align: 'center',title: '商品编码',hide: true} |
| | | ,{field: 'suppCode', align: 'center',title: '料箱码', hide: false} |
| | | ,{field: 'suppCode', align: 'center',title: '货架码', hide: false} |
| | | ,{field: 'matnr', align: 'center',title: '商品编码'} |
| | | ,{field: 'anfme', align: 'center',title: '数量'} |
| | | ,{field: 'batch', align: 'center',title: '序列码', width: 300, sort:true, hide: true} |
| | |
| | | function getCol() { |
| | | var cols = [ |
| | | {field: 'locNo$', align: 'center',title: '库位号'} |
| | | ,{field: 'suppCode', align: 'center',title: '料箱码', sort:true} |
| | | ,{field: 'suppCode', align: 'center',title: '货架码', sort:true} |
| | | ,{field: 'matnr', align: 'center',title: '商品编码', sort:true} |
| | | ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} |
| | | ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false} |
| | |
| | | function getCol() { |
| | | var cols = [ |
| | | {field: 'locNo', align: 'center',title: '库位号'} |
| | | //,{field: 'containerCode', align: 'center',title: '料箱码', sort:true} |
| | | //,{field: 'containerCode', align: 'center',title: '货架码', sort:true} |
| | | ,{field: 'matnr', align: 'center',title: '商品编码', sort:true} |
| | | ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} |
| | | //,{field: 'docNum', align: 'center',title: '单据编号', hide: true} |
| | |
| | | ,{field: 'batch', align: 'center',title: '序列码', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'threeCode', align: 'center',title: '销售订单号', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'deadTime', align: 'center',title: '销售订单行号', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'suppCode', align: 'center',title: '料箱码', edit: false, style: 'font-weight:bold'} |
| | | ,{field: 'suppCode', align: 'center',title: '货架码', edit: false, style: 'font-weight:bold'} |
| | | ]; |
| | | arrRemove(detlCols, "field", "zpallet"); |
| | | arrRemove(detlCols, "field", "anfme"); |
| | |
| | | ,{field: 'matnr', align: 'center',title: '商品编码'} |
| | | ,{field: 'maktx', align: 'center',title: '商品名称'} |
| | | ,{field: 'anfme', align: 'center',title: '数量'} |
| | | ,{field: 'containerCode', align: 'center',title: '料箱码'} |
| | | ,{field: 'containerCode', align: 'center',title: '货架码'} |
| | | ,{field: 'csocode', align: 'center',title: '销售订单号'} |
| | | ,{field: 'isoseq', align: 'center',title: '销售订单行号'} |
| | | //,{field: 'owner$', align: 'center',title: '货主'} |
| | |
| | | ,{field: 'batch', align: 'center',title: '序列码', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'threeCode', align: 'center',title: '销售订单号', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'deadTime', align: 'center',title: '销售订单行号', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'suppCode', align: 'center',title: '料箱码', edit: true, style: 'font-weight:bold'} |
| | | ,{field: 'suppCode', align: 'center',title: '货架码', edit: true, style: 'font-weight:bold'} |
| | | ]; |
| | | arrRemove(detlCols, "field", "zpallet"); |
| | | arrRemove(detlCols, "field", "anfme"); |
| | |
| | | {{#if agvWaitPakin.batch}} |
| | | 序列码:{{agvWaitPakin.batch}} </br> |
| | | {{/if}} |
| | | 料箱码:{{agvWaitPakin.suppCode}} </br> |
| | | 货架码:{{agvWaitPakin.suppCode}} </br> |
| | | 数量:{{agvWaitPakin.anfme}} |
| | | </div> |
| | | {{/if}} |
| | |
| | | {{#if agvWrkDetl.batch}} |
| | | 序列码:{{agvWrkDetl.batch}} </br> |
| | | {{/if}} |
| | | 料箱码:{{agvWrkDetl.suppCode}} </br> |
| | | 货架码:{{agvWrkDetl.suppCode}} </br> |
| | | 取货数量:{{agvWrkDetl.anfme}} 结余数量:{{agvWrkDetl.volume}} |
| | | </div> |
| | | {{/if}} |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="料箱码" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="货架码" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | <div id="search-box" class="layui-form layui-card-header"> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="料箱码" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="货架码" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | <div id="search-box" class="layui-form layui-card-header"> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="料箱码" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="货架码" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="料箱码" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="货架码" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="料箱码" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="货架码" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | </tr> |
| | | <tr style="height: 30px; font-size: 15px;"> |
| | | <td align="left" scope="col" colspan="1" style="width: 100px;"> |
| | | 料箱码: |
| | | 货架码: |
| | | </td> |
| | | <td align="left" scope="col" colspan="1"> |
| | | {{this.containerCode}} |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="料箱码" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="货架码" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="料箱码" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="supp_code" placeholder="货架码" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |