From 5b9f71b862978c3ca16708db2f9de329bf65b3bf Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期日, 18 九月 2022 18:57:42 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/crm/manager/service/CstmrService.java          |    2 
 src/main/java/com/zy/crm/manager/controller/CstmrController.java    |   54 +++++++++++++++++
 src/main/webapp/static/js/cstmr/cstmr.js                            |   48 +++++++++++++++
 src/main/java/com/zy/crm/manager/service/impl/CstmrServiceImpl.java |   17 +++++
 src/main/webapp/mould/甲方单位导入模板.xls                                  |    0 
 5 files changed, 115 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/zy/crm/manager/controller/CstmrController.java b/src/main/java/com/zy/crm/manager/controller/CstmrController.java
index 89c97dd..f86f7a7 100644
--- a/src/main/java/com/zy/crm/manager/controller/CstmrController.java
+++ b/src/main/java/com/zy/crm/manager/controller/CstmrController.java
@@ -13,14 +13,23 @@
 import com.zy.crm.common.web.BaseController;
 import com.zy.crm.manager.entity.Cstmr;
 import com.zy.crm.manager.service.CstmrService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.*;
 
+@Slf4j
 @RestController
 public class CstmrController extends BaseController {
 
@@ -85,7 +94,7 @@
             throw new CoolException("瀹㈡埛宸插瓨鍦�");
         }
         cstmr.setHostId(hostId);
-        cstmr.setUuid(cstmrService.getNextUuid(hostId));  // 瀹㈡埛浠e彿
+        cstmr.setUuid(cstmrService.getUuid(hostId));  // 瀹㈡埛浠e彿
         cstmr.setDeptId(getDeptId());               // 鎵�灞為儴闂�
         cstmr.setUserId(getUserId());               // 鎵�灞炰汉鍛�
 
@@ -162,8 +171,49 @@
      * excel瀵煎叆
      */
     @PostMapping(value = "/cstmr/excel/import/auth")
-    @ManagerAuth
+    @ManagerAuth(memo = "鐢叉柟鍗曚綅Excel瀵煎叆")
+    @Transactional
     public R cstmrExcelImport(MultipartFile file) throws IOException {
+        try (InputStream inStream = file.getInputStream()) {
+            String fileMime = file.getContentType();
+            int excelVersion = 2007;
+            if ("application/vnd.ms-excel".equals(fileMime)) {
+                excelVersion = 2003;
+            }
+            Workbook book = null;
+            if (excelVersion == 2003) {
+                book = new HSSFWorkbook(inStream);
+            }
+            else {  // 褰� excel 鏄� 2007 鏃�
+                book = new XSSFWorkbook(inStream);
+            }
+            Sheet sheet = book.getSheetAt(0);
+            int totalRows = sheet.getPhysicalNumberOfRows() - 1;    // 鎬�
+            Long userId = getUserId();
+            Long hostId = getHostId();
+            Long deptId = getDeptId();
+            Date now = new Date();
+            for (int i = 2; i < totalRows; i++) {
+                Cstmr cstmr = new Cstmr();
+
+                Row row = sheet.getRow(i);
+                System.out.println(row.getCell(0).getStringCellValue());
+
+                cstmr.setHostId(hostId);
+                cstmr.setDeptId(deptId);
+                cstmr.setUserId(userId);
+                cstmr.setStatus(1);
+                cstmr.setCreateBy(userId);
+                cstmr.setCreateTime(now);
+                cstmr.setUpdateBy(userId);
+                cstmr.setUpdateTime(now);
+                if (!cstmrService.insert(cstmr)) {
+                    throw new CoolException("淇濆瓨澶辫触锛岃閲嶆柊瀵煎叆");
+                }
+            }
+        }  catch (Exception e) {
+            e.printStackTrace();
+        }
 
         return R.ok();
     }
diff --git a/src/main/java/com/zy/crm/manager/service/CstmrService.java b/src/main/java/com/zy/crm/manager/service/CstmrService.java
index 71dca4c..c81a911 100644
--- a/src/main/java/com/zy/crm/manager/service/CstmrService.java
+++ b/src/main/java/com/zy/crm/manager/service/CstmrService.java
@@ -8,7 +8,7 @@
 
     Cstmr selectByUuid(Long hostId, String uuid);
 
-    String getNextUuid(Long hostId);
+    String getUuid(Long hostId);
 
     Page<Cstmr> getPage(Page page, Long hostId, String deptId, String condition);
 
