From 69e085fd101062814ac8d5413dacb87cc9a737e8 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 27 九月 2024 10:37:17 +0800
Subject: [PATCH] #库存冻结

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java                |   18 ++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java          |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java            |    3 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocDetlFreezeParam.java   |   14 +
 zy-asrs-admin/src/views/system/role/index.vue                                         |    7 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java                    |   18 ++
 zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue                          |   11 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java      |   10 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java |    2 
 zy-asrs-admin/src/views/loc/locDetl/index.vue                                         |   10 +
 zy-asrs-admin/src/views/loc/locFreeze/index.vue                                       |  305 ++++++++++++++++++++++++++++++++++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java                  |    4 
 zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml                      |   21 ++
 zy-asrs-admin/src/components/locDetl/show.vue                                         |    7 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java   |   32 +++
 15 files changed, 459 insertions(+), 5 deletions(-)

diff --git a/zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue b/zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue
index 5ca33c8..fe46277 100644
--- a/zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue
+++ b/zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue
@@ -85,6 +85,13 @@
         ...getColumnSearchProps('anfme'),
     },
     {
+        title: formatMessage('db.man_loc_detl.freeze', '鏄惁鍐荤粨'),
+        dataIndex: 'freeze$',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('freeze$'),
+    },
+    {
         title: formatMessage('db.man_loc_detl.status', '鐘舵��'),
         dataIndex: 'status$',
         width: 140,
@@ -224,8 +231,8 @@
     getPage()
 }
 
