diff --git a/.idea/WMSV1.iml b/.idea/WMSV1.iml
new file mode 100644
index 0000000..88aff5d
--- /dev/null
+++ b/.idea/WMSV1.iml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+    <facet type="web" name="Web">
+      <configuration>
+        <webroots />
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src/main/java" />
+          <root url="file://$MODULE_DIR$/src/main/resources" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+  </component>
+</module>
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/config/shipmentPreference/controller/ShipmentPreferenceController.java b/src/main/java/com/huaheng/pc/config/shipmentPreference/controller/ShipmentPreferenceController.java
index 33b10b5..b9c8e25 100644
--- a/src/main/java/com/huaheng/pc/config/shipmentPreference/controller/ShipmentPreferenceController.java
+++ b/src/main/java/com/huaheng/pc/config/shipmentPreference/controller/ShipmentPreferenceController.java
@@ -114,7 +114,7 @@ public class ShipmentPreferenceController extends BaseController {
      */
     @ApiOperation(value="修改出库首选项", notes="修改出库首选项", httpMethod = "POST")
     @RequiresPermissions("config:shipmentPreference:edit")
-    @Log(title = "通用-出库首选项", operating = "修改出库首选项", action = BusinessType.UPDATE)
+    @Log(title = "配置-出库首选项", operating = "修改出库首选项", action = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
     public AjaxResult editSave(
@@ -128,7 +128,7 @@ public class ShipmentPreferenceController extends BaseController {
      */
     @ApiOperation(value="删除出库首选项", notes="根据id批量删除入库首选项,参数示例1,2,3", httpMethod = "POST")
     @RequiresPermissions("config:shipmentPreference:remove")
-    @Log(title = "通用-出库首选项", operating = "删除出库首选项", action = BusinessType.DELETE)
+    @Log(title = "配置-出库首选项", operating = "删除出库首选项", action = BusinessType.DELETE)
     @PostMapping( "/remove")
     @ResponseBody
     public AjaxResult remove(String ids) {
diff --git a/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java b/src/main/java/com/huaheng/pc/config/wave/controller/WaveController.java
index b5b2a49..c554e69 100644
--- a/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java
+++ b/src/main/java/com/huaheng/pc/config/wave/controller/WaveController.java
@@ -1,29 +1,32 @@
-package com.huaheng.pc.shipment.wave.controller;
+package com.huaheng.pc.config.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.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;
-import com.huaheng.pc.shipment.wave.domain.Wave;
-import com.huaheng.pc.shipment.wave.service.WaveService;
+import com.huaheng.pc.config.wave.domain.Wave;
+import com.huaheng.pc.config.wave.service.WaveService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 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 org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -50,7 +53,7 @@ public class WaveController extends BaseController {
     }
 
     /**
-     * 查询订单分析结果
+     * 查询波次
      */
     @RequiresPermissions("shipment:wave:list")
     @Log(title = "出库-波次", operating="查看波次", action = BusinessType.GRANT)
@@ -63,14 +66,14 @@ public class WaveController extends BaseController {
         Integer pageNum = pageDomain.getPageNum();
         Integer pageSize = pageDomain.getPageSize();
 
-        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),Wave::getCreated, createdBegin)
+        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())
+                ), Wave::getWaveMode,wave.getWaveMode())
+                .eq(wave.getStatus()!=null, Wave::getStatus,wave.getStatus())
                 .like(StringUtils.isNotEmpty(wave.getWaveName()
-                ),Wave::getWaveName,wave.getWaveName());
+                ), Wave::getWaveName,wave.getWaveName());
 
         if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
             /**
@@ -85,5 +88,66 @@ public class WaveController extends BaseController {
         }
     }
 
+    /**
+     * 新增波次
+     */
+    @GetMapping("/add")
+    public String add() {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增波次
+     */
+    @RequiresPermissions("config:wave:add")
+    @Log(title = "配置-波次", operating = "新增波次", action = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(Wave wave){
+        wave.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        wave.setCreatedBy(ShiroUtils.getLoginName());
+        wave.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(waveService.save(wave));
+    }
+
+    /**
+     * 修改波次
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
+        mmap.put("wave", waveService.getById(id));
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改波次
+     */
+    @RequiresPermissions("config:wave:edit")
+    @Log(title = "通用-波次", operating = "修改波次", action = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(Wave wave) {
+        wave.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(waveService.updateById(wave));
+    }
+
+    /**
+     * 删除波次
+     */
+    @RequiresPermissions("config:wave:remove")
+    @Log(title = "配置-波次", operating = "删除波次", action = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids) {
+        if (StringUtils.isEmpty(ids)){
+            return AjaxResult.error("id不能为空");
+        }
+        List<Integer> list = new ArrayList<>();
+        for (Integer id : Convert.toIntArray(ids)) {
+            list.add(id);
+        }
+        return toAjax(waveService.removeByIds(list));
+    }
+
 
 }
diff --git a/src/main/java/com/huaheng/pc/shipment/wave/domain/Wave.java b/src/main/java/com/huaheng/pc/config/wave/domain/Wave.java
index 718b813..6f8dea0 100644
--- a/src/main/java/com/huaheng/pc/shipment/wave/domain/Wave.java
+++ b/src/main/java/com/huaheng/pc/config/wave/domain/Wave.java
@@ -1,4 +1,4 @@
-package com.huaheng.pc.shipment.wave.domain;
+package com.huaheng.pc.config.wave.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.wave.domain.Wave")
 @Data
diff --git a/src/main/java/com/huaheng/pc/shipment/wave/mapper/WaveMapper.java b/src/main/java/com/huaheng/pc/config/wave/mapper/WaveMapper.java
index 72d3ffa..679ba35 100644
--- a/src/main/java/com/huaheng/pc/shipment/wave/mapper/WaveMapper.java
+++ b/src/main/java/com/huaheng/pc/config/wave/mapper/WaveMapper.java
@@ -1,7 +1,7 @@
-package com.huaheng.pc.shipment.wave.mapper;
+package com.huaheng.pc.config.wave.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaheng.pc.shipment.wave.domain.Wave;
+import com.huaheng.pc.config.wave.domain.Wave;
 
 public interface WaveMapper extends BaseMapper<Wave> {
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java b/src/main/java/com/huaheng/pc/config/wave/service/WaveService.java
index 989b74e..904d9cd 100644
--- a/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java
+++ b/src/main/java/com/huaheng/pc/config/wave/service/WaveService.java
@@ -1,11 +1,10 @@
-package com.huaheng.pc.shipment.wave.service;
+package com.huaheng.pc.config.wave.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.wave.mapper.WaveMapper;
-import com.huaheng.pc.shipment.wave.domain.Wave;
+import com.huaheng.pc.config.wave.domain.Wave;
+import com.huaheng.pc.config.wave.mapper.WaveMapper;
+import org.springframework.stereotype.Service;
+
 @Service
 public class WaveService extends ServiceImpl<WaveMapper, Wave> {
 
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/controller/WaveFlowDetailController.java b/src/main/java/com/huaheng/pc/config/waveFlowDetail/controller/WaveFlowDetailController.java
index 7785a02..3f4a79d 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/controller/WaveFlowDetailController.java
+++ b/src/main/java/com/huaheng/pc/config/waveFlowDetail/controller/WaveFlowDetailController.java
@@ -1,29 +1,30 @@
-package com.huaheng.pc.shipment.waveFlowDetail.controller;
+package com.huaheng.pc.config.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.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;
-import com.huaheng.pc.shipment.waveFlowDetail.domain.WaveFlowDetail;
-import com.huaheng.pc.shipment.waveFlowDetail.service.WaveFlowDetailService;
+import com.huaheng.pc.config.waveFlowDetail.domain.WaveFlowDetail;
+import com.huaheng.pc.config.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 org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -50,7 +51,7 @@ public class WaveFlowDetailController extends BaseController {
     }
 
     /**
-     * 查询订单分析结果
+     * 查询波次流明细
      */
     @RequiresPermissions("shipment:waveFlowDetail:list")
     @Log(title = "出库-波次流明细", operating="查看波次流明细", action = BusinessType.GRANT)
@@ -63,7 +64,7 @@ public class WaveFlowDetailController extends BaseController {
         Integer pageNum = pageDomain.getPageNum();
         Integer pageSize = pageDomain.getPageSize();
 
-        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),WaveFlowDetail::getCreated, createdBegin)
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), WaveFlowDetail::getCreated, createdBegin)
                 .le(StringUtils.isNotEmpty(createdEnd), WaveFlowDetail::getCreated, createdEnd)
                 .eq(WaveFlowDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
 
@@ -80,5 +81,65 @@ public class WaveFlowDetailController extends BaseController {
         }
     }
 
+    /**
+     * 新增波次流明细
+     */
+    @GetMapping("/add")
+    public String add() {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增波次流明细
+     */
+    @RequiresPermissions("config:wave:add")
+    @Log(title = "配置-波次流明细", operating = "新增波次流明细", action = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(WaveFlowDetail waveFlowDetail){
+        waveFlowDetail.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        waveFlowDetail.setCreatedBy(ShiroUtils.getLoginName());
+        waveFlowDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(waveFlowDetailService.save(waveFlowDetail));
+    }
+
+    /**
+     * 修改波次流明细
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
+        mmap.put("wave", waveFlowDetailService.getById(id));
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改波次流明细
+     */
+    @RequiresPermissions("config:wave:edit")
+    @Log(title = "通用-波次流明细", operating = "修改波次流明细", action = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(WaveFlowDetail waveFlowDetail) {
+        waveFlowDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(waveFlowDetailService.updateById(waveFlowDetail));
+    }
+
+    /**
+     * 删除波次流明细
+     */
+    @RequiresPermissions("config:wave:remove")
+    @Log(title = "配置-波次流明细", operating = "删除波次流明细", action = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids) {
+        if (StringUtils.isEmpty(ids)){
+            return AjaxResult.error("id不能为空");
+        }
+        List<Integer> list = new ArrayList<>();
+        for (Integer id : Convert.toIntArray(ids)) {
+            list.add(id);
+        }
+        return toAjax(waveFlowDetailService.removeByIds(list));
+    }
 
 }
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/domain/WaveFlowDetail.java b/src/main/java/com/huaheng/pc/config/waveFlowDetail/domain/WaveFlowDetail.java
index 9d16257..f04a929 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/domain/WaveFlowDetail.java
+++ b/src/main/java/com/huaheng/pc/config/waveFlowDetail/domain/WaveFlowDetail.java
@@ -1,4 +1,4 @@
-package com.huaheng.pc.shipment.waveFlowDetail.domain;
+package com.huaheng.pc.config.waveFlowDetail.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.waveFlowDetail.domain.WaveFlowDetail")
 @Data
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/mapper/WaveFlowDetailMapper.java b/src/main/java/com/huaheng/pc/config/waveFlowDetail/mapper/WaveFlowDetailMapper.java
index bba1ac4..9a28317 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/mapper/WaveFlowDetailMapper.java
+++ b/src/main/java/com/huaheng/pc/config/waveFlowDetail/mapper/WaveFlowDetailMapper.java
@@ -1,7 +1,7 @@
-package com.huaheng.pc.shipment.waveFlowDetail.mapper;
+package com.huaheng.pc.config.waveFlowDetail.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaheng.pc.shipment.waveFlowDetail.domain.WaveFlowDetail;
+import com.huaheng.pc.config.waveFlowDetail.domain.WaveFlowDetail;
 
 public interface WaveFlowDetailMapper extends BaseMapper<WaveFlowDetail> {
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/service/WaveFlowDetailService.java b/src/main/java/com/huaheng/pc/config/waveFlowDetail/service/WaveFlowDetailService.java
index 2bed049..c71c2c0 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowDetail/service/WaveFlowDetailService.java
+++ b/src/main/java/com/huaheng/pc/config/waveFlowDetail/service/WaveFlowDetailService.java
@@ -1,11 +1,10 @@
-package com.huaheng.pc.shipment.waveFlowDetail.service;
+package com.huaheng.pc.config.waveFlowDetail.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.waveFlowDetail.domain.WaveFlowDetail;
-import com.huaheng.pc.shipment.waveFlowDetail.mapper.WaveFlowDetailMapper;
+import com.huaheng.pc.config.waveFlowDetail.domain.WaveFlowDetail;
+import com.huaheng.pc.config.waveFlowDetail.mapper.WaveFlowDetailMapper;
+import org.springframework.stereotype.Service;
+
 @Service
 public class WaveFlowDetailService extends ServiceImpl<WaveFlowDetailMapper, WaveFlowDetail> {
 
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/controller/WaveFlowHeaderController.java b/src/main/java/com/huaheng/pc/config/waveFlowHeader/controller/WaveFlowHeaderController.java
index 8384d9f..9f64d8d 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/controller/WaveFlowHeaderController.java
+++ b/src/main/java/com/huaheng/pc/config/waveFlowHeader/controller/WaveFlowHeaderController.java
@@ -1,29 +1,30 @@
-package com.huaheng.pc.shipment.waveFlowHeader.controller;
+package com.huaheng.pc.config.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.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;
-import com.huaheng.pc.shipment.waveFlowHeader.domain.WaveFlowHeader;
-import com.huaheng.pc.shipment.waveFlowHeader.service.WaveFlowHeaderService;
+import com.huaheng.pc.config.waveFlowHeader.domain.WaveFlowHeader;
+import com.huaheng.pc.config.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 org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -50,7 +51,7 @@ public class WaveFlowHeaderController extends BaseController {
     }
 
     /**
-     * 查询订单分析结果
+     * 查询波次流头表
      */
     @RequiresPermissions("shipment:waveFlowHeader:list")
     @Log(title = "出库-波次流头表", operating="查看波次流头表", action = BusinessType.GRANT)
@@ -63,11 +64,11 @@ public class WaveFlowHeaderController extends BaseController {
         Integer pageNum = pageDomain.getPageNum();
         Integer pageSize = pageDomain.getPageSize();
 
-        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),WaveFlowHeader::getCreated, createdBegin)
+        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());
+                ), WaveFlowHeader::getCode,waveFlowHeader.getCode());
 
         if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
             /**
@@ -83,4 +84,66 @@ public class WaveFlowHeaderController extends BaseController {
     }
 
 
+    /**
+     * 新增波次流头表
+     */
+    @GetMapping("/add")
+    public String add() {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增波次流头表
+     */
+    @RequiresPermissions("config:waveFlowHeader:add")
+    @Log(title = "配置-波次流头表", operating = "新增波次流头表", action = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(WaveFlowHeader waveFlowHeader){
+        waveFlowHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        waveFlowHeader.setCreatedBy(ShiroUtils.getLoginName());
+        waveFlowHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(waveFlowHeaderService.save(waveFlowHeader));
+    }
+
+    /**
+     * 修改波次流头表
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
+        mmap.put("waveFlowHeader", waveFlowHeaderService.getById(id));
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改波次流头表
+     */
+    @RequiresPermissions("config:waveFlowHeader:edit")
+    @Log(title = "通用-波次流头表", operating = "修改波次流头表", action = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(WaveFlowHeader waveFlowHeader) {
+        waveFlowHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(waveFlowHeaderService.updateById(waveFlowHeader));
+    }
+
+    /**
+     * 删除波次流头表
+     */
+    @RequiresPermissions("config:waveFlowHeader:remove")
+    @Log(title = "配置-波次流头表", operating = "删除波次流头表", action = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids) {
+        if (StringUtils.isEmpty(ids)){
+            return AjaxResult.error("id不能为空");
+        }
+        List<Integer> list = new ArrayList<>();
+        for (Integer id : Convert.toIntArray(ids)) {
+            list.add(id);
+        }
+        return toAjax(waveFlowHeaderService.removeByIds(list));
+    }
+
+
 }
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/domain/WaveFlowHeader.java b/src/main/java/com/huaheng/pc/config/waveFlowHeader/domain/WaveFlowHeader.java
index 5bfc476..36a68e1 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/domain/WaveFlowHeader.java
+++ b/src/main/java/com/huaheng/pc/config/waveFlowHeader/domain/WaveFlowHeader.java
@@ -1,4 +1,4 @@
-package com.huaheng.pc.shipment.waveFlowHeader.domain;
+package com.huaheng.pc.config.waveFlowHeader.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.waveFlowHeader.domain.WaveFlowHeader")
 @Data
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/mapper/WaveFlowHeaderMapper.java b/src/main/java/com/huaheng/pc/config/waveFlowHeader/mapper/WaveFlowHeaderMapper.java
index c31afeb..cbeecec 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/mapper/WaveFlowHeaderMapper.java
+++ b/src/main/java/com/huaheng/pc/config/waveFlowHeader/mapper/WaveFlowHeaderMapper.java
@@ -1,7 +1,7 @@
-package com.huaheng.pc.shipment.waveFlowHeader.mapper;
+package com.huaheng.pc.config.waveFlowHeader.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaheng.pc.shipment.waveFlowHeader.domain.WaveFlowHeader;
+import com.huaheng.pc.config.waveFlowHeader.domain.WaveFlowHeader;
 
 public interface WaveFlowHeaderMapper extends BaseMapper<WaveFlowHeader> {
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/service/WaveFlowHeaderService.java b/src/main/java/com/huaheng/pc/config/waveFlowHeader/service/WaveFlowHeaderService.java
index d073586..04a2919 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveFlowHeader/service/WaveFlowHeaderService.java
+++ b/src/main/java/com/huaheng/pc/config/waveFlowHeader/service/WaveFlowHeaderService.java
@@ -1,11 +1,10 @@
-package com.huaheng.pc.shipment.waveFlowHeader.service;
+package com.huaheng.pc.config.waveFlowHeader.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.waveFlowHeader.mapper.WaveFlowHeaderMapper;
-import com.huaheng.pc.shipment.waveFlowHeader.domain.WaveFlowHeader;
+import com.huaheng.pc.config.waveFlowHeader.domain.WaveFlowHeader;
+import com.huaheng.pc.config.waveFlowHeader.mapper.WaveFlowHeaderMapper;
+import org.springframework.stereotype.Service;
+
 @Service
 public class WaveFlowHeaderService extends ServiceImpl<WaveFlowHeaderMapper, WaveFlowHeader> {
 
diff --git a/src/main/java/com/huaheng/pc/shipment/waveMaster/controller/WaveMasterController.java b/src/main/java/com/huaheng/pc/config/waveMaster/controller/WaveMasterController.java
index ca38a65..c1eaa88 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveMaster/controller/WaveMasterController.java
+++ b/src/main/java/com/huaheng/pc/config/waveMaster/controller/WaveMasterController.java
@@ -1,30 +1,30 @@
-package com.huaheng.pc.shipment.waveMaster.controller;
+package com.huaheng.pc.config.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.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;
-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 com.huaheng.pc.config.waveMaster.domain.WaveMaster;
+import com.huaheng.pc.config.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 org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -51,7 +51,7 @@ public class WaveMasterController extends BaseController {
     }
 
     /**
-     * 查询订单分析结果
+     * 查询波次主表
      */
     @RequiresPermissions("shipment:waveMaster:list")
     @Log(title = "出库-波次主表", operating="查看波次主表", action = BusinessType.GRANT)
@@ -64,13 +64,13 @@ public class WaveMasterController extends BaseController {
         Integer pageNum = pageDomain.getPageNum();
         Integer pageSize = pageDomain.getPageSize();
 
-        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),WaveMaster::getCreated, createdBegin)
+        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())
+                ), WaveMaster::getCode,waveMaster.getCode())
                 .like(StringUtils.isNotEmpty(waveMaster.getShipmentFilterCode()
-                ),WaveMaster::getShipmentFilterCode,waveMaster.getShipmentFilterCode());
+                ), WaveMaster::getShipmentFilterCode,waveMaster.getShipmentFilterCode());
 
         if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
             /**
@@ -86,4 +86,67 @@ public class WaveMasterController extends BaseController {
     }
 
 
+    /**
+     * 新增波次主表
+     */
+    @GetMapping("/add")
+    public String add() {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增波次主表
+     */
+    @RequiresPermissions("config:waveMaster:add")
+    @Log(title = "配置-波次主表", operating = "新增波次主表", action = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(WaveMaster waveMaster){
+        waveMaster.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        waveMaster.setCreatedBy(ShiroUtils.getLoginName());
+        waveMaster.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(waveMasterService.save(waveMaster));
+    }
+
+    /**
+     * 修改波次
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
+        mmap.put("waveMaster", waveMasterService.getById(id));
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改波次
+     */
+    @RequiresPermissions("config:waveMaster:edit")
+    @Log(title = "通用-波次主表", operating = "修改波次主表", action = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(WaveMaster waveMaster) {
+        waveMaster.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(waveMasterService.updateById(waveMaster));
+    }
+
+    /**
+     * 删除波次
+     */
+    @RequiresPermissions("config:waveMaster:remove")
+    @Log(title = "配置-波次主表", operating = "删除波次主表", action = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids) {
+        if (StringUtils.isEmpty(ids)){
+            return AjaxResult.error("id不能为空");
+        }
+        List<Integer> list = new ArrayList<>();
+        for (Integer id : Convert.toIntArray(ids)) {
+            list.add(id);
+        }
+        return toAjax(waveMasterService.removeByIds(list));
+    }
+
+
+
 }
diff --git a/src/main/java/com/huaheng/pc/shipment/waveMaster/domain/WaveMaster.java b/src/main/java/com/huaheng/pc/config/waveMaster/domain/WaveMaster.java
index a44fe78..1fd6dc4 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveMaster/domain/WaveMaster.java
+++ b/src/main/java/com/huaheng/pc/config/waveMaster/domain/WaveMaster.java
@@ -1,4 +1,4 @@
-package com.huaheng.pc.shipment.waveMaster.domain;
+package com.huaheng.pc.config.waveMaster.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.waveMaster.domain.WaveMaster")
 @Data
diff --git a/src/main/java/com/huaheng/pc/shipment/waveMaster/mapper/WaveMasterMapper.java b/src/main/java/com/huaheng/pc/config/waveMaster/mapper/WaveMasterMapper.java
index eda0820..d789f23 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveMaster/mapper/WaveMasterMapper.java
+++ b/src/main/java/com/huaheng/pc/config/waveMaster/mapper/WaveMasterMapper.java
@@ -1,7 +1,7 @@
-package com.huaheng.pc.shipment.waveMaster.mapper;
+package com.huaheng.pc.config.waveMaster.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaheng.pc.shipment.waveMaster.domain.WaveMaster;
+import com.huaheng.pc.config.waveMaster.domain.WaveMaster;
 
 public interface WaveMasterMapper extends BaseMapper<WaveMaster> {
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/waveMaster/service/WaveMasterService.java b/src/main/java/com/huaheng/pc/config/waveMaster/service/WaveMasterService.java
index 230c9d5..ee2ad9b 100644
--- a/src/main/java/com/huaheng/pc/shipment/waveMaster/service/WaveMasterService.java
+++ b/src/main/java/com/huaheng/pc/config/waveMaster/service/WaveMasterService.java
@@ -1,11 +1,10 @@
-package com.huaheng.pc.shipment.waveMaster.service;
+package com.huaheng.pc.config.waveMaster.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.waveMaster.mapper.WaveMasterMapper;
-import com.huaheng.pc.shipment.waveMaster.domain.WaveMaster;
+import com.huaheng.pc.config.waveMaster.domain.WaveMaster;
+import com.huaheng.pc.config.waveMaster.mapper.WaveMasterMapper;
+import org.springframework.stereotype.Service;
+
 @Service
 public class WaveMasterService extends ServiceImpl<WaveMasterMapper, WaveMaster> {
 
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/controller/CycleCountDetailController.java b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/controller/CycleCountDetailController.java
index e762f6d..3f48c3a 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/controller/CycleCountDetailController.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/controller/CycleCountDetailController.java
@@ -9,21 +9,31 @@ 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;
 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
 import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
 import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailServiceImpl;
+import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
 import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
 import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderServiceImpl;
+import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
+import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
+import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
+import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
+import io.swagger.models.auth.In;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
 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 javax.annotation.Resource;
+import java.util.Collections;
 import java.util.List;
 
 
@@ -35,10 +45,13 @@ import java.util.List;
 public class CycleCountDetailController extends BaseController {
 
 
-    @Resource
-    private CycleCountHeaderService cycleCountHeaderService;
+
+
     @Resource
     private CycleCountDetailService cycleCountDetailService;
+    @Resource
+    private CycleCountHeaderService cycleCountHeaderService;
+
 
 
 
@@ -63,7 +76,8 @@ public class CycleCountDetailController extends BaseController {
         PageDomain pageDomain = TableSupport.buildPageRequest();
         Integer pageNum = pageDomain.getPageNum();
         Integer pageSize = pageDomain.getPageSize();
-
+        //没有主单ID传入则直接返回空list
+        if(cycleCountDetail.getCycleCountHeadId() != null){
         lambdaQueryWrapper.ge(
                 StringUtils.isNotEmpty(createdBegin), CycleCountDetail::getCreated, createdBegin)
                 .le(StringUtils.isNotEmpty(createdEnd), CycleCountDetail::getCreated, createdEnd)//创建时间范围
@@ -95,16 +109,42 @@ public class CycleCountDetailController extends BaseController {
             List<CycleCountDetail> list  = cycleCountDetailService.list(lambdaQueryWrapper);
             return getDataTable(list);
         }
-
+    }
         //空List
-        //return getDataTable(Collections.emptyList());
+        return getDataTable(Collections.emptyList());
 
     }
 
 
+    /**
+     * 新增盘点明细
+     */
+    @GetMapping("/add")
+    public String add(Integer cycleCountHeadId,String companyCode, ModelMap m)
+    {
+        if(cycleCountHeadId == null){
+            throw new SecurityException("盘点头ID不能为空!");
+        }
+        //相同货主才能盘点,取出盘点头的货主
+        CycleCountHeader cycleCountHeader = cycleCountHeaderService.getById(cycleCountHeadId);
+        companyCode = cycleCountHeader.getCompanyCode();
+        m.put("companyCode",companyCode);
+        m.put("cycleCountHeadId",cycleCountHeadId);
 
+        return prefix + "/add";
+    }
 
-
+    /**
+     * 新增保存盘点明细
+     */
+    //@RequiresPermissions("inventory:cyclecountDetail:add")
+    @Log(title = "库存-盘点", operating = "新增盘点补货明细", action = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(Integer cycleCountHeadId, Integer[] inventoryDetailIdIds)
+    {
+        return cycleCountDetailService.addDetails(cycleCountHeadId,inventoryDetailIdIds);
+    }
 
 
 
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailService.java b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailService.java
index aba817a..6ac6221 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailService.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailService.java
@@ -1,13 +1,21 @@
 package com.huaheng.pc.inventory.cycleCountDetail.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
-import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
+
 
 
 public interface CycleCountDetailService extends IService<CycleCountDetail> {
 
 
+    AjaxResult addDetails(Integer cycleCountHeadId, Integer[] inventoryDetailIdIds);
+
+
+
+
+
+
 
 }
 
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
index 50ee0e8..5b6ece8 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
@@ -1,15 +1,104 @@
 package com.huaheng.pc.inventory.cycleCountDetail.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
+import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
+import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
+import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
+import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaheng.pc.inventory.cycleCountDetail.mapper.CycleCountDetailMapper;
 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
 @Service
 public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMapper, CycleCountDetail> implements CycleCountDetailService {
 
 
 
+    @Resource
+    private CycleCountHeaderService cycleCountHeaderService;
+    @Resource
+    private InventoryDetailService inventoryDetailService;
+    @Resource
+    private TaskHeaderService taskHeaderService;
+
+
+
+
+    /**
+     * 新增盘点明细
+     * */
+    @Override
+    @Transactional
+    public AjaxResult addDetails(Integer cycleCountHeadId, Integer[] inventoryDetailIdIds) {
+
+        CycleCountHeader cyclecountHeader = cycleCountHeaderService.getById(cycleCountHeadId);
+        //可能存在并发删除的情况
+        if(cyclecountHeader==null){
+            return AjaxResult.error("盘点主单据不存在");
+        }
+        if(cyclecountHeader.getStatusCyc() > 1){
+            return AjaxResult.error("盘点单非新建状态,无法再添加明细");
+        }
+        //获取已经存在的明细
+        CycleCountDetail cycleCountDetail = new CycleCountDetail();
+        cycleCountDetail.setWarehouseCode(cyclecountHeader.getWarehouseCode());
+        cycleCountDetail.setCompanyCode(cyclecountHeader.getCompanyCode());
+        cycleCountDetail.setCycleCountHeadId(cycleCountHeadId);
+        LambdaQueryWrapper<CycleCountDetail> cycleCountDetailLambd = Wrappers.lambdaQuery(cycleCountDetail);
+        List<CycleCountDetail> cyclecountDetailList = this.list(cycleCountDetailLambd);
+        if(cyclecountDetailList == null){
+            cyclecountDetailList = new ArrayList<>();
+        }
+        for(int inventoryDetailId : inventoryDetailIdIds){
+            //当前有盘点明细时验证是否已经生成盘点细单,生成则跳出该条循环
+            if(cyclecountDetailList.stream().anyMatch(t -> t.getInventoryDetailId()!=null && t.getInventoryDetailId() == inventoryDetailId)){
+                continue;
+            }
+            //查询该条库存明细
+            InventoryDetail inventoryDetail = inventoryDetailService.getById(inventoryDetailId);
+
+            //写入盘点明细
+            CycleCountDetail ccd = new CycleCountDetail();
+            ccd.setCycleCountHeadId(cycleCountHeadId);
+            ccd.setInventoryDetailId(inventoryDetailId);
+            ccd.setWarehouseCode(inventoryDetail.getWarehouseCode());
+            ccd.setCompanyCode(inventoryDetail.getCompanyCode());
+            ccd.setInventorySts(inventoryDetail.getInventorySts());
+            ccd.setCountId(inventoryDetail.getId());
+            ccd.setEnableStatus(1);
+            ccd.setLocationCode(inventoryDetail.getLocationCode());
+            ccd.setContainerCode(inventoryDetail.getContainerCode());
+            ccd.setMaterialCode(inventoryDetail.getMaterialCode());
+            ccd.setMaterialName(inventoryDetail.getMaterialName());
+            ccd.setMaterialSpec(inventoryDetail.getMaterialSpec());
+            ccd.setMaterialUnit(inventoryDetail.getMaterialUnit());
+            ccd.setSystemQty(inventoryDetail.getQty());
+
+            ccd.setCountedBy(cyclecountHeader.getCreatedBy());
+            ccd.setCountedAt(cyclecountHeader.getCreated());
+            ccd.setCreated(new Date());
+            ccd.setCreatedBy(ShiroUtils.getLoginName());
+            ccd.setLastUpdated(new Date());
+            ccd.setLastUpdatedBy(ShiroUtils.getLoginName());
+            this.save(ccd);
+
+        }
+        return AjaxResult.success("生成盘点明细成功");
+    }
 
 
 
 }
+
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerHeader.java b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerHeader.java
index f6bdc1d..eaa2e5b 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerHeader.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerHeader.java
@@ -269,8 +269,8 @@ public class ReceiptContainerHeader implements Serializable {
      *
      * @return id - ID
      */
-    public Integer getId() {
-        return id;
+    public  Integer getId() {
+        return this.id;
     }
 
     /**
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 ea9ae4e..fa04ccf 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
@@ -119,5 +119,21 @@ public class TaskHeaderController extends BaseController {
     }
 
 
+    /**
+     * 删除立库任务
+     */
+    @RequiresPermissions("task:taskHeader:remove")
+    @Log(title = "任务-任务管理", operating = "删除立库任务", action = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        if (StringUtils.isEmpty(ids))
+            return AjaxResult.error("taskId不能为空");
+        AjaxResult ajaxResult = taskHeaderService.cancelTask(Convert.toIntArray(ids));
+        return ajaxResult;
+    }
+
+
 
 }
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 efd5185..298fc69 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
@@ -35,5 +35,7 @@ public interface TaskHeaderService extends IService<TaskHeader>{
 
     Integer UncompleteCount(String containerCode);
 
+    AjaxResult cancelTask(Integer[] taskIds) ;
+
 
 }
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 9d34fcd..d6d6b4c 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
@@ -12,6 +12,7 @@ import com.huaheng.pc.config.container.domain.Container;
 import com.huaheng.pc.config.container.service.ContainerService;
 import com.huaheng.pc.config.location.domain.Location;
 import com.huaheng.pc.config.location.service.LocationService;
+import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
 import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
 import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
@@ -88,7 +89,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
     private ShipmentDetailService shipmentDetailService;
 
 
-
     @Resource
     private ReceiptContainerHeaderService receiptContainerHeaderService;
     @Resource
@@ -96,9 +96,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
 
 
 
-
-
-
     /**
      * 查询容器有无任务
      */
@@ -107,6 +104,64 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         return taskHeaderMapper.UncompleteCount(ContainerCode, ShiroUtils.getWarehouseCode());
     }
 
+
+    /**
+     * 取消任务
+     * */
+
+    @Override
+    public AjaxResult cancelTask(Integer[] taskIds) {
+        for(int taskId : taskIds){
+            TaskHeader taskHeader = taskHeaderService.getById(taskId);
+            if(taskHeader==null){
+                return AjaxResult.error("任务"+taskId+"未找到,操作中止");
+            }
+            if(taskHeader.getStatus() > 9){
+                return AjaxResult.error("存在任务"+taskHeader.getId()+"已下发或执行,操作中止");
+            }
+            //删除子任务
+            LambdaQueryWrapper<TaskDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+            lambdaQueryWrapper.eq(TaskDetail::getTaskId,taskHeader.getId());
+            taskDetailService.remove(lambdaQueryWrapper);
+            //删除主任务
+            taskHeaderService.removeById(taskHeader.getId());
+            // 更改库位状态(整盘入库任务除外)
+            if(taskHeader.getInternalTaskType() == 100 )
+            {
+                ReceiptContainerHeader record =new ReceiptContainerHeader();
+                record.setStatus((short)0);
+                record.setId(taskHeader.getAllocationHeadId());
+                receiptContainerHeaderService.updateById(record);
+            }
+            //根据任务类型来更新货箱状态
+            //修改关联的货箱状态
+            if(taskHeader.getInternalTaskType() == 200)  {
+                ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader();
+                shipmentContainerHeader.setId(taskHeader.getAllocationHeadId());
+                shipmentContainerHeader.setStatus(0);
+                shipmentContainerHeaderService.updateById(shipmentContainerHeader);
+            }
+//            if(taskHeader.getInternalTaskType() == 700)   {
+//                CycleCountHeader cycleCountHeader = new CycleCountHeader();
+//                cycleCountHeader.setId(task.getAllocationHeadId());
+//                cycleCountHeader.setLastUpdated(new Date());
+//                cycleCountHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
+//                cyclecountDetailService.updateByModel(cyclecountDetail);
+//            }
+            if(taskHeader.getInternalTaskType()==100||taskHeader.getInternalTaskType()==200){
+                if(taskHeader.getToLocation()!=null){
+                    //更新托盘、库位状态
+                    locationService.updateStatus(taskHeader.getToLocation(), "empty");
+                }
+            }
+//            if(task.getType()==900){
+//                //出库查看任务没有关联的货箱,不做处理
+//            }
+        }
+
+        return AjaxResult.success("取消任务成功!");
+    }
+
     /**
      * 生成出库任务
      *
@@ -215,7 +270,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         ShipmentContainerHeader record = new ShipmentContainerHeader();
         record.setId(shipmentContainerHeaderId);
         record.setStatus(10);
-        record.setStatus(task.getTaskType());//实际出库类型
         shipmentContainerHeaderService.saveOrUpdate(record);
         return AjaxResult.success(task.getId());
 
@@ -238,39 +292,64 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 return AjaxResult.error("任务" + taskId + "已经下发,请不要重复下发,操作中止");
             }
             //修改任务头表
+            task.setId(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);
-            if (!taskHeaderService.update(task, HeaderUpdateWrapper))
-                throw new ServiceException("更新任务头失败");
+            taskHeaderService.saveOrUpdate(task);
             //修改任务明细状态
             TaskDetail record = new TaskDetail();
             record.setStatus(10);
             record.setLastUpdated(new Date());
             record.setLastUpdatedBy(ShiroUtils.getLoginName());
+            record.setProcessStamp("100");
+            taskDetailService.updateById(record);
             LambdaUpdateWrapper<TaskDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
             lambdaUpdateWrapper.eq(TaskDetail::getTaskId, task.getId());
             if (!taskDetailService.update(record, lambdaUpdateWrapper)){
                 throw new ServiceException("更新任务明细失败");
             }
-            //修改入库明细
-            ReceiptDetail receiptDetail = receiptDetailService.queryflow(receiptDetailService.getById(record.getId()));
-            if (!receiptDetailService.updateById(receiptDetail)){
-                throw new ServiceException("更新状态失败");
-            }
-            receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
-            //修改组盘表状态为20
-            ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
-            receiptContainerDetail.setStatus(20);
-            receiptContainerDetail.setLastUpdated(new Date());
-            receiptContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
-            LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate();
-            receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getReceiptId,receiptDetail.getReceiptId());
-            if (! receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper))
-                throw new ServiceException("更新组盘状态失败");
+//            //修改入库明细
+//            if (task.getInternalTaskType()==100){
+//                ReceiptDetail receiptDetail = receiptDetailService.queryflow(receiptDetailService.getById(record.getId()));
+//                if (!receiptDetailService.updateById(receiptDetail)){
+//                    throw new ServiceException("更新状态失败");
+//                }
+//                receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
+//
+//                //修改组盘表状态为20
+//                ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
+//                receiptContainerDetail.setStatus(20);
+//                receiptContainerDetail.setLastUpdated(new Date());
+//                receiptContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+//                LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+//                receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getReceiptId,receiptDetail.getReceiptId());
+//                if (! receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper))
+//                    throw new ServiceException("更新组盘状态失败");
+//            }
+//
+//            //修改出库单状态
+//            if (task.getInternalTaskType()==200){
+//                LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+//                taskDetailLambdaQueryWrapper.eq(TaskDetail::getTaskId,task.getId());
+//               List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambdaQueryWrapper);
+//
+//                for (TaskDetail taskDeatails: taskDetailList) {
+//                    LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+//                    shipmentDetailLambdaQueryWrapper.eq(ShipmentDetail::getId,taskDeatails.getBillDetailId());
+//
+//                    ShipmentHeader shipmentHeader =new ShipmentHeader();
+//                    shipmentHeader.setId(shipmentDetailService.getOne(shipmentDetailLambdaQueryWrapper).getShipmentId());
+//                    shipmentHeader.setFirstStatus(100);
+//                    shipmentHeader.setLastStatus(100);
+//                    shipmentHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
+//                    shipmentHeader.setLastUpdated(new Date());
+//                    shipmentHeaderService.updateById(shipmentHeader);
+//                }
+//            }
+
+
         }
         return AjaxResult.success("下发任务成功", task);
     }
@@ -491,12 +570,37 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getReceiptId, DataUtils.getInteger(map.get("receiptId")));
                 if (! receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper))
                     throw new ServiceException("更新组盘状态失败");
-                //修改入库明细
-                ReceiptDetail receiptDetail = receiptDetailService.queryflow(receiptDetailService.getById(DataUtils.getInteger(map.get("receiptDetailId"))));
-                if (!receiptDetailService.updateById(receiptDetail)){
-                    throw new ServiceException("更新状态失败");
+
+                if (task.getInternalTaskType()==100){
+                    //修改入库明细
+                    ReceiptDetail receiptDetail = receiptDetailService.queryflow(receiptDetailService.getById(DataUtils.getInteger(map.get("receiptDetailId"))));
+                    if (!receiptDetailService.updateById(receiptDetail)){
+                        throw new ServiceException("更新状态失败");
+                    }
+                    receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
+                }
+
+                //修改出库单明细
+                if (task.getInternalTaskType()==200){
+                    LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+                    taskDetailLambdaQueryWrapper.eq(TaskDetail::getTaskId,task.getId());
+                    List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambdaQueryWrapper);
+
+                for (TaskDetail taskDeatails: taskDetailList) {
+                    LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+                    shipmentDetailLambdaQueryWrapper.eq(ShipmentDetail::getId,taskDeatails.getBillDetailId());
+
+                    ShipmentHeader shipmentHeader =new ShipmentHeader();
+                    shipmentHeader.setId(shipmentDetailService.getOne(shipmentDetailLambdaQueryWrapper).getShipmentId());
+                    shipmentHeader.setFirstStatus(100);
+                    shipmentHeader.setLastStatus(100);
+                    shipmentHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
+                    shipmentHeader.setLastUpdated(new Date());
+                    shipmentHeaderService.updateById(shipmentHeader);
+                }
                 }
-                receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
+
+
             }
 
         }
diff --git a/src/main/resources/mybatis/shipment/WaveFlowDetailMapper.xml b/src/main/resources/mybatis/config/WaveFlowDetailMapper.xml
index 37b59c4..91d07b0 100644
--- a/src/main/resources/mybatis/shipment/WaveFlowDetailMapper.xml
+++ b/src/main/resources/mybatis/config/WaveFlowDetailMapper.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.waveFlowDetail.mapper.WaveFlowDetailMapper">
-  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.waveFlowDetail.domain.WaveFlowDetail">
+<mapper namespace="com.huaheng.pc.config.waveFlowDetail.mapper.WaveFlowDetailMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.waveFlowDetail.domain.WaveFlowDetail">
     <!--@mbg.generated-->
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="headerId" jdbcType="INTEGER" property="headerId" />
@@ -23,16 +23,12 @@
     <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
     <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
     <result column="userDef4" jdbcType="VARCHAR" property="userDef4" />
-    <result column="userDef5" jdbcType="VARCHAR" property="userDef5" />
-    <result column="userDef6" jdbcType="VARCHAR" property="userDef6" />
-    <result column="userDef7" jdbcType="VARCHAR" property="userDef7" />
-    <result column="userDef8" jdbcType="VARCHAR" property="userDef8" />
     <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
     id, headerId, waveFlowCode, warehouseCode, `sequence`, waveStepCode, waveStepName, 
     value1, value2, value3, value4, created, createdBy, lastUpdated, lastUpdatedBy, version, 
-    userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, processStamp
+    userDef1, userDef2, userDef3, userDef4,  processStamp
   </sql>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/shipment/WaveFlowHeaderMapper.xml b/src/main/resources/mybatis/config/WaveFlowHeaderMapper.xml
index e131b4d..626cb71 100644
--- a/src/main/resources/mybatis/shipment/WaveFlowHeaderMapper.xml
+++ b/src/main/resources/mybatis/config/WaveFlowHeaderMapper.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.waveFlowHeader.mapper.WaveFlowHeaderMapper">
-  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.waveFlowHeader.domain.WaveFlowHeader">
+<mapper namespace="com.huaheng.pc.config.waveFlowHeader.mapper.WaveFlowHeaderMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.waveFlowHeader.domain.WaveFlowHeader">
     <!--@mbg.generated-->
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="code" jdbcType="VARCHAR" property="code" />
@@ -15,15 +15,11 @@
     <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
     <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
     <result column="userDef4" jdbcType="VARCHAR" property="userDef4" />
-    <result column="userDef5" jdbcType="VARCHAR" property="userDef5" />
-    <result column="userDef6" jdbcType="VARCHAR" property="userDef6" />
-    <result column="userDef7" jdbcType="VARCHAR" property="userDef7" />
-    <result column="userDef8" jdbcType="VARCHAR" property="userDef8" />
     <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
     id, code, warehouseCode, created, createdBy, lastUpdated, lastUpdatedBy, version, 
-    userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, processStamp
+    userDef1, userDef2, userDef3, userDef4, processStamp
   </sql>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/shipment/WaveMapper.xml b/src/main/resources/mybatis/config/WaveMapper.xml
index 6831b49..23fa520 100644
--- a/src/main/resources/mybatis/shipment/WaveMapper.xml
+++ b/src/main/resources/mybatis/config/WaveMapper.xml
@@ -1,13 +1,13 @@
 <?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.wave.mapper.WaveMapper">
-  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.wave.domain.Wave">
+<mapper namespace="com.huaheng.pc.config.wave.mapper.WaveMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.wave.domain.Wave">
     <!--@mbg.generated-->
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
     <result column="waveName" jdbcType="VARCHAR" property="waveName" />
     <result column="masterCode" jdbcType="VARCHAR" property="masterCode" />
-    <result column="enable" jdbcType="INTEGER" property="enable" />
+    <result column="status" jdbcType="INTEGER" property="status" />
     <result column="currentWaveStep" jdbcType="VARCHAR" property="currentWaveStep" />
     <result column="lastWaveStep" jdbcType="VARCHAR" property="lastWaveStep" />
     <result column="totalShipments" jdbcType="INTEGER" property="totalShipments" />
@@ -32,10 +32,6 @@
     <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
     <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
     <result column="userDef4" jdbcType="VARCHAR" property="userDef4" />
-    <result column="userDef5" jdbcType="VARCHAR" property="userDef5" />
-    <result column="userDef6" jdbcType="VARCHAR" property="userDef6" />
-    <result column="userDef7" jdbcType="VARCHAR" property="userDef7" />
-    <result column="userDef8" jdbcType="VARCHAR" property="userDef8" />
     <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
     <result column="closed" jdbcType="INTEGER" property="closed" />
     <result column="closedBy" jdbcType="VARCHAR" property="closedBy" />
@@ -44,10 +40,10 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, warehouseCode, waveName, masterCode, `enable`, currentWaveStep, lastWaveStep, 
+    id, warehouseCode, waveName, masterCode, `status`, currentWaveStep, lastWaveStep,
     totalShipments, totalLines, totalQty, startedAt, completedAt, waveMode, errorMessage, 
     locked, replenishmentReqd, messageId, runBy, releasedBy, releasedAt, created, createdBy, 
-    lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3, userDef4, userDef5, 
-    userDef6, userDef7, userDef8, processStamp, closed, closedBy, closedAt, released
+    lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3, userDef4, processStamp,
+    closed, closedBy, closedAt, released
   </sql>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/shipment/WaveMasterMapper.xml b/src/main/resources/mybatis/config/WaveMasterMapper.xml
index 61294f4..c275431 100644
--- a/src/main/resources/mybatis/shipment/WaveMasterMapper.xml
+++ b/src/main/resources/mybatis/config/WaveMasterMapper.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.waveMaster.mapper.WaveMasterMapper">
-  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.waveMaster.domain.WaveMaster">
+<mapper namespace="com.huaheng.pc.config.waveMaster.mapper.WaveMasterMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.waveMaster.domain.WaveMaster">
     <!--@mbg.generated-->
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="code" jdbcType="VARCHAR" property="code" />
@@ -33,10 +33,6 @@
     <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
     <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
     <result column="userDef4" jdbcType="VARCHAR" property="userDef4" />
-    <result column="userDef5" jdbcType="VARCHAR" property="userDef5" />
-    <result column="userDef6" jdbcType="VARCHAR" property="userDef6" />
-    <result column="userDef7" jdbcType="VARCHAR" property="userDef7" />
-    <result column="userDef8" jdbcType="VARCHAR" property="userDef8" />
     <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
   </resultMap>
   <sql id="Base_Column_List">
diff --git a/src/main/resources/templates/inventory/cycleCountDetail/add.html b/src/main/resources/templates/inventory/cycleCountDetail/add.html
index 9d9aa2d..350edd8 100644
--- a/src/main/resources/templates/inventory/cycleCountDetail/add.html
+++ b/src/main/resources/templates/inventory/cycleCountDetail/add.html
@@ -4,11 +4,11 @@
 <head th:include="include :: header"></head>
 <body class="white-bg">
 <div class="container-div">
-	<!--<div class="wrapper wrapper-content animated fadeInRight ibox-content">-->
-	<input type="hidden" id="headId" name="headId" th:value="${headId}">
+	<!--<input type="hidden" id="cycleCountHeadId" name="cycleCountHeadId" th:value="${cycleCountHeadId}">-->
 	<div class="row">
 		<div class="col-sm-12 select-info">
 			<form id="inventory-form">
+                <input type="hidden" id="cycleCountHeadId" name="cycleCountHeadId" th:value="${cycleCountHeadId}">
 					<div class="select-list">
 						<ul>
                             <li>
@@ -29,24 +29,18 @@
 							<!--<li>
 								物料规格:<input type="text" name="materialSpec"/>
 							</li>-->
-							<li>
-								物料类型:
-								<select id="materialType" name="materialType" th:with="type=${@dict.getType('materialType')}">
-									<option value="">所有</option>
-									<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
-								</select>
-							</li>
+
 
 							<li>
 								&nbsp;&nbsp;供 应 商:<input type="text" name="supplierCode"/>
 							</li>
-							<li>
+							<!--<li>
 								库存状态:
 								<select id="status" name="status" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}">
 									<option value="">所有</option>
 									<option th:each="e : ${inventoryStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
 								</select>
-							</li>
+							</li>-->
 							<li>
 								&nbsp;&nbsp;&nbsp;项 目 号:<input type="text" id="project" name="project"/>
 							</li>
@@ -77,12 +71,12 @@
 <script th:inline="javascript">
     var addFlag = [[${@permission.hasPermi('inventoryHeader:cycleCountDetail:add')}]];
     // var removeFlag = [[${@permission.hasPermi('inventoryHeader:inventoryHeader:remove')}]];
-    var prefix = ctx + "inventory/inventory";
-    var prefix_cycleDetails = ctx + "inventory/cyclecountDetail";
+    var prefix = ctx + "inventory/inventoryDetail";
+    var prefix_cycleDetails = ctx + "inventory/cycleCountDetail";
     var inventoryStatus=[[${@dict.getType('inventoryStatus')}]];
     $(function() {
         $("#bootstrap-table").bootstrapTable({
-            url: prefix + "/list",
+            url: prefix + "/inventoryDetailLook",
             method:"post",
             contentType: "application/x-www-form-urlencoded",
             cache: false,                                       // 是否使用缓存
@@ -124,359 +118,182 @@
                     }
                 },
                 {
-                    field : 'id',
-                    title : 'id号'
+                    field: 'id',
+                    title: '明细ID',
+                    sortable: true
                 },
                 {
-                    field : 'locationId',
-                    title : '库位id' ,
-                    visible:false
+                    field: 'inventoryHeaderId',
+                    title: '库存头ID'
                 },
                 {
-                    field : 'locationCode',
-                    title : '库位编号'
+                    field: 'locationCode',
+                    title: '库位编号'
                 },
                 {
-                    field : 'containerCode',
-                    title : '容器编号'
+                    field: 'containerCode',
+                    title: '容器编号'
                 },
+
                 {
-                    field : 'sourceCode',
-                    title : '上游系统单号',
-                    visible:false
+                    field: 'materialCode',
+                    title: '存货编码'
                 },
+
                 {
-                    field : 'sourceLine',
-                    title : '上游系统行号',
-                    visible:false
+                    field: 'materialName',
+                    title: '物料名称'
                 },
                 {
-                    field : 'companyId',
-                    title : '货主id',
-                    visible:false
+                    field: 'materialSpec',
+                    title: '物料规格'
                 },
                 {
-                    field : 'companyCode',
-                    title : '货主编码'
+                    field: 'materialUnit',
+                    title: '物料单位'
                 },
                 {
-                    field : 'materialId',
-                    title : '物料Id' ,
-                    visible:false
+                    field: 'qty',
+                    title: '数量'
                 },
                 {
-                    field : 'materialCode',
-                    title : '存货编码'
+                    field: 'taskQty',
+                    title: '预定执行数量'
                 },
                 {
-                    field : 'materialName',
-                    title : '物料名称'
+                    field: 'lockedQty',
+                    title: '冻结数量'
                 },
                 {
-                    field : 'materialSpec',
-                    title : '物料规格'
+                    field: 'companyCode',
+                    title: '货主编码'
                 },
                 {
-                    field : 'supplierCode',
-                    title : '供应商'
+                    field: 'receiptCode',
+                    title: '入库单编码'
                 },
                 {
-                    field : 'receiptId',
-                    title : '入库单id' ,
-                    visible:false
+                    field: 'receiptDetailId',
+                    title: '入库单明细ID',
+                    visible: true
                 },
                 {
-                    field : 'status',
-                    title : '库存状态' ,
-                    align: 'center',
-                    formatter: function(value, row, index) {
-                        return $.table.selectDictLabel(inventoryStatus, value);
-                    }
+                    field: 'batch',
+                    title: '批次',
+                    sortable: false,
+                    visible: false
+                },
+                {
+                    field: 'lot',
+                    title: '批号',
+                    sortable: false,
+                    visible: false
                 },
                 {
-                    field : 'qty',
-                    title : '数量'
+                    field: 'projectNo',
+                    title: '项目号',
+                    sortable: true
                 },
                 {
-                    field : 'taskQty',
-                    title : '执行预定数量'
+                    field: 'supplierCode',
+                    title: '供应商编码',
+                    visible: true
                 },
                 {
-                    field : 'receiptCode',
-                    title : '入库单编码'
+                    field: 'manufactureDate',
+                    title: '生产日期',
+                    sortable: true,
+                    visible: false
                 },
                 {
-                    field : 'receiptDetailId',
-                    title : '入库单明细id',
-                    visible:false
+                    field: 'expirationDate',
+                    title: '失效日期',
+                    sortable: true,
+                    visible: false
                 },
                 {
-                    field : 'batch',
-                    title : '批次',
-                    visible:false
+                    field: 'inventorySts',
+                    title: '库存状态',
+                    align: 'center',
+                    formatter: function (value, row, index) {
+                        return $.table.selectDictLabel(inventoryStatus, value);
+                    }
                 },
+
                 {
-                    field : 'lot',
-                    title : '批号',
-                    visible:false
+                    field: 'referCode',
+                    title: '上游单号'
                 },
                 {
-                    field : 'project',
-                    title : '项目号',
-                    visible:false
+                    field: 'referDetailId',
+                    title: '上游单号行号'
                 },
                 {
-                    field : 'manufactureDate',
-                    title : '生产日期' ,
-                    visible:false
+                    field: 'qcCheck',
+                    title: '质检'
                 },
                 {
-                    field : 'expirationDate',
-                    title : '失效日期' ,
-                    visible:false
+                    field: 'weight',
+                    title: '重量'
                 },
                 {
-                    field : 'costPrice',
-                    title : '成本' ,
-                    visible:false
+                    field: 'attributeId',
+                    title: '属性号',
+                    visible: false
                 },
                 {
-                    field : 'listPrice',
-                    title : '标价' ,
-                    visible:false
+                    field: 'attribute1',
+                    title: '属性1',
+                    visible: false
                 },
                 {
-                    field : 'netPrice',
-                    title : '净价' ,
-                    visible:false
+                    field: 'attribute2',
+                    title: '属性2',
+                    visible: false
                 },
                 {
-                    field : 'created',
-                    title : '入库时间'
+                    field: 'attribute3',
+                    title: '属性3',
+                    visible: false
                 },
                 {
-                    field : 'createdBy',
-                    title : '创建用户' ,
-                    visible:false
+                    field: 'lockCode',
+                    title: '锁',
                 },
                 {
-                    field : 'lastUpdated',
-                    title : '最后修改时间'
+                    field: 'lastCycleCountDate',
+                    title: '上次盘点日期',
+                    visible: false,
+                    sortable: true
                 },
                 {
-                    field : 'lastUpdatedBy',
-                    title : '更新用户'
+                    field: 'created',
+                    title: '入库日期',
+                    sortable: true
                 },
                 {
-                    field : 'userDef1',
-                    title : '自定义字段1' ,
-                    visible:false
+                    field: 'createdBy',
+                    title: '创建用户',
+                    visible: false
                 },
                 {
-                    field : 'userDef2',
-                    title : '自定义字段2' ,
-                    visible:false
+                    field: 'lastUpdated',
+                    title: '最后修改时间',
+                    sortable: true
                 },
                 {
-                    field : 'userDef3',
-                    title : '自定义字段3' ,
-                    visible:false
-                }
+                    field: 'lastUpdatedBy',
+                    title: '更新用户'
+                },
             ]
         });
 
-        // var options = {
-        //     url: prefix + "/list",
-        //     createUrl: prefix + "/add",
-        //     updateUrl: prefix + "/edit/{id}",
-        //     removeUrl: prefix + "/remove",
-        //     queryParams: queryParams,
-        //     modalName: "库存",
-        //     search: false,
-        //     sortName: "id",
-        //     sortOrder: "desc",
-        //     columns: [
-        //         {
-        //             checkbox: true
-        //         },
-        //         {
-        //             title: '操作',
-        //             align: 'center',
-        //             formatter: function(value, row, index) {
-        //                 var actions = [];
-        //                 actions.push('<a class="btn btn-success btn-xs ' + addFlag + '" href="#" onclick="addDetail(\'' + row.id + '\')"><i class="fa fa-edit"></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>');
-        //                 return actions.join('');
-        //             }
-        //         },
-        //         {
-        //             field : 'id',
-        //             title : 'id号'
-        //         },
-        //         {
-        //             field : 'locationId',
-        //             title : '库位id' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'locationCode',
-        //             title : '库位编号'
-        //         },
-        //         {
-        //             field : 'containerCode',
-        //             title : '容器编号'
-        //         },
-        //         {
-        //             field : 'sourceCode',
-        //             title : '上游系统单号',
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'sourceLine',
-        //             title : '上游系统行号',
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'companyId',
-        //             title : '货主id',
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'companyCode',
-        //             title : '货主编码'
-        //         },
-        //         {
-        //             field : 'materialId',
-        //             title : '物料Id' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'materialCode',
-        //             title : '存货编码'
-        //         },
-        //         {
-        //             field : 'materialName',
-        //             title : '物料名称'
-        //         },
-        //         {
-        //             field : 'materialSpec',
-        //             title : '物料规格'
-        //         },
-        //         {
-        //             field : 'supplierCode',
-        //             title : '供应商'
-        //         },
-        //         {
-        //             field : 'receiptId',
-        //             title : '入库单id' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'status',
-        //             title : '库存状态' ,
-        //             align: 'center',
-        //             formatter: function(value, row, index) {
-        //                 return $.table.selectDictLabel(inventoryStatus, value);
-        //             }
-        //         },
-        //         {
-        //             field : 'qty',
-        //             title : '数量'
-        //         },
-        //         {
-        //             field : 'taskQty',
-        //             title : '执行预定数量'
-        //         },
-        //         {
-        //             field : 'receiptCode',
-        //             title : '入库单编码'
-        //         },
-        //         {
-        //             field : 'receiptDetailId',
-        //             title : '入库单明细id',
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'batch',
-        //             title : '批次',
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'lot',
-        //             title : '批号',
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'project',
-        //             title : '项目号',
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'manufactureDate',
-        //             title : '生产日期' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'expirationDate',
-        //             title : '失效日期' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'costPrice',
-        //             title : '成本' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'listPrice',
-        //             title : '标价' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'netPrice',
-        //             title : '净价' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'created',
-        //             title : '入库时间'
-        //         },
-        //         {
-        //             field : 'createdBy',
-        //             title : '创建用户' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'lastUpdated',
-        //             title : '最后修改时间'
-        //         },
-        //         {
-        //             field : 'lastUpdatedBy',
-        //             title : '更新用户'
-        //         },
-        //         {
-        //             field : 'userDef1',
-        //             title : '自定义字段1' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'userDef2',
-        //             title : '自定义字段2' ,
-        //             visible:false
-        //         },
-        //         {
-        //             field : 'userDef3',
-        //             title : '自定义字段3' ,
-        //             visible:false
-        //         }
-        //     ]
-        // };
-        // $.table.init(options);
-        // $("#search").click();
     });
 
-    function addDetail(id) {
-        addInner($('#headId').val(),id);
-    }
+    /*function addDetail(cycleCountHeadId) {
+        addInner($('cycleCountHeadId').val(),cycleCountHeadId);
+    }*/
+
     function addDetails() {
         var rows=$("#bootstrap-table").bootstrapTable('getSelections');
         if (rows.length < 1) {
@@ -487,17 +304,17 @@
         rows.forEach(function (item) {
 			ids.push(item.id);
         });
-        addInner($('#headId').val(),ids.join(','));
+        addInner($('#cycleCountHeadId').val(),ids.join(','));
     }
 
-    function addInner(headId,ids) {
+    function addInner(cycleCountHeadId,ids) {
         $.ajax({
             cache : true,
             type : "post",
             url : prefix_cycleDetails + "/add",
             data:{
-                headId:headId,
-                inventoryIds:ids
+                cycleCountHeadId:cycleCountHeadId,
+                inventoryDetailIdIds:ids
             },
             async : false,
             error : function(request) {
diff --git a/src/main/resources/templates/inventory/cycleCountDetail/addGoods.html b/src/main/resources/templates/inventory/cycleCountDetail/addGoods.html
deleted file mode 100644
index a6a4e91..0000000
--- a/src/main/resources/templates/inventory/cycleCountDetail/addGoods.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE HTML>
-<html  lang="zh" xmlns:th="http://www.thymeleaf.org">
-<meta charset="utf-8">
-<head th:include="include :: header"></head>
-<body class="white-bg">
-    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
-        <p style="color:#BEBEBE">*&nbsp;&nbsp;该页面只适用于盘点时货架上有货,库存单据中无货,盘点时需要补货的情况。系统数量默认为0!</p>
-        <form class="form-horizontal m" id="form-cyclecountDetail-addGoods" >
-            <input type="hidden" id="headId" name="headId" th:value="${headId}">
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">盘点单编号:</label>
-                <div class="col-sm-8">
-
-					<input id="code" name="code" th:value="${code}" class="form-control" type="text" readonly="readonly">
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">货主编码:</label>
-                <div class="col-sm-8">
-                    <!--<input id="companyId" name="companyId" type="hidden" th:value="*{companyId}"> -->
-                    <input id="companyCode" name="companyCode" th:value="${companyCode}" class="form-control" type="text" readonly="readonly">
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">存货编码:</label>
-                <div class="col-sm-8">
-                    <input id="materialCode" name="materialCode"  class="form-control" type="text" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')">
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">库位编码:</label>
-                <div class="col-sm-8">
-                    <input id="locationCode" name="locationCode"  class="form-control" type="text" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')">
-                </div>
-            </div>
-			<div class="form-group">	
-                <label class="col-sm-3 control-label">容器编号:</label>
-                <div class="col-sm-8">
-                    <input id="containerCode" name="containerCode"  class="form-control" type="text" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')">
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">库存状态:</label>
-                <div class="col-sm-8">
-                    <select id="inventoryStatus" name="inventoryStatus" class="form-control m-b" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}">
-                        <option th:each="dict : ${inventoryStatus}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}"></option>
-                    </select>
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">批次:</label>
-                <div class="col-sm-8">
-                    <input id="batch" name="batch"  class="form-control" type="text" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')">
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">批号:</label>
-                <div class="col-sm-8">
-                    <input id="lot" name="lot" class="form-control" type="text" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')">
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">项目号:</label>
-                <div class="col-sm-8">
-                    <input id="project" name="project"  class="form-control" type="text" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')">
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">生产日期:</label>
-                <div class="col-sm-8">
-                    <input id="manufactureDate" name="manufactureDate"  class="form-control" type="text" >
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">失效日期:</label>
-                <div class="col-sm-8">
-                    <input id="expirationDate" name="expirationDate" class="form-control" type="text">
-                </div>
-            </div>
-
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">系统数量:</label>
-                <div class="col-sm-8">
-                    <input id="systemQty" name="systemQty" value="0" class="form-control" type="text" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" readonly="readonly">
-                </div>
-            </div>
-			<div class="form-group">
-				<div class="form-control-static col-sm-offset-9">
-					<button type="submit" class="btn btn-primary">提交</button>
-					<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
-				</div>
-			</div>
-		</form>
-    </div>
-    <div th:include="include::footer"></div>
-    <script type="text/javascript">
-		var prefix = ctx + "inventory/cyclecountDetail"
-        $("#form-cyclecountDetail-addGoods").validate({
-            rules:{
-                materialCode:{
-                    required:true,
-                },
-                containerCode:{
-                    required:true,
-                },
-                locationCode:{
-                    required:true,
-                },
-                //必须填值判定
-            },
-            submitHandler: function(form) {
-                $.operate.save(prefix + "/addGoods", $('#form-cyclecountDetail-addGoods').serialize());
-            }
-        });
-		/*时间弹框*/
-        $(function () {
-            layui.use('laydate', function() {
-                var laydate = layui.laydate;
-                laydate.render({ elem: '#manufactureDate',max: 0, theme: 'molv' ,type: 'datetime'});
-                laydate.render({ elem: '#expirationDate',min: 0, theme: 'molv' ,type: 'datetime'});
-            });
-        })
-        /*function addDetail(id) {
-            addInner($('#headId').val(),id);
-        }
-        function addDetails() {
-            var rows=$("#bootstrap-table").bootstrapTable('getSelections');
-            if (rows.length < 1) {
-                $.modal.alertWarning("请先选择记录");
-                return;
-            }
-            var ids =[];
-            rows.forEach(function (item) {
-                ids.push(item.id);
-            });
-            addInner($('#headId').val(),ids.join(','));
-        }
-
-        function addInner(headId,ids) {
-            $.ajax({
-                cache : true,
-                type : "post",
-                url : prefix_cycleDetails + "/add",
-                data:{
-                    headId:headId,
-                    inventoryIds:ids
-                },
-                async : false,
-                error : function(request) {
-                    $.modal.alertError("请求失败!");
-                },
-                success : function(data) {
-                    if(data.code=="200"){
-                        $.modal.alertSuccess("成功");
-                        parent.update();
-                    }else{
-                        $.modal.alertError(data.msg)
-                    }
-                }
-            })
-        }
-
-        function isFloat( str ) {
-            for(i=0;i<str.length;i++)  {
-                if ((str.charAt(i)<"0" || str.charAt(i)>"9")&& str.charAt(i) != '.'){
-                    return false;
-                }
-            }
-            return true;
-        }*/
-	</script>
-</body>
-</html>
diff --git a/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html b/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
index 8dea881..8f0bb41 100644
--- a/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
+++ b/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
@@ -10,7 +10,7 @@
                 <ul>
                     <li>
                         <form id="cycleHeader-form">
-                            盘点主ID:<input type="text" id="cycleCountHeadId" name="cycleCountHeadId" />
+                            盘点主ID:<input type="text" id="cycleCountHeadId" name="cycleCountHeadId" readonly="readonly" />
                         </form>
                     </li>
                     <li>
@@ -350,8 +350,8 @@
     function add() {
         var cycleCountHeadId = $('#cycleCountHeadId').val();
         var companyCode = $('#companyCode').val();
-        if(cycleCountHeadId !=null && cycleCountHeadId!="" && cycleCountHeadId!=undefined && companyCode !=null && companyCode!="" && companyCode!=undefined ){
-            open("添加盘点明细", prefix+"/add?cycleCountHeadId=" + cycleCountHeadId + "&companyCode=" + companyCode);
+        if(cycleCountHeadId !=null && cycleCountHeadId!="" && cycleCountHeadId!=undefined){
+            open("添加盘点明细", prefix+"/add?cycleCountHeadId=" + cycleCountHeadId);
         }
     }
     function remove(id) {
@@ -374,16 +374,8 @@
             })
         });
     }
-    /**盘点补货*/
-    function addGoods() {
-        var headId = $('#cycleCountHeadId').val();
-        var companyCode = $('#companyCode').val();
-        //var code = $('#code').val();
-         // var url = prefix+"/addGoods";
-        $.modal.open("盘点补货",prefix+"/addGoods?headId=" + cycleCountHeadId + "&companyCode=" + companyCode );
-    }
-    //
 
+    //
     function open(title, url, width, height){
         if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {
             width = 'auto';
@@ -553,20 +545,13 @@
     /*
         剩余无差异确认
      */
-    function comfirmRemainWithNoGapQty() {
+/*    function comfirmRemainWithNoGapQty() {
         $.modal.confirm("确认剩余无差异登记么?", function() {
             var url = prefix + "/comfirmRemainWithNoGapQty";
             var data = { "cycleCountHeadId": $('#cycleCountHeadId').val() };
             postInner(url, data);
         });
-    }
-
-    /*
-        生成调整单
-     */
-    function createAdjust() {
-
-    }
+    }*/
 
     /*
         差异复盘
diff --git a/src/main/resources/templates/inventory/cycleCountDetail/edit.html b/src/main/resources/templates/inventory/cycleCountDetail/edit.html
deleted file mode 100644
index 87f831e..0000000
--- a/src/main/resources/templates/inventory/cycleCountDetail/edit.html
+++ /dev/null
@@ -1,188 +0,0 @@
-<!DOCTYPE HTML>
-<html  lang="zh" xmlns:th="http://www.thymeleaf.org">
-<meta charset="utf-8">
-<head th:include="include :: header"></head>
-<body class="white-bg">
-    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
-        <form class="form-horizontal m" id="form-cyclecountDetail-edit" th:object="${cyclecountDetail}">
-            <input id="id" name="id" th:field="*{id}"  type="hidden">
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">盘点单编码:</label>
-                <div class="col-sm-8">
-                    <input id="inventoryCode" name="inventoryCode" th:field="*{inventoryCode}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">公司id:</label>
-                <div class="col-sm-8">
-                    <input id="companyId" name="companyId" th:field="*{companyId}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">库位id:</label>
-                <div class="col-sm-8">
-                    <input id="locationId" name="locationId" th:field="*{locationId}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">库位编码:</label>
-                <div class="col-sm-8">
-                    <input id="locationCode" name="locationCode" th:field="*{locationCode}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">物料Id:</label>
-                <div class="col-sm-8">
-                    <input id="materialId" name="materialId" th:field="*{materialId}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">存货编码:</label>
-                <div class="col-sm-8">
-                    <input id="materialCode" name="materialCode" th:field="*{materialCode}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">入库单编码:</label>
-                <div class="col-sm-8">
-                    <input id="receiptCode" name="receiptCode" th:field="*{receiptCode}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">入库单id:</label>
-                <div class="col-sm-8">
-                    <input id="receiptId" name="receiptId" th:field="*{receiptId}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">入库单明细id:</label>
-                <div class="col-sm-8">
-                    <input id="receiptDetailId" name="receiptDetailId" th:field="*{receiptDetailId}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">批次:</label>
-                <div class="col-sm-8">
-                    <input id="batch" name="batch" th:field="*{batch}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">批号:</label>
-                <div class="col-sm-8">
-                    <input id="lot" name="lot" th:field="*{lot}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">项目号:</label>
-                <div class="col-sm-8">
-                    <input id="project" name="project" th:field="*{project}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">生产日期:</label>
-                <div class="col-sm-8">
-                    <input id="manufactureDate" name="manufactureDate" th:field="*{manufactureDate}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">失效日期:</label>
-                <div class="col-sm-8">
-                    <input id="expirationDate" name="expirationDate" th:field="*{expirationDate}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">库存状态:</label>
-                <div class="col-sm-8">
-                    <input id="inventoryStatus" name="inventoryStatus" th:field="*{inventoryStatus}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">系统数量:</label>
-                <div class="col-sm-8">
-                    <input id="systemQty" name="systemQty" th:field="*{systemQty}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">实际盘点数量:</label>
-                <div class="col-sm-8">
-                    <input id="countedQty" name="countedQty" th:field="*{countedQty}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">差异数量:</label>
-                <div class="col-sm-8">
-                    <input id="gapQty" name="gapQty" th:field="*{gapQty}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">创建时间:</label>
-                <div class="col-sm-8">
-                    <input id="created" name="created" th:field="*{created}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">创建用户:</label>
-                <div class="col-sm-8">
-                    <input id="createdBy" name="createdBy" th:field="*{createdBy}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">更新时间:</label>
-                <div class="col-sm-8">
-                    <input id="lastUpdated" name="lastUpdated" th:field="*{lastUpdated}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">更新用户:</label>
-                <div class="col-sm-8">
-                    <input id="lastUpdatedBy" name="lastUpdatedBy" th:field="*{lastUpdatedBy}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">是否有效:</label>
-                <div class="col-sm-8">
-                    <input id="enable" name="enable" th:field="*{enable}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">自定义字段1:</label>
-                <div class="col-sm-8">
-                    <input id="userDef1" name="userDef1" th:field="*{userDef1}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">自定义字段2:</label>
-                <div class="col-sm-8">
-                    <input id="userDef2" name="userDef2" th:field="*{userDef2}" class="form-control" type="text">
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">自定义字段3:</label>
-                <div class="col-sm-8">
-                    <input id="userDef3" name="userDef3" th:field="*{userDef3}" class="form-control" type="text">
-                </div>
-            </div>
-			<div class="form-group">
-				<div class="form-control-static col-sm-offset-9">
-					<button type="submit" class="btn btn-primary">提交</button>
-					<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
-				</div>
-			</div>
-		</form>
-    </div>
-    <div th:include="include::footer"></div>
-    <script type="text/javascript">
-		var prefix = ctx + "inventory/cyclecountDetail"
-		$("#form-cyclecountDetail-edit").validate({
-			rules:{
-				xxxx:{
-					required:true,
-				},
-			},
-			submitHandler: function(form) {
-				$.operate.save(prefix + "/edit", $('#form-cyclecountDetail-edit').serialize());
-			}
-		});
-	</script>
-</body>
-</html>
diff --git a/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html b/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
index 6182cb4..2051148 100644
--- a/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
+++ b/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
@@ -272,7 +272,7 @@
                         var actions = [];
                         actions.push('<a class="btn btn-success btn-xs " href="#" onclick="cyclecountPrint(\'' + row.id + '\')"><i class="fa fa-print"></i>打印</a> ');
 
-                        actions.push('<a class="btn btn-warning btn-xs " href="#" onclick="goAdjust(\'' + row.id + '\')"><i class="fa fa-gbp"></i>生成差异单</a> ');
+                        actions.push('<a class="btn btn-warning btn-xs " href="#" onclick="goAdjust(\'' + row.id + '\')"><i class="fa fa-gbp"></i>生成调整单</a> ');
 
                         //actions.push('<a class="btn btn-info btn-xs " href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                         actions.push('<a class="btn btn-danger btn-xs " href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a> ');