diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsAllocateTaskBo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsAllocateTaskBo.java index 4bbaeea6..d919cdea 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsAllocateTaskBo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsAllocateTaskBo.java @@ -1,16 +1,14 @@ package org.dromara.wms.domain.bo; -import org.dromara.wms.domain.WmsAllocateTask; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.wms.domain.WmsAllocateTask; + +import java.math.BigDecimal; import java.util.Date; import java.util.List; -import com.fasterxml.jackson.annotation.JsonFormat; /** * 调拨打印业务对象 wms_allocate_task @@ -41,7 +39,7 @@ public class WmsAllocateTaskBo extends BaseEntity { /** * 每包数量 */ - private Long materialQty; + private BigDecimal materialQty; /** * 条码数量 diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsAllocateTaskVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsAllocateTaskVo.java index 3ecb3282..6ebf7af0 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsAllocateTaskVo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsAllocateTaskVo.java @@ -1,17 +1,14 @@ package org.dromara.wms.domain.vo; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.dromara.wms.domain.WmsAllocateTask; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; -import org.dromara.common.excel.annotation.ExcelDictFormat; -import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.wms.domain.WmsAllocateTask; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; @@ -52,7 +49,7 @@ public class WmsAllocateTaskVo implements Serializable { * 每包数量 */ @ExcelProperty(value = "每包数量") - private Long materialQty; + private BigDecimal materialQty; /** * 条码数量 diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsAllocateTaskService.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsAllocateTaskService.java index 6b24560b..42c1cc2e 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsAllocateTaskService.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsAllocateTaskService.java @@ -1,11 +1,11 @@ package org.dromara.wms.service; -import org.dromara.wms.domain.WmsAllocateTask; -import org.dromara.wms.domain.vo.WmsAllocateTaskVo; -import org.dromara.wms.domain.bo.WmsAllocateTaskBo; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.wms.domain.bo.WmsAllocateTaskBo; +import org.dromara.wms.domain.vo.WmsAllocateTaskVo; +import java.math.BigDecimal; import java.util.Collection; import java.util.List; @@ -69,7 +69,7 @@ public interface IWmsAllocateTaskService { /** * 调拨分包打印 - * + * * @param allocateCode 调拨单号 * @param aoDId 调拨明细ID * @param packageQtyList 分包数量列表 @@ -77,12 +77,12 @@ public interface IWmsAllocateTaskService { * @param printCopies 打印份数 * @return 是否打印成功 */ - Boolean allocatePackagePrint(String allocateCode, Long aoDId, List packageQtyList, + Boolean allocatePackagePrint(String allocateCode, Long aoDId, List packageQtyList, Integer splitPackageCount, Integer printCopies); /** * 触发打印条码 - * + * * @param allocateTaskId 调拨任务ID * @return 是否打印成功 */ @@ -90,7 +90,7 @@ public interface IWmsAllocateTaskService { /** * 重新创建调拨任务(删除旧的,创建新的) - * + * * @param aoDId 调拨明细ID * @param packageQtyList 分包数量列表 * @param splitPackageCount 分包数量 @@ -100,17 +100,17 @@ public interface IWmsAllocateTaskService { /** * 修改调拨任务的条码和分包数量 - * + * * @param allocateTaskId 调拨任务ID * @param batchCode 新条码 * @param materialQty 新的每包数量 * @return 是否修改成功 */ - Boolean updateTaskBarcode(Long allocateTaskId, String batchCode, Long materialQty); + Boolean updateTaskBarcode(Long allocateTaskId, String batchCode, BigDecimal materialQty); /** * 查询调拨明细的已打印任务 - * + * * @param aoDId 调拨明细ID * @return 调拨任务列表 */ @@ -118,7 +118,7 @@ public interface IWmsAllocateTaskService { /** * 验证调拨明细是否可以打印 - * + * * @param aoDId 调拨明细ID * @return 是否可以打印 */ @@ -126,7 +126,7 @@ public interface IWmsAllocateTaskService { /** * 删除调拨明细的所有打印任务 - * + * * @param aoDId 调拨明细ID * @return 是否删除成功 */ diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsAllocateTaskServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsAllocateTaskServiceImpl.java index 7808e006..85edf72b 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsAllocateTaskServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsAllocateTaskServiceImpl.java @@ -196,10 +196,17 @@ public class WmsAllocateTaskServiceImpl implements IWmsAllocateTaskService { materialInfoVo = baseMaterialInfoService.queryById(detailVo.getMaterialId()); } - // 检查是否已经打印过 + // Web端覆盖模式:如果已有打印记录,先删除再新增 List existingTasks = queryTasksByDetailId(aoDId); if (!existingTasks.isEmpty()) { - throw new ServiceException("该调拨明细已经打印过,不允许重复打印"); + // 检查是否有已开始执行的任务 + for (WmsAllocateTaskVo task : existingTasks) { + if ("1".equals(task.getInboundStatus()) || "2".equals(task.getInboundStatus())) { + throw new ServiceException("存在已开始执行的任务,不允许覆盖"); + } + } + // 删除现有任务 + deleteTasksByDetailId(aoDId); } int splitInt = splitPackageCount != null ? splitPackageCount : 1; @@ -233,7 +240,7 @@ public class WmsAllocateTaskServiceImpl implements IWmsAllocateTaskService { BigDecimal currentPackageQty = BigDecimal.valueOf(packageQtyList.get(i - 1)); // 当前包的物料数量 - WmsAllocateTask task = createAllocateTask(detailVo, materialInfoVo, allocateCode, batchCode, currentPackageQty.longValue(), 1L, aoDId); + WmsAllocateTask task = createAllocateTask(detailVo, materialInfoVo, allocateCode, batchCode, currentPackageQty, 1L, aoDId); baseMapper.insert(task); totalPackaged = totalPackaged.add(currentPackageQty); } @@ -246,7 +253,7 @@ public class WmsAllocateTaskServiceImpl implements IWmsAllocateTaskService { String batchCode = generateBatchCode(allocateCode, materialInfoVo != null ? materialInfoVo.getMaterialCode() : "", baseOrder); WmsAllocateTask task = createAllocateTask(detailVo, materialInfoVo, allocateCode, batchCode, - detailVo.getAllocateOrderQty().longValue(), (long) copiesInt, aoDId); + detailVo.getAllocateOrderQty(), (long) copiesInt, aoDId); baseMapper.insert(task); totalPackaged = detailVo.getAllocateOrderQty(); // 全部调拨数量都被打印 } @@ -265,7 +272,7 @@ public class WmsAllocateTaskServiceImpl implements IWmsAllocateTaskService { */ private WmsAllocateTask createAllocateTask(org.dromara.wms.domain.vo.WmsAllocateOrderDetailVo detailVo, org.dromara.wms.domain.vo.BaseMaterialInfoVo materialInfoVo, - String allocateCode, String batchCode, Long materialQty, + String allocateCode, String batchCode, BigDecimal materialQty, Long apportionQty, Long aoDId) { WmsAllocateTask task = new WmsAllocateTask(); task.setAllocateCode(allocateCode); @@ -374,7 +381,7 @@ public class WmsAllocateTaskServiceImpl implements IWmsAllocateTaskService { * @return 是否修改成功 */ @Override - public Boolean updateTaskBarcode(Long allocateTaskId, String batchCode, Long materialQty) { + public Boolean updateTaskBarcode(Long allocateTaskId, String batchCode, BigDecimal materialQty) { WmsAllocateTask task = baseMapper.selectById(allocateTaskId); if (task == null) { throw new ServiceException("调拨任务不存在");