From 675687372bf726749c1eb5206a1630e105216b0d Mon Sep 17 00:00:00 2001 From: "JinLu.Yin" <411641505@qq.com> Date: Mon, 30 May 2022 23:22:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=A0=B8=E5=BF=83=E5=8F=8A?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wm/controller/WmItemRecptController.java | 58 ++++- .../ktg/mes/wm/domain/tx/ItemRecptTxBean.java | 232 ++++++++++++++++++ .../ktg/mes/wm/mapper/WmItemRecptMapper.java | 4 + .../mes/wm/mapper/WmMaterialStockMapper.java | 3 + .../wm/service/IWmMaterialStockService.java | 2 + .../mes/wm/service/IWmTransactionService.java | 4 + .../service/impl/StorageCoreServiceImpl.java | 30 ++- .../service/impl/WmItemRecptServiceImpl.java | 2 +- .../impl/WmMaterialStockServiceImpl.java | 1 + .../impl/WmTransactionServiceImpl.java | 86 +++++++ .../resources/mapper/wm/WmItemRecptMapper.xml | 47 ++++ .../mapper/wm/WmMaterialStockMapper.xml | 19 +- 12 files changed, 476 insertions(+), 12 deletions(-) diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmItemRecptController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmItemRecptController.java index 057c794..7eb563c 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmItemRecptController.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmItemRecptController.java @@ -3,11 +3,11 @@ package com.ktg.mes.wm.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import cn.hutool.core.collection.CollUtil; import com.ktg.common.constant.UserConstants; import com.ktg.common.utils.StringUtils; -import com.ktg.mes.wm.domain.WmStorageArea; -import com.ktg.mes.wm.domain.WmStorageLocation; -import com.ktg.mes.wm.domain.WmWarehouse; +import com.ktg.mes.wm.domain.*; +import com.ktg.mes.wm.domain.tx.ItemRecptTxBean; import com.ktg.mes.wm.service.*; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -24,7 +24,6 @@ import com.ktg.common.annotation.Log; import com.ktg.common.core.controller.BaseController; import com.ktg.common.core.domain.AjaxResult; import com.ktg.common.enums.BusinessType; -import com.ktg.mes.wm.domain.WmItemRecpt; import com.ktg.common.utils.poi.ExcelUtil; import com.ktg.common.core.page.TableDataInfo; @@ -53,6 +52,9 @@ public class WmItemRecptController extends BaseController @Autowired private IWmStorageAreaService wmStorageAreaService; + @Autowired + private IStorageCoreService storageCoreService; + /** * 查询物料入库单列表 */ @@ -119,6 +121,42 @@ public class WmItemRecptController extends BaseController return toAjax(wmItemRecptService.insertWmItemRecpt(wmItemRecpt)); } + /** + * 确认入库单 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:itemrecpt:edit')") + @Log(title = "物料入库单", businessType = BusinessType.UPDATE) + @PutMapping("/confirm") + public AjaxResult confirm(@RequestBody WmItemRecpt wmItemRecpt){ + //检查有没有入库单行 + WmItemRecptLine param = new WmItemRecptLine(); + param.setRecptId(wmItemRecpt.getRecptId()); + List lines = wmItemRecptLineService.selectWmItemRecptLineList(param); + if(CollUtil.isEmpty(lines)){ + return AjaxResult.error("请添加入库单行"); + } + + wmItemRecpt.setStatus(UserConstants.ORDER_STATUS_CONFIRMED); + + if(StringUtils.isNotNull(wmItemRecpt.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmItemRecpt.getWarehouseId()); + wmItemRecpt.setWarehouseCode(warehouse.getWarehouseCode()); + wmItemRecpt.setWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmItemRecpt.getLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmItemRecpt.getLocationId()); + wmItemRecpt.setLocationCode(location.getLocationCode()); + wmItemRecpt.setLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmItemRecpt.getAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmItemRecpt.getAreaId()); + wmItemRecpt.setAreaCode(area.getAreaCode()); + wmItemRecpt.setAreaName(area.getAreaName()); + } + return toAjax(wmItemRecptService.updateWmItemRecpt(wmItemRecpt)); + } + + /** * 修改物料入库单 */ @@ -151,13 +189,21 @@ public class WmItemRecptController extends BaseController */ @PreAuthorize("@ss.hasPermi('mes:wm:itemrecpt:edit')") @Log(title = "物料入库单", businessType = BusinessType.UPDATE) + @Transactional @PutMapping("/{recptId}") public AjaxResult execute(@PathVariable Long recptId){ + WmItemRecpt recpt = wmItemRecptService.selectWmItemRecptByRecptId(recptId); + + if (!UserConstants.ORDER_STATUS_CONFIRMED.equals(recpt.getStatus())){ + return AjaxResult.error("请先确认单据"); + } + //构造Transaction事务,并执行库存更新逻辑 + List beans = wmItemRecptService.getTxBeans(recptId); - - //调用ERP接口 + //调用库存核心 + storageCoreService.processItemRecpt(beans); //更新单据状态 WmItemRecpt wmItemRecpt =wmItemRecptService.selectWmItemRecptByRecptId(recptId); diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/ItemRecptTxBean.java b/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/ItemRecptTxBean.java index 2de645d..7c5e043 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/ItemRecptTxBean.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/ItemRecptTxBean.java @@ -86,4 +86,236 @@ public class ItemRecptTxBean extends BaseEntity { /** 库存有效期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date expireDate; + + + public Long getItemId() { + return itemId; + } + + public void setItemId(Long itemId) { + this.itemId = itemId; + } + + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + } + + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public String getSpecification() { + return specification; + } + + public void setSpecification(String specification) { + this.specification = specification; + } + + public String getUnitOfMeasure() { + return unitOfMeasure; + } + + public void setUnitOfMeasure(String unitOfMeasure) { + this.unitOfMeasure = unitOfMeasure; + } + + public String getBatchCode() { + return batchCode; + } + + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public Long getWarehouseId() { + return warehouseId; + } + + public void setWarehouseId(Long warehouseId) { + this.warehouseId = warehouseId; + } + + public String getWarehouseCode() { + return warehouseCode; + } + + public void setWarehouseCode(String warehouseCode) { + this.warehouseCode = warehouseCode; + } + + public String getWarehouseName() { + return warehouseName; + } + + public void setWarehouseName(String warehouseName) { + this.warehouseName = warehouseName; + } + + public Long getLocationId() { + return locationId; + } + + public void setLocationId(Long locationId) { + this.locationId = locationId; + } + + public String getLocationCode() { + return locationCode; + } + + public void setLocationCode(String locationCode) { + this.locationCode = locationCode; + } + + public String getLocationName() { + return locationName; + } + + public void setLocationName(String locationName) { + this.locationName = locationName; + } + + public Long getAreaId() { + return areaId; + } + + public void setAreaId(Long areaId) { + this.areaId = areaId; + } + + public String getAreaCode() { + return areaCode; + } + + public void setAreaCode(String areaCode) { + this.areaCode = areaCode; + } + + public String getAreaName() { + return areaName; + } + + public void setAreaName(String areaName) { + this.areaName = areaName; + } + + public Long getVendorId() { + return vendorId; + } + + public void setVendorId(Long vendorId) { + this.vendorId = vendorId; + } + + public String getVendorCode() { + return vendorCode; + } + + public void setVendorCode(String vendorCode) { + this.vendorCode = vendorCode; + } + + public String getVendorName() { + return vendorName; + } + + public void setVendorName(String vendorName) { + this.vendorName = vendorName; + } + + public String getVendorNick() { + return vendorNick; + } + + public void setVendorNick(String vendorNick) { + this.vendorNick = vendorNick; + } + + public String getSourceDocType() { + return sourceDocType; + } + + public void setSourceDocType(String sourceDocType) { + this.sourceDocType = sourceDocType; + } + + public Long getSourceDocId() { + return sourceDocId; + } + + public void setSourceDocId(Long sourceDocId) { + this.sourceDocId = sourceDocId; + } + + public String getSourceDocCode() { + return sourceDocCode; + } + + public void setSourceDocCode(String sourceDocCode) { + this.sourceDocCode = sourceDocCode; + } + + public Long getSourceDocLineId() { + return sourceDocLineId; + } + + public void setSourceDocLineId(Long sourceDocLineId) { + this.sourceDocLineId = sourceDocLineId; + } + + public BigDecimal getTransactionQuantity() { + return transactionQuantity; + } + + public void setTransactionQuantity(BigDecimal transactionQuantity) { + this.transactionQuantity = transactionQuantity; + } + + public Date getExpireDate() { + return expireDate; + } + + public void setExpireDate(Date expireDate) { + this.expireDate = expireDate; + } + + @Override + public String toString() { + return "ItemRecptTxBean{" + + "itemId=" + itemId + + ", itemCode='" + itemCode + '\'' + + ", itemName='" + itemName + '\'' + + ", specification='" + specification + '\'' + + ", unitOfMeasure='" + unitOfMeasure + '\'' + + ", batchCode='" + batchCode + '\'' + + ", warehouseId=" + warehouseId + + ", warehouseCode='" + warehouseCode + '\'' + + ", warehouseName='" + warehouseName + '\'' + + ", locationId=" + locationId + + ", locationCode='" + locationCode + '\'' + + ", locationName='" + locationName + '\'' + + ", areaId=" + areaId + + ", areaCode='" + areaCode + '\'' + + ", areaName='" + areaName + '\'' + + ", vendorId=" + vendorId + + ", vendorCode='" + vendorCode + '\'' + + ", vendorName='" + vendorName + '\'' + + ", vendorNick='" + vendorNick + '\'' + + ", sourceDocType='" + sourceDocType + '\'' + + ", sourceDocId=" + sourceDocId + + ", sourceDocCode='" + sourceDocCode + '\'' + + ", sourceDocLineId=" + sourceDocLineId + + ", transactionQuantity=" + transactionQuantity + + ", expireDate=" + expireDate + + '}'; + } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmItemRecptMapper.java b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmItemRecptMapper.java index e5a8029..bfb8a98 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmItemRecptMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmItemRecptMapper.java @@ -2,6 +2,7 @@ package com.ktg.mes.wm.mapper; import java.util.List; import com.ktg.mes.wm.domain.WmItemRecpt; +import com.ktg.mes.wm.domain.tx.ItemRecptTxBean; /** * 物料入库单Mapper接口 @@ -29,6 +30,9 @@ public interface WmItemRecptMapper public WmItemRecpt checkRecptCodeUnique(WmItemRecpt wmItemRecpt); + + public List getTxBeans(Long recptId); + /** * 新增物料入库单 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmMaterialStockMapper.java b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmMaterialStockMapper.java index 08290e6..b49ed0c 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmMaterialStockMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmMaterialStockMapper.java @@ -20,6 +20,9 @@ public interface WmMaterialStockMapper */ public WmMaterialStock selectWmMaterialStockByMaterialStockId(Long materialStockId); + + public WmMaterialStock loadMaterialStock(WmMaterialStock stock); + /** * 查询库存记录列表 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmMaterialStockService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmMaterialStockService.java index 72486d0..40e0415 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmMaterialStockService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmMaterialStockService.java @@ -20,6 +20,8 @@ public interface IWmMaterialStockService */ public WmMaterialStock selectWmMaterialStockByMaterialStockId(Long materialStockId); + + /** * 查询库存记录列表 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmTransactionService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmTransactionService.java index 2cba162..bd5df4a 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmTransactionService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmTransactionService.java @@ -11,6 +11,10 @@ import com.ktg.mes.wm.domain.WmTransaction; */ public interface IWmTransactionService { + + public WmTransaction processTransaction(WmTransaction wmTransaction); + + /** * 查询库存事务 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/StorageCoreServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/StorageCoreServiceImpl.java index 02c5755..1969709 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/StorageCoreServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/StorageCoreServiceImpl.java @@ -3,16 +3,28 @@ package com.ktg.mes.wm.service.impl; import cn.hutool.core.collection.CollUtil; import com.ktg.common.constant.UserConstants; import com.ktg.common.exception.BussinessException; -import com.ktg.mes.wm.domain.WmItemRecptLine; +import com.ktg.common.utils.bean.BeanUtils; import com.ktg.mes.wm.domain.WmTransaction; import com.ktg.mes.wm.domain.tx.ItemRecptTxBean; import com.ktg.mes.wm.service.IStorageCoreService; +import com.ktg.mes.wm.service.IWmTransactionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import java.util.Date; import java.util.List; + +@Component public class StorageCoreServiceImpl implements IStorageCoreService { + @Autowired + private IWmTransactionService wmTransactionService; + /** + * 处理入库单行 + * @param lines + */ @Override public void processItemRecpt(List lines) { String transactionType = UserConstants.TRANSACTION_TYPE_ITEM_RECPT; @@ -24,8 +36,20 @@ public class StorageCoreServiceImpl implements IStorageCoreService { ItemRecptTxBean line = lines.get(i); WmTransaction transaction = new WmTransaction(); transaction.setTransactionType(transactionType); - - + BeanUtils.copyBeanProp(transaction,line); + transaction.setTransactionFlag(1); //库存增加 + transaction.setTransactionDate(new Date()); + wmTransactionService.processTransaction(transaction); +// transaction.setItemId(line.getItemId()); +// transaction.setItemCode(line.getItemCode()); +// transaction.setItemName(line.getItemName()); +// transaction.setSpecification(line.getSpecification()); +// transaction.setUnitOfMeasure(line.getUnitOfMeasure()); +// transaction.setBatchCode(line.getBatchCode()); +// transaction.setWarehouseId(line.getWarehouseId()); +// transaction.setWarehouseCode(line.getWarehouseCode()); +// transaction.setWarehouseName(line.getWarehouseName()); +// transaction.setLocationId(line.getLocationId()); } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmItemRecptServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmItemRecptServiceImpl.java index 95f7bcd..3599b14 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmItemRecptServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmItemRecptServiceImpl.java @@ -110,6 +110,6 @@ public class WmItemRecptServiceImpl implements IWmItemRecptService @Override public List getTxBeans(Long receptId) { - return null; + return wmItemRecptMapper.getTxBeans(receptId); } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmMaterialStockServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmMaterialStockServiceImpl.java index 895fe54..60d1036 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmMaterialStockServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmMaterialStockServiceImpl.java @@ -33,6 +33,7 @@ public class WmMaterialStockServiceImpl implements IWmMaterialStockService return wmMaterialStockMapper.selectWmMaterialStockByMaterialStockId(materialStockId); } + /** * 查询库存记录列表 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmTransactionServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmTransactionServiceImpl.java index 741e987..8b31afd 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmTransactionServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmTransactionServiceImpl.java @@ -1,7 +1,14 @@ package com.ktg.mes.wm.service.impl; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; + +import com.ktg.common.exception.BussinessException; import com.ktg.common.utils.DateUtils; +import com.ktg.common.utils.StringUtils; +import com.ktg.mes.wm.domain.WmMaterialStock; +import com.ktg.mes.wm.mapper.WmMaterialStockMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ktg.mes.wm.mapper.WmTransactionMapper; @@ -20,6 +27,85 @@ public class WmTransactionServiceImpl implements IWmTransactionService @Autowired private WmTransactionMapper wmTransactionMapper; + @Autowired + private WmMaterialStockMapper wmMaterialStockMapper; + + @Override + public WmTransaction processTransaction(WmTransaction wmTransaction) { + WmMaterialStock stock = new WmMaterialStock(); + + validate(wmTransaction); + initStock(wmTransaction,stock); + + WmMaterialStock ms =wmMaterialStockMapper.loadMaterialStock(stock); + BigDecimal quantity = wmTransaction.getTransactionQuantity().multiply(new BigDecimal(wmTransaction.getTransactionFlag())); + if(StringUtils.isNotNull(ms)){ + //MS已存在 + stock.setQuantityOnhand(ms.getQuantityOnhand().add(quantity)); + stock.setMaterialStockId(ms.getMaterialStockId()); + wmMaterialStockMapper.updateWmMaterialStock(stock); + }else { + //MS不存在 + stock.setQuantityOnhand(quantity); + wmMaterialStockMapper.insertWmMaterialStock(stock); + } + wmTransaction.setMaterialStockId(stock.getMaterialStockId()); + wmTransaction.setTransactionQuantity(quantity); + wmTransactionMapper.insertWmTransaction(wmTransaction); + return wmTransaction; + } + + + private void validate(WmTransaction transaction){ + if(StringUtils.isNull(transaction.getTransactionType())){ + throw new BussinessException("库存事务不能为空"); + } + + if(StringUtils.isNull(transaction.getTransactionQuantity())){ + throw new BussinessException("事务数量不能为空"); + } + + if(StringUtils.isNull(transaction.getSourceDocCode())){ + throw new BussinessException("来源单据号不能为空"); + } + + if(StringUtils.isNull(transaction.getSourceDocLineId())){ + throw new BussinessException("来源单据行ID不能为空"); + } + + if(StringUtils.isNull(transaction.getTransactionDate())){ + transaction.setTransactionDate(new Date()); + } + } + + public void initStock(WmTransaction transaction,WmMaterialStock stock){ + stock.setItemId(transaction.getItemId()); + stock.setItemCode(transaction.getItemCode()); + stock.setItemName(transaction.getItemName()); + stock.setSpecification(transaction.getSpecification()); + stock.setUnitOfMeasure(transaction.getUnitOfMeasure()); + stock.setBatchCode(transaction.getBatchCode()); + stock.setWarehouseId(transaction.getWarehouseId()); + stock.setWarehouseCode(transaction.getWarehouseCode()); + stock.setWarehouseName(transaction.getWarehouseName()); + stock.setLocationId(transaction.getLocationId()); + stock.setLocationCode(transaction.getLocationCode()); + stock.setLocationName(transaction.getLocationName()); + if(StringUtils.isNotNull(transaction.getAreaId())){ + stock.setAreaId(transaction.getAreaId()); + stock.setAreaCode(transaction.getAreaCode()); + stock.setAreaName(transaction.getAreaName()); + } + if(StringUtils.isNotNull(transaction.getVendorId())){ + stock.setVendorId(transaction.getVendorId()); + stock.setVendorCode(transaction.getVendorCode()); + stock.setVendorName(transaction.getVendorName()); + stock.setVendorNick(transaction.getVendorNick()); + } + stock.setExpireDate(transaction.getExpireDate()); + } + + /** * 查询库存事务 * diff --git a/ktg-mes/src/main/resources/mapper/wm/WmItemRecptMapper.xml b/ktg-mes/src/main/resources/mapper/wm/WmItemRecptMapper.xml index 7273e8e..b7840c5 100644 --- a/ktg-mes/src/main/resources/mapper/wm/WmItemRecptMapper.xml +++ b/ktg-mes/src/main/resources/mapper/wm/WmItemRecptMapper.xml @@ -37,6 +37,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select recpt_id, recpt_code, recpt_name, iqc_id, iqc_code, po_code, vendor_id, vendor_code, vendor_name, vendor_nick, warehouse_id, warehouse_code, warehouse_name, location_id, location_code, location_name, area_id, area_code, area_name, recpt_date, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from wm_item_recpt @@ -78,6 +111,20 @@ where recpt_code = #{recptCode} + + + insert into wm_item_recpt diff --git a/ktg-mes/src/main/resources/mapper/wm/WmMaterialStockMapper.xml b/ktg-mes/src/main/resources/mapper/wm/WmMaterialStockMapper.xml index a53e02f..515fdf4 100644 --- a/ktg-mes/src/main/resources/mapper/wm/WmMaterialStockMapper.xml +++ b/ktg-mes/src/main/resources/mapper/wm/WmMaterialStockMapper.xml @@ -2,7 +2,7 @@ - + @@ -78,7 +78,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where material_stock_id = #{materialStockId} - + + + + insert into wm_material_stock