/* const mcTime2 = function( _this ){ let sdm = {}; //SPEC DIAMETER let ptime = {}; //공정별 시간 Tb_funcs_Spec.tblList.getData().forEach(v => { sdm['S.'+v['SPEC_ITEM']] = v['DIAMETER']||0; }); _this.calc_rst = JSON.parse(JSON.stringify(_this.calc)); mcLoop(_this.calc_rst, 'CALC_FEED', sdm); mcLoop(_this.calc_rst, 'CALC_TIME', sdm); Object.keys(Tb_funcs_Route.calc_rst).forEach( k => { ptime[Tb_funcs_Route.calc_rst[k].OP_CD] = (ptime[Tb_funcs_Route.calc_rst[k].OP_CD]||0) + Number(Tb_funcs_Route.calc_rst[k].CALC_TIME) * (Number(Tb_funcs_Route.calc_rst[k].PROC_CNT)||1) + Number(Tb_funcs_Route.calc_rst[k].EXTRA_TM); } ); console.log(ptime); //Object.keys(ptime).forEach( v => { let udata = Tb_funcs_Route.tblList.getData(); udata.forEach( r => { //r['STD_TACT_TM'] = ptime[r['OP_CD']]?(Math.round(ptime[r['OP_CD']]*1000)/1000):''; r['STD_TACT_TM'] = ptime[r['OP_CD']]?Math.round(ptime[r['OP_CD']]):''; } ); Tb_funcs_Route.tblList.replaceData(udata); //} ); //console.log(_this.tblList.getData()); //return false; } const mcLoop = function(calc, fld, sdmrow) { let loop_en = calc.length; let max_loop = 10; while( loop_en > 0 && max_loop > 0 ){ loop_en = calc.length; calc.forEach(v => { let calf = (v[fld]||0).toString(); [...calf.matchAll(/{(.*?)}/g)].forEach( fv => { if( typeof(sdmrow[fv[1]]) !== "undefined" ){ v[fld] = v[fld].replaceAll(fv[0],sdmrow[fv[1]]||0); }else{ switch( fv[1] ){ case "MO": v[fld] = v[fld].replaceAll(fv[0],v['EXTRA_OD']||0); break; case "MI": v[fld] = v[fld].replaceAll(fv[0],v['EXTRA_ID']||0); break; case "MT": v[fld] = v[fld].replaceAll(fv[0],v['EXTRA_TH']||0); break; } } switch( v['OP_GRP'] ){ case "FIN": //정삭 기준 if( sdmrow['S.OD'] ){ let feed = getFeed('TURN', v['SHAPE_TYPE'], sdmrow['S.OD'], 'F'); v[fld] = v[fld].replaceAll("{FEED}",feed||1); v.FEED = feed; } break; case "AAS": //투공 기준 if( sdmrow['S.IT'] ){ let feed = getFeed('HOLE', v['SHAPE_TYPE'], sdmrow['S.IT'], ''); v[fld] = v[fld].replaceAll("{FEED}",feed||1); v.FEED = feed; } break; default : //기타 황삭 기준 if( sdmrow['S.OD'] ){ let feed = getFeed('TURN', v['SHAPE_TYPE'], sdmrow['S.OD'], ''); v[fld] = v[fld].replaceAll("{FEED}",feed||1); v.VC = v[fld]; v.FEED = feed; } } }); if( [...calf.matchAll(/{(.*?)}/g)].length === 0 ){ if( fld === "CALC_TIME" ){ if( !v['evtdone'] ){ v[fld] = eval(v[fld])// * Number(v['PROC_CNT']||1) + Number(v['EXTRA_TM']||0); v['evtdone'] = true; sdmrow['T.'+v.PART_CD] = v[fld]; } }else{ if( !v['evddone'] ){ v[fld] = eval(v[fld]); v['evddone'] = true; sdmrow['P.'+v.PART_CD] = v[fld]; } } loop_en--; }else{ //console.log(calf.matchAll(/{(.*?)}/g)); } }); //console.log(sdmrow); max_loop--; //console.log(max_loop); } } const getFeed = function(cond, shape, val, mode){ let fdata = varsProcCond[cond][shape].filter( bf => Number(val) >= Number(bf.START_SIZE) && Number(val) <= Number(bf.END_SIZE) ); if( fdata.length ){ fdata = fdata[0]; switch( cond ){ case "HOLE": if( mode ){ return [fdata.HOLE_TURN_ST,HOLE_TURN_ED]; }else{ return fdata.HOLE_FEED; } case "RATE": //추후에 return false; case "SHARE": //추후에 return false; case "TURN": if( mode == "F" ){ return fdata.FINISH_FEED; }else{ return fdata.ROUGH_FEED; } case "WTAMT": //후추에 return false; } }else{ return false; } } */