-watch(reload,(newVal,oldVal) => {
-    if(reload.value) {
+watch(reload, (newVal, oldVal) => {
+    if (reload.value) {
         reloadPage()
     }
 })
diff --git a/zy-asrs-admin/src/components/locDetl/show.vue b/zy-asrs-admin/src/components/locDetl/show.vue
index 794ad29..d19ea0b 100644
--- a/zy-asrs-admin/src/components/locDetl/show.vue
+++ b/zy-asrs-admin/src/components/locDetl/show.vue
@@ -72,6 +72,13 @@
         ...getColumnSearchProps('anfme'),
     },
     {
+        title: formatMessage('db.man_loc_detl.freeze', '鏄惁鍐荤粨'),
+        dataIndex: 'freeze$',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('freeze$'),
+    },
+    {
         title: formatMessage('db.man_loc_detl.status', '鐘舵��'),
         dataIndex: 'status$',
         width: 140,
diff --git a/zy-asrs-admin/src/views/loc/locDetl/index.vue b/zy-asrs-admin/src/views/loc/locDetl/index.vue
index d73ec77..9bf8fba 100644
--- a/zy-asrs-admin/src/views/loc/locDetl/index.vue
+++ b/zy-asrs-admin/src/views/loc/locDetl/index.vue
@@ -104,6 +104,13 @@
     ...getColumnSearchProps('anfme'),
   },
   {
+    title: formatMessage('db.man_loc_detl.freeze', '鏄惁鍐荤粨'),
+    dataIndex: 'freeze$',
+    width: 140,
+    ellipsis: true,
+    ...getColumnSearchProps('freeze$'),
+  },
+  {
     title: formatMessage('db.man_loc_detl.status', '鐘舵��'),
     dataIndex: 'status$',
     width: 140,
@@ -279,7 +286,8 @@
           style="width: 140px;margin-right: 10px;" />
         <a-input v-model:value="searchParam.matnr" :placeholder="formatMessage('page.locDetl.matnr.input', '璇疯緭鍏ュ晢鍝佺紪鍙�')"
           style="width: 140px;margin-right: 10px;" />
-        <a-input v-model:value="searchParam.orderNo" :placeholder="formatMessage('page.locDetl.orderNo.input', '璇疯緭鍏ヨ鍗曞彿')"
+        <a-input v-model:value="searchParam.orderNo"
+          :placeholder="formatMessage('page.locDetl.orderNo.input', '璇疯緭鍏ヨ鍗曞彿')"
           style="width: 140px;margin-right: 10px;" />
         <a-input v-model:value="searchParam.batch" :placeholder="formatMessage('page.locDetl.batch.input', '璇疯緭鍏ユ壒鍙�')"
           style="width: 140px;margin-right: 10px;" />
diff --git a/zy-asrs-admin/src/views/loc/locFreeze/index.vue b/zy-asrs-admin/src/views/loc/locFreeze/index.vue
new file mode 100644
index 0000000..aa33202
--- /dev/null
+++ b/zy-asrs-admin/src/views/loc/locFreeze/index.vue
@@ -0,0 +1,305 @@
+<script setup>
+import { ref, reactive } from 'vue';
+import { useRouter } from "vue-router";
+import { get, post, postForm } from '@/utils/request.js'
+import { message, Modal } from 'ant-design-vue';
+import { logout } from '@/config.js';
+import { formatMessage } from '@/utils/localeUtils.js';
+import useTableSearch from '@/utils/tableUtils.jsx';
+import SelectLocDetlView from '@/components/locDetl/selectLocDetl/index.vue'
+
+const router = useRouter();
+
+const TABLE_KEY = 'table-locDetl';
+const selectLocDetlChild = ref(null)
+const selectLocDetlViewShow = ref(false)
+
+let tableData = ref([]);
+getColumns();
+
+const {
+    getColumnSearchProps,
+    handleResizeColumn,
+} = useTableSearch();
+
+const state = reactive({
+    selectedRowKeys: [],
+    loading: false,
+    columns: [],
+});
+const onSelectChange = selectedRowKeys => {
+    // console.log('selectedRowKeys changed: ', selectedRowKeys);
+    state.selectedRowKeys = selectedRowKeys;
+};
+
+state.columns = [
+    {
+        title: formatMessage('db.man_loc_detl.anfme', '搴撳瓨鏁伴噺'),
+        dataIndex: 'anfme',
+        width: 140,
+        ellipsis: true,
+    },
+    {
+        title: formatMessage('db.man_loc_detl.loc_id', '搴撲綅'),
+        dataIndex: 'locId$',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('locId$'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.loc_no', '搴撲綅鍙�'),
+        dataIndex: 'locNo',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('locNo'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.mat_id', '鍟嗗搧'),
+        dataIndex: 'matId$',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('matId$'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.matnr', '鍟嗗搧缂栧彿'),
+        dataIndex: 'matnr',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('matnr'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.order_no', '璁㈠崟鍙�'),
+        dataIndex: 'orderNo',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('orderNo'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.batch', '鎵瑰彿'),
+        dataIndex: 'batch',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('batch'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.anfme', '鏁伴噺'),
+        dataIndex: 'anfme',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('anfme'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.freeze', '鏄惁鍐荤粨'),
+        dataIndex: 'freeze$',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('freeze$'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.status', '鐘舵��'),
+        dataIndex: 'status$',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('status$'),
+    },
+    // {
+    //   title: formatMessage('db.man_loc_detl.create_time', '娣诲姞鏃堕棿'),
+    //   dataIndex: 'createTime$',
+    //   width: 140,
+    //   ellipsis: true,
+    //   ...getColumnSearchProps('createTime$'),
+    // },
+    // {
+    //   title: formatMessage('db.man_loc_detl.create_by', '娣诲姞浜哄憳'),
+    //   dataIndex: 'createBy$',
+    //   width: 140,
+    //   ellipsis: true,
+    //   ...getColumnSearchProps('createBy$'),
+    // },
+    {
+        title: formatMessage('db.man_loc_detl.update_time', '淇敼鏃堕棿'),
+        dataIndex: 'updateTime$',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('updateTime$'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.update_by', '淇敼浜哄憳'),
+        dataIndex: 'updateBy$',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('updateBy$'),
+    },
+    {
+        title: formatMessage('db.man_loc_detl.memo', '澶囨敞'),
+        dataIndex: 'memo',
+        width: 140,
+        ellipsis: true,
+        ...getColumnSearchProps('memo'),
+    },
+];
+
+//鍔犺浇鎵╁睍瀛楁
+async function getColumns() {
+    let fieldResp = await post('/api/matField/list', {
+        unique: 1,
+        fieldType: 1
+    })
+    let fieldResult = fieldResp.data;
+    let tmp = state.columns;
+    if (fieldResult.code == 200) {
+        let data = fieldResult.data;
+
+        data.forEach((item) => {
+            tmp.push({
+                title: formatMessage(item.language, item.describe),
+                name: item.name,
+                dataIndex: item.name,
+                key: item.name,
+                width: 140,
+            })
+        })
+
+        tmp.push({
+            title: formatMessage('common.operation', '鎿嶄綔'),
+            name: 'oper',
+            dataIndex: 'oper',
+            key: 'oper',
+            width: 140,
+            fixed: 'right',
+        })
+
+        state.columns = tmp;
+    } else if (result.code === 401) {
+        message.error(result.msg);
+        logout()
+    } else {
+        message.error(result.msg);
+    }
+}
+
+const openSelect = () => {
+    selectLocDetlChild.value.open = true;
+}
+
+const handleSelectLocDetlOk = (result) => {
+    let tmp = [];
+
+    if (tableData.value != undefined) {
+        tmp = [...tableData.value]
+    }
+
+    for (let i = 0; i < result.length; i++) {
+        let item = result[i]
+        let flag = false;
+        for (let j = 0; j < tmp.length; j++) {
+            let tmpItem = tmp[j]
+            if (item.id == tmpItem.id) {
+                flag = true;
+                break
+            }
+        }
+
+        if (flag) {
+            continue
+        }
+
+        tmp.push(item)
+    }
+
+    tableData.value = tmp;
+}
+
+const handleDel = (record) => {
+    let data = tableData.value;
+    let tmp = []
+
+    for (let i = 0; i < data.length; i++) {
+        let item = data[i]
+        if (item.id == record.id) {
+            continue
+        }
+        tmp.push(item)
+    }
+    tableData.value = tmp
+}
+
+const startFreeze = () => {
+    if(state.selectedRowKeys.length == 0) {
+        message.error(formatMessage("page.locFreeze.select.error", "璇烽�夋嫨鑷冲皯涓�鏉″簱瀛�"));
+        return;
+    }
+
+    post('/api/locDetl/freeze', {
+        detlIds: state.selectedRowKeys,
+        freeze: 1
+    }).then(resp => {
+        let result = resp.data;
+        if (result.code == 200) {
+            message.success(formatMessage('page.locFreeze.success', '鍐荤粨鎴愬姛'));
+            tableData.value = [];
+            selectLocDetlChild.value.reload = true;
+        } else {
+            message.error(result.msg);
+        }
+    })
+}
+
+const stopFreeze = () => {
+    if(state.selectedRowKeys.length == 0) {
+        message.error(formatMessage("page.locFreeze.select.error", "璇烽�夋嫨鑷冲皯涓�鏉″簱瀛�"));
+        return;
+    }
+
+    post('/api/locDetl/freeze', {
+        detlIds: state.selectedRowKeys,
+        freeze: 0
+    }).then(resp => {
+        let result = resp.data;
+        if (result.code == 200) {
+            message.success(formatMessage('page.locFreeze.success', '瑙e喕鎴愬姛'));
+            tableData.value = [];
+            selectLocDetlChild.value.reload = true;
+        } else {
+            message.error(result.msg);
+        }
+    })
+}
+
+</script>
+
+<script>
+export default {
+    name: '搴撳瓨鍐荤粨'
+}
+</script>
+
+<template>
+    <div>
+        <div class="table-header">
+            <div>
+                <a-button type="primary" @click="openSelect">鎻愬彇搴撳瓨</a-button>
+
+                <a-button type="primary" style="margin-left: 5px;" @click="startFreeze">鍐荤粨</a-button>
+                <a-button style="margin-left: 5px;" @click="stopFreeze">瑙e喕</a-button>
+            </div>
+        </div>
+        <a-table :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"
+            :data-source="tableData" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"
+            :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="state.columns"
+            @resizeColumn="handleResizeColumn">
+            <template #bodyCell="{ column, text, record }">
+                <template v-if="column.dataIndex === 'oper'">
+                    <div style="display: flex;justify-content: space-evenly;">
+                        <a-button type="link" danger @click="handleDel(record)">{{ formatMessage('page.delete', '鍒犻櫎')
+                            }}</a-button>
+                    </div>
+                </template>
+            </template>
+        </a-table>
+
+        <SelectLocDetlView ref="selectLocDetlChild" @handle-ok="handleSelectLocDetlOk" />
+    </div>
+</template>
+
+<style></style>
diff --git a/zy-asrs-admin/src/views/system/role/index.vue b/zy-asrs-admin/src/views/system/role/index.vue
index 0f8d3d1..2f1f6e0 100644
--- a/zy-asrs-admin/src/views/system/role/index.vue
+++ b/zy-asrs-admin/src/views/system/role/index.vue
@@ -209,11 +209,17 @@
 
 }
 
+const treeLoading = ref(false)
 const loadMenuTree = (param) => {
+  treeLoading.value = true;
+  treeData.value = [];
+  checkedKeys.value = [];
   post('/api/menu/tree', {}).then(resp => {
     let result = resp.data;
     let data = result.data;
     treeData.value = data;
+
+    treeLoading.value = false;
   })
 
   get('/api/role/scope/list', {
@@ -267,6 +273,7 @@
 
     <a-drawer :width="500" :title="formatMessage('page.assign.role', '鍒嗛厤鏉冮檺') + ' - ' + currentDrawerData?.name"
       placement="right" :open="openDrawer" @close="onCloseDrawer">
+      <a-spin v-if="treeLoading" />
       <template #extra>
         <a-button style="margin-right: 8px" @click="onCloseDrawer">{{ formatMessage('common.cancel', '鍙栨秷') }}</a-button>
         <a-button type="primary" @click="onSubmitDrawer">{{ formatMessage('common.submit', '鎻愪氦') }}</a-button>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java
index fe4f715..0033028 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java
@@ -7,8 +7,10 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
 import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
+import com.zy.asrs.wms.asrs.entity.param.LocDetlFreezeParam;
 import com.zy.asrs.wms.asrs.service.LocDetlFieldService;
 import com.zy.asrs.wms.asrs.service.LocService;
 import com.zy.asrs.wms.asrs.service.MatFieldService;
@@ -202,4 +204,12 @@
         }
     }
 
+    @PreAuthorize("hasAuthority('asrs:locDetl:update')")
+    @OperationLog("搴撳瓨鍐荤粨")
+    @PostMapping("/locDetl/freeze")
+    public R freeze(@RequestBody LocDetlFreezeParam param) {
+        locDetlService.locDetlFreeze(param);
+        return R.ok();
+    }
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java
index 6596b8a..f4cb63e 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java
@@ -132,6 +132,12 @@
     @ApiModelProperty(value= "澶囨敞")
     private String memo;
 
+    /**
+     * 搴撳瓨鍐荤粨 1: 鍐荤粨  0: 姝e父
+     */
+    @ApiModelProperty(value= "搴撳瓨鍐荤粨 1: 鍐荤粨  0: 姝e父")
+    private Integer freeze;
+
     public LocDetl() {}
 
     public LocDetl(Long locId,String locNo,Long matId,String matnr,String orderNo,String batch,Double anfme,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
@@ -198,6 +204,18 @@
         return null;
     }
 
+    public String getFreeze$(){
+        if (null == this.freeze){ return null; }
+        switch (this.freeze){
+            case 1:
+                return "鍐荤粨";
+            case 0:
+                return "姝e父";
+            default:
+                return String.valueOf(this.freeze);
+        }
+    }
+
     public String getStatus$(){
         if (null == this.status){ return null; }
         switch (this.status){
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java
index 54a42a0..38bb739 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java
@@ -129,6 +129,12 @@
     @ApiModelProperty(value= "澶囨敞")
     private String memo;
 
+    /**
+     * 搴撳瓨鍐荤粨 1: 鍐荤粨  0: 姝e父
+     */
+    @ApiModelProperty(value= "搴撳瓨鍐荤粨 1: 鍐荤粨  0: 姝e父")
+    private Integer freeze;
+
     public ViewLocDetl() {}
 
     public ViewLocDetl(Long locId, String locNo, Long matId, String matnr, String orderNo, String batch, Double anfme, Long hostId, Integer status, Integer deleted, Date createTime, Long createBy, Date updateTime, Long updateBy, String memo) {
@@ -195,6 +201,18 @@
         return null;
     }
 
+    public String getFreeze$(){
+        if (null == this.freeze){ return null; }
+        switch (this.freeze){
+            case 1:
+                return "鍐荤粨";
+            case 0:
+                return "姝e父";
+            default:
+                return String.valueOf(this.freeze);
+        }
+    }
+
     public String getStatus$(){
         if (null == this.status){ return null; }
         switch (this.status){
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocDetlFreezeParam.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocDetlFreezeParam.java
new file mode 100644
index 0000000..1a5176f
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocDetlFreezeParam.java
@@ -0,0 +1,14 @@
+package com.zy.asrs.wms.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LocDetlFreezeParam {
+
+    private List<Long> detlIds;
+
+    private Integer freeze;
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
index 96f79fb..fa5f797 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -857,6 +857,10 @@
             map.put(orderOutMergeDto.getLocId(), list);
         }
 
+        if (map.isEmpty()) {
+            throw new CoolException("搴撳瓨涓嶈冻");
+        }
+
         for (Map.Entry<Long, List<OrderOutMergeDto>> entry : map.entrySet()) {
             Long locId = entry.getKey();
             List<OrderOutMergeDto> list = entry.getValue();
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
index e95b9bc..2417d84 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
@@ -15,6 +15,8 @@
 @Repository
 public interface ViewLocDetlMapper extends BaseMapper<ViewLocDetl> {
 
+    List<Map<String, Object>> queryStock(String matnr, String batch, List<FieldParam> param, @Param("sortParam") List<FieldSortParam> sortParam);
+
     List<Map<String, Object>> getList(String matnr, String batch, List<FieldParam> param, @Param("sortParam") List<FieldSortParam> sortParam);
 
     List<Map<String,Object>> getListLike(String matnr, String batch, List<FieldParam> param);
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java
index b7d6784..742aa16 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java
@@ -6,6 +6,7 @@
 import com.zy.asrs.wms.asrs.entity.ViewLocDetl;
 import com.zy.asrs.wms.asrs.entity.param.FieldParam;
 import com.zy.asrs.wms.asrs.entity.param.FieldSortParam;
+import com.zy.asrs.wms.asrs.entity.param.LocDetlFreezeParam;
 import com.zy.asrs.wms.common.domain.BaseParam;
 import com.zy.asrs.wms.common.domain.PageParam;
 
@@ -24,4 +25,6 @@
 
     List<LocDetl> queryStock(String matnr, String batch, List<FieldParam> param, List<FieldSortParam> sortParam);
 
+    void locDetlFreeze(LocDetlFreezeParam param);
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java
index 6c0acd9..11ffc4b 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java
@@ -80,7 +80,7 @@
         List<OrderDetl> orderDetls = orderDetlService.getOrderDetlByOrderId(orderId);
         boolean check = true;
         for (OrderDetl orderDetl : orderDetls) {
-            Double anfme = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty() - orderDetl.getQty()).orElse(0.0D);
+            Double anfme = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
             Double workQty = stockMap.get(orderDetl.getId());
             if (!anfme.equals(workQty)) {
                 check = false;
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
index fbd7893..a90b5f6 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
 import com.zy.asrs.wms.asrs.entity.param.FieldParam;
 import com.zy.asrs.wms.asrs.entity.param.FieldSortParam;
+import com.zy.asrs.wms.asrs.entity.param.LocDetlFreezeParam;
 import com.zy.asrs.wms.asrs.mapper.LocDetlMapper;
 import com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper;
 import com.zy.asrs.wms.asrs.service.LanewayRuleService;
@@ -20,6 +21,7 @@
 import com.zy.asrs.wms.common.domain.PageParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 
@@ -99,7 +101,7 @@
 
     @Override
     public List<LocDetl> queryStock(String matnr, String batch, List<FieldParam> param, List<FieldSortParam> sortParam) {
-        List<Map<String, Object>> list = viewLocDetlMapper.getList(matnr, batch, param, sortParam);
+        List<Map<String, Object>> list = viewLocDetlMapper.queryStock(matnr, batch, param, sortParam);
         List<LocDetl> locDetlsSort = resortDetls(list);
         return locDetlsSort;
     }
@@ -180,4 +182,32 @@
         return sortDirctDetls;
     }
 
+    @Override
+    @Transactional
+    public void locDetlFreeze(LocDetlFreezeParam param) {
+        if (param == null) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        if (param.getDetlIds() == null) {
+            throw new CoolException("搴撳瓨鏄庣粏鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        if (param.getFreeze() == null) {
+            throw new CoolException("鍐荤粨鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        List<LocDetl> locDetls = this.listByIds(param.getDetlIds());
+        if(locDetls.isEmpty()){
+            throw new CoolException("搴撳瓨涓嶅瓨鍦�");
+        }
+
+        for (LocDetl locDetl : locDetls) {
+            locDetl.setFreeze(param.getFreeze());
+            locDetl.setUpdateTime(new Date());
+            if (!this.updateById(locDetl)) {
+                throw new CoolException("鏇存柊澶辫触");
+            }
+        }
+    }
 }
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
index 23edb08..bcdab29 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
@@ -2,6 +2,27 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper">
 
+    <select id="queryStock" resultType="map">
+        select * from view_man_loc_detl ld
+        where matnr = #{matnr}
+        and freeze = 0
+        <if test="batch!=null">
+            and batch = #{batch}
+        </if>
+        <if test="param!=null and param.size()>0">
+            <foreach item="item" collection="param" index="index">
+                <if test="item.value!=null">
+                    and ${item.name} = #{item.value}
+                </if>
+            </foreach>
+        </if>
+        <if test="sortParam!=null and sortParam.size()>0">
+            <foreach collection="sortParam" item="item" open="order by " separator="," close="  ">
+                ${item.name} ${item.value}
+            </foreach>
+        </if>
+    </select>
+
     <select id="getList" resultType="map">
         select * from view_man_loc_detl ld
         where matnr = #{matnr}

--
Gitblit v1.9.1