package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; 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.*; import com.klp.domain.bo.WmsMaterialCoilBo; import com.klp.domain.vo.WmsMaterialCoilVo; import com.klp.mapper.*; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.domain.bo.WmsTransferOrderItemBo; import com.klp.domain.vo.WmsTransferOrderItemVo; import com.klp.service.IWmsTransferOrderItemService; import com.klp.service.IWmsMaterialCoilService; import com.klp.service.IWmsWarehouseService; import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; /** * 调拨单明细Service业务层处理 * * @author klp * @date 2026-03-27 */ @RequiredArgsConstructor @Service public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemService { private final WmsTransferOrderItemMapper baseMapper; private final WmsRawMaterialMapper rawMaterialMapper; private final WmsProductMapper productMapper; private final WmsMaterialCoilMapper coilMapper; private final IWmsMaterialCoilService coilService; private final IWmsWarehouseService warehouseService; private final WmsWarehouseMapper warehouseMapper; private final WmsTransferOrderMapper wmsTransferOrderMapper; /** * 查询调拨单明细 */ @Override public WmsTransferOrderItemVo queryById(Long itemId){ WmsTransferOrderItemVo vo = baseMapper.selectVoById(itemId); if (vo != null) { fillDetailInfo(vo); } return vo; } /** * 查询调拨单明细列表 */ @Override public TableDataInfo queryPageList(WmsTransferOrderItemBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); List records = result.getRecords(); fillBatchInfo(records); return TableDataInfo.build(result); } /** * 查询调拨单明细列表 */ @Override public List queryList(WmsTransferOrderItemBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); List list = baseMapper.selectVoList(lqw); fillBatchInfo(list); return list; } private void fillBatchInfo(List list) { if (list == null || list.isEmpty()) { return; } // 收集所有需要的ID List coilIds = list.stream() .map(WmsTransferOrderItemVo::getCoilId) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); // 收集:改之前物料ID List itemIdsBefore = list.stream() .map(WmsTransferOrderItemVo::getItemIdBefore) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); // 2. 收集:改之后物料ID List itemIdsAfter = list.stream() .map(WmsTransferOrderItemVo::getItemIdAfter) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); // 3. 收集:改前仓库ID List warehouseIdsBefore = list.stream() .map(WmsTransferOrderItemVo::getWarehouseIdBefore) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); // 4. 收集:改后仓库ID List warehouseIdsAfter = list.stream() .map(WmsTransferOrderItemVo::getWarehouseIdAfter) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); // 5. 合并所有仓库ID(和物料ID逻辑完全一致!) List warehouseIds = new ArrayList<>(); warehouseIds.addAll(warehouseIdsBefore); warehouseIds.addAll(warehouseIdsAfter); // 批量查询钢卷 Map coilMap = new HashMap<>(); if (!coilIds.isEmpty()) { String coilIdsStr = String.join(",", coilIds.stream().map(String::valueOf).collect(Collectors.toList())); WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); coilBo.setCoilIds(coilIdsStr); List coilList = coilService.queryList(coilBo); coilMap = coilList.stream().collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, v -> v, (a, b) -> a)); } // 批量查询原料 List allItemIds = new ArrayList<>(itemIdsBefore); allItemIds.addAll(itemIdsAfter); List rawMaterialIds = allItemIds.stream().distinct().collect(Collectors.toList()); Map rawMaterialMap = new HashMap<>(); if (!rawMaterialIds.isEmpty()) { List rawMaterials = rawMaterialMapper.selectBatchIds(rawMaterialIds); rawMaterialMap = rawMaterials.stream().collect(Collectors.toMap(WmsRawMaterial::getRawMaterialId, v -> v, (a, b) -> a)); } // 批量查询产品 List productIds = allItemIds.stream().distinct().collect(Collectors.toList()); Map productMap = new HashMap<>(); if (!productIds.isEmpty()) { List products = productMapper.selectBatchIds(productIds); productMap = products.stream().collect(Collectors.toMap(WmsProduct::getProductId, v -> v, (a, b) -> a)); } Map warehouseNameMap = new HashMap<>(); if (!warehouseIds.isEmpty()) { // 批量查 List warehouseList = warehouseMapper.selectBatchIds(warehouseIds); warehouseNameMap = warehouseList.stream() .collect(Collectors.toMap( WmsWarehouse::getWarehouseId, WmsWarehouse::getWarehouseName, (a, b) -> a )); } // 填充数据 for (WmsTransferOrderItemVo vo : list) { // 钢卷信息 WmsMaterialCoilVo coilVo = coilMap.get(vo.getCoilId()); if (coilVo != null) { vo.setCoil(coilVo); } // 改之前物料信息 fillMaterialInfoByMap(vo, vo.getItemIdBefore(), vo.getMaterialTypeBefore(), "Before", rawMaterialMap, productMap); // 改之后物料信息 fillMaterialInfoByMap(vo, vo.getItemIdAfter(), vo.getMaterialTypeAfter(), "After", rawMaterialMap, productMap); // 库区名称 vo.setWarehouseNameBefore(warehouseNameMap.get(vo.getWarehouseIdBefore())); vo.setWarehouseNameAfter(warehouseNameMap.get(vo.getWarehouseIdAfter())); // 物料类型名称 vo.setMaterialTypeBeforeName(vo.getMaterialTypeBefore() != null ? (vo.getMaterialTypeBefore() == 1 ? "原料" : "成品") : null); vo.setMaterialTypeAfterName(vo.getMaterialTypeAfter() != null ? (vo.getMaterialTypeAfter() == 1 ? "原料" : "成品") : null); } } private void fillMaterialInfoByMap(WmsTransferOrderItemVo vo, Long itemId, Long materialType, String suffix, Map rawMaterialMap, Map productMap) { if (itemId == null || materialType == null) { return; } if (materialType == 1) { WmsRawMaterial raw = rawMaterialMap.get(itemId); if (raw != null) { if ("Before".equals(suffix)) { vo.setMaterialNameBefore(raw.getRawMaterialName()); vo.setSpecificationBefore(raw.getSpecification()); vo.setMaterialBefore(raw.getMaterial()); vo.setSurfaceTreatmentBefore(raw.getSurfaceTreatmentDesc()); vo.setManufacturerBefore(raw.getManufacturer()); vo.setZincLayerBefore(raw.getZincLayer()); } else if ("After".equals(suffix)) { vo.setMaterialNameAfter(raw.getRawMaterialName()); vo.setSpecificationAfter(raw.getSpecification()); vo.setMaterialAfter(raw.getMaterial()); vo.setSurfaceTreatmentAfter(raw.getSurfaceTreatmentDesc()); vo.setManufacturerAfter(raw.getManufacturer()); vo.setZincLayerAfter(raw.getZincLayer()); } } } else if (materialType == 2) { WmsProduct product = productMap.get(itemId); if (product != null) { if ("Before".equals(suffix)) { vo.setMaterialNameBefore(product.getProductName()); vo.setSpecificationBefore(product.getSpecification()); vo.setMaterialBefore(product.getMaterial()); vo.setSurfaceTreatmentBefore(product.getSurfaceTreatmentDesc()); vo.setManufacturerBefore(product.getManufacturer()); vo.setZincLayerBefore(product.getZincLayer()); } else if ("After".equals(suffix)) { vo.setMaterialNameAfter(product.getProductName()); vo.setSpecificationAfter(product.getSpecification()); vo.setMaterialAfter(product.getMaterial()); vo.setSurfaceTreatmentAfter(product.getSurfaceTreatmentDesc()); vo.setManufacturerAfter(product.getManufacturer()); vo.setZincLayerAfter(product.getZincLayer()); } } } } private void fillDetailInfo(WmsTransferOrderItemVo vo) { // 填充改之前物料信息 fillMaterialInfoBefore(vo, vo.getItemIdBefore(), vo.getMaterialTypeBefore(), "Before"); // 填充改之后物料信息 fillMaterialInfoAfter(vo, vo.getItemIdAfter(), vo.getMaterialTypeAfter(), "After"); // 填充库区名称 if (vo.getWarehouseIdBefore() != null) { try { vo.setWarehouseNameBefore(warehouseService.queryById(vo.getWarehouseIdBefore()).getWarehouseName()); } catch (Exception e) { // 忽略 } } if (vo.getWarehouseIdAfter() != null) { try { vo.setWarehouseNameAfter(warehouseService.queryById(vo.getWarehouseIdAfter()).getWarehouseName()); } catch (Exception e) { // 忽略 } } // 填充物料类型名称 vo.setMaterialTypeBeforeName(vo.getMaterialTypeBefore() != null ? (vo.getMaterialTypeBefore() == 1 ? "原料" : "成品") : null); vo.setMaterialTypeAfterName(vo.getMaterialTypeAfter() != null ? (vo.getMaterialTypeAfter() == 1 ? "原料" : "成品") : null); } private void fillMaterialInfoAfter(WmsTransferOrderItemVo vo, Long itemIdAfter, Long materialTypeAfter, String after) { if (itemIdAfter == null || materialTypeAfter == null) { return; } if (materialTypeAfter == 1) { WmsRawMaterial raw = rawMaterialMapper.selectById(itemIdAfter); if (raw != null) { vo.setMaterialNameAfter(raw.getRawMaterialName()); vo.setSpecificationAfter(raw.getSpecification()); vo.setMaterialAfter(raw.getMaterial()); vo.setSurfaceTreatmentAfter(raw.getSurfaceTreatmentDesc()); vo.setManufacturerAfter(raw.getManufacturer()); vo.setZincLayerAfter(raw.getZincLayer()); } } else if (materialTypeAfter == 2) { WmsProduct product = productMapper.selectById(itemIdAfter); if (product != null) { vo.setMaterialNameAfter(product.getProductName()); vo.setSpecificationAfter(product.getSpecification()); vo.setMaterialAfter(product.getMaterial()); vo.setSurfaceTreatmentAfter(product.getSurfaceTreatmentDesc()); vo.setManufacturerAfter(product.getManufacturer()); vo.setZincLayerAfter(product.getZincLayer()); } } } private void fillMaterialInfoBefore(WmsTransferOrderItemVo vo, Long itemId, Long materialType, String suffix) { if (itemId == null || materialType == null) { return; } if (materialType == 1) { WmsRawMaterial raw = rawMaterialMapper.selectById(itemId); if (raw != null) { vo.setMaterialNameBefore(raw.getRawMaterialName()); vo.setSpecificationBefore(raw.getSpecification()); vo.setMaterialBefore(raw.getMaterial()); vo.setSurfaceTreatmentBefore(raw.getSurfaceTreatmentDesc()); vo.setManufacturerBefore(raw.getManufacturer()); vo.setZincLayerBefore(raw.getZincLayer()); } } else if (materialType == 2) { WmsProduct product = productMapper.selectById(itemId); if (product != null) { vo.setMaterialNameBefore(product.getProductName()); vo.setSpecificationBefore(product.getSpecification()); vo.setMaterialBefore(product.getMaterial()); vo.setSurfaceTreatmentBefore(product.getSurfaceTreatmentDesc()); vo.setManufacturerBefore(product.getManufacturer()); vo.setZincLayerBefore(product.getZincLayer()); } } } private LambdaQueryWrapper buildQueryWrapper(WmsTransferOrderItemBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getTransferId() != null, WmsTransferOrderItem::getTransferId, bo.getTransferId()); lqw.eq(bo.getCoilId() != null, WmsTransferOrderItem::getCoilId, bo.getCoilId()); lqw.eq(bo.getItemIdBefore() != null, WmsTransferOrderItem::getItemIdBefore, bo.getItemIdBefore()); lqw.eq(bo.getItemIdAfter() != null, WmsTransferOrderItem::getItemIdAfter, bo.getItemIdAfter()); lqw.eq(bo.getMaterialTypeBefore() != null, WmsTransferOrderItem::getMaterialTypeBefore, bo.getMaterialTypeBefore()); lqw.eq(bo.getMaterialTypeAfter() != null, WmsTransferOrderItem::getMaterialTypeAfter, bo.getMaterialTypeAfter()); lqw.eq(bo.getWarehouseIdBefore() != null, WmsTransferOrderItem::getWarehouseIdBefore, bo.getWarehouseIdBefore()); lqw.eq(bo.getWarehouseIdAfter() != null, WmsTransferOrderItem::getWarehouseIdAfter, bo.getWarehouseIdAfter()); lqw.eq(bo.getIsTransferred() != null, WmsTransferOrderItem::getIsTransferred, bo.getIsTransferred()); return lqw; } /** * 新增调拨单明细 */ @Override public Boolean insertByBo(WmsTransferOrderItemBo bo) { WmsTransferOrderItem add = BeanUtil.toBean(bo, WmsTransferOrderItem.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setOrderItemId(add.getOrderItemId()); } return flag; } /** * 修改调拨单明细 */ @Override public Boolean updateByBo(WmsTransferOrderItemBo bo) { WmsTransferOrderItem update = BeanUtil.toBean(bo, WmsTransferOrderItem.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(WmsTransferOrderItem entity){ //TODO 做一些数据校验,如唯一约束 } /** * 批量删除调拨单明细 */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; } /** * 根据itemId和itemType匹配或新增物料 * itemType: raw_material-原料, product-成品 */ @Override @Transactional(rollbackFor = Exception.class) public Long matchOrCreateMaterial(Long itemId, String itemType) { if (Objects.equals(itemType, "raw_material")) { return matchOrCreateFromRawMaterial(itemId); } else if (Objects.equals(itemType, "product")) { return matchOrCreateFromProduct(itemId); } throw new IllegalArgumentException("无效的itemType: " + itemType); } private Long matchOrCreateFromRawMaterial(Long itemId) { WmsRawMaterial rawMaterial = rawMaterialMapper.selectById(itemId); if (rawMaterial == null) { throw new IllegalArgumentException("原料不存在: " + itemId); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(WmsProduct::getProductName, rawMaterial.getRawMaterialName()) .eq(WmsProduct::getSpecification, rawMaterial.getSpecification()) .eq(WmsProduct::getManufacturer, rawMaterial.getManufacturer()) .eq(WmsProduct::getMaterial, rawMaterial.getMaterial()) .eq(WmsProduct::getSurfaceTreatmentDesc, rawMaterial.getSurfaceTreatmentDesc()) .eq(WmsProduct::getZincLayer, rawMaterial.getZincLayer()) .last("LIMIT 1"); WmsProduct existProduct = productMapper.selectOne(wrapper); if (existProduct != null) { return existProduct.getProductId(); } WmsProduct newProduct = new WmsProduct(); newProduct.setProductName(rawMaterial.getRawMaterialName()); newProduct.setSpecification(rawMaterial.getSpecification()); newProduct.setManufacturer(rawMaterial.getManufacturer()); newProduct.setMaterial(rawMaterial.getMaterial()); newProduct.setSurfaceTreatmentDesc(rawMaterial.getSurfaceTreatmentDesc()); newProduct.setZincLayer(rawMaterial.getZincLayer()); newProduct.setDelFlag(0); productMapper.insert(newProduct); return newProduct.getProductId(); } private Long matchOrCreateFromProduct(Long itemId) { WmsProduct product = productMapper.selectById(itemId); if (product == null) { throw new IllegalArgumentException("产品不存在: " + itemId); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(WmsRawMaterial::getRawMaterialName, product.getProductName()) .eq(WmsRawMaterial::getSpecification, product.getSpecification()) .eq(WmsRawMaterial::getManufacturer, product.getManufacturer()) .eq(WmsRawMaterial::getMaterial, product.getMaterial()) .eq(WmsRawMaterial::getSurfaceTreatmentDesc, product.getSurfaceTreatmentDesc()) .eq(WmsRawMaterial::getZincLayer, product.getZincLayer()) .last("LIMIT 1"); WmsRawMaterial existRawMaterial = rawMaterialMapper.selectOne(wrapper); if (existRawMaterial != null) { return existRawMaterial.getRawMaterialId(); } WmsRawMaterial newRawMaterial = new WmsRawMaterial(); newRawMaterial.setRawMaterialName(product.getProductName()); newRawMaterial.setSpecification(product.getSpecification()); newRawMaterial.setManufacturer(product.getManufacturer()); newRawMaterial.setMaterial(product.getMaterial()); newRawMaterial.setSurfaceTreatmentDesc(product.getSurfaceTreatmentDesc()); newRawMaterial.setZincLayer(product.getZincLayer()); newRawMaterial.setDelFlag(0); rawMaterialMapper.insert(newRawMaterial); return newRawMaterial.getRawMaterialId(); } /** * 批量新增调拨单明细 */ @Override @Transactional(rollbackFor = Exception.class) public Boolean batchInsert(WmsTransferOrderItemBo bo) { Long transferId = bo.getTransferId(); List coilIds = bo.getCoilIds(); if (transferId == null || coilIds == null || coilIds.isEmpty()) { throw new IllegalArgumentException("transferId和coilIds不能为空"); } // 检查同一调拨单下是否已存在相同的coilId LambdaQueryWrapper existWrapper = new LambdaQueryWrapper<>(); existWrapper.eq(WmsTransferOrderItem::getTransferId, transferId) .in(WmsTransferOrderItem::getCoilId, coilIds); List existItems = baseMapper.selectList(existWrapper); if (!existItems.isEmpty()) { List existCoilIds = existItems.stream() .map(WmsTransferOrderItem::getCoilId) .filter(Objects::nonNull) .collect(Collectors.toList()); List wmsMaterialCoils = coilMapper.selectBatchIds(existCoilIds); throw new IllegalArgumentException("当前钢卷号" + wmsMaterialCoils.stream().map(WmsMaterialCoil::getCurrentCoilNo).collect(Collectors.joining(",")) + " 已在该调拨单中存在"); } List coils = coilMapper.selectBatchIds(coilIds); if (coils.isEmpty()) { throw new IllegalArgumentException("钢卷不存在"); } List items = new ArrayList<>(); for (WmsMaterialCoil coil : coils) { WmsTransferOrderItem item = new WmsTransferOrderItem(); item.setTransferId(transferId); item.setCoilId(coil.getCoilId()); item.setItemIdBefore(coil.getItemId()); // 根据 itemType 设置 materialType: raw_material -> 1, product -> 2 if ("raw_material".equals(coil.getItemType())) { item.setMaterialTypeBefore(1L); } else if ("product".equals(coil.getItemType())) { item.setMaterialTypeBefore(2L); } item.setWarehouseIdBefore(coil.getWarehouseId()); items.add(item); } return baseMapper.insertBatch(items); } /** * 确认调拨 */ @Override @Transactional(rollbackFor = Exception.class) public Boolean confirmTransfer(WmsTransferOrderItemBo bo) { Long transferId = bo.getTransferId(); Long orderItemId = bo.getOrderItemId(); Long coilId = bo.getCoilId(); Long itemId = bo.getItemIdAfter(); Long warehouseId = bo.getWarehouseIdAfter(); if (coilId == null) { throw new IllegalArgumentException("coilId不能为空"); } // 查询钢卷 WmsMaterialCoil coil = coilMapper.selectById(coilId); if (coil == null) { throw new IllegalArgumentException("钢卷不存在"); } // 查询调拨明细 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(true, WmsTransferOrderItem::getCoilId, coilId); wrapper.eq(orderItemId != null, WmsTransferOrderItem::getOrderItemId, orderItemId); wrapper.eq(transferId != null, WmsTransferOrderItem::getTransferId, transferId); WmsTransferOrderItem item = baseMapper.selectOne(wrapper); if (item == null) { throw new IllegalArgumentException("调拨明细不存在"); } // 校验调拨单审批状态 if (item.getTransferId() != null) { WmsTransferOrder wmsTransferOrder = wmsTransferOrderMapper.selectById(item.getTransferId()); if (wmsTransferOrder == null) { throw new IllegalArgumentException("调拨单不存在"); } // 审批状态: 0-待审批 1-已通过 2-已驳回 if (wmsTransferOrder.getApproveStatus() == null || wmsTransferOrder.getApproveStatus() != 1) { throw new IllegalArgumentException("审批未通过,不能调拨"); } } // 确定最终值:如果没传则使用改之前的值 Long finalItemId = itemId != null ? itemId : item.getItemIdBefore(); Long finalMaterialType = bo.getMaterialTypeAfter() != null ? bo.getMaterialTypeAfter() : item.getMaterialTypeBefore(); Long finalWarehouseId = warehouseId != null ? warehouseId : item.getWarehouseIdBefore(); String finalItemType = finalMaterialType == 1 ? "raw_material" : "product"; // 先校验itemId是否存在(根据itemType) if (finalItemId != null && StringUtils.isNotBlank(finalItemType)) { if ("raw_material".equals(finalItemType)) { WmsRawMaterial rawMaterial = rawMaterialMapper.selectById(finalItemId); if (rawMaterial == null) { throw new RuntimeException("原材料不存在,ID: " + finalItemId); } } else { WmsProduct product = productMapper.selectById(finalItemId); if (product == null) { throw new RuntimeException("产品不存在,ID: " + finalItemId); } } } // 更新调拨明细 item.setItemIdAfter(finalItemId); item.setMaterialTypeAfter(finalMaterialType); item.setWarehouseIdAfter(finalWarehouseId); item.setIsTransferred(1); // 标记为已调拨 baseMapper.updateById(item); // 更新钢卷信息 coil.setItemId(finalItemId); coil.setItemType(finalItemType); coil.setMaterialType(finalMaterialType == 1 ? "原料" : "成品"); coil.setWarehouseId(finalWarehouseId); // 设置调拨类型 if (item.getTransferId() != null) { WmsTransferOrder wmsTransferOrder = wmsTransferOrderMapper.selectById(item.getTransferId()); if (wmsTransferOrder != null) { coil.setTransferType(wmsTransferOrder.getTransferType()); } } coilMapper.updateById(coil); return true; } /** * 取消调拨 */ @Override @Transactional(rollbackFor = Exception.class) public Boolean cancelTransfer(Long orderItemId) { // 查询调拨明细 WmsTransferOrderItem item = baseMapper.selectById(orderItemId); if (item == null) { throw new IllegalArgumentException("明细记录不存在"); } Long coilId = item.getCoilId(); if (coilId == null) { throw new IllegalArgumentException("钢卷ID不能为空"); } // 查询钢卷 WmsMaterialCoil coil = coilMapper.selectById(coilId); if (coil == null) { throw new IllegalArgumentException("钢卷不存在"); } // 恢复到调拨前的状态 Long originalItemId = item.getItemIdBefore(); Long originalMaterialType = item.getMaterialTypeBefore(); Long originalWarehouseId = item.getWarehouseIdBefore(); if (originalItemId != null && originalMaterialType != null) { coil.setItemId(originalItemId); coil.setItemType(originalMaterialType == 1 ? "raw_material" : "product"); coil.setMaterialType(originalMaterialType == 1 ? "原料" : "成品"); } if (originalWarehouseId != null) { coil.setWarehouseId(originalWarehouseId); } // 清空调拨类型 coil.setTransferType(null); coilMapper.updateById(coil); // 逻辑删除调拨明细记录(使用MyBatis-Plus的逻辑删除) baseMapper.deleteById(orderItemId); return true; } }