diff --git a/src/main/java/com/zy/crm/manager/service/impl/CstmrServiceImpl.java b/src/main/java/com/zy/crm/manager/service/impl/CstmrServiceImpl.java
index 4c71cb2..598565b 100644
--- a/src/main/java/com/zy/crm/manager/service/impl/CstmrServiceImpl.java
+++ b/src/main/java/com/zy/crm/manager/service/impl/CstmrServiceImpl.java
@@ -1,6 +1,7 @@
 package com.zy.crm.manager.service.impl;
 
 import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.Cools;
 import com.zy.crm.manager.mapper.CstmrMapper;
 import com.zy.crm.manager.entity.Cstmr;
 import com.zy.crm.manager.service.CstmrService;
@@ -16,7 +17,21 @@
     }
 
     @Override
-    public String getNextUuid(Long hostId) {
+    public synchronized String getUuid(Long hostId) {
+        String uuid = null;
+        int times = 0;
+        while (Cools.isEmpty(uuid)) {
+            if (times > 100) { break; }
+            String nextUuid = getNextUuid(hostId);
+            if (selectByUuid(hostId, nextUuid) == null) {
+                uuid = nextUuid;
+            }
+            times ++;
+        }
+        return uuid;
+    }
+
+    private String getNextUuid(Long hostId) {
         Cstmr cstmr = this.baseMapper.selectCstmrByNewestUuid(hostId);
         if (cstmr == null) {
             return "0001";
diff --git "a/src/main/webapp/mould/\347\224\262\346\226\271\345\215\225\344\275\215\345\257\274\345\205\245\346\250\241\346\235\277.xls" "b/src/main/webapp/mould/\347\224\262\346\226\271\345\215\225\344\275\215\345\257\274\345\205\245\346\250\241\346\235\277.xls"
index 9dd843f..66fe862 100644
--- "a/src/main/webapp/mould/\347\224\262\346\226\271\345\215\225\344\275\215\345\257\274\345\205\245\346\250\241\346\235\277.xls"
+++ "b/src/main/webapp/mould/\347\224\262\346\226\271\345\215\225\344\275\215\345\257\274\345\205\245\346\250\241\346\235\277.xls"
Binary files differ
diff --git a/src/main/webapp/static/js/cstmr/cstmr.js b/src/main/webapp/static/js/cstmr/cstmr.js
index c6e564f..9dbef1a 100644
--- a/src/main/webapp/static/js/cstmr/cstmr.js
+++ b/src/main/webapp/static/js/cstmr/cstmr.js
@@ -1,6 +1,7 @@
 var pageCurr;
 var pageCount = 0;
 var treeCond;
+var admin;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
 }).extend({
@@ -11,7 +12,7 @@
     var layer = layui.layer;
     var layDate = layui.laydate;
     var form = layui.form;
-    var admin = layui.admin;
+    admin = layui.admin;
     var xmSelect = layui.xmSelect;
     var cascader = layui.cascader;
     var tree = layui.tree;
@@ -53,7 +54,7 @@
                 ,id: 3
             }
         ]
-        ,click: function(item){
+        ,click: async function(item){
             switch (item.id) {
                 case 1:
                     // 妯℃澘涓嬭浇
@@ -63,6 +64,9 @@
                     break
                 case 2:
                     // 瀵煎叆 Excel
+                    let arrFileHandle = await window.showOpenFilePicker()
+                    let file = await arrFileHandle[0].getFile();
+                    upload(file);
                     break
                 case 3:
                     // 瀵煎嚭 Excel
@@ -378,3 +382,43 @@
         $(".layui-laypage-btn")[0].click();
     }
 }
+
+function upload(file){
+    if(!file) {
+        return;
+    }
+    admin.confirm('纭鍚屾 [' + file.name +'] 鏂囦欢鍚楋紵', function (index) {
+        layer.load(1, {shade: [0.1,'#fff']});
+        var url = baseUrl + "/cstmr/excel/import/auth";
+        var form = new FormData();
+        form.append("file", file);
+        let xhr = new XMLHttpRequest();
+        xhr.open("post", url, true);
+        xhr.setRequestHeader('token', localStorage.getItem('token'));
+        xhr.onload = uploadComplete;
+        xhr.onerror =  uploadFailed;
+        xhr.onloadend = function () {
+            layer.closeAll('loading');
+        };
+        // xhr.upload.onprogress = progressFunction;
+        xhr.upload.onloadstart = function(){
+            ot = new Date().getTime();
+            oloaded = 0;
+        };
+        xhr.send(form);
+    }, function(index){
+    });
+}
+function uploadComplete(evt) {
+    let res = JSON.parse(evt.target.responseText);
+    if(res.code === 200) {
+        layer.msg(res.msg, {icon: 1});
+        tableIns.refresh();
+    } else {
+        layer.msg(res.msg, {icon: 2});
+    }
+}
+function uploadFailed(evt) {
+    let res = JSON.parse(evt.target.responseText);
+    layer.msg(res.msg, {icon: 2});
+}

--
Gitblit v1.9.1