diff --git a/ant-design-vue-jeecg/src/views/system/config/ContainerList.vue b/ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
index 623db06..ac83874 100644
--- a/ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
+++ b/ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
@@ -20,8 +20,7 @@
                 show-search
                 placeholder="请选择容器类型"
                 option-filter-prop="children"
-                v-model="queryParam.containerTypeCode"
-              >
+                v-model="queryParam.containerTypeCode">
                 <a-select-option v-for="item in containerTypeList" :key="item.name" :value="item.code"
                 >{{ item.name }}
                 </a-select-option>
@@ -252,6 +251,13 @@ export default {
           scopedSlots: {customRender: 'fillStatus_dictText'}
         },
         {
+          title: '库区',
+          align: "center",
+          dataIndex: 'zoneCode',
+          key: 'zoneCode',
+          scopedSlots: {customRender: 'zoneCode'}
+        },
+        {
           title: '创建人',
           align: 'center',
           dataIndex: 'createBy'
diff --git a/ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue b/ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue
index 8b23bdb..86d4edb 100644
--- a/ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue
+++ b/ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue
@@ -5,6 +5,19 @@
       <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="库区">
+              <a-select
+                show-search
+                placeholder="请选择库区"
+                option-filter-prop="children"
+                v-model="queryParam.zoneCode">
+                <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code">
+                  {{ item.name }}
+                </a-select-option>
+              </a-select>
+            </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.code"></a-input>
             </a-form-item>
@@ -68,6 +81,13 @@
         class="j-table-force-nowrap"
         @change="handleTableChange">
 
+
+          <span slot="zoneCode" slot-scope="zoneCode">
+          <a-tag :key="zoneCode" color=blue>
+            {{ solutionZoneCode(zoneCode) }}
+          </a-tag>
+        </span>
+
          <span slot="locationTypeCode" slot-scope="locationTypeCode">
           <a-tag :key="locationTypeCode" color=pink>
             {{ solutionLocationType(locationTypeCode) }}
@@ -125,7 +145,7 @@ import '@/assets/less/TableExpand.less'
 import {mixinDevice} from '@/utils/mixin'
 import {JeecgListMixin} from '@/mixins/JeecgListMixin'
 import LocationHighModal from './modules/LocationHighModal'
-import {getLocationTypeList} from '@/api/api'
+import {getLocationTypeList, getZoneList} from '@/api/api'
 
 export default {
   name: 'LocationHighList',
@@ -167,6 +187,13 @@ export default {
           scopedSlots: {customRender: 'locationTypeCode'}
         },
         {
+          title: '库区',
+          align: "center",
+          dataIndex: 'zoneCode',
+          key: 'zoneCode',
+          scopedSlots: {customRender: 'zoneCode'}
+        },
+        {
           title: '高低位',
           align: "center",
           dataIndex: 'high_dictText'
@@ -246,7 +273,23 @@ export default {
         if (res.success) {
           this.locationTypeList = res.result
         }
+      }),
+      getZoneList().then((res) => {
+        if (res.success) {
+          this.zoneList = res.result
+        }
+      });
+    },
+    solutionZoneCode(value) {
+      var actions = []
+      console.log("solutionZoneCode " + this.zoneList);
+      Object.keys(this.zoneList).some((key) => {
+        if (this.zoneList[key].code == ('' + value)) {
+          actions.push(this.zoneList[key].name)
+          return true
+        }
       })
+      return actions.join('')
     },
     solutionLocationType(value) {
       var actions = []
diff --git a/ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue b/ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue
index c3fe1af..8406d99 100644
--- a/ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue
+++ b/ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue
@@ -14,6 +14,20 @@
               <a-input placeholder="请输入参数键名" v-model="queryParam.code"></a-input>
             </a-form-item>
           </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="库区">
+              <a-select
+                show-search
+                placeholder="请选择库区"
+                option-filter-prop="children"
+                v-model="queryParam.zoneCode">
+                <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code">{{
+                    item.name
+                  }}
+                </a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
           <template v-if="toggleSearchStatus">
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
               <a-form-item label="参数键值">
@@ -79,6 +93,12 @@
         class="j-table-force-nowrap"
         @change="handleTableChange">
 
+        <span slot="zoneCode" slot-scope="zoneCode">
+          <a-tag :key="zoneCode" color=blue>
+            {{ solutionZoneCode(zoneCode) }}
+          </a-tag>
+        </span>
+
         <template slot="htmlSlot" slot-scope="text">
           <div v-html="text"></div>
         </template>
@@ -132,6 +152,7 @@ import '@/assets/less/TableExpand.less'
 import {mixinDevice} from '@/utils/mixin'
 import {JeecgListMixin} from '@/mixins/JeecgListMixin'
 import ParameterConfigurationModal from './modules/ParameterConfigurationModal'
