loulijun2021
2023-02-11 2d50604111ced4973d1bf7c470005f52be203f50
1.自动排程单选渲染事件基本实现
已修改1个文件
156 ■■■■ 文件已修改
src/views/scgl/zdpc.vue 156 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/zdpc.vue
@@ -432,7 +432,7 @@
      scaleList: `30,60,240,360`.split(',').map(n => parseInt(n)),
      hideHeader: false,
      arrayKeys: ['gtArray', 'error'],
      title_list: []
      title_list: []// 不知道给你取什么英文名称好  暂时没变你的名字
    }
  },
@@ -955,17 +955,11 @@
          }
        }
      }
      // console.log('执行了!')
      // console.log(this.schedulingData, '  this.schedulingData')
      // console.log(this.timeTopTempData, 'this.timeTopTempData')
      // this.$forceUpdate()
    },
    // 换型时间
    MinutesTest(time) {
      const t = new Date(time)
      console.log(t.getMinutes(), 800)
      // console.log(t.getMinutes(), 800)
      t.setMinutes(t.getMinutes() + this.formBottom.times * 1)
      const now =
        t.getFullYear() +
@@ -979,7 +973,7 @@
        t.getMinutes().toString().padStart(2, '0') +
        ':' +
        t.getSeconds().toString().padStart(2, '0')
      console.log('now', now)
      // console.log('now', now)
      return now
    },
    // 插入产能时间段
