no message
							parent
							
								
									ad92e11877
								
							
						
					
					
						commit
						60a45927d7
					
				| 
						 | 
				
			
			@ -12119,7 +12119,7 @@
 | 
			
		|||
    },
 | 
			
		||||
    "node_modules/xlsx": {
 | 
			
		||||
      "version": "0.18.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
 | 
			
		||||
      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "adler-32": "~1.3.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -21202,7 +21202,7 @@
 | 
			
		|||
    },
 | 
			
		||||
    "xlsx": {
 | 
			
		||||
      "version": "0.18.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
 | 
			
		||||
      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "adler-32": "~1.3.0",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,22 @@
 | 
			
		|||
 | 
			
		||||
    <div class="div2" style="padding-bottom: 10px">
 | 
			
		||||
      <el-form ref="form" :model="param" label-width="80px">
 | 
			
		||||
        <el-row>
 | 
			
		||||
          <el-col :span="4">
 | 
			
		||||
            <el-form-item label="日期:">
 | 
			
		||||
              <el-date-picker style="width: 300px"
 | 
			
		||||
                              v-model="param.日期"
 | 
			
		||||
                              type="daterange"
 | 
			
		||||
                              align="right"
 | 
			
		||||
                              unlink-panels
 | 
			
		||||
                              range-separator="至"
 | 
			
		||||
                              start-placeholder="开始日期"
 | 
			
		||||
                              end-placeholder="结束日期"
 | 
			
		||||
                              :picker-options="pickerOptions">
 | 
			
		||||
              </el-date-picker>
 | 
			
		||||
            </el-form-item>
 | 
			
		||||
          </el-col>
 | 
			
		||||
        </el-row>
 | 
			
		||||
        <el-button type="success" @click="find">查找</el-button>
 | 
			
		||||
        <el-button type="success" @click="down">导出</el-button>
 | 
			
		||||
        <el-button type="success" @click="rest">重置</el-button>  
 | 
			
		||||
| 
						 | 
				
			
			@ -57,9 +73,39 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import FileSaver from 'file-saver'
 | 
			
		||||
// eslint-disable-next-line no-unused-vars
 | 
			
		||||
import XLSX from "xlsx";
 | 
			
		||||
export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      pickerOptions: {
 | 
			
		||||
        shortcuts: [{
 | 
			
		||||
          text: '最近一周',
 | 
			
		||||
          onClick(picker) {
 | 
			
		||||
            const end = new Date();
 | 
			
		||||
            const start = new Date();
 | 
			
		||||
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
 | 
			
		||||
            picker.$emit('pick', [start, end]);
 | 
			
		||||
          }
 | 
			
		||||
        }, {
 | 
			
		||||
          text: '最近一个月',
 | 
			
		||||
          onClick(picker) {
 | 
			
		||||
            const end = new Date();
 | 
			
		||||
            const start = new Date();
 | 
			
		||||
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
 | 
			
		||||
            picker.$emit('pick', [start, end]);
 | 
			
		||||
          }
 | 
			
		||||
        }, {
 | 
			
		||||
          text: '最近三个月',
 | 
			
		||||
          onClick(picker) {
 | 
			
		||||
            const end = new Date();
 | 
			
		||||
            const start = new Date();
 | 
			
		||||
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
 | 
			
		||||
            picker.$emit('pick', [start, end]);
 | 
			
		||||
          }
 | 
			
		||||
        }]
 | 
			
		||||
      },
 | 
			
		||||
      // 表头配置
 | 
			
		||||
      columns: [
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +124,7 @@ export default {
 | 
			
		|||
          label: '作业类型'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          prop: '有效时间',
 | 
			
		||||
          prop: '有效时效',
 | 
			
		||||
          minWidth: '150px',
 | 
			
		||||
          label: '有效时间'
 | 
			
		||||
        },
 | 
			
		||||
| 
						 | 
				
			
			@ -100,9 +146,10 @@ export default {
 | 
			
		|||
      pageNum: 1,
 | 
			
		||||
      total: 3,
 | 
			
		||||
      param: {
 | 
			
		||||
        日期:[]
 | 
			
		||||
      },
 | 
			
		||||
      loading: false,
 | 
			
		||||
      checked: false,
 | 
			
		||||
      checked: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +174,7 @@ export default {
 | 
			
		|||
    cellStyle({ row, column }) {
 | 
			
		||||
      // 找到数组中列>1那一个单元格,就是需要改变的样式
 | 
			
		||||
      if (row['mergeData'][column.property] && row['mergeData'][column.property][1] && row['mergeData'][column.property][1] > 1) {
 | 
			
		||||
        return { 'text-align': 'left' }
 | 
			
		||||
        return { 'text-align': 'center' }
 | 
			
		||||
      } else {
 | 
			
		||||
        return {}
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +203,7 @@ export default {
 | 
			
		|||
    },
 | 
			
		||||
    queryUser() {
 | 
			
		||||
      //列表数据加载
 | 
			
		||||
      this.$axios.post(this.$httpUrl + '/JianHuoXiaoLv/queryList', {
 | 
			
		||||
      this.$axios.post(this.$httpUrl + '/GGZXiaoLv/queryList', {
 | 
			
		||||
        pageSize: this.pageSize,
 | 
			
		||||
        pageNum: this.pageNum,
 | 
			
		||||
        param: this.param,
 | 
			
		||||
| 
						 | 
				
			
			@ -180,36 +227,36 @@ export default {
 | 
			
		|||
      this.queryUser();
 | 
			
		||||
    },
 | 
			
		||||
    down(){
 | 
			
		||||
      this.downExcel();
 | 
			
		||||
      this.exportToExcel();
 | 
			
		||||
    },
 | 
			
		||||
    downExcel() {
 | 
			
		||||
      //显示加载图
 | 
			
		||||
      this.tableloding=true;
 | 
			
		||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
			
		||||
      //参数和搜索参数一样
 | 
			
		||||
      this.$axios.post(this.$httpUrl + '/Xuliehaoqingdan/download', {
 | 
			
		||||
        pageSize: this.pageSize,
 | 
			
		||||
        pageNum: this.pageNum,
 | 
			
		||||
        param: this.param,
 | 
			
		||||
      },{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)
 | 
			
		||||
    // 表格数据写入excel,并导出为Excel文件
 | 
			
		||||
    exportToExcel(){
 | 
			
		||||
      /*const worksheet = XLSX.utils.json_to_sheet(this.tableData);
 | 
			
		||||
      const workbook = XLSX.utils.book_new();
 | 
			
		||||
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
 | 
			
		||||
      XLSX.writeFile(workbook, 'table_data.xlsx');*/
 | 
			
		||||
      const XLSX = require('xlsx')
 | 
			
		||||
      console.log('XLSX',XLSX,FileSaver)
 | 
			
		||||
      // 使用 this.$nextTick 是在dom元素都渲染完成之后再执行
 | 
			
		||||
      this.$nextTick(function () {
 | 
			
		||||
        // 设置导出的内容是否只做解析,不进行格式转换     false:要解析, true:不解析
 | 
			
		||||
        const xlsxParam = { raw: true }
 | 
			
		||||
        const wb = XLSX.utils.table_to_book(document.querySelector('#educe-table'), xlsxParam)
 | 
			
		||||
        // 导出excel文件名
 | 
			
		||||
        let fileName = '工作效率分析_' + new Date().getTime() + '.xlsx'
 | 
			
		||||
 | 
			
		||||
        const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
 | 
			
		||||
        try {
 | 
			
		||||
          // 下载保存文件
 | 
			
		||||
          FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), fileName)
 | 
			
		||||
        } catch (e) {
 | 
			
		||||
          if (typeof console !== 'undefined') {
 | 
			
		||||
            console.log(e, wbout)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        return wbout
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    parseTime(time, cFormat) {
 | 
			
		||||
      //获取当前时间
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@
 | 
			
		|||
          </el-col>
 | 
			
		||||
        </el-row>
 | 
			
		||||
        <el-button type="success" @click="find">查找</el-button>
 | 
			
		||||
        <el-button type="success" @click="down">导出</el-button>
 | 
			
		||||
        <el-button type="success" @click="exportToExcel">导出</el-button>
 | 
			
		||||
        <el-button type="success" @click="rest">重置</el-button>  
 | 
			
		||||
        <el-checkbox v-model="checked" @change="Allquesr">是否显示全部查询条件</el-checkbox>
 | 
			
		||||
      </el-form>
 | 
			
		||||
| 
						 | 
				
			
			@ -65,6 +65,9 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
// import * as XLSX from 'xlsx';
 | 
			
		||||
import FileSaver from 'file-saver'
 | 
			
		||||
import XLSX from 'xlsx'
 | 
			
		||||
export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
| 
						 | 
				
			
			@ -192,37 +195,33 @@ export default {
 | 
			
		|||
      this.pageNum=1;
 | 
			
		||||
      this.queryUser();
 | 
			
		||||
    },
 | 
			
		||||
    down(){
 | 
			
		||||
      this.downExcel();
 | 
			
		||||
    },
 | 
			
		||||
    downExcel() {
 | 
			
		||||
      //显示加载图
 | 
			
		||||
      this.tableloding=true;
 | 
			
		||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
			
		||||
      //参数和搜索参数一样
 | 
			
		||||
      this.$axios.post(this.$httpUrl + '/Xuliehaoqingdan/download', {
 | 
			
		||||
        pageSize: this.pageSize,
 | 
			
		||||
        pageNum: this.pageNum,
 | 
			
		||||
        param: this.param,
 | 
			
		||||
      },{responseType:'blob'}).then(res => {
 | 
			
		||||
        this.tableloding=false;
 | 
			
		||||
        //重命名文件
 | 
			
		||||
        this.downloadFile(res.data,'拣货表单'+ '数据', 'xlsx')
 | 
			
		||||
      });
 | 
			
		||||
      //列表数据加载
 | 
			
		||||
    // 表格数据写入excel,并导出为Excel文件
 | 
			
		||||
    exportToExcel(){
 | 
			
		||||
      /*const worksheet = XLSX.utils.json_to_sheet(this.tableData);
 | 
			
		||||
      const workbook = XLSX.utils.book_new();
 | 
			
		||||
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
 | 
			
		||||
      XLSX.writeFile(workbook, 'table_data.xlsx');*/
 | 
			
		||||
      const XLSX = require('xlsx')
 | 
			
		||||
      console.log('XLSX',XLSX,FileSaver)
 | 
			
		||||
      // 使用 this.$nextTick 是在dom元素都渲染完成之后再执行
 | 
			
		||||
      this.$nextTick(function () {
 | 
			
		||||
        // 设置导出的内容是否只做解析,不进行格式转换     false:要解析, true:不解析
 | 
			
		||||
        const xlsxParam = { raw: true }
 | 
			
		||||
        const wb = XLSX.utils.table_to_book(document.querySelector('#educe-table'), xlsxParam)
 | 
			
		||||
        // 导出excel文件名
 | 
			
		||||
        let fileName = '拣货表单_' + new Date().getTime() + '.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)
 | 
			
		||||
        const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
 | 
			
		||||
        try {
 | 
			
		||||
          // 下载保存文件
 | 
			
		||||
          FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), fileName)
 | 
			
		||||
        } catch (e) {
 | 
			
		||||
          if (typeof console !== 'undefined') {
 | 
			
		||||
            console.log(e, wbout)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        return wbout
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    KuS(){
 | 
			
		||||
      //库区下拉列表数据加载
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -88,6 +88,9 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import FileSaver from 'file-saver'
 | 
			
		||||
// eslint-disable-next-line no-unused-vars
 | 
			
		||||
import XLSX from 'xlsx'
 | 
			
		||||
export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
| 
						 | 
				
			
			@ -243,7 +246,7 @@ export default {
 | 
			
		|||
        任务号:'',
 | 
			
		||||
        子任务号:'',
 | 
			
		||||
        库区:'',
 | 
			
		||||
        创建日期:''
 | 
			
		||||
        创建日期:[]
 | 
			
		||||
      },
 | 
			
		||||
      loading: false,
 | 
			
		||||
      checked: false,
 | 
			
		||||
| 
						 | 
				
			
			@ -326,36 +329,35 @@ export default {
 | 
			
		|||
      this.queryUser();
 | 
			
		||||
    },
 | 
			
		||||
    down(){
 | 
			
		||||
      this.downExcel();
 | 
			
		||||
      this.exportToExcel();
 | 
			
		||||
    },
 | 
			
		||||
    downExcel() {
 | 
			
		||||
      //显示加载图
 | 
			
		||||
      this.tableloding=true;
 | 
			
		||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
			
		||||
      //参数和搜索参数一样
 | 
			
		||||
      this.$axios.post(this.$httpUrl + '/Xuliehaoqingdan/download', {
 | 
			
		||||
        pageSize: this.pageSize,
 | 
			
		||||
        pageNum: this.pageNum,
 | 
			
		||||
        param: this.param,
 | 
			
		||||
      },{responseType:'blob'}).then(res => {
 | 
			
		||||
        this.tableloding=false;
 | 
			
		||||
        //重命名文件
 | 
			
		||||
        this.downloadFile(res.data,'序列号库存清点'+ '数据', 'xlsx')
 | 
			
		||||
      });
 | 
			
		||||
      //列表数据加载
 | 
			
		||||
    // 表格数据写入excel,并导出为Excel文件
 | 
			
		||||
    exportToExcel(){
 | 
			
		||||
      /*const worksheet = XLSX.utils.json_to_sheet(this.tableData);
 | 
			
		||||
      const workbook = XLSX.utils.book_new();
 | 
			
		||||
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
 | 
			
		||||
      XLSX.writeFile(workbook, 'table_data.xlsx');*/
 | 
			
		||||
      const XLSX = require('xlsx')
 | 
			
		||||
      console.log('XLSX',XLSX,FileSaver)
 | 
			
		||||
      // 使用 this.$nextTick 是在dom元素都渲染完成之后再执行
 | 
			
		||||
      this.$nextTick(function () {
 | 
			
		||||
        // 设置导出的内容是否只做解析,不进行格式转换     false:要解析, true:不解析
 | 
			
		||||
        const xlsxParam = { raw: true }
 | 
			
		||||
        const wb = XLSX.utils.table_to_book(document.querySelector('#educe-table'), xlsxParam)
 | 
			
		||||
        // 导出excel文件名
 | 
			
		||||
        let fileName = '拣货效率统计_' + new Date().getTime() + '.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)
 | 
			
		||||
        const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
 | 
			
		||||
        try {
 | 
			
		||||
          // 下载保存文件
 | 
			
		||||
          FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), fileName)
 | 
			
		||||
        } catch (e) {
 | 
			
		||||
          if (typeof console !== 'undefined') {
 | 
			
		||||
            console.log(e, wbout)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        return wbout
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    KuS(){
 | 
			
		||||
      //库区下拉列表数据加载
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,6 +72,9 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import FileSaver from 'file-saver'
 | 
			
		||||
// eslint-disable-next-line no-unused-vars
 | 
			
		||||
import XLSX from 'xlsx'
 | 
			
		||||
export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
| 
						 | 
				
			
			@ -252,36 +255,35 @@ export default {
 | 
			
		|||
      this.queryUser();
 | 
			
		||||
    },
 | 
			
		||||
    down(){
 | 
			
		||||
      this.downExcel();
 | 
			
		||||
      this.exportToExcel();
 | 
			
		||||
    },
 | 
			
		||||
    downExcel() {
 | 
			
		||||
      //显示加载图
 | 
			
		||||
      this.tableloding=true;
 | 
			
		||||
      //发起请求:/Jianhuojiemian/download,请求方式为post,类型为 {responseType:'blob'}
 | 
			
		||||
      //参数和搜索参数一样
 | 
			
		||||
      this.$axios.post(this.$httpUrl + '/Xuliehaoqingdan/download', {
 | 
			
		||||
        pageSize: this.pageSize,
 | 
			
		||||
        pageNum: this.pageNum,
 | 
			
		||||
        param: this.param,
 | 
			
		||||
      },{responseType:'blob'}).then(res => {
 | 
			
		||||
        this.tableloding=false;
 | 
			
		||||
        //重命名文件
 | 
			
		||||
        this.downloadFile(res.data,'序列号库存清点'+ '数据', 'xlsx')
 | 
			
		||||
      });
 | 
			
		||||
      //列表数据加载
 | 
			
		||||
    // 表格数据写入excel,并导出为Excel文件
 | 
			
		||||
    exportToExcel(){
 | 
			
		||||
      /*const worksheet = XLSX.utils.json_to_sheet(this.tableData);
 | 
			
		||||
      const workbook = XLSX.utils.book_new();
 | 
			
		||||
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
 | 
			
		||||
      XLSX.writeFile(workbook, 'table_data.xlsx');*/
 | 
			
		||||
      const XLSX = require('xlsx')
 | 
			
		||||
      console.log('XLSX',XLSX,FileSaver)
 | 
			
		||||
      // 使用 this.$nextTick 是在dom元素都渲染完成之后再执行
 | 
			
		||||
      this.$nextTick(function () {
 | 
			
		||||
        // 设置导出的内容是否只做解析,不进行格式转换     false:要解析, true:不解析
 | 
			
		||||
        const xlsxParam = { raw: true }
 | 
			
		||||
        const wb = XLSX.utils.table_to_book(document.querySelector('#educe-table'), xlsxParam)
 | 
			
		||||
        // 导出excel文件名
 | 
			
		||||
        let fileName = '人效管理' + new Date().getTime() + '.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)
 | 
			
		||||
        const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
 | 
			
		||||
        try {
 | 
			
		||||
          // 下载保存文件
 | 
			
		||||
          FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), fileName)
 | 
			
		||||
        } catch (e) {
 | 
			
		||||
          if (typeof console !== 'undefined') {
 | 
			
		||||
            console.log(e, wbout)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        return wbout
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    parseTime(time, cFormat) {
 | 
			
		||||
      //获取当前时间
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ package com.yc.wms.controller;
 | 
			
		|||
 | 
			
		||||
import cn.hutool.json.JSONObject;
 | 
			
		||||
import cn.hutool.json.JSONUtil;
 | 
			
		||||
import com.sun.istack.NotNull;
 | 
			
		||||
import com.yc.wms.bean.Xuliehao;
 | 
			
		||||
import com.yc.wms.service.Xuliehaoqingdan;
 | 
			
		||||
import com.yc.wms.until.QueryPageUtil;
 | 
			
		||||
| 
						 | 
				
			
			@ -17,10 +18,9 @@ import org.springframework.web.bind.annotation.RestController;
 | 
			
		|||
import javax.persistence.*;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.text.SimpleDateFormat;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@Slf4j
 | 
			
		||||
| 
						 | 
				
			
			@ -39,11 +39,27 @@ public class GGZXiaoLvController {
 | 
			
		|||
        query.setPageSize((int)jsonObject.get("pageSize"));
 | 
			
		||||
        query.setPageNum((int)jsonObject.get("pageNum"));
 | 
			
		||||
        JSONObject param= (JSONObject)jsonObject.get("param");
 | 
			
		||||
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 | 
			
		||||
        String startDate="2024-05-01";
 | 
			
		||||
        String endDate=sdf.format(new Date());
 | 
			
		||||
        if (param.getStr("日期")!=null&¶m.getJSONArray("日期").size()>0){
 | 
			
		||||
            startDate=sdf.format(param.getJSONArray("日期").getDate(0));
 | 
			
		||||
            endDate=sdf.format(param.getJSONArray("日期").getDate(1));
 | 
			
		||||
        }
 | 
			
		||||
        /* 基础sql数据查询*/
 | 
			
		||||
        String sql=" select agv.id,agv.robotJobId,agv.targetArea,agv.status,agv.createTime, "
 | 
			
		||||
                +"  agv.arrivalTime,agv.agvCode,agv.type,agv.classification,agv.founderName, "
 | 
			
		||||
                +"  agv.jobPriorityType "
 | 
			
		||||
                +"  from agvtask agv ";
 | 
			
		||||
        String sql=" select  Row_number() OVER(order by v.库区,v.工作站 asc) as id,v.库区, "
 | 
			
		||||
                +"  v.工作站,sum(v.有效时效) '有效时效', v.业务类型 ,sum(v.有效时效)/540 '有效时间占比' from ( "
 | 
			
		||||
                +"  select (case when left(agv.targetArea,1)='1' then '货架到人' when left(agv.targetArea,1)='2' then '料箱到人' end) as '库区', "
 | 
			
		||||
                +"  (agv.id) ID,(agv.robotJobId) as '任务号',left(agv.targetArea,3) as '工作站',(agv.status) as '状态', "
 | 
			
		||||
                +" (CONVERT(VARCHAR,agv.createTime , 23)) as '创建时间', "
 | 
			
		||||
                +"  (agv.arrivalTime),(agv.agvCode) as '车子',(agv.type) as '类型',(agv.classification) as '业务类型', "
 | 
			
		||||
                +"  (agv.founderName) as '创建人', "
 | 
			
		||||
                +"  (agv.jobPriorityType) as '加急', (agv.leaveTime) as '到站时间',(agv.returnTime) as '返库时间', "
 | 
			
		||||
                +"   DATEDIFF(second,(agv.leaveTime), (agv.returnTime) )/60 as '有效时效' "
 | 
			
		||||
                +"  from agvtask agv "
 | 
			
		||||
                +"  where   CONVERT(VARCHAR,agv.createTime , 23)>='"+startDate+"'  "
 | 
			
		||||
                +"  and CONVERT(VARCHAR,agv.createTime , 23)<='"+endDate+"' ) v "
 | 
			
		||||
                +"  GROUP BY v.库区,v.工作站 ,v.业务类型 ";
 | 
			
		||||
        String sqlCount = "select count(t.id) as nums from (" + sql+") t";
 | 
			
		||||
        /* 总条数*/
 | 
			
		||||
        List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
 | 
			
		||||
| 
						 | 
				
			
			@ -60,13 +76,73 @@ public class GGZXiaoLvController {
 | 
			
		|||
                +"    OFFSET "+ (pageNum-1) * pageSize +" ROWS "
 | 
			
		||||
                +"    FETCH NEXT "+pageSize+" ROWS ONLY; ";
 | 
			
		||||
 | 
			
		||||
        /* 返回数据*/
 | 
			
		||||
        List<GGZXl> returnList=new ArrayList<>();
 | 
			
		||||
        /* 查询所有数据*/
 | 
			
		||||
        List<GGZXl> jhXlList = entityManager.createNativeQuery(sqlFy, GGZXl.class).getResultList();
 | 
			
		||||
        Result result=Result.result(200,"操作成功",Long.parseLong(counts.get(0).toString()), jhXlList);
 | 
			
		||||
        List<GGZXl> ggzXlList = entityManager.createNativeQuery(sqlFy, GGZXl.class).getResultList();
 | 
			
		||||
        /* 按SAP类型分组*/
 | 
			
		||||
        Map<String, List<GGZXl>> groupedMap = ggzXlList.stream()
 | 
			
		||||
                .collect(Collectors.groupingBy(ggzXl -> Objects.toString(ggzXl.get库区(), "unknown")));
 | 
			
		||||
        /*排序获取建*/
 | 
			
		||||
        List<String> sapKeys = panxu(groupedMap);
 | 
			
		||||
        for (int i = 0; i < sapKeys.size(); i++) {
 | 
			
		||||
            List<GGZXl> ggzXls=groupedMap.get(sapKeys.get(i));
 | 
			
		||||
            GGZXl gz=ggzXls.get(0);
 | 
			
		||||
            int l=1;//合并列
 | 
			
		||||
 | 
			
		||||
            for (GGZXl ggzXl:ggzXls){
 | 
			
		||||
                l=l+1;
 | 
			
		||||
            }
 | 
			
		||||
            Map<String,int[]> map=new HashMap<>();
 | 
			
		||||
            map.put("库区", new int[]{l, 1});
 | 
			
		||||
            gz.setMergeData(map);
 | 
			
		||||
            returnList.addAll(ggzXls);
 | 
			
		||||
 | 
			
		||||
            GGZXl xhz=new GGZXl();
 | 
			
		||||
            xhz.set工作站("汇总");
 | 
			
		||||
            returnList.add(xhz);
 | 
			
		||||
        }
 | 
			
		||||
        GGZXl dhz=new GGZXl();
 | 
			
		||||
        dhz.set库区("汇总");
 | 
			
		||||
        dhz.setMergeData(new HashMap() {{
 | 
			
		||||
            put("库区", new int[]{1, 2});
 | 
			
		||||
        }});
 | 
			
		||||
        returnList.add(dhz);
 | 
			
		||||
        Result result=Result.result(200,"操作成功",Long.parseLong(counts.get(0).toString()), returnList);
 | 
			
		||||
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<String> panxu( Map<String, List<GGZXl>> sapJhBdMap){
 | 
			
		||||
        List<String> areaNames = new ArrayList<>(sapJhBdMap.keySet());
 | 
			
		||||
        JSONObject jsonObject=new JSONObject();//排序建关联
 | 
			
		||||
        int[] arr=new int[areaNames.size()];
 | 
			
		||||
        for (int i = 0; i < areaNames.size(); i++) {
 | 
			
		||||
            /* 获取类id*/
 | 
			
		||||
            List<GGZXl> jhBdList=sapJhBdMap.get(areaNames.get(i));
 | 
			
		||||
            GGZXl jhBd=jhBdList.get(0);
 | 
			
		||||
            /* 添加id映射*/
 | 
			
		||||
            jsonObject.accumulate(jhBd.getId()+"",areaNames.get(i));
 | 
			
		||||
            /* 添加id排序*/
 | 
			
		||||
            arr[i]=Integer.valueOf(jhBd.getId()+"");
 | 
			
		||||
        }
 | 
			
		||||
        int n=arr.length;
 | 
			
		||||
        for (int i = 0; i < n - 1; i++) {
 | 
			
		||||
            for (int j = 0; j < n - i - 1; j++) {
 | 
			
		||||
                if (arr[j] > arr[j + 1]) {
 | 
			
		||||
                    // 交换 arr[j] 和 arr[j + 1]
 | 
			
		||||
                    int temp = arr[j];
 | 
			
		||||
                    arr[j] = arr[j + 1];
 | 
			
		||||
                    arr[j + 1] = temp;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        List<String> keyList=new ArrayList<>();
 | 
			
		||||
        for (int i = 0; i < arr.length; i++) {
 | 
			
		||||
            String keyName = jsonObject.get(arr[i]+"")+"";
 | 
			
		||||
            keyList.add(keyName);
 | 
			
		||||
        }
 | 
			
		||||
        return keyList;
 | 
			
		||||
    }
 | 
			
		||||
    @PostMapping(value = "/download")
 | 
			
		||||
    public void exportCompany(HttpServletResponse response, @RequestBody String  json) throws Exception {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -92,25 +168,23 @@ class GGZXl implements Serializable {
 | 
			
		|||
    /* 库区名称*/
 | 
			
		||||
    private String 库区="";
 | 
			
		||||
    private String 工作站="";
 | 
			
		||||
    private String 出库="";
 | 
			
		||||
    private String 入库="";
 | 
			
		||||
    private String 盘点="";
 | 
			
		||||
    @NotNull
 | 
			
		||||
    @Transient
 | 
			
		||||
    private Integer 出库=0;
 | 
			
		||||
    @NotNull
 | 
			
		||||
    @Transient
 | 
			
		||||
    private Integer 入库=0;
 | 
			
		||||
    @NotNull
 | 
			
		||||
    @Transient
 | 
			
		||||
    private Integer 盘点=0;
 | 
			
		||||
    @NotNull
 | 
			
		||||
    @Transient
 | 
			
		||||
    private Integer 整理=0;
 | 
			
		||||
    private Date 有效时间;
 | 
			
		||||
    private Date 有效时间占比;
 | 
			
		||||
 | 
			
		||||
    private Integer 有效时效;
 | 
			
		||||
    private Integer 有效时间占比;
 | 
			
		||||
    @Transient
 | 
			
		||||
    private Map<String,int[]> mergeData=new HashMap() {{
 | 
			
		||||
        put("库区", new int[]{1, 1});
 | 
			
		||||
    }};;
 | 
			
		||||
 | 
			
		||||
    public void setMergeData(int[] sap,int[] area){
 | 
			
		||||
        int[] mn={1,1};
 | 
			
		||||
        Map<String,int[]> map=new HashMap<>();
 | 
			
		||||
 | 
			
		||||
        map.put("sapName", sap);
 | 
			
		||||
        map.put("areaName", area);
 | 
			
		||||
        map.put("taskCount", mn);
 | 
			
		||||
        map.put("formattedDate", mn);
 | 
			
		||||
        this.mergeData = map;
 | 
			
		||||
    }
 | 
			
		||||
        put("库区", new int[]{0, 0});
 | 
			
		||||
    }};
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ public class JianHuoXiaoLvController {
 | 
			
		|||
        if (param.getJSONArray("库区")!=null&¶m.getJSONArray("库区").size()>0){
 | 
			
		||||
            querySql=querySql+" and 库区 in ("+ StringUtils.strInSql(JSONUtil.toList(param.getJSONArray("库区"), String.class))+")";
 | 
			
		||||
        }
 | 
			
		||||
        if (param.getStr("创建日期")!=null&¶m.getStr("创建日期").length()>0){
 | 
			
		||||
        if (param.getStr("创建日期")!=null&¶m.getJSONArray("创建日期").size()>0){
 | 
			
		||||
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 | 
			
		||||
            querySql=querySql+" and 创建时间 >= '"+sdf.format(param.getJSONArray("创建日期").getDate(0))+"'";
 | 
			
		||||
            querySql=querySql+" and 创建时间 <= '"+sdf.format(param.getJSONArray("创建日期").getDate(1))+"'";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue