| src/main/java/com/zy/asrs/controller/OutController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/TaskDetl.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/model/TaskDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/static/js/orderPakout/agvOut.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OutController.java
@@ -110,7 +110,6 @@ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", locDetl.getLocNo())); locDto.setFrozen(locDetl.getFrozen()); locDto.setFrozenLoc(locCache.getFrozen()); List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103); List<BasStation> basStations = basStationService.selectList(new EntityWrapper<BasStation>().in("area_id", areaIds)); List<String> collect = basStations.stream().map(BasStation::getDevNo).collect(Collectors.toList()); locDto.setAgvStaNos(collect); @@ -304,4 +303,56 @@ return R.ok(); } @PostMapping("/out/agvPakOut/auth") @ManagerAuth(memo = "订单出库") public synchronized R agvPakOut(@RequestBody List<LocDto> locDtos) throws InterruptedException { if (Cools.isEmpty(locDtos)) { return R.parse(BaseRes.PARAM); } List<LocDto> locDtoArrayList = new ArrayList<>(); for (LocDto locDto : locDtos){ if (locDto.getFrozen()!=1 && locDto.getFrozenLoc()!=1){ locDtoArrayList.add(locDto); } } locDtos = locDtoArrayList; if (Cools.isEmpty(locDtos)) { return R.parse("库存/库位被冻结,请处理后出库!!!"); } boolean lack = true; for (LocDto locDto : locDtos) { if (!locDto.isLack()) { lack = false; break; } } if (lack) { return R.error("库存不足"); } Thread.sleep(1000L); List<TaskDto> taskDtos = new ArrayList<>(); // 根据 (库位 & 出库站) 分组; 理想状态:一组为一次出库任务 for (LocDto locDto : locDtos) { if (locDto.isLack()) { continue; } TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto); if (TaskDto.has(taskDtos, taskDto)) { TaskDto dto = TaskDto.find(taskDtos, taskDto); assert dto != null; dto.getLocDtos().addAll(taskDto.getLocDtos()); } else { taskDtos.add(taskDto); } } // ----------------------------------------------------------------------------------------------- for (TaskDto taskDto : taskDtos) { // BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo()); BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", taskDto.getAgvStaNo())); workService.agvStockOut(station, taskDto, getUserId()); } return R.ok(); } } src/main/java/com/zy/asrs/entity/TaskDetl.java
@@ -1,6 +1,7 @@ package com.zy.asrs.entity; import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.enums.IdType; import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField; import java.text.SimpleDateFormat; import java.util.Date; src/main/java/com/zy/asrs/service/WorkService.java
@@ -1,6 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.BasStation; import com.zy.asrs.entity.WaitPakin; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.param.EmptyPlateOutParam; @@ -44,6 +45,8 @@ void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId); void agvStockOut(BasStation staNo, TaskDto taskDto, Long userId); /** * 空板入库 * @return 库位号 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -25,6 +25,7 @@ import com.zy.common.service.CommonService; import com.zy.common.web.WcsController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -91,6 +92,12 @@ @Autowired private CheckOrderDetlService checkOrderDetlService; @Autowired private LocCacheServiceImpl locCacheService; @Autowired private TaskService taskService; @Autowired private TaskDetlService taskDetlService; @Override @Transactional @@ -578,6 +585,98 @@ } @Override @Transactional(rollbackFor = Exception.class) public void agvStockOut(BasStation staNo, TaskDto taskDto, Long userId) { 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("订单出库异常,请联系管理员"); } } // 获取库位 LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo())); int ioType = (taskDto.isAll() ? 101 : 103); // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); Task task = new Task(); task.setWrkNo(workNo) .setIoTime(new Date()) .setWrkSts(11L) // 工作状态:11.生成出库ID .setIoType(ioType) // 入出库状态 .setTaskType("agv") .setIoPri(10D) .setFullPlt("Y") // 满板:Y .setPicking("N") // 拣料 .setExitMk("N")// 退出 .setStaNo(staNo.getDevNo()) .setSourceLocNo(locCache.getLocNo()) .setEmptyMk("N")// 空板 .setBarcode(locCache.getBarcode())// 托盘码 .setLinkMis("N") .setAppeUser(userId) .setAppeTime(new Date()) .setModiUser(userId) .setModiTime(new Date()); if (!taskService.insert(task)) { throw new CoolException("保存工作档失败"); } // 生成工作档明细 for (LocDto locDto : taskDto.getLocDtos()) { if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) { continue; } // OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getBrand() , locDto.getStandby1(), locDto.getStandby2(), locDto.getStandby3(), locDto.getBoxType1(), locDto.getBoxType2(), locDto.getBoxType3()); // if (orderDetl == null) { //// orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); // orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), null); // // } TaskDetl wrkDetl = new TaskDetl(); BeanUtils.copyProperties(orderDetl, wrkDetl); wrkDetl.setWrkNo(workNo) .setId(null) .setIoTime(new Date()) .setOrderNo(locDto.getOrderNo()) .setAnfme(locDto.getAnfme()) .setZpallet(locCache.getBarcode()) .setBatch(locDto.getBatch()) .setAppeUser(userId) .setAppeTime(new Date()) .setModiUser(userId); if (!taskDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } // // 修改订单明细 // if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) { // throw new CoolException("修改订单明细数量失败"); // } // orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE, orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(), orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3() , locDto.getAnfme()); OrderInAndOutUtil.updateOrder(Boolean.FALSE, orderDetl.getOrderId(), 2L, userId); } // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 if (locCache.getLocSts().equals("F")) { locCache.setLocSts(ioType == 101 ? "R" : "P"); locCache.setModiUser(userId); locCache.setModiTime(now); if (!locCacheService.updateById(locCache)) { 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/model/TaskDto.java
@@ -22,6 +22,10 @@ private List<LocDto> locDtos; private String agvStaNo; { locDtos = new ArrayList<>(); } @@ -37,6 +41,12 @@ this.locDtos.add(locDto); } public TaskDto(String locNo, String staNo, LocDto locDto) { this.locNo = locNo; this.agvStaNo = staNo; this.locDtos.add(locDto); } public TaskDto(String locNo, Integer staNo, List<LocDto> locDtos) { this.locNo = locNo; this.staNo = staNo; src/main/webapp/static/js/orderPakout/agvOut.js
@@ -283,7 +283,7 @@ // let loadIndex = layer.load(2); notice.msg('正在生成出库任务......', {icon: 4}); $.ajax({ url: baseUrl + "/out/pakout/auth", url: baseUrl + "/out/agvPakOut/auth", headers: {'token': localStorage.getItem('token')}, contentType: 'application/json;charset=UTF-8', data: JSON.stringify(tableCache),