@@ -1106,14 +1100,6 @@
        this.dataTransition()
        this.editLastValue(this.schedulingData)
      }
      // console.log('执行了!')
      // console.log(this.schedulingData, '  this.schedulingData')
      // console.log(JSON.stringify(this.schedulingData), '  this.schedulingData')
      // console.log(this.timeTopTempData, 'this.timeTopTempData')
      // console.log(JSON.stringify(this.timeTopTempData), 'this.timeTopTempData')
      // this.$forceUpdate()
    },
    // 手动过滤所有时间已排程
    filterAlreadyScheduleTime() {
@@ -1178,28 +1164,31 @@
    // 设备优先   数据格式转换
    eqpDataTransition() {
      let all_num = this.formBottom.meter
      const all_time = []
      let flag1 = 0
      const mod = this.schedulingData[0].mod
      //  let nowTime = this.schedulingData[0].AdvaDevicRhythm*all_num
      console.log(this.schedulingData.length, 31)
      // console.log(this.schedulingData, 31)
      // console.log(JSON.stringify(this.schedulingData), 31)
      for (const i in this.schedulingData) {
        console.log(i, 32)
        let end_arr = [] // 已排程的数组
        let nend_arr = [] // 待排程的数组
        const add_arr = [] // 已排程的数组
        let capacity_arr = [] // 要排程的数组
        this.schedulingData[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())
        // let capacity_end = ''
        end_arr = this.schedulingData[i].gtArray.filter(item => item.type === 'h_schedule')
        nend_arr = this.schedulingData[i].gtArray.filter(item => item.type === 'capacity')
        console.log(end_arr, nend_arr, 770)
        if (end_arr && end_arr.length > 0) {
          capacity_arr = nend_arr.map(item => {
            // 排除掉已经排程的存在hshedule,start,end都相等的情况
            const schedule = end_arr.filter(schedule => {
              return new Date(item.start).getTime() <= new Date(schedule.start).getTime() &&
                new Date(item.end).getTime() > new Date(schedule.end).getTime()
            const schedule = end_arr.filter(it => {
              return new Date(item.start).getTime() <= new Date(it.start).getTime() &&
                new Date(item.end).getTime() >= new Date(it.end).getTime()
            })
            if (schedule && schedule.length > 0) {
              item.start = this.MinutesTest(schedule[0]['end'])
            }
@@ -1321,105 +1310,114 @@
        this.timeTopTempData[i].gtArray = newArr
      }
      let all_num = this.formBottom.meter
      const all_time = []
      const flag1 = 0
      // let nowTime = this.timeTopTempData[0].AdvaDevicRhythm*all_num  //数量OK
      console.log(this.timeTopTempData, 889)
      console.log(JSON.stringify(this.timeTopTempData), 889)
      //  里面逻辑要搞清楚 很重要
      for (const i in this.timeTopTempData) {
        console.log(i, 90)
        let end_arr = []
        let nend_arr = [] // 排程的数组
        const add_arr = [] // 已排程的数组
        let capacity_arr = [] // 要排程的数组
        this.timeTopTempData[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())
        // let capacity_end = ''
        // console.log(JSON.stringify(this.timeTopTempData), 671)
        end_arr = this.timeTopTempData[i].gtArray.filter(item => item.type === 'h_schedule') // 已排程数据
        nend_arr = this.timeTopTempData[i].gtArray.filter(item => item.type === 'capacity') // 要排程数据
        end_arr = JSON.parse(JSON.stringify(this.timeTopTempData[i].gtArray.filter(item => item.type === 'h_schedule'))) // 已排程数据
        nend_arr = JSON.parse(JSON.stringify(this.timeTopTempData[i].gtArray.filter(item => item.type === 'capacity'))) // 容量
        console.log(end_arr, nend_arr, 670)
        // console.log(end_arr, 672)
        // console.log(JSON.stringify(end_arr), 672)
        // console.log(nend_arr, 673)
        // console.log(JSON.stringify(nend_arr), 673)
        capacity_arr = JSON.parse(JSON.stringify(nend_arr)) // 要排程的数组
        end_arr.forEach(item => {
          for (let i = 0; i < capacity_arr.length; i++) {
            if (new Date(capacity_arr[i].start).getTime() === new Date(item.start).getTime()) {
              // console.log(capacity_arr[i].start, 671)
              // console.log(capacity_arr[i].end, 671)
              console.log(i, capacity_arr[i], '哇哈哈')
              capacity_arr.splice(i, 1)
              break
            }
        // end_arr = JSON.parse(JSON.stringify(end_arr.sort((a, b) => new Date(b.end) - new Date(a.end))))
        capacity_arr = JSON.parse(JSON.stringify(nend_arr)) // 容量
        // end_arr.forEach(item => {
        //   for (let i = 0; i < capacity_arr.length; i++) {
        //     if (new Date(capacity_arr[i].start).getTime() === new Date(item.start).getTime() && item.id === capacity_arr[i].id) {
        //       console.log(i, capacity_arr[i], '哇哈哈')
        //       capacity_arr.splice(i, 1)
        //       break
        //     }
        //   }
        // })
        // 获取可排程的时间   以便接着往后排程    遍历结束要得到的是 当前日期可排容量
        end_arr.forEach((item, index) => { // 已排程的数组
          capacity_arr.forEach((it, ind) => { // 容量(日产能)
            if (item.id === it.id &&
              new Date(item.start).getTime() >= new Date(it.start).getTime() &&
              new Date(item.end).getTime() === new Date(it.end).getTime() // new Date(item.end).getTime() <= new Date(it.end).getTime()
            ) {
              console.log(ind, it, '哇哈哈')
              capacity_arr.splice(ind, 1)
          }
        })
        })
        console.log(capacity_arr, '大西瓜')
        if (!capacity_arr || capacity_arr.length === 0) break
        console.log(nend_arr, 'nend_arr')
        console.log(JSON.stringify(nend_arr), 'nend_arr')
        // continue:表示跳出本次循环,也就是不执行本次循环continue之后的操作
        // break:表示跳出当前的循环,针对整个循环体终止后续的遍历;
        if (!capacity_arr || capacity_arr.length === 0) {
          continue
        }
        const schedule_arr = end_arr.filter(item => {
          const remain = nend_arr.some(it => {
            // return (new Date(it.start).getTime() === new Date(item.start).getTime() &&
            //     new Date(item.end).getTime() < new Date(it.end).getTime()) || (
            //   new Date(it.end).getTime() === new Date(item.end).getTime() &&
            //   new Date(item.start).getTime() > new Date(it.start).getTime())
            return (new Date(it.start).getTime() === new Date(item.start).getTime() &&
            return (new Date(item.start).getTime() >= new Date(it.start).getTime() &&
              new Date(item.end).getTime() < new Date(it.end).getTime())
          })
          // console.log(remain, 'remain')
          return remain
        })
        // schedule_arr.sort((a, b) => new Date(b.end).getTime() - new Date(a.end).getTime())
        // schedule_arr = schedule_arr.filter((currentValue, currentIndex, selfArr) => {
        //   return selfArr.findIndex(item => item.id === currentValue.id) === currentIndex
        // })
        // console.log(schedule_arr, 1002)
        // console.log(nend_arr, 299)
        console.log(schedule_arr, 1002)
        // debugger
        // 当某个容量存在三个不同的工单时   下面这个if逻辑存在问题
        if (schedule_arr && schedule_arr.length > 0) {
          // 找到同一设备下的end最大值
          // const maxEnd = schedule_arr.sort((a, b) => new Date(b.end).getTime() - new Date(a.end).getTime())[0].end
          const scheduleCan = schedule_arr.map(item => {
            const temp = nend_arr.filter(it => {
              if (it.id === item.id) {
                return (new Date(it.start).getTime() === new Date(item.start).getTime() &&
                console.log('执行了!', item.id, item.end)
                return (new Date(item.start).getTime() === new Date(it.start).getTime() &&
                  new Date(item.end).getTime() < new Date(it.end).getTime())
                // ||
                // (new Date(item.start).getTime() > new Date(it.start).getTime() &&
                // new Date(item.end).getTime() < new Date(it.end).getTime())
              }
            })[0]
            // console.log('capacity', temp)
            // console.log('capacity', item.end)
            // console.log('capacity', item.end === '2023-02-09 13:30:00')
            temp.start = this.MinutesTest(item.end)
            // temp.start = item.end
            // temp.start = maxEnd
            // temp.start = '2023-02-09 13:30:00'
            return temp
          })
          console.log(scheduleCan, 'scheduleCan')
          // scheduleCan.sort((a, b) => new Date(a.start).getTime() - new Date(b.start).getTime())
          // scheduleCan = scheduleCan.filter((currentValue, currentIndex, selfArr) => {
          //   return selfArr.findIndex(item => item.id === currentValue.id) === currentIndex
          // })
          // console.log(scheduleCan, 'scheduleCan2')
          const newSchedule = JSON.parse(JSON.stringify(scheduleCan))
          capacity_arr = newSchedule.concat(capacity_arr)
          capacity_arr.forEach(item => {
            newSchedule.forEach(it => {
              if (item.id === it.id && new Date(item.start).getTime() < new Date(it.start).getTime()) {
                item.start = it.start
        }
        console.log(schedule_arr)
        console.log('可排程数组', capacity_arr)
            })
          })
          // capacity_arr = newSchedule.concat(capacity_arr)  //这行代码是不对的
          // console.log(scheduleCan, 'scheduleCan')
          // console.log(capacity_arr, 'capacity_arr')
          // capacity_arr.sort((a, b) => new Date(a.start).getTime() - new Date(b.start).getTime()) // start时间早的在前面
        }
        // console.log(schedule_arr)
        // console.log('可排程数组', capacity_arr)
        const id_obj = {}
        if (end_arr != '') {
          (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)
@@ -1446,17 +1444,17 @@
          ) {
            if (data.id === id_obj.id) {
              data.start = this.MinutesTest(id_obj.start_time)
              console.log(data.start, 999)
              // console.log(data.start, 999)
              //  flag1 =1
            } else {
              data.start = capacity_arr[w].start
              console.log(data.start, 1000)
              // console.log(data.start, 1000)
              //  console.log(data.start)
              //  flag1 =1
            }
          } else {
            data.start = capacity_arr[w].start
            console.log(data.start, 1001)
            // console.log(data.start, 1001)
          }
          // let nowTime = this.timeTopTempData[0].AdvaDevicRhythm*all_num
          let nowTime = (capacity_arr[w].rhythm * all_num) / capacity_arr[w].mod