diff --git a/src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java b/src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java
index 3b4109d..ed1c94c 100644
--- a/src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java
+++ b/src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java
@@ -297,7 +297,6 @@ public class MesServiceImpl implements IMesService {
             if (detail.getLMPKID() != null) {
                 shipmentDetail.setLMPKID(detail.getLMPKID());
             }
-
             shipmentDetail.setShipmentId(shipmentHeader.getId());
             shipmentDetail.setShipmentCode(shipmentHeader.getCode());
             shipmentDetail.setCompanyCode("BHF");
@@ -313,12 +312,31 @@ public class MesServiceImpl implements IMesService {
             throw new ServiceException("生成出库单详情失败");
         }
 
-
         //如果通知单号和车间、仓库相同,自动合并单据
-
+        String warehouse = shipmentHeader.getWarehouse();
+        String workshop = shipmentHeader.getWorkshop();
+        String noticeNo = shipmentHeader.getNoticeNo();
+        if (StringUtils.isNotEmpty(noticeNo) && StringUtils.isNotEmpty(warehouse) && StringUtils.isNotEmpty(workshop)) {
+            List<ShipmentHeader> automaticMergeCount = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>()
+                    .ne(ShipmentHeader::getCode, shipmentHeader.getCode())
+                    .eq(ShipmentHeader::getFirstStatus, QuantityConstant.SHIPMENT_CONTAINER_BUILD)
+                    .eq(ShipmentHeader::getLastStatus, QuantityConstant.SHIPMENT_CONTAINER_BUILD)
+                    .eq(ShipmentHeader::getDeleted, 0)
+                    .eq(ShipmentHeader::getWarehouse, warehouse)
+                    .eq(ShipmentHeader::getWorkshop, workshop)
+                    .eq(ShipmentHeader::getNoticeNo, noticeNo));
+            if (!automaticMergeCount.isEmpty()) {
+                String ids = automaticMergeCount.get(0).getId() + "," + shipmentHeader.getId();
+                AjaxResult analysis = shipmentHeaderService.analysis(ids);
+                if (analysis.hasErr()) {
+                    throw new ServiceException("合并单据失败," + analysis.getMsg());
+                }
+            }
+        }
         return AjaxResult.success(receiptDTO);
     }
 
