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 4ad9d43..faa09e5 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 @@ -30,6 +30,7 @@ import com.ruoyi.in.stockin.service.IInStockinService; import com.ruoyi.in.stockindetail.domain.InStockinDetail; import com.ruoyi.in.stockindetail.service.IInStockinDetailService; import com.ruoyi.job.mydojob.domain.MydoJob; +import com.ruoyi.job.mydojob.mapper.MydoJobMapper; import com.ruoyi.job.mydojob.service.IMydoJobService; import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail; import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService; @@ -87,215 +88,37 @@ public class ToWmsServiceImpl implements IToWmsService { private IRequestLogService requestLogService; @Autowired private IBasStockService stockService; + @Autowired + private MydoJobMapper mydoJobMapper; @Override @Transactional(rollbackFor = Exception.class) public AjaxResult requestEnterByTrayCode(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 inJob = mydoJobMapper.selectInJobByTrayCode(trayCode); + if(inJob != null && Integer.parseInt(inJob.getInOrOut()) < 20){ + if(inJob.getCargoSpaceId() != null && !"".equals(inJob.getCargoSpaceId())){ + return AjaxResult.success(JSONUtil.toJsonStr(inJob)); + }else{ + //分配货位 + HashMap map = new HashMap<>(); + + map.put("v_tray_code", trayCode); + mydoJobMapper.allotInJobSpace(map); + if (!"10".equals(map.get("v_result").toString())) { + return AjaxResult.error(map.get("v_resultmsg").toString()); + }else{ + MydoJob inJob2 = mydoJobMapper.selectInJobByTrayCode(trayCode); + return AjaxResult.success(JSONUtil.toJsonStr(inJob2)); + } } + }else{ + return AjaxResult.error("该条码无入库任务,请扫码绑定!"); } - - List inList = mydoJobService.getInJobBySerial(serial); - List stockList = stockService.getStockBySerial(serial); - if(!CollUtil.isEmpty(inList) || !CollUtil.isEmpty(stockList)) { - return new AjaxResult(2,"该序列号已有作业或库存!"); - } - - //查询物料信息 - BasProduct basProductParam = new BasProduct(); - basProductParam.setProductId(productId); - List basProducts = basProductService.selectBasProductList(basProductParam); - if (CollUtil.isEmpty(basProducts)) { - return new AjaxResult(3, "物料不存在!"); - } - - BasProduct basProduct = basProducts.get(0); - int size = Convert.toInt(basProduct.getSpare10()); - - if(size == 1){ - if("L1001".equals(requestEnter.getEntranceId()) || "L2004".equals(requestEnter.getEntranceId())){ - return new AjaxResult(4, "入口与托盘尺寸对应错误!"); - } - } - - //超大托盘不处理 直接返回 - if (size == 5) { - return new AjaxResult(5, "超大托盘!"); - } - //托盘大小与电气返回不匹配 - - if (StrUtil.isNotBlank(requestEnter.getSize()) && !"1".equals(requestEnter.getType()) && size != Integer.parseInt(requestEnter.getSize())) { - return new AjaxResult(6, "托盘大小不匹配!"); - } - - String inOrOutType = null; - String inStockId = null; - String inStockDetailId = null; - //创建作业标准 - if ("1".equals(requestEnter.getFloor())) { - //一楼入库 其它入库 和 退料入库 存在单据,需要修改单据数量 -// 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); - inOrOutType = "2"; - }else if ("2".equals(requestEnter.getFloor())) { - inOrOutType = "1"; - } - //生成作业 - MydoJob mydoJob = new MydoJob(); - mydoJob.setStatus("1"); - mydoJob.setInOrOut(inOrOutType); - mydoJob.setExecutionPhase("1"); - mydoJob.setWorkshopId(requestEnter.getFlag()); - mydoJob.setTrayCode(serial); - 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(7, "巷道入库锁定!"); - } - } else { - if ("Y".equals(basRoadway.getInLocked2())) { - return new AjaxResult(7, "巷道入库锁定!"); - } - } - - //根据巷道查找货位 - BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); - basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId()); - basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId()); - BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam); - if (ObjUtil.isNull(basCargoSpace)) { - return new AjaxResult(8, "没有可用货位!"); - } - mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId()); - mydoJob.setEntranceId(requestEnter.getEntranceId()); - mydoJob.setClassId(requestEnter.getFloor()); - 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); - } - - //todo 创建工艺入库单 - if ("2".equals(requestEnter.getFloor())){ - AjaxResult workshopInboundOrder = toErpService.createWorkshopInboundOrder(basProduct); - if (!workshopInboundOrder.isSuccess()){ - //throw new RuntimeException("创建工单失败"); - return new AjaxResult(9, "创建工艺入库单失败!"); - } - } - - //修改作业状态为正执行 - result.put("jobId", mydoJob.getJobId()); - result.put("taskNo", mydoJob.getTaskNo()); - result.put("cargoSpaceId", mydoJob.getCargoSpaceId()); - result.put("trayCode", mydoJob.getTrayCode()); - result.put("flag",requestEnter.getFlag()); - result.put("roadwayId", mydoJob.getRoadwayId()); - result.put("entranceId", mydoJob.getEntranceId()); - result.put("inOrOut", mydoJob.getInOrOut()); - - return AjaxResult.success(result); } - private String getRoadway(int size) { - return switch (size) { - case 1 -> "2"; - case 2, 3, 4 -> "1"; - default -> null; - }; - } - - /** - * 根据包装方式 主要包装方式 描述 长 宽 高 包装材积获取大小 - */ - - @Override public AjaxResult selectMydoJobByEntranceId(RequestEnter requestEnter) { MydoJob param = new MydoJob(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java index 60fade6..d10a63f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.job.mydojob.mapper; import com.ruoyi.job.mydojob.domain.MydoJob; +import org.apache.ibatis.annotations.Param; import java.util.HashMap; import java.util.List; @@ -78,4 +79,8 @@ public interface MydoJobMapper List getInJobBySerial(String trayCode); void manualCompleted(HashMap map); + + MydoJob selectInJobByTrayCode(@Param("trayCode") String trayCode); + + void allotInJobSpace(HashMap map); } diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index f9b62ef..fb6af52 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -255,4 +255,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{v_resultmsg,mode=OUT,jdbcType=VARCHAR} )} + + + +