diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
index a7ce8a9..d4592c2 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
@@ -14,7 +14,6 @@ import com.huaheng.framework.web.page.TableDataInfo;
 import com.huaheng.framework.web.page.TableSupport;
 import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
 import com.huaheng.pc.inventory.adjustDetail.service.AdjustDetailService;
-
 import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java
index fb36eb4..a467c4b 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 import lombok.Data;
 
@@ -142,21 +143,21 @@ public class AdjustDetail implements Serializable {
      */
     @TableField(value = "fromQty")
     @ApiModelProperty(value="调整前的数量")
-    private Integer fromQty;
+    private BigDecimal fromQty;
 
     /**
      * 调整后的数量 
      */
     @TableField(value = "toQty")
     @ApiModelProperty(value="调整后的数量 ")
-    private Integer toQty;
+    private BigDecimal toQty;
 
     /**
      * 调整变动数量 
      */
     @TableField(value = "gapQty")
     @ApiModelProperty(value="调整变动数量 ")
-    private Integer gapQty;
+    private BigDecimal gapQty;
 
     /**
      * 状态 -0-待调整 1-已调整 2-未批准 3-已批准
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java
index cd088f4..00b7c60 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java
@@ -1,10 +1,14 @@
 package com.huaheng.pc.inventory.adjustDetail.service;
 
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
-import com.huaheng.pc.inventory.adjustDetail.mapper.AdjustDetailMapper;
-@Service
-public class AdjustDetailService extends ServiceImpl<AdjustDetailMapper, AdjustDetail> {
+
+
+
+public interface AdjustDetailService extends IService<AdjustDetail> {
+
+
 
 }
+
+
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java
new file mode 100644
index 0000000..51de3d6
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java
@@ -0,0 +1,10 @@
+package com.huaheng.pc.inventory.adjustDetail.service;
+
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
+import com.huaheng.pc.inventory.adjustDetail.mapper.AdjustDetailMapper;
+@Service
+public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, AdjustDetail> implements AdjustDetailService {
+
+}
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java b/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java
index 6c8e9c4..451857d 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java
@@ -13,8 +13,10 @@ 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.adjustDetail.service.AdjustDetailService;
+import com.huaheng.pc.inventory.adjustDetail.service.AdjustDetailServiceImpl;
 import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
 import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService;
+import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderServiceImpl;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustHeader/mapper/AdjustHeaderMapper.java b/src/main/java/com/huaheng/pc/inventory/adjustHeader/mapper/AdjustHeaderMapper.java
index 4e8fd0f..886bec6 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustHeader/mapper/AdjustHeaderMapper.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/mapper/AdjustHeaderMapper.java
@@ -4,4 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
 
 public interface AdjustHeaderMapper extends BaseMapper<AdjustHeader> {
+
+
+    String getLastCode();
+
+
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderService.java b/src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderService.java
index 69cc150..3709d1c 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderService.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderService.java
@@ -1,10 +1,18 @@
 package com.huaheng.pc.inventory.adjustHeader.service;
 
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
-import com.huaheng.pc.inventory.adjustHeader.mapper.AdjustHeaderMapper;
-@Service
-public class AdjustHeaderService extends ServiceImpl<AdjustHeaderMapper, AdjustHeader> {
+import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
+
+
+public interface AdjustHeaderService extends IService<AdjustHeader> {
+
+
+    String createCode();
+
+
+
 
 }
+
+
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderServiceImpl.java
new file mode 100644
index 0000000..cb273b8
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderServiceImpl.java
@@ -0,0 +1,49 @@
+package com.huaheng.pc.inventory.adjustHeader.service;
+
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
+import com.huaheng.pc.inventory.adjustHeader.mapper.AdjustHeaderMapper;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Service
+public class AdjustHeaderServiceImpl extends ServiceImpl<AdjustHeaderMapper, AdjustHeader> implements AdjustHeaderService {
+
+
+    @Resource
+    private AdjustHeaderMapper adjustHeaderMapper;
+
+
+
+
+
+
+    //生成差异单号
+    @Override
+    public String createCode() {
+        String code;
+        Date now = new Date();
+        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
+        String maxCode =  adjustHeaderMapper.getLastCode();;
+        //如果指定类型的最后的code存在,并且日期一致。那么 code = 单类型 + 年月日 + (排序号 + 1)
+        if (maxCode != null && maxCode.substring(maxCode.length() - 13, maxCode.length() - 5).equals(df.format(now)))
+        {
+            Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length()));
+            code = "CY" + df.format(now) + String.format("%05d", Count + 1);
+        }
+        else
+        {
+            code = "CY" + df.format(now) + "00001";
+        }
+        return code;
+    }
+
+
+
+
+
+
+}
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 fd1b908..e762f6d 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
@@ -14,8 +14,9 @@ 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.cycleCountHeader.domain.CycleCountHeader;
+import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailServiceImpl;
 import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
+import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderServiceImpl;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -23,7 +24,6 @@ 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;
 
 
@@ -57,7 +57,7 @@ public class CycleCountDetailController extends BaseController {
     @PostMapping("/list")
     @Log(title = "库存-盘点",operating = "查看盘点明细", action = BusinessType.GRANT)
     @ResponseBody
-    public TableDataInfo list(CycleCountDetail cycleCountDetail, String createdBegin, String createdEnd) {
+    public TableDataInfo list(CycleCountDetail cycleCountDetail, String createdBegin, String createdEnd) throws IllegalAccessException {
 
         LambdaQueryWrapper<CycleCountDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
         PageDomain pageDomain = TableSupport.buildPageRequest();
@@ -92,7 +92,7 @@ public class CycleCountDetailController extends BaseController {
             IPage<CycleCountDetail> iPage = cycleCountDetailService.page(page, lambdaQueryWrapper);
             return getMpDataTable(iPage.getRecords(), iPage.getTotal());
         } else {
-            List<CycleCountDetail> list = cycleCountDetailService.list(lambdaQueryWrapper);
+            List<CycleCountDetail> list  = cycleCountDetailService.list(lambdaQueryWrapper);
             return getDataTable(list);
         }
 
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/domain/CycleCountDetail.java b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/domain/CycleCountDetail.java
index d770af4..31ab4bb 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/domain/CycleCountDetail.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/domain/CycleCountDetail.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 @ApiModel(value="com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail")
@@ -122,21 +123,21 @@ public class CycleCountDetail implements Serializable {
      */
     @TableField(value = "systemQty")
     @ApiModelProperty(value="系统数量")
-    private Long systemQty;
+    private BigDecimal systemQty;
 
     /**
      * 实盘数量
      */
     @TableField(value = "countedQty")
     @ApiModelProperty(value="实盘数量")
-    private Long countedQty;
+    private BigDecimal countedQty;
 
     /**
      * 差异数量
      */
     @TableField(value = "gapQty")
     @ApiModelProperty(value="差异数量")
-    private Long gapQty;
+    private BigDecimal gapQty;
 
     /**
      * 失败原因
@@ -562,52 +563,27 @@ public class CycleCountDetail implements Serializable {
         this.inventorySts = inventorySts;
     }
 
-    /**
-     * 获取系统数量
-     *
-     * @return systemQty - 系统数量
-     */
-    public Long getSystemQty() {
+    public BigDecimal getSystemQty() {
         return systemQty;
     }
 
-    /**
-     * 设置系统数量
-     *
-     * @param systemQty 系统数量
-     */
-    public void setSystemQty(Long systemQty) {
+    public void setSystemQty(BigDecimal systemQty) {
         this.systemQty = systemQty;
     }
 
-    /**
-     * 获取实盘数量
-     *
-     * @return countedQty - 实盘数量
-     */
-    public Long getCountedQty() {
+    public BigDecimal getCountedQty() {
         return countedQty;
     }
 
-    /**
-     * 设置实盘数量
-     *
-     * @param countedQty 实盘数量
-     */
-    public void setCountedQty(Long countedQty) {
+    public void setCountedQty(BigDecimal countedQty) {
         this.countedQty = countedQty;
     }
 
-    /**
-     * 获取调整数量
-     *
-     * @return gapQty- 调整数量
-     */
-    public Long getGapQty() {
+    public BigDecimal getGapQty() {
         return gapQty;
     }
 
-    public void setGapQty(Long gapQty) {
+    public void setGapQty(BigDecimal gapQty) {
         this.gapQty = gapQty;
     }
 
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 37fab40..aba817a 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,10 +1,14 @@
 package com.huaheng.pc.inventory.cycleCountDetail.service;
 
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.huaheng.pc.inventory.cycleCountDetail.mapper.CycleCountDetailMapper;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
-@Service
-public class CycleCountDetailService extends ServiceImpl<CycleCountDetailMapper, CycleCountDetail> {
+import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
+
+
+public interface CycleCountDetailService extends IService<CycleCountDetail> {
+
+
 
 }
+
+
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
new file mode 100644
index 0000000..50ee0e8
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
@@ -0,0 +1,15 @@
+package com.huaheng.pc.inventory.cycleCountDetail.service;
+
+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;
+@Service
+public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMapper, CycleCountDetail> implements CycleCountDetailService {
+
+
+
+
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java
index 246ac4c..6c65101 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/controller/CycleCountHeaderController.java
@@ -4,29 +4,32 @@ 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.inventory.adjustHeader.domain.AdjustHeader;
 import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService;
+import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderServiceImpl;
+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.inventoryDetail.domain.InventoryDetail;
+import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderServiceImpl;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 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 javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -92,11 +95,114 @@ public class CycleCountHeaderController extends BaseController {
         }
 
     }
+    /**
+     * 新增盘点单主
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
 
+    /**
+     * 新增保存盘点单主
+     */
+    //@RequiresPermissions("inventory:cycleCount:add")
+    @Log(title = "库存-盘点",operating = "新增盘点主单", action = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(CycleCountHeader cycleCountHeader)
+    {
 
+        cycleCountHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        //cycleCountHeader.setCompanyCode(cycleCountHeader.getCompanyCode());
+        //cycleCountHeader.setRound(cycleCountHeader.getRound());//盘点轮次
+        cycleCountHeader.setCreated(new Date());
+        cycleCountHeader.setCreatedBy(ShiroUtils.getLoginName());
+        cycleCountHeader.setMasterCode(cycleCountHeaderService.createCode());
+        return toAjax(cycleCountHeaderService.save(cycleCountHeader));
+    }
 
+    /**
+     * 修改盘点单主
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Integer id, ModelMap mmap)
+    {
+        CycleCountHeader cyclecountHeader = cycleCountHeaderService.getById(id);
+        mmap.put("cyclecountHeader", cyclecountHeader);
+        return prefix + "/edit";
+    }
 
+    /**
+     * 修改保存盘点单主
+     */
+    //@RequiresPermissions("inventory:cycleCount:edit")
+    @Log(title = "库存-盘点",operating = "修改盘点主单", action = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(CycleCountHeader cycleCountHeader)
+    {
+        cycleCountHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
+        cycleCountHeader.setLastUpdated(new Date());
+        return toAjax(cycleCountHeaderService.saveOrUpdate(cycleCountHeader));
+    }
 
+    /**
+     * 删除盘点单主
+     */
+    //@RequiresPermissions("inventory:cycleCount:remove")
+    @Log(title = "库存-盘点",operating = "删除盘点主单", action = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        if (StringUtils.isEmpty(ids))
+            return AjaxResult.error("id不能为空");
+        for (Integer id : Convert.toIntArray(ids))
+        {
+            AjaxResult result = cycleCountHeaderService.delete(id);
+            if(result.code!=200){
+                return result;
+            }
+        }
+        return AjaxResult.success("删除成功!");
+    }
+
+    /**
+     *
+     * 生成差异调整单
+     * */
+    //@RequiresPermissions("inventory:cyclecountHead:addAdjust")
+    @Log(title = "库存-盘点", operating = "新增盘点差异调整单", action = BusinessType.INSERT)
+    @PostMapping("/goAdjust")
+    @ResponseBody
+    public AjaxResult goAdjust(int id)
+    {
+        return (cycleCountHeaderService.insertByAdjust(id));
+    }
+
+
+    /**
+     *  盘点单报表打印
+     * @return
+     */
+    //@RequiresPermissions("inventory:cycleCount:report")
+    @GetMapping("/report/{id}")
+    public String report(@PathVariable("id") Integer id, ModelMap mmap)
+    {
+        CycleCountHeader cyclecountHeader = cycleCountHeaderService.getById(id);
+        mmap.put("cyclecountHeader", cyclecountHeader);
+
+        CycleCountDetail condition = new CycleCountDetail();
+        condition.setCycleCountHeadId(id);
+        condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        LambdaQueryWrapper lambda = Wrappers.lambdaQuery(condition);
+        List<CycleCountDetail> details =  cycleCountDetailService.list(lambda);
+        mmap.put("details", details);
+
+        return prefix + "/report";
+    }
 
 
 
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/domain/CycleCountHeader.java b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/domain/CycleCountHeader.java
index 62d04d1..1270805 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/domain/CycleCountHeader.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/domain/CycleCountHeader.java
@@ -59,7 +59,7 @@ public class CycleCountHeader implements Serializable {
      */
     @TableField(value = "countType")
     @ApiModelProperty(value="盘点类型")
-    private Integer countType;
+    private String countType;
 
     /**
      * 盘点状态
@@ -342,21 +342,11 @@ public class CycleCountHeader implements Serializable {
         this.companyCode = companyCode;
     }
 
-    /**
-     * 获取盘点类型
-     *
-     * @return countType - 盘点类型
-     */
-    public Integer getCountType() {
+    public String getCountType() {
         return countType;
     }
 
-    /**
-     * 设置盘点类型
-     *
-     * @param countType 盘点类型
-     */
-    public void setCountType(Integer countType) {
+    public void setCountType(String countType) {
         this.countType = countType;
     }
 
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/mapper/CycleCountHeaderMapper.java b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/mapper/CycleCountHeaderMapper.java
index eb334c1..e768932 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/mapper/CycleCountHeaderMapper.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/mapper/CycleCountHeaderMapper.java
@@ -4,4 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
 
 public interface CycleCountHeaderMapper extends BaseMapper<CycleCountHeader> {
+
+    String getLastCode();
+
+
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderService.java b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderService.java
index 2f5df02..8a0e3ee 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderService.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderService.java
@@ -1,12 +1,23 @@
 package com.huaheng.pc.inventory.cycleCountHeader.service;
 
-import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import java.util.List;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
-import com.huaheng.pc.inventory.cycleCountHeader.mapper.CycleCountHeaderMapper;
-@Service
-public class CycleCountHeaderService extends ServiceImpl<CycleCountHeaderMapper, CycleCountHeader> {
+
+
+public interface CycleCountHeaderService extends IService<CycleCountHeader> {
+
+
+    String createCode();
+    //生成调整单
+    AjaxResult insertByAdjust(Integer headId);
+
+    AjaxResult delete(Integer id);
+
+
+
+
 
 }
+
+
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java
new file mode 100644
index 0000000..b5e0949
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java
@@ -0,0 +1,184 @@
+package com.huaheng.pc.inventory.cycleCountHeader.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huaheng.common.exception.service.ServiceException;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.config.warehouse.domain.Warehouse;
+import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
+import com.huaheng.pc.inventory.adjustDetail.service.AdjustDetailService;
+import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
+import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService;
+import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
+import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.security.SecureRandomSpi;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.WeakHashMap;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
+import com.huaheng.pc.inventory.cycleCountHeader.mapper.CycleCountHeaderMapper;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+public class CycleCountHeaderServiceImpl extends ServiceImpl<CycleCountHeaderMapper, CycleCountHeader> implements CycleCountHeaderService {
+
+
+    @Resource
+    private CycleCountHeaderMapper cycleCountHeaderMapper;
+    @Resource
+    private CycleCountDetailService cycleCountDetailService;
+    @Resource
+    private AdjustHeaderService adjustHeaderService;
+    @Resource
+    private AdjustDetailService adjustDetailService;
+
+
+
+
+
+
+
+
+    /**
+     * 生成盘点单主Code
+     * @return
+     */
+    @Override
+    public String createCode() {
+        String code;
+        Date now = new Date();
+        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
+        String maxCode =  cycleCountHeaderMapper.getLastCode();;
+        //如果指定类型的最后的code存在,并且日期一致。那么 code = 单类型 + 年月日 + (排序号 + 1)
+        if (maxCode != null && maxCode.substring(maxCode.length() - 13, maxCode.length() - 5).equals(df.format(now)))
+        {
+            Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5));
+            code = "PD" + df.format(now) + String.format("%05d", Count + 1);
+        }
+        else
+        {
+            code = "PD" + df.format(now) + "00001";
+        }
+        return code;
+    }
+
+    /**
+     * 删除单据
+     * @param id
+     * @return
+     */
+    @Override
+    public AjaxResult delete(Integer id) {
+
+        CycleCountHeader cyclecountHeader = this.getById(id);
+        if(cyclecountHeader==null){
+            return AjaxResult.error("id为"+id.toString()+"的盘点单不存在出,操作中止");
+        }
+        if(cyclecountHeader.getStatusCyc() > 0){
+            return AjaxResult.error("盘点单:"+cyclecountHeader.getMasterCode()+"非新建状态,无法删除,操作中止");
+        }
+        //批量删除子单据
+        CycleCountDetail temp = new CycleCountDetail();
+        temp.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        temp.setCycleCountHeadId(cyclecountHeader.getId());
+        LambdaQueryWrapper lm = Wrappers.lambdaQuery(temp);
+        cycleCountDetailService.remove(lm);
+        cycleCountHeaderMapper.deleteById(id);
+        return AjaxResult.success("盘点主单和明细删除成功");
+
+    }
+
+    /**
+     * 新增盘点差异调整单
+     * */
+    @Transactional
+    public AjaxResult insertByAdjust(Integer id) {
+
+        /*获取盘点主单ID生成差异调整单,根据主单ID获取明细条目,再根据明细条目差异数量是否为0生成差异调整详单*/
+        //1 根据盘点单ID生成差异调整主单,2 下一步根据盘点主单ID查询盘点明细的条目数据,
+        //3 for循环明细条目,同时依据差异数据是否为0来决定是否生成差异单,同步写入调整单详细。
+
+        //查询该条盘点单头 id
+        CycleCountHeader cyclecountHeader = cycleCountHeaderMapper.selectById(id);
+
+        if(cyclecountHeader.getStatusCyc() >= 35){
+            //查询是否已生成差异单
+            throw new ServiceException("该条盘点单无法生成调整单,请检查状态!");
+        }
+
+        AdjustHeader adjustHeader = new AdjustHeader();
+        adjustHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());//仓库
+        adjustHeader.setCode(adjustHeaderService.createCode());//生成差异单号
+        adjustHeader.setProblemType("盘点调整");
+        adjustHeader.setCycleCountCode(cyclecountHeader.getMasterCode());
+        adjustHeader.setCompanyCode(cyclecountHeader.getCompanyCode());
+        adjustHeader.setCreated(new Date());
+        adjustHeader.setCreatedBy(ShiroUtils.getLoginName());
+        //adjustHeader.setStatus(10);//新建未上传
+        //先创建调整单头
+        adjustHeaderService.save(adjustHeader);
+
+        //根据盘点单查询明细并写入调整单
+        CycleCountDetail cycleCountDetail = new CycleCountDetail();
+        cycleCountDetail.setCycleCountHeadId(id);
+        cycleCountDetail.setWarehouseCode(cyclecountHeader.getWarehouseCode());
+        LambdaQueryWrapper lam = Wrappers.lambdaQuery(cycleCountDetail);
+        List<CycleCountDetail> cycleCountDetailList = cycleCountDetailService.list(lam);
+        //找到刚刚生成的调整主单
+        //AdjustHeader adjust = adjustHeaderService.getById(adjustHeader.getId());
+        //循环明细条目,查找符合条件的数据写入调整单明细
+        AdjustDetail adjustDetail = new AdjustDetail();
+        for(CycleCountDetail item:cycleCountDetailList){
+            //BigDecimal的比较  .compareTo(BigDecimal.ZERO) != 0
+            if(item.getGapQty().compareTo(BigDecimal.ZERO) != 0){
+                //比较差异数量不为0的就生成差异单
+                adjustDetail.setAdjustCode(adjustHeader.getCode());
+                adjustDetail.setWarehouseCode(adjustHeader.getWarehouseCode());
+                adjustDetail.setCompanyCode(adjustHeader.getCompanyCode());
+                adjustDetail.setLocationCode(item.getLocationCode());
+                adjustDetail.setContainerCode(item.getContainerCode());
+                adjustDetail.setCycleCountCode(cyclecountHeader.getMasterCode());
+                adjustDetail.setMaterialCode(item.getMaterialCode());
+                adjustDetail.setMaterialName(item.getMaterialName());
+                adjustDetail.setMaterialSpec(item.getMaterialSpec());
+                adjustDetail.setMaterialUnit(item.getMaterialUnit());
+                adjustDetail.setCycleDetailId(item.getId());
+                adjustDetail.setProblemType("盘点调整");
+                adjustDetail.setToInventorySts(item.getInventorySts());//盘点不涉及属性
+                adjustDetail.setFromInventorySts(item.getInventorySts());
+                adjustDetail.setFromQty(item.getSystemQty());//调整前数量
+                adjustDetail.setToQty(null);//调整后数量
+                adjustDetail.setGapQty(item.getGapQty());//调整数量
+                adjustDetail.setCreated(new Date());
+                adjustDetail.setCreatedBy(ShiroUtils.getLoginName());
+                //adjustDetail.setStatus(0);//状态
+
+                adjustDetailService.save(adjustDetail);
+            }
+
+        }
+
+        //修改盘点主单状态为已生成差异单
+
+        cyclecountHeader.setStatusCyc(35);
+        this.saveOrUpdate(cyclecountHeader);
+
+        return AjaxResult.success("差异调整及明细单生成完毕!");
+    }
+
+
+
+
+
+
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
index 4990101..dd5326b 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
@@ -21,7 +21,10 @@ import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
 import com.huaheng.pc.shipment.shippingCombination.domain.ShippingSearch;
 import com.huaheng.pc.shipment.shippingCombination.service.ShippingCombinationService;
+import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
+import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
 import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel;
+import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -58,6 +61,8 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
     private ShippingCombinationService shippingCombinationService;
     @Autowired
     private TaskHeaderService taskHeaderService;
+    @Autowired
+    private TaskDetailService taskDetailService;
 
 
     @Override
@@ -106,24 +111,26 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
         Location location = locationService.getOne(lambdaQueryWrapper);
         if (location == null)
             throw new ServiceException("库位 "+ inventoryDetail.getLocationCode() +" 不存在");
-        if (location.getStatus().equals("lock"))    {
-            //如果库位状态是锁定的话,就查找出库组盘表,如果存在未下发
-            LambdaQueryWrapper<ShipmentContainerHeader> lam=Wrappers.lambdaQuery();
-            lam.eq(ShipmentContainerHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
-                    .eq(ShipmentContainerHeader::getContainerCode,location.getContainerCode())
-                    .eq(ShipmentContainerHeader::getTaskCreated,0);
-            ShipmentContainerHeader shipmentContainerHeader = this.getOne(lam);
-            if (shipmentContainerHeader == null)    {
-                throw new ServiceException("库位已经锁定不能使用");
-            }
-        }
+//        if (location.getStatus().equals("lock"))    {
+//            //如果库位状态是锁定的话,就查找出库组盘表,如果存在未下发
+//            LambdaQueryWrapper<ShipmentContainerHeader> lam=Wrappers.lambdaQuery();
+//            lam.eq(ShipmentContainerHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
+//                    .eq(ShipmentContainerHeader::getContainerCode,location.getContainerCode())
+//                    .eq(ShipmentContainerHeader::getTaskCreated,0);
+//            ShipmentContainerHeader shipmentContainerHeader = this.getOne(lam);
+//            if (shipmentContainerHeader == null)    {
+//                throw new ServiceException("库位已经锁定不能使用");
+//            }
+//        }
 
         //更新库存分配数
         inventoryDetail.setTaskQty(inventoryDetail.getTaskQty().add(shipmentCombinationModel.getShipQty()));
         inventoryDetailService.saveOrUpdate(inventoryDetail);
         //获取库位,然后锁定
-        location.setStatus("lock");
-        locationService.saveOrUpdate(location);
+        if(location.getStatus().equals("empty")) {
+            location.setStatus("lock");
+            locationService.saveOrUpdate(location);
+        }
         //更新单据明细的已出库数量
         shipmentDetail.setRequestQty(shipmentDetail.getRequestQty().add(shipmentCombinationModel.getShipQty()));
         int i = shipmentDetail.getShipQty().compareTo(shipmentDetail.getRequestQty());
@@ -166,20 +173,19 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
         LambdaQueryWrapper<ShipmentContainerHeader> lambdaQueryWrapper=Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(ShipmentContainerHeader::getContainerCode,location.getContainerCode())
                 .eq(ShipmentContainerHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
-                .eq(ShipmentContainerHeader::getTaskCreated,1)
-                .eq(ShipmentContainerHeader::getStatus,10);
+                .le(ShipmentContainerHeader::getStatus,20);
         ShipmentContainerHeader shipmentContainerHeader = this.getOne(lambdaQueryWrapper);
         if(shipmentContainerHeader != null)  {
-            throw new ServiceException("容器"+location.getContainerCode()+"已经生成任务,不能再添加明细;操作中止;");
+            return shipmentContainerHeader;
         }
         else {
-            LambdaQueryWrapper<ShipmentContainerHeader> lam=Wrappers.lambdaQuery();
-            lam.eq(ShipmentContainerHeader::getContainerCode,location.getContainerCode())
-                    .eq(ShipmentContainerHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
-                    .eq(ShipmentContainerHeader::getTaskCreated,0)
-                    .eq(ShipmentContainerHeader::getStatus,0);
-            shipmentContainerHeader = this.getOne(lam);
-            if (shipmentContainerHeader == null) {
+//            LambdaQueryWrapper<ShipmentContainerHeader> lam=Wrappers.lambdaQuery();
+//            lam.eq(ShipmentContainerHeader::getContainerCode,location.getContainerCode())
+//                    .eq(ShipmentContainerHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
+//                    .eq(ShipmentContainerHeader::getTaskCreated,0)
+//                    .eq(ShipmentContainerHeader::getStatus,0);
+//            shipmentContainerHeader = this.getOne(lam);
+//            if (shipmentContainerHeader == null) {
                 shipmentContainerHeader = new ShipmentContainerHeader();
                 shipmentContainerHeader.setContainerCode(location.getContainerCode());
                 shipmentContainerHeader.setLocationCode(location.getCode());
@@ -194,9 +200,9 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
 //            material.setCode(shipmentDetail.getMaterialCode());
 //            shipmentContainerHeader.setZoneCode(materialService.selectFirstEntity(material).getZoneCode());
                 this.save(shipmentContainerHeader);
+            return shipmentContainerHeader;
             }
-        }
-        return shipmentContainerHeader;
+//        }
     }
 
     /**
@@ -246,6 +252,45 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
             shipmentContainerDetail.setCreatedBy(ShiroUtils.getLoginName());
             shipmentContainerDetailService.save(shipmentContainerDetail);
         }
+
+        //
+        if(shipmentContainerHeader.getStatus()<=10){
+            LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper=Wrappers.lambdaQuery();
+            taskHeaderLambdaQueryWrapper.eq(TaskHeader::getWarehouseCode,shipmentContainerHeader.getWarehouseCode())
+                    .eq(TaskHeader::getInternalTaskType,200)
+                    .eq(TaskHeader::getAllocationHeadId,shipmentContainerHeader.getId());
+            TaskHeader taskHeader=taskHeaderService.getOne(taskHeaderLambdaQueryWrapper);
+            if(taskHeader==null){
+                throw new ServiceException("找不到相应的任务头");
+            }
+            TaskDetail taskDetail = new TaskDetail();
+            taskDetail.setTaskId(taskHeader.getId());
+            taskDetail.setInternalTaskType(taskHeader.getInternalTaskType());
+            taskDetail.setWarehouseCode(taskHeader.getWarehouseCode());
+            taskDetail.setCompanyCode(taskHeader.getCompanyCode());
+            taskDetail.setTaskType(taskHeader.getTaskType());
+            taskDetail.setAllocationId(shipmentContainerDetail.getId());
+            taskDetail.setBillCode(shipmentContainerDetail.getShipmentCode());
+            taskDetail.setBillDetailId(shipmentContainerDetail.getShipmentDetailId());
+            taskDetail.setMaterialCode(shipmentContainerDetail.getMaterialCode());
+            taskDetail.setMaterialName(shipmentContainerDetail.getMaterialName());
+            taskDetail.setMaterialSpec(shipmentContainerDetail.getMaterialSpec());
+            taskDetail.setMaterialUnit(shipmentContainerDetail.getMaterialUnit());
+            taskDetail.setFromInventoryId(shipmentContainerDetail.getInventoryId());
+            taskDetail.setQty(shipmentContainerDetail.getQty());
+            taskDetail.setContainerCode(taskHeader.getContainerCode());
+            taskDetail.setFromLocation(taskHeader.getFromLocation());
+            taskDetail.setToLocation(taskHeader.getToLocation());
+            if(shipmentContainerHeader.getStatus()==10) {
+                taskDetail.setStatus(0);
+            }else {
+                taskDetail.setStatus(10);
+            }
+            taskDetail.setTaskType(taskHeader.getTaskType());
+            taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+            taskDetail.setLastUpdated(null);
+            taskDetailService.save(taskDetail);
+        }
         return shipmentContainerDetail;
     }
 
diff --git a/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetail.java b/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetail.java
index c65d492..b13e2ea 100644
--- a/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetail.java
+++ b/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetail.java
@@ -63,7 +63,7 @@ public class TaskDetail implements Serializable {
      */
     @TableField(value = "allocationId")
     @ApiModelProperty(value="组盘子id")
-    private String allocationId;
+    private Integer allocationId;
 
     /**
      * 单据编码
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java b/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
index 1c676ff..6e94931 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
@@ -43,6 +43,13 @@ public class TaskHeader implements Serializable {
     private Integer taskType;
 
     /**
+     * 入库或出库组盘头ID
+     */
+    @TableField(value = "allocationHeadId")
+    @ApiModelProperty(value="入库或出库组盘头ID")
+    private Integer allocationHeadId;
+
+    /**
      * 内部类型
      */
     @TableField(value = "internalTaskType")
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 8c7e500..caf80f5 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
@@ -172,12 +172,13 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 task.setToLocation("");
             }
         }
+        task.setInternalTaskType(200);
+        task.setAllocationHeadId(shipmentContainerHeader.getId());
         task.setWarehouseCode(shipmentContainerHeader.getWarehouseCode());
         task.setCompanyCode(shipmentContainerHeader.getCompanyCode());
-        task.setInternalTaskType(null);
         task.setAssignedUser(ShiroUtils.getLoginName());
         task.setConfirmedBy(ShiroUtils.getLoginName());
-        task.setStatus(1);
+        task.setStatus(0);
         task.setContainerCode(shipmentContainerHeader.getContainerCode());
         task.setCreatedBy(ShiroUtils.getLoginName());
         task.setCreated(new Date());
@@ -188,9 +189,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         for (ShipmentContainerDetail shipmentContainerDetail : shipmentContainerDetails) {
             TaskDetail taskDetail = new TaskDetail();
             taskDetail.setTaskId(task.getId());
+            taskDetail.setInternalTaskType(task.getInternalTaskType());
             taskDetail.setWarehouseCode(task.getWarehouseCode());
             taskDetail.setCompanyCode(task.getCompanyCode());
             taskDetail.setTaskType(task.getTaskType());
+            taskDetail.setAllocationId(shipmentContainerDetail.getId());
             taskDetail.setBillCode(shipmentContainerDetail.getShipmentCode());
             taskDetail.setBillDetailId(shipmentContainerDetail.getShipmentDetailId());
             taskDetail.setMaterialCode(shipmentContainerDetail.getMaterialCode());
@@ -202,7 +205,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             taskDetail.setContainerCode(task.getContainerCode());
             taskDetail.setFromLocation(task.getFromLocation());
             taskDetail.setToLocation(task.getToLocation());
-            taskDetail.setStatus(1);
+            taskDetail.setStatus(0);
             taskDetail.setTaskType(task.getTaskType());
             taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
             taskDetail.setLastUpdated(null);
diff --git a/src/main/resources/mybatis/inventory/AdjustHeaderMapper.xml b/src/main/resources/mybatis/inventory/AdjustHeaderMapper.xml
index 313341b..8da3b74 100644
--- a/src/main/resources/mybatis/inventory/AdjustHeaderMapper.xml
+++ b/src/main/resources/mybatis/inventory/AdjustHeaderMapper.xml
@@ -25,4 +25,12 @@
     id, code, warehouseCode, companyCode, problemType, cycleCountCode, checkCode,
     referCode, referReason, createdBy, created, version, userDef1, userDef2, userDef3, processStamp
   </sql>
+
+    <select id="getLastCode" resultType="java.lang.String">
+        SELECT code FROM adjust_header ORDER BY id DESC LIMIT 1
+    </select>
+
+
+
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/inventory/CycleCountHeaderMapper.xml b/src/main/resources/mybatis/inventory/CycleCountHeaderMapper.xml
index 84fe6ef..e25f9f4 100644
--- a/src/main/resources/mybatis/inventory/CycleCountHeaderMapper.xml
+++ b/src/main/resources/mybatis/inventory/CycleCountHeaderMapper.xml
@@ -9,7 +9,7 @@
     <result column="masterCode" jdbcType="VARCHAR" property="masterCode" />
     <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
     <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
-    <result column="countType" jdbcType="INTEGER" property="countType" />
+    <result column="countType" jdbcType="VARCHAR" property="countType" />
     <result column="statusCyc" jdbcType="INTEGER" property="statusCyc" />
     <result column="countAttribute" jdbcType="INTEGER" property="countAttribute" />
     <result column="remark" jdbcType="VARCHAR" property="remark" />
@@ -41,4 +41,11 @@
     releasedAt, closedBy, closedAt, created, createdBy, lastUpdated, lastUpdatedBy, version, 
     userDef1, userDef2, userDef3, verifyBy, sourceCode, uploadTime, uploadStatus
   </sql>
+
+    <select id="getLastCode" resultType="java.lang.String">
+        SELECT masterCode FROM cycle_count_header ORDER BY id DESC LIMIT 1
+    </select>
+
+
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html b/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
index 39dc3a4..8dea881 100644
--- a/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
+++ b/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
@@ -116,7 +116,7 @@
     var prefix = ctx + "inventory/cycleCountDetail";
     var prefix_head = ctx + "inventory/cycleCountHeader";
     var remove_url= prefix + "/remove";
-    var datas = [[${@dict.getType('cyclecountStatus')}]];
+    var cyclecountStatus = [[${@dict.getType('cyclecountStatus')}]];
     var inventoryStatus=[[${@dict.getType('inventoryStatus')}]];
     var created ;
 
@@ -287,9 +287,9 @@
                     field: 'enableStatus',
                     title: '盘点明细状态',
                     formatter: function(value, row, index) {
-                        return $.table.selectDictLabel(datas, value);
+                        return $.table.selectDictLabel(cyclecountStatus, value);
                     },
-                    sortable:true
+                    visible: true
                 },
                 {
                     field: 'processStamp',
diff --git a/src/main/resources/templates/inventory/cycleCountHeader/add.html b/src/main/resources/templates/inventory/cycleCountHeader/add.html
index f130fc4..d12cf2a 100644
--- a/src/main/resources/templates/inventory/cycleCountHeader/add.html
+++ b/src/main/resources/templates/inventory/cycleCountHeader/add.html
@@ -4,34 +4,82 @@
 <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-cyclecountHeader-add">
+        <form class="form-horizontal m" id="form-cycleCountHeader-add">
 			<div class="form-group">
 				<label class="col-sm-3 control-label">盘点类型:</label>
 				<div class="col-sm-8">
-					<select name="type" id="type" class="form-control m-b"  th:with="firstStatus=${@dict.getType('cyclecountType')}">
+					<select name="countType" id="countType" class="form-control m-b"  th:with="firstStatus=${@dict.getType('cyclecountType')}">
 					<option th:each="e : ${firstStatus}" th:text="${e['dictLabel']}"
 							th:value="${e['dictValue']}"></option>
 					</select>
 				</div>
 			</div>
 			<div class="form-group">
-				<label class="col-sm-3 control-label">货主:</label>
-				<div class="col-sm-8">
-					<select id="company" name="company" class="form-control m-b" th:with="list=${@company.selectCompanyByCurrentUserId()}">
-						<option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr = " code = ${item['code']}"></option>
-					</select>
-				</div>
+				<label class="col-sm-3 control-label">原始盘点内部号:</label>
+                <div class="col-sm-8">
+                    <input id="countOrderId" name="countOrderId" class="form-control" type="text">
+                </div>
 			</div>
 			<div class="form-group">	
-				<label class="col-sm-3 control-label">备注:</label>
+				<label class="col-sm-3 control-label">盘点轮次:</label>
 				<div class="col-sm-8">
-					<input id="userDef1" name="remark" class="form-control" type="text">
+					<input id="round" name="round" class="form-control" type="text">
 				</div>
 				<!--th:checked="true" 状态按钮默认为启用 $("input[name='enable']").is(':checked')-->
 				<!--<div>-->
 					<!--<input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="enable" name="enable">-->
 				<!--</div>-->
 			</div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">货主:</label>
+                <div class="col-sm-8">
+                    <input id="companyCode" name="companyCode" 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="totalLocs" name="totalLocs" 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="totalItems" name="totalItems" 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="zoneCode" name="zoneCode" 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="locationFilter" name="locationFilter" 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="sourceCode" name="sourceCode" 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="countOrderId" name="remark" 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="remark" name="remark" 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>
@@ -42,21 +90,32 @@
 	</div>
     <div th:include="include::footer"></div>
     <script type="text/javascript">
-		var prefix = ctx + "inventory/cyclecountHeader"
-		$("#form-cyclecountHeader-add").validate({
+		var prefix = ctx + "inventory/cycleCountHeader"
+		$("#form-cycleCountHeader-add").validate({
 			rules:{
-                // code:{
-				// 	required:true,
-				// },
-				type:{
+                companyCode:{
+					required:true,
+				},
+                /*countType:{
                     required:true
-				}
+				},*/
+                totalLocs:{
+                    required:false,
+                    digits:true,
+                    min:0
+                },
+                totalItems:{
+                    required:false,
+                    digits:true,
+                    min:0
+                },
+
 			},
 			submitHandler: function(form) {
-                var tableValue = $("#form-cyclecountHeader-add").serialize();
-                tableValue = formValueReplace(tableValue, "enable", true);
-                tableValue = formValueReplace(tableValue, "companyId", $("#company option:selected").val());
-                tableValue = formValueReplace(tableValue, "companyCode", $("#company option:selected").attr("code"));
+                var tableValue = $("#form-cycleCountHeader-add").serialize();
+                // tableValue = formValueReplace(tableValue, "enable", true);
+                // tableValue = formValueReplace(tableValue, "companyId", $("#company option:selected").val());
+                // tableValue = formValueReplace(tableValue, "companyCode", $("#company option:selected").attr("code"));
                 $.operate.save(prefix + "/add", tableValue);
             }
 		});
diff --git a/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html b/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
index 05ced27..6182cb4 100644
--- a/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
+++ b/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
@@ -96,8 +96,8 @@
     var prefix = ctx + "inventory/cycleCountHeader";
     var datas = [[${@dict.getType('sys_normal_disable')}]];
     var types = [[${@dict.getType('cyclecountType')}]];
-    var status2 = [[${@dict.getType('cyclecountStatus')}]];
-
+    var cyclecountStatus = [[${@dict.getType('cyclecountStatus')}]];
+    var ifs = [[${@dict.getType('false_and_true')}]];
     $(function () {
         var options = {
             url: prefix + "/list",
@@ -161,19 +161,23 @@
                 },
                 {
                     field: 'releasedBy',
-                    title: '释放人'
+                    title: '释放人',
+                    visible: false
                 },
                 {
                     field: 'releasedAt',
-                    title: '释放时间'
+                    title: '释放时间',
+                    visible: false
                 },
                 {
                     field: 'closedBy',
-                    title: '关闭人'
+                    title: '关闭人',
+                    visible: false
                 },
                 {
                     field: 'closedAt',
-                    title: '关闭时间'
+                    title: '关闭时间',
+                    visible: false
                 },
                 {
                     field: 'countType',
@@ -185,25 +189,29 @@
                     sortable: true
                 },
                 {
-                    field: 'verifyBy',
-                    title: '审核人'
-                },
-                {
                     field: 'statusCyc',
-                    title: '盘点状态',
-                    align: 'center',
-                    formatter: function (value, row, index) {
-                        return $.table.selectDictLabel(status2, value);
+                    title: '盘点主单状态',
+                    formatter: function(value, row, index) {
+                        return $.table.selectDictLabel(cyclecountStatus, value);
                     },
-                    sortable: true
+                    visible: true
+                },
+                {
+                    field: 'verifyBy',
+                    title: '审核人'
                 },
                 {
                     field: 'uploadTime',
-                    title: '上传时间'
+                    title: '上传时间',
+                    visible: false
                 },
                 {
                     field: 'uploadStatus',
-                    title: '上传状态'
+                    title: '上传状态',
+                    align: 'center',
+                    formatter: function (value, row, index) {
+                        return $.table.selectDictLabel(ifs, value);
+                    }
                 },
                 {
                     field: 'version',
@@ -266,10 +274,9 @@
 
                         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-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> ');
-                        //actions.push('<a style="background: #b5bdc0" class="btn btn-default btn-xs " href="#" onclick="detail(\'' + row.code + '\',\'' + row.code + '\')"><i class="fa fa-list-ul"></i>明细</a>');
-                        return actions.join('');
+                         return actions.join('');
                     }
                 }]
         };