From e83dacb5066a86db29dbdc232218d8aba6adc95f Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 02 八月 2024 13:34:04 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java     |    4 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatService.java               |    4 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatFieldServiceImpl.java |   11 +++
 zy-asrs-admin/src/components/order/index.vue                                         |   45 ++++++++++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java         |    4 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatServiceImpl.java      |   19 ++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatFieldService.java          |    6 ++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java       |    7 ++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/ExcelUtil.java                       |   35 +++++++++++
 9 files changed, 132 insertions(+), 3 deletions(-)

diff --git a/zy-asrs-admin/src/components/order/index.vue b/zy-asrs-admin/src/components/order/index.vue
index c5cdfde..ad5dfd0 100644
--- a/zy-asrs-admin/src/components/order/index.vue
+++ b/zy-asrs-admin/src/components/order/index.vue
@@ -8,6 +8,9 @@
 import { formatMessage } from '@/utils/localeUtils.js';
 import useTableSearch from '@/utils/tableUtils.jsx';
 import ShowOrderDetlComponent from '@/components/orderDetl/show.vue';
+import {
+  DownOutlined,
+} from "@ant-design/icons-vue";
 const context = getCurrentInstance()?.appContext.config.globalProperties;
 
 const router = useRouter();
@@ -217,6 +220,27 @@
   getPage()
 }
 
+const handleSyncOrderClick = (e) => {
+  if (e.key == 'import') {
+    importTemplate()
+  } else if (e.key == 'export') {
+    exportTemplate()
+  }
+}
+
+const importTemplate = () => {
+  //瀵煎叆妯℃澘
+}
+
+const exportTemplate = () => {
+  //妯℃澘瀵煎嚭
+  postBlob('/api/order/exportTemplate', {}).then(result => {
+    const blob = new Blob([result.data], { type: 'application/vnd.ms-excel' });
+    window.location.href = window.URL.createObjectURL(blob);
+    return true;
+  })
+}
+
 </script>
 
 <script>
@@ -227,11 +251,30 @@
 
 <template>
   <div>
-    <EditView ref="editChild" @tableReload="handleTableReload" :ioModel="ioModel == 'in' ? 1 : ioModel == 'out' ? 2 : null" />
+    <EditView ref="editChild" @tableReload="handleTableReload"
+      :ioModel="ioModel == 'in' ? 1 : ioModel == 'out' ? 2 : null" />
     <div class="table-header">
       <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '璇疯緭鍏�')"
         style="width: 200px;" @search="onSearch" />
       <div class="table-header-right">
+        <a-dropdown>
+          <template #overlay>
+            <a-menu @click="handleSyncOrderClick">
+              <a-menu-item key="import">
+                <UserOutlined />
+                {{ formatMessage('page.order.import', '鍗曟嵁瀵煎叆') }}
+              </a-menu-item>
+              <a-menu-item key="export">
+                <UserOutlined />
+                {{ formatMessage('page.order.export.template', '瀵煎嚭妯℃澘') }}
+              </a-menu-item>
+            </a-menu>
+          </template>
+          <a-button>
+            {{ formatMessage('page.order.sync', '鍗曟嵁鍚屾') }}
+            <DownOutlined />
+          </a-button>
+        </a-dropdown>
         <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '娣诲姞') }}</a-button>
         <a-button @click="handleExport">{{ formatMessage('page.export', '瀵煎嚭') }}</a-button>
       </div>
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 5f01ec9..c9b7b0a 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
@@ -147,7 +147,9 @@
     @PreAuthorize("hasAuthority('asrs:locDetl:list')")
     @PostMapping("/locDetl/export")
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
-        ExcelUtil.build(ExcelUtil.create(locDetlService.list(), LocDetl.class), response);
+        List<LocDetl> locDetls = locDetlService.parseLocDetl(locDetlService.list());
+        List<MatField> locFields = matFieldService.getLocFields();
+        ExcelUtil.build(ExcelUtil.create(locDetls, LocDetl.class, locFields), response);
     }
 
     private void setLocDetlField(HashMap<String, Object> param, LocDetl locDetl) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java
index 7b2efc6..eed691f 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java
@@ -124,7 +124,9 @@
     @PreAuthorize("hasAuthority('asrs:mat:list')")
     @PostMapping("/mat/export")
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
-        ExcelUtil.build(ExcelUtil.create(matService.list(), Mat.class), response);
+        List<Mat> list = matService.parseMat(matService.list());
+        List<MatField> matFields = matFieldService.getMatFields();
+        ExcelUtil.build(ExcelUtil.create(list, Mat.class, matFields), response);
     }
 
     private void setMatField(HashMap<String, Object> param, Mat mat) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
index 537e784..7a1dbf9 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
@@ -167,4 +167,11 @@
         ExcelUtil.build(ExcelUtil.create(list, Order.class), response);
     }
 