+import {getZoneList} from "@api/api";
 
 export default {
   name: 'ParameterConfigurationList',
@@ -142,6 +163,7 @@ export default {
   data() {
     return {
       description: '参数配置管理页面',
+      zoneList: [],
       // 表头
       columns: [
         {
@@ -155,6 +177,13 @@ export default {
           }
         },
         {
+          title: '库区',
+          align: "center",
+          dataIndex: 'zoneCode',
+          key: 'zoneCode',
+          scopedSlots: {customRender: 'zoneCode'}
+        },
+        {
           title: '参数名称',
           align: "center",
           dataIndex: 'name'
@@ -217,6 +246,7 @@ export default {
   },
   created() {
     this.getSuperFieldList();
+    this.loadFrom();
   },
   computed: {
     importExcelUrl: function () {
@@ -226,6 +256,24 @@ export default {
   methods: {
     initDictConfig() {
     },
+    loadFrom() {
+      getZoneList().then((res) => {
+        if (res.success) {
+          this.zoneList = res.result
+        }
+      });
+    },
+    solutionZoneCode(value) {
+      var actions = []
+      console.log("solutionZoneCode " + this.zoneList);
+      Object.keys(this.zoneList).some((key) => {
+        if (this.zoneList[key].code == ('' + value)) {
+          actions.push(this.zoneList[key].name)
+          return true
+        }
+      })
+      return actions.join('')
+    },
     getSuperFieldList() {
       let fieldList = [];
       fieldList.push({type: 'string', value: 'name', text: '参数名称', dictCode: ''})
diff --git a/ant-design-vue-jeecg/src/views/system/config/modules/ContainerForm.vue b/ant-design-vue-jeecg/src/views/system/config/modules/ContainerForm.vue
index 9e9a18c..ef8f9d9 100644
--- a/ant-design-vue-jeecg/src/views/system/config/modules/ContainerForm.vue
+++ b/ant-design-vue-jeecg/src/views/system/config/modules/ContainerForm.vue
@@ -17,6 +17,20 @@
             </a-form-model-item>
           </a-col>
           <a-col :span="24">
+            <a-form-model-item label="库区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="zoneCode">
+              <a-select
+                show-search
+                placeholder="请选择库区"
+                option-filter-prop="children"
+                v-model="model.zoneCode">
+                <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code">{{
+                    item.name
+                  }}
+                </a-select-option>
+              </a-select>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
             <a-form-model-item label="数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="userdef1">
               <a-input v-model="model.userdef1" placeholder="请输入数量"></a-input>
             </a-form-model-item>
diff --git a/ant-design-vue-jeecg/src/views/system/config/modules/ContainerModal.vue b/ant-design-vue-jeecg/src/views/system/config/modules/ContainerModal.vue
index 0168dfd..b3f7410 100644
--- a/ant-design-vue-jeecg/src/views/system/config/modules/ContainerModal.vue
+++ b/ant-design-vue-jeecg/src/views/system/config/modules/ContainerModal.vue
@@ -15,6 +15,7 @@
 <script>
 
 import ContainerForm from './ContainerForm'
+import {getZoneList} from "@api/api";
 
 export default {
   name: 'ContainerModal',
diff --git a/ant-design-vue-jeecg/src/views/system/config/modules/LocationHighForm.vue b/ant-design-vue-jeecg/src/views/system/config/modules/LocationHighForm.vue
index c3dc0d5..7ac6a3d 100644
--- a/ant-design-vue-jeecg/src/views/system/config/modules/LocationHighForm.vue
+++ b/ant-design-vue-jeecg/src/views/system/config/modules/LocationHighForm.vue
@@ -19,6 +19,20 @@
             </a-form-model-item>
           </a-col>
           <a-col :span="24">
+            <a-form-model-item label="库区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="zoneCode">
+              <a-select
+                show-search
+                placeholder="请选择库区"
+                option-filter-prop="children"
+                v-model="model.zoneCode">
+                <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code">{{
+                    item.name
+                  }}
+                </a-select-option>
+              </a-select>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
             <a-form-model-item label="高低位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="high">
               <j-dict-select-tag type="list" v-model="model.high" dictCode="high_status" placeholder="请选择高低位"/>
             </a-form-model-item>
@@ -38,6 +52,7 @@
 
 import {httpAction, getAction} from '@/api/manage'
 import {validateDuplicateValue} from '@/utils/util'
+import {getContainerTypeList, getZoneList} from "@api/api";
 
 export default {
   name: 'LocationHighForm',
@@ -53,6 +68,7 @@ export default {
   data() {
     return {
       model: {},
+      zoneList: [],
       labelCol: {
         xs: {span: 24},
         sm: {span: 5},
@@ -91,6 +107,7 @@ export default {
   created() {
     //备份model原始值
     this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    this.loadFrom();
   },
   methods: {
     add() {
@@ -100,6 +117,13 @@ export default {
       this.model = Object.assign({}, record);
       this.visible = true;
     },
+    loadFrom() {
+      getZoneList().then((res) => {
+        if (res.success) {
+          this.zoneList = res.result
+        }
+      });
+    },
     submitForm() {
       const that = this;
       // 触发表单验证
diff --git a/ant-design-vue-jeecg/src/views/system/config/modules/ParameterConfigurationForm.vue b/ant-design-vue-jeecg/src/views/system/config/modules/ParameterConfigurationForm.vue
index c82b297..00638c0 100644
--- a/ant-design-vue-jeecg/src/views/system/config/modules/ParameterConfigurationForm.vue
+++ b/ant-design-vue-jeecg/src/views/system/config/modules/ParameterConfigurationForm.vue
@@ -14,6 +14,20 @@
             </a-form-model-item>
           </a-col>
           <a-col :span="24">
+            <a-form-model-item label="库区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="zoneCode">
+              <a-select
+                show-search
+                placeholder="请选择库区"
+                option-filter-prop="children"
+                v-model="model.zoneCode">
+                <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code">{{
+                    item.name
+                  }}
+                </a-select-option>
+              </a-select>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
             <a-form-model-item label="参数键值" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="value">
               <a-input v-model="model.value" placeholder="请输入参数键值"></a-input>
             </a-form-model-item>
@@ -33,6 +47,7 @@
 
 import {httpAction, getAction} from '@/api/manage'
 import {validateDuplicateValue} from '@/utils/util'
+import {getZoneList} from "@api/api";
 
 export default {
   name: 'ParameterConfigurationForm',
@@ -48,6 +63,7 @@ export default {
   data() {
     return {
       model: {},
+      zoneList: [],
       labelCol: {
         xs: {span: 24},
         sm: {span: 5},
@@ -73,6 +89,7 @@ export default {
   created() {
     //备份model原始值
     this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    this.loadFrom();
   },
   methods: {
     add() {
@@ -82,6 +99,13 @@ export default {
       this.model = Object.assign({}, record);
       this.visible = true;
     },
+    loadFrom() {
+      getZoneList().then((res) => {
+        if (res.success) {
+          this.zoneList = res.result
+        }
+      });
+    },
     submitForm() {
       const that = this;
       // 触发表单验证
diff --git a/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue b/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue
index 8484194..a19800e 100644
--- a/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue
+++ b/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue
@@ -157,11 +157,16 @@ export default {
           dataIndex: 'qty'
         },
         {
-          title: '已出数量',
+          title: '配盘数量',
           align: "center",
           dataIndex: 'taskQty'
         },
         {
+          title: '已出数量',
+          align: "center",
+          dataIndex: 'shipmentQty'
+        },
+        {
           title: '可出数量',
           align: "center",
           dataIndex: 'availableQty'
diff --git a/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue b/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
index c9e1d62..a2efa50 100644
--- a/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
@@ -5,6 +5,20 @@
       <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="库区">
+              <a-select
+                show-search
+                placeholder="请选择库区"
+                option-filter-prop="children"
+                v-model="queryParam.zoneCode">
+                <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code">{{
+                    item.name
+                  }}
+                </a-select-option>
+              </a-select>
+            </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.code"></a-input>
             </a-form-item>
@@ -158,6 +172,12 @@
           </a-tag>
         </span>
 
+        <span slot="zoneCode" slot-scope="zoneCode">
+          <a-tag :key="zoneCode" color=blue>
+            {{ solutionZoneCode(zoneCode) }}
+          </a-tag>
+        </span>
+
         <span slot="type" slot-scope="type">
           <a-tag :key="type" color=pink>
             {{ solutionShipmentType(type) }}
@@ -197,8 +217,8 @@
           </a-popconfirm>
           <a v-if="((record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus <= 200))
             || (flowOff == '0' && record.lastStatus <= 200)" @click="autoShipmentCombine(record)" v-has="'shipmentHeader:autoShipmentCombine'"><a-button type="primary">自动配盘</a-button><a-divider type="vertical"/></a>
-          <a v-if="((record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus < 800))
-            || (flowOff == '0' && record.lastStatus < 800)" @click="openAutoShipmentCombine(record)" v-has="'shipmentHeader:autoShipment'"><a-button type="primary">自动出库</a-button></a>
+          <a v-if="((record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus <= 200))
+            || (flowOff == '0' && record.lastStatus <= 200)" @click="openAutoShipmentCombine(record)" v-has="'shipmentHeader:autoShipment'"><a-button type="primary">自动出库</a-button></a>
           <a-dropdown v-if="(record.firstStatus > 0 && record.firstStatus <= 20 && flowOff=='1') || (record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null)">
             <a class="ant-dropdown-link"><a-divider type="vertical"/>更多 <a-icon type="down"/></a>
             <a-menu slot="overlay">
@@ -240,7 +260,7 @@ import {getAction} from '@/api/manage'
 import ShipmentDetailList from './ShipmentDetailList'
 import {initDictOptions, filterMultiDictText} from '@/components/dict/JDictSelectUtil'
 import '@/assets/less/TableExpand.less'
-import {getCompanyList, backErpShipment} from '@/api/api'
+import {getCompanyList, backErpShipment, getZoneList} from '@/api/api'
 import {getShipmentTypeList} from '@/api/api'
 import {getCustomerList} from '@/api/api'
 import {autoCombination} from '@/api/api'
@@ -266,6 +286,7 @@ export default {
       selectIndex: null,
       description: '出库单管理页面',
       companyList: [],
+      zoneList: [],
       shipmentTypeList: [],
       customerList: [],
       username: '',
@@ -285,6 +306,13 @@ export default {
           dataIndex: 'code'
         },
         {
+          title: '库区',
+          align: "center",
+          dataIndex: 'zoneCode',
+          key: 'zoneCode',
+          scopedSlots: {customRender: 'zoneCode'}
+        },
+        {
           title: '货主',
           align: "center",
           dataIndex: 'companyCode',
@@ -528,6 +556,11 @@ export default {
           this.customerList = res.result
         }
       });
+      getZoneList().then((res) => {
+        if (res.success) {
+          this.zoneList = res.result
+        }
+      });
     },
     batchPrint() {
       if (this.selectedRowKeys.length <= 0) {
@@ -549,6 +582,17 @@ export default {
       })
       return actions.join('')
     },
+    solutionZoneCode(value) {
+      var actions = []
+      console.log("solutionZoneCode " + this.zoneList);
+      Object.keys(this.zoneList).some((key) => {
+        if (this.zoneList[key].code == ('' + value)) {
+          actions.push(this.zoneList[key].name)
+          return true
+        }
+      })
+      return actions.join('')
+    },
     solutionShipmentType(value) {
       var actions = []
       Object.keys(this.shipmentTypeList).some((key) => {
@@ -624,6 +668,7 @@ export default {
       let fieldList = [];
       fieldList.push({type: 'string', value: 'code', text: '出库单编码', dictCode: ''})
       fieldList.push({type: 'string', value: 'companyCode', text: '货主', dictCode: ''})
+      fieldList.push({type: 'string', value: 'zoneCode', text: '库区', dictCode: ''})
       fieldList.push({type: 'string', value: 'type', text: '出库单类型', dictCode: ''})
       fieldList.push({type: 'int', value: 'firstStatus', text: '头状态', dictCode: 'shipment_status'})
       fieldList.push({type: 'int', value: 'lastStatus', text: '尾状态', dictCode: 'shipment_status'})
diff --git a/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderModal.vue b/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderModal.vue
index 8e47e56..798dde0 100644
--- a/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderModal.vue
+++ b/ant-design-vue-jeecg/src/views/system/shipment/modules/ShipmentHeaderModal.vue
@@ -42,6 +42,21 @@
           </a-col>
 
           <a-col :span="24">
+            <a-form-model-item label="库区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="zoneCode">
+              <a-select
+                show-search
+                placeholder="请选择库区"
+                option-filter-prop="children"
+                v-model="model.zoneCode">
+                <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code">{{
+                    item.name
+                  }}
+                </a-select-option>
+              </a-select>
+            </a-form-model-item>
+          </a-col>
+
+          <a-col :span="24">
             <a-form-model-item label="客户编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="customerCode">
               <a-select
                 show-search
@@ -71,7 +86,7 @@
 
 import {httpAction} from '@/api/manage'
 import {validateDuplicateValue} from '@/utils/util'
-import {getCompanyList} from '@/api/api'
+import {getCompanyList, getZoneList} from '@/api/api'
 import {getShipmentTypeList} from '@/api/api'
 import {getCustomerList} from '@/api/api'
 
@@ -83,6 +98,7 @@ export default {
       companyList: [],
       shipmentTypeList: [],
       customerList: [],
+      zoneList: [],
       title: "操作",
       width: 800,
       visible: false,
@@ -178,6 +194,11 @@ export default {
           this.customerList = res.result
         }
       });
+      getZoneList().then((res) => {
+        if (res.success) {
+          this.zoneList = res.result
+        }
+      });
     },
 
   }
diff --git a/huaheng-wms-core/pom.xml b/huaheng-wms-core/pom.xml
index b288905..aba8680 100644
--- a/huaheng-wms-core/pom.xml
+++ b/huaheng-wms-core/pom.xml
@@ -209,8 +209,8 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
-                <!-- 启动jar包命令:包含引入lib包,开启远程调试端口7080,启动环境选择
-                    java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=7080,suspend=n -jar -Dloader.path=./lib -Dspring.profiles.active=prod huaheng-wms-core.jar -->
+                <!-- 启动jar包命令:包含引入lib包,开启远程调试端口7080,启动环境选择 java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=7080,suspend=n -jar -Dloader.path=./lib 
+                    -Dspring.profiles.active=prod huaheng-wms-core.jar -->
                 <configuration>
                     <mainClass>org.jeecg.JeecgSystemApplication</mainClass>
                     <layout>ZIP</layout>
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/impl/MobileService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/impl/MobileService.java
index 38f52a7..ce3a28e 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/impl/MobileService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/impl/MobileService.java
@@ -74,7 +74,7 @@ public class MobileService implements IMobileService {
 
         String fromLocationCode = container.getLocationCode();
         String toLocationCode = QuantityConstant.EMPTY_STRING;
-        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION);
+        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION, container.getZoneCode());
         int taskLocationRule = Integer.parseInt(value);
         if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) {
             toLocationCode = fromLocationCode;
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java
index 3893892..597348a 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java
@@ -241,7 +241,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
         if (StringUtils.isEmpty(roadWays)) {
             return roadWay;
         }
-        roadWay = getRoadWayByMaxFreeLocation(roadWays, warehouseCode);
+        roadWay = locationAllocationService.getRoadWayByMaxFreeLocation(roadWays, warehouseCode);
         return roadWay;
     }
 
@@ -278,7 +278,12 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public List<Integer> removeRoadWaysByPreLocations(List<Integer> roadWays, String warehouseCode) {
+        String value = parameterConfigurationService.getValueByCode(QuantityConstant.MAX_ROADWAY_RECEIPT);
         // 同巷道分配的库位大于等于2时,这个巷道就不能再分了
+        int maxRoadReceipt = 2;
+        if (StringUtils.isNotEmpty(value)) {
+            maxRoadReceipt = Integer.parseInt(value);
+        }
         LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
         taskHeaderLambdaQueryWrapper.lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED).ne(TaskHeader::getToLocationCode,
             QuantityConstant.EMPTY_STRING);
@@ -288,7 +293,8 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
             List<Integer> removeRoadWayList = new ArrayList<>();
             for (Integer roadWay : roadWays) {
                 int i = Collections.frequency(roadWayList, roadWay);
-                if (i >= 2) {
+                // 同巷道分配的库位大于等于2时,这个巷道就不能再分了
+                if (i >= maxRoadReceipt) {
                     removeRoadWayList.add(roadWay);
                 }
             }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
index 2a87d9b..f85ca29 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
@@ -109,8 +109,7 @@ public class WcsServiceImpl implements WcsService {
     @Transactional(rollbackFor = Exception.class)
     @OperationLog(bizId = "''", bizType = "'入库单追踪'", tag = "'详情分配库位'", extra = "#extraJsonString",
         msg = "'任务ID:' + #warecellDomain.getTaskNo() + ',库位编码:' + #locationCode", recordReturnValue = true)
-    @OperationLog(bizId = "#taskHeader == null ? '' : #taskHeader.getId()", bizType = "'任务追踪'", tag = "'分配库位'",
-        msg = "'任务类型:' + #taskHeader.getTaskType() + ',起始库位:' + #taskHeader.getFromLocationCode() + ',目标库位:' + #taskHeader.getToLocationCode() + ',容器编码:' + #taskHeader.getContainerCode()",
+    @OperationLog(bizId = "#taskHeader == null ? '' : #taskHeader.getId()", bizType = "'任务追踪'", tag = "'分配库位'", msg = "'目标库位:' + #taskHeader.getToLocationCode()",
         recordReturnValue = true)
     public Result warecellAllocation(WarecellDomain warecellDomain) {
         log.info("开始分配库位");
@@ -159,7 +158,7 @@ public class WcsServiceImpl implements WcsService {
         if (containerType == null) {
             return Result.error("分配库位时,托盘类型为空,托盘类型值为" + containerTypeCode);
         }
-        String locationTypeCodes = containerType.getLocationType();
+        List<String> locationTypeCodes = containerType.getLocationTypes();
         // 查询满足条件的库位类型
         LambdaQueryWrapper<LocationType> locationTypeLambdaQueryWrapper = Wrappers.lambdaQuery();
         locationTypeLambdaQueryWrapper.in(LocationType::getCode, locationTypeCodes).eq(LocationType::getWarehouseCode, warehouseCode);
@@ -170,13 +169,14 @@ public class WcsServiceImpl implements WcsService {
         int highHeight = Float.valueOf(height).intValue();
         List<String> locationTypeCodeList = locationTypeList.stream().map(t -> t.getCode()).collect(Collectors.toList());
         LambdaQueryWrapper<LocationHigh> locationHighLambdaQueryWrapper = Wrappers.lambdaQuery();
-        locationHighLambdaQueryWrapper.eq(LocationHigh::getHighLevel, highHeight).in(LocationHigh::getLocationTypeCode, locationTypeCodeList);
+        locationHighLambdaQueryWrapper.eq(LocationHigh::getHighLevel, highHeight).in(LocationHigh::getLocationTypeCode, locationTypeCodeList)
+            .eq(LocationHigh::getZoneCode, zoneCode);
         LocationHigh locationHigh = locationHighService.getOne(locationHighLambdaQueryWrapper);
         if (locationHigh == null) {
             return Result.error("分配库位时,高度不匹配,WCS给的高度值" + highHeight + "不在WMS系统配置范围内");
         }
         int high = locationHigh.getHigh();
-        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_ALLOCATION);
+        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_ALLOCATION, zoneCode);
         if (StringUtils.isEmpty(value)) {
             return Result.error("分配库位时, 未绑定定位规则");
         }
@@ -289,7 +289,7 @@ public class WcsServiceImpl implements WcsService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     @OperationLog(bizId = "#taskHeader == null ? '' : #taskHeader.getId()", bizType = "'任务追踪'", tag = "'任务下发'", extra = "''",
-        msg = "'任务类型:' + #taskHeader.getTaskType() + ',起始库位:' + #taskHeader.getFromLocationCode() + ',目标库位:' + #taskHeader.getToLocationCode() + ',容器编码:' + #taskHeader.getContainerCode()",
+        msg = "'任务类型:' + #taskHeader.getTaskType() + ',起始库位:' + #taskHeader.getFromLocationCode() + ',容器编码:' + #taskHeader.getContainerCode()",
         recordReturnValue = true)
     public Result wcsTaskAssign(TaskHeader taskHeader) {
         if (taskHeader == null) {
@@ -425,13 +425,13 @@ public class WcsServiceImpl implements WcsService {
             throw new JeecgBootException("下发任务时,容器没有找到");
         }
 
-        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_CONNECT_WCS);
+        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_CONNECT_WCS, container.getZoneCode());
         if (StringUtils.isEmpty(value)) {
             throw new JeecgBootException("下发任务时,没有找到连接WCS的数据配置");
         }
         int connectWCS = Integer.parseInt(value);
         if (connectWCS == QuantityConstant.RULE_WCS_CONNECT) {
-            String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_WCS_TASK_ASSIGN);
+            String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_WCS_TASK_ASSIGN, warehouseCode, container.getZoneCode());
             wcsTask = switchTaskTypeToWcs(wcsTask);
             String jsonParam = JSON.toJSONString(wcsTask);
             System.out.println(jsonParam);
@@ -702,8 +702,7 @@ public class WcsServiceImpl implements WcsService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     @OperationLog(bizId = "#taskHeader == null ? '' : #taskHeader.getId()", bizType = "'任务追踪'", tag = "'到达站台'", extra = "''",
-        msg = "'任务类型:' + #taskHeader.getTaskType() + ',起始库位:' + #taskHeader.getFromLocationCode() + ',目标库位:' + #taskHeader.getToLocationCode() + ',容器编码:' + #taskHeader.getContainerCode() + ',目标出入口:' + #taskHeader.getToPortCode()",
-        recordReturnValue = true)
+        msg = "'目标出入口:' + #taskHeader.getToPortCode()", recordReturnValue = true)
     public Result arrivedNotice(String taskNo, String port) {
         TaskHeader taskHeader = taskHeaderService.getById(taskNo);
         if (taskHeader == null) {
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/address/service/impl/AddressServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/address/service/impl/AddressServiceImpl.java
index 8ab0738..9fa1ceb 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/address/service/impl/AddressServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/address/service/impl/AddressServiceImpl.java
@@ -36,7 +36,7 @@ public class AddressServiceImpl extends ServiceImpl<AddressMapper, Address> impl
             .eq(!StringUtils.isEmpty(zoneCode), Address::getZoneCode, zoneCode);
         Address address = getOne(addressLambdaQueryWrapper);
         if (address == null) {
-            return null;
+            return getUrlByParam(param);
         }
         return address.getUrl();
     }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java
index 71453eb..0bd6629 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java
@@ -53,6 +53,7 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container
     public Result<?> batchAddContainers(Container container, int number) {
         String containerTypeCode = container.getContainerTypeCode();
         String warehouseCode = container.getWarehouseCode();
+        String zoneCode = container.getZoneCode();
         int startNumber = getStartNumber(containerTypeCode, container.getWarehouseCode());
         List<Container> containerList = new ArrayList<>();
         for (int i = 0; i < number; i++) {
@@ -61,6 +62,7 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container
             addcontainer.setContainerTypeCode(containerTypeCode);
             String code = String.format("%s%05d", containerTypeCode, startNumber);
             addcontainer.setCode(code);
+            addcontainer.setZoneCode(zoneCode);
             addcontainer.setStatus(QuantityConstant.STATUS_CONTAINER_EMPTY);
             addcontainer.setFillStatus(QuantityConstant.STATUS_CONTAINER_FILL_EMPTY);
             addcontainer.setWarehouseCode(warehouseCode);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationHigh/entity/LocationHigh.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationHigh/entity/LocationHigh.java
index 4ce203f..18dd2f5 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationHigh/entity/LocationHigh.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationHigh/entity/LocationHigh.java
@@ -1,19 +1,18 @@
 package org.jeecg.modules.wms.config.locationHigh.entity;
 
 import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
 import java.util.Date;
-import java.math.BigDecimal;
+
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
 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.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
@@ -60,6 +59,9 @@ public class LocationHigh implements Serializable {
     @ApiModelProperty(value = "高低位")
     @Dict(dicCode = "high_status")
     private Integer high;
+    @Excel(name = "库区编码", width = 15)
+    @ApiModelProperty(value = "库区编码")
+    private String zoneCode;
     /** 备用字段 */
     @Excel(name = "备用字段", width = 15)
     @ApiModelProperty(value = "备用字段")
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/materialWarning/entity/MaterialLevelAlarm.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/materialWarning/entity/MaterialLevelAlarm.java
index ce30fd4..e8516f8 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/materialWarning/entity/MaterialLevelAlarm.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/materialWarning/entity/MaterialLevelAlarm.java
@@ -48,17 +48,16 @@ public class MaterialLevelAlarm extends MaterialWarning {
 
     @Override
     public String toString() {
-        String str = getMaterialName() + "  " + getMaterialCode() + " 库存数=" + qtySum + " ";
+        String str = "<ul>";
         if (inLower) {
-            str = str + " < " + getLower();
+            str = str +  "<li><b>" + getMaterialName() + "</b> &nbsp;&nbsp;" + getMaterialCode() + " 库存数" + getQtySum() + "&nbsp;&nbsp;低于下限预警值" + getLower() + "</li>";
         } else if (inUpper) {
-            str = str + " > " + getUpper();
+            str = str +  "<li><b>" + getMaterialName() + "</b> &nbsp;&nbsp;" + getMaterialCode() + " 库存数" + getQtySum() + "&nbsp;&nbsp;高于上限预警值" + getUpper() + "</li>";
         } else if (inMin) {
-            str = str + " < " + getMin();
+            str = str +  "<li><b>" + getMaterialName() + "</b> &nbsp;&nbsp;" + getMaterialCode() + " 库存数" + getQtySum() + "&nbsp;&nbsp;低于最低值" + getMin() + "</li>";
         } else if (inMax) {
-            str = str + " > " + getMax();
+            str = str +  "<li><b>" + getMaterialName() + "</b> &nbsp;&nbsp;" + getMaterialCode() + " 库存数" + getQtySum() + "&nbsp;&nbsp;超过最高值" + getMax() + "</li>";
         }
-
-        return str;
+        return str + "</ul>";
     }
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/materialWarning/entity/MaterialWarning.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/materialWarning/entity/MaterialWarning.java
index a9ed765..d42aabd 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/materialWarning/entity/MaterialWarning.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/materialWarning/entity/MaterialWarning.java
@@ -74,11 +74,11 @@ public class MaterialWarning implements Serializable {
     /** 上限预警值 */
     @Excel(name = "上限预警值", width = 15)
     @ApiModelProperty(value = "上限预警值")
-    private Integer upper;
+    private int upper;
     /** 下限预警值 */
     @Excel(name = "下限预警值", width = 15)
     @ApiModelProperty(value = "下限预警值")
-    private Integer lower;
+    private int lower;
     /** 备注 */
     @Excel(name = "备注", width = 15)
     @ApiModelProperty(value = "备注")
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/entity/ParameterConfiguration.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/entity/ParameterConfiguration.java
index 39c98b2..e488696 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/entity/ParameterConfiguration.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/entity/ParameterConfiguration.java
@@ -1,19 +1,17 @@
 package org.jeecg.modules.wms.config.parameterConfiguration.entity;
 
 import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
 import java.util.Date;
-import java.math.BigDecimal;
+
+import org.jeecgframework.poi.excel.annotation.Excel;
+
 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.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
@@ -47,6 +45,10 @@ public class ParameterConfiguration implements Serializable {
     @Excel(name = "参数键值", width = 15)
     @ApiModelProperty(value = "参数键值")
     private String value;
+    /** 库区 */
+    @Excel(name = "库区", width = 15)
+    @ApiModelProperty(value = "库区")
+    private String zoneCode;
     /** 备注 */
     @Excel(name = "备注", width = 15)
     @ApiModelProperty(value = "备注")
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/service/IParameterConfigurationService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/service/IParameterConfigurationService.java
index 02711c0..3a26f53 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/service/IParameterConfigurationService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/service/IParameterConfigurationService.java
@@ -14,5 +14,7 @@ public interface IParameterConfigurationService extends IService<ParameterConfig
 
     String getValueByCode(String code);
 
+    String getValueByCode(String code, String zoneCode);
+
     int getValueIntByCode(String code);
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/service/impl/ParameterConfigurationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/service/impl/ParameterConfigurationServiceImpl.java
index e00d270..a8ee222 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/service/impl/ParameterConfigurationServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/service/impl/ParameterConfigurationServiceImpl.java
@@ -1,8 +1,11 @@
 package org.jeecg.modules.wms.config.parameterConfiguration.service.impl;
 
+import javax.annotation.Resource;
+
 import org.jeecg.modules.wms.config.parameterConfiguration.entity.ParameterConfiguration;
 import org.jeecg.modules.wms.config.parameterConfiguration.mapper.ParameterConfigurationMapper;
 import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService;
+import org.jeecg.utils.constant.QuantityConstant;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -18,10 +21,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Service
 public class ParameterConfigurationServiceImpl extends ServiceImpl<ParameterConfigurationMapper, ParameterConfiguration> implements IParameterConfigurationService {
 
+    @Resource
+    IParameterConfigurationService parameterConfigurationService;
+
     @Override
     public String getValueByCode(String code) {
         LambdaQueryWrapper<ParameterConfiguration> parameterConfigurationLambdaQueryWrapper = Wrappers.lambdaQuery();
-        parameterConfigurationLambdaQueryWrapper.eq(ParameterConfiguration::getCode, code);
+        parameterConfigurationLambdaQueryWrapper.eq(ParameterConfiguration::getCode, code).eq(ParameterConfiguration::getZoneCode, QuantityConstant.EMPTY_STRING);
         ParameterConfiguration parameterConfiguration = getOne(parameterConfigurationLambdaQueryWrapper);
         if (parameterConfiguration == null) {
             return null;
@@ -31,6 +37,18 @@ public class ParameterConfigurationServiceImpl extends ServiceImpl<ParameterConf
     }
 
     @Override
+    public String getValueByCode(String code, String zoneCode) {
+        LambdaQueryWrapper<ParameterConfiguration> parameterConfigurationLambdaQueryWrapper = Wrappers.lambdaQuery();
+        parameterConfigurationLambdaQueryWrapper.eq(ParameterConfiguration::getCode, code).eq(ParameterConfiguration::getZoneCode, zoneCode);
+        ParameterConfiguration parameterConfiguration = getOne(parameterConfigurationLambdaQueryWrapper);
+        if (parameterConfiguration == null) {
+            return parameterConfigurationService.getValueByCode(code);
+        }
+        String value = parameterConfiguration.getValue();
+        return value;
+    }
+
+    @Override
     public int getValueIntByCode(String code) {
         LambdaQueryWrapper<ParameterConfiguration> parameterConfigurationLambdaQueryWrapper = Wrappers.lambdaQuery();
         parameterConfigurationLambdaQueryWrapper.eq(ParameterConfiguration::getCode, code);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java
index 28f1a93..a954f5c 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java
@@ -250,7 +250,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
         }
 
         List<Integer> shipmentContainerHeaderIdList =
-            shipmentContainerDetailList.stream().map(ShipmentContainerDetail::getShipmentContainerId).collect(Collectors.toList());
+            shipmentContainerDetailList.stream().map(ShipmentContainerDetail::getShipmentContainerId).distinct().collect(Collectors.toList());
         long shipmentOrder = System.currentTimeMillis();
         int sequenceNumber = shipmentContainerHeaderIdList.size();
         int sequence = 0;
@@ -336,7 +336,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
         }
 
         List<Integer> shipmentContainerHeaderIdList =
-            shipmentContainerDetailList.stream().map(ShipmentContainerDetail::getShipmentContainerId).collect(Collectors.toList());
+            shipmentContainerDetailList.stream().map(ShipmentContainerDetail::getShipmentContainerId).distinct().collect(Collectors.toList());
         long shipmentOrder = System.currentTimeMillis();
         int sequenceNumber = shipmentContainerHeaderIdList.size();
         int sequence = 0;
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/MaterialLevelAlarmTask.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/MaterialLevelAlarmTask.java
index 32f7d72..c106e6f 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/MaterialLevelAlarmTask.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/MaterialLevelAlarmTask.java
@@ -77,7 +77,7 @@ public class MaterialLevelAlarmTask implements Job {
         String msg = String.join("\n", list);
 
         SysAnnouncement sysAnnouncement = new SysAnnouncement();
-        String title = "物料水位预警" + DateUtils.now();
+        String title = "物料水位预警";
         sysAnnouncement.setTitile(title);
         sysAnnouncement.setMsgContent(msg);
         sysAnnouncement.setEndTime(DateUtil.offsetDay(new Date(), 1));
@@ -86,6 +86,7 @@ public class MaterialLevelAlarmTask implements Job {
         sysAnnouncement.setMsgCategory(CommonConstant.MSG_CATEGORY_2);
         sysAnnouncement.setMsgType(CommonConstant.MSG_TYPE_ALL);
         sysAnnouncement.setMsgAbstract(title);
+        sysAnnouncement.setSender("WMS");
         sysAnnouncement.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
         sysAnnouncement.setSendStatus(CommonSendStatus.PUBLISHED_STATUS_1);
         sysAnnouncementService.saveAnnouncement(sysAnnouncement);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
index 802a106..eb70b13 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
@@ -11,6 +11,7 @@ import javax.annotation.Resource;
 
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.wms.config.container.entity.Container;
 import org.jeecg.modules.wms.config.container.service.IContainerService;
 import org.jeecg.modules.wms.config.location.service.ILocationService;
 import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService;
@@ -331,7 +332,19 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
         if (receiptContainerStatus != QuantityConstant.RECEIPT_CONTAINER_TASK) {
             throw new JeecgBootException("取消入库任务时, 任务状态不为生成任务状态");
         }
-        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION);
+        String containerCode = taskHeader.getContainerCode();
+        String warehouseCode = taskHeader.getWarehouseCode();
+        if (StringUtils.isEmpty(containerCode)) {
+            throw new JeecgBootException("取消入库任务时, 容器编码为空");
+        }
+        if (StringUtils.isEmpty(warehouseCode)) {
+            throw new JeecgBootException("取消入库任务时, 仓库编码为空");
+        }
+        Container container = containerService.getContainerByCode(containerCode, warehouseCode);
+        if (container == null) {
+            throw new JeecgBootException("取消入库任务时, 容器为空");
+        }
+        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION, container.getZoneCode());
         if (StringUtils.isEmpty(value)) {
             throw new JeecgBootException("取消入库任务时, 没有获取到配置属性");
         }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/service/impl/ReceiveServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/service/impl/ReceiveServiceImpl.java
index 38f6c03..d85cb5f 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/service/impl/ReceiveServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/service/impl/ReceiveServiceImpl.java
@@ -174,7 +174,7 @@ public class ReceiveServiceImpl extends ServiceImpl<ReceiveMapper, Receive> impl
             receiptContainerHeader.setTaskType(taskType);
             receiptContainerHeader.setFromLocationCode(fromLocationCode);
             if (taskType == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT) {
-                String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION);
+                String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION, container.getZoneCode());
                 int taskLocationRule = Integer.parseInt(value);
                 if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) {
                     receiptContainerHeader.setToLocationCode(fromLocationCode);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
index ca983e0..95fffb1 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
@@ -98,6 +98,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
         String companyCode = shipmentDetail.getCompanyCode();
         String materialCode = shipmentDetail.getMaterialCode();
         String inventoryStatus = shipmentDetail.getInventoryStatus();
+        String zoneCode = shipmentDetail.getZoneCode();
         if (StringUtils.isEmpty(warehouseCode)) {
             throw new JeecgBootException("寻找库存详情时,出库详情没有仓库编码");
         }
@@ -114,6 +115,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
         inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getWarehouseCode, warehouseCode).eq(InventoryDetail::getCompanyCode, companyCode)
             .eq(InventoryDetail::getMaterialCode, materialCode).eq(InventoryDetail::getInventoryStatus, inventoryStatus)
             .eq(InventoryDetail::getEnable, QuantityConstant.INVENTORY_DETAIL_STATUS_ENABLE)
+            .eq(StringUtils.isNotEmpty(zoneCode), InventoryDetail::getZoneCode, zoneCode)
             .eq(InventoryDetail::getContainerStatus, QuantityConstant.STATUS_CONTAINER_EMPTY);
         List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper);
         return inventoryDetailList;
@@ -394,7 +396,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
                 }
             }
         } else {
-            String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION);
+            String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION, container.getZoneCode());
             if (StringUtils.isEmpty(value)) {
                 throw new JeecgBootException("取消入库任务时, 没有获取到配置属性");
             }
@@ -514,6 +516,10 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
         if (location == null) {
             return Result.error("生成出库任务时, 库位编码" + fromLocationCode + "没有找到库位");
         }
+        Container container = containerService.getContainerByCode(containerCode, warehouseCode);
+        if (container == null) {
+            throw new JeecgBootException("生成出库任务时, 容器为空");
+        }
         if (location.getRowFlag() == QuantityConstant.ROW_OUT) {
             Location location1 = locationService.getNear(location);
             if (location1 != null) {
@@ -542,7 +548,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
         } else if (inventoryTotal.compareTo(shipmentTotal) > 0) {
             taskType = QuantityConstant.TASK_TYPE_SORTINGSHIPMENT;
         }
-        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_SHIPMENT_TASK);
+        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_SHIPMENT_TASK, container.getZoneCode());
         int shipmentTaskRule = Integer.parseInt(value);
         if (shipmentTaskRule == QuantityConstant.RULE_TASK_PICK_SHIPMENT) {
             taskType = QuantityConstant.TASK_TYPE_SORTINGSHIPMENT;
@@ -618,7 +624,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
         if (!success) {
             throw new JeecgBootException("生成出库任务时, 创建任务详情失败");
         }
-        value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION);
+        value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION, container.getZoneCode());
         int taskLocationRule = Integer.parseInt(value);
         int shipmentContainerHeaderId = shipmentContainerHeader.getId();
         shipmentContainerHeader = new ShipmentContainerHeader();
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java
index ed33cfd..5e4ba57 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java
@@ -48,6 +48,10 @@ public class ShipmentDetail implements Serializable {
     @Excel(name = "仓库编码", width = 15)
     @ApiModelProperty(value = "仓库编码")
     private String warehouseCode;
+    /** 库区 */
+    @Excel(name = "库区", width = 15)
+    @ApiModelProperty(value = "库区")
+    private String zoneCode;
     /** 货主编码 */
     @Excel(name = "货主编码", width = 15)
     @ApiModelProperty(value = "货主编码")
@@ -72,10 +76,14 @@ public class ShipmentDetail implements Serializable {
     @Excel(name = "单据数量", width = 15)
     @ApiModelProperty(value = "单据数量")
     private java.math.BigDecimal qty;
-    /** 已出数量 */
-    @Excel(name = "已出数量", width = 15)
-    @ApiModelProperty(value = "已出数量")
+    /** 配盘数量 */
+    @Excel(name = "配盘数量", width = 15)
+    @ApiModelProperty(value = "配盘数量")
     private java.math.BigDecimal taskQty;
+    /** 出库数量 */
+    @Excel(name = "出库数量", width = 15)
+    @ApiModelProperty(value = "出库数量")
+    private java.math.BigDecimal shipmentQty;
     /** 可出数量 */
     @ApiModelProperty(value = "可出数量")
     @TableField(exist = false)
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentHeader.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentHeader.java
index 76e9618..ae97ae9 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentHeader.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentHeader.java
@@ -43,6 +43,10 @@ public class ShipmentHeader implements Serializable {
     @Excel(name = "仓库编码", width = 15)
     @ApiModelProperty(value = "仓库编码")
     private String warehouseCode;
+    /** 库区 */
+    @Excel(name = "库区", width = 15)
+    @ApiModelProperty(value = "库区")
+    private String zoneCode;
     /** 货主编码 */
     @Excel(name = "货主编码", width = 15)
     @ApiModelProperty(value = "货主编码")
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java
index 315de77..24ef246 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java
@@ -71,6 +71,7 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper,
         String warehouseCode = shipmentHeader.getWarehouseCode();
         String companyCode = shipmentHeader.getCompanyCode();
         String materialCode = shipmentDetail.getMaterialCode();
+        String zoneCode = shipmentHeader.getZoneCode();
         Material material = materialService.getMaterialByCode(materialCode);
         if (material == null) {
             return Result.error("添加失败,没有找到物料信息," + materialCode);
@@ -85,6 +86,7 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper,
         shipmentDetail.setMaterialSpec(materialSpec);
         shipmentDetail.setMaterialUnit(materialUnit);
         shipmentDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD);
+        shipmentDetail.setZoneCode(zoneCode);
         boolean success = shipmentDetailService.save(shipmentDetail);
         if (!success) {
             throw new JeecgBootException("添加失败, 保存出库单详情的时候报错");
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 4661a15..6a06e1a 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
@@ -317,7 +317,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         }
         String fromLocationCode = container.getLocationCode();
         String toLocationCode = QuantityConstant.EMPTY_STRING;
-        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION);
+        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION, container.getZoneCode());
         int taskLocationRule = Integer.parseInt(value);
         if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) {
             toLocationCode = fromLocationCode;
@@ -873,6 +873,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         }
         // 保存历史任务表
         taskHeaderHistoryService.saveById(taskHeader.getId());
+
         if (!taskHeaderService.removeById(taskId)) {
             throw new JeecgBootException("取消任务失败, 删除任务失败");
         }
@@ -1258,7 +1259,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         if (StringUtils.isEmpty(fromLocationCode)) {
             return Result.error("完成出库任务" + taskHeader.getId() + "没有起始库位,执行中止");
         }
-        if (StringUtils.isEmpty(toLocationCode) && taskType == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT) {
+        if (StringUtils.isEmpty(toLocationCode) && (taskType == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT)) {
             return Result.error("完成出库任务,任务" + taskHeader.getId() + "没有目的库位,执行中止");
         }
         InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode);
@@ -1284,18 +1285,21 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             }
             taskDetail.setShipmentCode(shipmentDetail.getShipmentCode());
             int shipmentDetailId = shipmentDetail.getId();
+            BigDecimal shipmentQty = shipmentDetail.getShipmentQty();
+            shipmentQty = shipmentQty.add(taskDetail.getQty());
             int status = QuantityConstant.SHIPMENT_HEADER_COMPLETED;
-            if (shipmentDetail.getQty().compareTo(shipmentDetail.getTaskQty()) == 0) {
+            if (shipmentDetail.getQty().compareTo(shipmentQty) == 0) {
                 status = QuantityConstant.SHIPMENT_HEADER_COMPLETED;
-            } else if (shipmentDetail.getQty().compareTo(shipmentDetail.getTaskQty()) > 0) {
+            } else if (shipmentDetail.getQty().compareTo(shipmentQty) > 0) {
                 status = QuantityConstant.SHIPMENT_HEADER_OFF_SHELF;
-            } else if (shipmentDetail.getQty().compareTo(shipmentDetail.getTaskQty()) < 0) {
-                throw new JeecgBootException("完成出库任务时, 出库单 单据数量不能小于配盘数量");
+            } else if (shipmentDetail.getQty().compareTo(shipmentQty) < 0) {
+                throw new JeecgBootException("完成出库任务时, 出库单 单据数量不能小于出库数量");
             }
             shipmentDetailList.add(shipmentDetail);
             ShipmentDetail updateStatusShipmentDetail = new ShipmentDetail();
             updateStatusShipmentDetail.setId(shipmentDetailId);
             updateStatusShipmentDetail.setStatus(status);
+            updateStatusShipmentDetail.setShipmentQty(shipmentQty);
             updateStatusShipmentDetailList.add(updateStatusShipmentDetail);
             InventoryDetail inventoryDetail = inventoryDetailService.getById(taskDetail.getFromInventoryDetailId());
             if (inventoryDetail == null) {
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeaderHistory/service/impl/TaskHeaderHistoryServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeaderHistory/service/impl/TaskHeaderHistoryServiceImpl.java
index 305806b..ec281f7 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeaderHistory/service/impl/TaskHeaderHistoryServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeaderHistory/service/impl/TaskHeaderHistoryServiceImpl.java
@@ -1,9 +1,12 @@
 package org.jeecg.modules.wms.task.taskHeaderHistory.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+import javax.annotation.Resource;
+
 import org.jeecg.common.exception.JeecgBootException;
-import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail;
-import org.jeecg.modules.wms.receipt.receiptHeaderHistory.entity.ReceiptDetailHistory;
 import org.jeecg.modules.wms.task.taskHeader.entity.TaskDetail;
 import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader;
 import org.jeecg.modules.wms.task.taskHeader.service.ITaskDetailService;
@@ -15,100 +18,98 @@ import org.jeecg.modules.wms.task.taskHeaderHistory.mapper.TaskHeaderHistoryMapp
 import org.jeecg.modules.wms.task.taskHeaderHistory.service.ITaskDetailHistoryService;
 import org.jeecg.modules.wms.task.taskHeaderHistory.service.ITaskHeaderHistoryService;
 import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import javax.annotation.Resource;
-import java.io.Serializable;
-import java.util.List;
-import java.util.Collection;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 /**
  * @Description: task_header_history
- * @Author: jeecg-boot
- * @Date:   2023-09-14
- * @Version: V1.0
+ * @Author:      jeecg-boot
+ * @Date:        2023-09-14
+ * @Version:     V1.0
  */
 @Service
 public class TaskHeaderHistoryServiceImpl extends ServiceImpl<TaskHeaderHistoryMapper, TaskHeaderHistory> implements ITaskHeaderHistoryService {
 
-	@Autowired
-	private TaskHeaderHistoryMapper taskHeaderHistoryMapper;
-	@Autowired
-	private TaskDetailHistoryMapper taskDetailHistoryMapper;
-	@Resource
-	private ITaskHeaderService taskHeaderService;
-	@Resource
-	private ITaskDetailService taskDetailService;
-	@Resource
-	private ITaskDetailHistoryService taskDetailHistoryService;
-
+    @Autowired
+    private TaskHeaderHistoryMapper taskHeaderHistoryMapper;
+    @Autowired
+    private TaskDetailHistoryMapper taskDetailHistoryMapper;
+    @Resource
+    private ITaskHeaderService taskHeaderService;
+    @Resource
+    private ITaskDetailService taskDetailService;
+    @Resource
+    private ITaskDetailHistoryService taskDetailHistoryService;
 
-	@Override
-	@Transactional
-	public void saveMain(TaskHeaderHistory taskHeaderHistory, List<TaskDetailHistory> taskDetailHistoryList) {
-		taskHeaderHistoryMapper.insert(taskHeaderHistory);
-		if(taskDetailHistoryList!=null && taskDetailHistoryList.size()>0) {
-			for(TaskDetailHistory entity:taskDetailHistoryList) {
-				//外键设置
-				entity.setTaskHeaderId(taskHeaderHistory.getId());
-				taskDetailHistoryMapper.insert(entity);
-			}
-		}
-	}
+    @Override
+    @Transactional
+    public void saveMain(TaskHeaderHistory taskHeaderHistory, List<TaskDetailHistory> taskDetailHistoryList) {
+        taskHeaderHistoryMapper.insert(taskHeaderHistory);
+        if (taskDetailHistoryList != null && taskDetailHistoryList.size() > 0) {
+            for (TaskDetailHistory entity : taskDetailHistoryList) {
+                // 外键设置
+                entity.setTaskHeaderId(taskHeaderHistory.getId());
+                taskDetailHistoryMapper.insert(entity);
+            }
+        }
+    }
 
-	@Override
-	@Transactional
-	public void updateMain(TaskHeaderHistory taskHeaderHistory,List<TaskDetailHistory> taskDetailHistoryList) {
-		taskHeaderHistoryMapper.updateById(taskHeaderHistory);
+    @Override
+    @Transactional
+    public void updateMain(TaskHeaderHistory taskHeaderHistory, List<TaskDetailHistory> taskDetailHistoryList) {
+        taskHeaderHistoryMapper.updateById(taskHeaderHistory);
 
-		//1.先删除子表数据
-		//taskDetailHistoryMapper.deleteByMainId(taskHeaderHistory.getId());
+        // 1.先删除子表数据
+        // taskDetailHistoryMapper.deleteByMainId(taskHeaderHistory.getId());
 
-		//2.子表数据重新插入
-		if(taskDetailHistoryList!=null && taskDetailHistoryList.size()>0) {
-			for(TaskDetailHistory entity:taskDetailHistoryList) {
-				//外键设置
-				entity.setTaskHeaderId(taskHeaderHistory.getId());
-				taskDetailHistoryMapper.insert(entity);
-			}
-		}
-	}
+        // 2.子表数据重新插入
+        if (taskDetailHistoryList != null && taskDetailHistoryList.size() > 0) {
+            for (TaskDetailHistory entity : taskDetailHistoryList) {
+                // 外键设置
+                entity.setTaskHeaderId(taskHeaderHistory.getId());
+                taskDetailHistoryMapper.insert(entity);
+            }
+        }
+    }
 
-	@Override
-	@Transactional
-	public void delMain(String id) {
-		taskDetailHistoryMapper.deleteByMainId(id);
-		taskHeaderHistoryMapper.deleteById(id);
-	}
+    @Override
+    @Transactional
+    public void delMain(String id) {
+        taskDetailHistoryMapper.deleteByMainId(id);
+        taskHeaderHistoryMapper.deleteById(id);
+    }
 
-	@Override
-	@Transactional
-	public void delBatchMain(Collection<? extends Serializable> idList) {
-		for(Serializable id:idList) {
-			taskDetailHistoryMapper.deleteByMainId(id.toString());
-			taskHeaderHistoryMapper.deleteById(id);
-		}
-	}
+    @Override
+    @Transactional
+    public void delBatchMain(Collection<? extends Serializable> idList) {
+        for (Serializable id : idList) {
+            taskDetailHistoryMapper.deleteByMainId(id.toString());
+            taskHeaderHistoryMapper.deleteById(id);
+        }
+    }
 
-	@Override
-	public void saveById(Integer id) {
-		TaskHeader taskHeader=taskHeaderService.getById(id);
-		TaskHeaderHistory taskHeaderHistory=new TaskHeaderHistory();
-		BeanUtils.copyProperties(taskHeader,taskHeaderHistory);
-		taskHeaderHistoryMapper.insert(taskHeaderHistory);
-		List<TaskDetail>taskDetailList=taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getTaskHeaderId, taskHeader.getId()));
-		if (!CollectionUtils.isEmpty(taskDetailList)) {
-			for (TaskDetail detail : taskDetailList) {
-				TaskDetailHistory taskDetailHistory = new TaskDetailHistory();
-				BeanUtils.copyProperties(detail, taskDetailHistory);
-				if (!taskDetailHistoryService.save(taskDetailHistory)) {
-					throw new JeecgBootException("批量新增失败");
-				}
-			}
-		}
+    @Override
+    @Transactional
+    public void saveById(Integer id) {
+        TaskHeader taskHeader = taskHeaderService.getById(id);
+        TaskHeaderHistory taskHeaderHistory = new TaskHeaderHistory();
+        BeanUtils.copyProperties(taskHeader, taskHeaderHistory);
+        taskHeaderHistoryMapper.insert(taskHeaderHistory);
+        List<TaskDetail> taskDetailList = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getTaskHeaderId, taskHeader.getId()));
+        if (!CollectionUtils.isEmpty(taskDetailList)) {
+            for (TaskDetail detail : taskDetailList) {
+                TaskDetailHistory taskDetailHistory = new TaskDetailHistory();
+                BeanUtils.copyProperties(detail, taskDetailHistory);
+                if (!taskDetailHistoryService.save(taskDetailHistory)) {
+                    throw new JeecgBootException("批量新增失败");
+                }
+            }
+        }
 
-	}
+    }
 }
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 cbdda51..8b7c4b4 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
@@ -484,6 +484,7 @@ public class QuantityConstant {
     public static final String RULE_CALL_BOX_ALLOW_EMPTY = "callBoxAllowEmpty";
     public static final String DOUBLE_FORK_RESERVE_LOCATION = "doubleForkReserveLocation";
     public static final String DOUBLE_FORK_SEARCH_LOCATION = "doubleForkSearchLocation";
+    public static final String MAX_ROADWAY_RECEIPT = "maxRoadWayReceipt";
     public static final String WAREHOUSING_WEIGHING = "warehousingWeighing";
     public static final String EXCEPTION_TO_CACHE = "exceptionToCache";
     public static final String CONTAINER_SPEC = "containerSpec";
diff --git a/pom.xml b/pom.xml
index e0ce40c..cd46248 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,17 +12,16 @@
     <groupId>com.huaheng.wms</groupId>
     <artifactId>huaheng-wms4</artifactId>
     <version>4.0.1</version>
-    
+
     <packaging>pom</packaging>
 
     <name>huaheng-wms4</name>
     <description>huaheng wms project for Spring Boot</description>
 
     <modules>
-        <module>huaheng-wms-core</module>
         <module>ant-design-vue-jeecg</module>
+        <module>huaheng-wms-core</module>
     </modules>
-
     <repositories>
         <repository>
             <id>aliyun</id>