diff --git a/ant-design-vue-jeecg/src/api/api.js b/ant-design-vue-jeecg/src/api/api.js
index ec787bc..599a984 100644
--- a/ant-design-vue-jeecg/src/api/api.js
+++ b/ant-design-vue-jeecg/src/api/api.js
@@ -139,6 +139,8 @@ export const createShipmentTask = (params) => postAction('/shipment/shipmentComb
 export const selectSortingPort = (params) => postAction('/shipment/shipmentCombination/selectSortingPort', params);
 //选择入库分拣口
 export const selectSupplePort = (params) => postAction('/receipt/receiptContainerHeader/selectSupplePort', params);
+//选择盘点分拣口
+export const inventoryPort = (params) => postAction('/cycleCountDetail/cycleCountDetail/inventoryPort', params);
 //创建空托盘入库任务
 export const createEmptyIn = (params) => postAction('/task/taskHeader/createEmptyIn', params);
 //创建空托盘出库任务
@@ -157,8 +159,10 @@ export const selectPort = (params) => postAction('/task/taskHeader/selectPort', 
 export const createOverStationTask = (params) => postAction('/task/taskHeader/createOverStationTask', params);
 //盘点任务创建
 export const stockTakeTask = (params,headerId,code) => postAction('/cycleCountDetail/cycleCountDetail/stockTakeTask?ids='+params+'&headerId='+headerId+'&code='+code, code);
+//盘盈添加
+export const increaseInInventoryGain = (params) => postAction('/cycleCountDetail/cycleCountDetail/increaseInInventoryGain', params);
 //盘点任务生成
-export const createCycleCoutTaskByDetailId = (params) => postAction('/cycleCountDetail/cycleCountDetail/createCycleCoutTaskByDetailId?cycleId='+params, params);
+export const createCycleCoutTaskByDetailId = (params,toPort) => postAction('/cycleCountDetail/cycleCountDetail/createCycleCoutTaskByDetailId?cycleId='+params+'&toPort='+toPort, params);
 //盘点确定实盘数量
 export const confirmGapQty = (params) => postAction('/cycleCountDetail/cycleCountDetail/confirmGapQty', params);
 //创建空托盘组入库任务
diff --git a/ant-design-vue-jeecg/src/views/jeecg/JeecgDemoList.vue b/ant-design-vue-jeecg/src/views/jeecg/JeecgDemoList.vue
index accf6d3..7a33e4b 100644
--- a/ant-design-vue-jeecg/src/views/jeecg/JeecgDemoList.vue
+++ b/ant-design-vue-jeecg/src/views/jeecg/JeecgDemoList.vue
@@ -94,10 +94,9 @@
             <template slot="content">
               <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
                 <a-row style="width: 400px">
-                  <template v-for="(item,index) in defColumns">
+                  <template v-for="(item) in defColumns">
                     <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
-                        <a-col :span="12"><a-checkbox :value="item.dataIndex"><j-ellipsis :value="item.title"
-                                                                                          :length="10"></j-ellipsis></a-checkbox></a-col>
+                        <a-col :span="12"><a-checkbox :value="item.dataIndex"><j-ellipsis :value="item.title" :length="10"></j-ellipsis></a-checkbox></a-col>
                     </template>
                   </template>
                 </a-row>
@@ -124,7 +123,7 @@
           <a-card>
             <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
               <a-row style="width: 400px">
-                <template v-for="(item,index) in defColumns">
+                <template v-for="(item) in defColumns">
                   <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
                     <a-col :span="12">
                       <a-checkbox :value="item.dataIndex">
diff --git a/ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailSelectList.vue b/ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailSelectList.vue
index 84637af..7957864 100644
--- a/ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailSelectList.vue
+++ b/ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailSelectList.vue
@@ -28,7 +28,7 @@
         :dataSource="dataSource"
         :pagination="ipagination"
         :loading="loading"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+
         @change="handleTableChange">
 
         <span slot="companyCode" slot-scope="companyCode">
@@ -157,14 +157,8 @@ export default {
       ],
       url: {
         list: "/inventory/inventoryHeader/listInventoryDetailByMainId",
-        delete: "/inventory/inventoryHeader/deleteInventoryDetail",
-        deleteBatch: "/inventory/inventoryHeader/deleteBatchInventoryDetail",
-        exportXlsUrl: "/inventory/inventoryHeader/exportInventoryDetail",
-        importUrl: "/inventory/inventoryHeader/importInventoryDetail",
       },
-      dictOptions: {
-        containerStatus: [],
-      }
+
     }
   },
   created() {
@@ -175,18 +169,8 @@ export default {
     Utils.$on('methodA',(data)=> {
       _this.methodA(data);
     })
-    // var _this = this;
-    // setInterval(function () {
-    //    if(_this.isLoad) {
-    //      _this.loadDataList();
-    //   }
-    // },1000)
-  },
-  computed: {
-    importExcelUrl() {
-      return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`;
-    }
   },
+
   methods: {
 
     methodA(data) {
diff --git a/ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue b/ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue
new file mode 100644
index 0000000..73e81df
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue
@@ -0,0 +1,219 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="业务ID">
+              <a-input placeholder="请输入业务ID" v-model="queryParam.bizId"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="业务类型">
+              <a-input placeholder="请输入业务类型" v-model="queryParam.bizType"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="操作内容">
+              <j-input placeholder="请输入操作内容" v-model="queryParam.operationMsg"></j-input>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+            </span>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 查询区域-END -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button type="primary" icon="download" @click="handleExportXls('操作记录表')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
+          <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            下载
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a v-has="'operationLog:edit'" @click="handleEdit(record)">编辑</a>
+          <a @click="handleDetail(record)">详情</a>
+        </span>
+      </a-table>
+    </div>
+
+    <operation-log-modal ref="modalForm" @ok="modalFormOk"></operation-log-modal>
+  </a-card>
+</template>
+
+<script>
+  import {filterObj} from '@/utils/util';
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import OperationLogModal from './modules/OperationLogModal'
+
+  export default {
+    name: 'OperationLogList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      OperationLogModal
+    },
+    data () {
+      return {
+        description: '操作记录表管理页面',
+        // 表头
+        columns: [
+          {
+            title:'业务ID',
+            align:"center",
+            dataIndex: 'bizId'
+          },
+          {
+            title:'业务类型',
+            align:"center",
+            dataIndex: 'bizType'
+          },
+          {
+            title:'操作内容',
+            align:"center",
+            dataIndex: 'operationMsg'
+          },
+          {
+            title:'操作时间',
+            align:"center",
+            dataIndex: 'operationTime'
+          },
+          {
+            title:'操作结果状态',
+            align:"center",
+            dataIndex: 'operationStatus'
+          },
+          {
+            title:'操作耗时',
+            align:"center",
+            dataIndex: 'operationCostTime'
+          },
+          {
+            title:'方法返回内容',
+            align:"center",
+            dataIndex: 'contentReturn'
+          },
+          {
+            title:'方法异常内容',
+            align:"center",
+            dataIndex: 'contentException'
+          },
+          {
+            title:'操作人ID',
+            align:"center",
+            dataIndex: 'operatorId'
+          },
+          {
+            title:'操作人姓名',
+            align:"center",
+            dataIndex: 'operatorName'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align: "center",
+            fixed: "right",
+            width: 147,
+            scopedSlots: {customRender: 'action'}
+          }
+        ],
+        url: {
+          list: "/config/operationLog/list",
+          delete: "/config/operationLog/delete",
+          deleteBatch: "/config/operationLog/deleteBatch",
+          exportXlsUrl: "/config/operationLog/exportXls",
+          importExcelUrl: "config/operationLog/importExcel",
+
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      getQueryParams() {
+        // 重写查询条件
+        let sqp = {}
+        if (this.superQueryParams) {
+          sqp['superQueryParams'] = encodeURI(this.superQueryParams)
+          sqp['superQueryMatchType'] = this.superQueryMatchType
+        }
+        var param = Object.assign(sqp, this.queryParam, {}, this.filters)
+        param.field = this.getQueryField()
+        param.pageNo = this.ipagination.current
+        param.pageSize = this.ipagination.pageSize
+        return filterObj(param)
+      },
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'bizId',text:'业务ID',dictCode:''})
+        fieldList.push({type:'string',value:'bizType',text:'业务类型',dictCode:''})
+        fieldList.push({type:'string',value:'operationMsg',text:'操作内容',dictCode:''})
+        fieldList.push({type:'datetime',value:'operationTime',text:'操作时间'})
+        fieldList.push({type:'int',value:'operationStatus',text:'操作结果状态',dictCode:''})
+        fieldList.push({type:'int',value:'operationCostTime',text:'操作耗时',dictCode:''})
+        fieldList.push({type:'string',value:'contentReturn',text:'方法返回内容',dictCode:''})
+        fieldList.push({type:'string',value:'contentException',text:'方法异常内容',dictCode:''})
+        fieldList.push({type:'string',value:'operatorId',text:'操作人ID',dictCode:''})
+        fieldList.push({type:'string',value:'operatorName',text:'操作人姓名',dictCode:''})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogForm.vue b/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogForm.vue
new file mode 100644
index 0000000..9f4fabc
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogForm.vue
@@ -0,0 +1,149 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="业务ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bizId">
+              <a-input v-model="model.bizId" placeholder="请输入业务ID"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="业务类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bizType">
+              <a-input v-model="model.bizType" placeholder="请输入业务类型"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationMsg">
+              <a-input v-model="model.operationMsg" placeholder="请输入操作内容"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationTime">
+              <j-date placeholder="请选择操作时间"  v-model="model.operationTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作结果状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationStatus">
+              <a-input-number v-model="model.operationStatus" placeholder="请输入操作结果状态" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作耗时" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationCostTime">
+              <a-input-number v-model="model.operationCostTime" placeholder="请输入操作耗时" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="方法返回内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contentReturn">
+              <a-input v-model="model.contentReturn" placeholder="请输入方法返回内容"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="方法异常内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contentException">
+              <a-input v-model="model.contentException" placeholder="请输入方法异常内容"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作人ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operatorId">
+              <a-input v-model="model.operatorId" placeholder="请输入操作人ID"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作人姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operatorName">
+              <a-input v-model="model.operatorName" placeholder="请输入操作人姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'OperationLogForm',
+    components: {
+    },
+    props: {
+      //表单禁用
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+validatorRules: {
+},
+        url: {
+          add: "/config/operationLog/add",
+          edit: "/config/operationLog/edit",
+          queryById: "/config/operationLog/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //备份model原始值
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 触发表单验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+
+        })
+      },
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogModal.Style#Drawer.vue b/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogModal.Style#Drawer.vue
new file mode 100644
index 0000000..8ecac58
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <operationLog-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></operationLog-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import OperationLogForm from './OperationLogForm'
+
+  export default {
+    name: 'OperationLogModal',
+    components: {
+      OperationLogForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogModal.vue b/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogModal.vue
new file mode 100644
index 0000000..3dbebea
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/system/monitor/modules/OperationLogModal.vue
@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <operationLog-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></operationLog-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import OperationLogForm from './OperationLogForm'
+  export default {
+    name: 'OperationLogModal',
+    components: {
+      OperationLogForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
index c198d19..1cd447e 100644
--- a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
@@ -16,7 +16,6 @@
                 show-search
                 placeholder="请选择货主"
                 option-filter-prop="children"
-                :filter-option="filterOption"
                 v-model="queryParam.companyCode">
                 <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{
                     item.name
@@ -32,7 +31,6 @@
                 show-search
                 placeholder="请选择入库单类型"
                 option-filter-prop="children"
-                :filter-option="filterOption"
                 v-model="queryParam.type">
                 <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{
                     item.name
@@ -65,7 +63,6 @@
                   show-search
                   placeholder="请选择供应商"
                   option-filter-prop="children"
-                  :filter-option="filterOption"
                   v-model="queryParam.supplierCode">
                   <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{
                       item.name
@@ -116,12 +113,6 @@
 
     <!-- table区域-begin -->
     <div>
-      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a
-        style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
-        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
-      </div>
-
       <a-table
         ref="table"
         size="middle"
diff --git a/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderModal.vue b/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderModal.vue
index 68326b1..9e14b17 100644
--- a/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderModal.vue
+++ b/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiptHeaderModal.vue
@@ -17,7 +17,6 @@
                 show-search
                 placeholder="请选择货主"
                 option-filter-prop="children"
-                :filter-option="filterOption"
                 v-model="model.companyCode">
                 <a-select-option v-for="item in companyList" :key="item.name" :value="item.code">{{
                     item.name
@@ -33,7 +32,6 @@
                 show-search
                 placeholder="请选择入库单类型"
                 option-filter-prop="children"
-                :filter-option="filterOption"
                 v-model="model.type">
                 <a-select-option v-for="item in receiptTypeList" :key="item.name" :value="item.code">{{
                     item.name
@@ -49,7 +47,6 @@
                 show-search
                 placeholder="请选择供应商"
                 option-filter-prop="children"
-                :filter-option="filterOption"
                 v-model="model.supplierCode">
                 <a-select-option v-for="item in supplierList" :key="item.name" :value="item.code">{{
                     item.name
diff --git a/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiveModal.vue b/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiveModal.vue
index 682643f..c858d24 100644
--- a/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiveModal.vue
+++ b/ant-design-vue-jeecg/src/views/system/receipt/modules/ReceiveModal.vue
@@ -25,7 +25,6 @@
       rowKey="id"
       size="middle"
       :columns="columns"
-      :loading="loading"
       :dataSource="dataSource"
       :pagination="false">
        <span slot="action" slot-scope="text, record">
diff --git a/ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountDetailList.vue b/ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountDetailList.vue
index 9a4fbe4..f2e00fc 100644
--- a/ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountDetailList.vue
+++ b/ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountDetailList.vue
@@ -27,7 +27,6 @@
         bordered
         rowKey="id"
         class="j-table-force-nowrap"
-        :scroll="{x:true}"
         :loading="loading"
         :columns="columns"
         :dataSource="dataSource"
@@ -73,9 +72,12 @@
             <span>下载</span>
           </a-button>
         </template>
-
+        CycleCountDetailChiIdModal
         <template slot="action" slot-scope="text, record">
-          <a v-if="record.enableStatus === 1" @click="generateCount(record.id)">生成盘点任务</a>
+          <cycle-count-detail-chi-id-modal ref="adjustmentModal" @ok="modalFormOk" :id="record.id"/>
+          <a @click="createMany()"><a-icon/>新增</a>
+          <a-divider type="vertical"/>
+          <a v-if="record.enableStatus === 1"  @click="selectPort(record)">生成盘点任务</a>
           <a-divider v-if="record.enableStatus === 1"  type="vertical"/>
           <a @click="loadDatas(record.cycleCountHeadId)"><a-icon type="sync"/>刷新</a>
         </template>
@@ -85,6 +87,8 @@
     <!-- table区域 end -->
 
     <!-- 表单区域 -->
+
+    <cycle-count-select-modal ref="modalForm2"></cycle-count-select-modal>
     <cycle-count-detail-modal ref="modalForm" @ok="modalFormOk"/>
 
   </a-card>
@@ -95,10 +99,12 @@
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import { getAction } from '@api/manage'
   import CycleCountDetailModal from './modules/CycleCountDetailModal'
+  import CycleCountSelectModal from './modules/CycleCountSelectModal'
   import CycleCountDetailChildSubTable from './subTables/CycleCountDetailChildSubTable'
   import '@/assets/less/TableExpand.less'
   import {createCycleCoutTaskByDetailId, stockTakeTask} from "../../../api/api";
   import Utils from "../../../components/jeecgbiz/JButtonBizComponent/util.js"
+  import CycleCountDetailChiIdModal from "./modules/CycleCountDetailChiIdModal";
 
   export default {
     name: 'CycleCountDetailList',
@@ -107,6 +113,8 @@
     components: {
       CycleCountDetailModal,
       CycleCountDetailChildSubTable,
+      CycleCountSelectModal,
+      CycleCountDetailChiIdModal,
     },
     props: {
       record: {
@@ -247,12 +255,6 @@
       Utils.$on('methodB',(data)=> {
         _this.methodB(data);
       })
-      // var _this = this;
-      // setInterval(function () {
-      //    if(_this.isLoad) {
-      //      _this.loadDataList();
-      //   }
-      // },1000)
     },
     computed: {
       importExcelUrl() {
@@ -283,8 +285,12 @@
         }).finally(() => {
           this.loading = false
         })
-      },
 
+      },
+      selectPort(record) {
+        this.$refs.modalForm2.edit(record);
+        this.$refs.modalForm2.title = "选择出库口";
+      },
       loadDatas(record) {
         this.loading = true
         this.dataSource = []
@@ -299,34 +305,13 @@
         })
       },
 
-      // testaa(){
-      //   alert("刷新了")
-      //   var _this = this;
-      //   _this.loadDataList();
-      // },
       methodB(data) {
           var _this = this;
           _this.loadDatas(data);
       },
       initDictConfig() {
       },
-      generateCount(id){
-        createCycleCoutTaskByDetailId(id).then((res) => {
-          // alert("请求成功")
-          if (res.success) {
-            this.$message.success(res.message)
-            this.$emit('ok')
-            var _this = this;
-            _this.loadDatas(res.result);
-          } else {
-            this.$message.warning(res.message);
-          }
-        }).finally(() => {
-          this.confirmLoading = false;
-          this.close()
-        })
 
-      },
       handleExpand(expanded, record) {
         this.expandedRowKeys = []
         if (expanded === true) {
@@ -353,7 +338,12 @@
         fieldList.push({type:'string',value:'completedAt',text:'完成时间',dictCode:''})
         fieldList.push({type:'string',value:'enableStatus',text:'盘点明细状态',dictCode:''})
         this.superFieldList = fieldList
-      }
+      },
+
+      createMany() {
+        this.$refs.adjustmentModal.edit();
+        this.$refs.adjustmentModal.title = "实盘登记";
+      },
     }
   }
 </script>
diff --git a/ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountHeaderList.vue b/ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountHeaderList.vue
index e9f1e65..9e8bdec 100644
--- a/ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountHeaderList.vue
@@ -36,7 +36,6 @@
       <a-table
         ref="table"
         size="middle"
-        :scroll="{x:true}"
         bordered
         rowKey="id"
         :columns="columns"
@@ -230,7 +229,7 @@
             title: '操作',
             dataIndex: 'action',
             align:"center",
-            fixed:"right",
+            // fixed:"right",
             width:147,
             scopedSlots: { customRender: 'action' }
           }
diff --git a/ant-design-vue-jeecg/src/views/system/stocktaking/modules/AdjustmentDocModal.vue b/ant-design-vue-jeecg/src/views/system/stocktaking/modules/AdjustmentDocModal.vue
index 635a9ad..c7fe083 100644
--- a/ant-design-vue-jeecg/src/views/system/stocktaking/modules/AdjustmentDocModal.vue
+++ b/ant-design-vue-jeecg/src/views/system/stocktaking/modules/AdjustmentDocModal.vue
@@ -1,4 +1,3 @@
-<script src="../../../../components/jeecgbiz/JButtonBizComponent/util.js"></script>
 <template>
   <j-modal
     :title="title"
@@ -33,7 +32,7 @@ export default {
   name: "AdjustmentDocModal",
   components: {},
   props: {
-    id: "",
+    taskHeaderId:"",
   },
   data() {
     return {
@@ -41,8 +40,9 @@ export default {
       width: 500,
       visible: false,
       model: {
-        id:this.id,
+        id:'',
         countedQty:'',
+        state:this.taskHeaderId,
       },
       labelCol: {
         xs: {span: 24},
@@ -77,7 +77,9 @@ export default {
     add() {
       this.edit(this.modelDefault);
     },
-    edit() {
+    edit(id) {
+      this.model.id=id;
+      alert(this.model.id)
       this.visible = true;
     },
     close() {
diff --git a/ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountDetailChiIdModal.vue b/ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountDetailChiIdModal.vue
new file mode 100644
index 0000000..5f3ac73
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountDetailChiIdModal.vue
@@ -0,0 +1,154 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    switchFullscreen
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <a-spin :spinning="confirmLoading">
+      <a-form-model ref="form" :model="model" :rules="validatorRules">
+        <a-row>
+          <a-col :xs="24">
+            <a-form-model-item label="物料" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialCode">
+              <j-search-select-tag
+                v-model="model.materialCode"
+                :dictOptions="materialList"
+                :trigger-change="true"
+                placeholder="请选择物料编码"
+                @change="searchMaterial">
+              </j-search-select-tag>
+            </a-form-model-item>
+          </a-col>
+          <a-col :xs="24">
+            <a-form-model-item label="实盘数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="countedQty">
+              <a-input v-model="model.countedQty" placeholder="请输入实盘数量"></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="库存状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inventoryStatus">
+              <j-dict-select-tag type="list" v-model="model.inventoryStatus" dictCode="inventory_status"
+                                 placeholder="请选择库存状态"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :xs="24">
+            <a-form-model-item label="批次" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batch">
+              <a-input v-model="model.batch" placeholder="请输入批次"></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </a-spin>
+  </j-modal>
+</template>
+
+<script>
+
+import {createManyEmptyIn} from '@/api/api'
+import {increaseInInventoryGain} from "../../../../api/api";
+import {searchMaterialByCode} from '@/api/api';
+import Utils from '../../../../components/jeecgbiz/JButtonBizComponent/util.js';
+
+export default {
+  name: "CycleCountDetailChiIdModal",
+  components: {},
+  props: {
+    id: "",
+  },
+  data() {
+    return {
+      title: "操作",
+      width: 500,
+      visible: false,
+      model: {
+        cycleCountDetailid:this.id,
+        materialCode:'',
+        batch:'',
+        countedQty:'',
+      },
+      materialList: {},
+      querySource: {},
+      labelCol: {
+        xs: {span: 24},
+        sm: {span: 5},
+      },
+      wrapperCol: {
+        xs: {span: 24},
+        sm: {span: 16},
+      },
+
+      confirmLoading: false,
+      validatorRules: {
+        countedQty: [
+          {required: true, message: '请输入实盘数量!'},
+        ],
+      },
+      url: {
+        add: "/cycleCountDetail/cycleCountDetail/increaseInInventoryGain",
+      }
+
+    }
+  },
+
+
+  created() {
+    //备份model原始值
+    this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    this.searchMaterial();
+    // this.model.inventoryStatus = "good";
+  },
+
+  methods: {
+    searchMaterial() {
+      const that = this;
+      that.querySource.materialCode = that.model.materialCode;
+      searchMaterialByCode(that.querySource).then((res) => {
+        that.materialList = res.result;
+      })
+    },
+    add() {
+      this.edit(this.modelDefault);
+    },
+    edit() {
+      this.visible = true;
+    },
+    close() {
+      this.$emit('close');
+      this.visible = false;
+      this.$refs.form.clearValidate();
+    },
+    handleOk() {
+      const that = this;
+      // 触发表单验证
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          that.confirmLoading = true;
+          increaseInInventoryGain(this.model).then((res) => {
+            if (res.success) {
+              that.$message.success(res.message);
+              that.$emit('ok');
+              that.model.containerCode = '';
+              that.model.toLocationCode = '';
+              Utils.$emit('methodB',res.result);
+            } else {
+              that.$message.warning(res.message);
+            }
+          }).finally(() => {
+            that.confirmLoading = false;
+            that.close();
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    handleCancel() {
+      this.close()
+    },
+
+
+  }
+}
+</script>
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountSelectModal.vue b/ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountSelectModal.vue
new file mode 100644
index 0000000..88c067b
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/system/stocktaking/modules/CycleCountSelectModal.vue
@@ -0,0 +1,140 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    switchFullscreen
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <a-spin :spinning="confirmLoading">
+      <a-form-model ref="form" :model="model" :rules="validatorRules">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="出库口" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="toPort">
+              <a-select
+                show-search
+                placeholder="请选择出库口"
+                option-filter-prop="children"
+                v-model="model.toPort">
+                <a-select-option v-for="item in portList" :key="item.name" :value="item.code">{{
+                    item.name
+                  }}
+                </a-select-option>
+              </a-select>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </a-spin>
+  </j-modal>
+</template>
+
+<script>
+
+import {createCycleCoutTaskByDetailId} from '@/api/api'
+import {inventoryPort} from '@/api/api'
+import Utils from "../../../../components/jeecgbiz/JButtonBizComponent/util";
+
+export default {
+  name: "CycleCountSelectModal",
+  portList: [],
+  components: {},
+  props: {
+    mainId: {
+      type: String,
+      required: false,
+      default: ''
+    }
+  },
+  data() {
+    return {
+      title: "操作",
+      width: 500,
+      visible: false,
+      model: {
+        toPort:'',
+      },
+      portList: [],
+      labelCol: {
+        xs: {span: 24},
+        sm: {span: 5},
+      },
+      wrapperCol: {
+        xs: {span: 24},
+        sm: {span: 16},
+      },
+
+      confirmLoading: false,
+      validatorRules: {},
+      modifyId:"",
+      url: {
+        createTask: "/shipment/shipmentContainerHeader/createShipmentTask",
+      }
+
+    }
+  },
+  created() {
+    //备份model原始值
+    this.modelDefault = JSON.parse(JSON.stringify(this.model));
+  },
+  methods: {
+    add() {
+      this.edit(this.modelDefault);
+    },
+    edit(record) {
+      this.visible = true;
+      this.modifyId=record.id;
+      this.getPortList(record);
+    },
+    close() {
+      this.$emit('close');
+      this.visible = false;
+      this.$refs.form.clearValidate();
+    },
+    handleOk() {
+      const that = this;
+      // 触发表单验证
+      this.$refs.form.validate(valid => {
+
+
+        if (valid) {
+          that.confirmLoading = true;
+          createCycleCoutTaskByDetailId(this.modifyId,this.model.toPort).then((res) => {
+            // alert("请求成功")
+            if (res.success) {
+              this.$message.success(res.message)
+              this.$emit('ok')
+              var _this = this;
+              Utils.$emit('methodB',res.result);
+              // _this.loadDatas(res.result);
+            } else {
+              this.$message.warning(res.message);
+            }
+          }).finally(() => {
+            that.confirmLoading = false;
+            that.close();
+          });
+        } else {
+          return false
+        }
+      })
+    },
+    handleCancel() {
+      this.close()
+    },
+    getPortList(record) {
+      console.log("getPortList");
+      inventoryPort(record).then((res) => {
+        if (res.success) {
+          this.portList = res.result;
+          this.model = Object.assign({}, record);
+          this.visible = true;
+        }
+      });
+    }
+
+  }
+}
+</script>
diff --git a/ant-design-vue-jeecg/src/views/system/stocktaking/subTables/CycleCountDetailChildSubTable.vue b/ant-design-vue-jeecg/src/views/system/stocktaking/subTables/CycleCountDetailChildSubTable.vue
index 17747fd..d20067a 100644
--- a/ant-design-vue-jeecg/src/views/system/stocktaking/subTables/CycleCountDetailChildSubTable.vue
+++ b/ant-design-vue-jeecg/src/views/system/stocktaking/subTables/CycleCountDetailChildSubTable.vue
@@ -22,8 +22,8 @@
     </template>
 
     <template slot="action" slot-scope="text, record">
-      <adjustment-doc-modal ref="adjustmentModal" @ok="modalFormOk" :id="record.id"/>
-      <a v-if="record.childStatus != 1" @click="createMany(record)"><a-icon />实盘登记</a>
+      <adjustment-doc-modal ref="adjustmentModal" @ok="modalFormOk"/>
+      <a v-if="record.childStatus != 1" @click="createMany(record.id)"><a-icon />实盘登记</a>
     </template>
 
     <template slot="fileSlot" slot-scope="text">
@@ -171,8 +171,8 @@
           this.loading = false
         })
       },
-      createMany() {
-        this.$refs.adjustmentModal.edit();
+      createMany(id) {
+        this.$refs.adjustmentModal.edit(id);
         this.$refs.adjustmentModal.title = "实盘登记";
       },
 
diff --git a/ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue b/ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue
index cb02ac8..2fbea83 100644
--- a/ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue
+++ b/ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue
@@ -69,6 +69,9 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
+          <adjustment-doc-modal ref="adjustmentModal" @ok="modalFormOk" :id="record.id" :taskHeaderId="record.taskHeaderId"/>
+          <a v-if="record.taskType==700" @click="createMany(record)">实盘登记</a>
+          <a-divider type="vertical" v-if="record.taskType==700" />
           <a v-has="'taskDetail:edit'" @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical"/>
           <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
@@ -87,11 +90,12 @@
 
 import {JeecgListMixin} from '@/mixins/JeecgListMixin'
 import TaskDetailModal from './modules/TaskDetailModal'
+import AdjustmentDocModal from "../stocktaking/modules/AdjustmentDocModal";
 
 export default {
   name: "TaskDetailList",
   mixins: [JeecgListMixin],
-  components: {TaskDetailModal},
+  components: {TaskDetailModal,AdjustmentDocModal},
   props: {
     mainId: {
       type: String,
@@ -219,7 +223,11 @@ export default {
       this.dataSource = []
       this.selectedRowKeys = []
       this.ipagination.current = 1
-    }
+    },
+    createMany() {
+      this.$refs.adjustmentModal.edit();
+      this.$refs.adjustmentModal.title = "实盘登记";
+    },
 
   }
 }
diff --git a/huaheng-wms-core/pom.xml b/huaheng-wms-core/pom.xml
index f403e5d..96a6bef 100644
--- a/huaheng-wms-core/pom.xml
+++ b/huaheng-wms-core/pom.xml
@@ -42,7 +42,11 @@
             <groupId>org.redisson</groupId>
             <artifactId>redisson</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>cn.monitor4all</groupId>
+            <artifactId>log-record-starter</artifactId>
+            <version>1.4.1</version>
+        </dependency>
         <dependency>
             <groupId>com.github.abel533</groupId>
             <artifactId>ECharts</artifactId>
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
index f1c1240..efc708d 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
@@ -148,6 +148,7 @@ public class ErpServiceImpl implements IErpService {
             ReceiptDetail receiptDetail = new ReceiptDetail();
             receiptDetail.setWarehouseCode(warehouseCode);
             receiptDetail.setCompanyCode(companyCode);
+            receiptDetail.setReferCode(referCode);
             receiptDetail.setReceiptCode(receiptHeader.getCode());
             receiptDetail.setReceiptId(receiptHeader.getId());
             receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiAuthenticationAspect.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiAuthenticationAspect.java
index 8afe603..e06a286 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiAuthenticationAspect.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiAuthenticationAspect.java
@@ -81,7 +81,7 @@ public class ApiAuthenticationAspect {
             JWTVerifier verifier = JWT.require(algorithm).withIssuer(HuahengJwtUtil.HUAHENG_SYSTEM_ID).build();
             DecodedJWT jwt = verifier.verify(token);
             new ApiAuthentication.ApiAuthenticationBuild().operator(jwt.getClaim("operator").asString()).audience(jwt.getAudience().get(0)).issuer(jwt.getIssuer())
-                .issuedAt(jwt.getIssuedAt()).expireDateTime(jwt.getExpiresAt()).bulid();;
+                .issuedAt(jwt.getIssuedAt()).expireDateTime(jwt.getExpiresAt()).bulid();
         } catch (JWTVerificationException e) {
             log.error(e.getMessage());
             throw e;
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/dto/ApiAuthentication.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/dto/ApiAuthentication.java
index 1be5037..9b007f0 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/dto/ApiAuthentication.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/dto/ApiAuthentication.java
@@ -27,10 +27,10 @@ public class ApiAuthentication {
     /** Token签发方(WMS) */
     private String issuer = HuahengJwtUtil.HUAHENG_SYSTEM_ID;
 
-    /** 签发时间 */
+    /** Token签发时间 */
     private Date issuedAt;
 
-    /** 失效时间 */
+    /** Token失效时间 */
     private Date expireDateTime;
 
     public ApiAuthentication() {}
@@ -67,10 +67,10 @@ public class ApiAuthentication {
         /** Token签发方(WMS) */
         private String issuer = HuahengJwtUtil.HUAHENG_SYSTEM_ID;
         
-        /** 签发时间 */
+        /** Token签发时间 */
         private Date issuedAt;
 
-        /** 失效时间 */
+        /** Token失效时间 */
         private Date expireDateTime;
 
         public ApiAuthenticationBuild operator(String operator) {
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java
index 9e48fd9..addb283 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java
@@ -206,7 +206,7 @@ public class HomePageViewServiceImpl implements HomePageViewService {
         Pie pie = new Pie();
         pie.setName("货位状态");
         pie.setType(SeriesType.pie);
-        pie.setRadius("55%");
+        pie.setRadius("70%");
         pie.setCenter(new String[] {"40%", "50%"});
         Normal normal = new Normal();
         normal.setFormatter("{b} \n {c} ({d}%)");
@@ -301,7 +301,7 @@ public class HomePageViewServiceImpl implements HomePageViewService {
         Pie pie = new Pie();
         pie.setName("库存");
         pie.setType(SeriesType.pie);
-        pie.setRadius("55%");
+        pie.setRadius("70%");
         pie.setCenter(new String[] {"40%", "50%"});
         pie.itemStyle().emphasis().setShadowBlur(10);
         pie.itemStyle().emphasis().setShadowOffsetX(0);
@@ -339,26 +339,30 @@ public class HomePageViewServiceImpl implements HomePageViewService {
         String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() - 1000 * 60 * 60 * 24).toString();
         Map<String, Object> map = new HashMap<>();
 
+
+
         // 今天入库量
-        LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
-        taskDetailLambdaQueryWrapper.select(TaskDetail::getTaskType, TaskDetail::getQty).gt(TaskDetail::getCreateTime, today);
-        List<TaskDetail> taskDetails = taskDetailServiceImpl.list(taskDetailLambdaQueryWrapper);
+        LambdaQueryWrapper<InventoryTransaction> inventoryTransactionLambdaQueryWrapper = Wrappers.lambdaQuery();
+        inventoryTransactionLambdaQueryWrapper.select(InventoryTransaction::getType,InventoryTransaction::getQty).gt(InventoryTransaction::getCreateTime, today);
+        List<InventoryTransaction> inventoryTransactions = inventoryTransactionServiceImpl.list(inventoryTransactionLambdaQueryWrapper);
         BigDecimal receiptQty = BigDecimal.ZERO;
         BigDecimal shipmentQty = BigDecimal.ZERO;
 
-        for (TaskDetail taskDetail : taskDetails) {
-            if (taskDetail.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT)) {
-                receiptQty = receiptQty.add(taskDetail.getQty());
-            } else if (taskDetail.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT)) {
-                shipmentQty = shipmentQty.add(taskDetail.getQty());
+        for (InventoryTransaction inventoryTransaction : inventoryTransactions) {
+            if (inventoryTransaction.getType().equals(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT)) {
+                receiptQty = receiptQty.add(inventoryTransaction.getQty());
+            } else if (inventoryTransaction.getType().equals(QuantityConstant.INVENTORY_TRANSACTION_SHIPMENT)) {
+                shipmentQty = shipmentQty.add(inventoryTransaction.getQty());
             }
-
         }
         map.put("receiptTotal", receiptQty);
         map.put("shipmentTotal", shipmentQty);
         // 今日交易量
         map.put("bllCount", receiptQty.add(shipmentQty));
 
+
+
+
         // 库存总数
         LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
         inventoryHeaderLambdaQueryWrapper.select(InventoryHeader::getTotalQty);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/controller/OperationLogController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/controller/OperationLogController.java
new file mode 100644
index 0000000..246fa50
--- /dev/null
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/controller/OperationLogController.java
@@ -0,0 +1,155 @@
+package org.jeecg.modules.wms.monitor.operation.controller;
+
+import java.util.Arrays;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
+import org.jeecg.modules.wms.monitor.operation.service.IOperationLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @Description: 操作记录表
+ * @Author:      jeecg-boot
+ * @Date:        2023-02-20
+ * @Version:     V1.0
+ */
+@Api(tags = "操作记录表")
+@RestController
+@RequestMapping("/config/operationLog")
+@Slf4j
+public class OperationLogController extends JeecgController<OperationLog, IOperationLogService> {
+    @Autowired
+    private IOperationLogService operationLogService;
+
+    /**
+     * 分页列表查询
+     * @param  operationLog
+     * @param  pageNo
+     * @param  pageSize
+     * @param  req
+     * @return
+     */
+    // @AutoLog(value = "操作记录表-分页列表查询")
+    @ApiOperation(value = "操作记录表-分页列表查询", notes = "操作记录表-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<OperationLog>> queryPageList(OperationLog operationLog, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+        @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
+        QueryWrapper<OperationLog> queryWrapper = QueryGenerator.initQueryWrapper(operationLog, req.getParameterMap());
+        Page<OperationLog> page = new Page<OperationLog>(pageNo, pageSize);
+        IPage<OperationLog> pageList = operationLogService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 添加
+     * @param  operationLog
+     * @return
+     */
+    @AutoLog(value = "操作记录表-添加")
+    @ApiOperation(value = "操作记录表-添加", notes = "操作记录表-添加")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody OperationLog operationLog) {
+        operationLogService.save(operationLog);
+        return Result.OK("添加成功!");
+    }
+
+    /**
+     * 编辑
+     * @param  operationLog
+     * @return
+     */
+    @AutoLog(value = "操作记录表-编辑")
+    @ApiOperation(value = "操作记录表-编辑", notes = "操作记录表-编辑")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody OperationLog operationLog) {
+        operationLogService.updateById(operationLog);
+        return Result.OK("编辑成功!");
+    }
+
+    /**
+     * 通过id删除
+     * @param  id
+     * @return
+     */
+    @AutoLog(value = "操作记录表-通过id删除")
+    @ApiOperation(value = "操作记录表-通过id删除", notes = "操作记录表-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        operationLogService.removeById(id);
+        return Result.OK("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     * @param  ids
+     * @return
+     */
+    @AutoLog(value = "操作记录表-批量删除")
+    @ApiOperation(value = "操作记录表-批量删除", notes = "操作记录表-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.operationLogService.removeByIds(Arrays.asList(ids.split(",")));
+        return Result.OK("批量删除成功!");
+    }
+
+    /**
+     * 通过id查询
+     * @param  id
+     * @return
+     */
+    // @AutoLog(value = "操作记录表-通过id查询")
+    @ApiOperation(value = "操作记录表-通过id查询", notes = "操作记录表-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<OperationLog> queryById(@RequestParam(name = "id", required = true) String id) {
+        OperationLog operationLog = operationLogService.getById(id);
+        if (operationLog == null) {
+            return Result.error("未找到对应数据");
+        }
+        return Result.OK(operationLog);
+    }
+
+    /**
+     * 导出excel
+     * @param request
+     * @param operationLog
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OperationLog operationLog) {
+        return super.exportXls(request, operationLog, OperationLog.class, "操作记录表");
+    }
+
+    /**
+     * 通过excel导入数据
+     * @param  request
+     * @param  response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, OperationLog.class);
+    }
+
+}
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/entity/OperationLog.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/entity/OperationLog.java
new file mode 100644
index 0000000..4830014
--- /dev/null
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/entity/OperationLog.java
@@ -0,0 +1,78 @@
+package org.jeecg.modules.wms.monitor.operation.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 操作记录表
+ * @Author: jeecg-boot
+ * @Date:   2023-02-20
+ * @Version: V1.0
+ */
+@Data
+@TableName("operation_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="operation_log对象", description="操作记录表")
+public class OperationLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private java.lang.Integer id;
+	/**业务ID*/
+	@Excel(name = "业务ID", width = 15)
+    @ApiModelProperty(value = "业务ID")
+    private java.lang.String bizId;
+	/**业务类型*/
+	@Excel(name = "业务类型", width = 15)
+    @ApiModelProperty(value = "业务类型")
+    private java.lang.String bizType;
+	/**操作内容*/
+	@Excel(name = "操作内容", width = 15)
+    @ApiModelProperty(value = "操作内容")
+    private java.lang.String operationMsg;
+	/**操作时间*/
+	@Excel(name = "操作时间", width = 15)
+    @ApiModelProperty(value = "操作时间")
+    private java.util.Date operationTime;
+	/**操作结果状态*/
+	@Excel(name = "操作结果状态", width = 15)
+    @ApiModelProperty(value = "操作结果状态")
+    private java.lang.Integer operationStatus;
+	/**操作耗时*/
+	@Excel(name = "操作耗时", width = 15)
+    @ApiModelProperty(value = "操作耗时")
+    private java.lang.Long operationCostTime;
+	/**方法返回内容*/
+	@Excel(name = "方法返回内容", width = 15)
+    @ApiModelProperty(value = "方法返回内容")
+    private java.lang.String contentReturn;
+	/**方法异常内容*/
+	@Excel(name = "方法异常内容", width = 15)
+    @ApiModelProperty(value = "方法异常内容")
+    private java.lang.String contentException;
+	/**操作人ID*/
+	@Excel(name = "操作人ID", width = 15)
+    @ApiModelProperty(value = "操作人ID")
+    private java.lang.String operatorId;
+	/**操作人姓名*/
+	@Excel(name = "操作人姓名", width = 15)
+    @ApiModelProperty(value = "操作人姓名")
+    private java.lang.String operatorName;
+}
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/mapper/OperationLogMapper.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/mapper/OperationLogMapper.java
new file mode 100644
index 0000000..637e97c
--- /dev/null
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/mapper/OperationLogMapper.java
@@ -0,0 +1,15 @@
+package org.jeecg.modules.wms.monitor.operation.mapper;
+
+import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 操作记录表
+ * @Author: jeecg-boot
+ * @Date:   2023-02-20
+ * @Version: V1.0
+ */
+public interface OperationLogMapper extends BaseMapper<OperationLog> {
+
+}
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/mapper/xml/OperationLogMapper.xml b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/mapper/xml/OperationLogMapper.xml
new file mode 100644
index 0000000..1a867db
--- /dev/null
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/mapper/xml/OperationLogMapper.xml
@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.wms.monitor.operation.mapper.OperationLogMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/IOperationLogService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/IOperationLogService.java
new file mode 100644
index 0000000..3a63e6c
--- /dev/null
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/IOperationLogService.java
@@ -0,0 +1,15 @@
+package org.jeecg.modules.wms.monitor.operation.service;
+
+import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 操作记录表
+ * @Author: jeecg-boot
+ * @Date:   2023-02-20
+ * @Version: V1.0
+ */
+public interface IOperationLogService extends IService<OperationLog> {
+
+}
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java
new file mode 100644
index 0000000..49e9753
--- /dev/null
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java
@@ -0,0 +1,51 @@
+package org.jeecg.modules.wms.monitor.operation.service.impl;
+
+import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
+import org.jeecg.modules.wms.monitor.operation.mapper.OperationLogMapper;
+import org.jeecg.modules.wms.monitor.operation.service.IOperationLogService;
+import org.springframework.stereotype.Service;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import cn.monitor4all.logRecord.bean.LogDTO;
+import cn.monitor4all.logRecord.service.IOperationLogGetService;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @Description: 操作记录表
+ * @Author:      jeecg-boot
+ * @Date:        2023-02-20
+ * @Version:     V1.0
+ */
+@Slf4j
+@Service
+public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, OperationLog> implements IOperationLogService, IOperationLogGetService {
+
+    @Override
+    public boolean createLog(LogDTO logDTO) throws Exception {
+        try {
+            log.debug(">>>>>> create OperationLog: [{}]", JSON.toJSONString(logDTO));
+            if (null == logDTO.getBizId()) {
+                log.error(">>>>>> create OperationLog bizId is null");
+                return false;
+            }
+            OperationLog operationLog = new OperationLog();
+            operationLog.setBizId(logDTO.getBizId());
+            operationLog.setBizType(logDTO.getBizType());
+            operationLog.setContentException(logDTO.getException());
+            operationLog.setContentReturn(logDTO.getReturnStr());
+            operationLog.setOperationCostTime(logDTO.getExecutionTime());
+            operationLog.setOperationMsg(logDTO.getMsg());
+            operationLog.setOperationStatus(logDTO.getSuccess().equals(true) ? 1 : 0);
+            operationLog.setOperationTime(logDTO.getOperateDate());
+            operationLog.setOperatorId(logDTO.getOperatorId());
+            operationLog.setOperatorName(logDTO.getOperatorId());
+            this.save(operationLog);
+            return true;
+        } catch (Exception e) {
+            log.error(">>>>>> create OperationLog error:{}", e.getMessage(), e);
+            return false;
+        }
+    }
+}
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptHeader.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptHeader.java
index 7d7b076..6eecdd4 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptHeader.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptHeader.java
@@ -9,6 +9,10 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cn.monitor4all.logRecord.annotation.LogRecordDiffField;
+import cn.monitor4all.logRecord.annotation.LogRecordDiffObject;
+
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecg.common.aspect.annotation.Dict;
 import io.swagger.annotations.ApiModel;
@@ -23,6 +27,7 @@ import io.swagger.annotations.ApiModelProperty;
 @Data
 @TableName("receipt_header")
 @ApiModel(value = "receipt_header对象", description = "入库表主表")
+@LogRecordDiffObject
 public class ReceiptHeader implements Serializable {
     private static final long serialVersionUID = 1L;
 
@@ -33,6 +38,7 @@ public class ReceiptHeader implements Serializable {
     /** 编码 */
     @Excel(name = "编码", width = 15)
     @ApiModelProperty(value = "编码")
+    @LogRecordDiffField(alias = "入库单编码")
     private String code;
     /** 仓库编码 */
     @Excel(name = "仓库编码", width = 15)
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/controller/CycleCountDetailController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/controller/CycleCountDetailController.java
index e374266..3a7a7a4 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/controller/CycleCountDetailController.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/controller/CycleCountDetailController.java
@@ -15,6 +15,12 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.modules.system.entity.SysAnnouncementSend;
+import org.jeecg.modules.wms.config.location.entity.Location;
+import org.jeecg.modules.wms.config.location.service.impl.LocationServiceImpl;
+import org.jeecg.modules.wms.config.port.entity.Port;
+import org.jeecg.modules.wms.config.port.service.impl.PortServiceImpl;
+import org.jeecg.modules.wms.config.zone.entity.Zone;
+import org.jeecg.modules.wms.config.zone.service.impl.ZoneServiceImpl;
 import org.jeecg.modules.wms.framework.controller.HuahengBaseController;
 import javax.servlet.http.HttpServletResponse;
 
@@ -24,9 +30,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.jeecg.modules.wms.framework.controller.HuahengBaseController;
 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService;
+import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader;
 import org.jeecg.utils.ConvertUtils;
 import org.jeecg.utils.HuahengJwtUtil;
 import org.jeecg.utils.StringUtils;
+import org.jeecg.utils.constant.QuantityConstant;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -74,6 +82,13 @@ public class CycleCountDetailController  extends HuahengBaseController {
 	private ICycleCountDetailChildService cycleCountDetailChildService;
 	@Autowired
 	private IInventoryDetailService inventoryDetailService;
+	@Resource
+	private LocationServiceImpl locationService;
+	@Resource
+	private ZoneServiceImpl zoneService;
+	@Resource
+	private PortServiceImpl portService;
+
 	/**
 	 * 分页列表查询
 	 *
@@ -116,23 +131,16 @@ public class CycleCountDetailController  extends HuahengBaseController {
 	}
 
 	/**
-	 *  编辑
+	 *  盘盈增加明细
 	 *
-	 * @param cycleCountDetailPage
+	 * @param
 	 * @return
 	 */
-	@AutoLog(value = "盘点明细表-编辑")
-	@ApiOperation(value="盘点明细表-编辑", notes="盘点明细表-编辑")
-	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody CycleCountDetailPage cycleCountDetailPage) {
-		CycleCountDetail cycleCountDetail = new CycleCountDetail();
-		BeanUtils.copyProperties(cycleCountDetailPage, cycleCountDetail);
-		CycleCountDetail cycleCountDetailEntity = cycleCountDetailService.getById(cycleCountDetail.getId());
-		if(cycleCountDetailEntity==null) {
-			return Result.error("未找到对应数据");
-		}
-		cycleCountDetailService.updateMain(cycleCountDetail, cycleCountDetailPage.getCycleCountDetailChildList());
-		return Result.OK("编辑成功!");
+	@AutoLog(value = "盘点盘盈-增加明细")
+	@ApiOperation(value="盘点盘盈-增加明细", notes="盘点盘盈-增加明细")
+	@RequestMapping(value = "/increaseInInventoryGain", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> increaseInInventoryGain(@RequestBody CycleCountDetailChild cycleCountDetailChild) {
+		return cycleCountDetailService.increaseInInventoryGain(cycleCountDetailChild);
 	}
 
 	/**
@@ -189,12 +197,47 @@ public class CycleCountDetailController  extends HuahengBaseController {
 	 @AutoLog(value = "生成单条盘点任务")
 	 @ApiOperation(value="生成单条盘点任务", notes="生成单条盘点任务")
 	 @PostMapping(value = "/createCycleCoutTaskByDetailId")
-	 public Result createCycleCoutTaskByDetailId(@RequestParam(name = "cycleId") Integer cycleId, HttpServletRequest req){
+	 public Result createCycleCoutTaskByDetailId(@RequestParam(name = "cycleId") Integer cycleId,@RequestParam(name = "toPort") String toPort, HttpServletRequest req){
 		 if(cycleId ==null){
 			 return Result.error("生成盘点任务时盘点明细ID不能为空!");
 		 }
 		 String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req);
-		 return cycleCountDetailService.createCycleCoutTaskByDetailId(cycleId,warehouseCode);
+		 return cycleCountDetailService.createCycleCoutTaskByDetailId(cycleId,toPort,warehouseCode);
+	 }
+
+
+	 /**
+	  * 选择分拣口
+	  * @return
+	  */
+	 @ApiOperation(value = "盘点-选择分拣口", notes = "盘点-选择分拣口")
+	 @PostMapping("/inventoryPort")
+	 @ResponseBody
+	 public Result inventoryPort(@RequestBody CycleCountDetail cycleCountDetail, HttpServletRequest req) {
+		 String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req);
+		 String fromLocationCode = cycleCountDetail.getLocationCode();
+		 if (StringUtils.isEmpty(fromLocationCode)) {
+			 return Result.error("选择分拣口时, 起始库位号为空");
+		 }
+		 Location fromLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode);
+		 if (fromLocation == null) {
+			 return Result.error("选择分拣口时, 根据库位号" + fromLocationCode + " 没有找到库位");
+		 }
+		 String zoneCode = fromLocation.getZoneCode();
+		 if (StringUtils.isEmpty(zoneCode)) {
+			 return Result.error("选择分拣口时, 库区编码为空");
+		 }
+		 Zone zone = zoneService.getZoneByCode(zoneCode, warehouseCode);
+		 if (zone == null) {
+			 return Result.error("选择分拣口时, 库区为空");
+		 }
+		 int type = QuantityConstant.PORT_TYPE_PICK;
+
+		 List<Port> portList = portService.getPortListByType(type, zoneCode, warehouseCode);
+		 if (portList.size() == 0) {
+			 return Result.error("选择分拣口时, 没有找到合适的分拣口");
+		 }
+		 return Result.OK(portList);
 	 }
 
 
@@ -235,7 +278,8 @@ public class CycleCountDetailController  extends HuahengBaseController {
 	 public Result confirmGapQty(@RequestBody Map<String,String> map){
 		 String id = map.get("id");
 		 String countedQty = map.get("countedQty");
-		 return cycleCountDetailChildService.confirmGapQty(id,countedQty);
+		 String state = map.get("state");
+		 return cycleCountDetailChildService.confirmGapQty(id,countedQty,state);
 	 }
 
 	/**
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetail.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetail.java
index 4602fc6..65b484b 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetail.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetail.java
@@ -43,10 +43,6 @@ public class CycleCountDetail implements Serializable {
 	@Excel(name = "任务表头", width = 15)
     @ApiModelProperty(value = "任务表头")
     private Integer taskHeaderId;
-	/**任务明细头*/
-	@Excel(name = "任务明细头", width = 15)
-    @ApiModelProperty(value = "任务明细头")
-    private Integer taskDetailId;
 	/**仓库*/
 	@Excel(name = "仓库", width = 15)
     @ApiModelProperty(value = "仓库")
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetailChild.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetailChild.java
index 4f86522..7ffd95c 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetailChild.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/entity/CycleCountDetailChild.java
@@ -68,6 +68,10 @@ public class CycleCountDetailChild implements Serializable {
 	@Excel(name = "物料单位", width = 15)
     @ApiModelProperty(value = "物料单位")
     private String materialUnit;
+    /**任务明细头*/
+    @Excel(name = "任务明细头", width = 15)
+    @ApiModelProperty(value = "任务明细头")
+    private Integer taskDetailId;
 	/**系统数量*/
 	@Excel(name = "系统数量", width = 15)
     @ApiModelProperty(value = "系统数量")
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailChildService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailChildService.java
index 9277e94..06e7c31 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailChildService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailChildService.java
@@ -14,5 +14,5 @@ import java.util.List;
 public interface ICycleCountDetailChildService extends IService<CycleCountDetailChild> {
 
 
-    Result confirmGapQty(String id, String countedQty);
+    Result confirmGapQty(String id, String countedQty,String state);
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailService.java
index dbbc5ee..180fc1c 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/ICycleCountDetailService.java
@@ -40,6 +40,7 @@ public interface ICycleCountDetailService extends IService<CycleCountDetail> {
 
     Result stockDetailAdd(int taskId,int headerId,String code);
 
-	Result createCycleCoutTaskByDetailId(Integer cycleCoutdetailId,String warehouseCode);
+	Result createCycleCoutTaskByDetailId(Integer cycleCoutdetailId,String toPort,String warehouseCode);
 
+    Result increaseInInventoryGain(CycleCountDetailChild cycleCountDetailChild);
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailChildServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailChildServiceImpl.java
index ae27944..73d0a62 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailChildServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailChildServiceImpl.java
@@ -42,22 +42,35 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl<CycleCountDeta
 
 
 	@Override
-	public Result confirmGapQty(String id, String countedQty) {
+	public Result confirmGapQty(String id, String countedQty,String state) {
 		//接收子单ID和实盘数量
 		//任务未完成可多次登记。
+		CycleCountDetailChild detailChild=new CycleCountDetailChild();
+		if (StringUtils.isNotEmpty(state))
+		{
+			LambdaQueryWrapper<CycleCountDetailChild> queryWrapper = new LambdaQueryWrapper<>();
+			queryWrapper.eq(CycleCountDetailChild::getTaskDetailId,id);
+			detailChild = this.getOne(queryWrapper);
+		}else
+		{
+			//明细子单据
+			detailChild = this.getById(Integer.valueOf(id));
+		}
+
+		if(StringUtils.isNull(detailChild)){
+			return Result.error("明细子单不存在!");
+		}
+
+
 		BigDecimal qty=new BigDecimal(countedQty);
 		if(qty.compareTo(BigDecimal.ZERO) == -1){
 			return Result.error("实盘登记数不能小于0");
 		}
-		//明细子单据
-		CycleCountDetailChild countDetailChild = this.getById(Integer.valueOf(id));
-		if(StringUtils.isNull(countDetailChild)){
-			return Result.error("明细子单不存在!");
-		}
 
 
 
-		CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(countDetailChild.getCycleCountDetailid());
+
+		CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(detailChild.getCycleCountDetailid());
 		if(StringUtils.isNull(cycleCountDetail)){
 			return Result.error("盘点明细不存在。");
 		}
@@ -66,17 +79,17 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl<CycleCountDeta
 //            return AjaxResult.error("盘点任务未执行不能登记数量!");
 //        }
 
-		if(countDetailChild.getChildStatus() >= QuantityConstant.CYCLECOUNT_STATUS_COMPLETED){
+		if(detailChild.getChildStatus() >= QuantityConstant.CYCLECOUNT_STATUS_COMPLETED){
 			return Result.error("盘点任务完成后不能再登记数量!");
 		}
 
 
 		//实盘登记后差异数量
-		BigDecimal adjQty = qty.subtract(countDetailChild.getSystemQty());
-		countDetailChild.setGapQty(adjQty);
-		countDetailChild.setCountedQty(qty);
-		countDetailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_REGISTERED);
-		this.updateById(countDetailChild);
+		BigDecimal adjQty = qty.subtract(detailChild.getSystemQty());
+		detailChild.setGapQty(adjQty);
+		detailChild.setCountedQty(qty);
+		detailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_REGISTERED);
+		this.updateById(detailChild);
 
 
 
@@ -103,7 +116,7 @@ public class CycleCountDetailChildServiceImpl extends ServiceImpl<CycleCountDeta
 		LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 		//修改主单状态
 		CycleCountHeader tmp = new CycleCountHeader();
-		tmp.setCode(countDetailChild.getCyclecountheadcode());
+		tmp.setCode(detailChild.getCyclecountheadcode());
 		tmp.setWarehouseCode(cycleCountDetail.getWarehouseCode());
 		LambdaQueryWrapper<CycleCountHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(tmp);
 		CycleCountHeader cycleCountHeader = cycleCountHeaderService.getOne(lambdaQueryWrapper);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java
index 063af56..3bfe5b2 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java
@@ -8,6 +8,9 @@ import org.jeecg.modules.wms.config.container.entity.Container;
 import org.jeecg.modules.wms.config.container.service.impl.ContainerServiceImpl;
 import org.jeecg.modules.wms.config.location.entity.Location;
 import org.jeecg.modules.wms.config.location.service.impl.LocationServiceImpl;
+import org.jeecg.modules.wms.config.material.entity.Material;
+import org.jeecg.modules.wms.config.material.service.impl.MaterialServiceImpl;
+import org.jeecg.modules.wms.config.materialType.entity.MaterialType;
 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService;
 import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail;
@@ -57,6 +60,10 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 	private LocationServiceImpl locationService;
 	@Resource
 	private TaskHeaderServiceImpl taskHeaderService;
+	@Autowired
+	private ICycleCountDetailService cycleCountDetailService;
+	@Resource
+	private MaterialServiceImpl materialServiceImpl;
 	@Resource
 	private TaskDetailServiceImpl taskDetailService;
 	@Resource
@@ -119,6 +126,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 	}
 
 	@Override
+	@Transactional
 	public Result stockDetailAdd(int taskId,int headerId,String code) {
 		LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
 		inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getInventoryHeaderId,taskId);
@@ -134,10 +142,24 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 			return Result.error("当前容器已经在盘点队列还没有完成 盘点单号"+cycleCountDetails.get(0).getCycleCountHeadCode());
 		}
 
+		String warehouseCode=inventoryDetails.get(0).getWarehouseCode();
+
+
+		Container containerByCode = containerServiceImpl.getContainerByCode(inventoryDetails.get(0).getContainerCode(),warehouseCode);
+		if (containerByCode.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK))
+		{
+			return Result.error("当前容器已锁定 请检查数据  库存里面不是锁定 实际上容器里面锁定了");
+		}
+
+		Location locationByCode = locationService.getLocationByCode(inventoryDetails.get(0).getLocationCode(), warehouseCode);
+		if (locationByCode.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK))
+		{
+			return Result.error("当前库位已锁定 请检查数据 库存里面不是锁定 实际上库位里面锁定了");
+		}
+
 		CycleCountDetail cycleCountDetail = new CycleCountDetail();
 		cycleCountDetail.setCycleCountHeadId(headerId);
 		cycleCountDetail.setContainerCode(inventoryDetails.get(0).getContainerCode());
-
 		cycleCountDetail.setCycleCountHeadCode(code);
 		cycleCountDetail.setCompanyCode(inventoryDetails.get(0).getCompanyCode());
 		cycleCountDetail.setWarehouseCode(inventoryDetails.get(0).getWarehouseCode());
@@ -150,10 +172,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 		cycleCountDetail.setEnableStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILD);
 		this.save(cycleCountDetail);
 
-		CycleCountDetailChild cycleCountDetailChild=new CycleCountDetailChild();
 		for(InventoryDetail inventoryDetail:inventoryDetails)
 		{
-//			cycleCountDetailChild.setCyclecountheadcode();
+			CycleCountDetailChild cycleCountDetailChild=new CycleCountDetailChild();
 			cycleCountDetailChild.setCycleCountDetailid(cycleCountDetail.getId());
 			cycleCountDetailChild.setCyclecountheadcode(code);
 			cycleCountDetailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILD);
@@ -184,7 +205,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 	 * @return
 	 */
 	@Override
-	public Result createCycleCoutTaskByDetailId(Integer cycleCoutDetailId,String warehouseCode) {
+	public Result createCycleCoutTaskByDetailId(Integer cycleCoutDetailId,String toPort,String warehouseCode) {
 		/*任务主表中存在库位,在盘点明细中生成任务时,不同的容器生成不同的主任务*/
 		//校验有没有相同容器正在执行任务.
 		CycleCountDetail cycleCountDetail = this.getById(cycleCoutDetailId);
@@ -208,7 +229,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 		if(StringUtils.isEmpty(location.getContainerCode())){
 			return Result.error(cycleCountDetail.getLocationCode() + "库位中没有容器,操作失败!");
 		}
-		
+
 		//生成任务同时锁定库位
 		locationService.updateStatus(location.getCode(), QuantityConstant.STATUS_LOCATION_LOCK,warehouseCode);
 
@@ -230,7 +251,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 		task.setContainerCode(cycleCountDetail.getContainerCode());
 		task.setStatus(QuantityConstant.TASK_STATUS_BUILD);
 		task.setFromLocationCode(cycleCountDetail.getLocationCode());
-		task.setToPortCode("P10");
+		task.setToPortCode(toPort);
 		task.setSequenceNumber(1);
 		task.setShipmentContainerHeaderId(cycleCoutDetailId);
 		task.setSequence(1);
@@ -270,6 +291,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 			}
 			// 修改子单状态
 			item.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_BUILDTASK);
+			item.setTaskDetailId(taskDetail.getId());
 			cycleCountDetailChildServiceImpl.updateById(item);
 		}
 
@@ -305,5 +327,57 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
 		return result;
 	}
 
+	@Override
+	public Result increaseInInventoryGain(CycleCountDetailChild cycleCountDetailChild) {
+		CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(cycleCountDetailChild.getCycleCountDetailid());
+		if (cycleCountDetail==null)
+		{
+			return Result.error("盘点明细不存在");
+		}
+
+
+		if (cycleCountDetail.getEnableStatus().equals(QuantityConstant.CYCLECOUNT_STATUS_BUILD))
+		{
+			return Result.error("当前盘点明细是新建状态 不能调整");
+		}
+
+		if (cycleCountDetailChild.getCountedQty().compareTo(BigDecimal.ZERO)==0)
+		{
+			return Result.error("别闹");
+		}
+
+		cycleCountDetailChild.setCyclecountheadcode(cycleCountDetail.getCycleCountHeadCode());
+		cycleCountDetailChild.setLocationCode(cycleCountDetail.getLocationCode());
+		cycleCountDetailChild.setContainerCode(cycleCountDetail.getContainerCode());
+
+		Material materialByCode = materialServiceImpl.getMaterialByCode(cycleCountDetailChild.getMaterialCode());
+		cycleCountDetailChild.setMaterialName(materialByCode.getName());
+		cycleCountDetailChild.setMaterialSpec(materialByCode.getSpec());
+		cycleCountDetailChild.setMaterialUnit(materialByCode.getUnit());
+		BigDecimal countedQty = cycleCountDetailChild.getCountedQty();
+		cycleCountDetailChild.setCountedQty(null);
+
+
+		LambdaQueryWrapper<CycleCountDetailChild> childLambdaQueryWrapper = Wrappers.lambdaQuery(cycleCountDetailChild);
+		CycleCountDetailChild serviceImplOne = cycleCountDetailChildServiceImpl.getOne(childLambdaQueryWrapper);
+		if (serviceImplOne!=null)
+		{
+			return Result.error("这个物料明细已存在");
+		}
+
+		cycleCountDetailChild.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_REGISTERED);
+		cycleCountDetailChild.setSystemQty(BigDecimal.ZERO);
+		cycleCountDetailChild.setGapQty(countedQty);
+		cycleCountDetailChild.setCountedQty(countedQty);
+		cycleCountDetailChildServiceImpl.save(cycleCountDetailChild);
+
+		Result result = new Result();
+		result.setCode(200);
+		result.setMessage("成功");
+		result.setResult(cycleCountDetail.getCycleCountHeadId());
+
+		return result;
+	}
+
 
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
index 1ff8ff0..fb9311c 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
@@ -1540,6 +1540,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         //1.先拿到盘点单主单据
         CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(taskHeader.getShipmentContainerHeaderId());
 
+        if ((cycleCountDetail.getCountedQty().add(cycleCountDetail.getGapQty())).compareTo(BigDecimal.ZERO)==0)
+        {
+            return Result.error("盘点单据系统实盘数量跟差异数量0,不能完成 单据号" +cycleCountDetail.getCycleCountHeadCode());
+        }
+
         //2.盘点单主单据查明细单据list
         LambdaQueryWrapper<CycleCountDetailChild> childLambdaQueryWrapper = new LambdaQueryWrapper<CycleCountDetailChild>();
         childLambdaQueryWrapper.eq(CycleCountDetailChild::getCycleCountDetailid,cycleCountDetail.getId());
@@ -1558,16 +1563,43 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
 
         for (CycleCountDetailChild child : children)
         {
-            InventoryDetail inventoryDetail = inventoryDetailService.getById(child.getInventoryDetaiId());
-            if (inventoryDetail==null)
+            if (!child.getChildStatus().equals(QuantityConstant.CYCLECOUNT_STATUS_REGISTERED))
             {
-                return Result.error("盘点还没完成 库存明细单据就不存在了 可能出现了问题或者所容器没成功");
+                throw new ServiceException("当前任务里面还有没有进行登记的数据,不能完成任务");
             }
 
-            inventoryHeader.setTotalQty(inventoryHeader.getTotalQty().add(child.getGapQty()));
 
-            inventoryDetail.setQty(child.getCountedQty());
-            inventoryDetailService.updateById(inventoryDetail);
+            if (child.getInventoryDetaiId()!=null)
+            {
+                InventoryDetail inventoryDetail = inventoryDetailService.getById(child.getInventoryDetaiId());
+                if (inventoryDetail==null)
+                {
+                    throw new ServiceException("盘点还没完成 库存明细单据就不存在了 可能出现了问题或者所容器没成功");
+                }
+                inventoryHeader.setTotalQty(inventoryHeader.getTotalQty().add(child.getGapQty()));
+                inventoryDetail.setQty(child.getCountedQty());
+                inventoryDetailService.updateById(inventoryDetail);
+            }else
+            {
+                InventoryDetail inventoryDetail=new InventoryDetail();
+                inventoryDetail.setInventoryHeaderId(inventoryHeader.getId());
+                inventoryDetail.setWarehouseCode(inventoryHeader.getWarehouseCode());
+                inventoryDetail.setCompanyCode(inventoryHeader.getCompanyCode());
+                inventoryDetail.setZoneCode(inventoryHeader.getZoneCode());
+                inventoryDetail.setContainerCode(inventoryHeader.getContainerCode());
+                inventoryDetail.setLocationCode(inventoryHeader.getLocationCode());
+                inventoryDetail.setMaterialCode(child.getMaterialCode());
+                inventoryDetail.setMaterialName(child.getMaterialName());
+                inventoryDetail.setMaterialSpec(child.getMaterialSpec());
+                inventoryDetail.setMaterialUnit(child.getMaterialUnit());
+                inventoryDetail.setQty(child.getCountedQty());
+                inventoryDetail.setTaskQty(BigDecimal.ZERO);
+                inventoryDetail.setInventoryStatus(child.getInventoryStatus());
+                inventoryDetail.setBatch(child.getBatch());
+                inventoryDetailService.save(inventoryDetail);
+                child.setInventoryDetaiId(inventoryDetail.getId());
+            }
+
 
             child.setChildStatus(QuantityConstant.CYCLECOUNT_STATUS_COMPLETED);
             if (child.getGapQty().compareTo(BigDecimal.ZERO) == 1)
@@ -1727,7 +1759,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
 
 
         //还原容器状态
-        containerService.restoreContainer(cycleCountDetail.getLocationCode(),taskHeader.getWarehouseCode());
+        containerService.restoreContainer(cycleCountDetail.getContainerCode(),taskHeader.getWarehouseCode());
 
         return Result.OK("完成盘点任务成功");
     }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java b/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
index 5b607fe..599ccd0 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
@@ -1,26 +1,27 @@
 package org.jeecg.utils.constant;
 
 /**
- * 数字自定义常量
+ * 数字自定义常量 
+ * 1、入库单状态 
+ * 2、出库单状态 
+ * 3、单据上传状态 
+ * 4、入库组盘状态 
+ * 5、出库组盘状态 
+ * 6、任务类型 
+ * 7、任务状态 
+ * 8、波次状态 
+ * 9、质检状态 
+ * 10、盘点状态 
+ * 11、INVENTORY_TRANSACTION_RECEIPT 
+ * 12、调整单状态 
+ * 13、任务内部类型 
+ * 14、质检单类型 
+ * 16、请求类型
  * @author ricard
  */
 public class QuantityConstant {
     /**
-     * 1、入库单状态
-     * 2、出库单状态
-     * 3、单据上传状态
-     * 4、入库组盘状态
-     * 5、出库组盘状态
-     * 6、任务类型
-     * 7、任务状态
-     * 8、波次状态
-     * 9、质检状态
-     * 10、盘点状态
-     * 11、INVENTORY_TRANSACTION_RECEIPT
-     * 12、调整单状态
-     * 13、任务内部类型
-     * 14、质检单类型
-     * 16、请求类型
+    
      */
 
     // 1、入库单状态
@@ -708,9 +709,8 @@ public class QuantityConstant {
     public static final String ERP_LCID = "2052";
     public static final String ERP_ServerUrl = "http://erptest.gani.com.cn/K3Cloud/";
 
-    public static final String UPSTREAM_DELETE_RECEIPT="上游删除";
-    public static final String BACK_DELETE_RECEIPT="回传删除";
-    public static final String WMS_DELETE_RECEIPT="WMS删除";
-
+    public static final String UPSTREAM_DELETE_RECEIPT = "上游删除";
+    public static final String BACK_DELETE_RECEIPT = "回传删除";
+    public static final String WMS_DELETE_RECEIPT = "WMS删除";
 
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/config/HuahengBatisInterceptor.java b/huaheng-wms-core/src/main/java/org/jeecg/utils/interceptor/HuahengBatisInterceptor.java
index 5bd73d1..b63efdf 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/config/HuahengBatisInterceptor.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/utils/interceptor/HuahengBatisInterceptor.java
@@ -1,4 +1,4 @@
-package org.jeecg.modules.wms.framework.config;
+package org.jeecg.utils.interceptor;
 
 import java.lang.reflect.Field;
 import java.util.Date;