入库条码打印修改 生成入库作业 手动完成入库作业

This commit is contained in:
liuhanqing
2025-09-16 15:22:58 +08:00
parent 5049b8e79f
commit 7a87a99e05
11 changed files with 173 additions and 192 deletions

View File

@@ -9,5 +9,6 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class RequestEnter {
private String trayCode;
private String spec;
private String size;
private String entranceId;
}

View File

@@ -3,6 +3,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;
import com.ruoyi.api.domain.RequestEnter;
@@ -20,6 +21,7 @@ import com.ruoyi.bas.container.service.IBasContainerService;
import com.ruoyi.bas.tag.domain.BasTag;
import com.ruoyi.bas.tag.service.IBasTagService;
import com.ruoyi.bas.taskNo.service.IBasTaskNoService;
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.SecurityUtils;
@@ -40,6 +42,7 @@ import com.ruoyi.out.tagTask.service.ITagTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@@ -77,6 +80,7 @@ public class ToWmsServiceImpl implements IToWmsService {
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult requestEnterByTrayCode(RequestEnter requestEnter) {
if (StrUtil.isEmpty(requestEnter.getTrayCode())) {
return AjaxResult.error("托盘条码不能为空");
@@ -92,36 +96,88 @@ 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);
String gw = split[7].substring(5);
String bm = split[8].substring(2, split[8].length() - 1);
String[] decode = ProcodeUtils.decode(bm);
String nw = split[6].substring(5, split[6].length() - 2);
String gw = split[7].substring(5, split[7].length() - 2);
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("二维码详情 model:{},color:{},serial:{},v:{},hz:{},ph:{},nw:{},gw:{},erpBill:{},xh:{},jx:{},fx:{},xlh:{}", model, color, serial, v, hz, ph, nw, gw,erpBill, xh, jx, fx, xlh);
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);
BasProduct basProductParam = new BasProduct();
basProductParam.setSpare4(xlh);
basProductParam.setProductId(productId);
List<BasProduct> basProducts = basProductService.selectBasProductList(basProductParam);
if (CollUtil.isEmpty(basProducts)) {
return AjaxResult.error("物料信息不存在");
}
BasProduct basProduct = basProducts.get(0);
if (!basProduct.getSpec().equals(requestEnter.getSpec())){
/*if (!basProduct.getSpec().equals(requestEnter.getSize())) {
return AjaxResult.error("规格不一致");
}
}*/
//生成作业
MydoJob mydoJob = new MydoJob();
mydoJob.setJobId(basJobIdService.getJobId("RK"));
mydoJob.setStatus("1");
mydoJob.setTaskNo(Convert.toStr(basTaskNoService.getTaskNo("1")));
mydoJob.setDepartmentId(Convert.toStr(SecurityUtils.getDeptId()));
mydoJob.setTrayCode(requestEnter.getTrayCode());
//mydoJob.setDepartmentId(Convert.toStr(SecurityUtils.getDeptId()));
mydoJob.setInOrOut("1");
mydoJob.setExecutionPhase("1");
mydoJob.setTrayCode(basJobIdService.getJobId("TP"));
mydoJob.setWarehouseId("01");
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
//todo 根据包装方式 主要包装方式 描述 长 宽 高 包装材积 判断巷道1 还是巷道2
switch (requestEnter.getSize()) {
case "1":
mydoJob.setRoadwayId("1");
break;
case "2":
mydoJob.setRoadwayId("2");
break;
case "4":
break;
default:
return AjaxResult.error("规格不存在");
}
//根据巷道查找货位
basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId());
basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId());
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (ObjUtil.isNull(basCargoSpace)) {
return AjaxResult.error("没有货位");
}
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());
mydoJobDetailService.insertMydoJobDetail(mydoJobDetail);
//修改货位状态
basCargoSpace.setStatus("3");
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
return AjaxResult.success();
}
@@ -246,7 +302,10 @@ public class ToWmsServiceImpl implements IToWmsService {
//重新分配货位
MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(reMaterialParam.getJobId());
String warehouseId = mydoJob.getWarehouseId();
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(warehouseId);
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
basCargoSpaceParam.setWarehouseId(warehouseId);
basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId());
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (basCargoSpace == null) {
log.error("没有空货位");
return AjaxResult.error(MessageUtils.message("error.message20"));