diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/controller/ErpController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/controller/ErpController.java
new file mode 100644
index 0000000..9a13d2e
--- /dev/null
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/controller/ErpController.java
@@ -0,0 +1,49 @@
+package org.jeecg.modules.wms.api.erp.controller;
+
+
+import com.google.gson.Gson;
+import io.swagger.annotations.ApiOperation;
+import net.sf.json.JSON;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.util.JwtUtil;
+import org.jeecg.modules.wms.api.erp.entity.ErpReceipt;
+import org.jeecg.modules.wms.api.erp.entity.ErpReceiptDetail;
+import org.jeecg.modules.wms.api.erp.entity.ErpReceiptHeader;
+import org.jeecg.modules.wms.api.erp.service.IErpService;
+import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain;
+import org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger;
+import org.jeecg.modules.wms.framework.controller.BaseController;
+import org.jeecg.utils.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 游杰
+ */
+@RestController
+@RequestMapping("/API/WMS/erp")
+public class ErpController extends BaseController {
+
+    @Resource
+    private IErpService erpService;
+
+    @PostMapping("/receipt")
+    @ResponseBody
+    @ApiLogger(apiName = "入库单下发", from="WCS")
+    public Result receipt(@RequestBody ErpReceipt erpReceipt, HttpServletRequest req) {
+       String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
+       Result result =  handleMultiProcess("receipt", new JeecgController.MultiProcessListener() {
+            @Override
+            public Result doProcess() {
+                return erpService.receipt(erpReceipt, warehouseCode);
+            }
+        });
+        return result;
+    }
+}
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceipt.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceipt.java
new file mode 100644
index 0000000..53ce737
--- /dev/null
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceipt.java
@@ -0,0 +1,16 @@
+package org.jeecg.modules.wms.api.erp.entity;
+
+import lombok.Data;
+import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail;
+
+import java.util.List;
+
+/**
+ * @author 游杰
+ */
+@Data
+public class ErpReceipt {
+
+    private ErpReceiptHeader receiptHeader;
+    private List<ErpReceiptDetail> receiptDetailList;
+}
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptDetail.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptDetail.java
new file mode 100644
index 0000000..b859060
--- /dev/null
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptDetail.java
@@ -0,0 +1,42 @@
+package org.jeecg.modules.wms.api.erp.entity;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author 游杰
+ */
+@Data
+public class ErpReceiptDetail {
+
+    /**
+     * 物料编码
+     */
+    private String materialCode;
+
+    /**
+     * 单据数量
+     */
+    private BigDecimal qty;
+
+    /**
+     * 库存状况
+     */
+    private String inventoryStatus;
+
+    /**
+     * 批次
+     */
+    private String batch;
+
+    /**
+     * 批号
+     */
+    private String lot;
+
+    /**
+     * 项目号
+     */
+    private String project;
+}
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptHeader.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptHeader.java
new file mode 100644
index 0000000..2f28a0a
--- /dev/null
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptHeader.java
@@ -0,0 +1,32 @@
+package org.jeecg.modules.wms.api.erp.entity;
+
+import lombok.Data;
+
+/**
+ * @author 游杰
+ */
+@Data
+public class ErpReceiptHeader {
+
+    /**
+     * 货主
+     */
+    private String companyCode;
+    /**
+     * 入库单类型
+     */
+    private String receiptType;
+    /**
+     * 上游单号
+     */
+    private String referCode;
+    /**
+     * 供应商编码
+     */
+    private String supplierCode;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/IErpService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/IErpService.java
new file mode 100644
index 0000000..48f4246
--- /dev/null
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/IErpService.java
@@ -0,0 +1,9 @@
+package org.jeecg.modules.wms.api.erp.service;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.wms.api.erp.entity.ErpReceipt;
+
+public interface IErpService {
+
+    public Result receipt(ErpReceipt erpReceipt, String warehouseCode);
+}
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
new file mode 100644
index 0000000..7993450
--- /dev/null
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
@@ -0,0 +1,137 @@
+package org.jeecg.modules.wms.api.erp.service.impl;
+
+import com.aliyun.oss.ServiceException;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.wms.api.erp.entity.ErpReceipt;
+import org.jeecg.modules.wms.api.erp.entity.ErpReceiptDetail;
+import org.jeecg.modules.wms.api.erp.entity.ErpReceiptHeader;
+import org.jeecg.modules.wms.api.erp.service.IErpService;
+import org.jeecg.modules.wms.config.company.entity.Company;
+import org.jeecg.modules.wms.config.company.service.ICompanyService;
+import org.jeecg.modules.wms.config.material.entity.Material;
+import org.jeecg.modules.wms.config.material.service.IMaterialService;
+import org.jeecg.modules.wms.config.warehouse.entity.Warehouse;
+import org.jeecg.modules.wms.config.warehouse.service.IWarehouseService;
+import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail;
+import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader;
+import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptDetailService;
+import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService;
+import org.jeecg.utils.StringUtils;
+import org.jeecg.utils.constant.QuantityConstant;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author 游杰
+ */
+@Service
+public class ErpServiceImpl implements IErpService {
+
+    @Resource
+    private IWarehouseService warehouseService;
+    @Resource
+    private ICompanyService companyService;
+    @Resource
+    private IReceiptHeaderService receiptHeaderService;
+    @Resource
+    private IMaterialService materialService;
+    @Resource
+    private IReceiptDetailService receiptDetailService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result receipt(ErpReceipt erpReceipt, String warehouseCode) {
+        if(StringUtils.isEmpty(warehouseCode)) {
+            return  Result.error("入库单下发,仓库编码为空");
+        }
+        Warehouse warehouse = warehouseService.getWarehouseByCode(warehouseCode);
+        if(warehouse == null) {
+            return  Result.error("入库单下发, 没有找到仓库");
+        }
+        if(erpReceipt == null) {
+            return  Result.error("入库单下发,没有传receipt");
+        }
+        ErpReceiptHeader erpReceiptHeader = erpReceipt.getReceiptHeader();
+        List<ErpReceiptDetail> erpReceiptDetailList = erpReceipt.getReceiptDetailList();
+        if(erpReceiptHeader == null) {
+            return  Result.error("入库单下发,没有传receiptHeader");
+        }
+        if(erpReceiptDetailList == null) {
+            return  Result.error("入库单下发,没有传receiptDetailList");
+        }
+        String receiptType = erpReceiptHeader.getReceiptType();
+        String referCode = erpReceiptHeader.getReferCode();
+        String companyCode = erpReceiptHeader.getCompanyCode();
+        String remark = erpReceiptHeader.getRemark();
+        String supplierCode = erpReceiptHeader.getSupplierCode();
+        if(StringUtils.isEmpty(receiptType)) {
+            return  Result.error("入库单下发, receiptType为空");
+        }
+        if(StringUtils.isEmpty(referCode)) {
+            return  Result.error("入库单下发, referCode为空");
+        }
+        if(StringUtils.isEmpty(companyCode)) {
+            Company company =  companyService.getDefaultCompany();
+            if(company == null) {
+                return Result.error("入库单下发, company为空");
+            }
+            companyCode = company.getCode();
+        }
+        ReceiptHeader receiptHeader = new ReceiptHeader();
+        receiptHeader.setCompanyCode(companyCode);
+        receiptHeader.setType(receiptType);
+        receiptHeader.setReferCode(referCode);
+        receiptHeader.setSupplierCode(supplierCode);
+        receiptHeader.setRemark(remark);
+        Result result = receiptHeaderService.saveReceiptHeader(receiptHeader);
+        if(!result.isSuccess()) {
+            throw new ServiceException("创建入库单头失败");
+        }
+        for(ErpReceiptDetail erpReceiptDetail : erpReceiptDetailList) {
+            BigDecimal qty = erpReceiptDetail.getQty();
+            String materialCode = erpReceiptDetail.getMaterialCode();
+            String inventoryStatus = erpReceiptDetail.getInventoryStatus();
+            String batch = erpReceiptDetail.getBatch();
+            String lot = erpReceiptDetail.getLot();
+            String project = erpReceiptDetail.getProject();
+            if(StringUtils.isEmpty(materialCode)) {
+                throw new ServiceException("入库单下发, 物料编码为空");
+            }
+            if(StringUtils.isEmpty(inventoryStatus)) {
+                inventoryStatus = QuantityConstant.QUALITY_GOOD;
+            }
+            if(qty.compareTo(BigDecimal.ZERO) > 0) {
+                throw new ServiceException("入库单下发, 单据数量大于0");
+            }
+            ReceiptDetail receiptDetail = new ReceiptDetail();
+            receiptDetail.setCompanyCode(companyCode);
+            receiptDetail.setReceiptCode(receiptHeader.getCode());
+            receiptDetail.setReceiptId(receiptHeader.getId());
+            receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD);
+            receiptDetail.setQty(qty);
+            Material material = materialService.getMaterialByCode(materialCode);
+            if(material == null) {
+                throw new ServiceException("入库单下发, 没有找到物料信息" + materialCode);
+            }
+            receiptDetail.setInventoryStatus(inventoryStatus);
+            receiptDetail.setMaterialCode(materialCode);
+            receiptDetail.setMaterialName(material.getName());
+            receiptDetail.setMaterialSpec(material.getSpec());
+            receiptDetail.setMaterialUnit(material.getUnit());
+            receiptDetail.setBatch(batch);
+            receiptDetail.setLot(lot);
+            receiptDetail.setProject(project);
+            boolean success = receiptDetailService.save(receiptDetail);
+            if(!success) {
+                throw new ServiceException("入库单下发, 保存入库单详情失败");
+            }
+        }
+        return Result.OK("入库单下发成功");
+    }
+
+
+}
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java
index f6b603e..69f4f6c 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java
@@ -28,8 +28,8 @@ public class WcsController extends BaseController {
     @Resource
     private ITaskHeaderService taskHeaderService;
 
-    /*
-   WCS给的长,宽,高,重在有不同规格库位才有用,destination是区域, locationType库位类型
+    /**
+     ** WCS给的长,宽,高,重在有不同规格库位才有用,destination是区域, locationType库位类型
    */
     @AutoLog(value = "WCS仓位分配")
     @PostMapping("/warecellAllocation")
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/ICompanyService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/ICompanyService.java
index 18b38e2..6772ca5 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/ICompanyService.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/ICompanyService.java
@@ -11,4 +11,5 @@ import org.jeecg.modules.wms.config.company.entity.Company;
  */
 public interface ICompanyService extends IService<Company> {
 
+    public Company getDefaultCompany();
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/impl/CompanyServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/impl/CompanyServiceImpl.java
index ea002d2..965d85b 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/impl/CompanyServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/impl/CompanyServiceImpl.java
@@ -1,5 +1,7 @@
 package org.jeecg.modules.wms.config.company.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.jeecg.modules.wms.config.company.entity.Company;
 import org.jeecg.modules.wms.config.company.mapper.CompanyMapper;
 import org.jeecg.modules.wms.config.company.service.ICompanyService;
@@ -16,4 +18,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Service
 public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> implements ICompanyService {
 
+    @Override
+    public Company getDefaultCompany() {
+        LambdaQueryWrapper<Company> companyLambdaQueryWrapper = Wrappers.lambdaQuery();
+        companyLambdaQueryWrapper.last(" limit 1");
+        Company company = getOne(companyLambdaQueryWrapper);
+        return company;
+    }
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/IWarehouseService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/IWarehouseService.java
index 14a4207..db5f4ce 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/IWarehouseService.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/IWarehouseService.java
@@ -14,4 +14,6 @@ import java.util.List;
 public interface IWarehouseService extends IService<Warehouse> {
 
     public List<Warehouse> getAllWarehouseList();
+
+    public Warehouse getWarehouseByCode(String code);
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/impl/WarehouseServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/impl/WarehouseServiceImpl.java
index 3143145..83f5d37 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/impl/WarehouseServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/impl/WarehouseServiceImpl.java
@@ -1,5 +1,7 @@
 package org.jeecg.modules.wms.config.warehouse.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.jeecg.modules.wms.config.warehouse.entity.Warehouse;
 import org.jeecg.modules.wms.config.warehouse.mapper.WarehouseMapper;
 import org.jeecg.modules.wms.config.warehouse.service.IWarehouseService;
@@ -22,4 +24,12 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse
     public List<Warehouse> getAllWarehouseList() {
         return list();
     }
+
+    @Override
+    public Warehouse getWarehouseByCode(String code) {
+        LambdaQueryWrapper<Warehouse> warehouseLambdaQueryWrapper = Wrappers.lambdaQuery();
+        warehouseLambdaQueryWrapper.eq(Warehouse::getCode, code);
+        Warehouse warehouse = getOne(warehouseLambdaQueryWrapper);
+        return warehouse;
+    }
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java
index ff94d64..373bc74 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java
@@ -94,8 +94,8 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R
 		receiptHeader.setCode(code);
 		receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_BUILD);
 		receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_BUILD);
-		boolean result = save(receiptHeader);
-		if(!result) {
+		boolean success = save(receiptHeader);
+		if(!success) {
 			return Result.OK("添加失败!");
 		}
 		return Result.OK("添加成功!");
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml
index cb741eb..03ad129 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml
@@ -131,9 +131,9 @@ spring:
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
         master:
-          url: jdbc:mysql://localhost:3306/wms4?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
+          url: jdbc:mysql://172.16.29.45:3306/wms4?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
           username: root
-          password: HHsoft123.
+          password: hhsoftware
           driver-class-name: com.mysql.cj.jdbc.Driver
           # 多数据源配置
           #multi-datasource1: