Browse Source

为导入时添加页面

lwx_dev
erdanergou 3 years ago
parent
commit
212d86f428
  1. 44
      src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java
  2. 8
      src/main/resources/templates/pages/depository/table-stock.html
  3. 60
      src/main/resources/templates/pages/material/material-out.html
  4. 9
      src/main/resources/templates/pages/materialtype/materialType_view.html

44
src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java

@ -120,6 +120,9 @@ public class ExcelServiceImpl implements ExcelService {
double temp = threadSize - maxThreadSize; double temp = threadSize - maxThreadSize;
maxThreadSize = (int) (Math.ceil(temp / maxThreadSize) * maxThreadSize); maxThreadSize = (int) (Math.ceil(temp / maxThreadSize) * maxThreadSize);
} }
if(maxThreadSize < threadSize){
maxThreadSize = threadSize;
}
// 定义开启线程数目 // 定义开启线程数目
int openThreadSize = 0; int openThreadSize = 0;
@ -237,10 +240,20 @@ public class ExcelServiceImpl implements ExcelService {
// 定义线程数 // 定义线程数
int threadSize = (int) Math.ceil(totalVal / size); int threadSize = (int) Math.ceil(totalVal / size);
// 定义最大线程数
int maxThreadSize = Runtime.getRuntime().availableProcessors();
if (threadSize > maxThreadSize) {
double temp = threadSize - maxThreadSize;
maxThreadSize = (int) (Math.ceil(temp / maxThreadSize) * maxThreadSize);
}
if(maxThreadSize < threadSize){
maxThreadSize = threadSize;
}
// 定义开启线程数目 // 定义开启线程数目
int openThreadSize = 0; int openThreadSize = 0;
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize)); ExecutorService exs = new ThreadPoolExecutor(threadSize, maxThreadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(maxThreadSize));
// 线程结果集 // 线程结果集
List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>(); List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>();
@ -357,10 +370,20 @@ public class ExcelServiceImpl implements ExcelService {
// 定义线程数 // 定义线程数
int threadSize = (int) Math.ceil(totalVal / size); int threadSize = (int) Math.ceil(totalVal / size);
// 定义最大线程数
int maxThreadSize = Runtime.getRuntime().availableProcessors();
if (threadSize > maxThreadSize) {
double temp = threadSize - maxThreadSize;
maxThreadSize = (int) (Math.ceil(temp / maxThreadSize) * maxThreadSize);
}
if(maxThreadSize < threadSize){
maxThreadSize = threadSize;
}
// 定义开启线程数目 // 定义开启线程数目
int openThreadSize = 0; int openThreadSize = 0;
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize)); ExecutorService exs = new ThreadPoolExecutor(threadSize, maxThreadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(maxThreadSize));
// 线程结果集 // 线程结果集
List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>(); List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>();
@ -405,8 +428,6 @@ public class ExcelServiceImpl implements ExcelService {
// 关闭线程池 // 关闭线程池
PublicConfig.closeThreadPool(exs); PublicConfig.closeThreadPool(exs);
} }
List<ExcelInfoByInventory> userExcelInventoryInfo = ExcelFileInfoPool.getUserExcelInventoryInfo(userByPort.getNumber()); List<ExcelInfoByInventory> userExcelInventoryInfo = ExcelFileInfoPool.getUserExcelInventoryInfo(userByPort.getNumber());
if (userExcelInventoryInfo == null) { if (userExcelInventoryInfo == null) {
userExcelInventoryInfo = new ArrayList<>(); userExcelInventoryInfo = new ArrayList<>();
@ -612,6 +633,7 @@ public class ExcelServiceImpl implements ExcelService {
public void executeImportForInventory(UserByPort userByPort) { public void executeImportForInventory(UserByPort userByPort) {
List<Object> success = new ArrayList<>(); List<Object> success = new ArrayList<>();
String number = userByPort.getNumber(); String number = userByPort.getNumber();
int successCount = 0;
List<ExcelInfoByInventory> excelVosForInventory = ExcelFileInfoPool.getUserExcelInventoryInfo(number); List<ExcelInfoByInventory> excelVosForInventory = ExcelFileInfoPool.getUserExcelInventoryInfo(number);
for (int i = 0; i < excelVosForInventory.size(); i++) { for (int i = 0; i < excelVosForInventory.size(); i++) {
ExcelInfoByInventory excelInfoByInventory = excelVosForInventory.get(i); ExcelInfoByInventory excelInfoByInventory = excelVosForInventory.get(i);
@ -648,7 +670,7 @@ public class ExcelServiceImpl implements ExcelService {
} }
// 插入库存记录 // 插入库存记录
materialService.insertInventoryForImport(insert); successCount += materialService.insertInventoryForImport(insert);
// 将该物料同时放入默认库位中 // 将该物料同时放入默认库位中
String placeCode = excelInfoByInventory.getDepositoryCode(); String placeCode = excelInfoByInventory.getDepositoryCode();
@ -725,7 +747,7 @@ public class ExcelServiceImpl implements ExcelService {
} }
} }
ExcelFileInfoPool.removeUserExcelInventoryInfo(number); ExcelFileInfoPool.removeUserExcelInventoryInfo(number);
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForInventory) + ";导入人员" + userByPort.getName() + ":" + userByPort.getNumber()); log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForInventory) + ";导入人员" + userByPort.getName() + ":" + userByPort.getNumber()+";导入总数为:"+successCount);
} }
@ -738,6 +760,7 @@ public class ExcelServiceImpl implements ExcelService {
List<Object> success = new ArrayList<>(); List<Object> success = new ArrayList<>();
String number = userByPort.getNumber(); String number = userByPort.getNumber();
int successNum = 0;
List<ExcelInfoByMT> excelVosForMaterialType = ExcelFileInfoPool.getUserExcelMaterialTypeInfo(number); List<ExcelInfoByMT> excelVosForMaterialType = ExcelFileInfoPool.getUserExcelMaterialTypeInfo(number);
for (int i = 0; i < excelVosForMaterialType.size(); i++) { for (int i = 0; i < excelVosForMaterialType.size(); i++) {
ExcelInfoByMT excelInfoByMT = excelVosForMaterialType.get(i); ExcelInfoByMT excelInfoByMT = excelVosForMaterialType.get(i);
@ -751,7 +774,7 @@ public class ExcelServiceImpl implements ExcelService {
} else { } else {
insert.put("materialTypeId", info.getParentId()); insert.put("materialTypeId", info.getParentId());
} }
materialTypeService.insertMaterialType(insert); successNum+=materialTypeService.insertMaterialType(insert);
success.add(info); success.add(info);
if ((i + 1) % 100 == 0 || excelVosForMaterialType.size() - 1 == i) { if ((i + 1) % 100 == 0 || excelVosForMaterialType.size() - 1 == i) {
// 如果凑够100条或者已经循环完成 发送消息 // 如果凑够100条或者已经循环完成 发送消息
@ -765,7 +788,7 @@ public class ExcelServiceImpl implements ExcelService {
} }
ExcelFileInfoPool.removeUserExcelMaterialTypeInfo(number); ExcelFileInfoPool.removeUserExcelMaterialTypeInfo(number);
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForMaterialType) + ";导入人员" + userByPort.getName() + ":" + userByPort.getNumber()); log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForMaterialType) + ";导入人员" + userByPort.getName() + ":" + userByPort.getNumber()+";导入总数"+successNum);
} }
@ -776,6 +799,7 @@ public class ExcelServiceImpl implements ExcelService {
List<Object> success = new ArrayList<>(); List<Object> success = new ArrayList<>();
String number = userByPort.getNumber(); String number = userByPort.getNumber();
List<ExcelInfoForMaterial> excelVosForMaterial = ExcelFileInfoPool.getUserExcelMaterialInfo(number); List<ExcelInfoForMaterial> excelVosForMaterial = ExcelFileInfoPool.getUserExcelMaterialInfo(number);
int successNum = 0;
for (int i = 0; i < excelVosForMaterial.size(); i++) { for (int i = 0; i < excelVosForMaterial.size(); i++) {
ExcelInfoForMaterial excelVo = excelVosForMaterial.get(i); ExcelInfoForMaterial excelVo = excelVosForMaterial.get(i);
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
@ -811,7 +835,7 @@ public class ExcelServiceImpl implements ExcelService {
param.put("brand", excelVo.getBrand()); param.put("brand", excelVo.getBrand());
param.put("price", excelVo.getPrice() == null ? "0" : excelVo.getPrice()); param.put("price", excelVo.getPrice() == null ? "0" : excelVo.getPrice());
param.put("uid", userByPort.getId()); param.put("uid", userByPort.getId());
materialService.insertMaterial(param); successNum += materialService.insertMaterial(param);
success.add(excelVo); success.add(excelVo);
if ((i + 1) % 100 == 0 || excelVosForMaterial.size() - 1 == i) { if ((i + 1) % 100 == 0 || excelVosForMaterial.size() - 1 == i) {
// 如果凑够100条或者已经循环完成 发送消息 // 如果凑够100条或者已经循环完成 发送消息
@ -824,7 +848,7 @@ public class ExcelServiceImpl implements ExcelService {
} }
} }
ExcelFileInfoPool.removeUserExcelMaterialInfo(number); ExcelFileInfoPool.removeUserExcelMaterialInfo(number);
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForMaterial) + ";导入人员" + userByPort.getName() + ":" + userByPort.getNumber()); log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForMaterial) + ";导入人员" + userByPort.getName() + ":" + userByPort.getNumber()+";导入总数"+successNum);
} }

8
src/main/resources/templates/pages/depository/table-stock.html

@ -564,11 +564,17 @@
//如果上传成功 //如果上传成功
if (res.code === 200) { if (res.code === 200) {
var re = ""; var re = "";
let errMsgNum = res.data.errMsg.length;
if (errMsgNum > 0) {
re += "<h4>错误总数为:" + errMsgNum + "</h4>";
}
for (let i = 0; i < res.data.errMsg.length; i++) { for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + "</p>"; var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + "</p>";
re += show re += show
} }
for (let i = 0; i < res.data.dataList.length; i++) { let dataNum = res.data.dataList.length;
re += "<h4>待导入数据总数为:" + dataNum + "</h4>";
for (let i = 0; i < dataNum; i++) {
let dataListElement = res.data.dataList[i]; let dataListElement = res.data.dataList[i];
var code = dataListElement["code"] === null ? '' : dataListElement["code"]; var code = dataListElement["code"] === null ? '' : dataListElement["code"];
var mname = dataListElement["mname"]; var mname = dataListElement["mname"];

60
src/main/resources/templates/pages/material/material-out.html

@ -85,16 +85,21 @@
<script type="text/html" id="toolbarDemo"> <script type="text/html" id="toolbarDemo">
<div class="layui-btn-container"> <div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add" th:style="'display:'+${display}"> 添加</button> <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"
th:style="'display:'+${display}"> 添加
</button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete" <button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"
th:style="'display:'+${display}"> 删除 th:style="'display:'+${display}"> 删除
</button> </button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="applicationIn"> 入库申请 <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="applicationIn"> 入库申请
</button> </button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" id="u_fileUpload" th:style="'display:'+${display}" <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" id="u_fileUpload"
th:style="'display:'+${display}"
lay-event="import">导入数据 lay-event="import">导入数据
</button> </button>
<button class="layui-btn layui-btn-warm layui-btn-sm" lay-event="downloadFile" th:style="'display:'+${display}">下载导入模板</button> <button class="layui-btn layui-btn-warm layui-btn-sm" lay-event="downloadFile"
th:style="'display:'+${display}">下载导入模板
</button>
</div> </div>
</script> </script>
@ -169,7 +174,7 @@
let cols = [ let cols = [
{type: "checkbox", width: 50}, {type: "checkbox", width: 50},
{field: 'mcode',title: '存货编码', width: 150, templet: '#materialCode'}, {field: 'mcode', title: '存货编码', width: 150, templet: '#materialCode'},
{field: 'mname', width: 120, title: '物料名称', sort: false}, {field: 'mname', width: 120, title: '物料名称', sort: false},
{field: 'typeName', width: 150, title: '物料种类'}, {field: 'typeName', width: 150, title: '物料种类'},
{field: 'version', width: 200, title: '规格型号', sort: false}, {field: 'version', width: 200, title: '规格型号', sort: false},
@ -270,11 +275,17 @@
if (res.code === 200) { if (res.code === 200) {
//如果上传成功 //如果上传成功
var re = ""; var re = "";
for (let i = 0; i < res.data.errMsg.length; i++) { let errMsgNum = res.data.errMsg.length;
if (errMsgNum > 0) {
re += "<h4>错误总数为:" + errMsgNum + "</h4>";
}
for (let i = 0; i < errMsgNum; i++) {
var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + ":错误" + "</p>"; var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + ":错误" + "</p>";
re += show re += show
} }
for (let i = 0; i < res.data.dataList.length; i++) { let dataNum = res.data.dataList.length;
re += "<h4>待导入数据总数为:" + dataNum + "</h4>";
for (let i = 0; i < dataNum; i++) {
var mname = res.data.dataList[i]["mname"]; var mname = res.data.dataList[i]["mname"];
var code = res.data.dataList[i]["code"] == null || res.data.dataList[i]["code"] === undefined ? "" : res.data.dataList[i]["code"]; var code = res.data.dataList[i]["code"] == null || res.data.dataList[i]["code"] === undefined ? "" : res.data.dataList[i]["code"];
var version = res.data.dataList[i]["version"] == null || res.data.dataList[i]["version"] === undefined ? "" : res.data.dataList[i]["version"]; var version = res.data.dataList[i]["version"] == null || res.data.dataList[i]["version"] === undefined ? "" : res.data.dataList[i]["version"];
@ -287,7 +298,7 @@
if ("WebSocket" in window) { if ("WebSocket" in window) {
let number = $("#number").val(); let number = $("#number").val();
socket = new WebSocket('ws://127.0.0.1:11111/webSocket/'+number); socket = new WebSocket('ws://127.0.0.1:11111/webSocket/' + number);
switch (socket.readyState) { switch (socket.readyState) {
case WebSocket.CONNECTING: case WebSocket.CONNECTING:
// 连接中 // 连接中
@ -310,8 +321,8 @@
} }
socket.addEventListener('message', function (event) { socket.addEventListener('message', function (event) {
layer.close(newIndexShade); layer.close(newIndexShade);
let shadeItem = '<div class="layui-layer-shade" id='+"layui-layer-shade-x"+newIndexShade+' times="753951" style="z-index:1231233; background-color: rgb(0, 0, 0); opacity: 0.8;"></div>'; let shadeItem = '<div class="layui-layer-shade" id=' + "layui-layer-shade-x" + newIndexShade + ' times="753951" style="z-index:1231233; background-color: rgb(0, 0, 0); opacity: 0.8;"></div>';
if ($("#"+"layui-layer-shade-x"+newIndexShade).length <= 0) { if ($("#" + "layui-layer-shade-x" + newIndexShade).length <= 0) {
$('body').append(shadeItem); $('body').append(shadeItem);
} }
let jsonObject = JSON.parse(event.data); let jsonObject = JSON.parse(event.data);
@ -346,9 +357,15 @@
, moveType: 1 //拖拽模式,0或者1 , moveType: 1 //拖拽模式,0或者1
, content: re , content: re
, yes: function (index, layero) { , yes: function (index, layero) {
if(flagForImport){ if (flagForImport) {
flagForImport = false; flagForImport = false;
let loading2 = layer.open({ type: 3, shade: [0.25, '#000'], icon: 2, speed: 0,shadeClose:true}); let loading2 = layer.open({
type: 3,
shade: [0.25, '#000'],
icon: 2,
speed: 0,
shadeClose: true
});
//按钮【按钮一】的回调 //按钮【按钮一】的回调
$.ajax({ $.ajax({
url: "/excel/realImportMaterial", url: "/excel/realImportMaterial",
@ -359,13 +376,13 @@
success: function () { success: function () {
if (socket !== null) { if (socket !== null) {
socket.close(); socket.close();
}else{ } else {
layer.close(index); layer.close(index);
} }
flagForImport = true; flagForImport = true;
layer.alert("数据导入完成", { layer.alert("数据导入完成", {
icon: 0 icon: 0
},function (indexForMsg,layero) { }, function (indexForMsg, layero) {
layer.close(indexForMsg); layer.close(indexForMsg);
layer.close(loading2); layer.close(loading2);
closeShowDataMessage(); closeShowDataMessage();
@ -417,10 +434,8 @@
} }
closeShowDataMessage = function () { closeShowDataMessage = function () {
$("#layui-layer-shade-x"+newIndexShade).remove(); $("#layui-layer-shade-x" + newIndexShade).remove();
$("#showImportData").hide(); $("#showImportData").hide();
$("#showDataContent").empty(); $("#showDataContent").empty();
if (socket !== null) { if (socket !== null) {
@ -478,8 +493,7 @@
$(window).on("resize", function () { $(window).on("resize", function () {
layer.full(index); layer.full(index);
}); });
} } else if (obj.event === 'delete') { // 监听删除操作
else if (obj.event === 'delete') { // 监听删除操作
var checkStatus = table.checkStatus('currentTableId') var checkStatus = table.checkStatus('currentTableId')
, data = checkStatus.data; , data = checkStatus.data;
var req = {}; var req = {};
@ -524,8 +538,7 @@
layer.msg("未选中记录,请确认!"); layer.msg("未选中记录,请确认!");
return false; return false;
} }
} } else if (obj.event === 'applicationIn') {
else if (obj.event === 'applicationIn') {
// 入库申请 // 入库申请
var checkStatus = table.checkStatus('currentTableId') var checkStatus = table.checkStatus('currentTableId')
, data = checkStatus.data; , data = checkStatus.data;
@ -533,7 +546,7 @@
req.mids = ""; req.mids = "";
// 获取所有选中的id // 获取所有选中的id
for (let i = 0, len = data.length; i < len; i++) { for (let i = 0, len = data.length; i < len; i++) {
req.mids += (data[i].id+","); req.mids += (data[i].id + ",");
} }
req.type = "In"; req.type = "In";
$.ajax({ $.ajax({
@ -567,8 +580,7 @@
} }
}) })
} } else if (obj.event === 'downloadFile') {
else if (obj.event === 'downloadFile') {
window.open("/download/materialImportDownload", "_self"); window.open("/download/materialImportDownload", "_self");
} }
}); });
@ -678,7 +690,7 @@
//监听状态操作 //监听状态操作
form.on('switch(changeState)', function (obj) { form.on('switch(changeState)', function (obj) {
let display = $("#display").val(); let display = $("#display").val();
if(display !== "none"){ if (display !== "none") {
var req = new Map; var req = new Map;
if (obj.elem.checked) { if (obj.elem.checked) {
req["state"] = 1 req["state"] = 1

9
src/main/resources/templates/pages/materialtype/materialType_view.html

@ -273,12 +273,17 @@
//如果上传成功 //如果上传成功
if (res.code === 200) { if (res.code === 200) {
var re = ""; var re = "";
let errMsgNum = res.data.errMsg.length;
if (errMsgNum > 0) {
re += "<h4>错误总数为:" + errMsgNum + "</h4>";
}
for (let i = 0; i < res.data.errMsg.length; i++) { for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + ":错误" + "</p>"; var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + ":错误" + "</p>";
re += show re += show
} }
console.log(res.data.dataList.length); let dataNum = res.data.dataList.length;
for (let i = 0; i < res.data.dataList.length; i++) { re += "<h4>待导入数据总数为:" + dataNum + "</h4>";
for (let i = 0; i < dataNum; i++) {
var tname = res.data.dataList[i]["tname"]; var tname = res.data.dataList[i]["tname"];
var id = res.data.dataList[i]["oldId"]; var id = res.data.dataList[i]["oldId"];
var parentId = res.data.dataList[i]["parentId"] == null ? "" : res.data.dataList[i]["parentId"]; var parentId = res.data.dataList[i]["parentId"] == null ? "" : res.data.dataList[i]["parentId"];

Loading…
Cancel
Save