+
     /**
      * 取消入库
      */
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
index 623d2bb..e7165e0 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
@@ -498,125 +498,8 @@ public class ShipmentHeaderController extends BaseController {
     @Log(title = "出库-出库单", operating = "单据合并", action = BusinessType.OTHER)
     @PostMapping("/addWave")
     @ResponseBody
-    @Transactional
     public AjaxResult analysis(String ids, String codeNull) {
-        BigDecimal totalQty = BigDecimal.ZERO;
-        int totalLines = 0;
-        if (StringUtils.isEmpty(ids)) {
-            throw new ServiceException("id不能为空");
-        }
-        // 查询需要合并的头表
-        String[] headerIdArr = ids.split(",");
-        LambdaQueryWrapper<ShipmentHeader> headerWrapper = Wrappers.lambdaQuery();
-        headerWrapper.in(ShipmentHeader::getId, headerIdArr);
-        List<ShipmentHeader> shipmentHeaderList = shipmentHeaderService.list(headerWrapper);
-        if (shipmentHeaderList.isEmpty()) {
-            throw new ServiceException("单据主表不存在!!!");
-        }
-        shipmentHeaderList.forEach(shipmentHeader -> {
-            //新增出库单历史
-            shipmentHeaderHistoryService.saveById(shipmentHeader.getId().toString(), "合并前单据");
-            if (!"MOM".equals(shipmentHeader.getCreatedBy())) {
-                throw new ServiceException("手动创建的单据,不允许合并!!!");
-            }
-            if ("merge".equals(shipmentHeader.getShipmentType())) {
-                throw new ServiceException("单据类型为合并单据,不允许合并!!!");
-            }
-            if (shipmentHeader.getLastStatus() > QuantityConstant.RECEIPT_HEADER_POOL || shipmentHeader.getFirstStatus() > QuantityConstant.RECEIPT_HEADER_POOL) {
-                throw new ServiceException("单据已被使用,不能合并,必须是新建状态或订单池!");
-            }
-
-        });
-        // 创建合并后的头表
-        ShipmentHeader shipmentHeader = new ShipmentHeader();
-        shipmentHeader.setShipmentType("merge");
-        String code = shipmentHeaderServiceImpl.createCode(shipmentHeader.getShipmentType());
-        shipmentHeader.setCode(code);
-        shipmentHeader.setWarehouseCode("CS0001");
-        shipmentHeader.setCompanyCode("BHF");
-        shipmentHeader.setCreatedBy("MOM");
-        shipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_BUILD);
-        shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_BUILD);
-        StringBuilder recordID = new StringBuilder();
-        StringBuilder workShops = new StringBuilder();
-        Set<String> uniqueWorkshops = new HashSet<>();
-        for (ShipmentHeader header : shipmentHeaderList) {
-            uniqueWorkshops.add(header.getWorkshop());
-        }
-        for (String workshop : uniqueWorkshops) {
-            workShops.append(workshop).append(",");
-        }
-        // 移除最后一个逗号
-        if (workShops.length() > 0) {
-            workShops.setLength(workShops.length() - 1);
-        }
-        shipmentHeaderList.forEach(header -> recordID.append(header.getId()).append(","));
-        shipmentHeader.setWorkshop(workShops.toString());
-        shipmentHeader.setRecordID(recordID.toString());
-        shipmentHeaderService.save(shipmentHeader);
-
-        // 修改合并子表
-        List<ShipmentDetail> headerListData = new ArrayList<>();
-        for (ShipmentHeader header : shipmentHeaderList) {
-            totalQty = totalQty.add(header.getTotalQty());
-            totalLines = totalLines + header.getTotalLines();
-            LambdaQueryWrapper<ShipmentDetail> detailWrapper = Wrappers.lambdaQuery();
-            detailWrapper.eq(ShipmentDetail::getShipmentId, header.getId());
-            List<ShipmentDetail> headerList = shipmentDetailService.list(detailWrapper);
-            headerList.forEach(shipmentDetail -> {
-                shipmentDetail.setRecordID(header.getId());
-                shipmentDetail.setRecordCode(header.getCode());
-                shipmentDetail.setPreMergerWorkshop(header.getWorkshop());
-                shipmentDetail.setShipmentId(shipmentHeader.getId());
-                shipmentDetail.setShipmentCode(shipmentHeader.getCode());
-                shipmentDetail.setCreatedBy("MOM");
-                shipmentDetail.setLastUpdatedBy("MOM");
-                shipmentDetail.setStatus(QuantityConstant.TASK_STATUS_BUILD);
-            });
-            headerListData.addAll(headerList);
-        }
-        // 保存合并后的子表
-        shipmentDetailService.saveBatch(headerListData);
-
-        //保存总数量 总行数
-        shipmentHeader.setTotalLines(totalLines);
-        shipmentHeader.setTotalQty(totalQty);
-        shipmentHeaderService.updateById(shipmentHeader);
-
-        //// 把合并完的头表置为删除状态
-        //shipmentHeaderList.forEach(header -> {
-        //    header.setDeleted(true);
-        //});
-        //// 保存置为删除状态的头表
-        //shipmentHeaderService.updateBatchById(shipmentHeaderList);
-
-        // shipmentDetailService.saveWave(ids,code);
-
-
-        List<ShipmentHeader> source = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>().in(ShipmentHeader::getId, headerIdArr));
-        List<Integer> shipmentHeaderIds = new ArrayList<>();
-        for (ShipmentHeader header : source) {
-            shipmentHeaderIds.add(header.getId());
-        }
-        if (!shipmentHeaderService.removeByIds(shipmentHeaderIds)) {
-            throw new ServiceException("删除头表失败");
-        }
-
-        List<Integer> shipmentDetailIds = new ArrayList<>();
-
-        for (ShipmentHeader header : source) {
-            List<ShipmentDetail> details = shipmentDetailService.list(new LambdaQueryWrapper<ShipmentDetail>().eq(ShipmentDetail::getShipmentId, header.getId()));
-            for (ShipmentDetail shipmentDetail : details) {
-                shipmentDetailIds.add(shipmentDetail.getId());
-            }
-        }
-
-        if (shipmentDetailIds.size() > 0) {
-            if (!shipmentDetailService.removeByIds(shipmentDetailIds)) {
-                throw new ServiceException("删除明细表失败");
-            }
-        }
-        return AjaxResult.success("合并成功!");
+        return shipmentHeaderService.analysis(ids);
     }
 
     /**
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java
index 5b58c02..335f327 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java
@@ -7,10 +7,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 
-public interface ShipmentHeaderService extends IService<ShipmentHeader>{
+public interface ShipmentHeaderService extends IService<ShipmentHeader> {
 
     //新增出库主单
-    AjaxResult<Boolean> saveHeader(ShipmentHeader shipmentHeader) ;
+    AjaxResult<Boolean> saveHeader(ShipmentHeader shipmentHeader);
 
     //根据单据类型建单据号
     String createCode(String shipmentType);
@@ -26,4 +26,6 @@ public interface ShipmentHeaderService extends IService<ShipmentHeader>{
     List<ShipmentHeader> selectListByCreated();
 
     List<ShipmentHeader> getLatestShipment();
+
+    AjaxResult analysis(String ids);
 }
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
index 9bb2237..7887e91 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
@@ -32,11 +32,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.lang.reflect.InvocationTargetException;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, ShipmentHeader> implements ShipmentHeaderService {
@@ -297,4 +295,124 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
         return shipmentHeaderMapper.getLatestShipment();
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult analysis(String ids) {
+        BigDecimal totalQty = BigDecimal.ZERO;
+        int totalLines = 0;
+        if (StringUtils.isEmpty(ids)) {
+            throw new ServiceException("id不能为空");
+        }
+        // 查询需要合并的头表
+        String[] headerIdArr = ids.split(",");
+        LambdaQueryWrapper<ShipmentHeader> headerWrapper = Wrappers.lambdaQuery();
+        headerWrapper.in(ShipmentHeader::getId, headerIdArr);
+        List<ShipmentHeader> shipmentHeaderList = list(headerWrapper);
+        if (shipmentHeaderList.isEmpty()) {
+            throw new ServiceException("单据主表不存在!!!");
+        }
+        shipmentHeaderList.forEach(shipmentHeader -> {
+            //新增出库单历史
+            shipmentHeaderHistoryService.saveById(shipmentHeader.getId().toString(), "合并前单据");
+            if (!"MOM".equals(shipmentHeader.getCreatedBy())) {
+                throw new ServiceException("手动创建的单据,不允许合并!!!");
+            }
+            if ("merge".equals(shipmentHeader.getShipmentType())) {
+                throw new ServiceException("单据类型为合并单据,不允许合并!!!");
+            }
+            if (shipmentHeader.getLastStatus() > QuantityConstant.RECEIPT_HEADER_POOL || shipmentHeader.getFirstStatus() > QuantityConstant.RECEIPT_HEADER_POOL) {
+                throw new ServiceException("单据已被使用,不能合并,必须是新建状态或订单池!");
+            }
+
+        });
+        // 创建合并后的头表
+        ShipmentHeader shipmentHeader = new ShipmentHeader();
+        shipmentHeader.setShipmentType("merge");
+        String code = createCode(shipmentHeader.getShipmentType());
+        shipmentHeader.setCode(code);
+        shipmentHeader.setWarehouseCode("CS0001");
+        shipmentHeader.setCompanyCode("BHF");
+        shipmentHeader.setCreatedBy("MOM");
+        shipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_BUILD);
+        shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_BUILD);
+        StringBuilder recordID = new StringBuilder();
+        StringBuilder workShops = new StringBuilder();
+        Set<String> uniqueWorkshops = new HashSet<>();
+        for (ShipmentHeader header : shipmentHeaderList) {
+            uniqueWorkshops.add(header.getWorkshop());
+        }
+        for (String workshop : uniqueWorkshops) {
+            workShops.append(workshop).append(",");
+        }
+        // 移除最后一个逗号
+        if (workShops.length() > 0) {
+            workShops.setLength(workShops.length() - 1);
+        }
+        shipmentHeaderList.forEach(header -> recordID.append(header.getId()).append(","));
+        shipmentHeader.setWorkshop(workShops.toString());
+        shipmentHeader.setRecordID(recordID.toString());
+        save(shipmentHeader);
+
+        // 修改合并子表
+        List<ShipmentDetail> headerListData = new ArrayList<>();
+        for (ShipmentHeader header : shipmentHeaderList) {
+            totalQty = totalQty.add(header.getTotalQty());
+            totalLines = totalLines + header.getTotalLines();
+            LambdaQueryWrapper<ShipmentDetail> detailWrapper = Wrappers.lambdaQuery();
+            detailWrapper.eq(ShipmentDetail::getShipmentId, header.getId());
+            List<ShipmentDetail> headerList = shipmentDetailService.list(detailWrapper);
+            headerList.forEach(shipmentDetail -> {
+                shipmentDetail.setRecordID(header.getId());
+                shipmentDetail.setRecordCode(header.getCode());
+                shipmentDetail.setPreMergerWorkshop(header.getWorkshop());
+                shipmentDetail.setShipmentId(shipmentHeader.getId());
+                shipmentDetail.setShipmentCode(shipmentHeader.getCode());
+                shipmentDetail.setCreatedBy("MOM");
+                shipmentDetail.setLastUpdatedBy("MOM");
+                shipmentDetail.setStatus(QuantityConstant.TASK_STATUS_BUILD);
+            });
+            headerListData.addAll(headerList);
+        }
+        // 保存合并后的子表
+        shipmentDetailService.saveBatch(headerListData);
+
+        //保存总数量 总行数
+        shipmentHeader.setTotalLines(totalLines);
+        shipmentHeader.setTotalQty(totalQty);
+        updateById(shipmentHeader);
+
+        //// 把合并完的头表置为删除状态
+        //shipmentHeaderList.forEach(header -> {
+        //    header.setDeleted(true);
+        //});
+        //// 保存置为删除状态的头表
+        //shipmentHeaderService.updateBatchById(shipmentHeaderList);
+        // shipmentDetailService.saveWave(ids,code);
+
+
+        List<ShipmentHeader> source = list(new LambdaQueryWrapper<ShipmentHeader>().in(ShipmentHeader::getId, headerIdArr));
+        List<Integer> shipmentHeaderIds = new ArrayList<>();
+        for (ShipmentHeader header : source) {
+            shipmentHeaderIds.add(header.getId());
+        }
+        if (!removeByIds(shipmentHeaderIds)) {
+            throw new ServiceException("删除头表失败");
+        }
+
+        List<Integer> shipmentDetailIds = new ArrayList<>();
+        for (ShipmentHeader header : source) {
+            List<ShipmentDetail> details = shipmentDetailService.list(new LambdaQueryWrapper<ShipmentDetail>().eq(ShipmentDetail::getShipmentId, header.getId()));
+            for (ShipmentDetail shipmentDetail : details) {
+                shipmentDetailIds.add(shipmentDetail.getId());
+            }
+        }
+
+        if (!shipmentDetailIds.isEmpty()) {
+            if (!shipmentDetailService.removeByIds(shipmentDetailIds)) {
+                throw new ServiceException("删除明细表失败");
+            }
+        }
+        return AjaxResult.success("合并成功");
+    }
+
 }