| src/main/java/com/zy/asrs/controller/OutController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/WorkService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/web/BaseController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/third/task/handler/BaseDataHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/static/js/order/outAll.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/order/outAll.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OutController.java
@@ -146,14 +146,10 @@ Set<String> exist = new HashSet<>(); for (OrderDetl orderDetl : orderDetls) { double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D); if (issued <= 0.0D) { continue; } List<LocDetl> locDetls = locDetlService.queryStockAll(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); for (LocDetl locDetl : locDetls) { LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued); LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), locDetl.getAnfme()); List<String> staNos = new ArrayList<>(); staNos.add("C1"); staNos.add("C2"); @@ -166,7 +162,7 @@ return R.ok().add(locDtos); } @PostMapping("/out/pakoutV2/auth") @PostMapping("/out/pakout2/auth") @ManagerAuth(memo = "订单出库") public synchronized R pakout2(@RequestBody List<LocDto> locDtos) throws InterruptedException { if (Cools.isEmpty(locDtos)) { @@ -185,6 +181,7 @@ Thread.sleep(1000L); List<TaskDto> taskDtos = new ArrayList<>(); // 根据 (库位 & 出库站) 分组; 理想状态:一组为一次出库任务 for (LocDto locDto : locDtos) { @@ -202,7 +199,7 @@ } // ----------------------------------------------------------------------------------------------- for (TaskDto taskDto : taskDtos) { workService.stockOut(null, taskDto, getUser(), taskDto.getStaNo()); workService.stockOutCheckAnfme(null, taskDto, getUser(), taskDto.getStaNo()); } return R.ok(); } src/main/java/com/zy/asrs/service/WorkService.java
@@ -37,6 +37,9 @@ void stockOut(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo); void stockOutCheckAnfme(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo); /** * 空板入库 * @return 库位号 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -391,6 +391,119 @@ } } @Override @Transactional public void stockOutCheckAnfme(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo) { Date now = new Date(); List<LocDto> locDtos = taskDto.getLocDtos(); for (LocDto locDto : locDtos) { if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) { throw new CoolException("订单出库异常,请联系管理员"); } } // 获取库位 LocMast locMast = locMastService.selectById(taskDto.getLocNo()); for (LocDto locDto : taskDto.getLocDtos()) { if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) { continue; } OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); if (orderDetl == null) { orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); } if (orderDetl.getAnfme() - orderDetl.getWorkQty() == 0) { return; } } // 获取路径 int ioType = taskDto.isAll() ? 101 : 103; Integer outSta = 0; if (locMast.getCrnNo() == 1) { outSta = 106; } else if (locMast.getCrnNo() == 2) { outSta = 104; } else if (locMast.getCrnNo() == 3) { outSta = 102; } StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), outSta); // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(ioType); // 入出库状态 wrkMast.setIoPri(13D); // 优先级:13 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 wrkMast.setSourceLocNo(taskDto.getLocNo()); // 源库位 wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("N"); wrkMast.setBarcode(locMast.getBarcode()); wrkMast.setAppeUser(user.getId()); // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiUser(user.getId()); wrkMast.setModiTime(now); wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo()); } // 生成工作档明细 for (LocDto locDto : taskDto.getLocDtos()) { if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) { continue; } OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); if (orderDetl == null) { orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); } Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDto.getMatnr())); WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(orderDetl); wrkDetl.setZpallet(wrkMast.getBarcode()); wrkDetl.setIoTime(now); wrkDetl.setWrkNo(workNo); wrkDetl.setBatch(locDto.getBatch()); wrkDetl.setOrderNo(locDto.getOrderNo()); wrkDetl.setModel(mat.getModel()); wrkDetl.setAnfme(locDto.getAnfme() > (orderDetl.getAnfme() - orderDetl.getWorkQty()) ? (orderDetl.getAnfme() - orderDetl.getWorkQty()) : locDto.getAnfme()); // 数量 wrkDetl.setAppeTime(now); wrkDetl.setAppeUser(user.getId()); wrkDetl.setModiTime(now); wrkDetl.setModiUser(user.getId()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } // 修改订单明细 if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), wrkDetl.getAnfme(), user.getEmail())) { throw new CoolException("修改订单明细数量失败"); } orderService.updateSettle(orderDetl.getOrderId(), 2L, user.getId()); } // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 locMast = locMastService.selectById(taskDto.getLocNo()); if (locMast.getLocSts().equals("F")) { locMast.setLocSts(ioType == 101 ? "R" : "P"); locMast.setModiUser(user.getId()); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { throw new CoolException("预约库位状态失败,库位号:" + taskDto.getLocNo()); } } else { throw new CoolException(taskDto.getLocNo() + "库位不是在库状态"); } } @Override @Transactional public String emptyPlateIn(Integer devpNo, Long userId) { src/main/java/com/zy/common/web/BaseController.java
@@ -75,6 +75,12 @@ protected User getUser(){ User user = userService.selectById(getUserId()); if (null == user) { if (getUserId() == 9527){ user = new User(); user.setId(9527L); user.setUsername("super"); return user ; } throw new CoolException(BaseRes.DENIED); } return user; src/main/java/com/zy/third/task/handler/BaseDataHandler.java
@@ -61,6 +61,14 @@ mat.setStatus(1); mat.setCreateTime(new Date()); matService.insert(mat); }else { mat.setMatnr(exdMaterial.getFnumber()); mat.setMaktx(exdMaterial.getFname()); mat.setSpecs(exdMaterial.getFmodel()); mat.setSku(exdMaterial.getId()); mat.setTagId(tagService.getTop().getId()); mat.setStatus(1); matService.updateById(mat); } return SUCCESS; } src/main/webapp/static/js/order/outAll.js
@@ -262,7 +262,12 @@ } ,yes: function(index, layero){ //按钮【立即出库】的回调 pakout(tableCache, index); let stoPreTabData = layui.table.checkStatus('stoPreTab').data; if (stoPreTabData.length < 1) { layer.msg("请至少选择一条数据进行出库", {icon: 7}); return false; } pakout(stoPreTabData, index); } ,btn2: function(index, layero){ //按钮【稍后处理】的回调 src/main/webapp/views/order/outAll.html
@@ -277,7 +277,7 @@ <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/tools/md5.js"></script> <script type="text/javascript" src="../../static/js/orderTable.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/order/outAll.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/order/outAll.js?v=1" charset="utf-8"></script> <!--<script type="text/template" id="takeSiteSelectTemplate">--> <!-- {{#each data}}--> <!-- <option value="{{siteId}}">{{desc}}</option>-->