loulijun2021
2023-02-12 d29c895dd848010391167be50548fea763fb306d
1.甘特图 新增换型时间逻辑
已修改1个文件
126 ■■■■ 文件已修改
src/views/scgl/zdpc.vue 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/zdpc.vue
@@ -959,7 +959,7 @@
    // 换型时间
    MinutesTest(time) {
      const t = new Date(time)
      // console.log(typeof parseFloat(this.formBottom.times), 'typeof')
      t.setMinutes(t.getMinutes() + this.formBottom.times * 1)
      const now =
        t.getFullYear() +
@@ -1143,11 +1143,6 @@
        mend_num = this.formBottom.meter - num
      } else {
      }
      // if (this.formBottom.real_num * 1 === this.formBottom.meter * 1) {
      //   // mend_num =  this.formBottom.meter - num
      // } else {
      //   // this.submit_flag = true
      // }
      for (const i in this.schedulingData) {
        for (const j in this.schedulingData[i].gtArray) {
          if (
@@ -1165,27 +1160,20 @@
      let all_num = this.formBottom.meter
      let flag1 = 0
      const mod = this.schedulingData[0].mod
      console.log(this.schedulingData, 998)
      //  let nowTime = this.schedulingData[0].AdvaDevicRhythm*all_num
      // 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 = [] // 待排程的数组
        let capacity_arr = [] // 要排程的数组
        this.schedulingData[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())
        console.log(this.schedulingData)
        end_arr = this.schedulingData[i].gtArray.filter(item => item.type === 'h_schedule') // 已排程数组
        nend_arr = this.schedulingData[i].gtArray.filter(item => item.type === 'capacity') // 容量
        end_arr = JSON.parse(JSON.stringify(this.schedulingData[i].gtArray.filter(item => item.type === 'h_schedule'))) // 已排程数组
        nend_arr = JSON.parse(JSON.stringify(this.schedulingData[i].gtArray.filter(item => item.type === 'capacity'))) // 容量
        // end_arr.sort((a, b) => new Date(b.end).getTime() - new Date(a.end).getTime())
        console.log(end_arr, nend_arr, 770)
        console.log(JSON.stringify(end_arr), 771)
        console.log(JSON.stringify(nend_arr), 772)
        if (end_arr && end_arr.length > 0) {
          capacity_arr = nend_arr.map(item => {
@@ -1195,10 +1183,7 @@
                new Date(item.end).getTime() >= new Date(it.end).getTime()
            })
            console.log(schedule, '王老吉')
            if (schedule && schedule.length > 0) {
              console.log('有进来吗')
              console.log(schedule[schedule.length - 1]['end'])
              item.start = this.MinutesTest(schedule[schedule.length - 1]['end'])
            }
@@ -1223,20 +1208,8 @@
        if (end_arr != '') {
          (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)
        }
        console.log(capacity_arr, 997)
        // 这里要将容量和当前时间做对比   做时间处理   如果在当前时间之前的不能排程
        capacity_arr.forEach((item, index) => {
          // 当前时间 大于等于开始时间   且小于等于结束时间
          if (new Date(item.start).getTime() <= new Date(handleDatetime2(new Date())).getTime() && new Date(item.end).getTime() >= new Date(handleDatetime2(new Date())).getTime()) {
            item.start = handleDatetime2(new Date())
          }
          // 当前时间比开始时间大  比结束时间也大
          if (new Date(item.start).getTime() < new Date(handleDatetime2(new Date())).getTime() && new Date(item.end).getTime() < new Date(handleDatetime2(new Date())).getTime()) {
            item.capacity = false
          }
        })
        capacity_arr = capacity_arr.filter(item => item.capacity !== false)
        capacity_arr = this.filterOutTime(capacity_arr) // 过滤掉当前时间之前的不能排程
        for (const w in capacity_arr) {
          let end_time = ''
@@ -1257,8 +1230,6 @@
            flag1 === 0 &&
            new Date(id_obj.start_time).getTime() >= new Date(capacity_arr[w].start).getTime()
          ) {
            console.log('加多宝', id_obj.start_time)
            data.start = this.MinutesTest(id_obj.start_time)
            flag1 = 1
          } else {
@@ -1274,12 +1245,6 @@
            capacity_arr[w].mod
          ) // 总共的结束时间-当前的结束时间 = 剩下多久时间
          if (mistiming >= 0) {
            // console.log(
            //   new Date(data.end) - new Date(data.start),
            //   capacity_arr[w].mod,
            //   this.schedulingData[i].AdvaDevicRhythm,
            //   '阿斯顿发斯蒂芬'
            // )
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
@@ -1296,10 +1261,14 @@
            } else {
              this.schedulingData[i].gtArray.push(data)
            }
            return false
          } else {
            data.end = capacity_arr[w].end
            if (new Date(data.end).getTime() < new Date(data.start)) {
              continue // 因为开始时间比结束时间大 需要跳过后面步骤
            }
            data.number =
              ((new Date(data.end) - new Date(data.start)) *
                capacity_arr[w].mod) /
@@ -1339,12 +1308,9 @@
      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 = [] // 排程的数组
@@ -1352,15 +1318,8 @@
        this.timeTopTempData[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())
        // console.log(JSON.stringify(this.timeTopTempData), 671)
        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)) // 容量
@@ -1371,13 +1330,10 @@
              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, '大西瓜')
        // continue:表示跳出本次循环,也就是不执行本次循环continue之后的操作
        // break:表示跳出当前的循环,针对整个循环体终止后续的遍历;
@@ -1390,21 +1346,15 @@
            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
        })
        // console.log(schedule_arr, 1002)
        // console.log(nend_arr, 299)
        // debugger
        // 下面逻辑很重要
        if (schedule_arr && schedule_arr.length > 0) {
          const scheduleCan = schedule_arr.map(item => {
            const temp = nend_arr.filter(it => {
              if (it.id === item.id) {
                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())
                //   ||
@@ -1412,15 +1362,14 @@
                // new Date(item.end).getTime() < new Date(it.end).getTime())
              }
            })[0]
            // console.log('李白', temp)
            // console.log('李白', item.end)
            temp.start = this.MinutesTest(item.end)
            return temp
          })
          const newSchedule = JSON.parse(JSON.stringify(scheduleCan))
          console.log(newSchedule, 'newSchedule')
          capacity_arr.forEach(item => {
            newSchedule.forEach(it => {
              if (item.id === it.id && new Date(item.start).getTime() < new Date(it.start).getTime()) {
@@ -1428,33 +1377,14 @@
              }
            })
          })
          // 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)
        }
        // console.log(capacity_arr, 999)
        // console.log(JSON.stringify(capacity_arr), 999)
        // 这里要将容量和当前时间做对比   做时间处理   如果在当前时间之前的不能排程
        capacity_arr.forEach((item, index) => {
          // 当前时间 大于等于开始时间   且小于等于结束时间
          if (new Date(item.start).getTime() <= new Date(handleDatetime2(new Date())).getTime() && new Date(item.end).getTime() >= new Date(handleDatetime2(new Date())).getTime()) {
            item.start = handleDatetime2(new Date())
          }
          // 当前时间比开始时间大  比结束时间也大
          if (new Date(item.start).getTime() < new Date(handleDatetime2(new Date())).getTime() && new Date(item.end).getTime() < new Date(handleDatetime2(new Date())).getTime()) {
            item.capacity = false
          }
        })
        capacity_arr = capacity_arr.filter(item => item.capacity !== false)
        capacity_arr = this.filterOutTime(capacity_arr) // 过滤掉当前时间之前的不能排程
        for (const w in capacity_arr) {
          let end_time
@@ -1470,7 +1400,7 @@
            number: 0,
            real_number: 0
          }
          //  console.log(id_obj.start_time)
          if (
            id_obj &&
            new Date(id_obj.start_time).getTime() >=
@@ -1482,13 +1412,11 @@
              //  flag1 =1
            } else {
              data.start = capacity_arr[w].start
              // console.log(data.start, 1000)
              //  console.log(data.start)
              //  flag1 =1
            }
          } else {
            data.start = capacity_arr[w].start
            // 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
@@ -1534,6 +1462,23 @@
        }
      }
    },
    // 过滤掉当前时间之前的不能排程
    filterOutTime(capacity_arr) {
      // 这里要将容量和当前时间做对比   做时间处理   如果在当前时间之前的不能排程
      capacity_arr.forEach((item, index) => {
        // 当前时间 大于等于开始时间   且小于等于结束时间
        if (new Date(item.start).getTime() <= new Date(handleDatetime2(new Date())).getTime() && new Date(item.end).getTime() >= new Date(handleDatetime2(new Date())).getTime()) {
          item.start = handleDatetime2(new Date())
        }
        // 当前时间比开始时间大  比结束时间也大
        if (new Date(item.start).getTime() < new Date(handleDatetime2(new Date())).getTime() && new Date(item.end).getTime() < new Date(handleDatetime2(new Date())).getTime()) {
          item.capacity = false
        }
      })
      return capacity_arr.filter(item => item.capacity !== false)
    },
    // 时间优先 给设备转换格式
    dataTransition() {
      this.schedulingData = []
@@ -1558,7 +1503,6 @@
        }
      }
      // console.log(list)
      this.schedulingData = list
    },
    // 插入产能时间段