src/main/java/com/zy/asrs/controller/MobileController.java
@@ -340,4 +340,22 @@ return R.ok("出库成功"); } //平库pda上架 @RequestMapping("/manDetl/in") public R manDetlAdd(@RequestBody JSONObject json){ if (json == null){ return R.error("传入数据为空"); } return mobileService.manDetlIn(json); } //平库pda下架 @RequestMapping("/manDetl/out") public R manDetlDelete(@RequestBody JSONObject json){ if (json == null){ return R.error("传入数据为空"); } return mobileService.manDetlOut(json); } } src/main/java/com/zy/asrs/controller/OpenController.java
@@ -170,24 +170,4 @@ System.out.println(JSON.toJSONString(param1)); } //平库pda上架 @RequestMapping("/manDetl/in") public R manDetlAdd(@RequestBody JSONObject json){ if (json == null){ return R.error("传入数据为空"); } return openService.manDetlIn(json); } //平库pda下架 @RequestMapping("/manDetl/out") public R manDetlDelete(@RequestBody JSONObject json){ if (json == null){ return R.error("传入数据为空"); } return openService.manDetlOut(json); } } src/main/java/com/zy/asrs/entity/param/CombParam.java
@@ -23,6 +23,8 @@ @Data public static class CombMat { //订单编号 private String orderNo; // 物料编号 private String matnr; src/main/java/com/zy/asrs/service/MobileService.java
@@ -1,6 +1,7 @@ package com.zy.asrs.service; import com.alibaba.fastjson.JSONObject; import com.core.common.R; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.OrderDetl; @@ -38,4 +39,8 @@ void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl, Double curOutQty, Integer ioType, Long userId, Date now); R manDetlIn(JSONObject json); R manDetlOut(JSONObject json); } src/main/java/com/zy/asrs/service/OpenService.java
@@ -47,7 +47,4 @@ R getInOutDetl(); R manDetlIn(JSONObject json); R manDetlOut(JSONObject json); } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1,6 +1,7 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; @@ -21,6 +22,7 @@ import com.zy.common.model.MesCombParam; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import com.zy.common.utils.Synchro; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -78,7 +80,8 @@ @Autowired private ManLocDetlMapper manLocDetlMapper; @Autowired private DocTypeService docTypeService; @Override @Transactional public void comb(CombParam param, Long userId) { @@ -115,7 +118,7 @@ Date now = new Date(); // 无单组托 if (Cools.isEmpty(param.getOrderNo())) { if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) { // 生成入库通知档 List<DetlDto> detlDtos = new ArrayList<>(); @@ -153,13 +156,20 @@ } // 关联组托 } else { // 生成入库通知档 Order order = orderService.selectByNo(param.getOrderNo()); if (order.getSettle() > 2) { throw new CoolException("单据编号已过期"); } for (CombParam.CombMat combMat : param.getCombMats()) { OrderDetl orderDetl = orderDetlService.selectItem(param.getOrderNo(), combMat.getMatnr(), combMat.getBatch()); // 生成入库通知档 Order order = orderService.selectByNo(combMat.getOrderNo()); //判断订单类型是否是入库 DocType docType=docTypeService.selectById(order.getDocType()); if(docType.getPakin()!=1 || docType.getStatus()!=1){ throw new CoolException("订单为出库订单,不能组托!"); } if (order.getSettle() > 2) { throw new CoolException("单据编号已过期"); } OrderDetl orderDetl = orderDetlService.selectItem(combMat.getOrderNo(), combMat.getMatnr(), combMat.getBatch()); if (orderDetl == null) { throw new CoolException("找不到组托的单据明细"); } @@ -198,8 +208,9 @@ // one.setAnfme(one.getAnfme() + detlDto.getAnfme()); // } else { // } orderService.updateSettle(order.getId(), 2L, userId); } orderService.updateSettle(order.getId(), 2L, userId); } } @@ -632,4 +643,175 @@ throw new CoolException(locDetl.getLocNo() + "库位不是在库状态"); } } @Transactional @Override public R manDetlIn(JSONObject json) { Date date = new Date(); String jsonLocNo = (String) json.get("locNo"); Node node = nodeService.selectOne(new EntityWrapper<Node>() .eq("name", jsonLocNo)); JSONArray combMats = json.getJSONArray("combMats"); for (int i = 0; i < combMats.size(); i++) { OrderDetl jsonOrderDetl = combMats.getObject(i, OrderDetl.class); //查订单 Order order = orderService.selectOne(new EntityWrapper<Order>() .eq("order_no", jsonOrderDetl.getOrderNo())); if (Cools.isEmpty(node, order)) { return R.error("参数为空"); } //判断订单类型是否是入库 DocType docType=docTypeService.selectById(order.getDocType()); if(docType.getPakin()!=1 || docType.getStatus()!=1){ return R.error("该订单是出库订单,无法入库"); } OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>() .eq("order_no", jsonOrderDetl.getOrderNo()) .and() .eq("maktx",jsonOrderDetl.getMaktx())); if (Cools.isEmpty(orderDetl)) { return R.error("单据明细有误,请检查"); } if (orderDetl.getAnfme() - (jsonOrderDetl.getAnfme() + orderDetl.getWorkQty()) < 0) { return R.error("入库数量大于可入数量"); } ManLocDetl checkManLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .eq("matnr", orderDetl.getMatnr()) .eq("batch",orderDetl.getBatch())); if (checkManLocDetl == null) { ManLocDetl manLocDetl = new ManLocDetl(); Synchro.Copy(orderDetl, manLocDetl); manLocDetl.setLocNo(node.getName()); manLocDetl.setNodeId(node.getId()); manLocDetl.setMatnr(orderDetl.getMatnr()); manLocDetl.setMaktx(jsonOrderDetl.getMaktx()); manLocDetl.setAnfme(jsonOrderDetl.getAnfme()); manLocDetl.setModiTime(date); manLocDetl.setCreateTime(date); manLocDetl.setBatch(jsonOrderDetl.getBatch()); manLocDetlService.insert(manLocDetl); } else { checkManLocDetl.setAnfme(checkManLocDetl.getAnfme() + jsonOrderDetl.getAnfme()); checkManLocDetl.setModiTime(date); manLocDetlService.update(checkManLocDetl, new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .eq("matnr", orderDetl.getMatnr())); } orderDetl.setQty(orderDetl.getQty() + jsonOrderDetl.getAnfme()); orderDetl.setWorkQty(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme()); orderDetl.setUpdateTime(date); orderDetlService.updateById(orderDetl); //更新订单状态 List<OrderDetl> orderDetls=orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",order.getOrderNo())); order.setSettle(2L); boolean log=true; for (OrderDetl orderDetl1: orderDetls) { //工作中的数量小于总订单数时,订单状态改为2,作业中 if(orderDetl1.getQty() < orderDetl.getAnfme()){ log=false; } } if(log){ order.setSettle(4L); } if(!orderService.updateById(order)){ return R.error("更新订单状态失败"); } orderService.checkComplete(order.getOrderNo()); } return R.ok("上架完成"); } @Transactional @Override public R manDetlOut(JSONObject json) { Date date = new Date(); String jsonLocNo = (String) json.get("locNo"); Node node = nodeService.selectOne(new EntityWrapper<Node>() .eq("name", jsonLocNo)); JSONArray combMats = json.getJSONArray("combMats"); for (int i = 0; i < combMats.size(); i++) { OrderDetl jsonOrderDetl = combMats.getObject(i, OrderDetl.class); Order order = orderService.selectOne(new EntityWrapper<Order>() .eq("order_no", jsonOrderDetl.getOrderNo())); //判断订单类型是否是出库 DocType docType=docTypeService.selectById(order.getDocType()); if(docType.getPakout()!=1 || docType.getStatus()!=1){ return R.error("该订单是入库订单,无法出库"); } if (Cools.isEmpty(node, order)) { return R.error("参数为空"); } OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>() .eq("order_no", jsonOrderDetl.getOrderNo()) .and() .eq("maktx",jsonOrderDetl.getMaktx()) .and() .eq("batch",jsonOrderDetl.getBatch())); if (Cools.isEmpty(orderDetl)) { return R.error("单据明细有误,请检查"); } if (jsonOrderDetl.getAnfme() > (orderDetl.getAnfme() - orderDetl.getWorkQty())) { return R.error("出库数量大于单据可出数量"); } ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .and() .eq("maktx", jsonOrderDetl.getMaktx()) .and() .eq("batch",jsonOrderDetl.getBatch())); if (manLocDetl == null) { return R.error("该库位没有出库的物料信息"); } if (jsonOrderDetl.getAnfme() > manLocDetl.getAnfme()) { return R.error("出库数量大于可出数量"); } Double finalQty = manLocDetl.getAnfme() - jsonOrderDetl.getAnfme(); if (finalQty <= 0){ manLocDetlService.delete(new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .and() .eq("matnr", orderDetl.getMatnr()) .and() .eq("batch",jsonOrderDetl.getBatch())); }else { manLocDetl.setAnfme(finalQty); manLocDetl.setModiTime(date); manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .eq("matnr", orderDetl.getMatnr()) .and() .eq("batch",jsonOrderDetl.getBatch())); } orderDetl.setQty(orderDetl.getQty() + jsonOrderDetl.getAnfme()); orderDetl.setWorkQty(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme()); orderDetl.setUpdateTime(date); orderDetlService.updateById(orderDetl); //更新订单状态 List<OrderDetl> orderDetls=orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",order.getOrderNo())); order.setSettle(2L); boolean log=true; for (OrderDetl orderDetl1: orderDetls) { //工作中的数量小于总订单数时,订单状态改为2,作业中 if(orderDetl1.getQty() < orderDetl.getAnfme()){ log=false; } } if(log){ order.setSettle(4L); } if(!orderService.updateById(order)){ return R.error("更新订单状态失败"); } orderService.checkComplete(order.getOrderNo()); } return R.ok("下架完成"); } } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -569,159 +569,4 @@ return R.ok().add(top100); } @Transactional @Override public R manDetlIn(JSONObject json) { Date date = new Date(); String jsonLocNo = (String) json.get("locNo"); Node node = nodeService.selectOne(new EntityWrapper<Node>() .eq("name", jsonLocNo)); //查订单 String jsonOrderNo = (String) json.get("orderNo"); Order order = orderService.selectOne(new EntityWrapper<Order>() .eq("order_no", jsonOrderNo)); if (Cools.isEmpty(node, order)) { return R.error("参数为空"); } //判断订单类型是否是入库 DocType docType=docTypeService.selectById(order.getDocType()); if(docType.getPakin()!=1 || docType.getStatus()!=1){ return R.error("该订单是出库订单,无法入库"); } JSONArray combMats = json.getJSONArray("combMats"); for (int i = 0; i < combMats.size(); i++) { OrderDetl jsonOrderDetl = combMats.getObject(i, OrderDetl.class); OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>() .eq("order_no", jsonOrderNo) .and() .eq("maktx",jsonOrderDetl.getMaktx())); if (Cools.isEmpty(orderDetl)) { return R.error("单据明细有误,请检查"); } if (orderDetl.getAnfme() - (jsonOrderDetl.getAnfme() + orderDetl.getWorkQty()) < 0) { return R.error("入库数量大于可入数量"); } ManLocDetl checkManLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .eq("matnr", orderDetl.getMatnr())); if (checkManLocDetl == null) { ManLocDetl manLocDetl = new ManLocDetl(); Synchro.Copy(orderDetl, manLocDetl); manLocDetl.setLocNo(node.getName()); manLocDetl.setNodeId(node.getId()); manLocDetl.setMatnr(orderDetl.getMatnr()); manLocDetl.setMaktx(jsonOrderDetl.getMaktx()); manLocDetl.setAnfme(jsonOrderDetl.getAnfme()); manLocDetl.setModiTime(date); manLocDetl.setCreateTime(date); manLocDetlService.insert(manLocDetl); } else { checkManLocDetl.setAnfme(checkManLocDetl.getAnfme() + jsonOrderDetl.getAnfme()); checkManLocDetl.setModiTime(date); manLocDetlService.update(checkManLocDetl, new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .eq("matnr", orderDetl.getMatnr())); } orderDetl.setQty(orderDetl.getQty() + jsonOrderDetl.getAnfme()); orderDetl.setWorkQty(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme()); orderDetl.setUpdateTime(date); orderDetlService.updateById(orderDetl); //更新订单状态 //工作中的数量小于总订单数时,订单状态改为2,作业中 if(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme() < orderDetl.getAnfme()){ order.setSettle(2L); }else{ //工作中的数量等于总订单数时,订单状态改为4,完成 order.setSettle(4L); } if(!orderService.updateById(order)){ return R.error("更新订单状态失败"); } } orderService.checkComplete(order.getOrderNo()); return R.ok("上架完成"); } @Transactional @Override public R manDetlOut(JSONObject json) { Date date = new Date(); String jsonLocNo = (String) json.get("locNo"); Node node = nodeService.selectOne(new EntityWrapper<Node>() .eq("name", jsonLocNo)); String jsonOrderNo = (String) json.get("orderNo"); Order order = orderService.selectOne(new EntityWrapper<Order>() .eq("order_no", jsonOrderNo)); //判断订单类型是否是入库 DocType docType=docTypeService.selectById(order.getDocType()); if(docType.getPakout()!=1 || docType.getStatus()!=1){ return R.error("该订单是出库订单,无法入库"); } if (Cools.isEmpty(node, order)) { return R.error("参数为空"); } JSONArray combMats = json.getJSONArray("combMats"); for (int i = 0; i < combMats.size(); i++) { OrderDetl jsonOrderDetl = combMats.getObject(i, OrderDetl.class); OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>() .eq("order_no", jsonOrderNo) .and() .eq("maktx",jsonOrderDetl.getMaktx())); if (Cools.isEmpty(orderDetl)) { return R.error("单据明细有误,请检查"); } if (jsonOrderDetl.getAnfme() > (orderDetl.getAnfme() - orderDetl.getWorkQty())) { return R.error("出库数量大于单据可出数量"); } ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .eq("maktx", jsonOrderDetl.getMaktx())); if (manLocDetl == null) { return R.error("该库位没有出库的物料信息"); } if (jsonOrderDetl.getAnfme() > manLocDetl.getAnfme()) { return R.error("出库数量大于可出数量"); } Double finalQty = manLocDetl.getAnfme() - jsonOrderDetl.getAnfme(); if (finalQty <= 0){ manLocDetlService.delete(new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .eq("matnr", orderDetl.getMatnr())); }else { manLocDetl.setAnfme(finalQty); manLocDetl.setModiTime(date); manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>() .eq("loc_no", jsonLocNo) .eq("matnr", orderDetl.getMatnr())); } orderDetl.setQty(orderDetl.getQty() + jsonOrderDetl.getAnfme()); orderDetl.setWorkQty(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme()); orderDetl.setUpdateTime(date); orderDetlService.updateById(orderDetl); //更新订单状态 //工作中的数量小于总订单数时,订单状态改为2,作业中 if(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme() < orderDetl.getAnfme()){ order.setSettle(2L); }else{ //工作中的数量等于总订单数时,订单状态改为4,完成 order.setSettle(4L); } if(!orderService.updateById(order)){ return R.error("更新订单状态失败"); } orderService.checkComplete(order.getOrderNo()); } return R.ok("下架完成"); } } src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -93,8 +93,14 @@ } // 遍历工作明细,更新库存明细和入库通知档 for (WrkDetl wrkDetl : wrkDetls) { LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() .eq("loc_no" , locMast.getLocNo()) .and() .eq("matnr",wrkDetl.getMatnr()) .and() .eq("batch",wrkDetl.getBatch()) .and() .eq("order_no",wrkDetl.getOrderNo())); if (null != locDetl) { if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { // exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); @@ -104,6 +110,7 @@ } else { locDetl = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setOrderNo(wrkDetl.getOrderNo());//订单编号 locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 src/main/webapp/static/js/manLocDetl/manLocDetl.js
@@ -8,7 +8,7 @@ ,{field: 'specs', align: 'center',title: '规格'} ,{field: 'weight', align: 'center',title: '单箱净重', hide: false} ,{field: 'batch', align: 'center',title: '批号', width: 300, sort:true, hide: true} ,{field: 'batch', align: 'center',title: '批号', width: 100, sort:true, hide: false} ,{field: 'anfme', align: 'center',title: '数量'} //,{field: 'zpallet', align: 'center',title: '托盘条码'} ,{field: 'model', align: 'center',title: '代码', hide: true} src/main/webapp/static/js/order/out.js
@@ -39,7 +39,7 @@ ,{field: 'specs', align: 'center',title: '规格'} ,{field: 'anfme', align: 'center',title: '总数量', style: 'font-weight: bold'} ,{field: 'workQty', align: 'center',title: '作业数量', style: 'font-weight: bold'} ,{field: 'anfme', align: 'center',title: '完成数量'} ,{field: 'qty', align: 'center',title: '完成数量'} // ,{field: 'name', align: 'center',title: '名称'} // ,{field: 'model', align: 'center',title: '型号'} ,{field: 'unit', align: 'center',title: '单位', hide: true} src/main/webapp/static/js/waitPakin/waitPakin.js
@@ -3,6 +3,7 @@ var cols = [ {type: 'checkbox'} ]; cols.push.apply(cols, detlCols); cols.push({field: 'locNo', align: 'center',title: '库位号'} ,{field: 'orderNo', align: 'center',title: '订单编号'} ,{field: 'status', align: 'center',title: '数据状态', templet:function(row){ var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='正常|锁定'' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.status === 'Y'){html += " checked ";} src/main/webapp/views/wrkMast/wrkDetl.html
@@ -32,6 +32,7 @@ var cols = [ {field: 'wrkNo', align: 'center',title: '工作号'} ,{field: 'ioTime$', align: 'center',title: '工作时间'} ,{field: 'orderNo', align: 'center',title: '订单编号'} ]; cols.push.apply(cols, detlCols); return cols;