多查询-分页导出
parent
39a6e9d1d6
commit
d76a6d10cf
|
|
@ -91,6 +91,7 @@
|
||||||
import FileSaver from 'file-saver'
|
import FileSaver from 'file-saver'
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
import XLSX from 'xlsx'
|
import XLSX from 'xlsx'
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
export default {
|
export default {
|
||||||
// eslint-disable-next-line vue/multi-word-component-names
|
// eslint-disable-next-line vue/multi-word-component-names
|
||||||
name:"拣货任务效率统计",
|
name:"拣货任务效率统计",
|
||||||
|
|
@ -209,11 +210,6 @@ export default {
|
||||||
minWidth: '150px',
|
minWidth: '150px',
|
||||||
label: '拣货-合单时间'
|
label: '拣货-合单时间'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
prop: '拣货-合单时间',
|
|
||||||
minWidth: '150px',
|
|
||||||
label: '拣货-合单时间'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
prop: '合单-交单时间',
|
prop: '合单-交单时间',
|
||||||
minWidth: '150px',
|
minWidth: '150px',
|
||||||
|
|
@ -337,46 +333,15 @@ export default {
|
||||||
},
|
},
|
||||||
// 表格数据写入excel,并导出为Excel文件
|
// 表格数据写入excel,并导出为Excel文件
|
||||||
downExcel(){
|
downExcel(){
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/JianHuoXiaoLv/download', '拣货任务效率统计', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
let a = 1;
|
})
|
||||||
let t = this.total;
|
.catch(error => {
|
||||||
// eslint-disable-next-line no-constant-condition,no-empty
|
console.error('系统错误:', error);
|
||||||
while (true){
|
this.tableloding = false;
|
||||||
/* 分文件导出*/
|
});
|
||||||
let b=500000;
|
|
||||||
if (t<b){
|
|
||||||
b = t;
|
|
||||||
}
|
|
||||||
t=t-b;
|
|
||||||
console.log(a+","+b+","+t)
|
|
||||||
this.$axios.post(this.$httpUrl + '/JianHuoXiaoLv/download', {
|
|
||||||
pageSize: b,
|
|
||||||
pageNum: a,
|
|
||||||
param: this.param,
|
|
||||||
},{responseType:'blob'}).then(res => {
|
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'拣货任务效率统计'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
if (t<=0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
},
|
||||||
KuS(){
|
KuS(){
|
||||||
//库区下拉列表数据加载
|
//库区下拉列表数据加载
|
||||||
|
|
@ -412,7 +377,7 @@ export default {
|
||||||
this.tableloding=false;
|
this.tableloding=false;
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
parseTime(time, cFormat) {
|
/*parseTime(time, cFormat) {
|
||||||
//获取当前时间
|
//获取当前时间
|
||||||
if (arguments.length === 0) {
|
if (arguments.length === 0) {
|
||||||
return null
|
return null
|
||||||
|
|
@ -451,7 +416,7 @@ export default {
|
||||||
return value || 0
|
return value || 0
|
||||||
})
|
})
|
||||||
return time_str
|
return time_str
|
||||||
},
|
},*/
|
||||||
Allquesr(){
|
Allquesr(){
|
||||||
//查询按钮
|
//查询按钮
|
||||||
if(this.checked){
|
if(this.checked){
|
||||||
|
|
|
||||||
|
|
@ -625,6 +625,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -919,73 +920,15 @@ export default {
|
||||||
this.downExcel();
|
this.downExcel();
|
||||||
},
|
},
|
||||||
downExcel() {
|
downExcel() {
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/Jianhuojiemian/download', '拣货界面', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
this.$axios.post(this.$httpUrl + '/Jianhuojiemian/download', {
|
})
|
||||||
pageSize: this.total,
|
.catch(error => {
|
||||||
pageNum: 1,
|
console.error('系统错误:', error);
|
||||||
param: this.param,
|
this.tableloding = false;
|
||||||
},{responseType:'blob'}).then(res => {
|
});
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'拣货界面'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
//列表数据加载
|
|
||||||
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
|
||||||
parseTime(time, cFormat) {
|
|
||||||
//获取当前时间
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
|
||||||
let date
|
|
||||||
if (typeof time === 'undefined' || time === null || time === 'null') {
|
|
||||||
return ''
|
|
||||||
} else if (typeof time === 'object') {
|
|
||||||
date = time
|
|
||||||
} else {
|
|
||||||
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
|
||||||
time = parseInt(time)
|
|
||||||
}
|
|
||||||
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
|
||||||
time = time * 1000
|
|
||||||
}
|
|
||||||
date = new Date(time)
|
|
||||||
}
|
|
||||||
const formatObj = {
|
|
||||||
y: date.getFullYear(),
|
|
||||||
m: date.getMonth() + 1,
|
|
||||||
d: date.getDate(),
|
|
||||||
h: date.getHours(),
|
|
||||||
i: date.getMinutes(),
|
|
||||||
s: date.getSeconds(),
|
|
||||||
a: date.getDay()
|
|
||||||
}
|
|
||||||
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
|
||||||
let value = formatObj[key]
|
|
||||||
// Note: getDay() returns 0 on Sunday
|
|
||||||
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
|
|
||||||
if (result.length > 0 && value < 10) {
|
|
||||||
value = '0' + value
|
|
||||||
}
|
|
||||||
return value || 0
|
|
||||||
})
|
|
||||||
return time_str
|
|
||||||
},
|
},
|
||||||
Allquesr(){
|
Allquesr(){
|
||||||
//查询按钮
|
//查询按钮
|
||||||
|
|
|
||||||
|
|
@ -612,6 +612,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -833,73 +834,15 @@ export default {
|
||||||
this.downExcel();
|
this.downExcel();
|
||||||
},
|
},
|
||||||
downExcel() {
|
downExcel() {
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/Kucunhuizong/download', '库存汇总', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
this.$axios.post(this.$httpUrl + '/Kucunhuizong/download', {
|
})
|
||||||
pageSize: this.total,
|
.catch(error => {
|
||||||
pageNum: 1,
|
console.error('系统错误:', error);
|
||||||
param: this.param,
|
this.tableloding = false;
|
||||||
},{responseType:'blob'}).then(res => {
|
});
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'库存汇总'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
//列表数据加载
|
|
||||||
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
|
||||||
parseTime(time, cFormat) {
|
|
||||||
//获取当前时间
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
|
||||||
let date
|
|
||||||
if (typeof time === 'undefined' || time === null || time === 'null') {
|
|
||||||
return ''
|
|
||||||
} else if (typeof time === 'object') {
|
|
||||||
date = time
|
|
||||||
} else {
|
|
||||||
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
|
||||||
time = parseInt(time)
|
|
||||||
}
|
|
||||||
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
|
||||||
time = time * 1000
|
|
||||||
}
|
|
||||||
date = new Date(time)
|
|
||||||
}
|
|
||||||
const formatObj = {
|
|
||||||
y: date.getFullYear(),
|
|
||||||
m: date.getMonth() + 1,
|
|
||||||
d: date.getDate(),
|
|
||||||
h: date.getHours(),
|
|
||||||
i: date.getMinutes(),
|
|
||||||
s: date.getSeconds(),
|
|
||||||
a: date.getDay()
|
|
||||||
}
|
|
||||||
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
|
||||||
let value = formatObj[key]
|
|
||||||
// Note: getDay() returns 0 on Sunday
|
|
||||||
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
|
|
||||||
if (result.length > 0 && value < 10) {
|
|
||||||
value = '0' + value
|
|
||||||
}
|
|
||||||
return value || 0
|
|
||||||
})
|
|
||||||
return time_str
|
|
||||||
},
|
},
|
||||||
Allquesr(){
|
Allquesr(){
|
||||||
//查询按钮
|
//查询按钮
|
||||||
|
|
|
||||||
|
|
@ -346,6 +346,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
export default {
|
export default {
|
||||||
name: "Kucunrizhi",
|
name: "Kucunrizhi",
|
||||||
data() {
|
data() {
|
||||||
|
|
@ -418,7 +419,6 @@ export default {
|
||||||
mounted() {
|
mounted() {
|
||||||
this.queryUser();
|
this.queryUser();
|
||||||
this.LOC();
|
this.LOC();
|
||||||
this.LogS();
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleEdit(index, row) {
|
handleEdit(index, row) {
|
||||||
|
|
@ -484,73 +484,15 @@ export default {
|
||||||
this.downExcel();
|
this.downExcel();
|
||||||
},
|
},
|
||||||
downExcel() {
|
downExcel() {
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/Kucunrizhi/download', '库存操作日志', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
this.$axios.post(this.$httpUrl + '/Kucunrizhi/download', {
|
})
|
||||||
pageSize: this.pageSize,
|
.catch(error => {
|
||||||
pageNum: this.pageNum,
|
console.error('系统错误:', error);
|
||||||
param: this.param,
|
this.tableloding = false;
|
||||||
},{responseType:'blob'}).then(res => {
|
});
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'库存操作日志'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
//列表数据加载
|
|
||||||
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
|
||||||
parseTime(time, cFormat) {
|
|
||||||
//获取当前时间
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
|
||||||
let date
|
|
||||||
if (typeof time === 'undefined' || time === null || time === 'null') {
|
|
||||||
return ''
|
|
||||||
} else if (typeof time === 'object') {
|
|
||||||
date = time
|
|
||||||
} else {
|
|
||||||
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
|
||||||
time = parseInt(time)
|
|
||||||
}
|
|
||||||
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
|
||||||
time = time * 1000
|
|
||||||
}
|
|
||||||
date = new Date(time)
|
|
||||||
}
|
|
||||||
const formatObj = {
|
|
||||||
y: date.getFullYear(),
|
|
||||||
m: date.getMonth() + 1,
|
|
||||||
d: date.getDate(),
|
|
||||||
h: date.getHours(),
|
|
||||||
i: date.getMinutes(),
|
|
||||||
s: date.getSeconds(),
|
|
||||||
a: date.getDay()
|
|
||||||
}
|
|
||||||
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
|
||||||
let value = formatObj[key]
|
|
||||||
// Note: getDay() returns 0 on Sunday
|
|
||||||
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
|
|
||||||
if (result.length > 0 && value < 10) {
|
|
||||||
value = '0' + value
|
|
||||||
}
|
|
||||||
return value || 0
|
|
||||||
})
|
|
||||||
return time_str
|
|
||||||
},
|
},
|
||||||
Allquesr(){
|
Allquesr(){
|
||||||
//查询按钮
|
//查询按钮
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -334,73 +335,15 @@ export default {
|
||||||
this.downExcel();
|
this.downExcel();
|
||||||
},
|
},
|
||||||
downExcel() {
|
downExcel() {
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/dcx/download', '料箱监控', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
this.$axios.post(this.$httpUrl + '/dcx/download', {
|
})
|
||||||
pageSize: this.total,
|
.catch(error => {
|
||||||
pageNum: 1,
|
console.error('系统错误:', error);
|
||||||
param: this.param,
|
this.tableloding = false;
|
||||||
},{responseType:'blob'}).then(res => {
|
});
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'料箱监控'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
//列表数据加载
|
|
||||||
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
|
||||||
parseTime(time, cFormat) {
|
|
||||||
//获取当前时间
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
|
||||||
let date
|
|
||||||
if (typeof time === 'undefined' || time === null || time === 'null') {
|
|
||||||
return ''
|
|
||||||
} else if (typeof time === 'object') {
|
|
||||||
date = time
|
|
||||||
} else {
|
|
||||||
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
|
||||||
time = parseInt(time)
|
|
||||||
}
|
|
||||||
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
|
||||||
time = time * 1000
|
|
||||||
}
|
|
||||||
date = new Date(time)
|
|
||||||
}
|
|
||||||
const formatObj = {
|
|
||||||
y: date.getFullYear(),
|
|
||||||
m: date.getMonth() + 1,
|
|
||||||
d: date.getDate(),
|
|
||||||
h: date.getHours(),
|
|
||||||
i: date.getMinutes(),
|
|
||||||
s: date.getSeconds(),
|
|
||||||
a: date.getDay()
|
|
||||||
}
|
|
||||||
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
|
||||||
let value = formatObj[key]
|
|
||||||
// Note: getDay() returns 0 on Sunday
|
|
||||||
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
|
|
||||||
if (result.length > 0 && value < 10) {
|
|
||||||
value = '0' + value
|
|
||||||
}
|
|
||||||
return value || 0
|
|
||||||
})
|
|
||||||
return time_str
|
|
||||||
},
|
},
|
||||||
Allquesr(){
|
Allquesr(){
|
||||||
//查询按钮
|
//查询按钮
|
||||||
|
|
|
||||||
|
|
@ -419,6 +419,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -590,73 +591,15 @@ export default {
|
||||||
this.downExcel();
|
this.downExcel();
|
||||||
},
|
},
|
||||||
downExcel() {
|
downExcel() {
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/Pandianmingxi/download', '盘点明细查询', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
this.$axios.post(this.$httpUrl + '/Pandianmingxi/download', {
|
})
|
||||||
pageSize: this.total,
|
.catch(error => {
|
||||||
pageNum: 1,
|
console.error('系统错误:', error);
|
||||||
param: this.param,
|
this.tableloding = false;
|
||||||
},{responseType:'blob'}).then(res => {
|
});
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'盘点明细查询'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
//列表数据加载
|
|
||||||
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
|
||||||
parseTime(time, cFormat) {
|
|
||||||
//获取当前时间
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
|
||||||
let date
|
|
||||||
if (typeof time === 'undefined' || time === null || time === 'null') {
|
|
||||||
return ''
|
|
||||||
} else if (typeof time === 'object') {
|
|
||||||
date = time
|
|
||||||
} else {
|
|
||||||
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
|
||||||
time = parseInt(time)
|
|
||||||
}
|
|
||||||
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
|
||||||
time = time * 1000
|
|
||||||
}
|
|
||||||
date = new Date(time)
|
|
||||||
}
|
|
||||||
const formatObj = {
|
|
||||||
y: date.getFullYear(),
|
|
||||||
m: date.getMonth() + 1,
|
|
||||||
d: date.getDate(),
|
|
||||||
h: date.getHours(),
|
|
||||||
i: date.getMinutes(),
|
|
||||||
s: date.getSeconds(),
|
|
||||||
a: date.getDay()
|
|
||||||
}
|
|
||||||
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
|
||||||
let value = formatObj[key]
|
|
||||||
// Note: getDay() returns 0 on Sunday
|
|
||||||
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
|
|
||||||
if (result.length > 0 && value < 10) {
|
|
||||||
value = '0' + value
|
|
||||||
}
|
|
||||||
return value || 0
|
|
||||||
})
|
|
||||||
return time_str
|
|
||||||
},
|
},
|
||||||
Allquesr(){
|
Allquesr(){
|
||||||
//查询按钮
|
//查询按钮
|
||||||
|
|
|
||||||
|
|
@ -410,6 +410,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Rukuzhengli",
|
name: "Rukuzhengli",
|
||||||
data() {
|
data() {
|
||||||
|
|
@ -559,73 +561,15 @@ export default {
|
||||||
this.downExcel();
|
this.downExcel();
|
||||||
},
|
},
|
||||||
downExcel() {
|
downExcel() {
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/Rukuzhengli/download', '入库整理', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
this.$axios.post(this.$httpUrl + '/Rukuzhengli/download', {
|
})
|
||||||
pageSize: this.total,
|
.catch(error => {
|
||||||
pageNum: 1,
|
console.error('系统错误:', error);
|
||||||
param: this.param,
|
this.tableloding = false;
|
||||||
},{responseType:'blob'}).then(res => {
|
});
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'入库整理'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
//列表数据加载
|
|
||||||
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
|
||||||
parseTime(time, cFormat) {
|
|
||||||
//获取当前时间
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
|
||||||
let date
|
|
||||||
if (typeof time === 'undefined' || time === null || time === 'null') {
|
|
||||||
return ''
|
|
||||||
} else if (typeof time === 'object') {
|
|
||||||
date = time
|
|
||||||
} else {
|
|
||||||
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
|
||||||
time = parseInt(time)
|
|
||||||
}
|
|
||||||
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
|
||||||
time = time * 1000
|
|
||||||
}
|
|
||||||
date = new Date(time)
|
|
||||||
}
|
|
||||||
const formatObj = {
|
|
||||||
y: date.getFullYear(),
|
|
||||||
m: date.getMonth() + 1,
|
|
||||||
d: date.getDate(),
|
|
||||||
h: date.getHours(),
|
|
||||||
i: date.getMinutes(),
|
|
||||||
s: date.getSeconds(),
|
|
||||||
a: date.getDay()
|
|
||||||
}
|
|
||||||
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
|
||||||
let value = formatObj[key]
|
|
||||||
// Note: getDay() returns 0 on Sunday
|
|
||||||
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
|
|
||||||
if (result.length > 0 && value < 10) {
|
|
||||||
value = '0' + value
|
|
||||||
}
|
|
||||||
return value || 0
|
|
||||||
})
|
|
||||||
return time_str
|
|
||||||
},
|
},
|
||||||
Allquesr(){
|
Allquesr(){
|
||||||
//查询按钮
|
//查询按钮
|
||||||
|
|
|
||||||
|
|
@ -346,6 +346,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -580,73 +581,15 @@ export default {
|
||||||
this.downExcel();
|
this.downExcel();
|
||||||
},
|
},
|
||||||
downExcel() {
|
downExcel() {
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/Xuliehaoqingdan/download', '序列号库存清点', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
this.$axios.post(this.$httpUrl + '/Xuliehaoqingdan/download', {
|
})
|
||||||
pageSize: this.total,
|
.catch(error => {
|
||||||
pageNum: 1,
|
console.error('系统错误:', error);
|
||||||
param: this.param,
|
this.tableloding = false;
|
||||||
},{responseType:'blob'}).then(res => {
|
});
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'序列号库存清点'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
//列表数据加载
|
|
||||||
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
|
||||||
parseTime(time, cFormat) {
|
|
||||||
//获取当前时间
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
|
||||||
let date
|
|
||||||
if (typeof time === 'undefined' || time === null || time === 'null') {
|
|
||||||
return ''
|
|
||||||
} else if (typeof time === 'object') {
|
|
||||||
date = time
|
|
||||||
} else {
|
|
||||||
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
|
||||||
time = parseInt(time)
|
|
||||||
}
|
|
||||||
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
|
||||||
time = time * 1000
|
|
||||||
}
|
|
||||||
date = new Date(time)
|
|
||||||
}
|
|
||||||
const formatObj = {
|
|
||||||
y: date.getFullYear(),
|
|
||||||
m: date.getMonth() + 1,
|
|
||||||
d: date.getDate(),
|
|
||||||
h: date.getHours(),
|
|
||||||
i: date.getMinutes(),
|
|
||||||
s: date.getSeconds(),
|
|
||||||
a: date.getDay()
|
|
||||||
}
|
|
||||||
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
|
||||||
let value = formatObj[key]
|
|
||||||
// Note: getDay() returns 0 on Sunday
|
|
||||||
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
|
|
||||||
if (result.length > 0 && value < 10) {
|
|
||||||
value = '0' + value
|
|
||||||
}
|
|
||||||
return value || 0
|
|
||||||
})
|
|
||||||
return time_str
|
|
||||||
},
|
},
|
||||||
Allquesr(){
|
Allquesr(){
|
||||||
//查询按钮
|
//查询按钮
|
||||||
|
|
|
||||||
|
|
@ -495,6 +495,7 @@
|
||||||
|
|
||||||
// import horizontalScroll from 'el-table-horizontal-scroll'
|
// import horizontalScroll from 'el-table-horizontal-scroll'
|
||||||
import {outFile} from "@/util/excel.vue";
|
import {outFile} from "@/util/excel.vue";
|
||||||
|
import { downloadExcel } from '@/util/excelUtils';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Main",
|
name: "Main",
|
||||||
|
|
@ -728,33 +729,15 @@ export default {
|
||||||
this.downExcel();
|
this.downExcel();
|
||||||
},
|
},
|
||||||
downExcel() {
|
downExcel() {
|
||||||
//显示加载图
|
this.tableloding = true;
|
||||||
this.tableloding=true;
|
downloadExcel('/Zhengliqingdan/download', '整理完成未上架清单', this.total, this.param)
|
||||||
//发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
|
.then(() => {
|
||||||
//参数和搜索参数一样
|
this.tableloding = false;
|
||||||
this.$axios.post(this.$httpUrl + '/Zhengliqingdan/download', {
|
})
|
||||||
pageSize: this.total,
|
.catch(error => {
|
||||||
pageNum: 1,
|
console.error('系统错误:', error);
|
||||||
param: this.param,
|
this.tableloding = false;
|
||||||
},{responseType:'blob'}).then(res => {
|
});
|
||||||
this.tableloding=false;
|
|
||||||
//重命名文件
|
|
||||||
this.downloadFile(res.data,'整理完成未上架清单'+ '数据', 'xlsx')
|
|
||||||
});
|
|
||||||
//列表数据加载
|
|
||||||
|
|
||||||
},
|
|
||||||
downloadFile(obj, name, suffix) {
|
|
||||||
//解析流文件,进行下载保存
|
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]))
|
|
||||||
const link = document.createElement('a')
|
|
||||||
link.style.display = 'none'
|
|
||||||
link.href = url
|
|
||||||
const fileName = this.parseTime(new Date()) + '-' + name + '.' + suffix
|
|
||||||
link.setAttribute('download', fileName)
|
|
||||||
document.body.appendChild(link)
|
|
||||||
link.click()
|
|
||||||
document.body.removeChild(link)
|
|
||||||
},
|
},
|
||||||
parseTime(time, cFormat) {
|
parseTime(time, cFormat) {
|
||||||
//获取当前时间
|
//获取当前时间
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
// src/plugins/axiosPlugin.js
|
||||||
|
|
||||||
|
import axios from 'axios';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
install(Vue, options) {
|
||||||
|
// 创建 axios 实例
|
||||||
|
const instance = axios.create({
|
||||||
|
baseURL: options.httpUrl, // 假设 httpUrl 作为选项传递
|
||||||
|
timeout: 10000,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 将 axios 实例挂载到 Vue 原型上
|
||||||
|
Vue.prototype.$axios = instance;
|
||||||
|
Vue.prototype.$httpUrl = options.httpUrl;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
// src/utils/excelUtils.js
|
||||||
|
|
||||||
|
import axios from 'axios';
|
||||||
|
import Vue from "vue";
|
||||||
|
|
||||||
|
export function downloadExcel(url, fileNamePrefix, total, param) {
|
||||||
|
console.log(fileNamePrefix);
|
||||||
|
let i = 1;
|
||||||
|
let a = 1;
|
||||||
|
let t = total;
|
||||||
|
const requests = [];
|
||||||
|
const httpUrl = Vue.prototype.$httpUrl; // 确保这里使用正确的 API URL
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-constant-condition,no-empty
|
||||||
|
while (true) {
|
||||||
|
/* 分文件导出*/
|
||||||
|
let b = 500000;
|
||||||
|
if (t < b) {
|
||||||
|
b = t;
|
||||||
|
}
|
||||||
|
t = t - b;
|
||||||
|
console.log(a + "," + b + "," + t);
|
||||||
|
|
||||||
|
requests.push(
|
||||||
|
axios.post(httpUrl + url, {
|
||||||
|
pageSize: b,
|
||||||
|
pageNum: a,
|
||||||
|
param: param,
|
||||||
|
}, { responseType: 'blob' }).then(res => {
|
||||||
|
// 重命名文件
|
||||||
|
downloadFile(res.data, fileNamePrefix + '数据_' + i, 'xlsx');
|
||||||
|
i++;
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('下载失败:', error);
|
||||||
|
alert("下载失败")
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
if (t <= 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Promise.all(requests);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function downloadFile(obj, name, suffix) {
|
||||||
|
//解析流文件,进行下载保存
|
||||||
|
const url = window.URL.createObjectURL(new Blob([obj]))
|
||||||
|
const link = document.createElement('a')
|
||||||
|
link.style.display = 'none'
|
||||||
|
link.href = url
|
||||||
|
const fileName = parseTime(new Date()) + '-' + name + '.' + suffix
|
||||||
|
link.setAttribute('download', fileName)
|
||||||
|
document.body.appendChild(link)
|
||||||
|
link.click()
|
||||||
|
document.body.removeChild(link)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function parseTime(time, cFormat) {
|
||||||
|
// 获取当前时间
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}';
|
||||||
|
let date;
|
||||||
|
if (typeof time === 'undefined' || time === null || time === 'null') {
|
||||||
|
return '';
|
||||||
|
} else if (typeof time === 'object') {
|
||||||
|
date = time;
|
||||||
|
} else {
|
||||||
|
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
||||||
|
time = parseInt(time);
|
||||||
|
}
|
||||||
|
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
||||||
|
time = time * 1000;
|
||||||
|
}
|
||||||
|
date = new Date(time);
|
||||||
|
}
|
||||||
|
const formatObj = {
|
||||||
|
y: date.getFullYear(),
|
||||||
|
m: date.getMonth() + 1,
|
||||||
|
d: date.getDate(),
|
||||||
|
h: date.getHours(),
|
||||||
|
i: date.getMinutes(),
|
||||||
|
s: date.getSeconds(),
|
||||||
|
a: date.getDay()
|
||||||
|
};
|
||||||
|
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
||||||
|
let value = formatObj[key];
|
||||||
|
// Note: getDay() returns 0 on Sunday
|
||||||
|
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value]; }
|
||||||
|
if (result.length > 0 && value < 10) {
|
||||||
|
value = '0' + value;
|
||||||
|
}
|
||||||
|
return value || 0;
|
||||||
|
});
|
||||||
|
return time_str;
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
const { defineConfig } = require('@vue/cli-service')
|
const { defineConfig } = require('@vue/cli-service')
|
||||||
module.exports = defineConfig({
|
module.exports = defineConfig({
|
||||||
transpileDependencies: true,
|
transpileDependencies: true,
|
||||||
lintOnSave: false
|
lintOnSave: false,
|
||||||
|
devServer: {
|
||||||
|
port: 18084 //
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public class GGZXiaoLvController {
|
||||||
endDate=sdf.format(param.getJSONArray("日期").getDate(1));
|
endDate=sdf.format(param.getJSONArray("日期").getDate(1));
|
||||||
}
|
}
|
||||||
/* 基础sql数据查询*/
|
/* 基础sql数据查询*/
|
||||||
String sql=" select Row_number() OVER(order by v.库区,v.工作站 asc) as id,v.库区, "
|
String sql=" select Row_number() OVER(order by v.库区,v.工作站,v.业务类型 asc) as id,v.库区, "
|
||||||
+" v.工作站,sum(v.有效时效) '有效时效', v.业务类型 ,sum(v.有效时效)/540 '有效时间占比' ," +
|
+" v.工作站,sum(v.有效时效) '有效时效', v.业务类型 ,sum(v.有效时效)/540 '有效时间占比' ," +
|
||||||
" count(DISTINCT(v.任务号)) 任务数 from ( "
|
" count(DISTINCT(v.任务号)) 任务数 from ( "
|
||||||
+" select (case when left(agv.targetArea,1)='1' then '货架到人' when left(agv.targetArea,1)='2' then '料箱到人' end) as '库区', "
|
+" select (case when left(agv.targetArea,1)='1' then '货架到人' when left(agv.targetArea,1)='2' then '料箱到人' end) as '库区', "
|
||||||
|
|
@ -60,8 +60,7 @@ public class GGZXiaoLvController {
|
||||||
+" from agvtask agv "
|
+" from agvtask agv "
|
||||||
+" where CONVERT(VARCHAR,agv.createTime , 23)>='"+startDate+"' "
|
+" where CONVERT(VARCHAR,agv.createTime , 23)>='"+startDate+"' "
|
||||||
+" and CONVERT(VARCHAR,agv.createTime , 23)<='"+endDate+"' ) v "
|
+" and CONVERT(VARCHAR,agv.createTime , 23)<='"+endDate+"' ) v "
|
||||||
+" GROUP BY v.库区,v.工作站 ,v.业务类型 "
|
+" GROUP BY v.库区,v.工作站 ,v.业务类型 ";
|
||||||
+" order BY v.库区,v.工作站 ,v.业务类型 ";
|
|
||||||
String sqlCount = "select count(t.id) as nums from (" + sql+") t";
|
String sqlCount = "select count(t.id) as nums from (" + sql+") t";
|
||||||
/* 总条数*/
|
/* 总条数*/
|
||||||
List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
|
List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.yc.wms.controller;
|
package com.yc.wms.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.yc.wms.bean.Xuliehao;
|
import com.yc.wms.bean.Xuliehao;
|
||||||
|
|
@ -7,6 +8,7 @@ import com.yc.wms.service.Xuliehaoqingdan;
|
||||||
import com.yc.wms.until.QueryPageUtil;
|
import com.yc.wms.until.QueryPageUtil;
|
||||||
import com.yc.wms.until.Result;
|
import com.yc.wms.until.Result;
|
||||||
import com.yc.wms.utils.FileUtil;
|
import com.yc.wms.utils.FileUtil;
|
||||||
|
import com.yc.wms.utils.QueryUtil;
|
||||||
import com.yc.wms.utils.StringUtils;
|
import com.yc.wms.utils.StringUtils;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -23,6 +25,10 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
|
@ -35,7 +41,8 @@ public class JianHuoXiaoLvController {
|
||||||
private NamedParameterJdbcTemplate jdbcTemplate;
|
private NamedParameterJdbcTemplate jdbcTemplate;
|
||||||
@Autowired
|
@Autowired
|
||||||
private Xuliehaoqingdan xuliehaoqingdan;
|
private Xuliehaoqingdan xuliehaoqingdan;
|
||||||
|
@Autowired
|
||||||
|
private QueryUtil queryUtil;
|
||||||
private static /* 基础sql数据查询*/
|
private static /* 基础sql数据查询*/
|
||||||
String sql=" select t.id,bt.NAME as '单据类型',pt.sourceType as '出库类型',pt.id as '任务号',t.BILLCODE as '子任务号', "
|
String sql=" select t.id,bt.NAME as '单据类型',pt.sourceType as '出库类型',pt.id as '任务号',t.BILLCODE as '子任务号', "
|
||||||
+" z.NAME as '库区',ptd.LINE_NUMBER as '拣货行' ,pt.UPDATE_TIME as '创建时间',t.dateBill3 as '生成合单任务时间', "
|
+" z.NAME as '库区',ptd.LINE_NUMBER as '拣货行' ,pt.UPDATE_TIME as '创建时间',t.dateBill3 as '生成合单任务时间', "
|
||||||
|
|
@ -83,21 +90,25 @@ public class JianHuoXiaoLvController {
|
||||||
}
|
}
|
||||||
/* 当前页数据*/
|
/* 当前页数据*/
|
||||||
int pageNum = query.getPageNum();//当前页
|
int pageNum = query.getPageNum();//当前页
|
||||||
int pageSize = query.getPageSize();//条数
|
int pageSize = query.getPageSize();//查询条数
|
||||||
|
|
||||||
String sqlFa = "select * from( "
|
String sqlFa = "select * from( "
|
||||||
+ sql
|
+ sql
|
||||||
+ ") t where 1=1 "
|
+ ") t where 1=1 "
|
||||||
+ querySql ;
|
+ querySql ;
|
||||||
String sqlFy= sqlFa+" ORDER BY id "
|
|
||||||
+" OFFSET "+ (pageNum-1) * pageSize +" ROWS "
|
|
||||||
+" FETCH NEXT "+pageSize+" ROWS ONLY ";
|
|
||||||
|
|
||||||
/* 总条数*/
|
/* 总条数*/
|
||||||
String sqlCount = "select count(t.id) as nums from (" + sqlFa+") t";
|
String sqlCount = "select count(t.id) as nums from (" + sqlFa+") t";
|
||||||
List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
|
List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
|
||||||
/* 查询所有数据*/
|
/* 返回数据集合*/
|
||||||
List<Map<String,Object>> maps = jdbcTemplate.queryForList(sqlFy, new HashMap<>());
|
List<Map<String,Object>> maps;
|
||||||
|
if (pageSize>100000){
|
||||||
|
maps = queryUtil.multiThreadedQuery(sqlFa, pageSize, pageNum);
|
||||||
|
}else {
|
||||||
|
String sqlFy= sqlFa+" ORDER BY id "
|
||||||
|
+" OFFSET "+ (pageNum-1) * pageSize +" ROWS "
|
||||||
|
+" FETCH NEXT "+pageSize+" ROWS ONLY ";
|
||||||
|
maps = jdbcTemplate.queryForList(sqlFy, new HashMap<>());
|
||||||
|
}
|
||||||
for (int i = 0; i < maps.size(); i++) {
|
for (int i = 0; i < maps.size(); i++) {
|
||||||
Map<String,Object> map=maps.get(i);
|
Map<String,Object> map=maps.get(i);
|
||||||
map.put("mergeData",new HashMap() {{
|
map.put("mergeData",new HashMap() {{
|
||||||
|
|
@ -122,7 +133,7 @@ public class JianHuoXiaoLvController {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@PostMapping(value = "/download")
|
@PostMapping(value = "/download")
|
||||||
public void exportCompany(HttpServletResponse response, @RequestBody String json) throws Exception {
|
public synchronized void exportCompany(HttpServletResponse response, @RequestBody String json) throws Exception {
|
||||||
download( (List<Map<String,Object>>)queryList(json).getData(), response);
|
download( (List<Map<String,Object>>)queryList(json).getData(), response);
|
||||||
}
|
}
|
||||||
public void download(List<Map<String, Object>> all, HttpServletResponse response) throws Exception {
|
public void download(List<Map<String, Object>> all, HttpServletResponse response) throws Exception {
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ public class KucunhuizongController {
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = "/download")
|
@PostMapping(value = "/download")
|
||||||
public void exportCompany(HttpServletResponse response, @RequestBody String json) throws Exception {
|
public synchronized void exportCompany(HttpServletResponse response, @RequestBody String json) throws Exception {
|
||||||
|
|
||||||
QueryPageUtil query =new QueryPageUtil();
|
QueryPageUtil query =new QueryPageUtil();
|
||||||
JSONObject jsonObject= JSONUtil.parseObj(json);
|
JSONObject jsonObject= JSONUtil.parseObj(json);
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,11 @@ public class RongQiController {
|
||||||
/* 当前页数据*/
|
/* 当前页数据*/
|
||||||
int pageNum = query.getPageNum();//当前页
|
int pageNum = query.getPageNum();//当前页
|
||||||
int pageSize = counts.get(0);//条数
|
int pageSize = counts.get(0);//条数
|
||||||
|
if (pageSize==0){
|
||||||
|
Result result=Result.result(400,"未查询到数据",Long.parseLong(counts.get(0).toString()), null);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
String querySql="";//查询条件
|
String querySql="";//查询条件
|
||||||
|
|
||||||
String sqlFy = "select * from( "
|
String sqlFy = "select * from( "
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,8 @@ public class PandianmingxiImpl implements Pandianmingxi {
|
||||||
if(pandianming.issued_Date!=null&&pandianming.issued_Date.length>0){
|
if(pandianming.issued_Date!=null&&pandianming.issued_Date.length>0){
|
||||||
String startDate = simpleDateFormat.format(pandianming.issued_Date[0]);
|
String startDate = simpleDateFormat.format(pandianming.issued_Date[0]);
|
||||||
String endDate = simpleDateFormat.format(pandianming.issued_Date[1]);
|
String endDate = simpleDateFormat.format(pandianming.issued_Date[1]);
|
||||||
sql+=" and CONVERT(DATE, cr.issued_Date) "+"'"+startDate+"'"+" and "+ "'"+endDate+"'";
|
sql+=" AND CONVERT(DATE, cr.issued_Date, 20) >= '"+startDate+"' "
|
||||||
|
+" AND CONVERT(DATE, cr.issued_Date, 20) <= '"+endDate+"' ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
package com.yc.wms.utils;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class QueryUtil {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private NamedParameterJdbcTemplate jdbcTemplate;
|
||||||
|
private static boolean isQueryInProgress = false;
|
||||||
|
|
||||||
|
public List<Map<String, Object>> multiThreadedQuery(String sqlFa, int pageSize, int pageNum) {
|
||||||
|
if (isQueryInProgress) {
|
||||||
|
throw new RuntimeException("查询导出其他文件,请稍后重试");
|
||||||
|
}
|
||||||
|
isQueryInProgress = true;
|
||||||
|
Date currentDate1 = new Date();
|
||||||
|
List<Map<String, Object>> maps = new ArrayList<>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
int batchSize = 20000; // 每次查询的数量
|
||||||
|
int totalCount = pageSize; // 查询条数
|
||||||
|
int numThreads = Math.min(Math.max(totalCount / batchSize, 1), 50); // 线程数量,最大为 10
|
||||||
|
ExecutorService executorService = Executors.newFixedThreadPool(numThreads);
|
||||||
|
List<Future<List<Map<String, Object>>>> futures = new ArrayList<>();
|
||||||
|
int batchesPerThread = (int) Math.ceil((double) (totalCount / batchSize) / numThreads);
|
||||||
|
|
||||||
|
for (int threadIndex = 0; threadIndex < numThreads; threadIndex++) {
|
||||||
|
int startBatch = threadIndex * batchesPerThread + (pageNum - 1) * pageSize;
|
||||||
|
int endBatch = Math.min(startBatch + batchesPerThread, totalCount / batchSize);
|
||||||
|
|
||||||
|
Callable<List<Map<String, Object>>> task = () -> {
|
||||||
|
List<Map<String, Object>> threadResults = new ArrayList<>();
|
||||||
|
for (int batch = startBatch; batch < endBatch; batch++) {
|
||||||
|
int offset = batch * batchSize;
|
||||||
|
String batchSql = sqlFa + " ORDER BY id "
|
||||||
|
+ " OFFSET " + offset + " ROWS "
|
||||||
|
+ " FETCH NEXT " + batchSize + " ROWS ONLY ";
|
||||||
|
threadResults.addAll(jdbcTemplate.queryForList(batchSql, new HashMap<>()));
|
||||||
|
log.info("运行线程 offset: {}", offset);
|
||||||
|
}
|
||||||
|
return threadResults;
|
||||||
|
};
|
||||||
|
futures.add(executorService.submit(task));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Future<List<Map<String, Object>>> future : futures) {
|
||||||
|
try {
|
||||||
|
maps.addAll(future.get());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Error while processing query", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
executorService.shutdown();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Error in multiThreadedQuery", e);
|
||||||
|
}finally {
|
||||||
|
isQueryInProgress = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Date currentDate2 = new Date();
|
||||||
|
log.info("线程多查询耗时: {} ms", currentDate2.getTime() - currentDate1.getTime());
|
||||||
|
|
||||||
|
return maps;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
server:
|
server:
|
||||||
|
address: 0.0.0.0
|
||||||
port: 8084
|
port: 8084
|
||||||
# url: jdbc:sqlserver://47.100.54.81:1433;DatabaseName=zwwms
|
# url: jdbc:sqlserver://47.100.54.81:1433;DatabaseName=zwwms
|
||||||
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
|
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||||
|
|
@ -27,7 +28,7 @@ spring:
|
||||||
idle-timeout: 60000
|
idle-timeout: 60000
|
||||||
login-timeout: 5
|
login-timeout: 5
|
||||||
max-lifetime: 60000
|
max-lifetime: 60000
|
||||||
maximum-pool-size: 10
|
maximum-pool-size: 100
|
||||||
minimum-idle: 10
|
minimum-idle: 10
|
||||||
read-only: false
|
read-only: false
|
||||||
# 文件存储路径
|
# 文件存储路径
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue