diff --git a/.gitignore b/.gitignore
index dc08aa2..ac85078 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,7 +10,7 @@ target/
 *.iws
 *.iml
 *.ipr
-.idea/workspace.xml
+#.idea/workspace.xml
 .idea/compiler.xml
 
 
diff --git a/.idea/MyBatisCodeHelperDatasource.xml b/.idea/MyBatisCodeHelperDatasource.xml
index 53220ff..26774c4 100644
--- a/.idea/MyBatisCodeHelperDatasource.xml
+++ b/.idea/MyBatisCodeHelperDatasource.xml
@@ -5,9 +5,9 @@
       <ProjectProfile>
         <option name="addSerializeUid" value="true" />
         <option name="generateService" value="true" />
-        <option name="javaMapperPackage" value="com.huaheng.pc.shipment.wave.mapper" />
+        <option name="javaMapperPackage" value="com.huaheng.pc.inventory.adjust.mapper" />
         <option name="javaMapperPath" value="$PROJECT_DIR$/src/main/java" />
-        <option name="javaModelPackage" value="com.huaheng.pc.shipment.wave.domain" />
+        <option name="javaModelPackage" value="com.huaheng.pc.inventory.adjust.domain" />
         <option name="javaModelPath" value="$PROJECT_DIR$/src/main/java" />
         <option name="lastDatabaseCrudChooseModuleName" value="huaheng" />
         <option name="moduleNameToPackageAndPathMap">
@@ -29,13 +29,13 @@
             <entry key="huaheng">
               <value>
                 <UserPackageAndPathInfoByModule>
-                  <option name="javaMapperPackage" value="com.huaheng.pc.shipment.wave.mapper" />
+                  <option name="javaMapperPackage" value="com.huaheng.pc.inventory.adjust.mapper" />
                   <option name="javaMapperPath" value="$PROJECT_DIR$/src/main/java" />
-                  <option name="javaModelPacakge" value="com.huaheng.pc.shipment.wave.domain" />
+                  <option name="javaModelPacakge" value="com.huaheng.pc.inventory.adjust.domain" />
                   <option name="javaModelPath" value="$PROJECT_DIR$/src/main/java" />
-                  <option name="javaServicePackage" value="com.huaheng.pc.shipment.wave.service" />
+                  <option name="javaServicePackage" value="com.huaheng.pc.inventory.adjust.service" />
                   <option name="javaServicePath" value="$PROJECT_DIR$/src/main/java" />
-                  <option name="xmlPackage" value="shipment" />
+                  <option name="xmlPackage" value="inventory" />
                   <option name="xmlPath" value="E:\code\wms2\src\main\resources\mybatis" />
                 </UserPackageAndPathInfoByModule>
               </value>
@@ -45,6 +45,26 @@
         <option name="mybatisPlusStaticField" value="false" />
         <option name="tableGenerateConfigs">
           <map>
+            <entry key="wms_v2:adjust_detail">
+              <value>
+                <TableGenerateConfig>
+                  <option name="generatedKey" value="id" />
+                  <option name="javaModelName" value="AdjustDetail" />
+                  <option name="moduleName" value="huaheng" />
+                  <option name="useActualColumnName" value="true" />
+                </TableGenerateConfig>
+              </value>
+            </entry>
+            <entry key="wms_v2:adjust_header">
+              <value>
+                <TableGenerateConfig>
+                  <option name="generatedKey" value="id" />
+                  <option name="javaModelName" value="AdjustHeader" />
+                  <option name="moduleName" value="huaheng" />
+                  <option name="useActualColumnName" value="true" />
+                </TableGenerateConfig>
+              </value>
+            </entry>
             <entry key="wms_v2:alarm_level">
               <value>
                 <TableGenerateConfig>
@@ -285,6 +305,26 @@
                 </TableGenerateConfig>
               </value>
             </entry>
+            <entry key="wms_v2:receipt_detail_history">
+              <value>
+                <TableGenerateConfig>
+                  <option name="generatedKey" value="id" />
+                  <option name="javaModelName" value="ReceiptDetailHistory" />
+                  <option name="moduleName" value="huaheng" />
+                  <option name="useActualColumnName" value="true" />
+                </TableGenerateConfig>
+              </value>
+            </entry>
+            <entry key="wms_v2:receipt_header_history">
+              <value>
+                <TableGenerateConfig>
+                  <option name="generatedKey" value="id" />
+                  <option name="javaModelName" value="ReceiptHeaderHistory" />
+                  <option name="moduleName" value="huaheng" />
+                  <option name="useActualColumnName" value="true" />
+                </TableGenerateConfig>
+              </value>
+            </entry>
             <entry key="wms_v2:receipt_preference">
               <value>
                 <TableGenerateConfig>
@@ -511,7 +551,7 @@
         <option name="useLomBokOnModel" value="true" />
         <option name="useSwagger" value="true" />
         <option name="userMybatisPlus" value="true" />
-        <option name="xmlMapperPackage" value="shipment" />
+        <option name="xmlMapperPackage" value="inventory" />
         <option name="xmlMapperPath" value="E:\code\wms2\src\main\resources\mybatis" />
       </ProjectProfile>
     </option>
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index 9e49997..07bbd8e 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
-    <data-source source="LOCAL" name="@172.16.29.45" uuid="2845c0bf-201c-4178-b161-2bab8cfbfe5d">
+    <data-source source="LOCAL" name="@172.16.29.45" uuid="5e014158-5749-424f-a74a-1c32e588e60f">
       <driver-ref>mysql.8</driver-ref>
       <synchronize>true</synchronize>
       <jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
