| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549 | this.HistoryData = (function (){    this.update = function () {        // 请注意type必须在结尾        get_data("fcBiFlowDaily/list?flowId=" + flowId + "&type=1", history_success);    };    this.loadHistroyOnce = function (nnm) {        // 请注意type必须在结尾        get_data(HistoryBaseURL + "&type=" + nnm, history_success);    };    this.loadMultiHistory = function(){        for (i = 1; i <= 3; i++) loadHistroyOnce(i);    };    this.add_success = function(obj, sta) {        var history1 = first_parse(this, obj);        var i, j;        console.log(" history1 : ");        console.log(history1);        hispass[t] = 0;        hisfail[t] = 0;        hisstack[t] = 0;        hisrate[t] = 0;        var lengthnum = history1.length - 1;        for (i = lengthnum; i < history1.length; i++) {            hispass[t] = history1[i].passNum + hispass[t];            hisfail[t] = history1[i].failNum + hisfail[t];            hisstack[t] = history1[i].avgDue + hisstack[t];        }        if (hispass[t] + hisfail[t] == 0) {            hisrate[t] = 0;        }        t++;    }})();function realtime_success(obj, sta) {    var output = first_parse(this, obj);    //在这里排序 spo\    console.log(" output : ");    console.log(output);    var i, j, k, z;    failnum = 0;    var x = 0;    var worksum = [];    var hhp = 0, hhf = 0, hhs = 0;    if (output.list.length > 0) {        sectorID[0] = getSectorId(output.list[0].spotId);        passNumber[0] = 0;        failNumber[0] = 0;        stackeverynum[0] = 0;        z = 0;        for (i = 1; i < output.list.length; i++) {            var thisUid = getSectorId(output.list[i].spotId);            x = 0;            for (j = 0; j < sectorID.length; j++) {                if (sectorID[j] === thisUid) {                    x = 1;                    break;                }            }            if (x === 0) {                sectorID.push(thisUid);            }        }        j = 0;        for (k = 0; k < sectorID.length; k++) {            var uid = sectorID[k];            z = 0;            passNumber[k] = 0;            failNumber[k] = 0;            stackeverynum[k] = 0;            for (i = 0; i < output.list.length; i++) {                if (uid === getSectorId(output.list[i].spotId)) {                    passNumber[k] = output.list[i].passNum + passNumber[k];                    failNumber[k] = output.list[i].failNum + failNumber[k];                    stackeverynum[k] = output.list[i].due + stackeverynum[k];                    z++;                }            }            failrate[k] = get_factor(passNumber[k], failNumber[k]);        }        output.list.forEach(function (val, fid, arr) {            hhp += val.passNum;            hhf += val.failNum;            hhs += val.due;        })    }    schedulepass = hhp;    schedulefail = hhf;    if (output.list.length > 0) {        schedulestack = hhs / output.list.length;    } else {        schedulestack = 0;    }    update_all_history();    updateChart();};var RealTimeCharts = (function() {    var timeday = ["今日", "昨日", "本周", "本月"];    if (flowId == null || scheduleId == null) {        send_alert("出错啦!请检查参数完整性");    }    function page_document_load() {        get_data("fcWorkScheduleLoad/list?scheduleId=" + scheduleId, onFirstTimeSuccess);    }    var compAxis = {        categories: namedata,        crosshair: true,        title: {            text: '工位',            style: {                fontSize: '1.5em'            }        },        labels: {            style: {                fontSize: '1.5em'            }        }    };    var getSeperateArrays = function (sectorLoadData){        this.data = [];        this.len = sectorLoadData.len();        this.stackmax = 0;        this.failmax = 0;        this.passmax = 0;        this.failratemax = 0;        this.ratedata = [];        this.passdata = [];        this.faildata = [];        for (i = 0; i < len; i++) {            var one = sectorLoadData.getRaw(i);            if (stackmax < one[i].getVal("stack")) {                stackmax = one[i].getVal("stack")            }            if (failmax < one[i].getVal("failNum")) {                failmax = one[i].getVal("failNum");            }            if (failratemax < one[i].getVal("failRate")) {                failratemax = one[i].getVal("failRate");            }            if (passmax < one[i].getVal("passNum")) {                passmax = one[i].getVal("passNum");            }            data.push(one[i].getVal("stack"));            this.ratedata.push(Math.floor(one[i].getVal("failRate")));            this.passdata.push(one[i].getVal("passNum"));            this.faildata.push(one[i].getVal("failNum"));        }        failratemax = Math.max(failratemax, 5);        stackmax = Math.max(stackmax, 5);        failmax = Math.max(failmax, 5);        passmax = Math.max(passmax, failmax, stackmax);    };    this.dataArrays = null;    function showChart(sectorLoadData) {        dataArrays = new getSeperateArrays(sectorLoadData);        stackAndFailChart = Highcharts.chart('graph-1', {            chart: {                zoomType: 'xy',                //height: (4 / 16 * 100) + '%' // 16:9 ratio            },            title: {text: '各工位今日产能'},            credits: {enabled: false},            exporting: {enabled: false},            xAxis: [compAxis],            yAxis: [{                labels: {                    format: '{value}',                    style: {                        color: "#ffffff",                        fontSize: '1.5em'                    }                },                min: 0,                max: passmax * 1.5,                title: {                    text: '数量',                    style: {                        color: '#ffffff',                        fontSize: '1em'                    },                    rotation: 270,                }            },],            tooltip: {shared: true},            legend: {                layout: 'vertical',                align: 'right',                x: 0,                verticalAlign: 'top',                y: 0,                floating: true,                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'            },            series: [{                name: '良品数',                type: 'column',                data: passdata,            }, {                name: '不良品数',                type: 'column',                data: faildata,            },                {                    name: '堆积数',                    type: 'column',                    data: data,                }]        });        FailChart = Highcharts.chart('graph-2', {            chart: {                //height: (4 / 16 * 100) + '%' // 16:9 ratio            },            title: {                text: '各工位今日不良率'            },            credits: {                enabled: false // 禁用版权信息            },            exporting: {                enabled: false            },            xAxis: [compAxis],            yAxis: [{ // Secondary yAxis                title: {                    text: '不良率',                    style: {                        color: '#ffffff',                        fontSize: '1em'                    }                },                min: 0,                max: 1.5 * failratemax,                labels: {                    formatter: function () {                        return Math.floor(this.value) + "%";                    },                    style: {                        color: '#ffffff',                        fontSize: '20px'                    },                    rotation: 270,                },            }],            tooltip: {                shared: true            },            legend: {                layout: 'vertical',                align: 'right',                x: 0,                verticalAlign: 'top',                y: 0,                floating: true,                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'            },            series: [{                name: '不良率',                type: 'spline',                data: ratedata,                color: 'red',                tooltip: {                    valueSuffix: '%'                }            }]        });    }    function updateChart(sectorLoad) {        var data = [];        var ratedata = [];        var stackmax = 0;        var failmax = 0;        var passdata = [];        var faildata = [];        var passmax = 0;        var failratemax = 0;        for (i = 0; i < passNumber.length; i++) {            if (stackmax < stackeverynum[i]) {                stackmax = stackeverynum[i];            }            if (failmax < failNumber[i]) {                failmax = failNumber[i];            }            if (failratemax < failrate[i]) {                failratemax = failrate[i];            }            if (passmax < passNumber[i]) {                passmax = passNumber[i];            }            data.push(stackeverynum[i]);            ratedata.push(Math.floor(failrate[i]));            passdata.push(passNumber[i]);            faildata.push(failNumber[i]);        }        failratemax = Math.max(failratemax, 5);        stackmax = Math.max(stackmax, 5);        failmax = Math.max(failmax, 5);        passmax = Math.max(passmax, failmax, stackmax);        // https://api.hcharts.cn/highcharts#Series.addPoint;        stackAndFailChart.series[0].setData(passdata);        stackAndFailChart.series[1].setData(faildata);        stackAndFailChart.series[2].setData(data);        FailChart.series[0].setData(ratedata);        if (failratemax > FailChart.yAxis[0].getExtremes().max * 1.3 || failratemax < FailChart.yAxis[0].getExtremes().max * 0.5) {            FailChart.yAxis[0].setExtremes(0, failratemax * 1.5);        }        if (passmax > stackAndFailChart.yAxis[0].getExtremes().max * 1.3 || passmax < stackAndFailChart.yAxis[0].getExtremes().max * 0.5) {            stackAndFailChart.yAxis[0].setExtremes(0, passmax * 1.5);        }        showHistoryData();        showRedRanking();        showBlackRanking();        var secNames = [];        sectorID.forEach(function (val) {            secNames.push(getSectorName(val));        });        if (JSON.stringify(secNames) !== lastTimeSecNames) {            lastTimeSecNames = JSON.stringify(secNames);            FailChart.xAxis[0].setCategories(secNames);            stackAndFailChart.xAxis[0].setCategories(secNames);        }    }    var lastTimeSecNames = "";    var stackAndFailChart = null;    var FailChart = null;})();function getHistoryTableBody(htmlbody, i) {    if (typeof hispass[i] === "undefined") {        htmlbody += "<tr>";        htmlbody += `<tr>                    <td> - </td>                    <td> - </td>                    <td> - </td>                    <td> - </td>                    <td> - </td>                </tr>`;        htmlbody += "</tr>";        return htmlbody;    }    htmlbody += "<tr>";    htmlbody += `<tr>                    <td>${timeday[i]}</td>                    <td>${hispass[i]}</td>                    <td>${hisfail[i]}</td>                    <td>${hisstack[i]}</td>                    <td>${hisrate[i] + '%'}</td>                </tr>`;    htmlbody += "</tr>";    return htmlbody;}var goodColor = [];var badColor = [];var goodColor1 = [];var badColor1 = [];var userIDs = [];var schedulepass = 0, schedulefail = 0, schedulestack = 0;var todayotherpass = 0, todayotherfail = 0, todayotherstack = 0;var lastTimeHistory = "";var histoires = [];var hispass = [];var hisfail = [];var hisstack = [];var hisrate = [];var goodpass = [];var goodid = [];var goodfailrate = [];var goodpass1 = [];var goodid1 = [];var goodfailrate1 = [];var badpass = [];var badid = [];var badfailrate = [];var badpass1 = [];var badid1 = [];var badfailrate1 = [];var todayotherpass, todayotherfail, todayotherstack;var orighisfail = [], orighispass = [], orighisstack = [];/*function isUserOfThisFlow(uid) {    var isExist = false;    userIDs.forEach(function (vals) {        if (vals == uid) {            isExist = true;        }    });    return isExist;}var RedRank = (function() {    this.fetchPos = 0;    this.multipleData = [];    this.loader = (function () {        this.load = function(pos) {            this.multipleData = new Array();            for(let i = 0; i < 8; i++){                this.multipleData[i] = new DataObjectService("fcBiWorkderDaily", AUTO & FAST, "?type="+i);            }            get_data(`fcBiWorkerDaily/get?type=${RedRank.fetchPos}`, RedRank.loader.onSuccess);        };        this.consecutiveLoad = function(){            RedRank.fetchPos = (RedRank.fetchPos + 1) % 8;            load(RedRank.fetchPos);        };        this.onSuccess = function(res, code){        };    })();})();function on_red_rank_success(obj, sta) {    var redchart = first_parse(this, obj);    var i, j;    i = j = 0;    console.log(" redchart : ");    console.log(redchart);    for (i = 0; i < redchart.list.length; i++) {        goodid[i] = getUserName(redchart.list[i].workerId);        goodpass[i] = redchart.list[i].passNum;        if (redchart.list[i].passNum + redchart.list[i].failNum > 0) {            goodfailrate[i] = Math.floor(redchart.list[i].failNum * 10000 / (redchart.list[i].passNum + redchart.list[i].failNum)) / 100;        } else {            goodfailrate[i] = 0;        }        if (isUserOfThisFlow(redchart.list[i].workerId)) {            goodColor[i] = 'red';        } else {            goodColor[i] = '';        }    }}function on_red_rank_success1(obj, sta) {    var redchart = first_parse(this, obj);    var i, j;    i = j = 0;    console.log(" redchart : ");    console.log(redchart);    for (i = 0; i < redchart.list.length; i++) {        goodid1[i] = getUserName(redchart.list[i].workerId);        goodpass1[i] = redchart.list[i].passNum;        if (redchart.list[i].passNum + redchart.list[i].failNum > 0) {            goodfailrate1[i] = Math.floor(redchart.list[i].failNum * 10000 / (redchart.list[i].passNum + redchart.list[i].failNum)) / 100;        } else {            goodfailrate1[i] = 0;        }        if (isUserOfThisFlow(redchart.list[i].workerId)) {            goodColor1[i] = 'red';        } else {            goodColor1[i] = '';        }    }}function on_black_rank_success(obj, sta) {    var blackchart = first_parse(this, obj);    var i, j;    i = j = 0;    console.log(" black chart : ");    console.log(blackchart);    for (i = 0; i < blackchart.list.length; i++) {        badid[i] = getUserName(blackchart.list[i].workerId);        badpass[i] = blackchart.list[i].passNum;        //badfailrate[i] = blackchart.list[i].failRate / 100;        if (blackchart.list[i].passNum + blackchart.list[i].failNum > 0) {            badfailrate[i] = Math.floor(blackchart.list[i].failNum * 10000 / (blackchart.list[i].passNum + blackchart.list[i].failNum)) / 100;        } else {            badfailrate[i] = 0;        }        if (isUserOfThisFlow(blackchart.list[i].workerId)) {            badColor[i] = 'green';        } else {            badColor[i] = '';        }    }}function on_black_rank_success1(obj, sta) {    var blackchart = first_parse(this, obj);    var i, j;    i = j = 0;    console.log(" black chart : ");    console.log(blackchart);    for (i = 0; i < blackchart.list.length; i++) {        badid1[i] = getUserName(blackchart.list[i].workerId);        badpass1[i] = blackchart.list[i].passNum;        //badfailrate[i] = blackchart.list[i].failRate / 100;        if (blackchart.list[i].passNum + blackchart.list[i].failNum > 0) {            badfailrate1[i] = Math.floor(blackchart.list[i].failNum * 10000 / (blackchart.list[i].passNum + blackchart.list[i].failNum)) / 100;        } else {            badfailrate1[i] = 0;        }        if (isUserOfThisFlow(blackchart.list[i].workerId)) {            badColor1[i] = 'green';        } else {            badColor1[i] = '';        }    }}*/
 |