diff --git a/klp-ui/src/api/wms/coil.js b/klp-ui/src/api/wms/coil.js index 1c309d4a..e57b5b0c 100644 --- a/klp-ui/src/api/wms/coil.js +++ b/klp-ui/src/api/wms/coil.js @@ -135,4 +135,15 @@ export function exportCoil(coilId) { url: '/wms/materialCoil/exportCoil/' + coilId, method: 'get' }) +} + +// 根据钢卷ID序列查询钢卷列表 +export function listCoilByIds(coilIds) { + return request({ + url: '/wms/materialCoil/list', + method: 'get', + params: { + coilIds + } + }) } \ No newline at end of file diff --git a/klp-ui/src/components/CoilSelector/index.vue b/klp-ui/src/components/CoilSelector/index.vue index 98f98994..4046779e 100644 --- a/klp-ui/src/components/CoilSelector/index.vue +++ b/klp-ui/src/components/CoilSelector/index.vue @@ -6,13 +6,11 @@ - {{ selectedCoil.currentCoilNo }} - - ({{ selectedCoil.itemName }}) - + {{ selectedCoil.currentCoilNo }} + ({{ selectedCoil.itemName }}) [{{ selectedCoil.netWeight }}t] - 请选择钢卷 + {{ placeholder }} @@ -38,16 +36,14 @@ - + + + + - - - @@ -77,6 +73,10 @@ export default { type: Object, default: () => ({}) }, + placeholder: { + type: String, + default: '请选择钢卷' + }, value: { type: [String, Number], default: '' @@ -90,7 +90,7 @@ export default { initialCoil: { type: Object, default: null - } + }, }, data() { return { diff --git a/klp-ui/src/views/mes/qc/template/index.vue b/klp-ui/src/views/mes/qc/template/index.vue index b2c3ca24..7beea1cf 100644 --- a/klp-ui/src/views/mes/qc/template/index.vue +++ b/klp-ui/src/views/mes/qc/template/index.vue @@ -3,22 +3,18 @@ + label-width="60px"> - - 搜索 - 重置 - 新增 + 搜索 - { this.buttonLoading = false; }); @@ -221,6 +218,7 @@ export default { this.$modal.msgSuccess("新增成功"); this.open = false; this.getList(); + this.handleRowClick(this.form); }).finally(() => { this.buttonLoading = false; }); diff --git a/klp-ui/src/views/wms/coil/panels/do.vue b/klp-ui/src/views/wms/coil/panels/do.vue index e577f731..85e47487 100644 --- a/klp-ui/src/views/wms/coil/panels/do.vue +++ b/klp-ui/src/views/wms/coil/panels/do.vue @@ -297,7 +297,7 @@ - + diff --git a/klp-ui/src/views/wms/delivery/components/coilsTranfer.vue b/klp-ui/src/views/wms/delivery/components/coilsTranfer.vue new file mode 100644 index 00000000..f362e635 --- /dev/null +++ b/klp-ui/src/views/wms/delivery/components/coilsTranfer.vue @@ -0,0 +1,64 @@ + + + \ No newline at end of file diff --git a/klp-ui/src/views/wms/delivery/plan/index.vue b/klp-ui/src/views/wms/delivery/plan/index.vue index 7a250c6e..c8e9200d 100644 --- a/klp-ui/src/views/wms/delivery/plan/index.vue +++ b/klp-ui/src/views/wms/delivery/plan/index.vue @@ -2,18 +2,10 @@
- + - @@ -25,96 +17,95 @@ - 新增 + 新增 - 修改 + 修改 - 删除 + 删除 - 导出 + 导出 - - - -
- -
{{ row.planName }}
+ + + + + +
+ +
{{ row.planName }}
+
+
+
+ {{ parseTime(row.planDate, '{y}-{m}-{d}') }} + + 已审批 + 待审批 + +
+
+ {{ row.createBy }}({{ parseTime(row.updateTime, '{y}-{m}-{d}') }}) +
+
+ 备注: + {{ row.remark || '-' }} +
+
+
+ 审批 + 修改 + 删除 +
+
+
+
+ + +
+ + + + +
+ +
+ +
+ +
+ + + + + + + + + + + + + +
-
-
- 计划日期: - {{ parseTime(row.planDate, '{y}-{m}-{d}') }} -
-
- 备注: - {{ row.remark || '-' }} -
-
- 创建人: - {{ row.createBy }} -
-
- 更新时间: - {{ parseTime(row.updateTime, '{y}-{m}-{d}') }} -
+
+
-
- 修改 - 删除 -
- +
- @@ -123,10 +114,7 @@ - @@ -144,9 +132,14 @@ + + \ No newline at end of file diff --git a/klp-ui/src/views/wms/warehouse/overview.vue b/klp-ui/src/views/wms/warehouse/overview.vue index 0189ada9..6b4bd5a2 100644 --- a/klp-ui/src/views/wms/warehouse/overview.vue +++ b/klp-ui/src/views/wms/warehouse/overview.vue @@ -43,10 +43,6 @@
- - - @@ -189,7 +185,7 @@ export default { const prefix = await this.generateWarehousePrefix(this.selectedNode); this.initForm = { - rowCount: '', columnCount: '', layerCount: '', + rowCount: '', columnCount: '', prefix: prefix, parentId: this.selectedNode.actualWarehouseId }; diff --git a/klp-wms/src/main/java/com/klp/controller/WmsDeliveryPlanController.java b/klp-wms/src/main/java/com/klp/controller/WmsDeliveryPlanController.java index c98caf82..04d71303 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsDeliveryPlanController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsDeliveryPlanController.java @@ -5,9 +5,7 @@ import java.util.List; import java.util.Arrays; import com.fasterxml.jackson.annotation.JsonFormat; -import com.klp.domain.vo.WmsDeliveryPlanStatisticsVo; -import com.klp.domain.vo.WmsDeliveryReportResultVo; -import com.klp.domain.vo.WmsDeliveryReportVo; +import com.klp.domain.vo.*; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; @@ -24,7 +22,6 @@ import com.klp.common.core.validate.AddGroup; import com.klp.common.core.validate.EditGroup; import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; -import com.klp.domain.vo.WmsDeliveryPlanVo; import com.klp.domain.bo.WmsDeliveryPlanBo; import com.klp.service.IWmsDeliveryPlanService; import com.klp.common.core.page.TableDataInfo; @@ -129,4 +126,6 @@ public class WmsDeliveryPlanController extends BaseController { WmsDeliveryReportResultVo report = iWmsDeliveryPlanService.getDeliveryReport(startTime, endTime); return R.ok(report); } + + } diff --git a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java index fde0053f..201b440d 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -3,6 +3,7 @@ package com.klp.controller; import java.util.List; import java.util.Map; import java.util.Arrays; +import java.util.stream.Collectors; import com.klp.domain.vo.WmsMaterialCoilExportVo; import lombok.RequiredArgsConstructor; @@ -184,5 +185,41 @@ public class WmsMaterialCoilController extends BaseController { List distribution = iWmsMaterialCoilService.getDistributionByActualItemType(itemType, itemId); return R.ok(distribution); } + + + + /** + * 查询未被任何发货计划引用的钢卷列表 + * 用于发货计划选择钢卷时,避免选择已经被其他发货计划引用的钢卷 + */ + @GetMapping("/availableForDelivery") + public TableDataInfo getAvailableCoilsForDelivery(WmsMaterialCoilBo bo, PageQuery pageQuery) { + return iWmsMaterialCoilService.queryAvailableForDelivery(bo, pageQuery); + } + + + /** + * 批量更新钢卷发货状态 + * + * @param coilIds 钢卷ID,多个ID用逗号分隔 + * @param status 目标状态 (0=在库, 1=在途, 2=已出库) + * @return 操作结果 + */ + @Log(title = "钢卷物料表", businessType = BusinessType.UPDATE) + @PutMapping("/batchUpdateDeliveryStatus") + public R batchUpdateDeliveryStatus( + @RequestParam String coilIds, + @RequestParam Integer status) { + + // 解析钢卷ID列表 + List coilIdList = Arrays.stream(coilIds.split(",")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .map(Long::valueOf) + .collect(Collectors.toList()); + + Boolean result = iWmsMaterialCoilService.batchUpdateDeliveryStatus(coilIdList, status); + return result ? R.ok() : R.fail("批量更新失败"); + } } diff --git a/klp-wms/src/main/java/com/klp/domain/WmsDeliveryPlan.java b/klp-wms/src/main/java/com/klp/domain/WmsDeliveryPlan.java index 008c619e..8b43fe78 100644 --- a/klp-wms/src/main/java/com/klp/domain/WmsDeliveryPlan.java +++ b/klp-wms/src/main/java/com/klp/domain/WmsDeliveryPlan.java @@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; /** * 发货计划对象 wms_delivery_plan @@ -48,4 +49,16 @@ public class WmsDeliveryPlan extends BaseEntity { @TableLogic private Integer delFlag; + // 钢卷集合 + private String coil; + + //-- 1. 新增审核状态字段(核心) + private Integer auditStatus; + //-- 2. 新增审核人字段 + private String auditBy; + //-- 3. 新增审核时间字段 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date auditTime; + } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsActualWarehouseBatchGenerateBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsActualWarehouseBatchGenerateBo.java index 853839b0..5d18efe2 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsActualWarehouseBatchGenerateBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsActualWarehouseBatchGenerateBo.java @@ -13,25 +13,20 @@ import javax.validation.constraints.NotNull; public class WmsActualWarehouseBatchGenerateBo { /** 列数 */ - @NotNull @Min(1) private Integer columnCount; /** 行数 */ - @NotNull @Min(1) private Integer rowCount; /** 层数 */ - @NotNull @Min(1) private Integer layerCount; /** 前缀 */ - @NotBlank private String prefix; /** 父节点ID */ - @NotNull private Long parentId; } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsDeliveryPlanBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsDeliveryPlanBo.java index 23641677..01331195 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsDeliveryPlanBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsDeliveryPlanBo.java @@ -7,6 +7,7 @@ import javax.validation.constraints.*; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; /** * 发货计划业务对象 wms_delivery_plan @@ -43,5 +44,15 @@ public class WmsDeliveryPlanBo extends BaseEntity { */ private String remark; + // 钢卷集合 + private String coil; + //-- 1. 新增审核状态字段(核心) + private Integer auditStatus; + //-- 2. 新增审核人字段 + private String auditBy; + //-- 3. 新增审核时间字段 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date auditTime; } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java index 25488627..7ed360e4 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java @@ -160,5 +160,10 @@ public class WmsMaterialCoilBo extends BaseEntity { */ private Integer minAbnormalCount; + /** + * 钢卷ID列表(逗号分隔,用于根据ID列表查询钢卷) + */ + private String coilIds; + } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsDeliveryPlanVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsDeliveryPlanVo.java index 7faf26c2..1befe163 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsDeliveryPlanVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsDeliveryPlanVo.java @@ -10,6 +10,7 @@ import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.convert.ExcelDictConvert; import com.klp.common.core.domain.BaseEntity; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; /** @@ -71,4 +72,16 @@ public class WmsDeliveryPlanVo extends BaseEntity { */ private String updateByName; + // 钢卷集合 + private String coil; + + //-- 1. 新增审核状态字段(核心) + private Integer auditStatus; + //-- 2. 新增审核人字段 + private String auditBy; + //-- 3. 新增审核时间字段 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date auditTime; + } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsDeliveryPlanService.java b/klp-wms/src/main/java/com/klp/service/IWmsDeliveryPlanService.java index 951aa642..8fe1752b 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsDeliveryPlanService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsDeliveryPlanService.java @@ -7,6 +7,7 @@ import com.klp.domain.bo.WmsDeliveryPlanBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; import com.klp.domain.vo.WmsDeliveryReportResultVo; +import com.klp.domain.vo.WmsMaterialCoilVo; import java.util.Collection; import java.util.Date; diff --git a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java index 43c8b9b9..46426266 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -99,5 +99,9 @@ public interface IWmsMaterialCoilService { List queryExportList(WmsMaterialCoilBo bo); int exportCoil(@NotEmpty(message = "主键不能为空") Long coilId); + + TableDataInfo queryAvailableForDelivery(WmsMaterialCoilBo bo, PageQuery pageQuery); + + Boolean batchUpdateDeliveryStatus(List coilIdList, Integer status); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java index b72927b8..ce8fb493 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java @@ -56,20 +56,26 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService Integer layers = bo.getLayerCount(); String prefix = bo.getPrefix(); Long parentId = bo.getParentId(); - if (rows == null || cols == null || layers == null || rows < 1 || cols < 1 || layers < 1) { - throw new ServiceException("行/列/层必须为正整数"); + if (layers == null) { + layers = 2; + } + if (rows == null || cols == null || rows < 1 || cols < 1) { + throw new ServiceException("行/列必须为正整数"); + } + if (layers < 1) { + throw new ServiceException("层必须为正整数"); } if (StringUtils.isBlank(prefix)) { throw new ServiceException("前缀不能为空"); } - // 预生成候选编码 List codes = new ArrayList<>(rows * cols * layers); - for (int c = 1; c <= cols; c++) { - for (int r = 1; r <= rows; r++) { - String rStr = r < 10 ? ("0" + r) : String.valueOf(r); - for (int l = 1; l <= layers; l++) { - String code = prefix + c + rStr + '-' + l; + for (int l = 1; l <= layers; l++) { + int rowsForLayer = (l == 2) ? Math.max(rows - 1, 1) : rows; + for (int c = 1; c <= cols; c++) { + for (int r = 1; r <= rowsForLayer; r++) { + String rStr = r < 10 ? ("0" + r) : String.valueOf(r); + String code = prefix + c + '-' + rStr + '-' + l; codes.add(code); } } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java index e8381f69..1680e119 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java @@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; +import com.klp.domain.WmsMaterialCoil; import com.klp.domain.vo.*; +import com.klp.mapper.WmsMaterialCoilMapper; import com.klp.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -34,6 +36,8 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService { private final ISysUserService userService; + private final WmsMaterialCoilMapper coilMapper; + /** * 查询发货计划 */ @@ -87,6 +91,7 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService { lqw.like(StringUtils.isNotBlank(bo.getPlanName()), WmsDeliveryPlan::getPlanName, bo.getPlanName()); lqw.eq(bo.getPlanDate() != null, WmsDeliveryPlan::getPlanDate, bo.getPlanDate()); lqw.eq(bo.getPlanType() != null, WmsDeliveryPlan::getPlanType, bo.getPlanType()); + lqw.eq(bo.getAuditStatus() != null, WmsDeliveryPlan::getAuditStatus, bo.getAuditStatus()); return lqw; } @@ -163,4 +168,5 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService { return result; } + } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 17cf1392..4dda2338 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -12,8 +12,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.helper.LoginHelper; import com.klp.common.utils.StringUtils; import com.klp.common.utils.spring.SpringUtils; +import com.klp.domain.WmsDeliveryPlan; import com.klp.domain.bo.*; import com.klp.domain.vo.*; +import com.klp.mapper.WmsDeliveryPlanMapper; import com.klp.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -56,6 +58,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { private final IWmsBomItemService bomItemService; private final IWmsProductService productService; private final ISysUserService userService; + private final WmsDeliveryPlanMapper deliveryPlanMapper; /** * 查询钢卷物料表 @@ -347,6 +350,23 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 兼容原来的itemId单值查询 qw.eq("mc.item_id", bo.getItemId()); } + // 添加coilIds查询条件,支持逗号分隔的多个coilId查询 + if (StringUtils.isNotBlank(bo.getCoilIds())) { + String[] coilIdArray = bo.getCoilIds().split(","); + List coilIdList = new ArrayList<>(); + for (String coilIdStr : coilIdArray) { + if (StringUtils.isNotBlank(coilIdStr)) { + try { + coilIdList.add(Long.parseLong(coilIdStr.trim())); + } catch (NumberFormatException e) { + // 忽略无效的ID格式 + } + } + } + if (!coilIdList.isEmpty()) { + qw.in("mc.coil_id", coilIdList); + } + } //逻辑删除 qw.eq("mc.del_flag", 0); //把team字段作为筛选条件 @@ -1752,4 +1772,114 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { return lqw; } + + /** + * 查询可用于发货计划的钢卷(未被任何发货计划引用的钢卷) + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 钢卷分页列表 + */ + @Override + public TableDataInfo queryAvailableForDelivery(WmsMaterialCoilBo bo, PageQuery pageQuery) { + // 构建查询条件 + LambdaQueryWrapper lqw = buildAvailableCoilQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 构建可用于发货计划的钢卷查询条件 + * 排除已被任何发货计划引用的钢卷 + * + * @param bo 查询条件 + * @return 查询构造器 + */ + private LambdaQueryWrapper buildAvailableCoilQueryWrapper(WmsMaterialCoilBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + + // 基础查询条件 + lqw.eq(WmsMaterialCoil::getDelFlag, 0); // 未删除 + lqw.eq(WmsMaterialCoil::getStatus, 0); // 在库状态 + lqw.eq(WmsMaterialCoil::getDataType, 1); // 当前数据 + + // 应用传入的查询条件 + if (StringUtils.isNotBlank(bo.getEnterCoilNo())) { + lqw.like(WmsMaterialCoil::getEnterCoilNo, bo.getEnterCoilNo()); + } + if (StringUtils.isNotBlank(bo.getCurrentCoilNo())) { + lqw.like(WmsMaterialCoil::getCurrentCoilNo, bo.getCurrentCoilNo()); + } + if (StringUtils.isNotBlank(bo.getSupplierCoilNo())) { + lqw.like(WmsMaterialCoil::getSupplierCoilNo, bo.getSupplierCoilNo()); + } + if (bo.getWarehouseId() != null) { + lqw.eq(WmsMaterialCoil::getWarehouseId, bo.getWarehouseId()); + } + if (bo.getItemId() != null) { + lqw.eq(WmsMaterialCoil::getItemId, bo.getItemId()); + } + if (StringUtils.isNotBlank(bo.getItemType())) { + lqw.eq(WmsMaterialCoil::getItemType, bo.getItemType()); + } + + // 排除已被发货计划引用的钢卷 + LambdaQueryWrapper planQuery =Wrappers.lambdaQuery(); + planQuery.eq(WmsDeliveryPlan::getDelFlag, 0) // 过滤已删除的计划 + .isNotNull(WmsDeliveryPlan::getCoil) // 只查有钢卷ID的计划 + .ne(WmsDeliveryPlan::getCoil, ""); // 排除空字符串 + List plans = deliveryPlanMapper.selectList(planQuery); + if (!plans.isEmpty()) { + Set usedCoilIds = new HashSet<>(); + for (WmsDeliveryPlan plan : plans) { + if (StringUtils.isNotBlank(plan.getCoil())) { + String[] coilIds = plan.getCoil().split(","); + for (String coilIdStr : coilIds) { + try { + usedCoilIds.add(Long.parseLong(coilIdStr.trim())); + } catch (NumberFormatException ignored) { + // 忽略无效的ID + } + } + } + } + + if (!usedCoilIds.isEmpty()) { + lqw.notIn(WmsMaterialCoil::getCoilId, usedCoilIds); + } + } + + return lqw; + } + + + /** + * 批量更新钢卷发货状态 + * + * @param coilIds 钢卷ID列表 + * @param status 目标状态 (0=在库, 1=在途, 2=已出库) + * @return 是否更新成功 + */ + @Override + public Boolean batchUpdateDeliveryStatus(List coilIds, Integer status) { + if (coilIds == null || coilIds.isEmpty()) { + return false; + } + + if (status == null || status < 0 || status > 2) { + throw new RuntimeException("无效的状态值,状态必须在0-2之间"); + } + + // 构造更新条件 + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.in(WmsMaterialCoil::getCoilId, coilIds); + updateWrapper.set(WmsMaterialCoil::getStatus, status); + + // 如果是设置为已出库状态,同时更新出库时间 + if (status == 1) { + updateWrapper.set(WmsMaterialCoil::getExportTime, new Date()); + } + + return baseMapper.update(null, updateWrapper) > 0; + } } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsDeliveryPlanMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsDeliveryPlanMapper.xml index 4e9b23e8..32cb8357 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsDeliveryPlanMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsDeliveryPlanMapper.xml @@ -9,6 +9,10 @@ + + + +