+    @PreAuthorize("hasAuthority('asrs:order:list')")
+    @PostMapping("/order/exportTemplate")
+    public void exportTemplate(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+        ArrayList<Order> list = new ArrayList<>();
+        ExcelUtil.build(ExcelUtil.create(list, Order.class), response);
+    }
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatFieldService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatFieldService.java
index 5a08b22..1348384 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatFieldService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatFieldService.java
@@ -3,8 +3,14 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zy.asrs.wms.asrs.entity.MatField;
 
+import java.util.List;
+
 public interface MatFieldService extends IService<MatField> {
 
     void createView();
 
+    List<MatField> getMatFields();
+
+    List<MatField> getLocFields();
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatService.java
index 9d20bb6..106caf8 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MatService.java
@@ -3,6 +3,10 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zy.asrs.wms.asrs.entity.Mat;
 
+import java.util.List;
+
 public interface MatService extends IService<Mat> {
 
+    List<Mat> parseMat(List<Mat> list);
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatFieldServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatFieldServiceImpl.java
index f149048..c598c3d 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatFieldServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatFieldServiceImpl.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.wms.asrs.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.asrs.wms.asrs.entity.LocDetlField;
 import com.zy.asrs.wms.asrs.mapper.MatFieldMapper;
 import com.zy.asrs.wms.asrs.entity.MatField;
@@ -7,6 +8,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
 
 @Service("matFieldService")
@@ -19,4 +21,13 @@
         this.baseMapper.createLocDetlView();
     }
 
+    @Override
+    public List<MatField> getMatFields() {
+        return this.list(new LambdaQueryWrapper<MatField>().eq(MatField::getFieldType, 0));
+    }
+
+    @Override
+    public List<MatField> getLocFields() {
+        return this.list(new LambdaQueryWrapper<MatField>().eq(MatField::getFieldType, 1));
+    }
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatServiceImpl.java
index 07f2e47..d4dd39a 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MatServiceImpl.java
@@ -1,12 +1,31 @@
 package com.zy.asrs.wms.asrs.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.wms.asrs.entity.MatFieldValue;
 import com.zy.asrs.wms.asrs.mapper.MatMapper;
 import com.zy.asrs.wms.asrs.entity.Mat;
+import com.zy.asrs.wms.asrs.service.MatFieldValueService;
 import com.zy.asrs.wms.asrs.service.MatService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
 
 @Service("matService")
 public class MatServiceImpl extends ServiceImpl<MatMapper, Mat> implements MatService {
 
+    @Autowired
+    private MatFieldValueService matFieldValueService;
+
+    @Override
+    public List<Mat> parseMat(List<Mat> list) {
+        for (Mat mat : list) {
+            List<MatFieldValue> matFieldValueList = matFieldValueService.list(new LambdaQueryWrapper<MatFieldValue>()
+                    .eq(MatFieldValue::getMatId, mat.getId()));
+            mat.syncField(matFieldValueList);
+        }
+        return list;
+    }
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/ExcelUtil.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/ExcelUtil.java
index fbeb87b..1fc6dce 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/ExcelUtil.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/ExcelUtil.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.wms.utils;
 
 import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.wms.asrs.entity.MatField;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Row;
@@ -15,6 +16,7 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by vincent on 2/17/2024
@@ -32,6 +34,10 @@
     }
 
     public static <T> Workbook create(List<T> list, Class<T> clz) {
+        return create(list, clz, null);
+    }
+
+    public static <T> Workbook create(List<T> list, Class<T> clz, List<MatField> dynamicFields) {
         HSSFWorkbook workbook = new HSSFWorkbook();
         Sheet sheet = workbook.createSheet(clz.getSimpleName());
 
@@ -50,6 +56,14 @@
             }
             header.createCell(headerIdx).setCellValue(memo);
             headerIdx++;
+        }
+
+        //鍔ㄦ�佸瓧娈�
+        if(dynamicFields != null){
+            for (MatField field : dynamicFields) {
+                header.createCell(headerIdx).setCellValue(field.getDescribe());
+                headerIdx++;
+            }
         }
 
         int rowIndex = 1;
@@ -81,6 +95,27 @@
                 }
                 cellIndex++;
             }
+
+            //鍔ㄦ�佸瓧娈�
+            if(dynamicFields != null){
+                for (Field field : fields) {
+                    if (field.getName().equals("dynamicFields")) {
+                        try {
+                            Map<String, Object> map = (Map<String, Object>) field.get(t);
+                            for (MatField matField : dynamicFields) {
+                                Object value = map.get(matField.getName());
+                                if(value != null){
+                                    row.createCell(cellIndex).setCellValue(value.toString());
+                                    cellIndex++;
+                                }
+                            }
+                        } catch (IllegalAccessException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                }
+            }
+
         }
 
         for (int i = 0; i <= fields.length; i++) {

--
Gitblit v1.9.1