src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/OutBoundParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/OpenService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/WorkService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -8,7 +8,6 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.param.*; import com.zy.asrs.service.OpenService; import com.zy.common.model.LocDto; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -72,16 +71,16 @@ } @PostMapping("/outbound") @AppAuth(memo = "AGV出库调用") @AppAuth(memo = "MES调用出库") public synchronized R outbound(@RequestHeader(required = false) String appkey, @RequestBody(required = false) List<LocDto> locDtos, @RequestBody(required = false) OutBoundParam param, HttpServletRequest request) throws InterruptedException { auth(appkey, locDtos, request); if (Cools.isEmpty(locDtos)) { auth(appkey, param, request); if (Cools.isEmpty(param.getEndLocation(),param.getLocDtos())) { return R.parse(BaseRes.PARAM); } return openService.outbound(locDtos); return openService.outbound(param.getLocDtos(),param.getEndLocation()); } @PostMapping("/order/matSync/default/v1") src/main/java/com/zy/asrs/entity/param/OutBoundParam.java
New file @@ -0,0 +1,24 @@ package com.zy.asrs.entity.param; import com.zy.common.model.LocDto; import lombok.Data; import java.util.List; /** * @author pang.jiabao * @description MES调用出库入参 * @createDate 2024/10/24 16:24 */ @Data public class OutBoundParam { /** * 地码 */ private String endLocation; /** * 物料明细 */ private List<LocDto> locDtos; } src/main/java/com/zy/asrs/service/OpenService.java
@@ -21,9 +21,9 @@ R barcodeVerificatio(String barcode); /** * AGV出库调用 * MES调用出库 */ R outbound(List<LocDto> locDtos) throws InterruptedException; R outbound(List<LocDto> locDtos,String endLocation) throws InterruptedException; /** * 添加入库单 src/main/java/com/zy/asrs/service/WorkService.java
@@ -38,6 +38,12 @@ void stockOut(BasDevp staNo, TaskDto taskDto, Long userId); /** * mes调用出库 * @param endLocation 地码 */ void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,String endLocation); /** * 空板入库 * @return 库位号 */ src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -163,7 +163,7 @@ @Override @Transactional public R outbound(List<LocDto> locDtos) throws InterruptedException { public R outbound(List<LocDto> locDtos,String endLocation) throws InterruptedException { if (Cools.isEmpty(locDtos)) { return R.parse(BaseRes.PARAM); } @@ -198,7 +198,7 @@ // ----------------------------------------------------------------------------------------------- for (TaskDto taskDto : taskDtos) { BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo()); workService.stockOut(staNo, taskDto, null); workService.stockOut(staNo, taskDto, null, endLocation); } return R.ok("出库成功"); } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SnowflakeIdWorker; @@ -27,7 +26,6 @@ import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** * Created by vincent on 2020/6/11 @@ -370,6 +368,90 @@ } @Override public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId, String endLocation) { 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()); // 获取路径 int ioType = taskDto.isAll() ? 101 : 103; StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo()); // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setInvWh(endLocation); // 地码 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(userId); // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); wrkMast.setModiTime(now); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo()); } // 生成工作档明细 for (LocDto locDto : taskDto.getLocDtos()) { if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) { continue; } log.info("工作档明细:{},{},{},{}", locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getAnfme()); OrderDetl orderDetl = orderDetlService.selectItem(locDto); 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.setAnfme(locDto.getAnfme()); // 数量 wrkDetl.setAppeTime(now); wrkDetl.setAppeUser(userId); wrkDetl.setModiTime(now); wrkDetl.setModiUser(userId); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } // 修改订单明细 if (!orderDetlService.increaseWorkQty(orderDetl, locDto.getAnfme())) { throw new CoolException("修改订单明细数量失败"); } orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); } // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 locMast = locMastService.selectById(taskDto.getLocNo()); if (locMast.getLocSts().equals("F")) { locMast.setLocSts(ioType == 101 ? "R" : "P"); locMast.setModiUser(userId); 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) { // 源站点状态检测