diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java index 9cc1918..1ec6c83 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java @@ -50,6 +50,17 @@ public class ToWmsApiController { return ajaxResult; } + /** + * 获取入库作业 + */ + @RequestMapping("/requestEnterByTrayCodeAndEntranceId") + public AjaxResult requestEnterByTrayCodeAndEntranceId(@RequestBody RequestEnter requestEnter) { + AjaxResult ajaxResult = toWmsService.requestEnterByTrayCodeAndEntranceId(requestEnter); + RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "获取入库作业",ajaxResult); + requestLogService.insertRequestLog(requestLog); + return ajaxResult; + } + /** * 入库、出库 任务完成回传 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToWmsService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToWmsService.java index 9028f57..e7e2398 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToWmsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToWmsService.java @@ -38,4 +38,9 @@ public interface IToWmsService { * 取货无货,重新分配物料 */ AjaxResult reMaterial(ReMaterialParam reMaterialParam); + + /** + * 获取入库作业 + */ + AjaxResult requestEnterByTrayCodeAndEntranceId(RequestEnter requestEnter); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java index 176fafa..15a3e5d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.api.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import com.ruoyi.api.domain.ReMaterialParam; @@ -107,8 +108,8 @@ public class ToWmsServiceImpl implements IToWmsService { String v = split[3].substring(2); String hz = split[4].substring(3); String ph = split[5].substring(3); - String nw = split[6].substring(5, split[6].length() - 2); - String gw = split[7].substring(5, split[7].length() - 2); + String nw = split[6].substring(5); + String gw = split[7].substring(5); String productId = split[8].substring(10); String bm = split[9].substring(2, split[9].length() - 1); String[] decode = ProcodeUtils.decode(bm); @@ -152,161 +153,125 @@ public class ToWmsServiceImpl implements IToWmsService { String inStockId = null; String inStockDetailId = null; if ("1".equals(requestEnter.getFloor())) { - //需要区分是回流任务还是入库任务 - MydoJob hlMydoJobParam = new MydoJob(); - hlMydoJobParam.setEntranceId(requestEnter.getEntranceId()); - hlMydoJobParam.setInOut("5"); - MydoJob hlMydoJob = mydoJobService.selectMydoJobByEntranceId(hlMydoJobParam); - if (ObjUtil.isNull(hlMydoJob)){ - //一楼入库 其它入库 和 退料入库 存在单据,需要修改单据数量 - InStockin inStockinParam = new InStockin(); - inStockinParam.setErpBill(erpBill); - List inStockins = inStockinService.selectInStockinListApi(inStockinParam); - if (CollUtil.isEmpty(inStockins)) { - return AjaxResult.error("单据不存在"); - } - InStockin inStockin = inStockins.get(0); - if ("1".equals(inStockin.getStatus()) || "2".equals(inStockin.getStatus())) { - inStockin.setStatus("3"); - inStockinService.updateInStockin(inStockin); - } - inOrOutType = inStockin.getInType(); - inStockId = inStockin.getStockinId(); - InStockinDetail inStockinDetailParam = new InStockinDetail(); - inStockinDetailParam.setStockinId(inStockin.getStockinGuid()); - inStockinDetailParam.setProductId(basProduct.getProductId()); - List inStockinDetails = inStockinDetailService.selectInStockinDetailList(inStockinDetailParam); - if (CollUtil.isEmpty(inStockinDetails)) { - return AjaxResult.error("单据明细不存在"); - } - InStockinDetail inStockinDetail = inStockinDetails.get(0); - inStockDetailId = inStockinDetail.getStockinDetailId(); - inStockinDetail.setScanNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getScanNum()).add(Convert.toBigDecimal(1)))); - inStockinDetailService.updateInStockinDetail(inStockinDetail); - }else { - inOrOutType = "5"; + //一楼入库 其它入库 和 退料入库 存在单据,需要修改单据数量 + InStockin inStockinParam = new InStockin(); + inStockinParam.setErpBill(erpBill); + List inStockins = inStockinService.selectInStockinListApi(inStockinParam); + if (CollUtil.isEmpty(inStockins)) { + return AjaxResult.error("单据不存在"); } + InStockin inStockin = inStockins.get(0); + if ("1".equals(inStockin.getStatus()) || "2".equals(inStockin.getStatus())) { + inStockin.setStatus("3"); + inStockinService.updateInStockin(inStockin); + } + inOrOutType = inStockin.getInType(); + inStockId = inStockin.getStockinId(); + InStockinDetail inStockinDetailParam = new InStockinDetail(); + inStockinDetailParam.setStockinId(inStockin.getStockinGuid()); + inStockinDetailParam.setProductId(basProduct.getProductId()); + List inStockinDetails = inStockinDetailService.selectInStockinDetailList(inStockinDetailParam); + if (CollUtil.isEmpty(inStockinDetails)) { + return AjaxResult.error("单据明细不存在"); + } + InStockinDetail inStockinDetail = inStockinDetails.get(0); + inStockDetailId = inStockinDetail.getStockinDetailId(); + inStockinDetail.setScanNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getScanNum()).add(Convert.toBigDecimal(1)))); + inStockinDetailService.updateInStockinDetail(inStockinDetail); + } else { inOrOutType = "1"; } - if ("5".equals(inOrOutType)){ - MydoJob hlMydoJobParam = new MydoJob(); - hlMydoJobParam.setEntranceId(requestEnter.getEntranceId()); - hlMydoJobParam.setInOut("5"); - MydoJob hlMydoJob = mydoJobService.selectMydoJobByEntranceId(hlMydoJobParam); - //根据巷道查找货位 - BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); - basCargoSpaceParam.setWarehouseId(hlMydoJob.getWarehouseId()); - basCargoSpaceParam.setRoadwayId(hlMydoJob.getRoadwayId()); - BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam); - if (ObjUtil.isNull(basCargoSpace)) { - return new AjaxResult(5, "没有货位"); + //生成作业 + MydoJob mydoJob = new MydoJob(); + mydoJob.setStatus("1"); + mydoJob.setInOrOut(inOrOutType); + mydoJob.setExecutionPhase("1"); + mydoJob.setTrayCode(basJobIdService.getJobId("TP")); + mydoJob.setWarehouseId("01"); + mydoJob.setRoadwayId(getRoadway(size)); + mydoJob.setLineId(erpBill); + BasRoadway basRoadway = basRoadwayService.selectBasRoadwayById(mydoJob.getRoadwayId()); + if ("1".equals(requestEnter.getFloor())) { + if ("Y".equals(basRoadway.getInLocked())) { + return new AjaxResult(6, "巷道已锁"); } - hlMydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId()); - mydoJobService.updateMydoJob(hlMydoJob); - //type=1是手持机调用 - if(!"1".equals(requestEnter.getType())){ - hlMydoJob.setStatus("3"); - mydoJobService.updateMydoJob(hlMydoJob); + } else { + if ("Y".equals(basRoadway.getInLocked2())) { + return new AjaxResult(6, "巷道已锁"); } - //修改作业状态为正执行 - result.put("jobId", hlMydoJob.getJobId()); - result.put("taskNo", hlMydoJob.getTaskNo()); - result.put("cargoSpaceId", hlMydoJob.getCargoSpaceId()); - result.put("roadwayId", hlMydoJob.getRoadwayId()); - result.put("entranceId", hlMydoJob.getEntranceId()); - result.put("inOrOut", hlMydoJob.getInOrOut()); - }else { - //生成作业 - MydoJob mydoJob = new MydoJob(); - mydoJob.setStatus("1"); - mydoJob.setInOrOut(inOrOutType); - mydoJob.setExecutionPhase("1"); - mydoJob.setTrayCode(basJobIdService.getJobId("TP")); - mydoJob.setWarehouseId("01"); - mydoJob.setRoadwayId(getRoadway(size)); - mydoJob.setLineId(erpBill); - BasRoadway basRoadway = basRoadwayService.selectBasRoadwayById(mydoJob.getRoadwayId()); - if ("1".equals(requestEnter.getFloor())) { - if ("Y".equals(basRoadway.getInLocked())) { - return new AjaxResult(6, "巷道已锁"); - } - } else { - if ("Y".equals(basRoadway.getInLocked2())) { - return new AjaxResult(6, "巷道已锁"); - } - } - - //根据巷道查找货位 - BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); - basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId()); - basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId()); - BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam); - if (ObjUtil.isNull(basCargoSpace)) { - return new AjaxResult(5, "没有货位"); - } - mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId()); - mydoJob.setEntranceId(requestEnter.getEntranceId()); - mydoJobService.insertMydoJob(mydoJob); - - //生成子作业 - MydoJobDetail mydoJobDetail = new MydoJobDetail(); - mydoJobDetail.setJobDetailId(mydoJob.getJobId() + "-1"); - mydoJobDetail.setJobId(mydoJob.getJobId()); - mydoJobDetail.setCreateTime(new Date()); - mydoJobDetail.setProductGuid(basProduct.getProductGuid()); - mydoJobDetail.setProductId(basProduct.getProductId()); - mydoJobDetail.setInQuantity("1"); - mydoJobDetail.setSpare1(xh); - mydoJobDetail.setSpare2(nw); - mydoJobDetail.setSpare3(color); - mydoJobDetail.setSpare4(xlh); - mydoJobDetail.setSpare5(v); - mydoJobDetail.setSpare6(hz); - mydoJobDetail.setSpare7(ph); - mydoJobDetail.setSpare8(gw); - mydoJobDetail.setSpare9(fx); - mydoJobDetail.setUnit(jx); - mydoJobDetail.setSpec(basProduct.getSpec()); - mydoJobDetail.setInOrOutId(inStockId); - mydoJobDetail.setInOrOutDId(inStockDetailId); - mydoJobDetail.setStockinId(inStockId); - mydoJobDetailService.insertMydoJobDetail(mydoJobDetail); - - //修改货位状态 - basCargoSpace.setStatus("3"); - basCargoSpaceService.updateBasCargoSpace(basCargoSpace); - //type=1是手持机调用 - if(!"1".equals(requestEnter.getType())){ - mydoJob.setStatus("3"); - mydoJobService.updateMydoJob(mydoJob); - } - - if ("1".equals(mydoJob.getInOrOut())) { - //生成调拨单 - Map saveTransferBill = toErpService.saveTransferBill(); - if (!"200".equals(saveTransferBill.get("code"))) { - return AjaxResult.error("生成调拨单失败"); - } - log.info("生成调拨单{}", saveTransferBill); - //存入调拨单数据 已生成 - TransferBillCallback transferBillCallback = new TransferBillCallback(); - transferBillCallback.setJobId(mydoJob.getJobId()); - transferBillCallback.setErpBill(erpBill); - transferBillCallback.setType("1"); - transferBillCallback.setStatus("1"); - transferBillCallbackService.insertTransferBillCallback(transferBillCallback); - } - //修改作业状态为正执行 - result.put("jobId", mydoJob.getJobId()); - result.put("taskNo", mydoJob.getTaskNo()); - result.put("cargoSpaceId", mydoJob.getCargoSpaceId()); - result.put("roadwayId", mydoJob.getRoadwayId()); - result.put("entranceId", mydoJob.getEntranceId()); - result.put("inOrOut", mydoJob.getInOrOut()); } + + //根据巷道查找货位 + BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); + basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId()); + basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId()); + BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam); + if (ObjUtil.isNull(basCargoSpace)) { + return new AjaxResult(5, "没有货位"); + } + mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId()); + mydoJob.setEntranceId(requestEnter.getEntranceId()); + mydoJobService.insertMydoJob(mydoJob); + + //生成子作业 + MydoJobDetail mydoJobDetail = new MydoJobDetail(); + mydoJobDetail.setJobDetailId(mydoJob.getJobId() + "-1"); + mydoJobDetail.setJobId(mydoJob.getJobId()); + mydoJobDetail.setCreateTime(new Date()); + mydoJobDetail.setProductGuid(basProduct.getProductGuid()); + mydoJobDetail.setProductId(basProduct.getProductId()); + mydoJobDetail.setInQuantity("1"); + mydoJobDetail.setSpare1(xh); + mydoJobDetail.setSpare2(nw); + mydoJobDetail.setSpare3(color); + mydoJobDetail.setSpare4(xlh); + mydoJobDetail.setSpare5(v); + mydoJobDetail.setSpare6(hz); + mydoJobDetail.setSpare7(ph); + mydoJobDetail.setSpare8(gw); + mydoJobDetail.setSpare9(fx); + mydoJobDetail.setUnit(jx); + mydoJobDetail.setSpec(basProduct.getSpec()); + mydoJobDetail.setInOrOutId(inStockId); + mydoJobDetail.setInOrOutDId(inStockDetailId); + mydoJobDetail.setStockinId(inStockId); + mydoJobDetailService.insertMydoJobDetail(mydoJobDetail); + + //修改货位状态 + basCargoSpace.setStatus("3"); + basCargoSpaceService.updateBasCargoSpace(basCargoSpace); + //type=1是手持机调用 + if (!"1".equals(requestEnter.getType())) { + mydoJob.setStatus("3"); + mydoJobService.updateMydoJob(mydoJob); + } + + if ("1".equals(mydoJob.getInOrOut())) { + //生成调拨单 + Map saveTransferBill = toErpService.saveTransferBill(); + if (!"200".equals(saveTransferBill.get("code"))) { + return AjaxResult.error("生成调拨单失败"); + } + log.info("生成调拨单{}", saveTransferBill); + //存入调拨单数据 已生成 + TransferBillCallback transferBillCallback = new TransferBillCallback(); + transferBillCallback.setJobId(mydoJob.getJobId()); + transferBillCallback.setErpBill(erpBill); + transferBillCallback.setType("1"); + transferBillCallback.setStatus("1"); + transferBillCallbackService.insertTransferBillCallback(transferBillCallback); + } + //修改作业状态为正执行 + result.put("jobId", mydoJob.getJobId()); + result.put("taskNo", mydoJob.getTaskNo()); + result.put("cargoSpaceId", mydoJob.getCargoSpaceId()); + result.put("roadwayId", mydoJob.getRoadwayId()); + result.put("entranceId", mydoJob.getEntranceId()); + result.put("inOrOut", mydoJob.getInOrOut()); + return AjaxResult.success(result); } @@ -320,7 +285,6 @@ public class ToWmsServiceImpl implements IToWmsService { /** * todo 根据包装方式 主要包装方式 描述 长 宽 高 包装材积获取大小 - * */ private int getSize(BasProduct basProduct) { String remark = basProduct.getRemark(); @@ -337,7 +301,7 @@ public class ToWmsServiceImpl implements IToWmsService { public AjaxResult selectMydoJobByEntranceId(RequestEnter requestEnter) { MydoJob param = new MydoJob(); param.setStatus("1"); - param.setEntranceId("G1005"); + param.setEntranceId(requestEnter.getEntranceId()); MydoJob mydoJob = mydoJobService.selectMydoJobByEntranceId(param); if (mydoJob != null && StrUtil.isNotEmpty(mydoJob.getTrayCode())) { @@ -451,5 +415,93 @@ public class ToWmsServiceImpl implements IToWmsService { return outStockoutService.autoAllot(stockOutId); } + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult requestEnterByTrayCodeAndEntranceId(RequestEnter requestEnter) { + HashMap result = new HashMap<>(); + if (StrUtil.isEmpty(requestEnter.getTrayCode())) { + return AjaxResult.error("托盘条码不能为空"); + } + log.info("扫码内容{}", requestEnter.getTrayCode()); + + + //解析扫码内容 + String trayCode = requestEnter.getTrayCode(); + String[] split = trayCode.split(" "); + String model = split[0].substring(6); + String color = split[1].substring(6); + String serial = split[2].substring(7); + String v = split[3].substring(2); + String hz = split[4].substring(3); + String ph = split[5].substring(3); + String nw = split[6].substring(5); + String gw = split[7].substring(5); + String productId = split[8].substring(10); + String bm = split[9].substring(2, split[9].length() - 1); + String[] decode = ProcodeUtils.decode(bm); + String erpBill = decode[0]; + String xh = decode[1]; + String jx = decode[2]; + String fx = decode[3]; + String xlh = decode[4]; + log.info("二维码详情 productId:{} model:{},color:{},serial:{},v:{},hz:{},ph:{},nw:{},gw:{},erpBill:{},xh:{},jx:{},fx:{},xlh:{}", productId, model, color, serial, v, hz, ph, nw, gw, erpBill, xh, jx, fx, xlh); + for (String s : split) { + if (StrUtil.isEmpty(s)) { + return new AjaxResult(1, "二维码内容错误"); + } + } + + + MydoJob param = new MydoJob(); + param.setStatus("1"); + param.setEntranceId(requestEnter.getEntranceId()); + param.setLineId(erpBill); + MydoJob mydoJob = mydoJobService.selectMydoJobByEntranceId(param); + + MydoJobDetail mydoJobDetailParam = new MydoJobDetail(); + mydoJobDetailParam.setJobId(mydoJob.getJobId()); + mydoJobDetailParam.setProductId(productId); + List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam); + if (mydoJobDetails.isEmpty()){ + return new AjaxResult(1, "该任务没有该物料"); + } + + //查询物料信息 + BasProduct basProductParam = new BasProduct(); + basProductParam.setProductId(productId); + List basProducts = basProductService.selectBasProductList(basProductParam); + if (CollUtil.isEmpty(basProducts)) { + return new AjaxResult(2, "物料不存在"); + } + + BasProduct basProduct = basProducts.get(0); + + //根据包装方式 主要包装方式 描述 长 宽 高 包装材积 + int size = getSize(basProduct); + + //超大托盘不处理 直接返回 + if (size == 5) { + return new AjaxResult(3, "超大托盘"); + } + //托盘大小与电气返回不匹配 + + if (StrUtil.isNotBlank(requestEnter.getSize()) && !"1".equals(requestEnter.getType()) && size != Integer.parseInt(requestEnter.getSize())) { + return new AjaxResult(4, "托盘大小不匹配"); + } + + //修改作业状态为正执行 + result.put("jobId", mydoJob.getJobId()); + result.put("taskNo", mydoJob.getTaskNo()); + result.put("cargoSpaceId", mydoJob.getCargoSpaceId()); + result.put("roadwayId", mydoJob.getRoadwayId()); + result.put("entranceId", mydoJob.getEntranceId()); + result.put("inOrOut", mydoJob.getInOrOut()); + + mydoJob.setStatus("3"); + mydoJob.setStartTime(DateUtil.formatDateTime(new Date())); + mydoJobService.updateMydoJob(mydoJob); + return AjaxResult.success(result); + } + } diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index c475932..2a1a76a 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -229,6 +229,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"