diff --git a/src/main/java/com/huaheng/pc/config/FilterConfigDetail/controller/FilterConfigDetailController.java b/src/main/java/com/huaheng/pc/config/FilterConfigDetail/controller/FilterConfigDetailController.java
new file mode 100644
index 0000000..917873c
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/FilterConfigDetail/controller/FilterConfigDetailController.java
@@ -0,0 +1,92 @@
+package com.huaheng.pc.config.FilterConfigDetail.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
+import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;
+import io.swagger.annotations.Api;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 订单分析过滤子表
+ * @author ricard
+ * @date    19.8.26
+ *
+ */
+
+@Api(tags={"订单分析过滤子表"})
+@Controller
+@RequestMapping("/config/filterConfigDetail")
+public class FilterConfigDetailController extends BaseController {
+
+    private String prefix = "config/filterConfigDetail";
+
+    @Autowired
+    private FilterConfigDetailService filterConfigDetailService;
+
+
+    @RequiresPermissions("config:filterConfigDetail:view")
+    @GetMapping()
+    public String filterConfigDetail() {
+        return prefix + "/filterConfigDetail";
+    }
+
+    /**
+     * 查询订单分析结果
+     */
+    @RequiresPermissions("config:filterConfigDetail:list")
+    @Log(title = "配置-订单分析过滤子表", operating="查看订单分析过滤子表", action = BusinessType.GRANT)
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(FilterConfigDetail filterConfigDetail, String createdBegin, String createdEnd)
+    {
+        LambdaQueryWrapper<FilterConfigDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),FilterConfigDetail::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), FilterConfigDetail::getCreated, createdEnd)
+                .eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(StringUtils.isNotEmpty(filterConfigDetail.getModuleType()
+                ),FilterConfigDetail::getModuleType,filterConfigDetail.getModuleType())
+                .eq(StringUtils.isNotEmpty(filterConfigDetail.getRecordType()
+                 ),FilterConfigDetail::getRecordType,filterConfigDetail.getRecordType())
+                .eq(StringUtils.isNotEmpty(filterConfigDetail.getFilterCode()
+                ),FilterConfigDetail::getFilterCode,filterConfigDetail.getFilterCode())
+                .like(StringUtils.isNotEmpty(filterConfigDetail.getFilterName()
+                ),FilterConfigDetail::getFilterName,filterConfigDetail.getFilterName());
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+            /**
+             * 使用分页查询
+             */
+            Page<FilterConfigDetail> page = new Page<>(pageNum, pageSize);
+            IPage<FilterConfigDetail> iPage = filterConfigDetailService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(),iPage.getTotal());
+        } else {
+            List<FilterConfigDetail> list = filterConfigDetailService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/FilterConfigDetail/domain/FilterConfigDetail.java b/src/main/java/com/huaheng/pc/config/FilterConfigDetail/domain/FilterConfigDetail.java
index aa2fe41..2a1cd7b 100644
--- a/src/main/java/com/huaheng/pc/shipment/FilterConfigDetail/domain/FilterConfigDetail.java
+++ b/src/main/java/com/huaheng/pc/config/FilterConfigDetail/domain/FilterConfigDetail.java
@@ -1,4 +1,4 @@
-package com.huaheng.pc.shipment.FilterConfigDetail.domain;
+package com.huaheng.pc.config.FilterConfigDetail.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -6,9 +6,10 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
 import java.io.Serializable;
 import java.util.Date;
-import lombok.Data;
 
 @ApiModel(value="com.huaheng.pc.shipment.FilterConfigDetail.domain.FilterConfigDetail")
 @Data
@@ -154,33 +155,6 @@ public class FilterConfigDetail implements Serializable {
     @ApiModelProperty(value="自定义字段4")
     private String userDef4;
 
-    /**
-     * 自定义字段5
-     */
-    @TableField(value = "userDef5")
-    @ApiModelProperty(value="自定义字段5")
-    private String userDef5;
-
-    /**
-     * 自定义字段6
-     */
-    @TableField(value = "userDef6")
-    @ApiModelProperty(value="自定义字段6")
-    private String userDef6;
-
-    /**
-     * 自定义字段7
-     */
-    @TableField(value = "userDef7")
-    @ApiModelProperty(value="自定义字段7")
-    private String userDef7;
-
-    /**
-     * 自定义字段8
-     */
-    @TableField(value = "userDef8")
-    @ApiModelProperty(value="自定义字段8")
-    private String userDef8;
 
     /**
      * 处理标记
diff --git a/src/main/java/com/huaheng/pc/shipment/FilterConfigDetail/mapper/FilterConfigDetailMapper.java b/src/main/java/com/huaheng/pc/config/FilterConfigDetail/mapper/FilterConfigDetailMapper.java
index f71d68d..470bf8b 100644
--- a/src/main/java/com/huaheng/pc/shipment/FilterConfigDetail/mapper/FilterConfigDetailMapper.java
+++ b/src/main/java/com/huaheng/pc/config/FilterConfigDetail/mapper/FilterConfigDetailMapper.java
@@ -1,7 +1,7 @@
-package com.huaheng.pc.shipment.FilterConfigDetail.mapper;
+package com.huaheng.pc.config.FilterConfigDetail.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaheng.pc.shipment.FilterConfigDetail.domain.FilterConfigDetail;
+import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
 
 public interface FilterConfigDetailMapper extends BaseMapper<FilterConfigDetail> {
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/FilterConfigDetail/service/FilterConfigDetailService.java b/src/main/java/com/huaheng/pc/config/FilterConfigDetail/service/FilterConfigDetailService.java
index ee911a8..507823a 100644
--- a/src/main/java/com/huaheng/pc/shipment/FilterConfigDetail/service/FilterConfigDetailService.java
+++ b/src/main/java/com/huaheng/pc/config/FilterConfigDetail/service/FilterConfigDetailService.java
@@ -1,11 +1,10 @@
-package com.huaheng.pc.shipment.FilterConfigDetail.service;
+package com.huaheng.pc.config.FilterConfigDetail.service;
 
-import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import java.util.List;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.huaheng.pc.shipment.FilterConfigDetail.domain.FilterConfigDetail;
-import com.huaheng.pc.shipment.FilterConfigDetail.mapper.FilterConfigDetailMapper;
+import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
+import com.huaheng.pc.config.FilterConfigDetail.mapper.FilterConfigDetailMapper;
+import org.springframework.stereotype.Service;
+
 @Service
 public class FilterConfigDetailService extends ServiceImpl<FilterConfigDetailMapper, FilterConfigDetail> {
 
diff --git a/src/main/java/com/huaheng/pc/config/FilterConfigHeader/controller/FilterConfigHeaderController.java b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/controller/FilterConfigHeaderController.java
new file mode 100644
index 0000000..7b50bc8
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/controller/FilterConfigHeaderController.java
@@ -0,0 +1,92 @@
+package com.huaheng.pc.config.FilterConfigHeader.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.config.FilterConfigHeader.domain.FilterConfigHeader;
+import com.huaheng.pc.config.FilterConfigHeader.service.FilterConfigHeaderService;
+import io.swagger.annotations.Api;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 订单分析过滤主表
+ * @author ricard
+ * @date    19.8.26
+ *
+ */
+
+@Api(tags={"订单分析过滤主表"})
+@Controller
+@RequestMapping("/config/filterConfigHeader")
+public class FilterConfigHeaderController extends BaseController {
+
+    private String prefix = "config/filterConfigHeader";
+
+    @Autowired
+    private FilterConfigHeaderService filterConfigHeaderService;
+
+    @RequiresPermissions("config:filterConfigHeader:view")
+    @GetMapping()
+    public String filterConfigHeader() {
+        return prefix + "/filterConfigHeader";
+    }
+
+    /**
+     * 查询订单分析结果
+     */
+    @RequiresPermissions("config:filterConfigHeader:list")
+    @Log(title = "配置-订单分析过滤主表", operating="查看订单分析过滤主表", action = BusinessType.GRANT)
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(FilterConfigHeader filterConfigHeader, String createdBegin, String createdEnd)
+    {
+        LambdaQueryWrapper<FilterConfigHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),FilterConfigHeader::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), FilterConfigHeader::getCreated, createdEnd)
+                .eq(FilterConfigHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(StringUtils.isNotEmpty(filterConfigHeader.getModuleType()
+                ),FilterConfigHeader::getModuleType,filterConfigHeader.getModuleType())
+                .eq(StringUtils.isNotEmpty(filterConfigHeader.getRecordType()
+                ),FilterConfigHeader::getRecordType,filterConfigHeader.getRecordType())
+                .eq(StringUtils.isNotEmpty(filterConfigHeader.getFilterCode()
+                ),FilterConfigHeader::getFilterCode,filterConfigHeader.getFilterCode())
+                .like(StringUtils.isNotEmpty(filterConfigHeader.getFilterName()
+                ),FilterConfigHeader::getFilterName,filterConfigHeader.getFilterName());
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+            /**
+             * 使用分页查询
+             */
+            Page<FilterConfigHeader> page = new Page<>(pageNum, pageSize);
+            IPage<FilterConfigHeader> iPage = filterConfigHeaderService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(),iPage.getTotal());
+        } else {
+            List<FilterConfigHeader> list = filterConfigHeaderService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/FilterConfigHeader/domain/FilterConfigHeader.java b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/domain/FilterConfigHeader.java
index 13d058c..e9e8e02 100644
--- a/src/main/java/com/huaheng/pc/shipment/FilterConfigHeader/domain/FilterConfigHeader.java
+++ b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/domain/FilterConfigHeader.java
@@ -1,4 +1,4 @@
-package com.huaheng.pc.shipment.FilterConfigHeader.domain;
+package com.huaheng.pc.config.FilterConfigHeader.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -6,9 +6,10 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
 import java.io.Serializable;
 import java.util.Date;
-import lombok.Data;
 
 @ApiModel(value="com.huaheng.pc.shipment.FilterConfigHeader.domain.FilterConfigHeader")
 @Data
@@ -126,33 +127,6 @@ public class FilterConfigHeader implements Serializable {
     @ApiModelProperty(value="自定义字段4")
     private String userDef4;
 
-    /**
-     * 自定义字段5
-     */
-    @TableField(value = "userDef5")
-    @ApiModelProperty(value="自定义字段5")
-    private String userDef5;
-
-    /**
-     * 自定义字段6
-     */
-    @TableField(value = "userDef6")
-    @ApiModelProperty(value="自定义字段6")
-    private String userDef6;
-
-    /**
-     * 自定义字段7
-     */
-    @TableField(value = "userDef7")
-    @ApiModelProperty(value="自定义字段7")
-    private String userDef7;
-
-    /**
-     * 自定义字段8
-     */
-    @TableField(value = "userDef8")
-    @ApiModelProperty(value="自定义字段8")
-    private String userDef8;
 
     /**
      * 处理标记
diff --git a/src/main/java/com/huaheng/pc/shipment/FilterConfigHeader/mapper/FilterConfigHeaderMapper.java b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/mapper/FilterConfigHeaderMapper.java
index 19ff1be..b4391a1 100644
--- a/src/main/java/com/huaheng/pc/shipment/FilterConfigHeader/mapper/FilterConfigHeaderMapper.java
+++ b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/mapper/FilterConfigHeaderMapper.java
@@ -1,7 +1,7 @@
-package com.huaheng.pc.shipment.FilterConfigHeader.mapper;
+package com.huaheng.pc.config.FilterConfigHeader.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaheng.pc.shipment.FilterConfigHeader.domain.FilterConfigHeader;
+import com.huaheng.pc.config.FilterConfigHeader.domain.FilterConfigHeader;
 
 public interface FilterConfigHeaderMapper extends BaseMapper<FilterConfigHeader> {
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/FilterConfigHeader/service/FilterConfigHeaderService.java b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/service/FilterConfigHeaderService.java
index 7e03591..dafaf1a 100644
--- a/src/main/java/com/huaheng/pc/shipment/FilterConfigHeader/service/FilterConfigHeaderService.java
+++ b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/service/FilterConfigHeaderService.java
@@ -1,11 +1,10 @@
-package com.huaheng.pc.shipment.FilterConfigHeader.service;
+package com.huaheng.pc.config.FilterConfigHeader.service;
 
-import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import java.util.List;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.huaheng.pc.shipment.FilterConfigHeader.mapper.FilterConfigHeaderMapper;
-import com.huaheng.pc.shipment.FilterConfigHeader.domain.FilterConfigHeader;
+import com.huaheng.pc.config.FilterConfigHeader.domain.FilterConfigHeader;
+import com.huaheng.pc.config.FilterConfigHeader.mapper.FilterConfigHeaderMapper;
+import org.springframework.stereotype.Service;
+
 @Service
 public class FilterConfigHeaderService extends ServiceImpl<FilterConfigHeaderMapper, FilterConfigHeader> {
 
diff --git a/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/controller/ShipmentAnalyzeTemplateController.java b/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/controller/ShipmentAnalyzeTemplateController.java
new file mode 100644
index 0000000..71f6fea
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/controller/ShipmentAnalyzeTemplateController.java
@@ -0,0 +1,88 @@
+package com.huaheng.pc.config.shipmentAnalyzeTemplate.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.config.shipmentAnalyzeTemplate.domain.ShipmentAnalyzeTemplate;
+import com.huaheng.pc.config.shipmentAnalyzeTemplate.service.ShipmentAnalyzeTemplateService;
+import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
+import io.swagger.annotations.Api;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 订单分析结果
+ * @author ricard
+ * @date    19.8.26
+ *
+ */
+
+@Api(tags={"订单分析结果"})
+@Controller
+@RequestMapping("/config/shipmentAnalyzeTemplate")
+public class ShipmentAnalyzeTemplateController extends BaseController {
+
+    private String prefix = "config/shipmentAnalyzeTemplate";
+
+    @Autowired
+    private ShipmentAnalyzeTemplateService shipmentAnalyzeTemplateService;
+
+
+    @RequiresPermissions("config:shipmentAnalyzeTemplate:view")
+    @GetMapping()
+    public String shipmentAnalyzeTemplate() {
+        return prefix + "/shipmentAnalyzeTemplate";
+    }
+
+    /**
+     * 查询订单分析结果
+     */
+    @RequiresPermissions("config:shipmentAnalyzeTemplate:list")
+    @Log(title = "配置-订单分析结果", operating="查看订单分析结果", action = BusinessType.GRANT)
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(ShipmentAnalyzeTemplate shipmentAnalyzeTemplate, String createdBegin, String createdEnd)
+    {
+        LambdaQueryWrapper<ShipmentAnalyzeTemplate> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),ShipmentAnalyzeTemplate::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), ShipmentAnalyzeTemplate::getCreated, createdEnd)
+                .eq(ShipmentAnalyzeTemplate::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(StringUtils.isNotEmpty(shipmentAnalyzeTemplate.getCriteriaCode()
+                ),ShipmentAnalyzeTemplate::getCriteriaCode,shipmentAnalyzeTemplate.getCriteriaCode());
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+            /**
+             * 使用分页查询
+             */
+            Page<ShipmentAnalyzeTemplate> page = new Page<>(pageNum, pageSize);
+            IPage<ShipmentAnalyzeTemplate> iPage = shipmentAnalyzeTemplateService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(),iPage.getTotal());
+        } else {
+            List<ShipmentAnalyzeTemplate> list = shipmentAnalyzeTemplateService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentAnalyzeTemplate/domain/ShipmentAnalyzeTemplate.java b/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/domain/ShipmentAnalyzeTemplate.java
index 9358b53..4414573 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentAnalyzeTemplate/domain/ShipmentAnalyzeTemplate.java
+++ b/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/domain/ShipmentAnalyzeTemplate.java
@@ -1,4 +1,4 @@
-package com.huaheng.pc.shipment.shipmentAnalyzeTemplate.domain;
+package com.huaheng.pc.config.shipmentAnalyzeTemplate.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -6,9 +6,10 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
 import java.io.Serializable;
 import java.util.Date;
-import lombok.Data;
 
 @ApiModel(value="com.huaheng.pc.shipment.shipmentAnalyzeTemplate.domain.ShipmentAnalyzeTemplate")
 @Data
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentAnalyzeTemplate/mapper/ShipmentAnalyzeTemplateMapper.java b/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/mapper/ShipmentAnalyzeTemplateMapper.java
index 514a56a..849ef20 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentAnalyzeTemplate/mapper/ShipmentAnalyzeTemplateMapper.java
+++ b/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/mapper/ShipmentAnalyzeTemplateMapper.java
@@ -1,7 +1,7 @@
-package com.huaheng.pc.shipment.shipmentAnalyzeTemplate.mapper;
+package com.huaheng.pc.config.shipmentAnalyzeTemplate.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaheng.pc.shipment.shipmentAnalyzeTemplate.domain.ShipmentAnalyzeTemplate;
+import com.huaheng.pc.config.shipmentAnalyzeTemplate.domain.ShipmentAnalyzeTemplate;
 
 public interface ShipmentAnalyzeTemplateMapper extends BaseMapper<ShipmentAnalyzeTemplate> {
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentAnalyzeTemplate/service/ShipmentAnalyzeTemplateService.java b/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/service/ShipmentAnalyzeTemplateService.java
index c43e37f..d85d784 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentAnalyzeTemplate/service/ShipmentAnalyzeTemplateService.java
+++ b/src/main/java/com/huaheng/pc/config/shipmentAnalyzeTemplate/service/ShipmentAnalyzeTemplateService.java
@@ -1,11 +1,10 @@
-package com.huaheng.pc.shipment.shipmentAnalyzeTemplate.service;
+package com.huaheng.pc.config.shipmentAnalyzeTemplate.service;
 
-import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import java.util.List;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.huaheng.pc.shipment.shipmentAnalyzeTemplate.domain.ShipmentAnalyzeTemplate;
-import com.huaheng.pc.shipment.shipmentAnalyzeTemplate.mapper.ShipmentAnalyzeTemplateMapper;
+import com.huaheng.pc.config.shipmentAnalyzeTemplate.domain.ShipmentAnalyzeTemplate;
+import com.huaheng.pc.config.shipmentAnalyzeTemplate.mapper.ShipmentAnalyzeTemplateMapper;
+import org.springframework.stereotype.Service;
+
 @Service
 public class ShipmentAnalyzeTemplateService extends ServiceImpl<ShipmentAnalyzeTemplateMapper, ShipmentAnalyzeTemplate> {
 
diff --git a/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java b/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java
new file mode 100644
index 0000000..b5b2a49
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java
@@ -0,0 +1,89 @@
+package com.huaheng.pc.shipment.wave.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.shipment.wave.domain.Wave;
+import com.huaheng.pc.shipment.wave.service.WaveService;
+import io.swagger.annotations.Api;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 波次
+ * @author ricard
+ * @date    19.8.26
+ *
+ */
+
+@Api(tags={"波次"})
+@Controller
+@RequestMapping("/shipment/wave")
+public class WaveController extends BaseController {
+
+    private String prefix = "shipment/wave";
+
+    @Autowired
+    private WaveService waveService;
+
+    @RequiresPermissions("shipment:wave:view")
+    @GetMapping()
+    public String wave() {
+        return prefix + "/wave";
+    }
+
+    /**
+     * 查询订单分析结果
+     */
+    @RequiresPermissions("shipment:wave:list")
+    @Log(title = "出库-波次", operating="查看波次", action = BusinessType.GRANT)
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(Wave wave, String createdBegin, String createdEnd)
+    {
+        LambdaQueryWrapper<Wave> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),Wave::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), Wave::getCreated, createdEnd)
+                .eq(Wave::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(StringUtils.isNotEmpty(wave.getWaveMode()
+                ),Wave::getWaveMode,wave.getWaveMode())
+                .eq(wave.getStatus()!=null,Wave::getStatus,wave.getStatus())
+                .like(StringUtils.isNotEmpty(wave.getWaveName()
+                ),Wave::getWaveName,wave.getWaveName());
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+            /**
+             * 使用分页查询
+             */
+            Page<Wave> page = new Page<>(pageNum, pageSize);
+            IPage<Wave> iPage = waveService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(),iPage.getTotal());
+        } else {
+            List<Wave> list = waveService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/wave/domain/Wave.java b/src/main/java/com/huaheng/pc/shipment/wave/domain/Wave.java
index b9521f2..718b813 100644
--- a/src/main/java/com/huaheng/pc/shipment/wave/domain/Wave.java
+++ b/src/main/java/com/huaheng/pc/shipment/wave/domain/Wave.java
@@ -45,9 +45,9 @@ public class Wave implements Serializable {
     /**
      * 状态
      */
-    @TableField(value = "enable")
+    @TableField(value = "status")
     @ApiModelProperty(value="状态")
-    private Integer enable;
+    private Integer status;
 
     /**
      * 当前波次步骤
@@ -217,33 +217,6 @@ public class Wave implements Serializable {
     @ApiModelProperty(value="自定义字段4")
     private String userDef4;
 
-    /**
-     * 自定义字段5
-     */
-    @TableField(value = "userDef5")
-    @ApiModelProperty(value="自定义字段5")
-    private String userDef5;
-
-    /**
-     * 自定义字段6
-     */
-    @TableField(value = "userDef6")
-    @ApiModelProperty(value="自定义字段6")
-    private String userDef6;
-
-    /**
-     * 自定义字段7
-     */
-    @TableField(value = "userDef7")
-    @ApiModelProperty(value="自定义字段7")
-    private String userDef7;
-
-    /**
-     * 自定义字段8
-     */
-    @TableField(value = "userDef8")
-    @ApiModelProperty(value="自定义字段8")
-    private String userDef8;
 
     /**
      * 处理标记
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/controller/WaveFlowDetailController.java b/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/controller/WaveFlowDetailController.java
new file mode 100644
index 0000000..7785a02
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/controller/WaveFlowDetailController.java
@@ -0,0 +1,84 @@
+package com.huaheng.pc.shipment.waveFlowDetail.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.shipment.waveFlowDetail.domain.WaveFlowDetail;
+import com.huaheng.pc.shipment.waveFlowDetail.service.WaveFlowDetailService;
+import io.swagger.annotations.Api;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 波次流明细
+ * @author ricard
+ * @date    19.8.26
+ *
+ */
+
+@Api(tags={"波次流明细"})
+@Controller
+@RequestMapping("/shipment/waveFlowDetail")
+public class WaveFlowDetailController extends BaseController {
+
+    private String prefix = "shipment/waveFlowDetail";
+
+    @Autowired
+    private WaveFlowDetailService waveFlowDetailService;
+
+    @RequiresPermissions("shipment:waveFlowDetail:view")
+    @GetMapping()
+    public String waveFlowDetail() {
+        return prefix + "/waveFlowDetail";
+    }
+
+    /**
+     * 查询订单分析结果
+     */
+    @RequiresPermissions("shipment:waveFlowDetail:list")
+    @Log(title = "出库-波次流明细", operating="查看波次流明细", action = BusinessType.GRANT)
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(WaveFlowDetail waveFlowDetail, String createdBegin, String createdEnd)
+    {
+        LambdaQueryWrapper<WaveFlowDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),WaveFlowDetail::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), WaveFlowDetail::getCreated, createdEnd)
+                .eq(WaveFlowDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+            /**
+             * 使用分页查询
+             */
+            Page<WaveFlowDetail> page = new Page<>(pageNum, pageSize);
+            IPage<WaveFlowDetail> iPage = waveFlowDetailService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(),iPage.getTotal());
+        } else {
+            List<WaveFlowDetail> list = waveFlowDetailService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/domain/WaveFlowDetail.java b/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/domain/WaveFlowDetail.java
index 8cf10f3..9d16257 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/domain/WaveFlowDetail.java
+++ b/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/domain/WaveFlowDetail.java
@@ -151,33 +151,6 @@ public class WaveFlowDetail implements Serializable {
     @ApiModelProperty(value="自定义字段4")
     private String userDef4;
 
-    /**
-     * 自定义字段5
-     */
-    @TableField(value = "userDef5")
-    @ApiModelProperty(value="自定义字段5")
-    private String userDef5;
-
-    /**
-     * 自定义字段6
-     */
-    @TableField(value = "userDef6")
-    @ApiModelProperty(value="自定义字段6")
-    private String userDef6;
-
-    /**
-     * 自定义字段7
-     */
-    @TableField(value = "userDef7")
-    @ApiModelProperty(value="自定义字段7")
-    private String userDef7;
-
-    /**
-     * 自定义字段8
-     */
-    @TableField(value = "userDef8")
-    @ApiModelProperty(value="自定义字段8")
-    private String userDef8;
 
     /**
      * 处理标记
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/controller/WaveMasterController.java b/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/controller/WaveMasterController.java
new file mode 100644
index 0000000..13969f7
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/controller/WaveMasterController.java
@@ -0,0 +1,86 @@
+package com.huaheng.pc.shipment.waveFlowHeader.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.shipment.waveFlowHeader.domain.WaveFlowHeader;
+import com.huaheng.pc.shipment.waveFlowHeader.service.WaveFlowHeaderService;
+import io.swagger.annotations.Api;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 波次流头表
+ * @author ricard
+ * @date    19.8.26
+ *
+ */
+
+@Api(tags={"波次流头表"})
+@Controller
+@RequestMapping("/shipment/waveFlowHeader")
+public class WaveMasterController extends BaseController {
+
+    private String prefix = "shipment/waveFlowHeader";
+
+    @Autowired
+    private WaveFlowHeaderService waveFlowHeaderService;
+
+    @RequiresPermissions("shipment:waveFlowHeader:view")
+    @GetMapping()
+    public String waveFlowHeader() {
+        return prefix + "/waveFlowHeader";
+    }
+
+    /**
+     * 查询订单分析结果
+     */
+    @RequiresPermissions("shipment:waveFlowHeader:list")
+    @Log(title = "出库-波次流头表", operating="查看波次流头表", action = BusinessType.GRANT)
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(WaveFlowHeader waveFlowHeader, String createdBegin, String createdEnd)
+    {
+        LambdaQueryWrapper<WaveFlowHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),WaveFlowHeader::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), WaveFlowHeader::getCreated, createdEnd)
+                .eq(WaveFlowHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(StringUtils.isNotEmpty(waveFlowHeader.getCode()
+                ),WaveFlowHeader::getCode,waveFlowHeader.getCode());
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+            /**
+             * 使用分页查询
+             */
+            Page<WaveFlowHeader> page = new Page<>(pageNum, pageSize);
+            IPage<WaveFlowHeader> iPage = waveFlowHeaderService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(),iPage.getTotal());
+        } else {
+            List<WaveFlowHeader> list = waveFlowHeaderService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/domain/WaveFlowHeader.java b/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/domain/WaveFlowHeader.java
index 592a71b..5bfc476 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/domain/WaveFlowHeader.java
+++ b/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/domain/WaveFlowHeader.java
@@ -98,33 +98,6 @@ public class WaveFlowHeader implements Serializable {
     @ApiModelProperty(value="自定义字段4")
     private String userDef4;
 
-    /**
-     * 自定义字段5
-     */
-    @TableField(value = "userDef5")
-    @ApiModelProperty(value="自定义字段5")
-    private String userDef5;
-
-    /**
-     * 自定义字段6
-     */
-    @TableField(value = "userDef6")
-    @ApiModelProperty(value="自定义字段6")
-    private String userDef6;
-
-    /**
-     * 自定义字段7
-     */
-    @TableField(value = "userDef7")
-    @ApiModelProperty(value="自定义字段7")
-    private String userDef7;
-
-    /**
-     * 自定义字段8
-     */
-    @TableField(value = "userDef8")
-    @ApiModelProperty(value="自定义字段8")
-    private String userDef8;
 
     /**
      * 处理标记
diff --git a/src/main/java/com/huaheng/pc/shipment/waveMaster/controller/WaveMasterController.java b/src/main/java/com/huaheng/pc/shipment/waveMaster/controller/WaveMasterController.java
new file mode 100644
index 0000000..ca38a65
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/waveMaster/controller/WaveMasterController.java
@@ -0,0 +1,89 @@
+package com.huaheng.pc.shipment.waveMaster.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.shipment.wave.domain.Wave;
+import com.huaheng.pc.shipment.waveMaster.domain.WaveMaster;
+import com.huaheng.pc.shipment.waveMaster.service.WaveMasterService;
+import io.swagger.annotations.Api;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 波次主表
+ * @author ricard
+ * @date    19.8.26
+ *
+ */
+
+@Api(tags={"波次主表"})
+@Controller
+@RequestMapping("/shipment/waveMaster")
+public class WaveMasterController extends BaseController {
+
+    private String prefix = "shipment/waveMaster";
+
+    @Autowired
+    private WaveMasterService waveMasterService;
+
+    @RequiresPermissions("shipment:waveMaster:view")
+    @GetMapping()
+    public String WaveMaster() {
+        return prefix + "/waveMaster";
+    }
+
+    /**
+     * 查询订单分析结果
+     */
+    @RequiresPermissions("shipment:waveMaster:list")
+    @Log(title = "出库-波次主表", operating="查看波次主表", action = BusinessType.GRANT)
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(WaveMaster waveMaster, String createdBegin, String createdEnd)
+    {
+        LambdaQueryWrapper<WaveMaster> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),WaveMaster::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), WaveMaster::getCreated, createdEnd)
+                .eq(WaveMaster::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(StringUtils.isNotEmpty(waveMaster.getCode()
+                ),WaveMaster::getCode,waveMaster.getCode())
+                .like(StringUtils.isNotEmpty(waveMaster.getShipmentFilterCode()
+                ),WaveMaster::getShipmentFilterCode,waveMaster.getShipmentFilterCode());
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
+            /**
+             * 使用分页查询
+             */
+            Page<WaveMaster> page = new Page<>(pageNum, pageSize);
+            IPage<WaveMaster> iPage = waveMasterService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(),iPage.getTotal());
+        } else {
+            List<WaveMaster> list = waveMasterService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/waveMaster/domain/WaveMaster.java b/src/main/java/com/huaheng/pc/shipment/waveMaster/domain/WaveMaster.java
index 3b7e71e..a44fe78 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveMaster/domain/WaveMaster.java
+++ b/src/main/java/com/huaheng/pc/shipment/waveMaster/domain/WaveMaster.java
@@ -224,33 +224,6 @@ public class WaveMaster implements Serializable {
     @ApiModelProperty(value="自定义字段4")
     private String userDef4;
 
-    /**
-     * 自定义字段5
-     */
-    @TableField(value = "userDef5")
-    @ApiModelProperty(value="自定义字段5")
-    private String userDef5;
-
-    /**
-     * 自定义字段6
-     */
-    @TableField(value = "userDef6")
-    @ApiModelProperty(value="自定义字段6")
-    private String userDef6;
-
-    /**
-     * 自定义字段7
-     */
-    @TableField(value = "userDef7")
-    @ApiModelProperty(value="自定义字段7")
-    private String userDef7;
-
-    /**
-     * 自定义字段8
-     */
-    @TableField(value = "userDef8")
-    @ApiModelProperty(value="自定义字段8")
-    private String userDef8;
 
     /**
      * 处理标记
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java b/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
index 9ecd34b..3ea50fc 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.support.Convert;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.aspectj.lang.annotation.Log;
 import com.huaheng.framework.aspectj.lang.constant.BusinessType;
 import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.framework.web.page.PageDomain;
 import com.huaheng.framework.web.page.TableDataInfo;
 import com.huaheng.framework.web.page.TableSupport;
@@ -50,6 +52,7 @@ public class TaskHeaderController extends BaseController {
 
 
 
+
     /**
      * 查询任务列表
      */
@@ -57,15 +60,19 @@ public class TaskHeaderController extends BaseController {
     @Log(title = "任务-上架任务", operating = "查看任务列表", action = BusinessType.GRANT)
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(TaskHeader taskHeader,@ApiParam(name="InternalTaskType",value="类型") String InternalTaskType) {
+    public TableDataInfo list(TaskHeader taskHeader,@ApiParam(name="InternalTaskType",value="类型") Integer InternalTaskType,
+                          @ApiParam(name="createdBegin",value="类型") String createdBegin,@ApiParam(name="createdEnd",value="类型") String createdEnd) {
         LambdaQueryWrapper<TaskHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(TaskHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
                           .in(TaskHeader::getCompanyCode,ShiroUtils.getCompanyCodeList())
-                          .eq(StringUtils.isNotEmpty(InternalTaskType),TaskHeader::getInternalTaskType,InternalTaskType)
-                          .eq(StringUtils.isNotEmpty(taskHeader.getInternalTaskType()),TaskHeader::getInternalTaskType,taskHeader.getInternalTaskType())
+                          .eq(StringUtils.isNotNull(InternalTaskType),TaskHeader::getInternalTaskType,InternalTaskType)
+                          .eq(StringUtils.isNotNull(taskHeader.getInternalTaskType()),TaskHeader::getInternalTaskType,taskHeader.getInternalTaskType())
                           .eq(StringUtils.isNotNull(taskHeader.getId()),TaskHeader::getId,taskHeader.getId())
                           .eq(StringUtils.isNotEmpty(taskHeader.getContainerCode()),TaskHeader::getContainerCode,taskHeader.getContainerCode())
-                          .eq(StringUtils.isNotEmpty(taskHeader.getLocationCode()),TaskHeader::getLocationCode,taskHeader.getLocationCode());
+                          .eq(StringUtils.isNotEmpty(taskHeader.getLocationCode()),TaskHeader::getLocationCode,taskHeader.getLocationCode())
+                          .gt(StringUtils.isNotEmpty(createdBegin),TaskHeader::getCreated,createdBegin)
+                          .lt(StringUtils.isNotEmpty(createdEnd),TaskHeader::getCreated,createdEnd);
+
         PageDomain pageDomain = TableSupport.buildPageRequest();
         Integer pageNum = pageDomain.getPageNum();
         Integer pageSize = pageDomain.getPageSize();
@@ -83,5 +90,34 @@ public class TaskHeaderController extends BaseController {
     }
 
 
+    /**
+     * 下发任务
+     */
+    @RequiresPermissions("task:taskHeader:execute")
+    @Log(title = "任务-任务管理", operating = "下发立库任务", action = BusinessType.UPDATE)
+    @PostMapping( "/execute")
+    @ResponseBody
+    public AjaxResult execute(String taskId)
+    {
+        if (StringUtils.isEmpty(taskId))
+            return AjaxResult.error("taskId不能为空");
+        AjaxResult ajaxResult = taskHeaderService.sendTaskToWcs(Convert.toIntArray(taskId));
+        return ajaxResult;
+    }
+
+    /**
+     * 完成任务
+     */
+    @RequiresPermissions("task:task:complete")
+    @Log(title = "任务-任务管理", operating = "PC完成立库任务", action = BusinessType.UPDATE)
+    @PostMapping( "/completeTaskByWMS")
+    @ResponseBody
+    public AjaxResult completeTaskByWMS(String taskId) throws Exception {
+        if (StringUtils.isEmpty(taskId))
+            return AjaxResult.error("taskId不能为空");
+        return taskHeaderService.completeTaskByWMS(Convert.toIntArray(taskId));
+    }
+
+
 
 }
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java b/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
index 598628e..d9b7301 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
@@ -54,7 +54,7 @@ public class TaskHeader implements Serializable {
      */
     @TableField(value = "internalTaskType")
     @ApiModelProperty(value="内部类型")
-    private String internalTaskType;
+    private Integer internalTaskType;
 
     /**
      * 参考单内部号
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/mapper/TaskHeaderMapper.java b/src/main/java/com/huaheng/pc/task/taskHeader/mapper/TaskHeaderMapper.java
index 72ef249..b0b0510 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/mapper/TaskHeaderMapper.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/mapper/TaskHeaderMapper.java
@@ -2,6 +2,12 @@ package com.huaheng.pc.task.taskHeader.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 public interface TaskHeaderMapper extends BaseMapper<TaskHeader> {
+
+    List<Map<String, Object>> getReceiptTask(@Param("taskId") Integer taskId);
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
index 9dbfd76..ec4bbbe 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
@@ -4,9 +4,22 @@ import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel;
 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
 public interface TaskHeaderService extends IService<TaskHeader>{
 
 
     AjaxResult createTaskFromShipmentContainers(ShipmentTaskCreateModel shipmentTaskCreateModel) ;
 
+    AjaxResult<TaskHeader> sendTaskToWcs(Integer[] taskIds);
+
+    AjaxResult completeTaskByWMS(Integer[] taskIds) throws Exception;
+
+    AjaxResult completeReceiptTask(TaskHeader task) throws Exception;
+
+//    List<Map<String, Object>> getReceiptTask(@Param("taskId") Integer taskId);
+
 }
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
index 610bc88..102e169 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
@@ -1,33 +1,45 @@
 package com.huaheng.pc.task.taskHeader.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huaheng.common.exception.service.ServiceException;
+import com.huaheng.common.utils.DataUtils;
+import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.pc.config.location.domain.Location;
 import com.huaheng.pc.config.location.service.LocationService;
 import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
+import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction;
+import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
 import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerDetail;
 import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService;
 import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
 import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
 import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
+import com.huaheng.pc.task.taskDetail.mapper.TaskDetailMapper;
 import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
 import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel;
+import com.sun.jmx.snmp.tasks.Task;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
 import com.huaheng.pc.task.taskHeader.mapper.TaskHeaderMapper;
 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
+
 @Service
-public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHeader> implements TaskHeaderService{
+public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHeader> implements TaskHeaderService {
 
     @Autowired
     private ShipmentContainerHeaderService shipmentContainerHeaderService;
@@ -39,38 +51,44 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
     private InventoryDetailService inventoryDetailService;
     @Autowired
     private TaskDetailService taskDetailService;
+    @Autowired
+    private TaskHeaderService taskHeaderService;
+
+    @Resource
+    private TaskHeaderMapper taskHeaderMapper;
 
     /**
      * 生成出库任务
+     *
      * @param shipmentTaskCreateModel
      * @return
      */
     @Override
     @Transactional
-    public AjaxResult createTaskFromShipmentContainers(ShipmentTaskCreateModel shipmentTaskCreateModel)  {
+    public AjaxResult createTaskFromShipmentContainers(ShipmentTaskCreateModel shipmentTaskCreateModel) {
         Integer shipmentContainerHeaderId = shipmentTaskCreateModel.getShipmentContainerHeaderIds();
         //获取表头
         ShipmentContainerHeader shipmentContainerHeader = shipmentContainerHeaderService.getById(shipmentContainerHeaderId);
-        if(shipmentContainerHeader == null){
+        if (shipmentContainerHeader == null) {
             return AjaxResult.error("出库货箱" + shipmentContainerHeaderId + "未找到,操作中止");
         }
-        if(shipmentContainerHeader.getStatus() > 9){
+        if (shipmentContainerHeader.getStatus() > 9) {
             return AjaxResult.error("出库货箱" + shipmentContainerHeader.getContainerCode() + "已经生成任务,请不要重复生成,操作中止");
         }
         //获取所有子货箱
-        LambdaQueryWrapper<ShipmentContainerDetail> lambdaQueryWrapper= Wrappers.lambdaQuery();
-        lambdaQueryWrapper.eq(ShipmentContainerDetail::getShippingContainerId,shipmentContainerHeader.getId());
+        LambdaQueryWrapper<ShipmentContainerDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(ShipmentContainerDetail::getShippingContainerId, shipmentContainerHeader.getId());
         List<ShipmentContainerDetail> shipmentContainerDetails = shipmentContainerDetailService.list(lambdaQueryWrapper);
-        if(shipmentContainerDetails==null||shipmentContainerDetails.size()==0){
+        if (shipmentContainerDetails == null || shipmentContainerDetails.size() == 0) {
             return AjaxResult.error("货箱" + shipmentContainerHeader.getContainerCode() + "没有子任务,操作中止");
         }
         //检测库位
-        LambdaQueryWrapper<Location> locationLambdaQueryWrapper=Wrappers.lambdaQuery();
-        locationLambdaQueryWrapper.eq(Location::getCode,shipmentContainerHeader.getLocationCode())
-                .eq(Location::getWarehouseCode,ShiroUtils.getWarehouseCode())
-                .eq(Location::getDeleted,false);
+        LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
+        locationLambdaQueryWrapper.eq(Location::getCode, shipmentContainerHeader.getLocationCode())
+                .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(Location::getDeleted, false);
         Location location = locationService.getOne(locationLambdaQueryWrapper);
-        if (location == null)   {
+        if (location == null) {
             return AjaxResult.error("库位禁用或不存在!");
         }
         //创建任务头
@@ -79,33 +97,33 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         task.setTaskType(400);
         task.setLocationCode(shipmentContainerHeader.getLocationCode());
         //判断是否整出任务,钱柜和AGV不能整出
-        if(shipmentContainerHeader.getStatus().intValue() == 300){
+        if (shipmentContainerHeader.getStatus().intValue() == 300) {
             //表示整出优先
             //判断当前子货箱所有数量是否等于该托盘对应的所有库存的数量,
             //这里必须与库存的在库数量对比,后期可能存在一个配盘在执行任务,后一个配盘又在配这个的情况(这个时候不能整出)
             // 如果相等,则说明这个货箱包含了所有的数量,则可以整出,否则,创建拣选任务;
             //查询所有库存
             InventoryDetail inventoryCondition = new InventoryDetail();
-            LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper=Wrappers.lambdaQuery();
-            inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getLocationCode,shipmentContainerHeader.getLocationCode())
-                    .eq(InventoryDetail::getWarehouseCode,ShiroUtils.getWarehouseCode());
+            LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+            inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getLocationCode, shipmentContainerHeader.getLocationCode())
+                    .eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
             List<InventoryDetail> inventories = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper);
-            BigDecimal inventoryTotal=new BigDecimal("0");
-            for(InventoryDetail item : inventories){
+            BigDecimal inventoryTotal = new BigDecimal("0");
+            for (InventoryDetail item : inventories) {
                 inventoryTotal = inventoryTotal.add(item.getQty());
             }
             BigDecimal containerTotal = new BigDecimal("0");
-            for(ShipmentContainerDetail item: shipmentContainerDetails){
+            for (ShipmentContainerDetail item : shipmentContainerDetails) {
                 containerTotal = containerTotal.add(item.getQty());
             }
-            if(inventoryTotal.compareTo(containerTotal) == 0){
+            if (inventoryTotal.compareTo(containerTotal) == 0) {
                 task.setTaskType(300);//整盘出库
                 task.setLocationCode("");
             }
         }
         task.setWarehouseCode(shipmentContainerHeader.getWarehouseCode());
         task.setCompanyCode(shipmentContainerHeader.getCompanyCode());
-        task.setInternalTaskType("");
+        task.setInternalTaskType(null);
         task.setAssignedUser(ShiroUtils.getLoginName());
         task.setConfirmedBy(ShiroUtils.getLoginName());
         task.setStatus(1);
@@ -116,7 +134,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         task.setLastUpdated(null);
         this.save(task);
         //遍历子货箱创建子任务
-        for(ShipmentContainerDetail shipmentContainerDetail : shipmentContainerDetails){
+        for (ShipmentContainerDetail shipmentContainerDetail : shipmentContainerDetails) {
             TaskDetail taskDetail = new TaskDetail();
             taskDetail.setTaskId(task.getId());
             taskDetail.setWarehouseCode(task.getWarehouseCode());
@@ -149,4 +167,246 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         return AjaxResult.success(task.getId());
 
     }
+
+    @Override
+    public AjaxResult<TaskHeader> sendTaskToWcs(Integer[] taskIds) {
+        TaskHeader task = null;
+        for (Integer taskId : taskIds) {
+            task = taskHeaderService.getById(taskId);
+            if (task.getStatus() > 9) {
+                return AjaxResult.error("任务" + taskId + "已经下发,请不要重复下发,操作中止");
+            }
+            //修改任务头表
+            task.setStatus(10);
+            task.setStartPickDateTime(new Date());   //生成时间
+            task.setLastUpdated(new Date());
+            task.setLastUpdatedBy(ShiroUtils.getLoginName());
+            LambdaUpdateWrapper<TaskHeader> HeaderUpdateWrapper = Wrappers.lambdaUpdate();
+            HeaderUpdateWrapper.eq(TaskHeader::getId, taskId);
+            taskHeaderService.update(task, HeaderUpdateWrapper);
+            //修改任务明细状态
+            TaskDetail record = new TaskDetail();
+            record.setStatus(10);
+            record.setLastUpdated(new Date());
+            record.setLastUpdatedBy(ShiroUtils.getLoginName());
+            LambdaUpdateWrapper<TaskDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
+            lambdaUpdateWrapper.eq(TaskDetail::getTaskId, task.getId());
+            taskDetailService.update(record, lambdaUpdateWrapper);
+
+
+//            if (task.getInternalTaskType().equals("100"))
+//            {
+//                List<Map<String, Object>> maps = taskDetailService.selectListMapByEqual("billId, billDetailId", condition);
+//                for (Map<String, Object> item : maps){
+//                    Integer billDetailId = DataUtils.getInteger(item.get("billDetailId"));
+//                    receiptHeaderService.updateDetailStatus(billDetailId, (short)300);
+//                }
+//                maps.stream().map(X -> X.get("billId")).distinct().forEach(X -> receiptHeaderService.receiptStatusUpdate(DataUtils.getInteger(X), (short)300));
+//            }
+//            //盘点单执行
+//            if(task.getType() == 700){
+//                CyclecountDetail cyclecountDetai = cyclecountDetailService.selectEntityById(
+//                        task.getAllocationHeadId());
+//                cyclecountDetai.setStatus(10);
+//                cyclecountDetailService.updateByModel(cyclecountDetai);
+//            }
+////            //如果是单排人工库,那么出入库都是先完成,在下发AGV任务
+////            if (task.getType().intValue() == 300 || task.getType().intValue() == 600)   {
+////                if (task.getSourceLocation().startsWith("L03") == false )   {
+////                    taskAgvService.createTaskAgv(task);
+////                }
+////            }
+////            else    {
+////                taskAgvService.createTaskAgv(task);
+////            }
+//            //任务类型是出库,那就完成任务在叫agv
+//            if (task.getType().intValue() == 100 || task.getType().intValue() == 500)   {
+//                taskAgvService.createTaskAgv(task);
+//            }
+        }
+        return AjaxResult.success("下发任务成功", task);
+    }
+
+    @Override
+    public AjaxResult completeTaskByWMS(Integer[] taskIds) throws Exception {
+        for (int taskId : taskIds) {
+            TaskHeader task = taskHeaderService.getById(taskId);
+            if (task == null) {
+                throw new ServiceException("任务" + taskId + "未找到,执行中止");
+            }
+            //如果已完成则不管
+            if (task.getStatus() == 100) {
+                throw new ServiceException("任务(" + taskId + ")任务已经是完成的!");
+            }
+            //如果没有库位不能完成
+            if (StringUtils.isEmpty(task.getPickingCartPos())) {
+                throw new ServiceException("任务" + taskId + "没有库位,执行中止");
+            }
+            this.completeTask(task);
+        }
+
+        return AjaxResult.success("完成任务成功!");
+    }
+
+    /**
+     * 完成任务
+     *
+     * @param task
+     * @throws Exception
+     */
+    public void completeTask(TaskHeader task) throws Exception {
+        //区分任务类型
+        if (task.getInternalTaskType() == 100 || task.getInternalTaskType() == 200) {
+            //入库任务
+            completeReceiptTask(task);
+        }
+        if (task.getInternalTaskType() == 300 || task.getInternalTaskType() == 400) {
+//            //出库任务
+//            completeShipmentTask(task);
+        }
+        //...其他任务类型暂时不处理    // 700 盘点   800 移库  900 出库查看
+        if (task.getInternalTaskType() == 700 || task.getInternalTaskType() == 900) {
+//            completeCycleCountOrSeeOutTask(task);
+        }
+        if (task.getInternalTaskType() == 800) {
+//            //移库
+//            completeTransferTask(task);
+        }
+        if (task.getInternalTaskType() == 500) {
+//            //空托盘入库
+//            completeEmptyIn(task);
+        }
+        if (task.getInternalTaskType() == 600) {
+//            //空托盘出库
+//            completeEmptyOut(task);
+        }
+    }
+
+    @Override
+    public AjaxResult completeReceiptTask(TaskHeader task) throws Exception {
+//        String LocationCode = task.getIsDoubleIn().intValue() == 0 ? task.getDestinationLocation() : task.getSecondDestinationLocation();
+        List<Map<String, Object>> taskReceiptContainerDetail =taskHeaderMapper.getReceiptTask(task.getId());
+        for (Map<String, Object> map : taskReceiptContainerDetail) {
+            //将未完成的任务数量更新到库存表
+            if (DataUtils.getInteger(map.get("status")) < 100) {
+//                //更新库存表
+//                BigDecimal inventoryQty = new BigDecimal("0");
+//                Inventory condition = new Inventory();
+//                condition.setWarehouseId(ShiroUtils.getWarehouseId());
+//                condition.setLocationCode(LocationCode);
+//                condition.setReceiptDetailId(DataUtils.getInteger(map.get("billDetailId")));
+//                condition.setContainerCode(DataUtils.getString(map.get("containerCode")));
+//                Inventory  inventory = inventoryService.selectFirstEntity(condition);
+//                if (inventory == null)
+//                {
+//                    inventory = new Inventory();
+//                    inventory.setWarehouseId(DataUtils.getInteger(map.get("warehouseId")));
+//                    inventory.setWarehouseCode(DataUtils.getString(map.get("warehouseCode")));
+//                    inventory.setLocationCode(LocationCode);
+//                    inventory.setContainerCode(DataUtils.getString(map.get("containerCode")));
+//                    inventory.setSourceCode(DataUtils.getString(map.get("sourceCode")));
+//                    inventory.setSourceLine(DataUtils.getString(map.get("sourceLine")));
+//                    inventory.setCompanyId(task.getCompanyId());
+//                    inventory.setCompanyCode(task.getCompanyCode());
+//                    inventory.setMaterialCode(DataUtils.getString(map.get("materialCode")));
+//                    inventory.setMaterialName(DataUtils.getString(map.get("materialName")));
+//                    inventory.setReceiptCode(DataUtils.getString(map.get("billCode")));
+//                    inventory.setReceiptId(DataUtils.getInteger(map.get("billId")));
+//                    inventory.setReceiptDetailId(DataUtils.getInteger(map.get("billDetailId")));
+//                    inventory.setBatch(DataUtils.getString(map.get("batch")));
+//                    inventory.setLot(DataUtils.getString(map.get("lot")));
+//                    inventory.setProject(DataUtils.getString(map.get("project")));
+//                    inventory.setManufactureDate(DataUtils.getDateTime(map.get("manufactureDate")));
+//                    inventory.setExpirationDate(DataUtils.getDateTime(map.get("expirationDate")));
+//                    inventory.setStatus(DataUtils.getString((map.get("inventoryStatus"))));
+//                    inventory.setQty(DataUtils.getBigDecimal(map.get("qty")));
+//                    inventory.setCostPrice(DataUtils.getBigDecimal(map.get("price")));
+//                    inventory.setCreatedBy(ShiroUtils.getLoginName());
+//                    inventory.setLastUpdatedBy(ShiroUtils.getLoginName());
+//                    inventoryService.insert(inventory);
+//                }
+//                else
+//                {
+//                    inventoryQty = inventory.getQty();
+//                    inventory.setQty(inventory.getQty().add(DataUtils.getBigDecimal(map.get("qty"))));
+//                    inventory.setLastUpdatedBy(ShiroUtils.getLoginName());
+//                    inventoryService.updateByModel(inventory);
+//                }
+//                //记录库存交易记录
+//                InventoryTransaction inventoryTransaction = new InventoryTransaction();
+//                inventoryTransaction.setType("receipt");
+//                inventoryTransaction.setWarehouseId(DataUtils.getInteger(map.get("warehouseId")));
+//                inventoryTransaction.setWarehouseCode(DataUtils.getString(map.get("warehouseCode")));
+//                inventoryTransaction.setCompanyId(task.getCompanyId());
+//                inventoryTransaction.setCompanyCode(task.getCompanyCode());
+//                inventoryTransaction.setLocationCode(LocationCode);
+//                inventoryTransaction.setContainerCode(DataUtils.getString(map.get("containerCode")));
+//                inventoryTransaction.setSourceCode(DataUtils.getString(map.get("sourceCode")));
+//                inventoryTransaction.setSourceLine(DataUtils.getString(map.get("sourceLine")));
+//                inventoryTransaction.setMaterialCode(DataUtils.getString(map.get("materialCode")));
+//                inventoryTransaction.setMaterialName(DataUtils.getString(map.get("materialName")));
+//                inventoryTransaction.setBillCode(DataUtils.getString(map.get("billCode")));
+//                inventoryTransaction.setBillId(DataUtils.getInteger(map.get("billId")));
+//                inventoryTransaction.setBillDetailId(DataUtils.getInteger(map.get("billDetailId")));
+//                inventoryTransaction.setBatch(DataUtils.getString(map.get("batch")));
+//                inventoryTransaction.setLot(DataUtils.getString(map.get("lot")));
+//                inventoryTransaction.setProject(DataUtils.getString(map.get("project")));
+//                inventoryTransaction.setManufactureDate(DataUtils.getDateTime(map.get("manufactureDate")));
+//                inventoryTransaction.setExpirationDate(DataUtils.getDateTime(map.get("expirationDate")));
+//                inventoryTransaction.setStatus(DataUtils.getString((map.get("inventoryStatus"))));
+//                inventoryTransaction.setQty(inventoryQty);
+//                inventoryTransaction.setTaskQty(DataUtils.getBigDecimal(map.get("qty")));
+//                inventoryTransaction.setCostPrice(DataUtils.getBigDecimal(map.get("price")));
+//                //inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());
+//                inventoryTransaction.setCreated(null);
+//                inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());
+//                inventoryTransaction.setLastUpdated(null);
+//                inventoryTransaction.setLastUpdatedBy(ShiroUtils.getLoginName());
+//                inventoryTransactionService.insert(inventoryTransaction);
+//                //修改任务明细的状态为完成
+//                TaskDetail taskDetail = new TaskDetail();
+//                taskDetail.setId(DataUtils.getInteger(map.get("taskDetailId")));
+//                taskDetail.setStatus((short)100);
+//                taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+//                taskDetail.setEndTime(new Date());   //完成时间
+//                taskDetailService.updateByModel(taskDetail);
+//                //修改入库单明细的状态
+//                receiptHeaderService.updateDetailStatus(DataUtils.getInteger(map.get("billDetailId")), (short)800);
+//            }
+//        }
+//        //更新收货单主表的首状态
+//        taskReceiptContainerDetail.stream().
+//                filter(X -> DataUtils.getInteger(X.get("status")) < 100).
+//                map(X -> X.get("billId")).
+//                distinct().
+//                forEach(X -> receiptHeaderService.receiptStatusUpdate(DataUtils.getInteger(X), (short)800));
+//        //修改任务主表状态,因为立库任务表单头只对应一个货箱,表单详情的任务会同时完成
+//        task.setFirstStatus((short)100);
+//        task.setLastStatus((short)100);
+//        task.setLastUpdatedBy(ShiroUtils.getLoginName());
+//        task.setEndTime(new Date());
+//        this.updateByModel(task);
+//        //修改库位状态和对应的容器
+//        locationService.updateContainerCodeAndStatus(LocationCode, task.getContainerCode(),"empty");
+//        if (task.getIsDoubleIn().intValue() != 0)        {
+//            locationService.updateStatus(task.getDestinationLocation(), "empty");
+//        }
+//        //修改容器状态和对应的库位
+//        containerService.updateLocationCodeAndStatus(task.getContainerCode(), LocationCode, "some");
+//        //修改组盘表状态为20
+//        ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader();
+//        receiptContainerHeader.setId(task.getAllocationHeadId());
+//        receiptContainerHeader.setStatus((short)20);
+//        receiptContainerHeaderService.updateByModel(receiptContainerHeader);
+           }
+        }
+                return AjaxResult.success("完成入库任务");
+    }
+
+//    @Override
+//    public List<Map<String, Object>> getReceiptTask(Integer taskId) {
+//        return taskHeaderMapper.getReceiptTask(taskId) ;
+//    }
+
+
 }
diff --git a/src/main/resources/mybatis/shipment/FilterConfigDetailMapper.xml b/src/main/resources/mybatis/config/FilterConfigDetailMapper.xml
index 44445f1..0e0c5be 100644
--- a/src/main/resources/mybatis/shipment/FilterConfigDetailMapper.xml
+++ b/src/main/resources/mybatis/config/FilterConfigDetailMapper.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.huaheng.pc.shipment.FilterConfigDetail.mapper.FilterConfigDetailMapper">
-  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.FilterConfigDetail.domain.FilterConfigDetail">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail">
     <!--@mbg.generated-->
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="headerId" jdbcType="INTEGER" property="headerId" />
diff --git a/src/main/resources/mybatis/shipment/FilterConfigHeaderMapper.xml b/src/main/resources/mybatis/config/FilterConfigHeaderMapper.xml
index 50a666b..b33fe57 100644
--- a/src/main/resources/mybatis/shipment/FilterConfigHeaderMapper.xml
+++ b/src/main/resources/mybatis/config/FilterConfigHeaderMapper.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.huaheng.pc.shipment.FilterConfigHeader.mapper.FilterConfigHeaderMapper">
-  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.FilterConfigHeader.domain.FilterConfigHeader">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.FilterConfigHeader.domain.FilterConfigHeader">
     <!--@mbg.generated-->
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="moduleType" jdbcType="VARCHAR" property="moduleType" />
diff --git a/src/main/resources/mybatis/shipment/ShipmentAnalyzeTemplateMapper.xml b/src/main/resources/mybatis/config/ShipmentAnalyzeTemplateMapper.xml
index 5d3ed9e..48db35f 100644
--- a/src/main/resources/mybatis/shipment/ShipmentAnalyzeTemplateMapper.xml
+++ b/src/main/resources/mybatis/config/ShipmentAnalyzeTemplateMapper.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.huaheng.pc.shipment.shipmentAnalyzeTemplate.mapper.ShipmentAnalyzeTemplateMapper">
-  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.shipmentAnalyzeTemplate.domain.ShipmentAnalyzeTemplate">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.shipmentAnalyzeTemplate.domain.ShipmentAnalyzeTemplate">
     <!--@mbg.generated-->
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="code" jdbcType="VARCHAR" property="code" />
diff --git a/src/main/resources/mybatis/task/TaskHeaderMapper.xml b/src/main/resources/mybatis/task/TaskHeaderMapper.xml
index 9c9819b..9c2b157 100644
--- a/src/main/resources/mybatis/task/TaskHeaderMapper.xml
+++ b/src/main/resources/mybatis/task/TaskHeaderMapper.xml
@@ -47,6 +47,12 @@
     <result column="userDef8" jdbcType="VARCHAR" property="userDef8" />
     <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
   </resultMap>
+<select id="getReceiptTask" resultType="java.util.Map">
+  SELECT *
+  FROM task_detail td
+  INNER JOIN receipt_detail rd ON rd.id = td.billDetailId AND td.taskId = #{taskId,jdbcType=INTEGER}
+</select>
+
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
     id, code, warehouseCode, companyCode, taskType, internalTaskType, referenceId, referenceCode, 
diff --git a/src/main/resources/templates/task/taskHeader/taskHeader.html b/src/main/resources/templates/task/taskHeader/taskHeader.html
index c0cd28d..f10e0c7 100644
--- a/src/main/resources/templates/task/taskHeader/taskHeader.html
+++ b/src/main/resources/templates/task/taskHeader/taskHeader.html
@@ -36,12 +36,12 @@
 									</li>
 									<li class="time" style="height: 30px">
 										<label>创建时间: </label>
-										<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/>
+										<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>
 										<span>-</span>
-										<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/>
+										<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>
 									</li>
 									<li>
-										任务类型:<input type="hidden" name="internalTaskType"  th:value="${InternalTaskType}"/>
+										<input type="hidden" name="internalTaskType"  th:value="${InternalTaskType}"/>
 									</li>
 
 									<!--<li>-->
@@ -123,10 +123,10 @@
     </div>
     <div th:include="include :: footer"></div>
     <script th:inline="javascript">
-        var editFlag = [[${@permission.hasPermi('task:task:edit')}]];
-        var removeFlag = [[${@permission.hasPermi('task:task:remove')}]];
-        var executeFlag = [[${@permission.hasPermi('task:task:execute')}]];
-        var completeFlag = [[${@permission.hasPermi('task:task:complete')}]];
+        var editFlag = [[${@permission.hasPermi('task:taskHeader:edit')}]];
+        var removeFlag = [[${@permission.hasPermi('task:taskHeader:remove')}]];
+        var executeFlag = [[${@permission.hasPermi('task:taskHeader:execute')}]];
+        var completeFlag = [[${@permission.hasPermi('task:taskHeader:complete')}]];
         var agvFlag = [[${@permission.hasPermi('task:task:agvFlag')}]];
         var prefix = ctx + "task/taskHeader";
         var prefix1 = ctx + "task/taskDetail"
@@ -228,20 +228,15 @@
 		            align: 'center',
 		            formatter: function(value, row, index) {
 		            	var actions = [];
-		            	 // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                         actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\')"><i class="fa fa-list-ul"></i>明细</a> ');
-                        if (row.lastStatus < 10)  {
-                            if(row.zoneCode != "AGV"){
-                                actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> ');
-                            }
+                        if (row.status < 10)  {
+                            actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> ');
                             actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> ');
-                            if(row.zoneCode != "AGV"){
                             actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
-                            }
-                        }
-                        if(row.lastStatus < 10 && row.zoneCode == "AGV"){
-                            actions.push('<a style="background-color: #f59e00;border: #f59e00"  class="btn btn-primary btn-xs ' + agvFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>AGV完成</a>');
                         }
+						if (row.status >=10)  {
+							actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
+						}
                         return actions.join('');
 		            }
 		        }
@@ -287,11 +282,6 @@
                     title : '单据编码',
                 },
                 {
-                    field : 'allocationId',
-                    title : '容器物料表ID' ,
-                    sortable: true
-                },
-                {
                     field : 'materialCode',
                     title : '存货编码',
                     sortable: true
@@ -311,12 +301,12 @@
                     sortable:true
                 },
                 {
-                    field : 'sourceLocation',
+                    field : 'fromLocation',
                     title : '源库位',
                     sortable:true
                 },
                 {
-                    field : 'destinationLocation',
+                    field : 'toLocation',
                     title : '目的库位',
                     sortable:true
                 },
@@ -333,8 +323,8 @@
                     }
                 },
                 {
-                    field : 'endTime',
-                    title : '子任务完成时间' ,
+                    field : 'created',
+                    title : '创建时间' ,
                     visible:false,
                     sortable:true
                 },
@@ -421,7 +411,7 @@
         /*任务列表-下发执行*/
         function execute(taskId) {
             $.modal.confirm("确定执行任务?", function() {
-				var url = ctx + 'task/task/execute';
+				var url = ctx + 'task/taskHeader/execute';
 				var data = { "taskId" : taskId };
 				$.operate.post(url, data);
             });