多查询-分页导出
							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;
 | 
				
			||||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					      downloadExcel('/JianHuoXiaoLv/download', '拣货任务效率统计', this.total, this.param)
 | 
				
			||||||
      //参数和搜索参数一样
 | 
					          .then(() => {
 | 
				
			||||||
      let a = 1;
 | 
					            this.tableloding = false;
 | 
				
			||||||
      let t = this.total;
 | 
					          })
 | 
				
			||||||
      // eslint-disable-next-line no-constant-condition,no-empty
 | 
					          .catch(error => {
 | 
				
			||||||
      while (true){
 | 
					            console.error('系统错误:', error);
 | 
				
			||||||
        /* 分文件导出*/
 | 
					 | 
				
			||||||
        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.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;
 | 
				
			||||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					      downloadExcel('/Jianhuojiemian/download', '拣货界面', this.total, this.param)
 | 
				
			||||||
      //参数和搜索参数一样
 | 
					          .then(() => {
 | 
				
			||||||
      this.$axios.post(this.$httpUrl + '/Jianhuojiemian/download', {
 | 
					 | 
				
			||||||
        pageSize: this.total,
 | 
					 | 
				
			||||||
        pageNum: 1,
 | 
					 | 
				
			||||||
        param: this.param,
 | 
					 | 
				
			||||||
      },{responseType:'blob'}).then(res => {
 | 
					 | 
				
			||||||
            this.tableloding = false;
 | 
					            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
 | 
					          .catch(error => {
 | 
				
			||||||
 | 
					            console.error('系统错误:', error);
 | 
				
			||||||
 | 
					            this.tableloding = false;
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    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;
 | 
				
			||||||
    //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					    downloadExcel('/Kucunhuizong/download', '库存汇总', this.total, this.param)
 | 
				
			||||||
    //参数和搜索参数一样
 | 
					        .then(() => {
 | 
				
			||||||
    this.$axios.post(this.$httpUrl + '/Kucunhuizong/download', {
 | 
					 | 
				
			||||||
      pageSize: this.total,
 | 
					 | 
				
			||||||
      pageNum: 1,
 | 
					 | 
				
			||||||
      param: this.param,
 | 
					 | 
				
			||||||
    },{responseType:'blob'}).then(res => {
 | 
					 | 
				
			||||||
          this.tableloding = false;
 | 
					          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
 | 
					        .catch(error => {
 | 
				
			||||||
 | 
					          console.error('系统错误:', error);
 | 
				
			||||||
 | 
					          this.tableloding = false;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
    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;
 | 
				
			||||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					      downloadExcel('/Kucunrizhi/download', '库存操作日志', this.total, this.param)
 | 
				
			||||||
      //参数和搜索参数一样
 | 
					          .then(() => {
 | 
				
			||||||
      this.$axios.post(this.$httpUrl + '/Kucunrizhi/download', {
 | 
					 | 
				
			||||||
        pageSize: this.pageSize,
 | 
					 | 
				
			||||||
        pageNum: this.pageNum,
 | 
					 | 
				
			||||||
        param: this.param,
 | 
					 | 
				
			||||||
      },{responseType:'blob'}).then(res => {
 | 
					 | 
				
			||||||
            this.tableloding = false;
 | 
					            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
 | 
					          .catch(error => {
 | 
				
			||||||
 | 
					            console.error('系统错误:', error);
 | 
				
			||||||
 | 
					            this.tableloding = false;
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    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;
 | 
				
			||||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					      downloadExcel('/dcx/download', '料箱监控', this.total, this.param)
 | 
				
			||||||
      //参数和搜索参数一样
 | 
					          .then(() => {
 | 
				
			||||||
      this.$axios.post(this.$httpUrl + '/dcx/download', {
 | 
					 | 
				
			||||||
        pageSize: this.total,
 | 
					 | 
				
			||||||
        pageNum: 1,
 | 
					 | 
				
			||||||
        param: this.param,
 | 
					 | 
				
			||||||
      },{responseType:'blob'}).then(res => {
 | 
					 | 
				
			||||||
            this.tableloding = false;
 | 
					            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
 | 
					          .catch(error => {
 | 
				
			||||||
 | 
					            console.error('系统错误:', error);
 | 
				
			||||||
 | 
					            this.tableloding = false;
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    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;
 | 
				
			||||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					      downloadExcel('/Pandianmingxi/download', '盘点明细查询', this.total, this.param)
 | 
				
			||||||
      //参数和搜索参数一样
 | 
					          .then(() => {
 | 
				
			||||||
      this.$axios.post(this.$httpUrl + '/Pandianmingxi/download', {
 | 
					 | 
				
			||||||
        pageSize: this.total,
 | 
					 | 
				
			||||||
        pageNum: 1,
 | 
					 | 
				
			||||||
        param: this.param,
 | 
					 | 
				
			||||||
      },{responseType:'blob'}).then(res => {
 | 
					 | 
				
			||||||
            this.tableloding = false;
 | 
					            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
 | 
					          .catch(error => {
 | 
				
			||||||
 | 
					            console.error('系统错误:', error);
 | 
				
			||||||
 | 
					            this.tableloding = false;
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    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;
 | 
				
			||||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					      downloadExcel('/Rukuzhengli/download', '入库整理', this.total, this.param)
 | 
				
			||||||
      //参数和搜索参数一样
 | 
					          .then(() => {
 | 
				
			||||||
      this.$axios.post(this.$httpUrl + '/Rukuzhengli/download', {
 | 
					 | 
				
			||||||
        pageSize: this.total,
 | 
					 | 
				
			||||||
        pageNum: 1,
 | 
					 | 
				
			||||||
        param: this.param,
 | 
					 | 
				
			||||||
      },{responseType:'blob'}).then(res => {
 | 
					 | 
				
			||||||
            this.tableloding = false;
 | 
					            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
 | 
					          .catch(error => {
 | 
				
			||||||
 | 
					            console.error('系统错误:', error);
 | 
				
			||||||
 | 
					            this.tableloding = false;
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    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;
 | 
				
			||||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					      downloadExcel('/Xuliehaoqingdan/download', '序列号库存清点', this.total, this.param)
 | 
				
			||||||
      //参数和搜索参数一样
 | 
					          .then(() => {
 | 
				
			||||||
      this.$axios.post(this.$httpUrl + '/Xuliehaoqingdan/download', {
 | 
					 | 
				
			||||||
        pageSize: this.total,
 | 
					 | 
				
			||||||
        pageNum: 1,
 | 
					 | 
				
			||||||
        param: this.param,
 | 
					 | 
				
			||||||
      },{responseType:'blob'}).then(res => {
 | 
					 | 
				
			||||||
            this.tableloding = false;
 | 
					            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
 | 
					          .catch(error => {
 | 
				
			||||||
 | 
					            console.error('系统错误:', error);
 | 
				
			||||||
 | 
					            this.tableloding = false;
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    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;
 | 
				
			||||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
					      downloadExcel('/Zhengliqingdan/download', '整理完成未上架清单', this.total, this.param)
 | 
				
			||||||
      //参数和搜索参数一样
 | 
					          .then(() => {
 | 
				
			||||||
      this.$axios.post(this.$httpUrl + '/Zhengliqingdan/download', {
 | 
					            this.tableloding = false;
 | 
				
			||||||
        pageSize: this.total,
 | 
					          })
 | 
				
			||||||
        pageNum: 1,
 | 
					          .catch(error => {
 | 
				
			||||||
        param: this.param,
 | 
					            console.error('系统错误:', error);
 | 
				
			||||||
      },{responseType:'blob'}).then(res => {
 | 
					 | 
				
			||||||
            this.tableloding = false;
 | 
					            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