From 439dd3583f2ea745aa5e70ce26f3489d75c90912 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 25 一月 2024 15:07:28 +0800
Subject: [PATCH] pla增加库位导入功能 货主档案增加导入导出功能 pla表头固定
---
src/main/java/com/zy/asrs/utils/LocOwnerExcelListener.java | 91 ++++++++++++++++++
src/main/java/com/zy/asrs/utils/PlaExcelListener.java | 13 ++
src/main/java/com/zy/common/entity/LocOwnerExcel.java | 10 ++
src/main/webapp/static/js/locOwner/locOwner.js | 60 +++++++++++
src/main/webapp/views/locOwner/locOwner.html | 21 +++
src/main/java/com/zy/asrs/entity/LocOwner.java | 4
src/main/java/com/zy/asrs/entity/Pla.java | 2
src/main/java/com/zy/asrs/controller/LocOwnerController.java | 40 ++++++++
8 files changed, 235 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/LocOwnerController.java b/src/main/java/com/zy/asrs/controller/LocOwnerController.java
index f9e9513..70390d1 100644
--- a/src/main/java/com/zy/asrs/controller/LocOwnerController.java
+++ b/src/main/java/com/zy/asrs/controller/LocOwnerController.java
@@ -1,5 +1,7 @@
package com.zy.asrs.controller;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
@@ -9,12 +11,20 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
+import com.core.exception.CoolException;
import com.zy.asrs.entity.LocOwner;
import com.zy.asrs.service.LocOwnerService;
+import com.zy.asrs.utils.LocOwnerExcelListener;
+import com.zy.common.entity.LocOwnerExcel;
import com.zy.common.web.BaseController;
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.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -139,4 +149,34 @@
return R.ok();
}
+ /**
+ * excel瀵煎叆妯℃澘涓嬭浇
+ */
+ @RequestMapping(value = "/locOwner/excel/import/mould")
+ public void plaExcelImportMould(HttpServletResponse response) throws IOException {
+ List<LocOwnerExcel> excels = new ArrayList<>();
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ String fileName = URLEncoder.encode("璐т富妗f瀵煎叆妯℃澘", "UTF-8");
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ EasyExcel.write(response.getOutputStream(), LocOwnerExcel.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .sheet("sheet1")
+ .doWrite(excels);
+ }
+
+ // excel瀵煎叆
+ @PostMapping(value = "/locOwner/excel/import/auth")
+ @ManagerAuth(memo = "璐т富妗f鏁版嵁瀵煎叆")
+ @Transactional
+ public R matExcelImport(MultipartFile file) throws IOException {
+ LocOwnerExcelListener listener = new LocOwnerExcelListener(getUserId());
+ try {
+ EasyExcel.read(file.getInputStream(), LocOwnerExcel.class, listener).sheet().doRead();
+ }catch (Exception e){
+ throw new CoolException("瀵煎叆鐨勬暟鎹牸寮忛敊璇紝鍘熷洜锛�" + e.getMessage());
+ }
+ return R.ok("鎴愬姛鍚屾"+listener.getTotal()+"鏉la鐗╂枡鏁版嵁");
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/entity/LocOwner.java b/src/main/java/com/zy/asrs/entity/LocOwner.java
index 35fc8ce..8eec555 100644
--- a/src/main/java/com/zy/asrs/entity/LocOwner.java
+++ b/src/main/java/com/zy/asrs/entity/LocOwner.java
@@ -1,5 +1,6 @@
package com.zy.asrs.entity;
+import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
@@ -19,10 +20,13 @@
private Long id;
@ApiModelProperty(value= "")
+ @ExcelProperty(value = "瀹㈡埛鍚嶇О")
private String owner;
+ @ExcelProperty(value = "瀹㈡埛鐢佃瘽")
private String phone;
+ @ExcelProperty(value = "瀹㈡埛鍦板潃")
private String addr;
public LocOwner() {}
diff --git a/src/main/java/com/zy/asrs/entity/Pla.java b/src/main/java/com/zy/asrs/entity/Pla.java
index a8a0fa2..e3029ec 100644
--- a/src/main/java/com/zy/asrs/entity/Pla.java
+++ b/src/main/java/com/zy/asrs/entity/Pla.java
@@ -214,7 +214,7 @@
//搴撲綅
@TableField("loc_no")
- //@ExcelProperty(value = "搴撲綅")
+ @ExcelProperty(value = "搴撲綅")
private String locNo;
//鐘舵��
diff --git a/src/main/java/com/zy/asrs/utils/LocOwnerExcelListener.java b/src/main/java/com/zy/asrs/utils/LocOwnerExcelListener.java
new file mode 100644
index 0000000..9978417
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/LocOwnerExcelListener.java
@@ -0,0 +1,91 @@
+package com.zy.asrs.utils;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocOwner;
+import com.zy.asrs.service.LocOwnerService;
+import com.zy.common.entity.LocOwnerExcel;
+import com.zy.common.entity.MatExcel;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by vincent on 2019-11-25
+ */
+@Slf4j
+public class LocOwnerExcelListener extends AnalysisEventListener<LocOwnerExcel> {
+
+ private int total = 0;
+ private Long userId;
+
+ public LocOwnerExcelListener() {
+ }
+
+ public LocOwnerExcelListener(Long userId) {
+ this.userId = userId;
+ }
+
+ /**
+ * 姣忛殧5鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互3000鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
+ */
+ private static final int BATCH_COUNT = 50;
+
+ private final List<MatExcel> list = new ArrayList<>();
+
+ /**
+ * 杩欓噷浼氫竴琛岃鐨勮繑鍥炲ご
+ */
+ @Override
+ public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+ }
+
+ /**
+ * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
+ */
+ @Override
+ public void invoke(LocOwnerExcel excel, AnalysisContext ctx) {
+ LocOwnerService locOwnerService = SpringUtils.getBean(LocOwnerService.class);
+ Date now = new Date();
+
+ // 鍟嗗搧
+ if(Cools.isEmpty(excel.getOwner())){
+ return;
+ }
+ LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().eq("owner",excel.getOwner()));
+ if (locOwner == null) {
+ locOwner = excel;
+
+ if (!locOwnerService.insert(locOwner)) {
+ throw new CoolException("淇濆瓨瀹㈡埛淇℃伅澶辫触锛屽鎴峰悕绉帮細" + excel.getOwner());
+ }
+ total++;
+ }else {
+ locOwner.setOwner(excel.getOwner());
+ locOwner.setAddr(excel.getAddr());
+ locOwner.setPhone(excel.getPhone());
+ locOwnerService.updateById(locOwner);
+ total++;
+ }
+ }
+
+ /**
+ * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡璋冪敤
+ * 閫傚悎浜嬪姟
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext ctx) {
+ log.info("鏂板{}鏉$墿鏂欎俊鎭紒", total);
+ }
+
+ public int getTotal() {
+ return total;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/utils/PlaExcelListener.java b/src/main/java/com/zy/asrs/utils/PlaExcelListener.java
index 137d1a1..fae28c7 100644
--- a/src/main/java/com/zy/asrs/utils/PlaExcelListener.java
+++ b/src/main/java/com/zy/asrs/utils/PlaExcelListener.java
@@ -5,8 +5,10 @@
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
+import com.zy.asrs.entity.Node;
import com.zy.asrs.entity.Pla;
import com.zy.asrs.entity.param.GlobleParameter;
+import com.zy.asrs.service.NodeService;
import com.zy.asrs.service.PlaService;
import com.zy.common.entity.MatExcel;
import com.zy.common.entity.PlaExcel;
@@ -54,6 +56,7 @@
@Override
public void invoke(PlaExcel excel, AnalysisContext ctx) {
PlaService plaService = SpringUtils.getBean(PlaService.class);
+ NodeService nodeService = SpringUtils.getBean(NodeService.class);
Date now = new Date();
// 鍟嗗搧
@@ -68,6 +71,16 @@
pla.setModifyTime(new Date());
pla.setStatus(GlobleParameter.PLA_STATUS_00);
pla.setStockFreeze(1);
+ if(!Cools.isEmpty(pla.getLocNo())){
+ Node node = nodeService.selectByUuid(pla.getLocNo());
+ if(Cools.isEmpty(node)){
+ throw new CoolException("鏈兘鎵惧埌鐩稿簲鐨勫簱浣嶄俊鎭�");
+ }
+ pla.setStash(node.getParentName());
+ pla.setLocNo(node.getUuid());
+ pla.setStatus(GlobleParameter.PLA_STATUS_1);
+ pla.setPakinTime(new Date());
+ }
if (!plaService.insert(pla)) {
throw new CoolException("淇濆瓨鍟嗗搧淇℃伅澶辫触锛屽晢鍝佺紪鐮侊細" + excel.getMatnr());
}
diff --git a/src/main/java/com/zy/common/entity/LocOwnerExcel.java b/src/main/java/com/zy/common/entity/LocOwnerExcel.java
new file mode 100644
index 0000000..c4c184c
--- /dev/null
+++ b/src/main/java/com/zy/common/entity/LocOwnerExcel.java
@@ -0,0 +1,10 @@
+package com.zy.common.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.zy.asrs.entity.LocOwner;
+import lombok.Data;
+
+@Data
+@ExcelIgnoreUnannotated
+public class LocOwnerExcel extends LocOwner {
+}
diff --git a/src/main/webapp/static/js/locOwner/locOwner.js b/src/main/webapp/static/js/locOwner/locOwner.js
index 517129f..6dd579a 100644
--- a/src/main/webapp/static/js/locOwner/locOwner.js
+++ b/src/main/webapp/static/js/locOwner/locOwner.js
@@ -1,13 +1,16 @@
var pageCurr;
+var admin;
layui.config({
base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
+}).extend({
+ dropdown: 'dropdown/dropdown',
+}).use(['table','laydate', 'form', 'admin', 'dropdown'], function(){
var table = layui.table;
var $ = layui.jquery;
var layer = layui.layer;
var layDate = layui.laydate;
var form = layui.form;
- var admin = layui.admin;
+ admin = layui.admin;
// 鏁版嵁娓叉煋
tableIns = table.render({
@@ -240,3 +243,56 @@
page: {curr: pageCurr}
});
}
+// excel瀵煎叆妯℃澘涓嬭浇
+function excelMouldDownload(){
+ layer.load(1, {shade: [0.1,'#fff']});
+ location.href = baseUrl + "/locOwner/excel/import/mould";
+ layer.closeAll('loading');
+}
+
+// excel瀵煎叆
+function importExcel() {
+ $("#importExcel").trigger("click");
+}
+function upload(obj){
+ if(!obj.files) {
+ return;
+ }
+ var file = obj.files[0];
+ admin.confirm('纭鍚屾 [' + file.name +'] 鏂囦欢鍚楋紵', function (index) {
+ layer.load(1, {shade: [0.1,'#fff']});
+ var url = baseUrl + "/locOwner/excel/import/auth";
+ var form = new FormData();
+ form.append("file", file);
+ xhr = new XMLHttpRequest();
+ xhr.open("post", url, true); //post鏂瑰紡锛寀rl涓烘湇鍔″櫒璇锋眰鍦板潃锛宼rue 璇ュ弬鏁拌瀹氳姹傛槸鍚﹀紓姝ュ鐞嗐��
+ xhr.setRequestHeader('token', localStorage.getItem('token'));
+ xhr.onload = uploadComplete; //璇锋眰瀹屾垚
+ xhr.onerror = uploadFailed; //璇锋眰澶辫触
+ xhr.onloadend = function () { // // 涓婁紶瀹屾垚閲嶇疆鏂囦欢娴�
+ layer.closeAll('loading');
+ $("#importExcel").val("");
+ };
+ // xhr.upload.onprogress = progressFunction;//銆愪笂浼犺繘搴﹁皟鐢ㄦ柟娉曞疄鐜般��
+ xhr.upload.onloadstart = function(){//涓婁紶寮�濮嬫墽琛屾柟娉�
+ ot = new Date().getTime(); //璁剧疆涓婁紶寮�濮嬫椂闂�
+ oloaded = 0;//璁剧疆涓婁紶寮�濮嬫椂锛屼互涓婁紶鐨勬枃浠跺ぇ灏忎负0
+ };
+ xhr.send(form);
+ }, function(index){
+ $("#importExcel").val("");
+ });
+}
+function uploadComplete(evt) {
+ var res = JSON.parse(evt.target.responseText);
+ if(res.code === 200) {
+ layer.msg(res.msg, {icon: 1});
+ loadTree("");
+ } else {
+ layer.msg(res.msg, {icon: 2});
+ }
+}
+function uploadFailed(evt) {
+ var res = JSON.parse(evt.target.responseText);
+ layer.msg(res.msg, {icon: 2});
+}
diff --git a/src/main/webapp/views/locOwner/locOwner.html b/src/main/webapp/views/locOwner/locOwner.html
index 3efea7b..62cd683 100644
--- a/src/main/webapp/views/locOwner/locOwner.html
+++ b/src/main/webapp/views/locOwner/locOwner.html
@@ -18,9 +18,9 @@
<div class="layui-form toolbar" id="search-box">
<div class="layui-form-item">
<div class="layui-inline">
- <label class="layui-form-label">瀹㈡埛缂栧彿:</label>
+ <label class="layui-form-label">瀹㈡埛鍚嶇О:</label>
<div class="layui-input-inline">
- <input class="layui-input" type="text" name="id" placeholder="瀹㈡埛缂栧彿" autocomplete="off">
+ <input class="layui-input" type="text" name="owner" placeholder="瀹㈡埛鍚嶇О" autocomplete="off">
</div>
</div>
<div class="layui-inline"> 
@@ -41,7 +41,22 @@
<script type="text/html" id="toolbar">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-<!-- <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
+
+ <!-- 鍟嗗搧/鐗╂枡 鏁版嵁涓績 -->
+ <div class="dropdown-menu" style="float: right">
+ <button id="syncData" class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm"> 鏁版嵁鍚屾 <i class="layui-icon layui-icon-drop"></i></button>
+ <ul class="dropdown-menu-nav dark">
+ <div class="dropdown-anchor"></div>
+ <li class="title">1st menu</li>
+ <li><a onclick="excelMouldDownload()" style="font-size: 12px"><i class="layui-icon layui-icon-template-1"></i>妯℃澘涓嬭浇</a></li>
+ <li><a onclick="importExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-upload"></i>瀵煎叆 Excel</a></li>
+ <li style="display: none"><input id="importExcel" type="file" onchange="upload(this)" ></li>
+ <hr>
+ <!-- <li class="title">2nd menu</li>-->
+ <!-- <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i>瀵煎嚭 Excel</a></li>-->
+ </ul>
+ </div>
+
<button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
</div>
</script>
--
Gitblit v1.9.1