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