From a4a0afee86927b2fa28c6e6173211d12b9bac818 Mon Sep 17 00:00:00 2001 From: "maxw@mesnac.com" Date: Wed, 5 Feb 2025 15:55:21 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=B8=BB=E5=AD=90=E8=A1=A8=E9=A1=B5=E9=9D=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WmsPurchaseOrderController.java | 4 +- .../dromara/wms/domain/BaseSupplierInfo.java | 90 ++++++++++++++ .../org/dromara/wms/domain/WmsInventory.java | 2 +- .../dromara/wms/domain/WmsPurchaseOrder.java | 33 ++++- .../wms/domain/WmsPurchaseOrderDetail.java | 7 +- .../dromara/wms/domain/bo/WmsInventoryBo.java | 1 + .../domain/bo/WmsPurchaseOrderDetailBo.java | 8 +- .../wms/domain/vo/BaseSupplierInfoVo.java | 116 ++++++++++++++++++ .../domain/vo/WmsPurchaseOrderDetailVo.java | 7 +- .../wms/domain/vo/WmsPurchaseOrderVo.java | 4 + .../wms/mapper/BaseSupplierInfoMapper.java | 15 +++ .../WmsInventoryCheckRecordServiceImpl.java | 4 +- .../service/impl/WmsMoveOrderServiceImpl.java | 4 +- .../impl/WmsPurchaseOrderServiceImpl.java | 42 +++++++ .../mapper/wms/WmsInventoryMapper.xml | 16 ++- 15 files changed, 330 insertions(+), 23 deletions(-) create mode 100644 ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/BaseSupplierInfo.java create mode 100644 ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/BaseSupplierInfoVo.java create mode 100644 ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/BaseSupplierInfoMapper.java diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsPurchaseOrderController.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsPurchaseOrderController.java index c1529b62..7c0da25b 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsPurchaseOrderController.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsPurchaseOrderController.java @@ -77,7 +77,7 @@ public class WmsPurchaseOrderController extends BaseController { @Log(title = "采购订单", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody WmsPurchaseOrderBo bo) { + public R add(@RequestBody WmsPurchaseOrderBo bo) { return R.ok(wmsPurchaseOrderService.insertByBo(bo)); } @@ -88,7 +88,7 @@ public class WmsPurchaseOrderController extends BaseController { @Log(title = "采购订单", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody WmsPurchaseOrderBo bo) { + public R edit(@RequestBody WmsPurchaseOrderBo bo) { return toAjax(wmsPurchaseOrderService.updateByBo(bo)); } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/BaseSupplierInfo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/BaseSupplierInfo.java new file mode 100644 index 00000000..c6074ca2 --- /dev/null +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/BaseSupplierInfo.java @@ -0,0 +1,90 @@ +package org.dromara.wms.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; +import java.util.Date; + +/** + * 供应商信息对象 base_supplier_info + * + * @author ZangCH + * @date 2025-01-07 + */ +@Data +@TableName("base_supplier_info") +public class BaseSupplierInfo { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @TableId(value = "supplier_id", type = IdType.AUTO) + private Long supplierId; + + /** + * 供应商编号 + */ + private String supplierCode; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * erp的主键 + */ + private Long erpId; + + /** + * 激活状态(1启用 0停用) + */ + private String supplierStatus; + + /** + * 审核日期 + */ + private Date auditDate; + + /** + * erp最后更新时间 + */ + private Date erpModifyDate; + + /** + * 备注 + */ + private String remark; + /** + * 租户id + */ + private String tenantId; + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + +} diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsInventory.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsInventory.java index c582aa9b..74ac0e8c 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsInventory.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsInventory.java @@ -93,7 +93,7 @@ public class WmsInventory{ private Date updateTime; @TableField(exist = false) private String warehouseCode;//字段映射 - @TableField(exist = false) +// @TableField(exist = false) private String materialCode;//字段映射 private String warehouseId; diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrder.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrder.java index a308aa15..957fc868 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrder.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrder.java @@ -16,9 +16,8 @@ import java.io.Serial; * @date 2025-01-08 */ @Data -@EqualsAndHashCode(callSuper = true) @TableName("wms_purchase_order") -public class WmsPurchaseOrder extends TenantEntity { +public class WmsPurchaseOrder { @Serial private static final long serialVersionUID = 1L; @@ -88,6 +87,36 @@ public class WmsPurchaseOrder extends TenantEntity { * 审核意见 */ private String auditComments; + /** + * 供应商编号 + */ + @TableField(exist = false) + private String supplierCode; + + /** + * 租户id + */ + private String tenantId; + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrderDetail.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrderDetail.java index 86d73a44..d8b9b4a5 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrderDetail.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsPurchaseOrderDetail.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.math.BigDecimal; /** * 采购订单-物料对象 wms_purchase_order_detail @@ -45,12 +46,12 @@ public class WmsPurchaseOrderDetail extends TenantEntity { /** * 含税单价 */ - private Long taxPrice; + private BigDecimal taxPrice; /** * 采购数量 */ - private Long purchaseQty; + private BigDecimal purchaseQty; /** * 物料规格 @@ -65,7 +66,7 @@ public class WmsPurchaseOrderDetail extends TenantEntity { /** * 送货数量=送货单数量=总入库数量 */ - private Long deliveryQty; + private BigDecimal deliveryQty; private Long materialId; diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsInventoryBo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsInventoryBo.java index f71fb547..d1fd96c9 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsInventoryBo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsInventoryBo.java @@ -77,5 +77,6 @@ public class WmsInventoryBo extends BaseEntity { private Long storeId; private String tenantId; private String warehouseId; + private String materialCode;//字段映射 } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsPurchaseOrderDetailBo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsPurchaseOrderDetailBo.java index 25eecce7..e7edf92f 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsPurchaseOrderDetailBo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/bo/WmsPurchaseOrderDetailBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.math.BigDecimal; + /** * 采购订单-物料业务对象 wms_purchase_order_detail * @@ -46,12 +48,12 @@ public class WmsPurchaseOrderDetailBo extends BaseEntity { /** * 含税单价 */ - private Long taxPrice; + private BigDecimal taxPrice; /** * 采购数量 */ - private Long purchaseQty; + private BigDecimal purchaseQty; /** * 物料规格 @@ -66,7 +68,7 @@ public class WmsPurchaseOrderDetailBo extends BaseEntity { /** * 送货数量=送货单数量=总入库数量 */ - private Long deliveryQty; + private BigDecimal deliveryQty; private Long materialId; diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/BaseSupplierInfoVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/BaseSupplierInfoVo.java new file mode 100644 index 00000000..151f1f02 --- /dev/null +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/BaseSupplierInfoVo.java @@ -0,0 +1,116 @@ +package org.dromara.wms.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.wms.domain.BaseSupplierInfo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 供应商信息视图对象 base_supplier_info + * + * @author ZangCH + * @date 2025-01-07 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BaseSupplierInfo.class) +public class BaseSupplierInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long supplierId; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 供应商编号 + */ + @ExcelProperty(value = "供应商编号") + private String supplierCode; + + /** + * 供应商名称 + */ + @ExcelProperty(value = "供应商名称") + private String supplierName; + + /** + * erp的主键 + */ + @ExcelProperty(value = "erp的主键") + private Long erpId; + + /** + * 激活状态(1启用 0停用) + */ + @ExcelProperty(value = "激活状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String supplierStatus; + + /** + * 审核日期 + */ + @ExcelProperty(value = "审核日期") + private Date auditDate; + + /** + * erp最后更新时间 + */ + @ExcelProperty(value = "erp最后更新时间") + private Date erpModifyDate; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + @ExcelProperty(value = "创建部门") + private Long createDept; + + /** + * 创建人 + */ + @ExcelProperty(value = "创建人") + private Long createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新人 + */ + @ExcelProperty(value = "更新人") + private Long updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + +} diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderDetailVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderDetailVo.java index 16a74e90..5df46354 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderDetailVo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderDetailVo.java @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; @@ -62,13 +63,13 @@ public class WmsPurchaseOrderDetailVo implements Serializable { * 含税单价 */ @ExcelProperty(value = "含税单价") - private Long taxPrice; + private BigDecimal taxPrice; /** * 采购数量 */ @ExcelProperty(value = "采购数量") - private Long purchaseQty; + private BigDecimal purchaseQty; /** * 物料规格 @@ -86,7 +87,7 @@ public class WmsPurchaseOrderDetailVo implements Serializable { * 送货数量=送货单数量=总入库数量 */ @ExcelProperty(value = "送货数量=送货单数量=总入库数量") - private Long deliveryQty; + private BigDecimal deliveryQty; /** * 租户号 diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderVo.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderVo.java index 109f8d3d..89a042b9 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderVo.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/vo/WmsPurchaseOrderVo.java @@ -141,6 +141,10 @@ public class WmsPurchaseOrderVo implements Serializable { */ @ExcelProperty(value = "审核意见") private String auditComments; + /** + * 供应商编号 + */ + private String supplierCode; } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/BaseSupplierInfoMapper.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/BaseSupplierInfoMapper.java new file mode 100644 index 00000000..28b074d1 --- /dev/null +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/BaseSupplierInfoMapper.java @@ -0,0 +1,15 @@ +package org.dromara.wms.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.wms.domain.BaseSupplierInfo; +import org.dromara.wms.domain.vo.BaseSupplierInfoVo; + +/** + * 供应商信息Mapper接口 + * + * @author ZangCH + * @date 2025-01-07 + */ +public interface BaseSupplierInfoMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryCheckRecordServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryCheckRecordServiceImpl.java index 8e884c7f..80c6c9bd 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryCheckRecordServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsInventoryCheckRecordServiceImpl.java @@ -79,8 +79,8 @@ public class WmsInventoryCheckRecordServiceImpl implements IWmsInventoryCheckRec .eq(StringUtils.isNotBlank(bo.getCheckCode()), WmsInventoryCheckRecord::getCheckCode, bo.getCheckCode()) .eq(StringUtils.isNotBlank(bo.getBatchCode()), WmsInventoryCheckRecord::getBatchCode, bo.getBatchCode()) .eq(bo.getMaterialId() != null, WmsInventoryCheckRecord::getMaterialId, bo.getMaterialId()) - .eq(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryCheckRecord::getLocationCode, bo.getLocationCode()) - .eq(StringUtils.isNotBlank(bo.getMaterialCode()), WmsInventoryCheckRecord::getMaterialCode, bo.getMaterialCode()) + .like(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryCheckRecord::getLocationCode, bo.getLocationCode()) + .like(StringUtils.isNotBlank(bo.getMaterialCode()), WmsInventoryCheckRecord::getMaterialCode, bo.getMaterialCode()) .like(StringUtils.isNotBlank(bo.getMaterialName()), WmsInventoryCheckRecord::getMaterialName, bo.getMaterialName()) .eq(StringUtils.isNotBlank(bo.getInventoryQty()), WmsInventoryCheckRecord::getInventoryQty, bo.getInventoryQty()) .eq(bo.getCheckQty() != null, WmsInventoryCheckRecord::getCheckQty, bo.getCheckQty()) diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsMoveOrderServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsMoveOrderServiceImpl.java index 02cc091a..dc681a8b 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsMoveOrderServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsMoveOrderServiceImpl.java @@ -92,9 +92,9 @@ public class WmsMoveOrderServiceImpl implements IWmsMoveOrderService { .eq(bo.getMaterialId() != null, WmsMoveOrder::getMaterialId, bo.getMaterialId()) .eq(StringUtils.isNotBlank(bo.getMaterialCategories()), WmsMoveOrder::getMaterialCategories, bo.getMaterialCategories()) .eq(bo.getWarehouseId() != null, WmsMoveOrder::getWarehouseId, bo.getWarehouseId()) - .eq(bo.getPlanLocationCode() != null, WmsMoveOrder::getPlanLocationCode, bo.getPlanLocationCode()) + .like(bo.getPlanLocationCode() != null, WmsMoveOrder::getPlanLocationCode, bo.getPlanLocationCode()) .eq(StringUtils.isNotBlank(bo.getOrderStatus()), WmsMoveOrder::getOrderStatus, bo.getOrderStatus()) - .eq(bo.getTargetLocationCode() != null, WmsMoveOrder::getTargetLocationCode, bo.getTargetLocationCode()) + .like(bo.getTargetLocationCode() != null, WmsMoveOrder::getTargetLocationCode, bo.getTargetLocationCode()) .eq(StringUtils.isNotBlank(bo.getAuditBy()), WmsMoveOrder::getAuditBy, bo.getAuditBy()) .eq(bo.getAuditTime() != null, WmsMoveOrder::getAuditTime, bo.getAuditTime()) .eq(StringUtils.isNotBlank(bo.getAuditStatus()), WmsMoveOrder::getAuditStatus, bo.getAuditStatus()) diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPurchaseOrderServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPurchaseOrderServiceImpl.java index bb1ccf85..909fb30b 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPurchaseOrderServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsPurchaseOrderServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.wms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,6 +10,11 @@ import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.wms.domain.BaseSupplierInfo; +import org.dromara.wms.domain.WmsInstockOrder; +import org.dromara.wms.domain.vo.WmsInstockOrderVo; +import org.dromara.wms.mapper.WmsInstockOrderMapper; import org.springframework.stereotype.Service; import org.dromara.wms.domain.bo.WmsPurchaseOrderBo; import org.dromara.wms.domain.vo.WmsPurchaseOrderVo; @@ -16,9 +22,12 @@ import org.dromara.wms.domain.WmsPurchaseOrder; import org.dromara.wms.mapper.WmsPurchaseOrderMapper; import org.dromara.wms.service.IWmsPurchaseOrderService; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.concurrent.atomic.AtomicInteger; /** * 采购订单Service业务层处理 @@ -31,6 +40,10 @@ import java.util.Collection; public class WmsPurchaseOrderServiceImpl implements IWmsPurchaseOrderService { private final WmsPurchaseOrderMapper baseMapper; + private static final AtomicInteger sequence = new AtomicInteger(0); + public static Integer nextSequence() { + return sequence.incrementAndGet(); + } /** * 查询采购订单 @@ -73,6 +86,8 @@ public class WmsPurchaseOrderServiceImpl implements IWmsPurchaseOrderService { Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(WmsPurchaseOrder.class) .selectAll(WmsPurchaseOrder.class) + .select(BaseSupplierInfo::getSupplierCode) + .leftJoin(BaseSupplierInfo.class,BaseSupplierInfo::getSupplierId,WmsPurchaseOrder::getSupplierId) .eq(StringUtils.isNotBlank(bo.getPoNo()), WmsPurchaseOrder::getPoNo, bo.getPoNo()) .eq(StringUtils.isNotBlank(bo.getPoStatus()), WmsPurchaseOrder::getPoStatus, bo.getPoStatus()) .eq(StringUtils.isNotBlank(bo.getPlanDeliveryDate()), WmsPurchaseOrder::getPlanDeliveryDate, bo.getPlanDeliveryDate()) @@ -96,14 +111,39 @@ public class WmsPurchaseOrderServiceImpl implements IWmsPurchaseOrderService { */ @Override public WmsPurchaseOrder insertByBo(WmsPurchaseOrderBo bo) { + String username = LoginHelper.getUsername(); + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHssmm"); + String orderDate = format.format(date); + String order = "PUR"; + String orderLast=""; + Integer value = nextSequence(); + if (value.toString().length()==4){ + sequence.set(1); + orderLast = generateOrder(sequence.get()); + }else { + orderLast = generateOrder(value); + } + String purOrder = order + orderDate + orderLast; WmsPurchaseOrder add = MapstructUtils.convert(bo, WmsPurchaseOrder.class); validEntityBeforeSave(add); + add.setPoNo(purOrder); + add.setCreateBy(username); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setPoId(add.getPoId()); } return add; } + public String generateOrder(Integer value){ + if (value.toString().length()<3){ + String fixedLengthString = String.format("%03d", value); + return fixedLengthString; + }else if (value.toString().length()==3){ + return value.toString(); + } + return value.toString(); + } /** * 修改采购订单 @@ -114,6 +154,8 @@ public class WmsPurchaseOrderServiceImpl implements IWmsPurchaseOrderService { @Override public Boolean updateByBo(WmsPurchaseOrderBo bo) { WmsPurchaseOrder update = MapstructUtils.convert(bo, WmsPurchaseOrder.class); + String username = LoginHelper.getUsername(); + update.setUpdateBy(username); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/hwmom-wms/src/main/resources/mapper/wms/WmsInventoryMapper.xml b/ruoyi-modules/hwmom-wms/src/main/resources/mapper/wms/WmsInventoryMapper.xml index 6ac278df..d2052478 100644 --- a/ruoyi-modules/hwmom-wms/src/main/resources/mapper/wms/WmsInventoryMapper.xml +++ b/ruoyi-modules/hwmom-wms/src/main/resources/mapper/wms/WmsInventoryMapper.xml @@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" MAX(b.min_stock_amount) min_stock_amount, MAX(b.max_stock_amount) max_stock_amount, MAX(c.warehouse_code) warehouse_code, - MAX(d.material_code) material_code, + MAX(b.material_code) material_code, MAX(x.lock_state) lock_state, MAX(x.inventory_status) inventory_status, MAX(x.material_categories) material_categories, @@ -34,12 +34,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" x.material_id = b.material_id left join wms_base_warehouse c on x.warehouse_id = c.warehouse_id - left join base_material_info d - on - x.material_id = d.material_id +-- left join base_material_info d +-- on +-- x.material_id = d.material_id - and x.material_id = #{entity.materialId} + and x.warehouse_id = #{entity.warehouseId} + and x.lock_state = #{entity.lockState} + and x.material_categories = #{entity.materialCategories} + and x.inventory_status = #{entity.inventoryStatus} + and x.location_code like concat('%',#{entity.locationCode},'%') + and x.batch_code like concat('%',#{entity.batchCode},'%') + and x.material_code like concat('%',#{entity.materialCode},'%') group by x.warehouse_id , From bffd1aefa4c5acca2678984e0f775d2ae981b1e3 Mon Sep 17 00:00:00 2001 From: zch Date: Thu, 6 Feb 2025 11:05:52 +0800 Subject: [PATCH 2/8] =?UTF-8?q?change(hwmom-mes):=E5=9C=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=AD=89=E5=90=8C=E7=89=A9=E6=96=99=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=89=A9=E6=96=99=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E7=9A=84=E5=85=B3=E8=81=94=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 通过物料 ID 获取对应的物料名称,并将其设置到等同物料信息对象中 --- .../impl/BaseEqualMaterialInfoServiceImpl.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java index 8df3baa3..4752ab27 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseEqualMaterialInfoServiceImpl.java @@ -10,6 +10,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.mes.domain.BaseMaterialInfo; +import org.dromara.mes.mapper.BaseMaterialInfoMapper; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.BaseEqualMaterialInfoBo; import org.dromara.mes.domain.vo.BaseEqualMaterialInfoVo; @@ -21,6 +22,8 @@ import java.util.List; import java.util.Map; import java.util.Collection; +import org.springframework.util.ObjectUtils; + /** * 等同物料信息Service业务层处理 * @@ -32,6 +35,7 @@ import java.util.Collection; public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoService { private final BaseEqualMaterialInfoMapper baseMapper; + private final BaseMaterialInfoMapper baseMaterialInfoMapper; /** * 查询等同物料信息 @@ -41,7 +45,16 @@ public class BaseEqualMaterialInfoServiceImpl implements IBaseEqualMaterialInfoS */ @Override public BaseEqualMaterialInfoVo queryById(Long equalMaterialInfoId){ - return baseMapper.selectVoById(equalMaterialInfoId); + BaseEqualMaterialInfoVo baseEqualMaterialInfoVo = baseMapper.selectVoById(equalMaterialInfoId); + if (!ObjectUtils.isEmpty(baseEqualMaterialInfoVo)) { + // 关联物料名称 + BaseMaterialInfo baseMaterialInfo = baseMaterialInfoMapper.selectOne(Wrappers.lambdaQuery(BaseMaterialInfo.class) + .eq(BaseMaterialInfo::getMaterialId, baseEqualMaterialInfoVo.getMaterialId())); + if (!ObjectUtils.isEmpty(baseMaterialInfo)) { + baseEqualMaterialInfoVo.setMaterialName(baseMaterialInfo.getMaterialName()); + } + } + return baseEqualMaterialInfoVo; } /** From 32f318be939bde33886394998ea6d280a7a02089 Mon Sep 17 00:00:00 2001 From: zch Date: Thu, 6 Feb 2025 16:51:59 +0800 Subject: [PATCH 3/8] =?UTF-8?q?add(mes):=20=E6=B7=BB=E5=8A=A0=E7=89=A9?= =?UTF-8?q?=E6=96=99BOM=E4=BF=A1=E6=81=AF=E6=89=B9=E9=87=8F=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=8A=9F=E8=83=BD(=E6=96=B0=E5=A2=9EBOM=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E6=A1=86=EF=BC=9A=E6=A0=B9=E6=8D=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?BOM=E6=89=B9=E9=87=8F=E6=96=B0=E5=A2=9E=E7=89=A9=E6=96=99BOM)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IProdMaterialBomService 接口中新增 insertBatchByBoList 方法 - 在 ProdMaterialBomController 中添加 addBatchMaterialBom 控制器方法 - 在 ProdMaterialBomServiceImpl 中实现 insertBatchByBoList 方法的逻辑 - 按层级分组处理,确保父节点先于子节点插入 - 增加了异常处理和数据完整性校验 --- .../controller/ProdMaterialBomController.java | 13 ++- .../mes/service/IProdMaterialBomService.java | 8 ++ .../impl/ProdMaterialBomServiceImpl.java | 104 ++++++++++++++++++ 3 files changed, 124 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java index 5bed053d..f39abd88 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java @@ -107,9 +107,20 @@ public class ProdMaterialBomController extends BaseController { /** * 下拉框查询物料BOM信息列表 */ - @GetMapping("getProdMaterialBomList") + @GetMapping("/getProdMaterialBomList") public R> getProdMaterialBomlist(ProdMaterialBomBo bo) { List list = prodMaterialBomService.queryList(bo); return R.ok(list); } + + /** + * 新增物料BOM信息 + */ + @SaCheckPermission("mes:materialBom:add") + @Log(title = "物料BOM信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/addBatchMaterialBom") + public R addBatchMaterialBom(@RequestBody List boList) { + return toAjax(prodMaterialBomService.insertBatchByBoList(boList)); + } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java index 206eab7b..40e261e3 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java @@ -56,4 +56,12 @@ public interface IProdMaterialBomService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 批量新增物料BOM信息 + * + * @param boList 物料BOM信息列表 + * @return 是否新增成功 + */ + Boolean insertBatchByBoList(List boList); } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java index bb32d5da..24e72f46 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java @@ -15,6 +15,14 @@ import org.dromara.mes.service.IProdMaterialBomService; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.HashMap; + +import org.springframework.transaction.annotation.Transactional; +import cn.hutool.core.collection.CollUtil; +import org.dromara.common.core.exception.ServiceException; + /** * 物料BOM信息Service业务层处理 @@ -154,4 +162,100 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { } } + + + /** + * 批量插入物料清单BOM。 + * @param boList 需要插入的物料清单BOM列表。 + * @return 如果所有节点都成功插入,返回true;否则抛出异常。 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertBatchByBoList(List boList) { + if (CollUtil.isEmpty(boList)) { + return false; + } + + try { + // 按层级分组(根据parentId分组) + Map> levelMap = new HashMap<>(); + + // 1. 首先找出所有顶级节点 + List topNodes = boList.stream() + .filter(bo -> bo.getParentId() == null || bo.getParentId() == 0) + .collect(Collectors.toList()); + + // 2. 其他节点按parentId分组 + Map> childrenMap = boList.stream() + .filter(bo -> bo.getParentId() != null && bo.getParentId() != 0) + .collect(Collectors.groupingBy(bo -> Math.abs(bo.getParentId()))); + + // 存储临时ID到实际ID的映射 + Map idMapping = new HashMap<>(); + + // 3. 先处理顶级节点 + for (ProdMaterialBomBo topNode : topNodes) { + Long tempId = Math.abs(topNode.getMaterialBomId()); + topNode.setMaterialBomId(null); // 清除临时ID + topNode.setParentId(0L); // 确保顶级节点parentId为0 + topNode.setAncestors("0"); // 顶级节点的ancestors为"0" + + // 插入顶级节点 + ProdMaterialBom add = MapstructUtils.convert(topNode, ProdMaterialBom.class); + if (baseMapper.insert(add) <= 0) { + throw new ServiceException("插入顶级节点失败"); + } + + // 记录映射关系 + idMapping.put(tempId, add.getMaterialBomId()); + } + + // 4. 处理子节点,直到所有节点都处理完 + while (!childrenMap.isEmpty()) { + // 找出当前可以处理的节点(父节点已经在idMapping中的节点) + List processableParentIds = new ArrayList<>(childrenMap.keySet()); + boolean processed = false; + + for (Long parentTempId : processableParentIds) { + // 检查父节点是否已处理 + if (idMapping.containsKey(parentTempId)) { + List children = childrenMap.remove(parentTempId); + + // 处理同一父节点的所有子节点 + for (ProdMaterialBomBo child : children) { + Long childTempId = Math.abs(child.getMaterialBomId()); + child.setMaterialBomId(null); // 清除临时ID + + // 设置实际的父节点ID + Long actualParentId = idMapping.get(parentTempId); + child.setParentId(actualParentId); + + // 设置祖级列表 + ProdMaterialBom parent = baseMapper.selectById(actualParentId); + child.setAncestors(parent.getAncestors() + "," + actualParentId); + + // 插入子节点 + ProdMaterialBom add = MapstructUtils.convert(child, ProdMaterialBom.class); + if (baseMapper.insert(add) <= 0) { + throw new ServiceException("插入子节点失败"); + } + + // 记录映射关系 + idMapping.put(childTempId, add.getMaterialBomId()); + } + processed = true; + } + } + + // 如果一轮循环没有处理任何节点,说明数据有问题 + if (!processed && !childrenMap.isEmpty()) { + throw new ServiceException("存在无法处理的节点,可能是父节点丢失"); + } + } + + return true; + } catch (Exception e) { + throw new ServiceException("批量插入失败: " + e.getMessage()); + } + } } From efcc78641070ef04c36c0a324899cc8a2662f344 Mon Sep 17 00:00:00 2001 From: zch Date: Thu, 6 Feb 2025 16:56:49 +0800 Subject: [PATCH 4/8] =?UTF-8?q?change(mes):=20=E5=AE=8C=E5=96=84addBatchMa?= =?UTF-8?q?terialBom=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了 IProdMaterialBomService 接口中 insertBatchByBoList 方法的文档注释 - 更新了 ProdMaterialBomController 中 addBatchMaterialBom 方法的文档注释 - 统一了 ProdMaterialBomServiceImpl 中同名方法的文档描述 本次修改主要是为了更准确地描述物料BOM批量插入功能的实际行为,即根据结构BOM进行批量插入,而不是单纯的批量新增操作。 --- .../dromara/mes/controller/ProdMaterialBomController.java | 3 ++- .../org/dromara/mes/service/IProdMaterialBomService.java | 7 +++---- .../mes/service/impl/ProdMaterialBomServiceImpl.java | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java index f39abd88..e3776c15 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdMaterialBomController.java @@ -114,13 +114,14 @@ public class ProdMaterialBomController extends BaseController { } /** - * 新增物料BOM信息 + * 根据结构BOM批量插入物料清单BOM。 */ @SaCheckPermission("mes:materialBom:add") @Log(title = "物料BOM信息", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/addBatchMaterialBom") public R addBatchMaterialBom(@RequestBody List boList) { + //不是单纯的批量新增,是新增BOM对话框(参考结构BOM批量新增物料BOM) return toAjax(prodMaterialBomService.insertBatchByBoList(boList)); } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java index 40e261e3..95d9157f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IProdMaterialBomService.java @@ -58,10 +58,9 @@ public interface IProdMaterialBomService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); /** - * 批量新增物料BOM信息 - * - * @param boList 物料BOM信息列表 - * @return 是否新增成功 + * 根据结构BOM批量插入物料清单BOM。 + * @param boList 需要插入的物料清单BOM列表。 + * @return 如果所有节点都成功插入,返回true;否则抛出异常。 */ Boolean insertBatchByBoList(List boList); } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java index 24e72f46..a94b3a12 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java @@ -165,7 +165,7 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { /** - * 批量插入物料清单BOM。 + * 根据结构BOM批量插入物料清单BOM。 * @param boList 需要插入的物料清单BOM列表。 * @return 如果所有节点都成功插入,返回true;否则抛出异常。 */ From af37b9cef70d24603e7728874d5b8893dea6d1ee Mon Sep 17 00:00:00 2001 From: yinq Date: Thu, 6 Feb 2025 17:23:13 +0800 Subject: [PATCH 5/8] =?UTF-8?q?update=20add=E5=B7=A5=E5=BA=8F=E6=AD=A5?= =?UTF-8?q?=E5=BA=8F=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/domain/bo/ProdTechnologyInfoBo.java | 4 +++ .../mes/domain/vo/ProdTechnologyInfoVo.java | 5 ++- .../impl/ProdTechnologyInfoServiceImpl.java | 33 +++++++++++++++++-- .../ProdTechnologyStepInfoServiceImpl.java | 2 +- .../SysMasterDataDetailController.java | 12 ++++++- 5 files changed, 51 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java index 415897ad..b67bfca6 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdTechnologyInfoBo.java @@ -8,6 +8,9 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import org.dromara.mes.domain.ProdTechnologyStepInfo; + +import java.util.List; /** * 工序工艺信息业务对象 prod_technology_info @@ -67,5 +70,6 @@ public class ProdTechnologyInfoBo extends BaseEntity { */ private String remark; + private List prodTechnologyStepInfoList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java index 34cd4f31..387a1cb7 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdTechnologyInfoVo.java @@ -7,11 +7,12 @@ 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.mes.domain.ProdTechnologyStepInfo; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -90,4 +91,6 @@ public class ProdTechnologyInfoVo implements Serializable { @ExcelProperty(value = "物料名称") private String materialName; + + private List prodTechnologyStepInfoList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyInfoServiceImpl.java index 85c9ae5b..c9064b59 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyInfoServiceImpl.java @@ -1,5 +1,7 @@ package org.dromara.mes.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -11,12 +13,16 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.mes.domain.BaseMaterialInfo; import org.dromara.mes.domain.ProdBaseProcessInfo; +import org.dromara.mes.domain.ProdTechnologyStepInfo; +import org.dromara.mes.domain.bo.ProdTechnologyStepInfoBo; +import org.dromara.mes.mapper.ProdTechnologyStepInfoMapper; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdTechnologyInfoBo; import org.dromara.mes.domain.vo.ProdTechnologyInfoVo; import org.dromara.mes.domain.ProdTechnologyInfo; import org.dromara.mes.mapper.ProdTechnologyInfoMapper; import org.dromara.mes.service.IProdTechnologyInfoService; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -34,6 +40,8 @@ public class ProdTechnologyInfoServiceImpl implements IProdTechnologyInfoService private final ProdTechnologyInfoMapper baseMapper; + private final ProdTechnologyStepInfoMapper prodTechnologyStepInfoMapper; + /** * 查询工序工艺信息 * @@ -46,7 +54,15 @@ public class ProdTechnologyInfoServiceImpl implements IProdTechnologyInfoService bo.setTechnologyId(technologyId); MPJLambdaWrapper lqw = buildQueryWrapper(bo); List voList = baseMapper.selectVoList(lqw); - return voList.get(0); + ProdTechnologyInfoVo prodTechnologyInfoVo = voList.get(0); + //工艺步序信息 + MPJLambdaWrapper lqwStep = JoinWrappers.lambda(ProdTechnologyStepInfo.class) + .selectAll(ProdTechnologyStepInfo.class) + .eq(bo.getTechnologyId() != null, ProdTechnologyStepInfo::getTechnologyId, bo.getTechnologyId()) + .orderByAsc(ProdTechnologyStepInfo::getCreateTime); + List prodTechnologyStepInfoList = prodTechnologyStepInfoMapper.selectList(lqwStep); + prodTechnologyInfoVo.setProdTechnologyStepInfoList(prodTechnologyStepInfoList); + return prodTechnologyInfoVo; } /** @@ -91,7 +107,7 @@ public class ProdTechnologyInfoServiceImpl implements IProdTechnologyInfoService .eq(StringUtils.isNotBlank(bo.getTechnologyVersion()), ProdTechnologyInfo::getTechnologyVersion, bo.getTechnologyVersion()) .eq(bo.getStandardTime() != null, ProdTechnologyInfo::getStandardTime, bo.getStandardTime()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdTechnologyInfo::getActiveFlag, bo.getActiveFlag()) - .orderByDesc(ProdTechnologyInfo::getCreateTime); + .orderByAsc(ProdTechnologyInfo::getCreateTime); return lqw; } @@ -119,9 +135,22 @@ public class ProdTechnologyInfoServiceImpl implements IProdTechnologyInfoService * @return 是否修改成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(ProdTechnologyInfoBo bo) { ProdTechnologyInfo update = MapstructUtils.convert(bo, ProdTechnologyInfo.class); validEntityBeforeSave(update); + + List technologyStepInfoList = bo.getProdTechnologyStepInfoList(); + + if (technologyStepInfoList.size() > 0){ + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotNull(bo.getTechnologyId()), ProdTechnologyStepInfo::getTechnologyId, bo.getTechnologyId()); + prodTechnologyStepInfoMapper.delete(lqw); + for (ProdTechnologyStepInfo stepInfo : technologyStepInfoList) { + stepInfo.setStepId(null); + prodTechnologyStepInfoMapper.insert(stepInfo); + } + } return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyStepInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyStepInfoServiceImpl.java index e9a22f71..803c633d 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyStepInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdTechnologyStepInfoServiceImpl.java @@ -81,7 +81,7 @@ public class ProdTechnologyStepInfoServiceImpl implements IProdTechnologyStepInf .eq(StringUtils.isNotBlank(bo.getStepParameter()), ProdTechnologyStepInfo::getStepParameter, bo.getStepParameter()) .eq(StringUtils.isNotBlank(bo.getValueState()), ProdTechnologyStepInfo::getValueState, bo.getValueState()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdTechnologyStepInfo::getActiveFlag, bo.getActiveFlag()) - .orderByDesc(ProdTechnologyStepInfo::getCreateTime); + .orderByDesc(ProdTechnologyStepInfo::getStepCode); return lqw; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMasterDataDetailController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMasterDataDetailController.java index 3a867dea..be772567 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMasterDataDetailController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMasterDataDetailController.java @@ -38,7 +38,7 @@ public class SysMasterDataDetailController extends BaseController { private final ISysMasterDataDetailService sysMasterDataDetailService; /** - * 查询主数据维护明细列表 + * 查询主数据维护明细列表-列表结构 */ @SaCheckPermission("system:masterDataDetail:list") @GetMapping("/list") @@ -46,6 +46,16 @@ public class SysMasterDataDetailController extends BaseController { return sysMasterDataDetailService.queryPageList(bo, pageQuery); } + /** + * 查询主数据维护明细列表-树状结构 + */ + @SaCheckPermission("system:masterDataDetail:list") + @GetMapping("/treeList") + public R> list(SysMasterDataDetailBo bo) { + List list = sysMasterDataDetailService.queryList(bo); + return R.ok(list); + } + /** * 导出主数据维护明细列表 */ From 17481a98b689944d2f6f9a512c7de2118aefa44a Mon Sep 17 00:00:00 2001 From: yinq Date: Thu, 6 Feb 2025 19:41:37 +0800 Subject: [PATCH 6/8] =?UTF-8?q?update=20=E5=B7=A5=E4=BD=8D=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=9C=BA=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/mes/domain/ProdBaseStationInfo.java | 8 +++++++- .../org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java | 2 +- .../org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java | 6 ++++++ .../mes/service/impl/ProdBaseMachineInfoServiceImpl.java | 2 +- .../mes/service/impl/ProdBaseStationInfoServiceImpl.java | 6 +++++- 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java index 92756a3c..5d2aba6e 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseStationInfo.java @@ -72,8 +72,14 @@ public class ProdBaseStationInfo extends TenantEntity { */ private String remark; + /** + * 机台ID + */ + private Long machineId; + @TableField(exist = false) private String processName;//字段映射 - + @TableField(exist = false) + private String machineName;//字段映射 } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java index b3a59428..c3c2d400 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseStationInfoBo.java @@ -74,5 +74,5 @@ public class ProdBaseStationInfoBo extends BaseEntity { */ private String remark; - + private Long machineId; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java index 3f37b31a..93ed805f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseStationInfoVo.java @@ -131,5 +131,11 @@ public class ProdBaseStationInfoVo implements Serializable { @ExcelProperty(value = "更新时间") private Date updateTime; + private Long machineId; + /** + * 机台名称 + */ + @ExcelProperty(value = "机台名称") + private String machineName; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java index 390b2461..fa11085b 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java @@ -83,7 +83,7 @@ public class ProdBaseMachineInfoServiceImpl implements IProdBaseMachineInfoServi .eq(StringUtils.isNotBlank(bo.getMachineSpec()), ProdBaseMachineInfo::getMachineSpec, bo.getMachineSpec()) .eq(StringUtils.isNotBlank(bo.getSupplierId()), ProdBaseMachineInfo::getSupplierId, bo.getSupplierId()) .eq(StringUtils.isNotBlank(bo.getMachineStatus()), ProdBaseMachineInfo::getMachineStatus, bo.getMachineStatus()) - .orderByDesc(ProdBaseMachineInfo::getCreateTime); + .orderByAsc(ProdBaseMachineInfo::getCreateTime); return lqw; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java index 5e173e39..6ff215c7 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseStationInfoServiceImpl.java @@ -9,6 +9,7 @@ import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.mes.domain.ProdBaseMachineInfo; import org.dromara.mes.domain.ProdBaseProcessInfo; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdBaseStationInfoBo; @@ -75,16 +76,19 @@ public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoServi MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseStationInfo.class) .selectAll(ProdBaseStationInfo.class) .select(ProdBaseProcessInfo::getProcessName) + .select(ProdBaseMachineInfo::getMachineName) .leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, ProdBaseStationInfo::getProcessId) + .leftJoin(ProdBaseMachineInfo.class, ProdBaseMachineInfo::getMachineId, ProdBaseStationInfo::getMachineId) .eq(bo.getStationId() != null, ProdBaseStationInfo::getStationId, bo.getStationId()) .eq(StringUtils.isNotBlank(bo.getStationCode()), ProdBaseStationInfo::getStationCode, bo.getStationCode()) .like(StringUtils.isNotBlank(bo.getStationName()), ProdBaseStationInfo::getStationName, bo.getStationName()) .eq(StringUtils.isNotBlank(bo.getStationType()), ProdBaseStationInfo::getStationType, bo.getStationType()) .eq(bo.getProcessId() != null, ProdBaseStationInfo::getProcessId, bo.getProcessId()) + .eq(bo.getMachineId() != null, ProdBaseStationInfo::getMachineId, bo.getMachineId()) .like(StringUtils.isNotBlank(bo.getAgvCode()), ProdBaseStationInfo::getAgvCode, bo.getAgvCode()) .like(StringUtils.isNotBlank(bo.getIpAddress()), ProdBaseStationInfo::getIpAddress, bo.getIpAddress()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseStationInfo::getActiveFlag, bo.getActiveFlag()) - .orderByDesc(ProdBaseStationInfo::getCreateTime); + .orderByAsc(ProdBaseStationInfo::getCreateTime); return lqw; } From 9572796335597790ff5a261487a150e4ee96827f Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 7 Feb 2025 16:06:39 +0800 Subject: [PATCH 7/8] =?UTF-8?q?update=20=E8=AE=A1=E5=88=92=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=9C=BA=E5=8F=B0=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/domain/bo/ProdBaseMachineInfoBo.java | 4 ++++ .../impl/ProdBaseMachineInfoServiceImpl.java | 5 +++++ .../resources/mapper/mes/ProdPlanInfoMapper.xml | 13 +++++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java index 1c09d3d4..73c76b2f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseMachineInfoBo.java @@ -72,5 +72,9 @@ public class ProdBaseMachineInfoBo extends BaseEntity { */ private String remark; + /** + * 工序 + */ + private Long processId; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java index fa11085b..677a04b7 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseMachineInfoServiceImpl.java @@ -10,6 +10,8 @@ import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.mes.domain.ProdBaseProcessInfo; +import org.dromara.mes.domain.ProdBaseStationInfo; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdBaseMachineInfoBo; import org.dromara.mes.domain.vo.ProdBaseMachineInfoVo; @@ -74,6 +76,8 @@ public class ProdBaseMachineInfoServiceImpl implements IProdBaseMachineInfoServi Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseMachineInfo.class) .selectAll(ProdBaseMachineInfo.class) + .leftJoin(ProdBaseStationInfo.class, ProdBaseStationInfo::getMachineId, ProdBaseMachineInfo::getMachineId) + .leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, ProdBaseStationInfo::getProcessId) .eq(bo.getMachineId() != null, ProdBaseMachineInfo::getMachineId, bo.getMachineId()) .eq(StringUtils.isNotBlank(bo.getMachineCode()), ProdBaseMachineInfo::getMachineCode, bo.getMachineCode()) .like(StringUtils.isNotBlank(bo.getMachineName()), ProdBaseMachineInfo::getMachineName, bo.getMachineName()) @@ -83,6 +87,7 @@ public class ProdBaseMachineInfoServiceImpl implements IProdBaseMachineInfoServi .eq(StringUtils.isNotBlank(bo.getMachineSpec()), ProdBaseMachineInfo::getMachineSpec, bo.getMachineSpec()) .eq(StringUtils.isNotBlank(bo.getSupplierId()), ProdBaseMachineInfo::getSupplierId, bo.getSupplierId()) .eq(StringUtils.isNotBlank(bo.getMachineStatus()), ProdBaseMachineInfo::getMachineStatus, bo.getMachineStatus()) + .eq(StringUtils.isNotNull(bo.getProcessId()), ProdBaseProcessInfo::getProcessId, bo.getProcessId()) .orderByAsc(ProdBaseMachineInfo::getCreateTime); return lqw; } diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml index 6ff9373f..5c57c3a4 100644 --- a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdPlanInfoMapper.xml @@ -74,7 +74,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bmi.material_code, bmi.material_name, bomi.material_name material_bom_name, - pbsi.station_name release_name, + case + when t.release_type = 1 then (select pbmi.machine_name + from prod_base_machine_info pbmi + where t.release_id = pbmi.machine_id) + when t.release_type = 2 then (select su.nick_name + from sys_user su + where t.release_id = su.user_id) + when t.release_type = 3 then (select pbsi.station_name + from prod_base_station_info pbsi + where t.release_id = pbsi.station_id) + end as release_name, pbpi.process_name, bsi.shift_name, bcti.team_name @@ -85,7 +95,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from ${tableName} t left join base_material_info bmi on bmi.material_id = t.material_id left join base_material_info bomi on bomi.material_id = t.material_bom_id - left join prod_base_station_info pbsi on pbsi.station_id = t.release_id left join prod_base_process_info pbpi on pbpi.process_id = t.process_id left join base_shift_info bsi on bsi.shift_id = t.shift_id left join base_class_team_info bcti on bcti.class_team_id = t.class_team_id From 53e810316c9f9a7512971c1ecff2261e1e14ad5c Mon Sep 17 00:00:00 2001 From: zch Date: Fri, 7 Feb 2025 16:44:24 +0800 Subject: [PATCH 8/8] =?UTF-8?q?change(mes):=20=E6=96=B0=E5=A2=9EBOM?= =?UTF-8?q?=E7=9A=84=E9=9D=9E=E9=A1=B6=E7=BA=A7=E8=8A=82=E7=82=B9=E8=A1=A8?= =?UTF-8?q?=E7=A4=BAtopFlag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化了顶级节点和子节点的处理流程 - 添加了 topFlag 字段,用于区分顶级节点和非顶级节点 --- .../impl/ProdMaterialBomServiceImpl.java | 21 +++++-------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java index a94b3a12..6767f87f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java @@ -179,57 +179,48 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { try { // 按层级分组(根据parentId分组) Map> levelMap = new HashMap<>(); - // 1. 首先找出所有顶级节点 List topNodes = boList.stream() .filter(bo -> bo.getParentId() == null || bo.getParentId() == 0) .collect(Collectors.toList()); - // 2. 其他节点按parentId分组 Map> childrenMap = boList.stream() .filter(bo -> bo.getParentId() != null && bo.getParentId() != 0) .collect(Collectors.groupingBy(bo -> Math.abs(bo.getParentId()))); - // 存储临时ID到实际ID的映射 Map idMapping = new HashMap<>(); - - // 3. 先处理顶级节点 + // 3. 优先处理顶级节点,设置基础数据并插入 for (ProdMaterialBomBo topNode : topNodes) { Long tempId = Math.abs(topNode.getMaterialBomId()); topNode.setMaterialBomId(null); // 清除临时ID topNode.setParentId(0L); // 确保顶级节点parentId为0 topNode.setAncestors("0"); // 顶级节点的ancestors为"0" - + topNode.setTopFlag(1L); // 设置顶级节点的topFlag为1 // 插入顶级节点 ProdMaterialBom add = MapstructUtils.convert(topNode, ProdMaterialBom.class); if (baseMapper.insert(add) <= 0) { throw new ServiceException("插入顶级节点失败"); } - // 记录映射关系 idMapping.put(tempId, add.getMaterialBomId()); } - // 4. 处理子节点,直到所有节点都处理完 while (!childrenMap.isEmpty()) { // 找出当前可以处理的节点(父节点已经在idMapping中的节点) List processableParentIds = new ArrayList<>(childrenMap.keySet()); - boolean processed = false; - + boolean processed = false;// 标记本轮是否有节点被处理 for (Long parentTempId : processableParentIds) { // 检查父节点是否已处理 if (idMapping.containsKey(parentTempId)) { List children = childrenMap.remove(parentTempId); - // 处理同一父节点的所有子节点 for (ProdMaterialBomBo child : children) { Long childTempId = Math.abs(child.getMaterialBomId()); - child.setMaterialBomId(null); // 清除临时ID - // 设置实际的父节点ID + child.setMaterialBomId(null);// 清除临时ID + child.setTopFlag(0L); // 设置非顶级节点的topFlag为0 Long actualParentId = idMapping.get(parentTempId); child.setParentId(actualParentId); - // 设置祖级列表 ProdMaterialBom parent = baseMapper.selectById(actualParentId); child.setAncestors(parent.getAncestors() + "," + actualParentId); @@ -246,13 +237,11 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { processed = true; } } - // 如果一轮循环没有处理任何节点,说明数据有问题 if (!processed && !childrenMap.isEmpty()) { throw new ServiceException("存在无法处理的节点,可能是父节点丢失"); } } - return true; } catch (Exception e) { throw new ServiceException("批量插入失败: " + e.getMessage());