diff --git a/src/main/java/com/huaheng/pc/config/materialType/domain/MaterialType.java b/src/main/java/com/huaheng/pc/config/materialType/domain/MaterialType.java
new file mode 100644
index 0000000..30ac59b
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/materialType/domain/MaterialType.java
@@ -0,0 +1,263 @@
+package com.huaheng.pc.config.materialType.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+@ApiModel(value="com.huaheng.pc.config.materialType.domain.MaterialType")
+@Data
+@TableName(value = "material_type")
+public class MaterialType implements Serializable {
+    /**
+     * ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value="ID")
+    private Integer id;
+
+    /**
+     * 编码
+     */
+    @TableField(value = "code")
+    @ApiModelProperty(value="编码")
+    private String code;
+
+    /**
+     * 名称
+     */
+    @TableField(value = "name")
+    @ApiModelProperty(value="名称")
+    private String name;
+
+    /**
+     * 货主编码
+     */
+    @TableField(value = "companyCode")
+    @ApiModelProperty(value="货主编码")
+    private String companyCode;
+
+    /**
+     * 仓库编码
+     */
+    @TableField(value = "warehouseCode")
+    @ApiModelProperty(value="仓库编码")
+    private String warehouseCode;
+
+    /**
+     * ABC分类
+     */
+    @TableField(value = "abcClass")
+    @ApiModelProperty(value="ABC分类")
+    private String abcClass;
+
+    /**
+     * 保质期(天)
+     */
+    @TableField(value = "daysToExpire")
+    @ApiModelProperty(value="保质期(天)")
+    private Integer daysToExpire;
+
+    /**
+     * 入库流程
+     */
+    @TableField(value = "receivingFlow")
+    @ApiModelProperty(value="入库流程")
+    private String receivingFlow;
+
+    /**
+     * 出库流程
+     */
+    @TableField(value = "shippingFlow")
+    @ApiModelProperty(value="出库流程")
+    private String shippingFlow;
+
+    /**
+     * 定位规则
+     */
+    @TableField(value = "locatingRule")
+    @ApiModelProperty(value="定位规则")
+    private String locatingRule;
+
+    /**
+     * 分配规则
+     */
+    @TableField(value = "allocationRule")
+    @ApiModelProperty(value="分配规则")
+    private String allocationRule;
+
+    /**
+     * 补货规则
+     */
+    @TableField(value = "replenishmentRule")
+    @ApiModelProperty(value="补货规则")
+    private String replenishmentRule;
+
+    /**
+     * 空货位规则
+     */
+    @TableField(value = "emptyLocRule")
+    @ApiModelProperty(value="空货位规则")
+    private String emptyLocRule;
+
+    /**
+     * 拣货规则
+     */
+    @TableField(value = "pickingRule")
+    @ApiModelProperty(value="拣货规则")
+    private String pickingRule;
+
+    /**
+     * 属性模版
+     */
+    @TableField(value = "attributeTemplateCode")
+    @ApiModelProperty(value="属性模版")
+    private String attributeTemplateCode;
+
+    /**
+     * 记录序列号
+     */
+    @TableField(value = "trackSerialNum")
+    @ApiModelProperty(value="记录序列号")
+    private Integer trackSerialNum;
+
+    /**
+     * 自动生成序列号
+     */
+    @TableField(value = "autoGenSerialNum")
+    @ApiModelProperty(value="自动生成序列号")
+    private Integer autoGenSerialNum;
+
+    /**
+     * 自动生成序列号表达式
+     */
+    @TableField(value = "autoGenSerialNumFormat")
+    @ApiModelProperty(value="自动生成序列号表达式")
+    private String autoGenSerialNumFormat;
+
+    /**
+     * 序列号模版
+     */
+    @TableField(value = "snTemplateCode")
+    @ApiModelProperty(value="序列号模版")
+    private String snTemplateCode;
+
+    /**
+     * 临期预警天数
+     */
+    @TableField(value = "expiringDays")
+    @ApiModelProperty(value="临期预警天数")
+    private Integer expiringDays;
+
+    /**
+     * 收货预警天数
+     */
+    @TableField(value = "minShelfLifeDays")
+    @ApiModelProperty(value="收货预警天数")
+    private Integer minShelfLifeDays;
+
+    /**
+     * 状态
+     */
+    @TableField(value = "enable")
+    @ApiModelProperty(value="状态")
+    private Integer enable;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "created")
+    @ApiModelProperty(value="创建时间")
+    private Date created;
+
+    /**
+     * 创建用户
+     */
+    @TableField(value = "createdBy")
+    @ApiModelProperty(value="创建用户")
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "lastUpdated")
+    @ApiModelProperty(value="创建时间")
+    private Date lastUpdated;
+
+    /**
+     * 更新用户
+     */
+    @TableField(value = "lastUpdatedBy")
+    @ApiModelProperty(value="更新用户")
+    private String lastUpdatedBy;
+
+    /**
+     * 数据版本
+     */
+    @TableField(value = "version")
+    @ApiModelProperty(value="数据版本")
+    private Integer version;
+
+    /**
+     * 是否AGV区域发货
+     */
+    @TableField(value = "userDef1")
+    @ApiModelProperty(value="是否AGV区域发货")
+    private String userDef1;
+
+    /**
+     * 自定义字段2
+     */
+    @TableField(value = "userDef2")
+    @ApiModelProperty(value="自定义字段2")
+    private String userDef2;
+
+    /**
+     * 商品同步标识
+     */
+    @TableField(value = "userDef3")
+    @ApiModelProperty(value="商品同步标识")
+    private String userDef3;
+
+    /**
+     * 自定义字段4
+     */
+    @TableField(value = "userDef4")
+    @ApiModelProperty(value="自定义字段4")
+    private String userDef4;
+
+    /**
+     * 自定义字段5
+     */
+    @TableField(value = "userDef5")
+    @ApiModelProperty(value="自定义字段5")
+    private String userDef5;
+
+    /**
+     * 自定义字段6
+     */
+    @TableField(value = "userDef6")
+    @ApiModelProperty(value="自定义字段6")
+    private String userDef6;
+
+    /**
+     * 自定义字段7
+     */
+    @TableField(value = "userDef7")
+    @ApiModelProperty(value="自定义字段7")
+    private String userDef7;
+
+    /**
+     * 自定义字段8
+     */
+    @TableField(value = "userDef8")
+    @ApiModelProperty(value="自定义字段8")
+    private String userDef8;
+
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/config/materialType/mapper/MaterialTypeMapper.java b/src/main/java/com/huaheng/pc/config/materialType/mapper/MaterialTypeMapper.java
new file mode 100644
index 0000000..0697b88
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/materialType/mapper/MaterialTypeMapper.java
@@ -0,0 +1,7 @@
+package com.huaheng.pc.config.materialType.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaheng.pc.config.materialType.domain.MaterialType;
+
+public interface MaterialTypeMapper extends BaseMapper<MaterialType> {
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/config/materialType/service/MaterialTypeService.java b/src/main/java/com/huaheng/pc/config/materialType/service/MaterialTypeService.java
new file mode 100644
index 0000000..c08bd9e
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/config/materialType/service/MaterialTypeService.java
@@ -0,0 +1,12 @@
+package com.huaheng.pc.config.materialType.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.config.materialType.domain.MaterialType;
+import com.huaheng.pc.config.materialType.mapper.MaterialTypeMapper;
+@Service
+public class MaterialTypeService extends ServiceImpl<MaterialTypeMapper, MaterialType> {
+
+}
diff --git a/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowDetailController.java b/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowDetailController.java
index 8962fdd..3622ce4 100644
--- a/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowDetailController.java
+++ b/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowDetailController.java
@@ -15,7 +15,9 @@ import com.huaheng.framework.web.page.PageDomain;
 import com.huaheng.framework.web.page.TableDataInfo;
 import com.huaheng.framework.web.page.TableSupport;
 import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail;
+import com.huaheng.pc.config.statusFlow.domain.StatusFlowHeader;
 import com.huaheng.pc.config.statusFlow.service.StatusFlowDetailService;
+import com.huaheng.pc.config.statusFlow.service.StatusFlowHeaderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -35,6 +37,8 @@ public class StatusFlowDetailController extends BaseController {
 
     @Resource
     private StatusFlowDetailService statusFlowDetailService;
+    @Resource
+    private StatusFlowHeaderService statusFlowHeaderService;
 
     private String prefix = "config/statusFlowDetail";
 
@@ -70,7 +74,8 @@ public class StatusFlowDetailController extends BaseController {
                 .eq(StringUtils.isNotEmpty(statusFlowDetail.getRecordType()),
                         StatusFlowDetail::getRecordType, statusFlowDetail.getRecordType())
                 .eq(StringUtils.isNotNull(statusFlowDetail.getNessary()),
-                        StatusFlowDetail::getNessary, statusFlowDetail.getNessary());
+                        StatusFlowDetail::getNessary, statusFlowDetail.getNessary())
+                .orderByAsc(StatusFlowDetail::getSequence);
 
         if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
             /*使用分页查询*/
@@ -88,7 +93,9 @@ public class StatusFlowDetailController extends BaseController {
      */
     @GetMapping("/add/{headerId}")
     public String add(@PathVariable("headerId")Integer headerId, ModelMap mmap) {
+        StatusFlowHeader statusFlowHeader = statusFlowHeaderService.getById(headerId);
         mmap.put("headerId",headerId);
+        mmap.put("headerCode", statusFlowHeader.getCode());
         return prefix + "/add";
     }
 
diff --git a/src/main/java/com/huaheng/pc/config/statusFlow/domain/StatusFlowDetail.java b/src/main/java/com/huaheng/pc/config/statusFlow/domain/StatusFlowDetail.java
index 8219635..c6a424f 100644
--- a/src/main/java/com/huaheng/pc/config/statusFlow/domain/StatusFlowDetail.java
+++ b/src/main/java/com/huaheng/pc/config/statusFlow/domain/StatusFlowDetail.java
@@ -22,9 +22,13 @@ public class StatusFlowDetail implements Serializable {
     private Integer id;
 
     @TableField(value = "headerId")
-    @ApiModelProperty(value="null")
+    @ApiModelProperty(value="头表id")
     private Integer headerId;
 
+    @TableField(value = "headerCode")
+    @ApiModelProperty(value="头表编码")
+    private Integer headerCode;
+
     /**
      * 状态流
      */
diff --git a/src/main/java/com/huaheng/pc/config/statusFlow/domain/StatusFlowHeader.java b/src/main/java/com/huaheng/pc/config/statusFlow/domain/StatusFlowHeader.java
index 776a286..745b136 100644
--- a/src/main/java/com/huaheng/pc/config/statusFlow/domain/StatusFlowHeader.java
+++ b/src/main/java/com/huaheng/pc/config/statusFlow/domain/StatusFlowHeader.java
@@ -25,14 +25,14 @@ public class StatusFlowHeader implements Serializable {
      * 状态流
      */
     @TableField(value = "code")
-    @ApiModelProperty(value="状态流")
+    @ApiModelProperty(value="编码")
     private String code;
 
     /**
      * 状态流名称
      */
     @TableField(value = "name")
-    @ApiModelProperty(value="状态流名称")
+    @ApiModelProperty(value="名称")
     private String name;
 
     /**
diff --git a/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowDetailService.java b/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowDetailService.java
index 2586d96..5108b8d 100644
--- a/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowDetailService.java
+++ b/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowDetailService.java
@@ -1,12 +1,22 @@
 package com.huaheng.pc.config.statusFlow.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.WeakHashMap;
+
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail;
 import com.huaheng.pc.config.statusFlow.mapper.StatusFlowDetailMapper;
 @Service
 public class StatusFlowDetailService extends ServiceImpl<StatusFlowDetailMapper, StatusFlowDetail> {
 
+    public List<StatusFlowDetail> queryStatusFlowDetail(String headerCode){
+        LambdaQueryWrapper<StatusFlowDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.orderByAsc(StatusFlowDetail::getSequence)
+                .eq(StatusFlowDetail::getHeaderCode, headerCode);
+        return this.list(lambdaQueryWrapper);
+    }
 }
diff --git a/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowHeaderService.java b/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowHeaderService.java
index 7772f6d..8c74ffa 100644
--- a/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowHeaderService.java
+++ b/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowHeaderService.java
@@ -1,10 +1,21 @@
 package com.huaheng.pc.config.statusFlow.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaheng.pc.config.statusFlow.domain.StatusFlowHeader;
 import com.huaheng.pc.config.statusFlow.mapper.StatusFlowHeaderMapper;
-@Service
+
+import java.util.List;
+import java.util.Map;
+
+@Service("StatusFlow")
 public class StatusFlowHeaderService extends ServiceImpl<StatusFlowHeaderMapper, StatusFlowHeader> {
 
+    public List<Map<String, Object>> flowList(){
+        LambdaQueryWrapper<StatusFlowHeader> lambda = Wrappers.lambdaQuery();
+        lambda.select(StatusFlowHeader::getCode, StatusFlowHeader::getName);
+        return this.listMaps(lambda);
+    }
 }
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
new file mode 100644
index 0000000..7620d16
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
@@ -0,0 +1,96 @@
+package com.huaheng.pc.inventory.adjustDetail.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.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;
+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.List;
+
+
+@Controller
+@RequestMapping("/inventory/adjustDetail")
+public class adjustDetailController extends BaseController {
+
+
+    @Resource
+    private AdjustHeaderService adjustHeaderService;
+    @Resource
+    private AdjustDetailService adjustDetailService;
+
+
+
+    private String prefix = "inventory/adjustDetail";
+
+
+    //@RequiresPermissions("inventory:cycleCount:view")
+    @GetMapping()
+    public String adjustHeader()
+    {
+        return prefix + "/adjustDetail";
+    }
+
+
+    /**
+     * 查询调整单主列表
+     */
+    //@RequiresPermissions("inventory:cycleCount:list")
+    @PostMapping("/list")
+    @Log(title = "库存-调整",operating = "查看调整明细单", action = BusinessType.GRANT)
+    @ResponseBody
+    public TableDataInfo list(AdjustDetail adjustDetail, String createdBegin, String createdEnd) {
+        LambdaQueryWrapper<AdjustDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), AdjustDetail::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), AdjustDetail::getCreated, createdEnd)//创建时间范围
+                .eq(AdjustDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库
+                .eq(adjustDetail.getId() != null, AdjustDetail::getId, adjustDetail.getId())//ID
+
+
+                .orderByDesc(AdjustDetail::getId);
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
+            //分页查询
+            Page<AdjustDetail> page = new Page<>(pageNum, pageSize);
+            IPage<AdjustDetail> iPage = adjustDetailService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(), iPage.getTotal());
+        } else {
+            List<AdjustDetail> list = adjustDetailService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
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
new file mode 100644
index 0000000..9014bf4
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java
@@ -0,0 +1,239 @@
+package com.huaheng.pc.inventory.adjustDetail.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+@ApiModel(value="com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail")
+@Data
+@TableName(value = "adjust_detail")
+public class AdjustDetail implements Serializable {
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value="null")
+    private Integer id;
+
+    /**
+     * 调整单号
+     */
+    @TableField(value = "adjustCode")
+    @ApiModelProperty(value="调整单号")
+    private String adjustCode;
+
+    /**
+     * 盘点单号
+     */
+    @TableField(value = "cycleCountCode")
+    @ApiModelProperty(value="盘点单号")
+    private String cycleCountCode;
+
+    /**
+     * 盘点单号行号
+     */
+    @TableField(value = "cycleDetailId")
+    @ApiModelProperty(value="盘点明细单号行号")
+    private Integer cycleDetailId;
+
+    /**
+     * 质检单号
+     */
+    @TableField(value = "checkCode")
+    @ApiModelProperty(value="质检单号")
+    private String checkCode;
+
+    /**
+     * 质检明细单号行号
+     */
+    @TableField(value = "checkDetailId")
+    @ApiModelProperty(value="质检明细单号行号")
+    private Integer checkDetailId;
+
+    /**
+     * 调整关联单号
+     */
+    @TableField(value = "referCode")
+    @ApiModelProperty(value="调整关联单号")
+    private String referCode;
+
+    /**
+     * 调整明细关联标识
+     */
+    @TableField(value = "referDetailId")
+    @ApiModelProperty(value="调整明细关联标识")
+    private Integer referDetailId;
+
+    /**
+     * 仓库编码
+     */
+    @TableField(value = "warehouseCode")
+    @ApiModelProperty(value="仓库编码")
+    private String warehouseCode;
+
+    /**
+     * 货主编码
+     */
+    @TableField(value = "companyCode")
+    @ApiModelProperty(value="货主编码")
+    private String companyCode;
+
+    /**
+     * 商品编码
+     */
+    @TableField(value = "materialCode")
+    @ApiModelProperty(value="商品编码")
+    private String materialCode;
+
+    /**
+     * 商品名称
+     */
+    @TableField(value = "materialName")
+    @ApiModelProperty(value="商品名称")
+    private String materialName;
+
+    /**
+     * 商品规格
+     */
+    @TableField(value = "materialSpec")
+    @ApiModelProperty(value="商品规格")
+    private String materialSpec;
+
+    /**
+     * 商品单位
+     */
+    @TableField(value = "materialUnit")
+    @ApiModelProperty(value="商品单位")
+    private String materialUnit;
+
+    /**
+     * 1盘点 ,2 质检 ,3 调整
+     */
+    @TableField(value = "problemType")
+    @ApiModelProperty(value="1盘点 ,2 质检 ,3 调整")
+    private String problemType;
+
+    /**
+     * 属性号
+     */
+    @TableField(value = "attributeId")
+    @ApiModelProperty(value="属性号")
+    private Integer attributeId;
+
+    /**
+     * 调整前库存状态
+     */
+    @TableField(value = "fromInventorySts")
+    @ApiModelProperty(value="调整前库存状态")
+    private String fromInventorySts;
+
+    /**
+     * 调整后库存状态
+     */
+    @TableField(value = "toInventorySts")
+    @ApiModelProperty(value="调整后库存状态")
+    private String toInventorySts;
+
+    /**
+     * 调整前的数量
+     */
+    @TableField(value = "fromQty")
+    @ApiModelProperty(value="调整前的数量")
+    private Integer fromQty;
+
+    /**
+     * 调整后的数量 
+     */
+    @TableField(value = "toQty")
+    @ApiModelProperty(value="调整后的数量 ")
+    private Integer toQty;
+
+    /**
+     * 调整变动数量 
+     */
+    @TableField(value = "gapQty")
+    @ApiModelProperty(value="调整变动数量 ")
+    private Integer gapQty;
+
+    /**
+     * 状态 -0-待调整 1-已调整 2-未批准 3-已批准
+     */
+    @TableField(value = "status")
+    @ApiModelProperty(value="状态 -0-待调整 1-已调整 2-未批准 3-已批准")
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "created")
+    @ApiModelProperty(value="创建时间")
+    private Date created;
+
+    /**
+     * 创建人
+     * */
+    @TableField(value = "createdBy")
+    @ApiModelProperty(value = "createdBy")
+    private String createdBy;
+
+    /**
+     * 审批时间
+     */
+    @TableField(value = "agreeTime")
+    @ApiModelProperty(value="审批时间")
+    private Date agreeTime;
+
+    /**
+     * 审批人
+     * */
+    @TableField(value = "agreeBy")
+    @ApiModelProperty(value = "agreeBy")
+    private String agreeBy;
+
+    /**
+     * 备注
+     */
+    @TableField(value = "Remark")
+    @ApiModelProperty(value="备注")
+    private String remark;
+
+    /**
+     * 数据版本
+     */
+    @TableField(value = "version")
+    @ApiModelProperty(value="数据版本")
+    private Integer version;
+
+    /**
+     * 自定义字段1
+     */
+    @TableField(value = "userDef1")
+    @ApiModelProperty(value="自定义字段1")
+    private String userDef1;
+
+    /**
+     * 自定义字段2
+     */
+    @TableField(value = "userDef2")
+    @ApiModelProperty(value="自定义字段2")
+    private String userDef2;
+
+    /**
+     * 自定义字段3
+     */
+    @TableField(value = "userDef3")
+    @ApiModelProperty(value="自定义字段3")
+    private String userDef3;
+
+    /**
+     * 处理标记
+     */
+    @TableField(value = "processStamp")
+    @ApiModelProperty(value="处理标记")
+    private String processStamp;
+
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/mapper/AdjustDetailMapper.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/mapper/AdjustDetailMapper.java
new file mode 100644
index 0000000..12a45d9
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/mapper/AdjustDetailMapper.java
@@ -0,0 +1,7 @@
+package com.huaheng.pc.inventory.adjustDetail.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
+
+public interface AdjustDetailMapper extends BaseMapper<AdjustDetail> {
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..cd088f4
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.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 AdjustDetailService extends ServiceImpl<AdjustDetailMapper, AdjustDetail> {
+
+}
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
new file mode 100644
index 0000000..6c8e9c4
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java
@@ -0,0 +1,96 @@
+package com.huaheng.pc.inventory.adjustHeader.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.aspectj.lang.annotation.Log;
+import com.huaheng.framework.aspectj.lang.constant.BusinessType;
+import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.page.PageDomain;
+import com.huaheng.framework.web.page.TableDataInfo;
+import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.inventory.adjustDetail.service.AdjustDetailService;
+import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
+import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService;
+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 javax.annotation.Resource;
+import java.util.List;
+
+@Controller
+@RequestMapping("/inventory/adjustHeader")
+public class adjustHeaderController extends BaseController {
+
+
+    @Resource
+    private AdjustHeaderService adjustHeaderService;
+    @Resource
+    private AdjustDetailService adjustDetailService;
+
+
+
+    private String prefix = "inventory/adjustHeader";
+
+
+    //@RequiresPermissions("inventory:cycleCount:view")
+    @GetMapping()
+    public String adjustHeader()
+    {
+        return prefix + "/adjustHeader";
+    }
+
+
+    /**
+     * 查询调整单主列表
+     */
+    //@RequiresPermissions("inventory:cycleCount:list")
+    @PostMapping("/list")
+    @Log(title = "库存-调整",operating = "查看调整主单", action = BusinessType.GRANT)
+    @ResponseBody
+    public TableDataInfo list(AdjustHeader adjustHeader, String createdBegin, String createdEnd) {
+        LambdaQueryWrapper<AdjustHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), AdjustHeader::getCreated, createdBegin)
+                .le(StringUtils.isNotEmpty(createdEnd), AdjustHeader::getCreated, createdEnd)//创建时间范围
+                .eq(AdjustHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库
+                .eq(StringUtils.isNotEmpty(adjustHeader.getCode()),AdjustHeader::getCode,adjustHeader.getCode())//调整单编码
+                .eq(StringUtils.isNotEmpty(adjustHeader.getCompanyCode()),AdjustHeader::getCompanyCode,adjustHeader.getCompanyCode())//货主
+                .eq(StringUtils.isNotEmpty(adjustHeader.getProblemType()),AdjustHeader::getProblemType,adjustHeader.getProblemType())//调整类型
+                .eq(StringUtils.isNotEmpty(adjustHeader.getCycleCountCode()),AdjustHeader::getCycleCountCode,adjustHeader.getCycleCountCode())//盘点单号
+                .eq(StringUtils.isNotEmpty(adjustHeader.getCheckCode()),AdjustHeader::getCheckCode,adjustHeader.getCheckCode())//质检单号
+                .eq(StringUtils.isNotEmpty(adjustHeader.getReferCode()),AdjustHeader::getReferCode,adjustHeader.getReferCode())//上游单编码
+                .eq(StringUtils.isNotEmpty(adjustHeader.getCreatedBy()),AdjustHeader::getCreatedBy,adjustHeader.getCreatedBy())//创建人
+
+                .orderByDesc(AdjustHeader::getId);
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
+            //分页查询
+            Page<AdjustHeader> page = new Page<>(pageNum, pageSize);
+            IPage<AdjustHeader> iPage = adjustHeaderService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(), iPage.getTotal());
+        } else {
+            List<AdjustHeader> list = adjustHeaderService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustHeader/domain/AdjustHeader.java b/src/main/java/com/huaheng/pc/inventory/adjustHeader/domain/AdjustHeader.java
new file mode 100644
index 0000000..5979634
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/domain/AdjustHeader.java
@@ -0,0 +1,127 @@
+package com.huaheng.pc.inventory.adjustHeader.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+@ApiModel(value="com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader")
+@Data
+@TableName(value = "adjust_header")
+public class AdjustHeader implements Serializable {
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value="null")
+    private Integer id;
+
+    /**
+     * 编码
+     */
+    @TableField(value = "code")
+    @ApiModelProperty(value="编码")
+    private String code;
+
+    /**
+     * 仓库代码
+     */
+    @TableField(value = "warehouseCode")
+    @ApiModelProperty(value="仓库代码")
+    private String warehouseCode;
+
+    /**
+     * 货主编码
+     */
+    @TableField(value = "companyCode")
+    @ApiModelProperty(value="货主编码")
+    private String companyCode;
+
+    /**
+     * 1盘点 ,2 质检 ,3 调整
+     */
+    @TableField(value = "problemType")
+    @ApiModelProperty(value="1盘点 ,2 质检 ,3 调整")
+    private String problemType;
+
+    /**
+     * 盘点单号
+     */
+    @TableField(value = "cycleCountCode")
+    @ApiModelProperty(value="盘点单号")
+    private String cycleCountCode;
+
+    /**
+     * 质检单号
+     */
+    @TableField(value = "checkCode")
+    @ApiModelProperty(value="质检单号")
+    private String checkCode;
+
+    /**
+     * 关联上游单号
+     */
+    @TableField(value = "referCode")
+    @ApiModelProperty(value="关联上游单号")
+    private String referCode;
+
+    /**
+     * 关联上游系统原因说明
+     */
+    @TableField(value = "referReason")
+    @ApiModelProperty(value="关联上游系统原因说明")
+    private String referReason;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "createdBy")
+    @ApiModelProperty(value="创建人")
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "created")
+    @ApiModelProperty(value="创建时间")
+    private Date created;
+
+    /**
+     * 数据版本
+     */
+    @TableField(value = "version")
+    @ApiModelProperty(value="数据版本")
+    private Integer version;
+
+    /**
+     * 自定义字段1
+     */
+    @TableField(value = "userDef1")
+    @ApiModelProperty(value="自定义字段1")
+    private String userDef1;
+
+    /**
+     * 自定义字段2
+     */
+    @TableField(value = "userDef2")
+    @ApiModelProperty(value="自定义字段2")
+    private String userDef2;
+
+    /**
+     * 自定义字段3
+     */
+    @TableField(value = "userDef3")
+    @ApiModelProperty(value="自定义字段3")
+    private String userDef3;
+
+    /**
+     * 处理标记
+     */
+    @TableField(value = "processStamp")
+    @ApiModelProperty(value="处理标记")
+    private String processStamp;
+
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..4e8fd0f
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/mapper/AdjustHeaderMapper.java
@@ -0,0 +1,7 @@
+package com.huaheng.pc.inventory.adjustHeader.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
+
+public interface AdjustHeaderMapper extends BaseMapper<AdjustHeader> {
+}
\ 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
new file mode 100644
index 0000000..69cc150
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/service/AdjustHeaderService.java
@@ -0,0 +1,10 @@
+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;
+@Service
+public class AdjustHeaderService extends ServiceImpl<AdjustHeaderMapper, AdjustHeader> {
+
+}
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 f93c7d6..1f4e48d 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
@@ -57,16 +57,32 @@ public class CycleCountDetailController extends BaseController {
     @Log(title = "库存-盘点",operating = "查看盘点明细", action = BusinessType.GRANT)
     @ResponseBody
     public TableDataInfo list(CycleCountDetail cycleCountDetail, String createdBegin, String createdEnd) {
+
         LambdaQueryWrapper<CycleCountDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
         PageDomain pageDomain = TableSupport.buildPageRequest();
         Integer pageNum = pageDomain.getPageNum();
         Integer pageSize = pageDomain.getPageSize();
 
-        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), CycleCountDetail::getCreated, createdBegin)
+        lambdaQueryWrapper.ge(
+                StringUtils.isNotEmpty(createdBegin), CycleCountDetail::getCreated, createdBegin)
                 .le(StringUtils.isNotEmpty(createdEnd), CycleCountDetail::getCreated, createdEnd)//创建时间范围
                 .eq(CycleCountDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库
-
-
+                .eq(cycleCountDetail.getCycleCountHeadId() != null ,CycleCountDetail::getCycleCountHeadId,cycleCountDetail.getCycleCountHeadId())//盘点主单
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getCompanyCode()),CycleCountDetail::getCompanyCode, cycleCountDetail.getCompanyCode())//货主
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getLocationCode()), CycleCountDetail::getLocationCode, cycleCountDetail.getLocationCode()) //库位
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getContainerCode()), CycleCountDetail::getContainerCode,cycleCountDetail.getContainerCode()) //容器
+                .eq(cycleCountDetail.getInventoryDetailId() != null, CycleCountDetail::getInventoryDetailId, cycleCountDetail.getInventoryDetailId())//库存明细ID
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getMaterialCode()), CycleCountDetail::getMaterialCode,cycleCountDetail.getMaterialCode())//物料编码
+                .like(StringUtils.isNotEmpty(cycleCountDetail.getMaterialName()), CycleCountDetail::getMaterialName, cycleCountDetail.getMaterialName())//物料名称
+                .like(StringUtils.isNotEmpty(cycleCountDetail.getMaterialSpec()), CycleCountDetail::getMaterialSpec,cycleCountDetail.getMaterialSpec())//物料规格
+                .eq(cycleCountDetail.getTaskHeaderId() != null, CycleCountDetail::getTaskHeaderId, cycleCountDetail.getTaskHeaderId())//任务主表
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getInventorySts()), CycleCountDetail::getInventorySts,cycleCountDetail.getInventorySts())//库存状态
+                .eq(cycleCountDetail.getEnableStatus() != null, CycleCountDetail::getEnableStatus, cycleCountDetail.getEnableStatus())//明细状态
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getBatch()),CycleCountDetail::getBatch,cycleCountDetail.getBatch())//批次
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getLot()),CycleCountDetail::getLot,cycleCountDetail.getLot())//批号
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getProjectNo()),CycleCountDetail::getProjectNo,cycleCountDetail.getProjectNo())//项目号
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getCreatedBy()),CycleCountDetail::getCreatedBy,cycleCountDetail.getCreatedBy())//创建人
+                .eq(StringUtils.isNotEmpty(cycleCountDetail.getCompletedBy()), CycleCountDetail::getCompletedBy,cycleCountDetail.getCompletedBy())//完成人
                 .orderByDesc(CycleCountDetail::getId);
 
         if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
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 d4c407a..d770af4 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
@@ -132,11 +132,11 @@ public class CycleCountDetail implements Serializable {
     private Long countedQty;
 
     /**
-     * 调整数量
+     * 差异数量
      */
-    @TableField(value = "adjustQty")
-    @ApiModelProperty(value="调整数量")
-    private Long adjustQty;
+    @TableField(value = "gapQty")
+    @ApiModelProperty(value="差异数量")
+    private Long gapQty;
 
     /**
      * 失败原因
@@ -278,83 +278,19 @@ public class CycleCountDetail implements Serializable {
     @ApiModelProperty(value="项目号")
     private String projectNo;
 
-    private static final long serialVersionUID = 1L;
-
-    public static final String COL_ID = "id";
-
-    public static final String COL_COUNTID = "countId";
-
-    public static final String COL_ROUND = "round";
-
-    public static final String COL_TASKHEADERID = "taskHeaderId";
-
-    public static final String COL_TASKDETAILID = "taskDetailId";
-
-    public static final String COL_WAREHOUSECODE = "warehouseCode";
-
-    public static final String COL_INVENTORYDETAILID = "inventoryDetailId";
-
-    public static final String COL_LOCATIONCODE = "locationCode";
-
-    public static final String COL_CONTAINERCODE = "containerCode";
-
-    public static final String COL_MATERIALCODE = "materialCode";
-
-    public static final String COL_MATERIALNAME = "materialName";
-
-    public static final String COL_MATERIALSPEC = "materialSpec";
-
-    public static final String COL_MATERIALUNIT = "materialUnit";
-
-    public static final String COL_COMPANYCODE = "companyCode";
-
-    public static final String COL_INVENTORYSTS = "inventorySts";
-
-    public static final String COL_SYSTEMQTY = "systemQty";
-
-    public static final String COL_COUNTEDQTY = "countedQty";
-
-    public static final String COL_ADJUSTQTY = "adjustQty";
-
-    public static final String COL_REJECTIONNOTE = "rejectionNote";
-
-    public static final String COL_COUNTEDBY = "countedBy";
 
-    public static final String COL_COUNTEDAT = "countedAt";
-
-    public static final String COL_ASSIGNEDTO = "assignedTo";
-
-    public static final String COL_ASSIGNEDAT = "assignedAt";
-
-    public static final String COL_COMPLETEDBY = "completedBy";
-
-    public static final String COL_COMPLETEDAT = "completedAt";
-
-    public static final String COL_ENABLESTATUS = "enableStatus";
-
-    public static final String COL_CREATED = "created";
-
-    public static final String COL_CREATEDBY = "createdBy";
-
-    public static final String COL_LASTUPDATED = "lastUpdated";
-
-    public static final String COL_LASTUPDATEDBY = "lastUpdatedBy";
-
-    public static final String COL_VERSION = "version";
-
-    public static final String COL_USERDEF1 = "userDef1";
-
-    public static final String COL_USERDEF2 = "userDef2";
+    /**
+     * 盘点主单号
+     * */
+    @TableField(value = "cycleCountHeadId")
+    @ApiModelProperty(value = "盘点主单号")
+    private Integer cycleCountHeadId;
 
-    public static final String COL_USERDEF3 = "userDef3";
 
-    public static final String COL_PROCESSSTAMP = "processStamp";
 
-    public static final String COL_BATCH = "batch";
 
-    public static final String COL_LOT = "lot";
+    private static final long serialVersionUID = 1L;
 
-    public static final String COL_PROJECTNO = "projectNo";
 
     /**
      * 获取ID
@@ -665,19 +601,14 @@ public class CycleCountDetail implements Serializable {
     /**
      * 获取调整数量
      *
-     * @return adjustQty - 调整数量
+     * @return gapQty- 调整数量
      */
-    public Long getAdjustQty() {
-        return adjustQty;
+    public Long getGapQty() {
+        return gapQty;
     }
 
-    /**
-     * 设置调整数量
-     *
-     * @param adjustQty 调整数量
-     */
-    public void setAdjustQty(Long adjustQty) {
-        this.adjustQty = adjustQty;
+    public void setGapQty(Long gapQty) {
+        this.gapQty = gapQty;
     }
 
     /**
@@ -1039,4 +970,12 @@ public class CycleCountDetail implements Serializable {
     public void setProjectNo(String projectNo) {
         this.projectNo = projectNo;
     }
+
+    public Integer getCycleCountHeadId() {
+        return cycleCountHeadId;
+    }
+
+    public void setCycleCountHeadId(Integer cycleCountHeadId) {
+        this.cycleCountHeadId = cycleCountHeadId;
+    }
 }
\ No newline at end of file
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 c092147..edd567d 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
@@ -69,9 +69,12 @@ public class CycleCountHeaderController extends BaseController {
         lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), CycleCountHeader::getCreated, createdBegin)
                 .le(StringUtils.isNotEmpty(createdEnd), CycleCountHeader::getCreated, createdEnd)//创建时间范围
                 .eq(CycleCountHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库
-
-
-
+                .eq(StringUtils.isNotEmpty(cycleCountHeader.getSourceCode()),CycleCountHeader::getSourceCode,cycleCountHeader.getSourceCode())//源盘点单号
+                .eq(cycleCountHeader.getId() != null, CycleCountHeader::getId,cycleCountHeader.getId())//ID
+                .eq(StringUtils.isNotEmpty(cycleCountHeader.getMasterCode()),CycleCountHeader::getMasterCode, cycleCountHeader.getMasterCode())//盘点主表编号
+                .eq(cycleCountHeader.getCountOrderId() != null, CycleCountHeader::getCountOrderId, cycleCountHeader.getCountOrderId())//原始盘点ID
+                .eq(cycleCountHeader.getStatusCyc() != null, CycleCountHeader::getStatusCyc, cycleCountHeader.getStatusCyc()) //盘点单状态
+                .eq(cycleCountHeader.getCountType() != null ,CycleCountHeader::getCountType, cycleCountHeader.getCountType())//盘点类型
                 .orderByDesc(CycleCountHeader::getId);
 
         if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java
index 86fb3e4..4a7b368 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java
@@ -208,13 +208,6 @@ public class InventoryTransaction implements Serializable {
     private String lockCode;
 
     /**
-     * 上次盘点日期
-     */
-    @TableField(value = "lastCycleCountDate")
-    @ApiModelProperty(value="上次盘点日期")
-    private Date lastCycleCountDate;
-
-    /**
      * 创建时间
      */
     @TableField(value = "created")
@@ -285,4 +278,6 @@ public class InventoryTransaction implements Serializable {
     @ApiModelProperty(value = "供应商编码")
     private String supplierCode;
 
+
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java
index 926b2f3..5903f98 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java
@@ -4,6 +4,8 @@ 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.exception.service.ServiceException;
+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;
@@ -22,11 +24,13 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.ibatis.annotations.Param;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.locks.ReentrantLock;
 
@@ -108,4 +112,81 @@ public class ReceiptDetailController extends BaseController {
     public AjaxResult addSave(ReceiptDetail receiptDetail) {
        return receiptDetailService.saveReceiptDetaial(receiptDetail);
     }
+
+    /**
+     * 修改入库明细
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
+        ReceiptDetail receiptDetail  = receiptDetailService.getById(id);
+        mmap.put("receiptDetail", receiptDetail);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存入库单
+     */
+    @ApiOperation(value="修改入库单 ", notes="修改入库单 ", httpMethod = "POST")
+    @RequiresPermissions("receipt:receiptDetail:add")
+    @Log(title = "入库-入库单 ",operating = "修改入库单 ", action = BusinessType.INSERT)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(
+            @ApiParam(name="receiptDetail",value="入库详情") ReceiptDetail receiptDetail) {
+        return receiptDetailService.updateReceiptDetaial(receiptDetail);
+    }
+
+    /**
+     * 删除入库单
+     */
+    //@ApiOperation(value="删除入库单 ", notes="删除入库单 ", httpMethod = "POST")
+    //@RequiresPermissions("receipt:receiptDetail:add")
+    //@Log(title = "入库-入库单 ",operating = "修改入库单 ", action = BusinessType.INSERT)
+    //@PostMapping("/edit")
+    //@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(receiptDetailService.removeByIds(list));
+    //}
+
+    /**
+     * 审核入库单
+     */
+    @ApiOperation(value="审核入库单", notes="审核入库单", httpMethod = "POST")
+    @RequiresPermissions("receipt:receiptDetail:approval")
+    @Log(title = "入库-入库单 ",operating = "审核入库单 ", action = BusinessType.UPDATE)
+    @PostMapping("/approval")
+    @ResponseBody
+    public AjaxResult approval(@ApiParam(name="id",value="入库明细表id") String ids,
+                               @ApiParam(name="approval",value="审核结果值,10审核驳回,20作废,100审核成功") Integer approval) {
+
+        if (StringUtils.isEmpty(ids)){
+            return AjaxResult.error("id不能为空");
+        }
+        if (approval != 10 || approval != 20 || approval != 100){
+            return AjaxResult.error("传入参数错误");
+        }
+        for (Integer id : Convert.toIntArray(ids)) {
+            ReceiptDetail receiptDetail = new ReceiptDetail();
+            receiptDetail.setId(id);
+            receiptDetail.setProcessStamp(String.valueOf(approval));
+            receiptDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+            if (receiptDetailService.updateById(receiptDetail)){
+                ReceiptHeader receiptHeader = new ReceiptHeader();
+                receiptHeader.setFirstStatus(approval);
+                receiptHeader.setId(receiptDetail.getReceiptId());
+                receiptHeaderService.updateById(receiptHeader);
+            } else {
+                throw new ServiceException("审核失败");
+            }
+        }
+
+        return AjaxResult.success("审核成功");
+    }
 }
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java
index 14f04ea..af2d7d9 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java
@@ -7,4 +7,5 @@ public interface ReceiptDetailService extends IService<ReceiptDetail>{
 
     AjaxResult saveReceiptDetaial(ReceiptDetail receiptDetail);
 
+    AjaxResult updateReceiptDetaial(ReceiptDetail receiptDetail);
 }
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java
index 21f19ae..be419be 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java
@@ -2,10 +2,19 @@ package com.huaheng.pc.receipt.receiptDetail.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.material.domain.Material;
 import com.huaheng.pc.config.material.service.MaterialService;
+import com.huaheng.pc.config.materialType.domain.MaterialType;
+import com.huaheng.pc.config.materialType.service.MaterialTypeService;
+import com.huaheng.pc.config.receiptPreference.domain.ReceiptPreference;
+import com.huaheng.pc.config.receiptPreference.service.ReceiptPreferenceService;
+import com.huaheng.pc.config.receiptType.domain.ReceiptType;
+import com.huaheng.pc.config.receiptType.service.ReceiptTypeService;
+import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail;
+import com.huaheng.pc.config.statusFlow.service.StatusFlowDetailService;
 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
 import org.aspectj.weaver.loadtime.Aj;
@@ -25,6 +34,14 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R
     private MaterialService materialService;
     @Resource
     private ReceiptHeaderService receiptHeaderService;
+    @Resource
+    private ReceiptTypeService receiptTypeService;
+    @Resource
+    private StatusFlowDetailService statusFlowDetailService;
+    @Resource
+    private MaterialTypeService materialTypeService;
+    @Resource
+    private ReceiptPreferenceService receiptPreferenceService;
 
     /**
      * 新增入库明细
@@ -34,15 +51,17 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R
     @Transactional
     public AjaxResult saveReceiptDetaial(ReceiptDetail receiptDetail){
         /* 判断入库头表状态*/
-        LambdaQueryWrapper<ReceiptHeader> lambda = Wrappers.lambdaQuery();
-        lambda.eq(ReceiptHeader::getId, receiptDetail.getReceiptId());
-        ReceiptHeader receiptHeader = receiptHeaderService.getOne(lambda);
+        LambdaQueryWrapper<ReceiptHeader> lambdaReceiptHeader = Wrappers.lambdaQuery();
+        lambdaReceiptHeader.eq(ReceiptHeader::getId, receiptDetail.getReceiptId());
+        ReceiptHeader receiptHeader = receiptHeaderService.getOne(lambdaReceiptHeader);
+
+        //判断入库头表状态
         if (receiptHeader == null ){
-            return AjaxResult.error("找不到主单据");
+            throw new ServiceException("找不到主单据");
         } else if (receiptHeader.getFirstStatus() > 100){
-            return AjaxResult.error("单据进入订单池后,不允许新增明细");
+            throw new ServiceException("单据进入订单池后,不允许新增明细");
         } else if (receiptHeader.getFirstStatus() == 20) {
-            return AjaxResult.error("单据销毁");
+            throw new ServiceException("单据已作废");
         }
         receiptDetail.setReceiptCode(receiptHeader.getCode());
 
@@ -51,7 +70,7 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R
         lambdaQueryWrapper.eq(Material::getCode, receiptDetail.getMaterialCode());
         Material material = materialService.getOne(lambdaQueryWrapper);
         if (material == null) {
-            return AjaxResult.error("物料不存在");
+            throw new ServiceException("物料不存在");
         }
         receiptDetail.setCompanyCode(material.getCompanyCode());
         receiptDetail.setMaterialName(material.getName());
@@ -62,6 +81,36 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R
         receiptDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
         receiptDetail.setWarehouseCode(ShiroUtils.getWarehouseCode());
 
+        //查询头表中绑定的入库类型中的入库流程
+        LambdaQueryWrapper<ReceiptType> lambdaReceiptType = Wrappers.lambdaQuery();
+        lambdaReceiptType.eq(ReceiptType::getCode,  receiptHeader.getReceiptType());
+        ReceiptType receiptType = receiptTypeService.getOne(lambdaReceiptType);
+        if (receiptType.getReceiptFlow() != null){
+            //物料是否有入库流程
+            List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(receiptType.getReceiptFlow());
+            receiptDetail.setProcessStamp(statusFlowDetails.get(0).getFlowCode());
+        } else if (material.getReceivingFlow() != null){
+            //物料是否有入库流程
+            List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(material.getReceivingFlow());
+            receiptDetail.setProcessStamp(statusFlowDetails.get(0).getFlowCode());
+        } else {
+            //该物料类别是否有入库流程
+            LambdaQueryWrapper<MaterialType> lambdaMaterialType = Wrappers.lambdaQuery();
+            lambdaMaterialType.eq(MaterialType::getCode, material.getType());
+            MaterialType materialType = materialTypeService.getOne(lambdaMaterialType);
+            if (materialType.getReceivingFlow() != null) {
+                List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(materialType.getReceivingFlow());
+                receiptDetail.setProcessStamp(statusFlowDetails.get(0).getFlowCode());
+            } else {
+                //以上都没有的情况下查询入库首选项中的入库流程
+                LambdaQueryWrapper<ReceiptPreference> lambda = Wrappers.lambdaQuery();
+                lambda.last("Limit 1");
+                ReceiptPreference receiptPreference = receiptPreferenceService.getOne(lambda);
+                List<StatusFlowDetail> statusFlowDetails = statusFlowDetailService.queryStatusFlowDetail(receiptPreference.getReceivingFlow());
+                receiptDetail.setProcessStamp(statusFlowDetails.get(0).getFlowCode());
+            }
+        }
+
         if (this.save(receiptDetail)) {
             receiptHeader.setTotalQty(receiptHeader.getTotalQty()+receiptDetail.getTotalQty());
             receiptHeader.setTotalLines(receiptHeader.getTotalLines()+1);
@@ -72,4 +121,49 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R
         }
 
     }
+
+    /**
+     * 修改入库明细
+     * @param receiptDetail
+     * @return
+     */
+    @Override
+    @Transactional
+    public AjaxResult updateReceiptDetaial(ReceiptDetail receiptDetail) {
+        /* 先修改入库头表中的总数量和总行数,再更新记录,完成后更新入库头表中总数量和总行数*/
+
+        //查询原记录
+        ReceiptDetail originalReceiptDetail= this.getById(receiptDetail.getId());
+        ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptDetail.getReceiptId());
+        //判断物料编码是否被修改
+        if (!originalReceiptDetail.getMaterialCode().equals(receiptDetail.getMaterialCode())){
+            LambdaQueryWrapper<Material> lambdaMaterial = Wrappers.lambdaQuery();
+            lambdaMaterial.eq(Material::getCode,receiptDetail.getMaterialCode());
+            Material material = materialService.getOne(lambdaMaterial);
+            if (material == null) {
+                throw new ServiceException("该物料编码不存在");
+
+            }else {
+                receiptDetail.setMaterialName(material.getName());
+                receiptDetail.setMaterialSpec(material.getSpec());
+                receiptDetail.setMaterialUnit(material.getUnit());
+
+                receiptHeader.setTotalQty(receiptHeader.getTotalQty()-originalReceiptDetail.getTotalQty());
+                receiptHeader.setTotalLines(receiptHeader.getTotalLines()-1);
+                if ( !receiptHeaderService.updateById(receiptHeader)){
+                    return AjaxResult.error("入库头表更新失败");
+                }
+            }
+        }
+
+        receiptDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+        if ( !this.updateById(receiptDetail) ){
+            return AjaxResult.error("入库明细更新失败");
+        } else {
+            receiptHeader.setTotalQty(receiptHeader.getTotalQty()+receiptDetail.getTotalQty());
+            receiptHeader.setTotalLines(receiptHeader.getTotalLines()+1);
+            receiptHeaderService.updateById(receiptHeader);
+            return AjaxResult.success("修改单据明细成功");
+        }
+    }
 }
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/domain/ReceiptDetailHistory.java b/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/domain/ReceiptDetailHistory.java
new file mode 100644
index 0000000..ec44667
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/domain/ReceiptDetailHistory.java
@@ -0,0 +1,348 @@
+package com.huaheng.pc.receipt.receiptDetailHistory.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+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;
+
+@ApiModel(value="com.huaheng.pc.receipt.receiptDetailHistory.domain.ReceiptDetailHistory")
+@Data
+@TableName(value = "receipt_detail_history")
+public class ReceiptDetailHistory implements Serializable {
+    /**
+     * 入库明细内部号
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value="入库明细内部号")
+    private Integer id;
+
+    /**
+     * 入库单头内部号
+     */
+    @TableField(value = "receiptId")
+    @ApiModelProperty(value="入库单头内部号")
+    private Integer receiptId;
+
+    /**
+     * 入库单
+     */
+    @TableField(value = "receiptCode")
+    @ApiModelProperty(value="入库单")
+    private String receiptCode;
+
+    /**
+     * 仓库
+     */
+    @TableField(value = "warehouseCode")
+    @ApiModelProperty(value="仓库")
+    private String warehouseCode;
+
+    /**
+     * 货主
+     */
+    @TableField(value = "companyCode")
+    @ApiModelProperty(value="货主")
+    private String companyCode;
+
+    /**
+     * 物料编码
+     */
+    @TableField(value = "materialCode")
+    @ApiModelProperty(value="物料编码")
+    private String materialCode;
+
+    /**
+     * 物料信息
+     */
+    @TableField(value = "materialName")
+    @ApiModelProperty(value="物料信息")
+    private String materialName;
+
+    /**
+     * 物料规格
+     */
+    @TableField(value = "materialSpec")
+    @ApiModelProperty(value="物料规格")
+    private String materialSpec;
+
+    /**
+     * 物料单位
+     */
+    @TableField(value = "materialUnit")
+    @ApiModelProperty(value="物料单位")
+    private String materialUnit;
+
+    /**
+     * 供应商编码
+     */
+    @TableField(value = "supplierCode")
+    @ApiModelProperty(value="供应商编码")
+    private String supplierCode;
+
+    /**
+     * 批次
+     */
+    @TableField(value = "batch")
+    @ApiModelProperty(value="批次")
+    private String batch;
+
+    /**
+     * 批号
+     */
+    @TableField(value = "lot")
+    @ApiModelProperty(value="批号")
+    private String lot;
+
+    /**
+     * 质检
+     */
+    @TableField(value = "qcCheck")
+    @ApiModelProperty(value="质检")
+    private String qcCheck;
+
+    /**
+     * 项目号
+     */
+    @TableField(value = "projectNo")
+    @ApiModelProperty(value="项目号")
+    private String projectNo;
+
+    /**
+     * 生产日期
+     */
+    @TableField(value = "manufactureDate")
+    @ApiModelProperty(value="生产日期")
+    private Date manufactureDate;
+
+    /**
+     * 失效日期
+     */
+    @TableField(value = "expirationDate")
+    @ApiModelProperty(value="失效日期")
+    private Date expirationDate;
+
+    /**
+     * 入库日期
+     */
+    @TableField(value = "agingDate")
+    @ApiModelProperty(value="入库日期")
+    private Date agingDate;
+
+    /**
+     * 属性模板
+     */
+    @TableField(value = "attributeTemplateCode")
+    @ApiModelProperty(value="属性模板")
+    private String attributeTemplateCode;
+
+    /**
+     * 属性1
+     */
+    @TableField(value = "attribute1")
+    @ApiModelProperty(value="属性1")
+    private String attribute1;
+
+    /**
+     * 属性2
+     */
+    @TableField(value = "attribute2")
+    @ApiModelProperty(value="属性2")
+    private String attribute2;
+
+    /**
+     * 属性3
+     */
+    @TableField(value = "attribute3")
+    @ApiModelProperty(value="属性3")
+    private String attribute3;
+
+    /**
+     * 属性4
+     */
+    @TableField(value = "attribute4")
+    @ApiModelProperty(value="属性4")
+    private String attribute4;
+
+    /**
+     * 总数量
+     */
+    @TableField(value = "totalQty")
+    @ApiModelProperty(value="总数量")
+    private Integer totalQty;
+
+    /**
+     * 未收数量
+     */
+    @TableField(value = "openQty")
+    @ApiModelProperty(value="未收数量")
+    private Integer openQty;
+
+    /**
+     * ERP单号
+     */
+    @TableField(value = "referCode")
+    @ApiModelProperty(value="ERP单号")
+    private String referCode;
+
+    /**
+     * ERP内部号
+     */
+    @TableField(value = "referId")
+    @ApiModelProperty(value="ERP内部号")
+    private Integer referId;
+
+    /**
+     * ERP行号
+     */
+    @TableField(value = "referLineNum")
+    @ApiModelProperty(value="ERP行号")
+    private String referLineNum;
+
+    /**
+     * 定位规则
+     */
+    @TableField(value = "locatingRule")
+    @ApiModelProperty(value="定位规则")
+    private String locatingRule;
+
+    /**
+     * 库存状态
+     */
+    @TableField(value = "inventorySts")
+    @ApiModelProperty(value="库存状态")
+    private String inventorySts;
+
+    /**
+     * 标价
+     */
+    @TableField(value = "itemListPrice")
+    @ApiModelProperty(value="标价")
+    private BigDecimal itemListPrice;
+
+    /**
+     * 净价
+     */
+    @TableField(value = "itemNetPrice")
+    @ApiModelProperty(value="净价")
+    private BigDecimal itemNetPrice;
+
+    /**
+     * 是否虚拟套件
+     */
+    @TableField(value = "isVirtualBom")
+    @ApiModelProperty(value="是否虚拟套件")
+    private Integer isVirtualBom;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "created")
+    @ApiModelProperty(value="创建时间")
+    private Date created;
+
+    /**
+     * 创建用户
+     */
+    @TableField(value = "createdBy")
+    @ApiModelProperty(value="创建用户")
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "lastUpdated")
+    @ApiModelProperty(value="创建时间")
+    private Date lastUpdated;
+
+    /**
+     * 更新用户
+     */
+    @TableField(value = "lastUpdatedBy")
+    @ApiModelProperty(value="更新用户")
+    private String lastUpdatedBy;
+
+    /**
+     * 数据版本
+     */
+    @TableField(value = "version")
+    @ApiModelProperty(value="数据版本")
+    private Integer version;
+
+    /**
+     * 自定义字段1
+     */
+    @TableField(value = "userDef1")
+    @ApiModelProperty(value="自定义字段1")
+    private String userDef1;
+
+    /**
+     * 自定义字段2
+     */
+    @TableField(value = "userDef2")
+    @ApiModelProperty(value="自定义字段2")
+    private String userDef2;
+
+    /**
+     * 自定义字段3
+     */
+    @TableField(value = "userDef3")
+    @ApiModelProperty(value="自定义字段3")
+    private String userDef3;
+
+    /**
+     * 自定义字段4
+     */
+    @TableField(value = "userDef4")
+    @ApiModelProperty(value="自定义字段4")
+    private String userDef4;
+
+    /**
+     * 自定义字段5
+     */
+    @TableField(value = "userDef5")
+    @ApiModelProperty(value="自定义字段5")
+    private String userDef5;
+
+    /**
+     * 自定义字段6
+     */
+    @TableField(value = "userDef6")
+    @ApiModelProperty(value="自定义字段6")
+    private String userDef6;
+
+    /**
+     * 自定义字段7
+     */
+    @TableField(value = "userDef7")
+    @ApiModelProperty(value="自定义字段7")
+    private String userDef7;
+
+    /**
+     * 自定义字段8
+     */
+    @TableField(value = "userDef8")
+    @ApiModelProperty(value="自定义字段8")
+    private String userDef8;
+
+    /**
+     * 处理标记
+     */
+    @TableField(value = "processStamp")
+    @ApiModelProperty(value="处理标记")
+    private String processStamp;
+
+    /**
+     * 是否删除
+     */
+    @TableField(value = "deleted")
+    @ApiModelProperty(value="是否删除")
+    private Boolean deleted;
+
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/mapper/ReceiptDetailHistoryMapper.java b/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/mapper/ReceiptDetailHistoryMapper.java
new file mode 100644
index 0000000..d0d8753
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/mapper/ReceiptDetailHistoryMapper.java
@@ -0,0 +1,7 @@
+package com.huaheng.pc.receipt.receiptDetailHistory.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaheng.pc.receipt.receiptDetailHistory.domain.ReceiptDetailHistory;
+
+public interface ReceiptDetailHistoryMapper extends BaseMapper<ReceiptDetailHistory> {
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/service/ReceiptDetailHistoryService.java b/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/service/ReceiptDetailHistoryService.java
new file mode 100644
index 0000000..5057220
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/receipt/receiptDetailHistory/service/ReceiptDetailHistoryService.java
@@ -0,0 +1,12 @@
+package com.huaheng.pc.receipt.receiptDetailHistory.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.receipt.receiptDetailHistory.domain.ReceiptDetailHistory;
+import com.huaheng.pc.receipt.receiptDetailHistory.mapper.ReceiptDetailHistoryMapper;
+@Service
+public class ReceiptDetailHistoryService extends ServiceImpl<ReceiptDetailHistoryMapper, ReceiptDetailHistory> {
+
+}
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java b/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java
index 224ea8d..a5e154c 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java
@@ -16,7 +16,9 @@ import com.huaheng.framework.web.page.TableSupport;
 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
@@ -49,7 +51,9 @@ public class ReceiptHeaderController extends BaseController {
     @Log(title = "入库-入库单头表", operating = "查看入库单列表", action = BusinessType.GRANT)
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(ReceiptHeader receiptHeader, String createdBegin, String createdEnd) {
+    public TableDataInfo list(@ApiParam(name="receiptDetail",value="入库头表")ReceiptHeader receiptHeader,
+                              @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin,
+                              @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) {
         LambdaQueryWrapper<ReceiptHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
         PageDomain pageDomain = TableSupport.buildPageRequest();
         Integer pageNum = pageDomain.getPageNum();
@@ -122,4 +126,41 @@ public class ReceiptHeaderController extends BaseController {
         receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
         return toAjax(receiptHeaderService.updateById(receiptHeader));
     }
+
+    /**
+     * 审核入库单
+     */
+    @ApiOperation(value="审核入库单", notes="审核入库单", httpMethod = "POST")
+    @RequiresPermissions("receipt:receiptHeader:approval")
+    @Log(title = "入库-入库单 ",operating = "审核入库单 ", action = BusinessType.UPDATE)
+    @PostMapping("/approval")
+    @ResponseBody
+    public AjaxResult approval(@ApiParam(name="id",value="入库头表id") Integer id,
+                               @ApiParam(name="approval",value="审核结果值,10审核驳回,20作废,100审核成功") Integer approval) {
+        ReceiptHeader receiptHeader = new ReceiptHeader();
+        if (approval != 10 || approval != 20 || approval != 100){
+            return AjaxResult.error("传入参数错误");
+        }
+        receiptHeader.setId(id);
+        receiptHeader.setLastStatus(approval);
+        receiptHeader.setFirstStatus(approval);
+        receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
+        return toAjax(receiptHeaderService.updateById(receiptHeader));
+    }
+
+    /**
+     * 提交审核入库单
+     */
+    @ApiOperation(value="提交审核入库单", notes="提交审核入库单", httpMethod = "POST")
+    @RequiresPermissions("receipt:receiptHeader:approval")
+    @Log(title = "入库-入库单 ",operating = "提交审核入库单 ", action = BusinessType.UPDATE)
+    @PostMapping("/submitReview")
+    @ResponseBody
+    public AjaxResult submitReview(@ApiParam(name="id",value="入库头表id") Integer id) {
+        ReceiptHeader receiptHeader = new ReceiptHeader();
+        receiptHeader.setId(id);
+        receiptHeader.setFirstStatus(5);
+        receiptHeader.setLastStatus(5);
+        return toAjax(receiptHeaderService.updateById(receiptHeader));
+    }
 }
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java b/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java
index ee84aae..f03e9ff 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java
@@ -3,10 +3,13 @@ package com.huaheng.pc.receipt.receiptHeader.service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.receiptType.domain.ReceiptType;
 import com.huaheng.pc.config.receiptType.service.ReceiptTypeService;
+import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail;
+import com.huaheng.pc.config.statusFlow.service.StatusFlowDetailService;
 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
 import com.huaheng.pc.receipt.receiptHeader.mapper.ReceiptHeaderMapper;
 import org.springframework.stereotype.Service;
@@ -14,19 +17,29 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 
 @Service
 public class ReceiptHeaderService extends ServiceImpl<ReceiptHeaderMapper, ReceiptHeader> {
 
     @Resource
     private ReceiptTypeService receiptTypeService;
+    @Resource
+    private StatusFlowDetailService statusFlowDetailService;
 
     public AjaxResult saveReceiptHeader(ReceiptHeader receiptHeader){
         LambdaQueryWrapper<ReceiptType> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(ReceiptType::getCode, receiptHeader.getReceiptType());
-        if(receiptTypeService.getOne(lambdaQueryWrapper) == null) {
-            return  AjaxResult.error("没有对应的入库单类型");
+        ReceiptType receiptType = receiptTypeService.getOne(lambdaQueryWrapper);
+
+        //流程详情查询
+        LambdaQueryWrapper<StatusFlowDetail> lambdaStatus = Wrappers.lambdaQuery();
+        lambdaStatus.orderByAsc(StatusFlowDetail::getSequence);
+
+        if(receiptType == null) {
+            throw new ServiceException("没有对应的入库单类型");
         }
+
         String code = createCode(receiptHeader.getReceiptType());
         receiptHeader.setCode(code);
         receiptHeader.setFirstStatus(0);
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/domain/ReceiptHeaderHistory.java b/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/domain/ReceiptHeaderHistory.java
new file mode 100644
index 0000000..523f895
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/domain/ReceiptHeaderHistory.java
@@ -0,0 +1,299 @@
+package com.huaheng.pc.receipt.receiptHeaderHistory.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+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;
+
+@ApiModel(value="com.huaheng.pc.receipt.receiptHeaderHistory.domain.ReceiptHeaderHistory")
+@Data
+@TableName(value = "receipt_header_history")
+public class ReceiptHeaderHistory implements Serializable {
+    /**
+     * 入库单内部号
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value="入库单内部号")
+    private Integer id;
+
+    /**
+     * 仓库
+     */
+    @TableField(value = "warehouseCode")
+    @ApiModelProperty(value="仓库")
+    private String warehouseCode;
+
+    /**
+     * 货主
+     */
+    @TableField(value = "companyCode")
+    @ApiModelProperty(value="货主")
+    private String companyCode;
+
+    /**
+     * 入库单号
+     */
+    @TableField(value = "code")
+    @ApiModelProperty(value="入库单号")
+    private String code;
+
+    /**
+     * 入库类型
+     */
+    @TableField(value = "receiptType")
+    @ApiModelProperty(value="入库类型")
+    private String receiptType;
+
+    /**
+     * 首状态
+     */
+    @TableField(value = "firstStatus")
+    @ApiModelProperty(value="首状态")
+    private Integer firstStatus;
+
+    /**
+     * 尾状态
+     */
+    @TableField(value = "lastStatus")
+    @ApiModelProperty(value="尾状态")
+    private Integer lastStatus;
+
+    /**
+     * 关联单号
+     */
+    @TableField(value = "referCode")
+    @ApiModelProperty(value="关联单号")
+    private String referCode;
+
+    /**
+     * 关联单号(内部号)
+     */
+    @TableField(value = "referId")
+    @ApiModelProperty(value="关联单号(内部号)")
+    private Integer referId;
+
+    /**
+     * 关联订单类型
+     */
+    @TableField(value = "referType")
+    @ApiModelProperty(value="关联订单类型")
+    private String referType;
+
+    /**
+     * 预计到达日期
+     */
+    @TableField(value = "scheduledArriveDate")
+    @ApiModelProperty(value="预计到达日期")
+    private Date scheduledArriveDate;
+
+    /**
+     * 实际到达日期
+     */
+    @TableField(value = "actualArriveDate")
+    @ApiModelProperty(value="实际到达日期")
+    private Date actualArriveDate;
+
+    /**
+     * 月台货位
+     */
+    @TableField(value = "recvDock")
+    @ApiModelProperty(value="月台货位")
+    private String recvDock;
+
+    /**
+     * 关闭时间
+     */
+    @TableField(value = "closedAt")
+    @ApiModelProperty(value="关闭时间")
+    private Date closedAt;
+
+    /**
+     * 强制关闭用户
+     */
+    @TableField(value = "closedBy")
+    @ApiModelProperty(value="强制关闭用户")
+    private String closedBy;
+
+    /**
+     * 开始收货日期
+     */
+    @TableField(value = "startCheckinDatetime")
+    @ApiModelProperty(value="开始收货日期")
+    private Date startCheckinDatetime;
+
+    /**
+     * 结束收货日期
+     */
+    @TableField(value = "endCheckinDatetime")
+    @ApiModelProperty(value="结束收货日期")
+    private Date endCheckinDatetime;
+
+    /**
+     * 总数量
+     */
+    @TableField(value = "totalQty")
+    @ApiModelProperty(value="总数量")
+    private Integer totalQty;
+
+    /**
+     * 总行数
+     */
+    @TableField(value = "totalLines")
+    @ApiModelProperty(value="总行数")
+    private Integer totalLines;
+
+    /**
+     * 总箱数
+     */
+    @TableField(value = "toalCases")
+    @ApiModelProperty(value="总箱数")
+    private Integer toalCases;
+
+    /**
+     * 总重量
+     */
+    @TableField(value = "totalWeight")
+    @ApiModelProperty(value="总重量")
+    private BigDecimal totalWeight;
+
+    /**
+     * 总体积
+     */
+    @TableField(value = "totalVolume")
+    @ApiModelProperty(value="总体积")
+    private BigDecimal totalVolume;
+
+    /**
+     * 入库单备注
+     */
+    @TableField(value = "receiptNote")
+    @ApiModelProperty(value="入库单备注")
+    private String receiptNote;
+
+    /**
+     * 锁定
+     */
+    @TableField(value = "locked")
+    @ApiModelProperty(value="锁定")
+    private Integer locked;
+
+    /**
+     * 锁定用户
+     */
+    @TableField(value = "lockedBy")
+    @ApiModelProperty(value="锁定用户")
+    private String lockedBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "created")
+    @ApiModelProperty(value="创建时间")
+    private Date created;
+
+    /**
+     * 创建用户
+     */
+    @TableField(value = "createdBy")
+    @ApiModelProperty(value="创建用户")
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "lastUpdated")
+    @ApiModelProperty(value="创建时间")
+    private Date lastUpdated;
+
+    /**
+     * 更新用户
+     */
+    @TableField(value = "lastUpdatedBy")
+    @ApiModelProperty(value="更新用户")
+    private String lastUpdatedBy;
+
+    /**
+     * 数据版本
+     */
+    @TableField(value = "version")
+    @ApiModelProperty(value="数据版本")
+    private Integer version;
+
+    /**
+     * 自定义字段1
+     */
+    @TableField(value = "userDef1")
+    @ApiModelProperty(value="自定义字段1")
+    private String userDef1;
+
+    /**
+     * 自定义字段2
+     */
+    @TableField(value = "userDef2")
+    @ApiModelProperty(value="自定义字段2")
+    private String userDef2;
+
+    /**
+     * 自定义字段3
+     */
+    @TableField(value = "userDef3")
+    @ApiModelProperty(value="自定义字段3")
+    private String userDef3;
+
+    /**
+     * 自定义字段4
+     */
+    @TableField(value = "userDef4")
+    @ApiModelProperty(value="自定义字段4")
+    private String userDef4;
+
+    /**
+     * 自定义字段5
+     */
+    @TableField(value = "userDef5")
+    @ApiModelProperty(value="自定义字段5")
+    private String userDef5;
+
+    /**
+     * 自定义字段6
+     */
+    @TableField(value = "userDef6")
+    @ApiModelProperty(value="自定义字段6")
+    private String userDef6;
+
+    /**
+     * 自定义字段7
+     */
+    @TableField(value = "userDef7")
+    @ApiModelProperty(value="自定义字段7")
+    private String userDef7;
+
+    /**
+     * 自定义字段8
+     */
+    @TableField(value = "userDef8")
+    @ApiModelProperty(value="自定义字段8")
+    private String userDef8;
+
+    /**
+     * 处理标记
+     */
+    @TableField(value = "processStamp")
+    @ApiModelProperty(value="处理标记")
+    private String processStamp;
+
+    /**
+     * 是否删除
+     */
+    @TableField(value = "deleted")
+    @ApiModelProperty(value="是否删除")
+    private Boolean deleted;
+
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java b/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java
new file mode 100644
index 0000000..aa1d978
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/mapper/ReceiptHeaderHistoryMapper.java
@@ -0,0 +1,7 @@
+package com.huaheng.pc.receipt.receiptHeaderHistory.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaheng.pc.receipt.receiptHeaderHistory.domain.ReceiptHeaderHistory;
+
+public interface ReceiptHeaderHistoryMapper extends BaseMapper<ReceiptHeaderHistory> {
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/service/ReceiptHeaderHistoryService.java b/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/service/ReceiptHeaderHistoryService.java
new file mode 100644
index 0000000..dcd509c
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/service/ReceiptHeaderHistoryService.java
@@ -0,0 +1,12 @@
+package com.huaheng.pc.receipt.receiptHeaderHistory.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.receipt.receiptHeaderHistory.domain.ReceiptHeaderHistory;
+import com.huaheng.pc.receipt.receiptHeaderHistory.mapper.ReceiptHeaderHistoryMapper;
+@Service
+public class ReceiptHeaderHistoryService extends ServiceImpl<ReceiptHeaderHistoryMapper, ReceiptHeaderHistory> {
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/controller/ShipmentDetailHistoryController.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/controller/ShipmentDetailHistoryController.java
index 21f3005..b7c54a2 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/controller/ShipmentDetailHistoryController.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/controller/ShipmentDetailHistoryController.java
@@ -15,6 +15,8 @@ import com.huaheng.framework.web.page.TableDataInfo;
 import com.huaheng.framework.web.page.TableSupport;
 import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
 import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
+import com.huaheng.pc.shipment.shipmentDetailHistory.domain.ShipmentDetailHistory;
+import com.huaheng.pc.shipment.shipmentDetailHistory.service.ShipmentDetailHistoryService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -24,7 +26,7 @@ import org.springframework.web.bind.annotation.*;
 import java.util.List;
 
 /**
- * 出库明细 信息操作处理
+ * 历史出库明细 信息操作处理
  * 
  * @author huaheng
  * @date 2018-08-19
@@ -36,12 +38,12 @@ public class ShipmentDetailHistoryController extends BaseController
     private String prefix = "shipment/shipmentDetailHistory";
 	
 	@Autowired
-	private ShipmentDetailService shipmentDetailService;
+	private ShipmentDetailHistoryService shipmentDetailHistoryService;
 
 	
 	@RequiresPermissions("shipment:bill:view")
     @GetMapping("/{shipmentId}/{shipmentCode}")
-	public String shipmentDetail(@PathVariable("shipmentId") String shipmentId, @PathVariable("shipmentCode") String shipmentCode,@PathVariable("inventoryStatus") String inventoryStatus, ModelMap mmap)
+	public String shipmentHistoryDetail(@PathVariable("shipmentId") String shipmentId, @PathVariable("shipmentCode") String shipmentCode,@PathVariable("inventoryStatus") String inventoryStatus, ModelMap mmap)
 	{
         mmap.put("receiptId", shipmentId);
 		mmap.put("shipmentCode", shipmentCode);
@@ -53,31 +55,31 @@ public class ShipmentDetailHistoryController extends BaseController
 	 * 查询出库明细列表
 	 */
 	@RequiresPermissions("shipment:bill:list")
-	@Log(title = "出库-出库单", operating= "查看出库明细", action = BusinessType.GRANT)
+	@Log(title = "出库-历史出库单", operating= "查看历史出库明细", action = BusinessType.GRANT)
 	@PostMapping("/list")
 	@ResponseBody
-	public TableDataInfo list(ShipmentDetail shipmentDetail)
+	public TableDataInfo list(ShipmentDetailHistory shipmentDetailHistory)
 	{
-		LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+		LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper = Wrappers.lambdaQuery();
 		PageDomain pageDomain = TableSupport.buildPageRequest();
 		Integer pageNum = pageDomain.getPageNum();
 		Integer pageSize = pageDomain.getPageSize();
 
 		lambdaQueryWrapper
-				.eq(ShipmentDetail::getWarehouseCode,ShiroUtils.getWarehouseCode())
-				.in(ShipmentDetail::getCompanyCode,ShiroUtils.getCompanyCodeList())
-				.eq(StringUtils.isNotEmpty(shipmentDetail.getShipmentCode()),ShipmentDetail::getShipmentCode,shipmentDetail.getShipmentCode())
-				.orderByAsc(ShipmentDetail::getId);
+				.eq(ShipmentDetailHistory::getWarehouseCode,ShiroUtils.getWarehouseCode())
+				.in(ShipmentDetailHistory::getCompanyCode,ShiroUtils.getCompanyCodeList())
+				.eq(StringUtils.isNotEmpty(shipmentDetailHistory.getShipmentCode()),ShipmentDetailHistory::getShipmentCode,shipmentDetailHistory.getShipmentCode())
+				.orderByAsc(ShipmentDetailHistory::getId);
 
 		if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
 			/**
 			 * 使用分页查询
 			 */
-			Page<ShipmentDetail> page = new Page<>(pageNum, pageSize);
-			IPage<ShipmentDetail> iPage = shipmentDetailService.page(page, lambdaQueryWrapper);
+			Page<ShipmentDetailHistory> page = new Page<>(pageNum, pageSize);
+			IPage<ShipmentDetailHistory> iPage = shipmentDetailHistoryService.page(page, lambdaQueryWrapper);
 			return getMpDataTable(iPage.getRecords(),iPage.getTotal());
 		} else {
-			List<ShipmentDetail> list = shipmentDetailService.list(lambdaQueryWrapper);
+			List<ShipmentDetailHistory> list = shipmentDetailHistoryService.list(lambdaQueryWrapper);
 			return getDataTable(list);
 		}
 	}
@@ -87,12 +89,12 @@ public class ShipmentDetailHistoryController extends BaseController
 	 * 删除出库明细
 	 */
 	@RequiresPermissions("shipment:bill:remove")
-	@Log(title = "出库-出库单", operating= "删除出库明细", action = BusinessType.DELETE)
+	@Log(title = "出库-历史出库单", operating= "删除历史出库明细", action = BusinessType.DELETE)
 	@PostMapping( "/remove")
 	@ResponseBody
 	public AjaxResult remove(String ids)
 	{
-        AjaxResult result = shipmentDetailService.deleteDetail(ids);
+        AjaxResult result = shipmentDetailHistoryService.deleteDetail(ids);
 		return result;
 	}
 
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/domain/ShipmentDetailHistory.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/domain/ShipmentDetailHistory.java
new file mode 100644
index 0000000..9b4d99f
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/domain/ShipmentDetailHistory.java
@@ -0,0 +1,1095 @@
+package com.huaheng.pc.shipment.shipmentDetailHistory.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+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.shipment.shipmentDetail.domain.ShipmentDetailHistory")
+@TableName(value = "shipment_detail_history")
+public class ShipmentDetailHistory implements Serializable {
+    /**
+     * 出库单内部行号
+     */
+     @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value="出库单内部行号")
+    private Integer id;
+
+    /**
+     * 出库单内部号
+     */
+    @TableField(value = "shipmentId")
+    @ApiModelProperty(value="出库单内部号")
+    private Integer shipmentId;
+
+    /**
+     * 仓库
+     */
+    @TableField(value = "warehouseCode")
+    @ApiModelProperty(value="仓库")
+    private String warehouseCode;
+
+    /**
+     * 货主
+     */
+    @TableField(value = "companyCode")
+    @ApiModelProperty(value="货主")
+    private String companyCode;
+
+    /**
+     * 出库单号
+     */
+    @TableField(value = "shipmentCode")
+    @ApiModelProperty(value="出库单号")
+    private String shipmentCode;
+
+    /**
+     * 上游订单号
+     */
+    @TableField(value = "referCode")
+    @ApiModelProperty(value="上游订单号")
+    private String referCode;
+
+    /**
+     * 上游订单内部号
+     */
+    @TableField(value = "referId")
+    @ApiModelProperty(value="上游订单内部号")
+    private Integer referId;
+
+    /**
+     * 上游订单行号
+     */
+    @TableField(value = "referLineNum")
+    @ApiModelProperty(value="上游订单行号")
+    private String referLineNum;
+
+    /**
+     * 物料
+     */
+    @TableField(value = "materialCode")
+    @ApiModelProperty(value="物料")
+    private String materialCode;
+
+    /**
+     * 物料描述
+     */
+    @TableField(value = "materialName")
+    @ApiModelProperty(value="物料描述")
+    private String materialName;
+
+    /**
+     * 物料规格
+     */
+    @TableField(value = "materialSpec")
+    @ApiModelProperty(value="物料规格")
+    private String materialSpec;
+
+    /**
+     * 物料单位
+     */
+    @TableField(value = "materialUnit")
+    @ApiModelProperty(value="物料单位")
+    private String materialUnit;
+
+    /**
+     * 发货数量
+     */
+    @TableField(value = "shipQty")
+    @ApiModelProperty(value="发货数量")
+    private BigDecimal shipQty;
+
+    /**
+     * 请求数量
+     */
+    @TableField(value = "requestQty")
+    @ApiModelProperty(value="请求数量")
+    private BigDecimal requestQty;
+
+    /**
+     * 分配规则
+     */
+    @TableField(value = "allocationRule")
+    @ApiModelProperty(value="分配规则")
+    private String allocationRule;
+
+    /**
+     * 补货规则
+     */
+    @TableField(value = "replenishmentRule")
+    @ApiModelProperty(value="补货规则")
+    private String replenishmentRule;
+
+    /**
+     * 拣货货位
+     */
+    @TableField(value = "pickLocs")
+    @ApiModelProperty(value="拣货货位")
+    private String pickLocs;
+
+    /**
+     * 属性1
+     */
+    @TableField(value = "attribute1")
+    @ApiModelProperty(value="属性1")
+    private String attribute1;
+
+    /**
+     * 属性2
+     */
+    @TableField(value = "attribute2")
+    @ApiModelProperty(value="属性2")
+    private String attribute2;
+
+    /**
+     * 属性3
+     */
+    @TableField(value = "attribute3")
+    @ApiModelProperty(value="属性3")
+    private String attribute3;
+
+    /**
+     * 属性4
+     */
+    @TableField(value = "attribute4")
+    @ApiModelProperty(value="属性4")
+    private String attribute4;
+
+    /**
+     * 批次
+     */
+    @TableField(value = "batch")
+    @ApiModelProperty(value="批次")
+    private String batch;
+
+    /**
+     * 批号
+     */
+    @TableField(value = "lot")
+    @ApiModelProperty(value="批号")
+    private String lot;
+
+    /**
+     * 项目号
+     */
+    @TableField(value = "projectNo")
+    @ApiModelProperty(value="项目号")
+    private String projectNo;
+
+    /**
+     * 生产日期
+     */
+    @TableField(value = "manufactureDate")
+    @ApiModelProperty(value="生产日期")
+    private Date manufactureDate;
+
+    /**
+     * 失效日期
+     */
+    @TableField(value = "expirationDate")
+    @ApiModelProperty(value="失效日期")
+    private Date expirationDate;
+
+    /**
+     * 入库日期
+     */
+    @TableField(value = "agingDate")
+    @ApiModelProperty(value="入库日期")
+    private Date agingDate;
+
+    /**
+     * 库存状态
+     */
+    @TableField(value = "inventorySts")
+    @ApiModelProperty(value="库存状态")
+    private String inventorySts;
+
+    /**
+     * 月台货位
+     */
+    @TableField(value = "dockLoc")
+    @ApiModelProperty(value="月台货位")
+    private String dockLoc;
+
+    /**
+     * 包装分类
+     */
+    @TableField(value = "packingClass")
+    @ApiModelProperty(value="包装分类")
+    private String packingClass;
+
+
+    /**
+     * 状态
+     */
+    @TableField(value = "status")
+    @ApiModelProperty(value="状态")
+    private Integer status;
+
+    /**
+     * 波次号
+     */
+    @TableField(value = "waveId")
+    @ApiModelProperty(value="波次号")
+    private Integer waveId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "created")
+    @ApiModelProperty(value="创建时间")
+    private Date created;
+
+    /**
+     * 创建用户
+     */
+    @TableField(value = "createdBy")
+    @ApiModelProperty(value="创建用户")
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "lastUpdated")
+    @ApiModelProperty(value="创建时间")
+    private Date lastUpdated;
+
+    /**
+     * 更新用户
+     */
+    @TableField(value = "lastUpdatedBy")
+    @ApiModelProperty(value="更新用户")
+    private String lastUpdatedBy;
+
+    /**
+     * 数据版本
+     */
+    @TableField(value = "version")
+    @ApiModelProperty(value="数据版本")
+    private Integer version;
+
+    /**
+     * 自定义字段1
+     */
+    @TableField(value = "userDef1")
+    @ApiModelProperty(value="自定义字段1")
+    private String userDef1;
+
+    /**
+     * 自定义字段2
+     */
+    @TableField(value = "userDef2")
+    @ApiModelProperty(value="自定义字段2")
+    private String userDef2;
+
+    /**
+     * 自定义字段3
+     */
+    @TableField(value = "userDef3")
+    @ApiModelProperty(value="自定义字段3")
+    private String userDef3;
+
+    /**
+     * 处理标记
+     */
+    @TableField(value = "processStamp")
+    @ApiModelProperty(value="处理标记")
+    private String processStamp;
+
+    private static final long serialVersionUID = 1L;
+
+    public static final String COL_SHIPMENTID = "shipmentId";
+
+    public static final String COL_WAREHOUSECODE = "warehouseCode";
+
+    public static final String COL_COMPANYCODE = "companyCode";
+
+    public static final String COL_SHIPMENTCODE = "shipmentCode";
+
+    public static final String COL_REFERCODE = "referCode";
+
+    public static final String COL_REFERID = "referId";
+
+    public static final String COL_REFERLINENUM = "referLineNum";
+
+    public static final String COL_MATERIALCODE = "materialCode";
+
+    public static final String COL_MATERIALNAME = "materialName";
+
+    public static final String COL_MATERIALSPEC = "materialSpec";
+
+    public static final String COL_MATERIALUNIT = "materialUnit";
+
+    public static final String COL_SHIPQTY = "shipQty";
+
+    public static final String COL_REQUESTQTY = "requestQty";
+
+    public static final String COL_ALLOCATIONRULE = "allocationRule";
+
+    public static final String COL_REPLENISHMENTRULE = "replenishmentRule";
+
+    public static final String COL_PICKLOCS = "pickLocs";
+
+    public static final String COL_ATTRIBUTE1 = "attribute1";
+
+    public static final String COL_ATTRIBUTE2 = "attribute2";
+
+    public static final String COL_ATTRIBUTE3 = "attribute3";
+
+    public static final String COL_ATTRIBUTE4 = "attribute4";
+
+    public static final String COL_BATCH = "batch";
+
+    public static final String COL_LOT = "lot";
+
+    public static final String COL_PROJECTNO = "projectNo";
+
+    public static final String COL_MANUFACTUREDATE = "manufactureDate";
+
+    public static final String COL_EXPIRATIONDATE = "expirationDate";
+
+    public static final String COL_AGINGDATE = "agingDate";
+
+    public static final String COL_INVENTORYSTS = "inventorySts";
+
+    public static final String COL_DOCKLOC = "dockLoc";
+
+    public static final String COL_PACKINGCLASS = "packingClass";
+
+    public static final String COL_ENABLE = "enable";
+
+    public static final String COL_WAVEID = "waveId";
+
+    public static final String COL_CREATED = "created";
+
+    public static final String COL_CREATEDBY = "createdBy";
+
+    public static final String COL_LASTUPDATED = "lastUpdated";
+
+    public static final String COL_LASTUPDATEDBY = "lastUpdatedBy";
+
+    public static final String COL_VERSION = "version";
+
+    public static final String COL_USERDEF1 = "userDef1";
+
+    public static final String COL_USERDEF2 = "userDef2";
+
+    public static final String COL_USERDEF3 = "userDef3";
+
+    public static final String COL_PROCESSSTAMP = "processStamp";
+
+    /**
+     * 获取出库单内部行号
+     *
+     * @return id - 出库单内部行号
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * 设置出库单内部行号
+     *
+     * @param id 出库单内部行号
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 获取出库单内部号
+     *
+     * @return shipmentId - 出库单内部号
+     */
+    public Integer getShipmentId() {
+        return shipmentId;
+    }
+
+    /**
+     * 设置出库单内部号
+     *
+     * @param shipmentId 出库单内部号
+     */
+    public void setShipmentId(Integer shipmentId) {
+        this.shipmentId = shipmentId;
+    }
+
+    /**
+     * 获取仓库
+     *
+     * @return warehouseCode - 仓库
+     */
+    public String getWarehouseCode() {
+        return warehouseCode;
+    }
+
+    /**
+     * 设置仓库
+     *
+     * @param warehouseCode 仓库
+     */
+    public void setWarehouseCode(String warehouseCode) {
+        this.warehouseCode = warehouseCode;
+    }
+
+    /**
+     * 获取货主
+     *
+     * @return companyCode - 货主
+     */
+    public String getCompanyCode() {
+        return companyCode;
+    }
+
+    /**
+     * 设置货主
+     *
+     * @param companyCode 货主
+     */
+    public void setCompanyCode(String companyCode) {
+        this.companyCode = companyCode;
+    }
+
+    /**
+     * 获取出库单号
+     *
+     * @return shipmentCode - 出库单号
+     */
+    public String getShipmentCode() {
+        return shipmentCode;
+    }
+
+    /**
+     * 设置出库单号
+     *
+     * @param shipmentCode 出库单号
+     */
+    public void setShipmentCode(String shipmentCode) {
+        this.shipmentCode = shipmentCode;
+    }
+
+    /**
+     * 获取上游订单号
+     *
+     * @return referCode - 上游订单号
+     */
+    public String getReferCode() {
+        return referCode;
+    }
+
+    /**
+     * 设置上游订单号
+     *
+     * @param referCode 上游订单号
+     */
+    public void setReferCode(String referCode) {
+        this.referCode = referCode;
+    }
+
+    /**
+     * 获取上游订单内部号
+     *
+     * @return referId - 上游订单内部号
+     */
+    public Integer getReferId() {
+        return referId;
+    }
+
+    /**
+     * 设置上游订单内部号
+     *
+     * @param referId 上游订单内部号
+     */
+    public void setReferId(Integer referId) {
+        this.referId = referId;
+    }
+
+    /**
+     * 获取上游订单行号
+     *
+     * @return referLineNum - 上游订单行号
+     */
+    public String getReferLineNum() {
+        return referLineNum;
+    }
+
+    /**
+     * 设置上游订单行号
+     *
+     * @param referLineNum 上游订单行号
+     */
+    public void setReferLineNum(String referLineNum) {
+        this.referLineNum = referLineNum;
+    }
+
+    /**
+     * 获取物料
+     *
+     * @return materialCode - 物料
+     */
+    public String getMaterialCode() {
+        return materialCode;
+    }
+
+    /**
+     * 设置物料
+     *
+     * @param materialCode 物料
+     */
+    public void setMaterialCode(String materialCode) {
+        this.materialCode = materialCode;
+    }
+
+    /**
+     * 获取物料描述
+     *
+     * @return materialName - 物料描述
+     */
+    public String getMaterialName() {
+        return materialName;
+    }
+
+    /**
+     * 设置物料描述
+     *
+     * @param materialName 物料描述
+     */
+    public void setMaterialName(String materialName) {
+        this.materialName = materialName;
+    }
+
+    /**
+     * 获取物料规格
+     *
+     * @return materialSpec - 物料规格
+     */
+    public String getMaterialSpec() {
+        return materialSpec;
+    }
+
+    /**
+     * 设置物料规格
+     *
+     * @param materialSpec 物料规格
+     */
+    public void setMaterialSpec(String materialSpec) {
+        this.materialSpec = materialSpec;
+    }
+
+    /**
+     * 获取物料单位
+     *
+     * @return materialUnit - 物料单位
+     */
+    public String getMaterialUnit() {
+        return materialUnit;
+    }
+
+    /**
+     * 设置物料单位
+     *
+     * @param materialUnit 物料单位
+     */
+    public void setMaterialUnit(String materialUnit) {
+        this.materialUnit = materialUnit;
+    }
+
+    public BigDecimal getShipQty() {
+        return shipQty;
+    }
+
+    public void setShipQty(BigDecimal shipQty) {
+        this.shipQty = shipQty;
+    }
+
+    public BigDecimal getRequestQty() {
+        return requestQty;
+    }
+
+    public void setRequestQty(BigDecimal requestQty) {
+        this.requestQty = requestQty;
+    }
+
+    /**
+     * 获取分配规则
+     *
+     * @return allocationRule - 分配规则
+     */
+    public String getAllocationRule() {
+        return allocationRule;
+    }
+
+    /**
+     * 设置分配规则
+     *
+     * @param allocationRule 分配规则
+     */
+    public void setAllocationRule(String allocationRule) {
+        this.allocationRule = allocationRule;
+    }
+
+    /**
+     * 获取补货规则
+     *
+     * @return replenishmentRule - 补货规则
+     */
+    public String getReplenishmentRule() {
+        return replenishmentRule;
+    }
+
+    /**
+     * 设置补货规则
+     *
+     * @param replenishmentRule 补货规则
+     */
+    public void setReplenishmentRule(String replenishmentRule) {
+        this.replenishmentRule = replenishmentRule;
+    }
+
+    /**
+     * 获取拣货货位
+     *
+     * @return pickLocs - 拣货货位
+     */
+    public String getPickLocs() {
+        return pickLocs;
+    }
+
+    /**
+     * 设置拣货货位
+     *
+     * @param pickLocs 拣货货位
+     */
+    public void setPickLocs(String pickLocs) {
+        this.pickLocs = pickLocs;
+    }
+
+    /**
+     * 获取属性1
+     *
+     * @return attribute1 - 属性1
+     */
+    public String getAttribute1() {
+        return attribute1;
+    }
+
+    /**
+     * 设置属性1
+     *
+     * @param attribute1 属性1
+     */
+    public void setAttribute1(String attribute1) {
+        this.attribute1 = attribute1;
+    }
+
+    /**
+     * 获取属性2
+     *
+     * @return attribute2 - 属性2
+     */
+    public String getAttribute2() {
+        return attribute2;
+    }
+
+    /**
+     * 设置属性2
+     *
+     * @param attribute2 属性2
+     */
+    public void setAttribute2(String attribute2) {
+        this.attribute2 = attribute2;
+    }
+
+    /**
+     * 获取属性3
+     *
+     * @return attribute3 - 属性3
+     */
+    public String getAttribute3() {
+        return attribute3;
+    }
+
+    /**
+     * 设置属性3
+     *
+     * @param attribute3 属性3
+     */
+    public void setAttribute3(String attribute3) {
+        this.attribute3 = attribute3;
+    }
+
+    /**
+     * 获取属性4
+     *
+     * @return attribute4 - 属性4
+     */
+    public String getAttribute4() {
+        return attribute4;
+    }
+
+    /**
+     * 设置属性4
+     *
+     * @param attribute4 属性4
+     */
+    public void setAttribute4(String attribute4) {
+        this.attribute4 = attribute4;
+    }
+
+    /**
+     * 获取批次
+     *
+     * @return batch - 批次
+     */
+    public String getBatch() {
+        return batch;
+    }
+
+    /**
+     * 设置批次
+     *
+     * @param batch 批次
+     */
+    public void setBatch(String batch) {
+        this.batch = batch;
+    }
+
+    /**
+     * 获取批号
+     *
+     * @return lot - 批号
+     */
+    public String getLot() {
+        return lot;
+    }
+
+    /**
+     * 设置批号
+     *
+     * @param lot 批号
+     */
+    public void setLot(String lot) {
+        this.lot = lot;
+    }
+
+    /**
+     * 获取项目号
+     *
+     * @return projectNo - 项目号
+     */
+    public String getProjectNo() {
+        return projectNo;
+    }
+
+    /**
+     * 设置项目号
+     *
+     * @param projectNo 项目号
+     */
+    public void setProjectNo(String projectNo) {
+        this.projectNo = projectNo;
+    }
+
+    /**
+     * 获取生产日期
+     *
+     * @return manufactureDate - 生产日期
+     */
+    public Date getManufactureDate() {
+        return manufactureDate;
+    }
+
+    /**
+     * 设置生产日期
+     *
+     * @param manufactureDate 生产日期
+     */
+    public void setManufactureDate(Date manufactureDate) {
+        this.manufactureDate = manufactureDate;
+    }
+
+    /**
+     * 获取失效日期
+     *
+     * @return expirationDate - 失效日期
+     */
+    public Date getExpirationDate() {
+        return expirationDate;
+    }
+
+    /**
+     * 设置失效日期
+     *
+     * @param expirationDate 失效日期
+     */
+    public void setExpirationDate(Date expirationDate) {
+        this.expirationDate = expirationDate;
+    }
+
+    /**
+     * 获取入库日期
+     *
+     * @return agingDate - 入库日期
+     */
+    public Date getAgingDate() {
+        return agingDate;
+    }
+
+    /**
+     * 设置入库日期
+     *
+     * @param agingDate 入库日期
+     */
+    public void setAgingDate(Date agingDate) {
+        this.agingDate = agingDate;
+    }
+
+    /**
+     * 获取库存状态
+     *
+     * @return inventorySts - 库存状态
+     */
+    public String getInventorySts() {
+        return inventorySts;
+    }
+
+    /**
+     * 设置库存状态
+     *
+     * @param inventorySts 库存状态
+     */
+    public void setInventorySts(String inventorySts) {
+        this.inventorySts = inventorySts;
+    }
+
+    /**
+     * 获取月台货位
+     *
+     * @return dockLoc - 月台货位
+     */
+    public String getDockLoc() {
+        return dockLoc;
+    }
+
+    /**
+     * 设置月台货位
+     *
+     * @param dockLoc 月台货位
+     */
+    public void setDockLoc(String dockLoc) {
+        this.dockLoc = dockLoc;
+    }
+
+    /**
+     * 获取包装分类
+     *
+     * @return packingClass - 包装分类
+     */
+    public String getPackingClass() {
+        return packingClass;
+    }
+
+    /**
+     * 设置包装分类
+     *
+     * @param packingClass 包装分类
+     */
+    public void setPackingClass(String packingClass) {
+        this.packingClass = packingClass;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    /**
+     * 获取波次号
+     *
+     * @return waveId - 波次号
+     */
+    public Integer getWaveId() {
+        return waveId;
+    }
+
+    /**
+     * 设置波次号
+     *
+     * @param waveId 波次号
+     */
+    public void setWaveId(Integer waveId) {
+        this.waveId = waveId;
+    }
+
+    /**
+     * 获取创建时间
+     *
+     * @return created - 创建时间
+     */
+    public Date getCreated() {
+        return created;
+    }
+
+    /**
+     * 设置创建时间
+     *
+     * @param created 创建时间
+     */
+    public void setCreated(Date created) {
+        this.created = created;
+    }
+
+    /**
+     * 获取创建用户
+     *
+     * @return createdBy - 创建用户
+     */
+    public String getCreatedBy() {
+        return createdBy;
+    }
+
+    /**
+     * 设置创建用户
+     *
+     * @param createdBy 创建用户
+     */
+    public void setCreatedBy(String createdBy) {
+        this.createdBy = createdBy;
+    }
+
+    /**
+     * 获取创建时间
+     *
+     * @return lastUpdated - 创建时间
+     */
+    public Date getLastUpdated() {
+        return lastUpdated;
+    }
+
+    /**
+     * 设置创建时间
+     *
+     * @param lastUpdated 创建时间
+     */
+    public void setLastUpdated(Date lastUpdated) {
+        this.lastUpdated = lastUpdated;
+    }
+
+    /**
+     * 获取更新用户
+     *
+     * @return lastUpdatedBy - 更新用户
+     */
+    public String getLastUpdatedBy() {
+        return lastUpdatedBy;
+    }
+
+    /**
+     * 设置更新用户
+     *
+     * @param lastUpdatedBy 更新用户
+     */
+    public void setLastUpdatedBy(String lastUpdatedBy) {
+        this.lastUpdatedBy = lastUpdatedBy;
+    }
+
+    /**
+     * 获取数据版本
+     *
+     * @return version - 数据版本
+     */
+    public Integer getVersion() {
+        return version;
+    }
+
+    /**
+     * 设置数据版本
+     *
+     * @param version 数据版本
+     */
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    /**
+     * 获取自定义字段1
+     *
+     * @return userDef1 - 自定义字段1
+     */
+    public String getUserDef1() {
+        return userDef1;
+    }
+
+    /**
+     * 设置自定义字段1
+     *
+     * @param userDef1 自定义字段1
+     */
+    public void setUserDef1(String userDef1) {
+        this.userDef1 = userDef1;
+    }
+
+    /**
+     * 获取自定义字段2
+     *
+     * @return userDef2 - 自定义字段2
+     */
+    public String getUserDef2() {
+        return userDef2;
+    }
+
+    /**
+     * 设置自定义字段2
+     *
+     * @param userDef2 自定义字段2
+     */
+    public void setUserDef2(String userDef2) {
+        this.userDef2 = userDef2;
+    }
+
+    /**
+     * 获取自定义字段3
+     *
+     * @return userDef3 - 自定义字段3
+     */
+    public String getUserDef3() {
+        return userDef3;
+    }
+
+    /**
+     * 设置自定义字段3
+     *
+     * @param userDef3 自定义字段3
+     */
+    public void setUserDef3(String userDef3) {
+        this.userDef3 = userDef3;
+    }
+
+
+    /**
+     * 获取处理标记
+     *
+     * @return processStamp - 处理标记
+     */
+    public String getProcessStamp() {
+        return processStamp;
+    }
+
+    /**
+     * 设置处理标记
+     *
+     * @param processStamp 处理标记
+     */
+    public void setProcessStamp(String processStamp) {
+        this.processStamp = processStamp;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/mapper/ShipmentDetailHistoryMapper.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/mapper/ShipmentDetailHistoryMapper.java
new file mode 100644
index 0000000..4b45a7a
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/mapper/ShipmentDetailHistoryMapper.java
@@ -0,0 +1,19 @@
+package com.huaheng.pc.shipment.shipmentDetailHistory.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaheng.pc.shipment.shipmentDetailHistory.domain.ShipmentDetailHistory;
+
+import java.util.List;
+import java.util.Map;
+
+
+public interface ShipmentDetailHistoryMapper extends BaseMapper<ShipmentDetailHistory> {
+
+
+    List<Map<String,Integer>> SelectFirstStatus(String ids);
+
+    Integer batchDelete(String[] ids);
+
+    Map<String,String> StatisticalByReceiptId(Integer headerId);
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/service/ShipmentDetailHistoryService.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/service/ShipmentDetailHistoryService.java
new file mode 100644
index 0000000..a42b21c
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/service/ShipmentDetailHistoryService.java
@@ -0,0 +1,12 @@
+package com.huaheng.pc.shipment.shipmentDetailHistory.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.shipment.shipmentDetailHistory.domain.ShipmentDetailHistory;
+
+public interface ShipmentDetailHistoryService extends IService<ShipmentDetailHistory>{
+
+    AjaxResult deleteDetail(String id);
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/service/ShipmentDetailHistoryServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/service/ShipmentDetailHistoryServiceImpl.java
new file mode 100644
index 0000000..c7bda6c
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetailHistory/service/ShipmentDetailHistoryServiceImpl.java
@@ -0,0 +1,72 @@
+package com.huaheng.pc.shipment.shipmentDetailHistory.service;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.common.utils.DataUtils;
+import com.huaheng.common.utils.StringUtils;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.shipment.shipmentDetailHistory.domain.ShipmentDetailHistory;
+import com.huaheng.pc.shipment.shipmentDetailHistory.mapper.ShipmentDetailHistoryMapper;
+import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.domain.ShipmentHeaderHistory;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.service.ShipmentHeaderHistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class ShipmentDetailHistoryServiceImpl extends ServiceImpl<ShipmentDetailHistoryMapper, ShipmentDetailHistory> implements ShipmentDetailHistoryService {
+
+
+    @Resource
+    private ShipmentDetailHistoryMapper shipmentDetailHistoryMapper;
+    @Autowired
+    private ShipmentHeaderHistoryService shipmentHeaderHistoryService;
+
+    /**
+     * 删除出库单据明细
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    @Transactional
+    public AjaxResult deleteDetail(String id) {
+        if (StringUtils.isEmpty(id))
+            return AjaxResult.error("id不能为空");
+        String[] ids = id.split(",");
+        List<Map<String,Integer>> list = shipmentDetailHistoryMapper.SelectFirstStatus(id);
+        if (list.size() < 1) {
+            return AjaxResult.error("找不到主单据!");
+        }
+        if (list.size() > 1) {
+            return AjaxResult.error("有多个主单据,不能一起删除!");
+        }
+        if (list.get(0).get("firstStatus") > 100) {
+            return AjaxResult.error("单据状进入订单池,不允许删除明细");
+        }
+        Integer result = shipmentDetailHistoryMapper.batchDelete(ids);
+        if (result > 0) {
+            Integer headerId=list.get(0).get("id");
+            Map<String,String> map= shipmentDetailHistoryMapper.StatisticalByReceiptId(headerId);
+            if(DataUtils.getInteger(map.get("totalLines")) <= 0)    {
+                shipmentHeaderHistoryService.removeById(headerId);
+            }
+            else    {
+                //更新表头的总行数和总数量统计
+                ShipmentHeaderHistory shipmentHeaderHistory = new ShipmentHeaderHistory();
+                shipmentHeaderHistory.setId(headerId);
+                shipmentHeaderHistory.setTotalLines(DataUtils.getInteger(map.get("totalLines")));
+                shipmentHeaderHistory.setTotalQty(DataUtils.getBigDecimal(map.get("totalQty")));
+                shipmentHeaderHistoryService.saveOrUpdate(shipmentHeaderHistory);
+            }
+            return AjaxResult.success("删除单据明细成功");
+        }
+        else
+            return AjaxResult.error("删除单据明细失败");
+    }
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
index 58964d5..6cdaaeb 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
@@ -4,6 +4,7 @@ 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.exception.service.ServiceException;
 import com.huaheng.common.support.Convert;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
@@ -11,7 +12,6 @@ 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.domain.RetCode;
 import com.huaheng.framework.web.page.PageDomain;
 import com.huaheng.framework.web.page.TableDataInfo;
 import com.huaheng.framework.web.page.TableSupport;
@@ -22,9 +22,11 @@ import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 
 
@@ -44,7 +46,6 @@ public class ShipmentHeaderController extends BaseController
 	private ShipmentHeaderService shipmentHeaderService;
 	@Autowired
 	private ShipmentDetailService shipmentDetailService;
-
 	
 	@RequiresPermissions("shipment:bill:view")
 	@GetMapping()
@@ -155,18 +156,25 @@ public class ShipmentHeaderController extends BaseController
 	@Log(title = "出库-出库单", operating="删除出库主单", action = BusinessType.DELETE)
 	@PostMapping( "/remove")
 	@ResponseBody
-	public AjaxResult remove(String ids)  {
+	@Transactional
+	public AjaxResult remove(String ids) throws InvocationTargetException, IllegalAccessException {
 		if (StringUtils.isEmpty(ids))
 			return AjaxResult.error("id不能为空");
 		for (Integer id : Convert.toIntArray(ids))
 		{
-			ShipmentHeader shipmentHeader=new ShipmentHeader();
-			shipmentHeader.setId(id);
+			ShipmentHeader shipmentHeader=shipmentHeaderService.getById(id);
+
+			//出库单设定为历史出库单,并删除出库单
+			shipmentHeaderService.addHistory(shipmentHeader);
 			shipmentHeader.setDeleted(true);
-			boolean result=shipmentHeaderService.updateById(shipmentHeader);
+			boolean result=shipmentHeaderService.removeById(id);
 			if(result==false){
-				return AjaxResult.error("删除失败");
+				throw new ServiceException("删除失败");
 			}
+			LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper=Wrappers.lambdaQuery();
+			shipmentDetailLambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode,shipmentHeader.getCode())
+					.eq(ShipmentDetail::getWarehouseCode,shipmentHeader.getWarehouseCode());
+			shipmentDetailService.remove(shipmentDetailLambdaQueryWrapper);
 		}
 		return AjaxResult.success("删除成功!");
 	}
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java
index 3f8ff3f..0120581 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java
@@ -3,6 +3,9 @@ package com.huaheng.pc.shipment.shipmentHeader.service;
 import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.lang.reflect.InvocationTargetException;
+
 public interface ShipmentHeaderService extends IService<ShipmentHeader>{
 
     //新增出库主单
@@ -15,4 +18,6 @@ public interface ShipmentHeaderService extends IService<ShipmentHeader>{
     //根据Id更新这个单据的首尾状态
     AjaxResult updateShipmentStatus(int shipmentId);
 
+    AjaxResult addHistory(ShipmentHeader shipmentHeader) throws InvocationTargetException, IllegalAccessException;
+
 }
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
index a4bffa4..24425d6 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
@@ -1,14 +1,25 @@
 package com.huaheng.pc.shipment.shipmentHeader.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.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
+import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
 import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
+import com.huaheng.pc.shipment.shipmentDetailHistory.domain.ShipmentDetailHistory;
+import com.huaheng.pc.shipment.shipmentDetailHistory.service.ShipmentDetailHistoryService;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.domain.ShipmentHeaderHistory;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.service.ShipmentHeaderHistoryService;
 import com.huaheng.pc.system.dict.service.IDictDataService;
+import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
+import java.lang.reflect.InvocationTargetException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -17,6 +28,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
 import com.huaheng.pc.shipment.shipmentHeader.mapper.ShipmentHeaderMapper;
 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
+import org.springframework.transaction.annotation.Transactional;
+
 @Service
 public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, ShipmentHeader> implements ShipmentHeaderService{
 
@@ -28,6 +41,11 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
     private ShipmentDetailService shipmentDetailService;
     @Autowired
     private ShipmentContainerHeaderService shipmentContainerHeaderService;
+    @Autowired
+    private ShipmentHeaderHistoryService shipmentHeaderHistoryService;
+    @Autowired
+    private ShipmentDetailHistoryService shipmentDetailHistoryService;
+
 
 
     //新增出库主单
@@ -122,4 +140,33 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
         return AjaxResult.success("");
 
     }
+
+    //出库单字段变为历史出库单
+    @Override
+    @Transactional
+    public AjaxResult addHistory(ShipmentHeader shipmentHeader) throws InvocationTargetException, IllegalAccessException {
+        //历史出库主单
+        ShipmentHeaderHistory shipmentHeaderHistory=new ShipmentHeaderHistory();
+        BeanUtils.copyProperties(shipmentHeaderHistory,shipmentHeader);
+        if(shipmentHeaderHistoryService.save(shipmentHeaderHistory)==false){
+            throw new ServiceException("存入历史出库主单失败");
+        }
+        LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper=Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(ShipmentDetail::getWarehouseCode,shipmentHeader.getWarehouseCode())
+                .eq(ShipmentDetail::getShipmentCode,shipmentHeader.getCode());
+        List<ShipmentDetail> shipmentDetails=shipmentDetailService.list(lambdaQueryWrapper);
+
+        //历史出库子单
+        List<ShipmentDetailHistory> shipmentDetailHistories=new ArrayList<>();
+        for(ShipmentDetail item:shipmentDetails){
+            ShipmentDetailHistory shipmentDetailHistory=new ShipmentDetailHistory();
+            BeanUtils.copyProperties(shipmentDetailHistory,item);
+            shipmentDetailHistories.add(shipmentDetailHistory);
+        }
+        Boolean flag=shipmentDetailHistoryService.saveBatch(shipmentDetailHistories);
+        if(flag==false){
+            throw new ServiceException("存入历史出库子单失败");
+        }
+        return null;
+    }
 }
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java
index 3ae9ba0..339ff29 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java
@@ -14,10 +14,10 @@ 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.shipmentDetail.domain.ShipmentDetail;
-import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
-import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
-import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
+import com.huaheng.pc.shipment.shipmentDetailHistory.domain.ShipmentDetailHistory;
+import com.huaheng.pc.shipment.shipmentDetailHistory.service.ShipmentDetailHistoryService;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.domain.ShipmentHeaderHistory;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.service.ShipmentHeaderHistoryService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -40,14 +40,14 @@ public class ShipmentHeaderHistoryController extends BaseController
     private String prefix = "shipment/shipmentHeaderHistory";
 	
 	@Autowired
-	private ShipmentHeaderService shipmentHeaderService;
+	private ShipmentHeaderHistoryService shipmentHeaderHistoryService;
 	@Autowired
-	private ShipmentDetailService shipmentDetailService;
+	private ShipmentDetailHistoryService shipmentDetailHistoryService;
 
 	
 	@RequiresPermissions("shipment:bill:view")
 	@GetMapping()
-	public String shipmentHeader()
+	public String shipmentHeaderHistory()
 	{
 	    return prefix + "/shipmentHeaderHistory";
 	}
@@ -56,38 +56,38 @@ public class ShipmentHeaderHistoryController extends BaseController
 	 * 查询出库单主列表
 	 */
 	@RequiresPermissions("shipment:bill:list")
-	@Log(title = "出库-出库单", operating="查看出库主单", action = BusinessType.GRANT)
+	@Log(title = "出库-出库单历史", operating="查看历史出库主单", action = BusinessType.GRANT)
 	@PostMapping("/list")
 	@ResponseBody
-	public TableDataInfo list(ShipmentHeader shipmentHeader,String createdBegin, String createdEnd)
+	public TableDataInfo list(ShipmentHeaderHistory shipmentHeaderHistory, String createdBegin, String createdEnd)
 	{
-		LambdaQueryWrapper<ShipmentHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
+		LambdaQueryWrapper<ShipmentHeaderHistory> lambdaQueryWrapper = Wrappers.lambdaQuery();
 		PageDomain pageDomain = TableSupport.buildPageRequest();
 		Integer pageNum = pageDomain.getPageNum();
 		Integer pageSize = pageDomain.getPageSize();
 
-		lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),ShipmentHeader::getCreated, createdBegin)
-				.le(StringUtils.isNotEmpty(createdEnd), ShipmentHeader::getCreated, createdEnd)
-				.eq(ShipmentHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
-				.eq(ShipmentHeader::getDeleted,true)
-				.in(ShipmentHeader::getCompanyCode,ShiroUtils.getCompanyCodeList())
-				.eq(StringUtils.isNotEmpty(shipmentHeader.getCode()),ShipmentHeader::getCode,shipmentHeader.getCode())
-				.eq(StringUtils.isNotEmpty(shipmentHeader.getShipmentType()),ShipmentHeader::getShipmentType,shipmentHeader.getShipmentType())
-				.eq(StringUtils.isNotEmpty(shipmentHeader.getReferCode()), ShipmentHeader::getReferCode, shipmentHeader.getReferCode())
-				.eq(StringUtils.isNotEmpty(shipmentHeader.getReferCodeType()), ShipmentHeader::getReferCodeType, shipmentHeader.getReferCodeType())
-				.eq(shipmentHeader.getFirstStatus()!=null, ShipmentHeader::getFirstStatus, shipmentHeader.getFirstStatus())
-				.eq(shipmentHeader.getLastStatus()!=null, ShipmentHeader::getLastStatus, shipmentHeader.getLastStatus())
-				.orderByDesc(ShipmentHeader::getId);
+		lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),ShipmentHeaderHistory::getCreated, createdBegin)
+				.le(StringUtils.isNotEmpty(createdEnd), ShipmentHeaderHistory::getCreated, createdEnd)
+				.eq(ShipmentHeaderHistory::getWarehouseCode,ShiroUtils.getWarehouseCode())
+				.eq(ShipmentHeaderHistory::getDeleted,false)
+				.in(ShipmentHeaderHistory::getCompanyCode,ShiroUtils.getCompanyCodeList())
+				.eq(StringUtils.isNotEmpty(shipmentHeaderHistory.getCode()),ShipmentHeaderHistory::getCode,shipmentHeaderHistory.getCode())
+				.eq(StringUtils.isNotEmpty(shipmentHeaderHistory.getShipmentType()),ShipmentHeaderHistory::getShipmentType,shipmentHeaderHistory.getShipmentType())
+				.eq(StringUtils.isNotEmpty(shipmentHeaderHistory.getReferCode()), ShipmentHeaderHistory::getReferCode, shipmentHeaderHistory.getReferCode())
+				.eq(StringUtils.isNotEmpty(shipmentHeaderHistory.getReferCodeType()), ShipmentHeaderHistory::getReferCodeType, shipmentHeaderHistory.getReferCodeType())
+				.eq(shipmentHeaderHistory.getFirstStatus()!=null, ShipmentHeaderHistory::getFirstStatus, shipmentHeaderHistory.getFirstStatus())
+				.eq(shipmentHeaderHistory.getLastStatus()!=null, ShipmentHeaderHistory::getLastStatus, shipmentHeaderHistory.getLastStatus())
+				.orderByDesc(ShipmentHeaderHistory::getId);
 
 		if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
 			/**
 			 * 使用分页查询
 			 */
-			Page<ShipmentHeader> page = new Page<>(pageNum, pageSize);
-			IPage<ShipmentHeader> iPage = shipmentHeaderService.page(page, lambdaQueryWrapper);
+			Page<ShipmentHeaderHistory> page = new Page<>(pageNum, pageSize);
+			IPage<ShipmentHeaderHistory> iPage = shipmentHeaderHistoryService.page(page, lambdaQueryWrapper);
 			return getMpDataTable(iPage.getRecords(),iPage.getTotal());
 		} else {
-			List<ShipmentHeader> list = shipmentHeaderService.list(lambdaQueryWrapper);
+			List<ShipmentHeaderHistory> list = shipmentHeaderHistoryService.list(lambdaQueryWrapper);
 			return getDataTable(list);
 		}
 	}
@@ -97,7 +97,7 @@ public class ShipmentHeaderHistoryController extends BaseController
 	 * 删除出库单主
 	 */
 	@RequiresPermissions("shipment:bill:remove")
-	@Log(title = "出库-出库单", operating="删除出库主单", action = BusinessType.DELETE)
+	@Log(title = "出库-历史出库单", operating="删除历史出库主单", action = BusinessType.DELETE)
 	@PostMapping( "/remove")
 	@ResponseBody
 	public AjaxResult remove(String ids)  {
@@ -105,12 +105,12 @@ public class ShipmentHeaderHistoryController extends BaseController
 			return AjaxResult.error("id不能为空");
 		for (Integer id : Convert.toIntArray(ids))
 		{
-			boolean result=shipmentHeaderService.removeById(id);
-			LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper=Wrappers.lambdaQuery();
-			lambdaQueryWrapper.eq(ShipmentDetail::getShipmentId,id)
-					.eq(ShipmentDetail::getWarehouseCode,ShiroUtils.getWarehouseCode());
+			boolean result=shipmentHeaderHistoryService.removeById(id);
+			LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper=Wrappers.lambdaQuery();
+			lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId,id)
+					.eq(ShipmentDetailHistory::getWarehouseCode,ShiroUtils.getWarehouseCode());
 			Boolean flag=true;
-			flag=shipmentDetailService.remove(lambdaQueryWrapper);
+			flag=shipmentDetailHistoryService.remove(lambdaQueryWrapper);
 			if(flag==false){
 				return AjaxResult.error("删除失败");
 			}
@@ -126,17 +126,17 @@ public class ShipmentHeaderHistoryController extends BaseController
 	 * @return
 	 */
 	@RequiresPermissions("shipment:bill:report")
-	@Log(title = "出库-出库单", operating="打印出库单报表", action = BusinessType.OTHER)
+	@Log(title = "出库-历史出库单", operating="打印历史出库单报表", action = BusinessType.OTHER)
 	@GetMapping("/report/{id}")
 	public String report(@PathVariable("id") Integer id, ModelMap mmap)
 	{
-		ShipmentHeader shipmentHeader = shipmentHeaderService.getById(id);
-		mmap.put("shipmentHeader", shipmentHeader);
+		ShipmentHeaderHistory shipmentHeaderHistory = shipmentHeaderHistoryService.getById(id);
+		mmap.put("shipmentHeader", shipmentHeaderHistory);
 
-		LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
-		lambdaQueryWrapper.eq(ShipmentDetail::getShipmentId,id)
-				.eq(ShipmentDetail::getWarehouseCode,ShiroUtils.getWarehouseCode());
-		List<ShipmentDetail> details = shipmentDetailService.list(lambdaQueryWrapper);
+		LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper = Wrappers.lambdaQuery();
+		lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId,id)
+				.eq(ShipmentDetailHistory::getWarehouseCode,ShiroUtils.getWarehouseCode());
+		List<ShipmentDetailHistory> details = shipmentDetailHistoryService.list(lambdaQueryWrapper);
 		mmap.put("details", details);
 
 		return prefix + "/report";
@@ -144,8 +144,8 @@ public class ShipmentHeaderHistoryController extends BaseController
 
 	@PostMapping("/getShipmentHeader")
 	@ResponseBody
-	public AjaxResult<ShipmentHeader> getShipmentHeader(int id){
-		return AjaxResult.success(shipmentHeaderService.getById(id));
+	public AjaxResult<ShipmentHeaderHistory> getShipmentHeader(int id){
+		return AjaxResult.success(shipmentHeaderHistoryService.getById(id));
 	}
 
 
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java
new file mode 100644
index 0000000..c175a29
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java
@@ -0,0 +1,473 @@
+package com.huaheng.pc.shipment.shipmentHeaderHistory.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+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.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value = "com.huaheng.pc.shipment.shipmentHeaderHistory.domain.ShipmentHeaderHistory")
+@Data
+@TableName(value = "shipment_header_history")
+public class ShipmentHeaderHistory implements Serializable {
+    /**
+     * 出库单内部号
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "出库单内部号")
+    private Integer id;
+
+    /**
+     * 仓库
+     */
+    @TableField(value = "warehouseCode")
+    @ApiModelProperty(value = "仓库")
+    private String warehouseCode;
+
+    /**
+     * 货主
+     */
+    @TableField(value = "companyCode")
+    @ApiModelProperty(value = "货主")
+    private String companyCode;
+
+
+
+    /**
+     * 出库单号
+     */
+    @TableField(value = "code")
+    @ApiModelProperty(value = "出库单号")
+    private String code;
+
+    /**
+     * erp订单号
+     */
+    @TableField(value = "referCode")
+    @ApiModelProperty(value = "erp订单号")
+    private String referCode;
+
+    /**
+     * erp订单类型
+     */
+    @TableField(value = "referCodeType")
+    @ApiModelProperty(value = "erp订单类型")
+    private String referCodeType;
+
+    /**
+     * erp订单内部号
+     */
+    @TableField(value = "referId")
+    @ApiModelProperty(value = "erp订单内部号")
+    private Integer referId;
+
+    /**
+     * 订单平台
+     */
+    @TableField(value = "referPlatform")
+    @ApiModelProperty(value = "订单平台")
+    private Integer referPlatform;
+
+    /**
+     * 主状态
+     */
+    @TableField(value = "firstStatus")
+    @ApiModelProperty(value = "主状态")
+    private Integer firstStatus;
+
+    /**
+     * 拖状态
+     */
+    @TableField(value = "lastStatus")
+    @ApiModelProperty(value = "拖状态")
+    private Integer lastStatus;
+
+    /**
+     * 出库单类型
+     */
+    @TableField(value = "shipmentType")
+    @ApiModelProperty(value = "出库单类型")
+    private String shipmentType;
+
+    /**
+     * 路线
+     */
+    @TableField(value = "route")
+    @ApiModelProperty(value = "路线")
+    private String route;
+
+    /**
+     * 客户编号
+     */
+    @TableField(value = "customerCode")
+    @ApiModelProperty(value = "客户编号")
+    private String customerCode;
+
+    /**
+     * 客户名称
+     */
+    @TableField(value = "customerName")
+    @ApiModelProperty(value = "客户名称")
+    private String customerName;
+
+    /**
+     * 优先级
+     */
+    @TableField(value = "priority")
+    @ApiModelProperty(value = "优先级")
+    private Integer priority;
+
+    /**
+     * 要求到货时间
+     */
+    @TableField(value = "requestedDeliveryDate")
+    @ApiModelProperty(value = "要求到货时间")
+    private Date requestedDeliveryDate;
+
+
+
+    /**
+     * 计划发车日期
+     */
+    @TableField(value = "scheduledShipDate")
+    @ApiModelProperty(value = "计划发车日期")
+    private Date scheduledShipDate;
+
+    /**
+     * 实际发车时间
+     */
+    @TableField(value = "actualShipDateTime")
+    @ApiModelProperty(value = "实际发车时间")
+    private Date actualShipDateTime;
+
+    /**
+     * 实际到货时间
+     */
+    @TableField(value = "actualDeliveryDate")
+    @ApiModelProperty(value = "实际到货时间")
+    private Date actualDeliveryDate;
+
+    /**
+     * 配送要求
+     */
+    @TableField(value = "deliveryNote")
+    @ApiModelProperty(value = "配送要求")
+    private String deliveryNote;
+
+    /**
+     * 失败原因
+     */
+    @TableField(value = "rejectionNote")
+    @ApiModelProperty(value = "失败原因")
+    private String rejectionNote;
+
+    /**
+     * 波次号
+     */
+    @TableField(value = "waveId")
+    @ApiModelProperty(value = "波次号")
+    private Integer waveId;
+
+    /**
+     * 发货月台
+     */
+    @TableField(value = "shipDock")
+    @ApiModelProperty(value = "发货月台")
+    private String shipDock;
+
+    /**
+     * 分配完成
+     */
+    @TableField(value = "allocateComplete")
+    @ApiModelProperty(value = "分配完成")
+    private Integer allocateComplete;
+
+    /**
+     * 总重量
+     */
+    @TableField(value = "totalWeight")
+    @ApiModelProperty(value = "总重量")
+    private BigDecimal totalWeight;
+
+    /**
+     * 总数量
+     */
+    @TableField(value = "totalQty")
+    @ApiModelProperty(value = "总数量")
+    private BigDecimal totalQty;
+
+    /**
+     * 总体积
+     */
+    @TableField(value = "totalVolume")
+    @ApiModelProperty(value = "总体积")
+    private BigDecimal totalVolume;
+
+    /**
+     * 总行数
+     */
+    @TableField(value = "totalLines")
+    @ApiModelProperty(value = "总行数")
+    private Integer totalLines;
+
+
+
+    /**
+     * 处理类型
+     */
+    @TableField(value = "processType")
+    @ApiModelProperty(value = "处理类型")
+    private String processType;
+
+    /**
+     * 上次波次号
+     */
+    @TableField(value = "lastWaveId")
+    @ApiModelProperty(value = "上次波次号")
+    private Integer lastWaveId;
+
+    /**
+     * 特征值
+     */
+    @TableField(value = "signValue")
+    @ApiModelProperty(value = "特征值")
+    private String signValue;
+
+    /**
+     * 承运人
+     */
+    @TableField(value = "carrierCode")
+    @ApiModelProperty(value = "承运人")
+    private String carrierCode;
+
+    /**
+     * 承运人服务商
+     */
+    @TableField(value = "carrierService")
+    @ApiModelProperty(value = "承运人服务商")
+    private String carrierService;
+
+    /**
+     * 订单备注
+     */
+    @TableField(value = "shipmentNote")
+    @ApiModelProperty(value = "订单备注")
+    private String shipmentNote;
+
+    /**
+     * 承运商编码
+     */
+    @TableField(value = "carrierServer")
+    @ApiModelProperty(value = "承运商编码")
+    private String carrierServer;
+
+    /**
+     * 承运商名称
+     */
+    @TableField(value = "carrierServerName")
+    @ApiModelProperty(value = "承运商名称")
+    private String carrierServerName;
+
+    /**
+     * 车牌号
+     */
+    @TableField(value = "plateNumber")
+    @ApiModelProperty(value = "车牌号")
+    private String plateNumber;
+
+    /**
+     * 车型
+     */
+    @TableField(value = "carModel")
+    @ApiModelProperty(value = "车型")
+    private String carModel;
+
+    /**
+     * 司机名称
+     */
+    @TableField(value = "driverName")
+    @ApiModelProperty(value = "司机名称")
+    private String driverName;
+
+    /**
+     * 司机联系方式
+     */
+    @TableField(value = "driverTel")
+    @ApiModelProperty(value = "司机联系方式")
+    private String driverTel;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "created")
+    @ApiModelProperty(value = "创建时间")
+    private Date created;
+
+    /**
+     * 创建用户
+     */
+    @TableField(value = "createdBy")
+    @ApiModelProperty(value = "创建用户")
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "lastUpdated")
+    @ApiModelProperty(value = "创建时间")
+    private Date lastUpdated;
+
+    /**
+     * 更新用户
+     */
+    @TableField(value = "lastUpdatedBy")
+    @ApiModelProperty(value = "更新用户")
+    private String lastUpdatedBy;
+
+    /**
+     * 数据版本
+     */
+    @TableField(value = "version")
+    @ApiModelProperty(value = "数据版本")
+    private Integer version;
+
+    /**
+     * 自定义字段1
+     */
+    @TableField(value = "userDef1")
+    @ApiModelProperty(value = "自定义字段1")
+    private String userDef1;
+
+    /**
+     * 自定义字段2
+     */
+    @TableField(value = "userDef2")
+    @ApiModelProperty(value = "自定义字段2")
+    private String userDef2;
+
+    /**
+     * 自定义字段3
+     */
+    @TableField(value = "userDef3")
+    @ApiModelProperty(value = "自定义字段3")
+    private String userDef3;
+    /**
+     * 处理标记
+     */
+    @TableField(value = "processStamp")
+    @ApiModelProperty(value = "处理标记")
+    private String processStamp;
+
+    /**
+     * 是否删除
+     */
+    @TableField(value = "deleted")
+    @ApiModelProperty(value = "是否删除")
+    private Boolean deleted;
+
+    private static final long serialVersionUID = 1L;
+
+    public static final String COL_WAREHOUSECODE = "warehouseCode";
+
+    public static final String COL_COMPANYCODE = "companyCode";
+
+    public static final String COL_CODE = "code";
+
+    public static final String COL_REFERCODE = "referCode";
+
+    public static final String COL_REFERCODETYPE = "referCodeType";
+
+    public static final String COL_REFERID = "referId";
+
+    public static final String COL_REFERPLATFORM = "referPlatform";
+
+    public static final String COL_FIRSTSTATUS = "firstStatus";
+
+    public static final String COL_LASTSTATUS = "lastStatus";
+
+    public static final String COL_SHIPMENTTYPE = "shipmentType";
+
+    public static final String COL_ROUTE = "route";
+
+    public static final String COL_CUSTOMERCODE = "customerCode";
+
+    public static final String COL_CUSTOMERNAME = "customerName";
+
+    public static final String COL_PRIORITY = "priority";
+
+    public static final String COL_REQUESTEDDELIVERYDATE = "requestedDeliveryDate";
+
+    public static final String COL_SCHEDULEDSHIPDATE = "scheduledShipDate";
+
+    public static final String COL_ACTUALSHIPDATETIME = "actualShipDateTime";
+
+    public static final String COL_ACTUALDELIVERYDATE = "actualDeliveryDate";
+
+    public static final String COL_DELIVERYNOTE = "deliveryNote";
+
+    public static final String COL_REJECTIONNOTE = "rejectionNote";
+
+    public static final String COL_WAVEID = "waveId";
+
+    public static final String COL_SHIPDOCK = "shipDock";
+
+    public static final String COL_ALLOCATECOMPLETE = "allocateComplete";
+
+    public static final String COL_TOTALWEIGHT = "totalWeight";
+
+    public static final String COL_TOTALQTY = "totalQty";
+
+    public static final String COL_TOTALVOLUME = "totalVolume";
+
+    public static final String COL_TOTALLINES = "totalLines";
+
+    public static final String COL_PROCESSTYPE = "processType";
+
+    public static final String COL_LASTWAVEID = "lastWaveId";
+
+    public static final String COL_SIGNVALUE = "signValue";
+
+    public static final String COL_CARRIERCODE = "carrierCode";
+
+    public static final String COL_CARRIERSERVICE = "carrierService";
+
+    public static final String COL_SHIPMENTNOTE = "shipmentNote";
+
+    public static final String COL_CARRIERSERVER = "carrierServer";
+
+    public static final String COL_CARRIERSERVERNAME = "carrierServerName";
+
+    public static final String COL_PLATENUMBER = "plateNumber";
+
+    public static final String COL_CARMODEL = "carModel";
+
+    public static final String COL_DRIVERNAME = "driverName";
+
+    public static final String COL_DRIVERTEL = "driverTel";
+
+    public static final String COL_CREATED = "created";
+
+    public static final String COL_CREATEDBY = "createdBy";
+
+    public static final String COL_LASTUPDATED = "lastUpdated";
+
+    public static final String COL_LASTUPDATEDBY = "lastUpdatedBy";
+
+    public static final String COL_VERSION = "version";
+
+    public static final String COL_USERDEF1 = "userDef1";
+
+    public static final String COL_USERDEF2 = "userDef2";
+
+    public static final String COL_USERDEF3 = "userDef3";
+
+    public static final String COL_PROCESSSTAMP = "processStamp";
+
+    public static final String COL_DELETED = "deleted";
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/mapper/ShipmentHeaderHistoryMapper.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/mapper/ShipmentHeaderHistoryMapper.java
new file mode 100644
index 0000000..1acc14f
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/mapper/ShipmentHeaderHistoryMapper.java
@@ -0,0 +1,10 @@
+package com.huaheng.pc.shipment.shipmentHeaderHistory.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.domain.ShipmentHeaderHistory;
+
+public interface ShipmentHeaderHistoryMapper extends BaseMapper<ShipmentHeaderHistory> {
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/service/ShipmentHeaderHistoryService.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/service/ShipmentHeaderHistoryService.java
new file mode 100644
index 0000000..476eda0
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/service/ShipmentHeaderHistoryService.java
@@ -0,0 +1,9 @@
+package com.huaheng.pc.shipment.shipmentHeaderHistory.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.domain.ShipmentHeaderHistory;
+
+public interface ShipmentHeaderHistoryService extends IService<ShipmentHeaderHistory>{
+
+
+}
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/service/ShipmentHeaderHistoryServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/service/ShipmentHeaderHistoryServiceImpl.java
new file mode 100644
index 0000000..b3eebab
--- /dev/null
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/service/ShipmentHeaderHistoryServiceImpl.java
@@ -0,0 +1,13 @@
+package com.huaheng.pc.shipment.shipmentHeaderHistory.service;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.domain.ShipmentHeaderHistory;
+import com.huaheng.pc.shipment.shipmentHeaderHistory.mapper.ShipmentHeaderHistoryMapper;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class ShipmentHeaderHistoryServiceImpl extends ServiceImpl<ShipmentHeaderHistoryMapper, ShipmentHeaderHistory> implements ShipmentHeaderHistoryService {
+
+}
diff --git a/src/main/resources/mybatis/config/MaterialTypeMapper.xml b/src/main/resources/mybatis/config/MaterialTypeMapper.xml
new file mode 100644
index 0000000..148e900
--- /dev/null
+++ b/src/main/resources/mybatis/config/MaterialTypeMapper.xml
@@ -0,0 +1,51 @@
+<?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.config.materialType.mapper.MaterialTypeMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.config.materialType.domain.MaterialType">
+    <!--@mbg.generated-->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="code" jdbcType="VARCHAR" property="code" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
+    <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+    <result column="abcClass" jdbcType="VARCHAR" property="abcClass" />
+    <result column="daysToExpire" jdbcType="INTEGER" property="daysToExpire" />
+    <result column="receivingFlow" jdbcType="VARCHAR" property="receivingFlow" />
+    <result column="shippingFlow" jdbcType="VARCHAR" property="shippingFlow" />
+    <result column="locatingRule" jdbcType="VARCHAR" property="locatingRule" />
+    <result column="allocationRule" jdbcType="VARCHAR" property="allocationRule" />
+    <result column="replenishmentRule" jdbcType="VARCHAR" property="replenishmentRule" />
+    <result column="emptyLocRule" jdbcType="VARCHAR" property="emptyLocRule" />
+    <result column="pickingRule" jdbcType="VARCHAR" property="pickingRule" />
+    <result column="attributeTemplateCode" jdbcType="VARCHAR" property="attributeTemplateCode" />
+    <result column="trackSerialNum" jdbcType="INTEGER" property="trackSerialNum" />
+    <result column="autoGenSerialNum" jdbcType="INTEGER" property="autoGenSerialNum" />
+    <result column="autoGenSerialNumFormat" jdbcType="VARCHAR" property="autoGenSerialNumFormat" />
+    <result column="snTemplateCode" jdbcType="VARCHAR" property="snTemplateCode" />
+    <result column="expiringDays" jdbcType="INTEGER" property="expiringDays" />
+    <result column="minShelfLifeDays" jdbcType="INTEGER" property="minShelfLifeDays" />
+    <result column="enable" jdbcType="INTEGER" property="enable" />
+    <result column="created" jdbcType="TIMESTAMP" property="created" />
+    <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
+    <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" />
+    <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" />
+    <result column="version" jdbcType="INTEGER" property="version" />
+    <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
+    <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" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, code, `name`, companyCode, warehouseCode, abcClass, daysToExpire, receivingFlow, 
+    shippingFlow, locatingRule, allocationRule, replenishmentRule, emptyLocRule, pickingRule, 
+    attributeTemplateCode, trackSerialNum, autoGenSerialNum, autoGenSerialNumFormat, 
+    snTemplateCode, expiringDays, minShelfLifeDays, `enable`, created, createdBy, lastUpdated, 
+    lastUpdatedBy, version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, 
+    userDef7, userDef8
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml b/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml
new file mode 100644
index 0000000..0fa741e
--- /dev/null
+++ b/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml
@@ -0,0 +1,47 @@
+<?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.inventory.adjustDetail.mapper.AdjustDetailMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail">
+    <!--@mbg.generated-->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="adjustCode" jdbcType="VARCHAR" property="adjustCode" />
+    <result column="cycleCountCode" jdbcType="VARCHAR" property="cycleCountCode" />
+    <result column="cycleDetailId" jdbcType="INTEGER" property="cycleDetailId" />
+    <result column="checkCode" jdbcType="VARCHAR" property="checkCode" />
+    <result column="checkDetailId" jdbcType="VARCHAR" property="checkDetailId" />
+    <result column="referCode" jdbcType="VARCHAR" property="referCode" />
+    <result column="referDetailId" jdbcType="INTEGER" property="referDetailId" />
+    <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+    <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
+    <result column="materialCode" jdbcType="VARCHAR" property="materialCode" />
+    <result column="materialName" jdbcType="VARCHAR" property="materialName" />
+    <result column="materialSpec" jdbcType="VARCHAR" property="materialSpec" />
+    <result column="materialUnit" jdbcType="VARCHAR" property="materialUnit" />
+    <result column="problemType" jdbcType="VARCHAR" property="problemType" />
+    <result column="attributeId" jdbcType="INTEGER" property="attributeId" />
+    <result column="fromInventorySts" jdbcType="VARCHAR" property="fromInventorySts" />
+    <result column="toInventorySts" jdbcType="VARCHAR" property="toInventorySts" />
+    <result column="fromQty" jdbcType="INTEGER" property="fromQty" />
+    <result column="toQty" jdbcType="INTEGER" property="toQty" />
+    <result column="gapQty" jdbcType="INTEGER" property="gapQty" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
+    <result column="created" jdbcType="TIMESTAMP" property="created" />
+    <result column="agreeBy" jdbcType="VARCHAR" property="agreeBy" />
+    <result column="agreeTime" jdbcType="TIMESTAMP" property="agreeTime" />
+    <result column="Remark" jdbcType="VARCHAR" property="remark" />
+    <result column="version" jdbcType="INTEGER" property="version" />
+    <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
+    <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
+    <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
+    <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, adjustCode, cycleCountCode, cycleDetailId, checkCode, checkDetailId, referCode,
+    referDetailId, warehouseCode, companyCode, materialCode, materialName,
+    materialSpec, materialUnit, problemType, attributeId, fromInventorySts, toInventorySts, 
+    fromQty, toQty, gapQty, `status`, created, createdBy, agreeTime, Remark,
+    version, userDef1, userDef2, userDef3, processStamp
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/inventory/AdjustHeaderMapper.xml b/src/main/resources/mybatis/inventory/AdjustHeaderMapper.xml
new file mode 100644
index 0000000..313341b
--- /dev/null
+++ b/src/main/resources/mybatis/inventory/AdjustHeaderMapper.xml
@@ -0,0 +1,28 @@
+<?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.inventory.adjustHeader.mapper.AdjustHeaderMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader">
+    <!--@mbg.generated-->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="code" jdbcType="VARCHAR" property="code" />
+    <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+    <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
+    <result column="problemType" jdbcType="VARCHAR" property="problemType" />
+    <result column="cycleCountCode" jdbcType="VARCHAR" property="cycleCountCode" />
+    <result column="checkCode" jdbcType="VARCHAR" property="checkCode" />
+    <result column="referCode" jdbcType="VARCHAR" property="referCode" />
+    <result column="referReason" jdbcType="VARCHAR" property="referReason" />
+    <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
+    <result column="created" jdbcType="TIMESTAMP" property="created" />
+    <result column="version" jdbcType="INTEGER" property="version" />
+    <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
+    <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
+    <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
+    <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, code, warehouseCode, companyCode, problemType, cycleCountCode, checkCode,
+    referCode, referReason, createdBy, created, version, userDef1, userDef2, userDef3, processStamp
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/inventory/CycleCountDetailMapper.xml b/src/main/resources/mybatis/inventory/CycleCountDetailMapper.xml
index 98db6ea..03621cd 100644
--- a/src/main/resources/mybatis/inventory/CycleCountDetailMapper.xml
+++ b/src/main/resources/mybatis/inventory/CycleCountDetailMapper.xml
@@ -20,7 +20,7 @@
     <result column="inventorySts" jdbcType="VARCHAR" property="inventorySts" />
     <result column="systemQty" jdbcType="DECIMAL" property="systemQty" />
     <result column="countedQty" jdbcType="DECIMAL" property="countedQty" />
-    <result column="adjustQty" jdbcType="DECIMAL" property="adjustQty" />
+    <result column="gapQty" jdbcType="DECIMAL" property="gapQty" />
     <result column="rejectionNote" jdbcType="VARCHAR" property="rejectionNote" />
     <result column="countedBy" jdbcType="VARCHAR" property="countedBy" />
     <result column="countedAt" jdbcType="TIMESTAMP" property="countedAt" />
@@ -46,7 +46,7 @@
     <!--@mbg.generated-->
     id, countId, round, taskHeaderId, taskDetailId, warehouseCode, inventoryDetailId, 
     locationCode, containerCode, materialCode, materialName, materialSpec, materialUnit, 
-    companyCode, inventorySts, systemQty, countedQty, adjustQty, rejectionNote, countedBy, 
+    companyCode, inventorySts, systemQty, countedQty, gapQty, rejectionNote, countedBy,
     countedAt, assignedTo, assignedAt, completedBy, completedAt, enableStatus, created, 
     createdBy, lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3, processStamp, 
     batch, lot, projectNo
diff --git a/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml b/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml
index fc76b82..fa36cde 100644
--- a/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml
+++ b/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml
@@ -13,10 +13,10 @@
     <result column="materialName" jdbcType="VARCHAR" property="materialName" />
     <result column="materialSpec" jdbcType="VARCHAR" property="materialSpec" />
     <result column="materialUnit" jdbcType="VARCHAR" property="materialUnit" />
-    <result column="qty" jdbcType="INTEGER" property="qty" />
+    <result column="taskQty" jdbcType="INTEGER" property="taskQty" />
     <result column="inventorySts" jdbcType="VARCHAR" property="inventorySts" />
     <result column="referCode" jdbcType="VARCHAR" property="referCode" />
-    <result column="referId" jdbcType="VARCHAR" property="referId" />
+    <result column="referDetailId" jdbcType="VARCHAR" property="referDetailId" />
     <result column="referDetailId" jdbcType="VARCHAR" property="referDetailId" />
     <result column="batch" jdbcType="VARCHAR" property="batch" />
     <result column="lot" jdbcType="VARCHAR" property="lot" />
@@ -30,31 +30,22 @@
     <result column="attribute1" jdbcType="VARCHAR" property="attribute1" />
     <result column="attribute2" jdbcType="VARCHAR" property="attribute2" />
     <result column="attribute3" jdbcType="VARCHAR" property="attribute3" />
-    <result column="attribute4" jdbcType="VARCHAR" property="attribute4" />
     <result column="lockCode" jdbcType="VARCHAR" property="lockCode" />
-    <result column="lastCycleCountDate" jdbcType="TIMESTAMP" property="lastCycleCountDate" />
     <result column="created" jdbcType="TIMESTAMP" property="created" />
     <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
-    <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" />
-    <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" />
     <result column="version" jdbcType="INTEGER" property="version" />
     <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
     <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, warehouseCode, companyCode, locationCode, containerCode, transactionType, materialCode, 
-    materialName, materialSpec, materialUnit, qty, inventorySts, referCode, referId, 
+    materialName, materialSpec, materialUnit, taskQty, inventorySts, referCode, referDetailId,
     referDetailId, batch, lot, projectNo, qcCheck, weight, manufactureDate, expirationDate, 
-    agingDate, attributeId, attribute1, attribute2, attribute3, attribute4, lockCode, 
-    lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy, version, userDef1, 
-    userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, processStamp
+    agingDate, attributeId, attribute1, attribute2, attribute3, lockCode,
+    created, createdBy, version, userDef1,
+    userDef2, userDef3, processStamp
   </sql>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/receipt/ReceiptDetailHistoryMapper.xml b/src/main/resources/mybatis/receipt/ReceiptDetailHistoryMapper.xml
new file mode 100644
index 0000000..2017dce
--- /dev/null
+++ b/src/main/resources/mybatis/receipt/ReceiptDetailHistoryMapper.xml
@@ -0,0 +1,64 @@
+<?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.receipt.receiptDetailHistory.mapper.ReceiptDetailHistoryMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.receipt.receiptDetailHistory.domain.ReceiptDetailHistory">
+    <!--@mbg.generated-->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="receiptId" jdbcType="INTEGER" property="receiptId" />
+    <result column="receiptCode" jdbcType="VARCHAR" property="receiptCode" />
+    <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+    <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
+    <result column="materialCode" jdbcType="VARCHAR" property="materialCode" />
+    <result column="materialName" jdbcType="VARCHAR" property="materialName" />
+    <result column="materialSpec" jdbcType="VARCHAR" property="materialSpec" />
+    <result column="materialUnit" jdbcType="VARCHAR" property="materialUnit" />
+    <result column="supplierCode" jdbcType="VARCHAR" property="supplierCode" />
+    <result column="batch" jdbcType="VARCHAR" property="batch" />
+    <result column="lot" jdbcType="VARCHAR" property="lot" />
+    <result column="qcCheck" jdbcType="VARCHAR" property="qcCheck" />
+    <result column="projectNo" jdbcType="VARCHAR" property="projectNo" />
+    <result column="manufactureDate" jdbcType="DATE" property="manufactureDate" />
+    <result column="expirationDate" jdbcType="DATE" property="expirationDate" />
+    <result column="agingDate" jdbcType="DATE" property="agingDate" />
+    <result column="attributeTemplateCode" jdbcType="VARCHAR" property="attributeTemplateCode" />
+    <result column="attribute1" jdbcType="VARCHAR" property="attribute1" />
+    <result column="attribute2" jdbcType="VARCHAR" property="attribute2" />
+    <result column="attribute3" jdbcType="VARCHAR" property="attribute3" />
+    <result column="attribute4" jdbcType="VARCHAR" property="attribute4" />
+    <result column="totalQty" jdbcType="INTEGER" property="totalQty" />
+    <result column="openQty" jdbcType="INTEGER" property="openQty" />
+    <result column="referCode" jdbcType="VARCHAR" property="referCode" />
+    <result column="referId" jdbcType="INTEGER" property="referId" />
+    <result column="referLineNum" jdbcType="VARCHAR" property="referLineNum" />
+    <result column="locatingRule" jdbcType="VARCHAR" property="locatingRule" />
+    <result column="inventorySts" jdbcType="VARCHAR" property="inventorySts" />
+    <result column="itemListPrice" jdbcType="DECIMAL" property="itemListPrice" />
+    <result column="itemNetPrice" jdbcType="DECIMAL" property="itemNetPrice" />
+    <result column="isVirtualBom" jdbcType="INTEGER" property="isVirtualBom" />
+    <result column="created" jdbcType="TIMESTAMP" property="created" />
+    <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
+    <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" />
+    <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" />
+    <result column="version" jdbcType="INTEGER" property="version" />
+    <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
+    <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="deleted" jdbcType="BIT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, receiptId, receiptCode, warehouseCode, companyCode, materialCode, materialName, 
+    materialSpec, materialUnit, supplierCode, batch, lot, qcCheck, projectNo, manufactureDate, 
+    expirationDate, agingDate, attributeTemplateCode, attribute1, attribute2, attribute3, 
+    attribute4, totalQty, openQty, referCode, referId, referLineNum, locatingRule, inventorySts, 
+    itemListPrice, itemNetPrice, isVirtualBom, created, createdBy, lastUpdated, lastUpdatedBy, 
+    version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, 
+    processStamp, deleted
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/receipt/ReceiptHeaderHistoryMapper.xml b/src/main/resources/mybatis/receipt/ReceiptHeaderHistoryMapper.xml
new file mode 100644
index 0000000..4addfbe
--- /dev/null
+++ b/src/main/resources/mybatis/receipt/ReceiptHeaderHistoryMapper.xml
@@ -0,0 +1,56 @@
+<?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.receipt.receiptHeaderHistory.mapper.ReceiptHeaderHistoryMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.receipt.receiptHeaderHistory.domain.ReceiptHeaderHistory">
+    <!--@mbg.generated-->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+    <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
+    <result column="code" jdbcType="VARCHAR" property="code" />
+    <result column="receiptType" jdbcType="VARCHAR" property="receiptType" />
+    <result column="firstStatus" jdbcType="INTEGER" property="firstStatus" />
+    <result column="lastStatus" jdbcType="INTEGER" property="lastStatus" />
+    <result column="referCode" jdbcType="VARCHAR" property="referCode" />
+    <result column="referId" jdbcType="INTEGER" property="referId" />
+    <result column="referType" jdbcType="VARCHAR" property="referType" />
+    <result column="scheduledArriveDate" jdbcType="DATE" property="scheduledArriveDate" />
+    <result column="actualArriveDate" jdbcType="DATE" property="actualArriveDate" />
+    <result column="recvDock" jdbcType="VARCHAR" property="recvDock" />
+    <result column="closedAt" jdbcType="DATE" property="closedAt" />
+    <result column="closedBy" jdbcType="VARCHAR" property="closedBy" />
+    <result column="startCheckinDatetime" jdbcType="TIMESTAMP" property="startCheckinDatetime" />
+    <result column="endCheckinDatetime" jdbcType="TIMESTAMP" property="endCheckinDatetime" />
+    <result column="totalQty" jdbcType="INTEGER" property="totalQty" />
+    <result column="totalLines" jdbcType="INTEGER" property="totalLines" />
+    <result column="toalCases" jdbcType="INTEGER" property="toalCases" />
+    <result column="totalWeight" jdbcType="DECIMAL" property="totalWeight" />
+    <result column="totalVolume" jdbcType="DECIMAL" property="totalVolume" />
+    <result column="receiptNote" jdbcType="VARCHAR" property="receiptNote" />
+    <result column="locked" jdbcType="INTEGER" property="locked" />
+    <result column="lockedBy" jdbcType="VARCHAR" property="lockedBy" />
+    <result column="created" jdbcType="TIMESTAMP" property="created" />
+    <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
+    <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" />
+    <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" />
+    <result column="version" jdbcType="INTEGER" property="version" />
+    <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
+    <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="deleted" jdbcType="BIT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, warehouseCode, companyCode, code, receiptType, firstStatus, lastStatus, referCode, 
+    referId, referType, scheduledArriveDate, actualArriveDate, recvDock, closedAt, closedBy, 
+    startCheckinDatetime, endCheckinDatetime, totalQty, totalLines, toalCases, totalWeight, 
+    totalVolume, receiptNote, locked, lockedBy, created, createdBy, lastUpdated, lastUpdatedBy, 
+    version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, 
+    processStamp, deleted
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/shipment/ShipmentDetailHistoryMapper.xml b/src/main/resources/mybatis/shipment/ShipmentDetailHistoryMapper.xml
new file mode 100644
index 0000000..cd482f0
--- /dev/null
+++ b/src/main/resources/mybatis/shipment/ShipmentDetailHistoryMapper.xml
@@ -0,0 +1,78 @@
+<?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.shipmentDetailHistory.mapper.ShipmentDetailHistoryMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.shipmentDetailHistory.domain.ShipmentDetailHistory">
+    <!--@mbg.generated-->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="shipmentId" jdbcType="INTEGER" property="shipmentId" />
+    <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+    <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
+    <result column="shipmentCode" jdbcType="VARCHAR" property="shipmentCode" />
+    <result column="referCode" jdbcType="VARCHAR" property="referCode" />
+    <result column="referId" jdbcType="INTEGER" property="referId" />
+    <result column="referLineNum" jdbcType="VARCHAR" property="referLineNum" />
+    <result column="materialCode" jdbcType="VARCHAR" property="materialCode" />
+    <result column="materialName" jdbcType="VARCHAR" property="materialName" />
+    <result column="materialSpec" jdbcType="VARCHAR" property="materialSpec" />
+    <result column="materialUnit" jdbcType="VARCHAR" property="materialUnit" />
+    <result column="shipQty" jdbcType="INTEGER" property="shipQty" />
+    <result column="requestQty" jdbcType="INTEGER" property="requestQty" />
+    <result column="allocationRule" jdbcType="VARCHAR" property="allocationRule" />
+    <result column="replenishmentRule" jdbcType="VARCHAR" property="replenishmentRule" />
+    <result column="pickLocs" jdbcType="VARCHAR" property="pickLocs" />
+    <result column="attribute1" jdbcType="VARCHAR" property="attribute1" />
+    <result column="attribute2" jdbcType="VARCHAR" property="attribute2" />
+    <result column="attribute3" jdbcType="VARCHAR" property="attribute3" />
+    <result column="attribute4" jdbcType="VARCHAR" property="attribute4" />
+    <result column="batch" jdbcType="VARCHAR" property="batch" />
+    <result column="lot" jdbcType="VARCHAR" property="lot" />
+    <result column="projectNo" jdbcType="VARCHAR" property="projectNo" />
+    <result column="manufactureDate" jdbcType="DATE" property="manufactureDate" />
+    <result column="expirationDate" jdbcType="DATE" property="expirationDate" />
+    <result column="agingDate" jdbcType="DATE" property="agingDate" />
+    <result column="inventorySts" jdbcType="VARCHAR" property="inventorySts" />
+    <result column="dockLoc" jdbcType="VARCHAR" property="dockLoc" />
+    <result column="packingClass" jdbcType="VARCHAR" property="packingClass" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="waveId" jdbcType="INTEGER" property="waveId" />
+    <result column="created" jdbcType="TIMESTAMP" property="created" />
+    <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
+    <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" />
+    <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" />
+    <result column="version" jdbcType="INTEGER" property="version" />
+    <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
+    <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
+    <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
+    <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, shipmentId, warehouseCode, companyCode, shipmentCode, referCode, referId, referLineNum, 
+    materialCode, materialName, materialSpec, materialUnit, shipQty, requestQty, allocationRule, 
+    replenishmentRule, pickLocs, attribute1, attribute2, attribute3, attribute4, batch, 
+    lot, projectNo, manufactureDate, expirationDate, agingDate, inventorySts, dockLoc, 
+    packingClass, `enable`, waveId, created, createdBy, lastUpdated, lastUpdatedBy, version, 
+    userDef1, userDef2, userDef3,processStamp
+  </sql>
+
+  <select id="SelectFirstStatus" resultType="java.util.Map">
+        SELECT h.id, h.firstStatus
+        FROM shipment_header_history h
+        INNER JOIN shipment_detail_history d ON h.id = d.shipmentId AND d.id IN (#{ids})
+        GROUP BY h.id,firstStatus
+    </select>
+
+  <delete id="batchDelete">
+    DELETE FROM shipment_detail_history WHERE id IN
+    <foreach item="idItem" collection="array" open="(" separator="," close=")">
+      #{idItem}
+    </foreach>
+  </delete>
+
+  <select id="StatisticalByReceiptId" resultType="java.util.Map">
+       SELECT count(*) as 'totalLines',sum(shipQty) as 'totalQty'
+       FROM shipment_detail_history
+       WHERE shipmentId=#{headerId}
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml b/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml
index 24fda54..539503a 100644
--- a/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml
+++ b/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml
@@ -43,11 +43,6 @@
     <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
     <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">
@@ -57,7 +52,7 @@
     replenishmentRule, pickLocs, attribute1, attribute2, attribute3, attribute4, batch, 
     lot, projectNo, manufactureDate, expirationDate, agingDate, inventorySts, dockLoc, 
     packingClass, `enable`, waveId, created, createdBy, lastUpdated, lastUpdatedBy, version, 
-    userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, processStamp
+    userDef1, userDef2, userDef3,processStamp
   </sql>
 
 
diff --git a/src/main/resources/mybatis/shipment/ShipmentHeaderHistoryMapper.xml b/src/main/resources/mybatis/shipment/ShipmentHeaderHistoryMapper.xml
new file mode 100644
index 0000000..2f6327c
--- /dev/null
+++ b/src/main/resources/mybatis/shipment/ShipmentHeaderHistoryMapper.xml
@@ -0,0 +1,70 @@
+<?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.shipmentHeaderHistory.mapper.ShipmentHeaderHistoryMapper">
+  <resultMap id="BaseResultMap" type="com.huaheng.pc.shipment.shipmentHeaderHistory.domain.ShipmentHeaderHistory">
+    <!--@mbg.generated-->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" />
+    <result column="companyCode" jdbcType="VARCHAR" property="companyCode" />
+    <result column="code" jdbcType="VARCHAR" property="code" />
+    <result column="referCode" jdbcType="VARCHAR" property="referCode" />
+    <result column="referCodeType" jdbcType="VARCHAR" property="referCodeType" />
+    <result column="referId" jdbcType="INTEGER" property="referId" />
+    <result column="referPlatform" jdbcType="INTEGER" property="referPlatform" />
+    <result column="firstStatus" jdbcType="INTEGER" property="firstStatus" />
+    <result column="lastStatus" jdbcType="INTEGER" property="lastStatus" />
+    <result column="shipmentType" jdbcType="VARCHAR" property="shipmentType" />
+    <result column="route" jdbcType="VARCHAR" property="route" />
+    <result column="customerCode" jdbcType="VARCHAR" property="customerCode" />
+    <result column="customerName" jdbcType="VARCHAR" property="customerName" />
+    <result column="priority" jdbcType="INTEGER" property="priority" />
+    <result column="requestedDeliveryDate" jdbcType="DATE" property="requestedDeliveryDate" />
+    <result column="scheduledShipDate" jdbcType="DATE" property="scheduledShipDate" />
+    <result column="actualShipDateTime" jdbcType="TIMESTAMP" property="actualShipDateTime" />
+    <result column="actualDeliveryDate" jdbcType="DATE" property="actualDeliveryDate" />
+    <result column="deliveryNote" jdbcType="VARCHAR" property="deliveryNote" />
+    <result column="rejectionNote" jdbcType="VARCHAR" property="rejectionNote" />
+    <result column="waveId" jdbcType="INTEGER" property="waveId" />
+    <result column="shipDock" jdbcType="VARCHAR" property="shipDock" />
+    <result column="allocateComplete" jdbcType="INTEGER" property="allocateComplete" />
+    <result column="totalWeight" jdbcType="DECIMAL" property="totalWeight" />
+    <result column="totalQty" jdbcType="INTEGER" property="totalQty" />
+    <result column="totalVolume" jdbcType="DECIMAL" property="totalVolume" />
+    <result column="totalLines" jdbcType="INTEGER" property="totalLines" />
+    <result column="processType" jdbcType="VARCHAR" property="processType" />
+    <result column="lastWaveId" jdbcType="INTEGER" property="lastWaveId" />
+    <result column="signValue" jdbcType="VARCHAR" property="signValue" />
+    <result column="carrierCode" jdbcType="VARCHAR" property="carrierCode" />
+    <result column="carrierService" jdbcType="VARCHAR" property="carrierService" />
+    <result column="shipmentNote" jdbcType="VARCHAR" property="shipmentNote" />
+    <result column="carrierServer" jdbcType="VARCHAR" property="carrierServer" />
+    <result column="carrierServerName" jdbcType="VARCHAR" property="carrierServerName" />
+    <result column="plateNumber" jdbcType="VARCHAR" property="plateNumber" />
+    <result column="carModel" jdbcType="VARCHAR" property="carModel" />
+    <result column="driverName" jdbcType="VARCHAR" property="driverName" />
+    <result column="driverTel" jdbcType="VARCHAR" property="driverTel" />
+    <result column="created" jdbcType="TIMESTAMP" property="created" />
+    <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
+    <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" />
+    <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" />
+    <result column="version" jdbcType="INTEGER" property="version" />
+    <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
+    <result column="userDef2" jdbcType="VARCHAR" property="userDef2" />
+    <result column="userDef3" jdbcType="VARCHAR" property="userDef3" />
+    <result column="processStamp" jdbcType="VARCHAR" property="processStamp" />
+    <result column="deleted" jdbcType="BIT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, warehouseCode, companyCode, code, referCode, referCodeType, referId,
+    referPlatform, firstStatus, lastStatus, shipmentType, route, customerCode, customerName, 
+    priority, requestedDeliveryDate, scheduledShipDate, actualShipDateTime,
+    actualDeliveryDate, deliveryNote, rejectionNote, waveId, shipDock, allocateComplete, 
+    totalWeight, totalQty, totalVolume, totalLines,
+    processType, lastWaveId, signValue, carrierCode, carrierService, shipmentNote, carrierServer, 
+    carrierServerName, plateNumber, carModel, driverName, driverTel, created, createdBy, 
+    lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3,processStamp, deleted
+  </sql>
+
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/shipment/ShipmentHeaderMapper.xml b/src/main/resources/mybatis/shipment/ShipmentHeaderMapper.xml
index 1e8433c..51a802d 100644
--- a/src/main/resources/mybatis/shipment/ShipmentHeaderMapper.xml
+++ b/src/main/resources/mybatis/shipment/ShipmentHeaderMapper.xml
@@ -51,11 +51,6 @@
     <result column="userDef1" jdbcType="VARCHAR" property="userDef1" />
     <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="deleted" jdbcType="BIT" property="deleted" />
   </resultMap>
@@ -68,8 +63,7 @@
     totalWeight, totalQty, totalVolume, totalLines,
     processType, lastWaveId, signValue, carrierCode, carrierService, shipmentNote, carrierServer, 
     carrierServerName, plateNumber, carModel, driverName, driverTel, created, createdBy, 
-    lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3, userDef4, userDef5, 
-    userDef6, userDef7, userDef8, processStamp, deleted
+    lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3,processStamp, deleted
   </sql>
 
   <select id="createCode" resultType="java.lang.String">
diff --git a/src/main/resources/templates/config/receiptType/add.html b/src/main/resources/templates/config/receiptType/add.html
index 73e8eed..4ad8338 100644
--- a/src/main/resources/templates/config/receiptType/add.html
+++ b/src/main/resources/templates/config/receiptType/add.html
@@ -46,7 +46,9 @@
         <div class="form-group">
             <label class="col-sm-3 control-label">入库流程:</label>
             <div class="col-sm-8">
-                <input id="receiptFlow" name="receiptFlow" class="form-control" type="text">
+                <select id="receiptFlow" name="receiptFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList()}">
+                    <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option>
+                </select>
             </div>
         </div>
         <!--<div class="form-group">
@@ -167,6 +169,7 @@
             // $.operate.save(prefix + "/add", $('#form-locationType-add').serialize());
             var tableValue = $.common.getTableValue("#form-receiptType-add");
             tableValue = formValueReplace(tableValue, "companyCode", $("#companyCode option:selected").val());
+            tableValue = formValueReplace(tableValue, "receiptFlow", $("#receiptFlow option:selected").val());
             tableValue = formValueReplace(tableValue, "enable", $("input[name='enable']").is(':checked'));
             $.operate.save(prefix + "/add", tableValue);
         }
diff --git a/src/main/resources/templates/config/receiptType/edit.html b/src/main/resources/templates/config/receiptType/edit.html
index 545109f..5aeca3a 100644
--- a/src/main/resources/templates/config/receiptType/edit.html
+++ b/src/main/resources/templates/config/receiptType/edit.html
@@ -48,7 +48,9 @@
         <div class="form-group">
             <label class="col-sm-3 control-label">入库流程:</label>
             <div class="col-sm-8">
-                <input id="receiptFlow" name="receiptFlow" class="form-control" type="text" th:field="*{receiptFlow}">
+                <select id="receiptFlow" name="receiptFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList()}" th:field="*{receiptFlow}">
+                    <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option>
+                </select>
             </div>
         </div>
         <!--<div class="form-group">
@@ -169,6 +171,8 @@
             // $.operate.save(prefix + "/add", $('#form-locationType-add').serialize());
             var tableValue = $.common.getTableValue("#form-receiptType-edit");
             tableValue = formValueReplace(tableValue, "companyCode", $("#companyCode option:selected").val());
+            tableValue = formValueReplace(tableValue, "receiptFlow", $("#receiptFlow option:selected").val());
+            tableValue = formValueReplace(tableValue, "enable", $("input[name='enable']").is(':checked'));
             $.operate.save(prefix + "/edit", tableValue);
         }
     });
diff --git a/src/main/resources/templates/config/statusFlowDetail/add.html b/src/main/resources/templates/config/statusFlowDetail/add.html
index bbd23b6..3c5d9c3 100644
--- a/src/main/resources/templates/config/statusFlowDetail/add.html
+++ b/src/main/resources/templates/config/statusFlowDetail/add.html
@@ -6,6 +6,7 @@
 <div class="wrapper wrapper-content animated fadeInRight ibox-content">
     <form class="form-horizontal m" id="form-statusFlowDetails-add">
         <input name="headerId" type="hidden" th:value="${headerId}">
+        <input name="headerCode" type="hidden" th:value="${headerCode}">
         <div class="form-group">
             <label class="col-sm-3 control-label">状态流:</label>
             <div class="col-sm-8">
diff --git a/src/main/resources/templates/config/statusFlowDetail/edit.html b/src/main/resources/templates/config/statusFlowDetail/edit.html
index 682bbd4..a6076ee 100644
--- a/src/main/resources/templates/config/statusFlowDetail/edit.html
+++ b/src/main/resources/templates/config/statusFlowDetail/edit.html
@@ -16,7 +16,7 @@
         <div class="form-group">
             <label class="col-sm-3 control-label">模块:</label>
             <div class="col-sm-8">
-                <input id="moduleType" name="moduleType" class="form-control" type="text" th:field="*{modlueType}">
+                <input id="moduleType" name="moduleType" class="form-control" type="text" th:field="*{moduleType}">
             </div>
         </div>
         <div class="form-group">
@@ -26,7 +26,7 @@
             </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="sequence" name="sequence" class="form-control" type="text" th:field="*{sequence}">
             </div>
@@ -53,11 +53,11 @@
         <!--    </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="enable" name="enable" th:field="*{enable}" class="form-control" type="text">-->
                 <div class="onoffswitch">
-                    <input type="checkbox" th:checked="true" class="onoffswitch-checkbox"
-                           id="enable" name="enable" th:field="*{enable}">
+                    <input type="checkbox" th:checked="*{enable}" class="onoffswitch-checkbox" id="enable" name="enable">
                     <label class="onoffswitch-label" for="enable">
                         <span class="onoffswitch-inner"></span>
                         <span class="onoffswitch-switch"></span>
@@ -75,7 +75,7 @@
 </div>
 <div th:include="include::footer"></div>
 <script type="text/javascript">
-    var prefix = ctx + "config/statusFlowDetails";
+    var prefix = ctx + "config/statusFlowDetail";
     $("#form-statusFlowDetails-edit").validate({
         rules:{
             flowCode:{
@@ -96,7 +96,7 @@
             var tableValue = $.common.getTableValue("#form-statusFlowDetails-edit");
             tableValue = formValueReplace(tableValue, "nessary", $("#nessary option:selected").val());
             tableValue = formValueReplace(tableValue, "enable", $("input[name='enable']").is(':checked'));
-            $.operate.save(prefix + "/add", tableValue);
+            $.operate.save(prefix + "/edit", tableValue);
         }
     });
 </script>
diff --git a/src/main/resources/templates/config/statusFlowDetail/statusFlowDetail.html b/src/main/resources/templates/config/statusFlowDetail/statusFlowDetail.html
index 07e0966..9ff33cf 100644
--- a/src/main/resources/templates/config/statusFlowDetail/statusFlowDetail.html
+++ b/src/main/resources/templates/config/statusFlowDetail/statusFlowDetail.html
@@ -23,6 +23,7 @@
     var editFlag = [[${@permission.hasPermi('config:statusFlowDetails:edit')}]];
     var removeFlag = [[${@permission.hasPermi('config:statusFlowDetails:remove')}]];
     var datas = [[${@dict.getType('sys_normal_disable')}]];
+    var nessaryDatas = [[${@dict.getType('nessary')}]];
     $(function() {
         var options = {
             url: prefix + "/list",
@@ -81,7 +82,7 @@
                     title : '是否是必须流程',
                     align: 'center',
                     formatter: function(value, row, index) {
-                        return $.table.selectDictLabel(datas, value);
+                        return $.table.selectDictLabel(nessaryDatas, value);
                     }
                 },
                 {
diff --git a/src/main/resources/templates/config/statusFlowHeader/add.html b/src/main/resources/templates/config/statusFlowHeader/add.html
index b3ffed5..c6ad1b4 100644
--- a/src/main/resources/templates/config/statusFlowHeader/add.html
+++ b/src/main/resources/templates/config/statusFlowHeader/add.html
@@ -6,13 +6,13 @@
 <div class="wrapper wrapper-content animated fadeInRight ibox-content">
     <form class="form-horizontal m" id="form-statusFlowHeader-add">
         <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="code" name="code" 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="name" name="name" class="form-control" type="text">
             </div>
diff --git a/src/main/resources/templates/config/statusFlowHeader/edit.html b/src/main/resources/templates/config/statusFlowHeader/edit.html
index 3514e0b..61ebc57 100644
--- a/src/main/resources/templates/config/statusFlowHeader/edit.html
+++ b/src/main/resources/templates/config/statusFlowHeader/edit.html
@@ -7,13 +7,13 @@
     <form class="form-horizontal m" id="form-statusFlowHeader-edit" th:object="${statusFlowHeader}">
         <input name="id" th:field="*{id}" type="hidden">
         <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="code" name="code" class="form-control" type="text" th:field="*{code}">
             </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="name" name="name" class="form-control" type="text" th:field="*{name}">
             </div>
@@ -43,11 +43,11 @@
         <!--    </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="enable" name="enable" th:field="*{enable}" class="form-control" type="text">-->
                 <div class="onoffswitch">
-                    <input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="enable" name="enable"
-                           th:field="*{enable}">
+                    <input type="checkbox" th:checked="*{enable}" class="onoffswitch-checkbox" id="enable" name="enable">
                     <label class="onoffswitch-label" for="enable">
                         <span class="onoffswitch-inner"></span>
                         <span class="onoffswitch-switch"></span>
@@ -65,7 +65,7 @@
 </div>
 <div th:include="include::footer"></div>
 <script type="text/javascript">
-    var prefix = ctx + "config/receiptType";
+    var prefix = ctx + "config/statusFlowHeader";
     $("#form-statusFlowHeader-edit").validate({
         rules:{
             code:{
diff --git a/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html b/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html
index 75ddd32..da7a123 100644
--- a/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html
+++ b/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html
@@ -75,6 +75,8 @@
     var prefix1 = ctx + "config/statusFlowDetail";
     var editFlag = [[${@permission.hasPermi('config:statusFlowHeader:edit')}]];
     var removeFlag = [[${@permission.hasPermi('config:statusFlowHeader:remove')}]];
+    var datas = [[${@dict.getType('sys_normal_disable')}]];
+
     $(function() {
         var options = {
             url: prefix + "/list",
@@ -94,11 +96,11 @@
                 },
                 {
                     field : 'code',
-                    title : '状态流'
+                    title : '编码'
                 },
                 {
                     field : 'name',
-                    title : '状态流名称'
+                    title : '名称'
                 },
                 {
                     field : 'warehouseCode',
@@ -113,6 +115,14 @@
                     title : '类型'
                 },
                 {
+                    field : 'enable',
+                    title : '是否有效'  ,
+                    align: 'center',
+                    formatter: function(value, row, index) {
+                        return $.table.selectDictLabel(datas, value);
+                    }
+                },
+                {
                     field : 'version',
                     title : '数据版本',
                     visible : false
diff --git a/src/main/resources/templates/inventory/cyclecountAdjustDetail/addAdjust.html b/src/main/resources/templates/inventory/adjustDetail/addAdjust.html
index fb5e0e8..fb5e0e8 100644
--- a/src/main/resources/templates/inventory/cyclecountAdjustDetail/addAdjust.html
+++ b/src/main/resources/templates/inventory/adjustDetail/addAdjust.html
diff --git a/src/main/resources/templates/inventory/cyclecountAdjustDetail/cyclecountAdjustDetail.html b/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html
index 59f00a4..3b32bda 100644
--- a/src/main/resources/templates/inventory/cyclecountAdjustDetail/cyclecountAdjustDetail.html
+++ b/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html
@@ -6,54 +6,43 @@
 <div class="row">
     <div class="col-sm-12">
         <div class="col-sm-12 select-info">
-            <div class="select-list" th:object="${header}">
+            <div class="select-list" >
                 <ul>
                     <li>
                         <form id="cycleHeader-form">
-                            差异单ID:<input type="text" id="cyclecountAdjustId" name="cyclecountAdjustId" th:value="*{id}" readonly="readonly">
+                            调整单编码:<input type="text" id="cyclecountAdjustId" name="cyclecountAdjustId" />
                         </form>
                     </li>
                     <li>
-                        货主编码:<input id="companyCode" type="text" name="companyCode" th:value="*{companyCode}" readonly="readonly"/>
+                        货主编码:<input id="companyCode" type="text" name="companyCode" />
                     </li>
                     <li>
-                        调整单编码:<input id="code" type="text" name="code" th:value="*{code}" readonly="readonly"/>
+                        调整单编码:<input id="code" type="text" name="code" />
                     </li>
                     <li>
-                        源盘点单号:<input id="sourceCode" type="text" name="sourceCode" th:value="*{sourceCode}" readonly="readonly">
+                        盘点单号:<input id="sourceCode" type="text" name="sourceCode" />
                     </li>
-                   <!-- <li>
-                        &lt;!&ndash;头 状 态:<input type="text" name="firstStatus"/>&ndash;&gt;
-                        状态:<input id = "status" type="text" name="status" th:value="*{statusLabel}" readonly="readonly">
-                    </li>-->
                     <li>
-                        调整单状态:<input id = "status" type="text" name="status" th:value="*{statusLabel}" readonly="readonly">
+                        调整单状态:<input id = "status" type="text" name="status" />
                     </li>
                     <li>
-                        创建时间:<input id="created" type="text" name="created" th:value="*{created}" readonly="readonly">
+                        创建时间:<input id="created" type="text" name="created" />
 
                     </li>
                     <li>
-                        创建人:<input id="createdBy" type="text" name="createdBy" th:value="*{createdBy}" readonly="readonly">
+                        创建人:<input id="createdBy" type="text" name="createdBy" />
                     </li>
                     <li>
-                        最后更新时间:<input id="lastUpdated" type="text" name="lastUpdated" th:value="*{lastUpdated}" readonly="readonly">
-
-                    </li>
-                    <li>
-                        最后更新人:<input id="lastUpdatedBy" type="text" name="lastUpdatedBy" th:value="*{lastUpdatedBy}" readonly="readonly">
+                    <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
+                    class="fa fa-search"></i>&nbsp;搜索</a>
                     </li>
-                    <!--<li>-->
-                    <!--<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i-->
-                    <!--class="fa fa-search"></i>&nbsp;搜索</a>-->
-                    <!--</li>-->
                 </ul>
             </div>
         </div>
        <div class="btn-group hidden-xs" id="toolbar" role="group">
 
-            <a class="btn btn-outline btn-danger btn-rounded" onclick="addAdjust()"
-               shiro:hasPermission="inventory:cyclecountAdjustDetail:addAdjust">
+            <a class="btn btn-outline btn-danger btn-rounded" onclick="addAdjust()" />
+               <!--shiro:hasPermission="inventory:cyclecountAdjustDetail:addAdjust"-->
                 <i class="fa fa-vcard"></i>差异调整
             </a>
            <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="createCyclecountWithGapQty()"
@@ -73,21 +62,19 @@
 </div>
 <div th:include="include :: footer"></div>
 <script th:inline="javascript">
-    var prefix = ctx + "inventory/cyclecountAdjustDetail";
-    var prefix_head = ctx + "inventory/cyclecountAdjust";
+    var prefix = ctx + "inventory/adjustDetail";
+    var prefix_head = ctx + "inventory/adjustHeader";
     var datas = [[${@dict.getType('adjustType')}]];
     var inventoryStatus=[[${@dict.getType('inventoryStatus')}]];
-
     var created ;
 
-
     $(function () {
         var options = {
             // url: prefix + "/list",
 /*            createUrl: prefix + "/add",
             updateUrl: prefix + "/edit/{id}",
             removeUrl: prefix + "/remove",*/
-            modalName: "差异单明细",
+            modalName: "调整单明细",
             sortName: "id",
             sortOrder: "desc",
             showRefresh:false,
diff --git a/src/main/resources/templates/inventory/cyclecountAdjustDetail/adjustEdit.html b/src/main/resources/templates/inventory/adjustDetail/adjustEdit.html
index ecffbfd..ecffbfd 100644
--- a/src/main/resources/templates/inventory/cyclecountAdjustDetail/adjustEdit.html
+++ b/src/main/resources/templates/inventory/adjustDetail/adjustEdit.html
diff --git a/src/main/resources/templates/inventory/cyclecountAdjust/cyclecountAdjust.html b/src/main/resources/templates/inventory/adjustHeader/adjustHeader.html
index 8bd5401..8edd4a8 100644
--- a/src/main/resources/templates/inventory/cyclecountAdjust/cyclecountAdjust.html
+++ b/src/main/resources/templates/inventory/adjustHeader/adjustHeader.html
@@ -1,9 +1,9 @@
 <!DOCTYPE HTML>
-<html lang="zh" xmlns:th="http://www.thymeleaf.org">
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 <meta charset="utf-8">
 <head th:include="include :: header"></head>
 <style>
-    #toolbar1{
+    #toolbar1 {
         display: inline-block;
         /*position: absolute;
         margin: 10px auto;*/
@@ -11,235 +11,216 @@
     }
 </style>
 <body class="gray-bg">
-    <div class="container-div">
-		<div class="row">
-			<div class="col-sm-12 select-info">
-				<ul id="myTab" class="nav nav-tabs">
-					<li class="active"><a href="#tabHeader" data-toggle="tab">主表</a></li>
-					<li><a href="#tabDetail" data-toggle="tab">明细</a></li>
-				</ul>
-				<div id="myTabContent" class="tab-content">
-					<div class="tab-pane fade in active" id="tabHeader">
-						<div class="col-sm-12 select-info">
-							<form id="cycleHeader-form">
-								<div class="select-list">
-									<ul>
-										<li>
-											差异单编号:<input type="text" name="code"/>
-										</li>
-										<li>
-											源盘点单号:<input type="text" name="sourceCode"/>
-										</li>
-										<li>
-											差异单状态:<select name="status"
-														  th:with="lastStatus=${@dict.getType('adjustType')}">
-											<option value="">所有</option>
-											<option th:each="e : ${lastStatus}" th:text="${e['dictLabel']}"
-													th:value="${e['dictValue']}"></option>
-										</select>
-										</li>
-										<li class="time">
-											<label>创建时间: </label>
-											<input type="text" class="time-input" id="startTime" placeholder="开始时间"
-												   name="params[createdBegin]"/>
-											<span>-</span>
-											<input type="text" class="time-input" id="endTime" placeholder="结束时间"
-												   name="params[createdEnd]"/>
-										</li>
-										<li>
-											货主编码:<input type="text" name="companyCode"/>
-										</li>
-										<li>
-											创建人:<input type="text" name="createdBy"/>
-										</li>
-										<li>
-											更新人:<input type="text" name="lastUpdatedBy"/>
-										</li>
-										<li>
-											<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
-													class="fa fa-search"></i>&nbsp;搜索</a>
-										</li>
-									</ul>
-								</div>
-							</form>
-						</div>
-						<!--<div class="btn-group hidden-xs" id="toolbar" role="group">
-							<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="inventoryHeader:cycleCount:insert">
-								<i class="fa fa-plus"></i> 新增
-							</a>
-						</div>-->
-						<table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table>
-					</div>
-					<div class="tab-pane fade" id="tabDetail"></div>
-				</div>
-			</div>
+<div class="container-div">
+    <div class="row">
+        <div class="col-sm-12 select-info">
+            <ul id="myTab" class="nav nav-tabs">
+                <li class="active"><a href="#tabHeader" data-toggle="tab">主表</a></li>
+                <li><a href="#tabDetail" data-toggle="tab">明细</a></li>
+            </ul>
+            <div id="myTabContent" class="tab-content">
+                <div class="tab-pane fade in active" id="tabHeader">
+                    <div class="col-sm-12 select-info">
+                        <form id="cycleHeader-form">
+                            <div class="select-list">
+                                <ul>
+                                    <li>
+                                        调整单编号:<input type="text" name="code"/>
+                                    </li>
+                                    <li>
+                                        盘点单号:<input type="text" name="sourceCode"/>
+                                    </li>
+                                    <li>
+                                        盘点类型:<select name="problemType"
+                                                      th:with="problemType=${@dict.getType('adjustType')}">
+                                        <option value="">所有</option>
+                                        <option th:each="e : ${problemType}" th:text="${e['dictLabel']}"
+                                                th:value="${e['dictValue']}"></option>
+                                    </select>
+                                    </li>
+                                    <li>
+                                        质检单号:<input type="text" name="checkCode"/>
+                                    </li>
+                                    <li>
+                                        上游单编码:<input type="text" name="referCode"/>
+                                    </li>
+                                    <li>
+                                        货主编码:<input type="text" name="companyCode"/>
+                                    </li>
+                                    <li>
+                                        创建人:<input type="text" name="createdBy"/>
+                                    </li>
 
-		</div>
-    </div>
-    <div th:include="include :: footer"></div>
-    <script th:inline="javascript">
-        var prefix = ctx + "inventory/cyclecountAdjust";
-		var upload = [[${@permission.hasPermi('inventoryHeader:cyclecountAdjust:upload')}]];
-        var report =[[${@permission.hasPermi('inventoryHeader:cyclecountAdjust:report')}]];
-        var datas = [[${@dict.getType('sys_normal_disable')}]];
-		var status2 = [[${@dict.getType('adjustType')}]];
+                                    <li class="time">
+                                        <label>创建时间: </label>
+                                        <input type="text" class="time-input" id="startTime" placeholder="开始时间"
+                                               name="createdBegin"/>
+                                        <span>-</span>
+                                        <input type="text" class="time-input" id="endTime" placeholder="结束时间"
+                                               name="createdEnd"/>
+                                    </li>
+                                    <li>
+                                        <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
+                                                class="fa fa-search"></i>&nbsp;搜索</a>
+                                    </li>
+                                </ul>
+                            </div>
+                        </form>
+                    </div>
+                    <table id="bootstrap-table" data-mobile-responsive="true"
+                           class="table table-bordered table-hover"></table>
+                </div>
+                <div class="tab-pane fade" id="tabDetail"></div>
+            </div>
+        </div>
 
-        $(function() {
-            var options = {
-                url: prefix + "/list",
-                createUrl: prefix + "/add",
-                updateUrl: prefix + "/edit/{id}",
-                removeUrl: prefix + "/remove",
-                modalName: "盘点差异调整单主",
-                sortName: "id",
-                sortOrder: "desc",
-                search: false,
-                // onDblClickRow: function (row) {
-                //     showDetail(row.id,row.code);
-                // },
-                columns: [{
-		            checkbox: true
-		        },
-				{
-					field : 'id', 
-					title : '差异单id'
-				},
-				{
-					field : 'code', 
-					title : '差异单编码'
-				},
-                    {
-                        field : 'cyclecountHeadId',
-                        title : '源盘点单id',
-                        visible: false
+    </div>
+</div>
+<div th:include="include :: footer"></div>
+<script th:inline="javascript">
+    var prefix = ctx + "inventory/adjustHeader";
+    var upload = [[${@permission.hasPermi('inventoryHeader:adjustHeader:upload')}]];
+    var report = [[${@permission.hasPermi('inventoryHeader:adjustHeader:report')}]];
+    var datas = [[${@dict.getType('sys_normal_disable')}]];
+    var status2 = [[${@dict.getType('adjustType')}]];
 
+    $(function () {
+        var options = {
+            url: prefix + "/list",
+            createUrl: prefix + "/add",
+            updateUrl: prefix + "/edit/{id}",
+            removeUrl: prefix + "/remove",
+            modalName: "调整主单",
+            sortName: "id",
+            sortOrder: "desc",
+            search: false,
+            // onDblClickRow: function (row) {
+            //     showDetail(row.id,row.code);
+            // },
+            columns: [{
+                checkbox: true
+            },
+                {
+                    field: 'id',
+                    title: '主单ID'
+                },
+                {
+                    field: 'code',
+                    title: '调整单编码'
+                },
+                {
+                    field: 'warehouseCode',
+                    title: '仓库编码',
+                    visible: true
+                },
+                {
+                    field: 'companyCode',
+                    title: '货主编码'
+                },
+                {
+                    field: 'cycleCountCode',
+                    title: '盘点单号'
+                },
+                {
+                    field: 'problemType',
+                    title: '调整类型'
+                },
+                {
+                    field: 'referCode',
+                    title: '关联上游单编码'
+                },
+                {
+                    field: 'referReason',
+                    title: '关联上游说明'
+                },
+                {
+                    field: 'problemType',
+                    title: '调整类型',
+                    align: 'center',
+                    formatter: function (value, row, index) {
+                        return $.table.selectDictLabel(status2, value);
                     },
-				{
-					field : 'sourceCode',
-					title : '源盘点单号'
-				},
-                    {
-                        field : 'warehouseCode',
-                        title : '仓库编码'
-                    },
-                    {
-                        field : 'companyCode',
-                        title : '货主编码'
-                    },
-				{
-					field: 'status',
-					title: '差异单状态',
-					align: 'center',
-					formatter: function(value, row, index) {
-						return $.table.selectDictLabel(status2, value);
-					},
-					sortable:true
-				},
+                    sortable: true
+                },
 
-				{
-					field : 'created',
-					title : '创建时间',
-                    formatter : function(created, row, index) {  //去除时间中间的T
+                {
+                    field: 'created',
+                    title: '创建时间',
+                    formatter: function (created, row, index) {  //去除时间中间的T
                         return created.replace("T", " ");
                     }
-				},
-				{
-					field : 'createdBy', 
-					title : '创建用户' 
-				},
-				{
-					field : 'lastUpdated', 
-					title : '更新时间',
-                   formatter : function(lastUpdated, row, index) {   //去除时间中间的T
-                        return lastUpdated.replace("T", " ");
+                },
+                {
+                    field: 'createdBy',
+                    title: '创建用户'
+                },
+                /*{
+                    field: 'enable',
+                    title: '是否有效',
+                    align: 'center',
+                    formatter: function (value, row, index) {
+                        return $.table.selectDictLabel(datas, value);
                     }
-                    },
-				{
-					field : 'lastUpdatedBy', 
-					title : '更新用户' 
-				},
-                   {
-                        field : 'uploadTime',
-                        title : '上传时间'
-                    },
-				/*{
-                        field : 'enable',
-                        title : '是否有效' ,
-                        align: 'center',
-                        formatter: function(value, row, index) {
-                            return $.table.selectDictLabel(datas, value);
-                        }
-				},*/
-                    {
-                        field : 'verifyBy',
-                        title : '审核人'
-                    },
-                    {
-                        field: 'enable',
-                        title: '是否有效',
-                        align: 'center',
-                        formatter: function (value, row, index) {
-                            return $.table.selectDictLabel(datas, value);
-                        }
-                    },
+                },*/
 
-		        {
-		            title: '操作',
-		            align: 'center',
-		            formatter: function(value, row, index) {
-		            	var actions = [];
+                {
+                    title: '操作',
+                    align: 'center',
+                    formatter: function (value, row, index) {
+                        var actions = [];
                         actions.push('<a class="btn btn-success btn-xs ' + report + '" href="#" onclick="cyclecountPrint(\'' + row.id + '\')"><i class="fa fa-print"></i>打印</a> ');
-                        actions.push('<a class="btn btn-info btn-xs ' + upload + ' " href="#" onclick="upLoad(\'' + row.code + '\',\''+row.sourceCode+'\')"><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-trash-o"></i>删除</a> ');*/
+                        actions.push('<a class="btn btn-info btn-xs ' + upload + ' " href="#" onclick="upLoad(\'' + row.code + '\',\'' + row.sourceCode + '\')"><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-trash-o"></i>删除</a> ');*/
                         actions.push('<a style="background: #b5bdc0" class="btn btn-default btn-xs " href="#" onclick="detail(\'' + row.id + '\',\'' + row.code + '\')"><i class="fa fa-list-ul"></i>明细</a>');
-						return actions.join('');
-		            }
-		        }]
-            };
-            $.table.init(options);
-			$("#myTab li:eq(1)").one('click',(function () {
-                var cyc_id=$("#bootstrap-table tr:eq(1) td:eq(1)").text();
-                var cyc_code=$("#bootstrap-table tr:eq(1) td:eq(2)").text();
-                detail(cyc_id,cyc_code);
-            }));
-        });
+                        return actions.join('');
+                    }
+                }]
+        };
+        $.table.init(options);
+        $("#myTab li:eq(1)").one('click', (function () {
+            var cyc_id = $("#bootstrap-table tr:eq(1) td:eq(1)").text();
+            var cyc_code = $("#bootstrap-table tr:eq(1) td:eq(2)").text();
+            detail(cyc_id, cyc_code);
+        }));
+    });
 
-        function detail(id,code) {
-            var url = ctx +"inventory/cyclecountAdjustDetail?code="+code;
-            $("#tabDetail").children().remove();
-            $("#myTab li").removeClass("active");
-            var height = $(document).height()-100 + 'px';
-            var str = '<iframe class="huaheng_iframe" name="iframe" width="100%" height="' + height + '" src="' + url + '" frameborder="0" data-id="' + url + '" seamless></iframe>';
-            $("#tabDetail").empty();
-            $("#tabDetail").append(str);
-            $(".tab-pane").removeClass("in active");
-            $("#myTab li:eq(1)").addClass("active");
-            $("#tabDetail").addClass("in active");
-        }
+    function detail(id, code) {
+        var url = ctx + "inventory/adjustDetail?adjustCode=" + code;
+        $("#tabDetail").children().remove();
+        $("#myTab li").removeClass("active");
+        var height = $(document).height() - 100 + 'px';
+        var str = '<iframe class="huaheng_iframe" name="iframe" width="100%" height="' + height + '" src="' + url + '" frameborder="0" data-id="' + url + '" seamless></iframe>';
+        $("#tabDetail").empty();
+        $("#tabDetail").append(str);
+        $(".tab-pane").removeClass("in active");
+        $("#myTab li:eq(1)").addClass("active");
+        $("#tabDetail").addClass("in active");
+    }
 
-        function cyclecountPrint(id) {
-            var url = prefix + "/report/" + id;
-            $.modal.open("差异单打印" , url);
-        }
+    function cyclecountPrint(id) {
+        var url = prefix + "/report/" + id;
+        $.modal.open("差异单打印", url);
+    }
 
-        function upLoad(code,sourceCode) {
-            $.ajax({
-                url:ctx+'/api/icsCyclecount/cycleCountDiff',
-                type:'post',
-                data:{
-                    code:code,
-                    sourceCode:sourceCode
-                },
-                success:function (res) {
-                    if (res.code === 200) {
-                        $.modal.msgSuccess();
-                    }
-                    else {
-                        $.modal.msgError(res.msg);
-                    }
+
+    //上传API接口
+    function upLoad(code, sourceCode) {
+        $.ajax({
+            url: ctx + '/api/icsCyclecount/cycleCountDiff',
+            type: 'post',
+            data: {
+                code: code,
+                sourceCode: sourceCode
+            },
+            success: function (res) {
+                if (res.code === 200) {
+                    $.modal.msgSuccess();
+                } else {
+                    $.modal.msgError(res.msg);
                 }
-            })
-        }
-    </script>
+            }
+        })
+    }
+</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/src/main/resources/templates/inventory/cyclecountAdjust/report.html b/src/main/resources/templates/inventory/adjustHeader/report.html
index 5d8dfef..f63ec60 100644
--- a/src/main/resources/templates/inventory/cyclecountAdjust/report.html
+++ b/src/main/resources/templates/inventory/adjustHeader/report.html
@@ -54,7 +54,7 @@
 <script type="text/javascript" src="../../../js/barcode/JsBarcode.all.js"></script>
 <script th:inline="javascript">
 
-    var res=[[${cyclecountAdjust.created}]];
+    var res=[[${adjustHeader.created}]];
     res=res.replace("T"," ");
     res=res.substr(0,19);
     $(".time_c").text(res);
diff --git a/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html b/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
index 28c3419..ebfbd71 100644
--- a/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
+++ b/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
@@ -6,48 +6,80 @@
 <div class="row">
     <div class="col-sm-12">
         <div class="col-sm-12 select-info">
-            <div class="select-list" th:object="${header}">
+            <div class="select-list">
                 <ul>
                     <li>
                         <form id="cycleHeader-form">
-                            盘点单id:<input type="text" id="headId" name="headId" th:value="*{id}" readonly="readonly">
+                            盘点主ID:<input type="text" id="cycleCountHeadId" name="cycleCountHeadId" />
                         </form>
                     </li>
                     <li>
-                        货主编码:<input id="companyCode" type="text" name="companyCode" th:value="*{companyCode}" readonly="readonly"/>
+                        货主编码:<input id="companyCode" type="text" name="companyCode"  />
                     </li>
                     <li>
-                        盘点单编码:<input id="code" type="text" name="code" th:value="*{code}" readonly="readonly"/>
+                        库位:<input id="locationCode" type="text" name="locationCode" />
                     </li>
                     <li>
-                        源盘点单号:<input id="sourceCode" type="text" name="type" th:value="*{sourceCode}" readonly="readonly">
+                        容器:<input id="containerCode" type="text" name="containerCode" />
                     </li>
                     <li>
-                        <!--入库类型:<input type="text" name="sourceCode"/>-->
-                        盘点类型:<input id="type" type="text" name="type" th:value="*{typeLabel}" readonly="readonly">
+                        库存明细ID:<input id = "inventoryDetailId" type="text" name="inventoryDetailId" />
                     </li>
                     <li>
-                        <!--头 状 态:<input type="text" name="firstStatus"/>-->
-                        状态:<input id = "status" type="text" name="status" th:value="*{statusLabel}" readonly="readonly">
+                        物料编码:<input id="materialCode" type="text" name="materialCode" />
                     </li>
                     <li>
-                        创建时间:<input id="created" type="text" name="created" th:value="*{created}" readonly="readonly">
-
+                        物料名称:<input id="materialName" type="text" name="materialName" />
                     </li>
                     <li>
-                        创建人:<input id="createdBy" type="text" name="createdBy" th:value="*{createdBy}" readonly="readonly">
+                        物料规格:<input id="materialSpec" type="text" name="materialSpec" />
                     </li>
                     <li>
-                        最后更新时间:<input id="lastUpdated" type="text" name="lastUpdated" th:value="*{lastUpdated}" readonly="readonly">
-
+                        任务主表:<input id="taskHeaderId" type="text" name="taskHeaderId" />
+                    </li>
+                    <li>
+                        库存状态:
+                        <select name="inventorySts" 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>
+                        盘点明细状态:<select name="enableStatus"
+                                      th:with="lastStatus=${@dict.getType('cyclecountStatus')}">
+                        <option value="">所有</option>
+                        <option th:each="e : ${lastStatus}" th:text="${e['dictLabel']}"
+                                th:value="${e['dictValue']}"></option>
+                    </select>
+                    </li>
+                    <li>
+                        批次:<input id="batch" type="text" name="batch" />
+                    </li>
+                    <li>
+                        批号:<input id="lot" type="text" name="lot" />
+                    </li>
+                    <li>
+                        项目号:<input id="projectNo" type="text" name="projectNo" />
+                    </li>
+                    <li class="time">
+                        <label>创建时间: </label>
+                        <input type="text" class="time-input" id="startTime" placeholder="开始时间"
+                               name="params[createdBegin]"/>
+                        <span>-</span>
+                        <input type="text" class="time-input" id="endTime" placeholder="结束时间"
+                               name="params[createdEnd]"/>
+                    </li>
+                    <li>
+                        创建人:<input id="createdBy" type="text" name="createdBy" />
+                    </li>
+                    <li>
+                        完成人:<input id="completedBy" type="text" name="completedBy"/>
                     </li>
                     <li>
-                        最后更新人:<input id="lastUpdatedBy" type="text" name="lastUpdatedBy" th:value="*{lastUpdatedBy}" readonly="readonly">
+                    <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
+                    class="fa fa-search"></i>&nbsp;搜索</a>
                     </li>
-                    <!--<li>-->
-                    <!--<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i-->
-                    <!--class="fa fa-search"></i>&nbsp;搜索</a>-->
-                    <!--</li>-->
                 </ul>
             </div>
         </div>
@@ -56,14 +88,6 @@
                shiro:hasPermission="inventory:cycleCountDetail:add">
                 <i class="fa fa-plus"></i> 新增
             </a>
-            <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="comfirmAllWithNoGapQty()"
-               shiro:hasPermission="inventoryHeader:cycleCountDetail:confirmAll">
-                <i class="fa fa-vcard"></i> 全部无差异确认
-            </a>
-            <a class="btn btn-outline btn-danger btn-rounded" onclick="comfirmRemainWithNoGapQty()"
-               shiro:hasPermission="inventoryHeader:cycleCountDetail:confirmRemain">
-                <i class="fa fa-vcard"></i> 剩余无差异确认
-            </a>-->
             <a class="btn btn-outline btn-danger btn-rounded" onclick="createCyclecountWithGapQty()"
                shiro:hasPermission="inventory:cyclecountDetail:cyclecountRepeat">
                 <i class="fa fa-vcard"></i> 差异复盘
@@ -89,10 +113,10 @@
     var removeFlag = [[${@permission.hasPermi('inventoryHeader:cycleCountDetail:remove')}]];
     var confirmFlag=[[${@permission.hasPermi('inventoryHeader:cycleCountDetail:confirm')}]];
     var createTaskFalg=[[${@permission.hasPermi('inventoryHeader:cycleCountDetail:createTask')}]];
-    var prefix = ctx + "inventory/cyclecountDetail";
-    var prefix_head = ctx + "inventory/cyclecountHeader";
+    var prefix = ctx + "inventory/cycleCountDetail";
+    var prefix_head = ctx + "inventory/cycleCountHeader";
     var remove_url= prefix + "/remove";
-    var datas = [[${@dict.getType('cyclecountDetailStatus')}]];
+    var datas = [[${@dict.getType('cyclecountStatus')}]];
     var inventoryStatus=[[${@dict.getType('inventoryStatus')}]];
     var created ;
 
@@ -115,63 +139,67 @@
             },
                 {
                     field: 'id',
-                    title: 'id',
+                    title: '明细ID',
                     sortable:true
                 },
                 {
-                    field: 'code',
-                    title: '盘点单编码',
-                    sortable:false
+                    field: 'cycleCountHeadId',
+                    title: '盘点主单ID',
+                },
+                {
+                    field: 'warehouseCode',
+                    title: '仓库',
+                },
+                {
+                    field: 'countId',
+                    title: '盘点内部号',
+                    visible: false
+                },
+                {
+                    field: 'round',
+                    title: '盘点次数',
+                    visible: false
+                },
+                {
+                    field: 'taskHeaderId',
+                    title: '任务ID',
+                    visible: false
+                },
+                {
+                    field: 'taskDetailId',
+                    title: '任务明细ID',
+                    visible: false
                 },
                 {
                     field: 'companyCode',
-                    title: '货主'
+                    title: '货主',
+                    visible: true
                 },
-                // {
-                //     field: 'locationId',
-                //     title: '库位id'
-                // },
                 {
                     field: 'locationCode',
                     title: '库位编码',
-                    sortable:true
                 },
                 {
                     field: 'containerCode',
                     title: '容器编号',
-                    sortable:true
+
                 },
-                // {
-                //     field: 'materialId',
-                //     title: '物料Id'
-                // },
-                /*{
+                {
                     field: 'materialCode',
-                    title: '存货编码',
-                    sortable:true
-                },*/
+                    title: '物料编码',
+                },
                 {
                     field: 'materialName',
                     title: '物料名称',
-                    sortable:true
                 },
                 {
-                    field: 'materialSpecification',
+                    field: 'materialSpec',
                     title: '物料规格',
-                    sortable:true
                 },
                 {
-                    field: 'receiptCode',
-                    title: '入库单编码'
+                    field: 'materialUnit',
+                    title: '物料单位',
                 },
-                // {
-                //     field: 'receiptId',
-                //     title: '入库单id'
-                // },
-                // {
-                //     field: 'receiptDetailId',
-                //     title: '入库单明细id'
-                // },
                 {
                     field: 'batch',
                     title: '批次',
@@ -183,25 +211,18 @@
                     sortable:true
                 },
                 {
-                    field: 'project',
+                    field: 'projectNo',
                     title: '项目号',
                     sortable:true
                 },
+
                 {
-                    field: 'manufactureDate',
-                    title: '生产日期'
-                },
-                {
-                    field: 'expirationDate',
-                    title: '失效日期'
-                },
-                {
-                    field: 'inventoryStatus',
+                    field: 'inventorySts',
                     title: '库存状态',
                     formatter: function(value, row, index) {
                         return $.table.selectDictLabel(inventoryStatus, value);
                     },
-                    sortable:true
+
                 },
                 {
                     field: 'systemQty',
@@ -216,6 +237,34 @@
                     field: 'gapQty'
                 },
                 {
+                    field: 'rejectionNote',
+                    title: '失败原因'
+                },
+                {
+                    field: 'countedBy',
+                    title: '盘点创建人'
+                },
+                {
+                    field: 'countedAt',
+                    title: '盘点创建日期'
+                },
+                {
+                    field: 'assignedTo',
+                    title: '指派用户'
+                },
+                {
+                    field: 'assignedAt',
+                    title: '指派时间'
+                },
+                {
+                    field: 'completedBy',
+                    title: '完成用户'
+                },
+                {
+                    field: 'completedAt',
+                    title: '完成时间'
+                },
+                {
                     field: 'created',
                     title: '创建时间'
                 },
@@ -232,11 +281,7 @@
                     title: '更新用户'
                 },
                 {
-                    field: 'fromSource',
-                    title: '来源'
-                },
-                {
-                    field: 'status',
+                    field: 'enableStatus',
                     title: '盘点明细状态',
                     formatter: function(value, row, index) {
                         return $.table.selectDictLabel(datas, value);
@@ -244,9 +289,14 @@
                     sortable:true
                 },
                 {
-                    field: 'isCreateTask',
-                    title: '盘点任务'
+                    field: 'processStamp',
+                    title: '处理标记'
+                },
+                {
+                    field: 'version',
+                    title: '数据版本'
                 },
+
                 // {
                 //     field: 'userDef1',
                 //     title: '自定义字段1'
@@ -280,15 +330,15 @@
     });
 
     function update() {
-        var url = location.search; //获取url中"?"符后的字串
+        let url = location.search; //获取url中"?"符后的字串
         if (url.indexOf("?") != -1) {    //判断是否有参数
-            var str = url.substr(1); //从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串
-            strs = str.split("=");   //用等号进行分隔 (因为知道只有一个参数 所以直接用等号进分隔 如果有多个参数 要用&号分隔 再用等号进行分隔)
+            let str = url.substr(1); //从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串
+            let strs = str.split("=");   //用等号进行分隔 (因为知道只有一个参数 所以直接用等号进分隔 如果有多个参数 要用&号分隔 再用等号进行分隔)
             $.ajax({
                 url: prefix + "/list",
                 type:"post",
                 data:{
-                    code:strs[1]
+                    cycleCountHeadId:strs[1]
                 },
                 success:function (res) {
                     $("#bootstrap-table").bootstrapTable('removeAll');
@@ -297,36 +347,27 @@
                         $("#bootstrap-table").bootstrapTable('insertRow', {index:i,row:res.data[i]});
                     }
                 }
-            })
+            });
+            return false
         }
         $.ajax({
-            url:prefix_head+ "/getHeader",
+            url: prefix + "/list",
             type:"post",
-            data:{
-                id:$('#headId').val()
-            },
-            success:function (value) {
-                if (value.data) {
-                    $('#code').val(value.data.code);
-                    $('#type').val(value.data.typeLabel);
-                    $('#status').val(value.data.statusLabel);
-                    $('#created').val(value.data.created);
-                    var text_val=$('#created').val();
-                    $('#created').val(text_val.replace("T"," "));
-                    $('#createdBy').val(value.data.createdBy);
-                    $('#lastUpdated').val(value.data.lastUpdated);
-                    var text_val_t=$('#lastUpdated').val();
-                    $('#lastUpdated').val(text_val_t.replace("T"," "));
-                    $('#lastUpdatedBy').val(value.data.lastUpdatedBy);
+            data:{},
+            success:function (res) {
+                $("#bootstrap-table").bootstrapTable('removeAll');
+                // $("#bootstrap-table").bootstrapTable('append', res.data);
+                for (var i = 0; i < res.data.length; i++) {
+                    $("#bootstrap-table").bootstrapTable('insertRow', {index:i,row:res.data[i]});
                 }
             }
         })
     }
     function add() {
-        var headId = $('#headId').val();
+        var cycleCountHeadId = $('#cycleCountHeadId').val();
         var companyCode = $('#companyCode').val();
-        if(headId !=null && headId!="" && headId!=undefined && companyCode !=null && companyCode!="" && companyCode!=undefined ){
-            open("添加盘点明细", prefix+"/add?headId=" + headId + "&companyCode=" + companyCode);
+        if(cycleCountHeadId !=null && cycleCountHeadId!="" && cycleCountHeadId!=undefined && companyCode !=null && companyCode!="" && companyCode!=undefined ){
+            open("添加盘点明细", prefix+"/add?cycleCountHeadId=" + cycleCountHeadId + "&companyCode=" + companyCode);
         }
     }
     function remove(id) {
@@ -351,11 +392,11 @@
     }
     /**盘点补货*/
     function addGoods() {
-        var headId = $('#headId').val();
+        var headId = $('#cycleCountHeadId').val();
         var companyCode = $('#companyCode').val();
-        var code = $('#code').val();
+        //var code = $('#code').val();
          // var url = prefix+"/addGoods";
-        $.modal.open("盘点补货",prefix+"/addGoods?headId=" + headId + "&companyCode=" + companyCode + "&code=" + code);
+        $.modal.open("盘点补货",prefix+"/addGoods?headId=" + cycleCountHeadId + "&companyCode=" + companyCode );
     }
     //
 
@@ -520,7 +561,7 @@
     function comfirmAllWithNoGapQty() {
         $.modal.confirm("确认全部无差异登记么?注意这会覆盖先前登记的信息。", function() {
             var url = prefix + "/comfirmAllWithNoGapQty";
-            var data = { "headId": $('#headId').val() };
+            var data = { "cycleCountHeadId": $('#cycleCountHeadId').val() };
             postInner(url, data);
         });
     }
@@ -531,7 +572,7 @@
     function comfirmRemainWithNoGapQty() {
         $.modal.confirm("确认剩余无差异登记么?", function() {
             var url = prefix + "/comfirmRemainWithNoGapQty";
-            var data = { "headId": $('#headId').val() };
+            var data = { "cycleCountHeadId": $('#cycleCountHeadId').val() };
             postInner(url, data);
         });
     }
@@ -549,7 +590,7 @@
     function createCyclecountWithGapQty() {
         $.modal.confirm("确认进行差异复盘么?该操作会将有差异的明细重新生成一个新的盘点单。", function() {
             var url = prefix + "/createCyclecountWithGapQty";
-            var data = { "headId": $('#headId').val() };
+            var data = { "cycleCountHeadId": $('#cycleCountHeadId').val() };
             postInner(url, data);
         });
     }
@@ -558,7 +599,7 @@
     function adjust() {
         $.modal.confirm("注意:该操作将更改库存,当实盘数量为0且库位上只剩空容器时,请手动执行空托出库任务,容器上有货则无需其他操作!", function() {
             var url = prefix + "/adjust";
-            var data = { "headId": $('#headId').val() };
+            var data = { "cycleCountHeadId": $('#cycleCountHeadId').val() };
             postInner(url,data);
         });
     }
@@ -592,7 +633,7 @@
     function outcheckAll() {
         $.modal.confirm("确认进行盘点任务生成么?注意,这将会使未生成盘点任务的明细生成盘点任务!", function() {
             var url = prefix + "/createCyccountTaskByHeadId";
-            var data = { "headId": $('#headId').val() };
+            var data = { "cycleCountHeadId": $('#cycleCountHeadId').val() };
             postInner(url,data);
         });
     }
diff --git a/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html b/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
index 5d7d09b..474cea0 100644
--- a/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
+++ b/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html
@@ -25,14 +25,19 @@
                             <div class="select-list">
                                 <ul>
                                     <li>
-                                        盘点单号:<input type="text" name="code"/>
+                                        盘点主单ID:<input type="text" name="id"/>
                                     </li>
                                     <li>
                                         源盘点单号:<input type="text" name="sourceCode"/>
                                     </li>
                                     <li>
-                                        <!--头 状 态:<input type="text" name="firstStatus"/>-->
-                                        盘点单类型:<select name="type"
+                                        盘点主表编号:<input type="text" name="masterCode"/>
+                                    </li>
+                                    <li>
+                                        原始盘点ID:<input type="text" name="countOrderId"/>
+                                    </li>
+                                    <li>
+                                        盘点单类型:<select name="countType"
                                                       th:with="firstStatus=${@dict.getType('cyclecountType')}">
                                         <option value="">所有</option>
                                         <option th:each="e : ${firstStatus}" th:text="${e['dictLabel']}"
@@ -40,8 +45,7 @@
                                     </select>
                                     </li>
                                     <li>
-                                        <!--尾 状 态:<input type="text" name="lastStatus"/>-->
-                                        盘点单状态:<select name="status"
+                                        盘点单状态:<select name="statusCyc"
                                                       th:with="lastStatus=${@dict.getType('cyclecountStatus')}">
                                         <option value="">所有</option>
                                         <option th:each="e : ${lastStatus}" th:text="${e['dictLabel']}"
@@ -270,15 +274,18 @@
                 }]
         };
         $.table.init(options);
-        $("#myTab li:eq(1)").one('click', (function () {
-            var cyc_id = $("#bootstrap-table tr:eq(1) td:eq(1)").text();
-            var cyc_code = $("#bootstrap-table tr:eq(1) td:eq(2)").text();
-            detail(cyc_id, cyc_code);
-        }));
+        $("#myTab li:eq(1)").click(function () {
+            // var cyc_id = $("#bootstrap-table tr:eq(1) td:eq(1)").text();
+            // var cyc_code = $("#bootstrap-table tr:eq(1) td:eq(2)").text();
+            detail();
+        });
     });
 
-    function detail(id, code) {
-        var url = ctx + "inventory/cycleCountDetail?code=" + code;
+    function detail(id) {
+        let url = ctx + "inventory/cycleCountDetail";
+        if (id) {
+            url = ctx + "inventory/cycleCountDetail?id=" + id;
+        }
         $("#tabDetail").children().remove();
         $("#myTab li").removeClass("active");
         var height = $(document).height() - 100 + 'px';
diff --git a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
index 324c067..43b46b9 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
@@ -73,7 +73,7 @@
 <div th:include="include :: footer"></div>
 <script th:inline="javascript">
     var prefix = ctx + "inventory/inventoryHeader";
-    var report = [[${@permission.hasPermi('inventoryHeader:cyclecountAdjust:report')}]];
+    var report = [[${@permission.hasPermi('inventoryHeader:adjustHeader:report')}]];
     var datas = [[${@dict.getType('sys_normal_disable')}]];
     var status2 = [[${@dict.getType('adjustType')}]];
 
diff --git a/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html b/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html
index 183bd63..5482699 100644
--- a/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html
+++ b/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html
@@ -274,10 +274,6 @@
                          visible:false
                      },
                      {
-                         field : 'lastCycleCountDate',
-                         title : '上次盘点日期'
-                     },
-                     {
                          field : 'processStamp',
                          title : '处理标记',
                          visible:false
diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html
index 43628af..1df616b 100644
--- a/src/main/resources/templates/login.html
+++ b/src/main/resources/templates/login.html
@@ -74,11 +74,11 @@
                         </select>
                     </div>
                 </div>
-                <!--<div class="row" style="padding:0 10px;">-->
-                    <!--<div class="col-lg-3"></div>-->
-                    <!--<div class="col-lg-9" style="padding:10px 0 0 5px;"><input class="i-checks" type="checkbox" name="rememberme" style="background: #fff"/>&nbsp;&nbsp;记住我-->
-                    <!--</div>-->
-                <!--</div>-->
+                <div class="row" style="padding:0 10px;">
+                    <div class="col-lg-3"></div>
+                    <div class="col-lg-9" style="padding:10px 0 0 5px;"><input class="i-checks" type="checkbox" name="rememberme" style="background: #fff"/>&nbsp;&nbsp;记住我
+                    </div>
+                </div>
                 <button style="margin-top: 20px" class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证登录,请稍后...">登录</button>
             </form>
         </div>
diff --git a/src/main/resources/templates/receipt/receiptDetail/add.html b/src/main/resources/templates/receipt/receiptDetail/add.html
index 736fbf5..111f5c9 100644
--- a/src/main/resources/templates/receipt/receiptDetail/add.html
+++ b/src/main/resources/templates/receipt/receiptDetail/add.html
@@ -18,12 +18,6 @@
                 <input id="receiptCode" name="receiptCode" class="form-control" type="text" th:value="${receiptCode}" readonly="readonly">
             </div>
         </div>
-<!--        <div class="form-group">-->
-<!--            <label class="col-sm-3 control-label">上游系统行号:</label>-->
-<!--            <div class="col-sm-8">-->
-<!--                <input id="sourceLine" name="sourceLine" 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">
@@ -52,7 +46,7 @@
         <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">
+                <input id="projectNo" name="projectNo" class="form-control" type="text">
             </div>
         </div>
         <div class="form-group">
@@ -76,7 +70,7 @@
         <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" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}">
+                <select id="inventorySts" name="inventorySts" class="form-control" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}">
                     <option th:each="dict : ${inventoryStatus}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}"></option>
                 </select>
             </div>
@@ -148,8 +142,7 @@
         },
         submitHandler: function(form) {
             var tableValue = $("#form-receiptDetail-add").serialize();
-            tableValue = formValueReplace(tableValue, "companyCode", $("#companyCode option:selected").val())
-            tableValue = formValueReplace(tableValue, "enable", $("input[name='enable']").is(':checked'));
+            tableValue = formValueReplace(tableValue, "inventorySts", $("#inventorySts option:selected").val());
             $.operate.save(prefix + "/add", tableValue);
         }
     });
diff --git a/src/main/resources/templates/receipt/receiptDetail/edit.html b/src/main/resources/templates/receipt/receiptDetail/edit.html
index e3c567a..eb16d9a 100644
--- a/src/main/resources/templates/receipt/receiptDetail/edit.html
+++ b/src/main/resources/templates/receipt/receiptDetail/edit.html
@@ -3,142 +3,132 @@
 <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-receiptDetail-edit" th:object="${receiptDetail}">
-            <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="sourceLine" name="sourceLine" th:field="*{sourceLine}" 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" readonly="readonly" >
-                </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" 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" 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="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">
-                    <select id="inventoryStatus" name="inventoryStatus" class="form-control" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}" th:field="*{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="qty" name="qty" th:field="*{qty}" 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="qtyCompleted" name="qtyCompleted" th:field="*{qtyCompleted}" 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="price" name="price" th:field="*{price}" 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">自定义字段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>
-</body>
-<script>
+<div class="wrapper wrapper-content animated fadeInRight ibox-content">
+    <form class="form-horizontal m" id="form-receiptDetail-edit" th:object="${receiptDetail}">
+        <input id="id" name="id" hidden th:field="*{id}">
+        <div class="form-group">
+            <label class="col-sm-3 control-label">入库单id:</label>
+            <div class="col-sm-8">
+                <input id="receiptId" name="receiptId" class="form-control" type="text" th:value="${receiptId}" readonly="readonly" th:field="*{receiptId}">
+                <input id="companyCode" name="companyCode" type="hidden" th:value="${companyCode}" th:field="*{companyCode}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">入库单号:</label>
+            <div class="col-sm-8">
+                <input id="receiptCode" name="receiptCode" class="form-control" type="text" th:value="${receiptCode}" readonly="readonly" th:field="*{receiptCode}">
+            </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,'')" th:field="*{materialCode}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">供应商编码:</label>
+            <div class="col-sm-8">
+                <input id="supplierCode" name="supplierCode" class="form-control" type="text" th:field="*{supplierCode}">
+            </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" th:field="*{batch}">
+            </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" th:field="*{lot}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">项目号:</label>
+            <div class="col-sm-8">
+                <input id="projectNo" name="projectNo" class="form-control" type="text" th:field="*{projectNo}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">是否质检:</label>
+            <div class="col-sm-8">
+                <input id="qcCheck" name="qcCheck" class="form-control" type="text" th:field="*{qcCheck}">
+            </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" th:field="*{manufactureDate}">
+            </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" th:field="*{expirationDate}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">库存状态:</label>
+            <div class="col-sm-8">
+                <select id="inventorySts" name="inventorySts" class="form-control"
+                        th:with="inventoryStatus=${@dict.getType('inventoryStatus')}" th:field="*{inventorySts}">
+                    <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="totalQty" name="totalQty" class="form-control" type="text" th:field="*{totalQty}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">定位规则:</label>
+            <div class="col-sm-8">
+                <input id="locatingRule" name="locatingRule" class="form-control" type="text" th:field="*{locatingRule}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">标价:</label>
+            <div class="col-sm-8">
+                <input id="itemListPrice" name="itemListPrice" class="form-control" type="text" th:field="*{itemListPrice}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">净价:</label>
+            <div class="col-sm-8">
+                <input id="itemNetPrice" name="itemNetPrice" class="form-control" type="text" th:field="*{itemNetPrice}">
+            </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" 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" 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" 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 + "receipt/receiptDetail";
     $("#form-receiptDetail-edit").validate({
         rules:{
@@ -151,70 +141,14 @@
             materialCode:{
                 required:true
             },
-            sourceLine:{
-                required:false,
-                digits:true
-            },
-            qty:{
-                required:true,
-                min:0
-            },
-            price:{
-                required:false,
-                min:0
-            }
         },
         submitHandler: function(form) {
-            $.ajax({
-                cache : true,
-                type : "POST",
-                url : prefix + "/edit",
-                data : {
-                    "id": $("input[name='id']").val(),
-                    "receiptId": $("input[name='receiptId']").val(),
-                    "receiptCode": $("input[name='receiptCode']").val(),
-                    "sourceLine": $("input[name='sourceLine']").val(),
-                    // "materialId": $("input[name='materialId']").val(),
-                    "materialCode": $("input[name='materialCode']").val(),
-                    "batch": $("input[name='batch']").val(),
-                    "lot": $("input[name='lot']").val(),
-                    "project": $("input[name='project']").val(),
-                    "manufactureDate": $("input[name='manufactureDate']").val(),
-                    "expirationDate": $("input[name='expirationDate']").val(),
-                    "inventoryStatus": $("#inventoryStatus option:selected").val(),
-                    "qty": $("input[name='qty']").val(),
-                    "price": $("input[name='price']").val()
-                    // "userDef1": $("input[name='userDef1']").val(),
-                    // "userDef2": $("input[name='userDef2']").val(),
-                    // "userDef3": $("input[name='userDef3']").val()
-                },
-                async : false,
-                error : function(request) {
-                    $.modal.alertError("请求失败!");
-                },
-                success : function(data) {
-                    // $.operate.saveSuccess(data);
-                    // console.log(data);
-                    ajaxSuccess(data);
-                }
-            });
+            var tableValue = $("#form-receiptDetail-edit").serialize();
+            tableValue = formValueReplace(tableValue, "enable", $("input[name='enable']").is(':checked'));
+            $.operate.save(prefix + "/edit", tableValue);
         }
     });
 
-    function ajaxSuccess(result) {
-        if (result.code == web_status.SUCCESS) {
-            $.modal.msgSuccess(result.msg);
-            var index = parent.layer.getFrameIndex(window.name);
-            parent.layer.close(index);
-            window.parent.loadDetail(id,code);
-        } else {
-            $.modal.alertError(result.msg);
-        }
-        $.modal.closeLoading();
-    }
-
-    var id=$("input[name='receiptId']").val();
-    var code=$("input[name='receiptCode']").val();
     $(function () {
         layui.use('laydate', function() {
             var laydate = layui.laydate;
@@ -223,6 +157,6 @@
         });
     });
 
-
 </script>
+</body>
 </html>
diff --git a/src/main/resources/templates/receipt/receiptDetail/receiptDetail.html b/src/main/resources/templates/receipt/receiptDetail/receiptDetail.html
index 59e2aa8..d544e18 100644
--- a/src/main/resources/templates/receipt/receiptDetail/receiptDetail.html
+++ b/src/main/resources/templates/receipt/receiptDetail/receiptDetail.html
@@ -51,6 +51,7 @@
 <script th:inline="javascript">
     var editFlag = [[${@permission.hasPermi('receipt:receiptDetail:edit')}]];
     var removeFlag = [[${@permission.hasPermi('receipt:receiptDetail:remove')}]];
+    var approvalFlag = [[${@permission.hasPermi('receipt:receiptHeader:approval')}]]
     var prefix = ctx + "receipt/receiptDetail";
     var datas = [[${@dict.getType('isVirtualBom')}]];
     $(function() {
@@ -218,6 +219,11 @@
                     align: 'center',
                     formatter: function(value, row, index) {
                         var actions = [];
+                        if (row.processStamp == 5){
+                            actions.push('<a class="btn btn-success btn-xs ' + approvalFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')">审核通过</a> ');
+                            actions.push('<a class="btn btn-warning btn-xs ' + approvalFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')">驳回</a>');
+                            actions.push('<a class="btn btn-danger btn-xs ' + approvalFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')">作废</a>');
+                        }
                         actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                         actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>');
                         return actions.join('');
diff --git a/src/main/resources/templates/receipt/receiptHeader/add.html b/src/main/resources/templates/receipt/receiptHeader/add.html
index 9140218..d5a02b9 100644
--- a/src/main/resources/templates/receipt/receiptHeader/add.html
+++ b/src/main/resources/templates/receipt/receiptHeader/add.html
@@ -64,7 +64,7 @@
                     url : prefix + "/add",
                     data : {
                         "receiptType": $("#receiptType option:selected").val(),
-                        "companyCode": $("#company option:selected").attr("code"),
+                        "companyCode": $("#company option:selected").val(),
                         "receiptNote": $("input[name='receiptNote']").val(),
                         "scheduledArriveDate": $("input[name='scheduledArriveDate']").val(),
                     },
diff --git a/src/main/resources/templates/receipt/receiptHeader/edit.html b/src/main/resources/templates/receipt/receiptHeader/edit.html
index f755604..369ce9c 100644
--- a/src/main/resources/templates/receipt/receiptHeader/edit.html
+++ b/src/main/resources/templates/receipt/receiptHeader/edit.html
@@ -2,196 +2,93 @@
 <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-receiptHeader-edit" th:object="${receiptHeader}">
-            <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="code" name="code" th:field="*{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">
-                    <select id="company" name="company" class="form-control" th:with="list=${@company.selectCompanyByCurrentUserId()}" th:field="*{companyId}" readonly="true" disabled="disabled">
-                        <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr="code = ${item['code']}"></option>
-                    </select>
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">入库类型:</label>
-                <div class="col-sm-8">
-                    <select id="type" name="type" class="form-control" th:with="receiptHeaderType=${@receiptTypeService.getType()}" th:field="*{receiptType}">
-                        <option th:each="dict : ${receiptHeaderType}" th:text="${dict['name']}" th:value="${dict['code']}"></option>
-                    </select>
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">上游系统单号:</label>
-                <div class="col-sm-8">
-                    <input id="sourceCode" name="sourceCode" th:field="*{sourceCode}" class="form-control" type="text">
-                </div>
+<div class="wrapper wrapper-content animated fadeInRight ibox-content">
+    <form class="form-horizontal m" id="form-receiptHeader-edit" th:object="${receiptHeader}">
+        <input id="id" name="id" type="hidden" th:field="*{id}">
+        <div class="form-group">
+            <label class="col-sm-3 control-label">入库类型:</label>
+            <div class="col-sm-8">
+                <select id="receiptType" name="receiptType" class="form-control"
+                        th:with="receiptHeaderType=${@receiptTypeService.getType()}" th:field="*{receiptType}">
+                    <option th:each="dict : ${receiptHeaderType}" th:text="${dict['name']}" th:value="${dict['code']}"></option>
+                </select>
             </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">上游平台:</label>
-                <div class="col-sm-8">
-                    <input id="sourcePlatform" name="sourcePlatform" th:field="*{sourcePlatform}" class="form-control" type="text">
-                </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">货主:</label>
+            <div class="col-sm-8">
+                <select id="companyCode" name="companyCode" class="form-control" th:with="list=${@companyService.getCode()}" th:field="*{companyCode}">
+                    <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr = " code = ${item['code']}"></option>
+                </select>
             </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">供应商编码:</label>
-                <div class="col-sm-8">
-                    <select id="supplierCode" name="supplierCode" class="form-control" th:with="supplier=${@Supplier.getSupplierCode()}" th:field="*{supplierCode}">
-                        <option th:each="dict : ${supplier}" th:text="${dict['name']}" th:value="${dict['code']}"></option>
-                    </select>
-                </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">入库单备注:</label>
+            <div class="col-sm-8">
+                <input id="receiptNote" name="receiptNote" class="form-control" type="text" th:field="*{receiptType}">
             </div>
-            <!--<div class="form-group">-->
-                <!--<label class="col-sm-3 control-label">总数量:</label>-->
-                <!--<div class="col-sm-8">-->
-                    <!--<input id="totalQty" name="totalQty" th:field="*{totalQty}" 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="totalLines" name="totalLines" th:field="*{totalLines}" 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" th:field="*{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="scheduledArriveDate" name="scheduledArriveDate" class="form-control" type="text" th:field="*{scheduledArriveDate}">
             </div>
-            <!--<div class="form-group">	-->
-                <!--<label class="col-sm-3 control-label">upload状态:</label>-->
-                <!--<div class="col-sm-8">-->
-                    <!--<input id="uploadStatus" name="uploadStatus" th:field="*{uploadStatus}" class="form-control" type="text"  readonly="true">-->
-                <!--</div>-->
-            <!--</div>-->
-            <!--<div class="form-group">	-->
-                <!--<label class="col-sm-3 control-label">上传备注:</label>-->
-                <!--<div class="col-sm-8">-->
-                    <!--<input id="uploadremark" name="uploadremark" th:field="*{uploadremark}" class="form-control" type="text"  readonly="true">-->
-                <!--</div>-->
-            <!--</div>-->
-            <!--<div class="form-group">	-->
-                <!--<label class="col-sm-3 control-label">上传时间:</label>-->
-                <!--<div class="col-sm-8">-->
-                    <!--<input id="uploadTime" name="uploadTime" th:field="*{uploadTime}" class="time-input" type="text"  readonly="true">-->
-                <!--</div>-->
-            <!--</div>-->
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">入库预约时间:</label>
-                <div class="col-sm-8">
-                    <input id="appointmentTime" name="appointmentTime" th:field="*{appointmentTime}" 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 class="form-group">	-->
-                <!--<label class="col-sm-3 control-label">单据头状态:</label>-->
-                <!--<div class="col-sm-8">-->
-                    <!--&lt;!&ndash;<input id="firstStatus" name="firstStatus" th:field="*{firstStatus}" class="form-control" type="text" readonly="true">&ndash;&gt;-->
-                    <!--<select id="firstStatus" class="form-control m-b" th:with="status=${@dict.getType('receiptHeaderStatus')}">-->
-                        <!--<option th:each="dict : ${status}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}" th:field="*{firstStatus}"></option>-->
-                    <!--</select>-->
-                <!--</div>-->
-            <!--</div>-->
-            <!--<div class="form-group">	-->
-                <!--<label class="col-sm-3 control-label">单据尾状态:</label>-->
-                <!--<div class="col-sm-8">-->
-                    <!--&lt;!&ndash;<input id="lastStatus" name="lastStatus" th:field="*{lastStatus}" class="form-control" type="text" readonly="true">&ndash;&gt;-->
-                    <!--<select id="lastStatus" class="form-control m-b" th:with="status=${@dict.getType('receiptHeaderStatus')}">-->
-                        <!--<option th:each="dict : ${status}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}" th:field="*{lastStatus}"></option>-->
-                    <!--</select>-->
-                <!--</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="time-input" type="text" readonly="true">-->
-                <!--</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" readonly="true">-->
-                <!--</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="time-input" type="text" readonly="true">-->
-                <!--</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" readonly="true">-->
-                <!--</div>-->
-            <!--</div>-->
-            <div class="form-group">
-                <label class="col-sm-3 control-label">是否有效:</label>
-                <div class="col-sm-8">
-                    <div class="onoffswitch">
-                        <input type="checkbox" th:checked="*{enable}" class="onoffswitch-checkbox" id="enable" name="enable">
-                        <label class="onoffswitch-label" for="enable">
-                            <span class="onoffswitch-inner"></span>
-                            <span class="onoffswitch-switch"></span>
-                        </label>
-                    </div>
-                </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 + "receipt/receiptHeader";
-
-		$("#form-receiptHeader-edit").validate({
-			submitHandler: function(form) {
-                // var tableValue = $.common.getTableValue("#form-receiptHeader-edit");
-                var tableValue = $("#form-receiptHeader-edit").serialize();
-                tableValue = formValueReplace(tableValue, "enable", $("input[name='enable']").is(':checked'));
-                tableValue = formValueReplace(tableValue, "companyId", $("#company option:selected").val());
-                tableValue = formValueReplace(tableValue, "companyCode", $("#company option:selected").attr("code"));
-				$.operate.save(prefix + "/edit", tableValue);
-			}
-		});
+        </div>
+    </form>
+</div>
+<div th:include="include::footer"></div>
+<script type="text/javascript">
+    var prefix = ctx + "receipt/receiptHeader";
 
-        $(function () {
-            layui.use('laydate', function() {
-                var laydate = layui.laydate;
-                laydate.render({ elem: '#appointmentTime', min:0 ,theme: 'molv', format: 'yyyy-MM-dd HH:mm:ss'});
+    $("#form-receiptHeader-edit").validate({
+        rules:{
+            receiptType:{
+                required:true,
+            },
+            companyCode:{
+                required:true,
+            },
+            scheduledArriveDate:{
+                required:true,
+            }
+        },
+        submitHandler: function(form) {
+            $.ajax({
+                cache : true,
+                type : "POST",
+                url : prefix + "/edit",
+                data : {
+                    "id": $("#id").val(),
+                    "receiptType": $("#receiptType option:selected").val(),
+                    "companyCode": $("#company option:selected").attr("code"),
+                    "receiptNote": $("input[name='receiptNote']").val(),
+                    "scheduledArriveDate": $("input[name='scheduledArriveDate']").val(),
+                },
+                async : false,
+                error : function(request) {
+                    $.modal.alertError("请求失败!");
+                },
+                success : function(data) {
+                    $.operate.saveSuccess(data);
+                }
             });
-        })
-	</script>
+        }
+    });
+
+    $(function () {
+        layui.use('laydate', function() {
+            var laydate = layui.laydate;
+            laydate.render({ elem: '#scheduledArriveDate',min: 0, theme: 'molv', format: 'yyyy-MM-dd HH:mm:ss'});
+        });
+    })
+
+</script>
 </body>
 </html>
diff --git a/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html b/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html
index 55622b3..fc08b07 100644
--- a/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html
+++ b/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html
@@ -20,7 +20,7 @@
             <div id="myTabContent" class="tab-content">
                 <div class="tab-pane fade in active" id="tabHeader">
                     <div class="col-sm-12 select-info">
-                        <form id="receiptHeader-form">
+                        <form id="shipmentHeaderHistory-form">
                             <div class="select-list">
                                 <ul>
                                     <li>
diff --git a/src/main/resources/templates/system/dict/data/add.html b/src/main/resources/templates/system/dict/data/add.html
index 9d0a437..6824a9c 100644
--- a/src/main/resources/templates/system/dict/data/add.html
+++ b/src/main/resources/templates/system/dict/data/add.html
@@ -5,7 +5,7 @@
 <body class="white-bg">
 	<div class="wrapper wrapper-content animated fadeInRight ibox-content">
 		<form class="form-horizontal m" id="form-dict-add">
-			<input class="form-control" type="text" name="headerId" id="headerId" th:value="${dictType.id}" />
+			<input class="form-control" type="hidden" name="headerId" id="headerId" th:value="${dictType.id}" />
 			<div class="form-group">
 				<label class="col-sm-3 control-label ">字典标签:</label>
 				<div class="col-sm-8">
diff --git a/src/test/java/com.huaheng.test/CreateCode.java b/src/test/java/com.huaheng.test/CreateCode.java
index 8afe45c..ed68e38 100644
--- a/src/test/java/com.huaheng.test/CreateCode.java
+++ b/src/test/java/com.huaheng.test/CreateCode.java
@@ -1155,8 +1155,8 @@ public class CreateCode {
         packages.put("container","com.huaheng.pc.config.container.Container");
         packages.put("container_type","com.huaheng.pc.config.containerType.ContainerType");
         packages.put("customer","com.huaheng.pc.general.customer.Customer");
-        packages.put("cyclecount_adjust","com.huaheng.pc.inventoryHeader.cyclecountAdjust.CyclecountAdjust");
-        packages.put("cyclecount_adjustdetail","com.huaheng.pc.inventoryHeader.cyclecountAdjustDetail.CyclecountAdjustDetail");
+        packages.put("cyclecount_adjust","com.huaheng.pc.inventoryHeader.adjustHeader.CyclecountAdjust");
+        packages.put("cyclecount_adjustdetail","com.huaheng.pc.inventoryHeader.adjustDetail.CyclecountAdjustDetail");
         packages.put("cyclecount_detail","com.huaheng.pc.inventoryHeader.cycleCountDetail.CycleCountDetail");
         packages.put("cyclecount_header","com.huaheng.pc.inventoryHeader.cycleCountHeader.CycleCountHeader");
         packages.put("inventory","com.huaheng.pc.inventoryHeader.inventoryHeader.Inventory");