| | |
| | | |
| | | score := 0.0; |
| | | remindFormula := formula; |
| | | |
| | | // 遍历优先级因子配置 |
| | | if( not remindFormula = '' ) |
| | | { |
| | | if( not remindFormula = '' ){ |
| | | // 从起始位置开始匹配 |
| | | if(remindFormula.StartsWith( "+" )) |
| | | { |
| | | if(remindFormula.StartsWith( "+" )){ |
| | | remindFormula := remindFormula.SubString( 1,remindFormula.Length()-1); |
| | | score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); |
| | | score := lastScore + score; |
| | | |
| | | |
| | | // 截取掉已经计算的优先级因子 递归计算 |
| | | remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); |
| | | PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | } |
| | | else if( remindFormula.StartsWith( "-" )) |
| | | { |
| | | score := score + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | }else if( remindFormula.StartsWith( "-" )){ |
| | | remindFormula := remindFormula.SubString( 1,remindFormula.Length()-1); |
| | | score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); |
| | | score := lastScore - score; |
| | | |
| | | // 截取掉已经计算的优先级因子 递归计算 |
| | | remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); |
| | | PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | } |
| | | else if( remindFormula.StartsWith( "*" ) ) |
| | | { |
| | | score := score + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | }else if( remindFormula.StartsWith( "*" ) ){ |
| | | remindFormula := remindFormula.SubString( 1,remindFormula.Length()-1); |
| | | score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); |
| | | score := lastScore * score; |
| | | |
| | | // 截取掉已经计算的优先级因子 递归计算 |
| | | remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); |
| | | PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | } |
| | | else if( remindFormula.StartsWith( "/" ) ) |
| | | { |
| | | score := score + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | }else if( remindFormula.StartsWith( "/" ) ){ |
| | | remindFormula := remindFormula.SubString( 1,remindFormula.Length()-1); |
| | | score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); |
| | | score := lastScore / score; |
| | | |
| | | // 截取掉已经计算的优先级因子 递归计算 |
| | | remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); |
| | | PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | } |
| | | else if( remindFormula.StartsWith( "(" ) ) |
| | | { |
| | | score := score + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | }else if( remindFormula.StartsWith( "(" ) ){ |
| | | // 找到第一个结束的 ) |
| | | // 计算括号中的内容 |
| | | rightBracket := remindFormula.FindString( ")",0); |
| | |
| | | |
| | | // 截取 ) 后的字符继续进行计算 |
| | | remindFormula := remindFormula.SubString( rightBracket,remindFormula.Length()-1); |
| | | } |
| | | else |
| | | { |
| | | }else{ |
| | | // 不是符号 直接获取计算后的数值 |
| | | score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); |
| | | // 截取掉已经计算的优先级因子 递归计算 |
| | | remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); |
| | | PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | score := PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); |
| | | } |
| | | } |
| | | |
| | | // 没有匹配 公式计算完成 |
| | | return score; |
| | | *] |