暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using XCharts.Runtime;
  6. using TMPro;
  7. using System;
  8. using UnityEngine.Networking;
  9. using System.Data;
  10. using UnityEngine.SceneManagement;
  11. using System.Net.Sockets;
  12. public class Main : MonoBehaviour
  13. {
  14. private readonly string 安卓版本號 = "1.0.6", IOS版本號 = "1.5";
  15. public CanvasScaler canvasScaler;
  16. public BarChart chart;
  17. public BarChart chart2;
  18. public TMP_FontAsset myFont;
  19. public Sprite UIsprite;public Sprite sprite_check;
  20. AudioSource alarm_sound;
  21. [SerializeField] TMP_InputField 驗證碼_tb;
  22. [SerializeField] TextMeshProUGUI 電表編號_tb,平均電壓_tb,平均電流_tb,累計用電量_tb,副電表編號_tb,副平均電壓_tb,副平均電流_tb,副累計用電量_tb,主跑馬燈_tb,副跑馬燈_tb,
  23. 消防異常page_lb,消防跑馬燈_tb,設備編號_tb,設備位置_tb,設備樓層_tb,設備用途_tb,設備區塊_tb,試算_平均電壓_tb,試算_平均電流_tb,試算_平均功率_tb,試算_總消耗功率_tb,試算_總消耗能量_tb,
  24. 試算_電費試算_tb,試算_計算規則_tb,區間總和_tb,電費總和_tb,詳細平均電壓_tb,詳細平均電流_tb,詳細電流A相_tb,詳細電流B相_tb,詳細電流C相_tb,詳細電流不平衡A相_tb,詳細電流不平衡B相_tb,
  25. 詳細電流不平衡C相_tb,詳細電壓AB相_tb,詳細電壓BC相_tb,詳細電壓CA相_tb,詳細電壓不平衡AB相_tb,詳細電壓不平衡BC相_tb,詳細電壓不平衡CA相_tb,詳細平均有效功率_tb,詳細平均無效功率_tb,
  26. 詳細平均視在功率_tb,提供的有效電能_tb,接收的有效電能_tb,提供加接收的有效電能_tb,提供減接收的有效電能_tb,提供的無效電能_tb,接收的無效電能_tb,提供加接收的無效電能_tb,提供減接收的無效電能_tb,
  27. 提供的視在電能_tb,接收的視在電能_tb,提供加接收的視在電能_tb,提供減接收的視在電能_tb,V2_lb,V3_lb,I2_lb,I3_lb,副V2_lb,副V3_lb,副I2_lb,副I3_lb,詳V2_lb,詳V3_lb,詳I2_lb,詳I3_lb,詳P2_lb,
  28. 詳P3_lb,詳Q2_lb,詳Q3_lb,詳S2_lb,詳S3_lb,彈跳文字_tb,讀取_tb,排碳係數_lb,排碳最新係數_lb,排碳使用度數_lb,排碳量_lb;
  29. [SerializeField] GameObject 電能監控系統_pl,電能背景_ex,主跑馬燈_pl,主電力警報音效_bt,副電力警報音效_bt,副跑馬燈_pl,簡易電表_pl,小電表_pl,驗證碼_pl,彈跳_pl,
  30. 右側按鈕_pl,電費試算表_pl,試算_電表名稱_cb,試算_幣別_tb,試算_幣別_cb,電能報表_pl,開始時間_cb,結束時間_cb,電表編號_cb,詳細電表_pl,讀取_pl,超級_pl,前往商店_pl;
  31. [SerializeField] TMP_Dropdown 試算_開始年_cb,試算_結束年_cb,試算_開始月_cb,試算_結束月_cb,試算_開始日_cb,試算_結束日_cb,區間_開始_年_cb,區間_開始_月_cb,區間_開始_日_cb,
  32. 電費_開始_年_cb,電費_開始_月_cb,電費_開始_日_cb,電費_開始_小時_cb,電費_結束_年_cb,電費_結束_月_cb,電費_結束_日_cb,電費_結束_小時_cb,排碳_年_cb,排碳_月_cb,排碳_日_cb,客戶名稱_cb;
  33. [SerializeField] Slider 詳V1,詳V2,詳V3,詳I1,詳I2,詳I3;
  34. [SerializeField] private List<Sprite> 控件圖片 = new List<Sprite>();
  35. [SerializeField] private List<Sprite> W = new List<Sprite>();[SerializeField] private List<Image> 安全運行天數_img = new List<Image>();
  36. public Transform 小電表清單_tp;public GameObject 小電表清單_rpf;public GameObject 小電表清單_ct;
  37. public Transform 簡易電表清單_tp;public GameObject 簡易電表清單_rpf;public GameObject 簡易電表清單_ct;
  38. public LineChart 電費_chart,年用電_chart;
  39. public BarChart 電壓_barchart,電流_barchart,功率_barchart,度數_chart;
  40. public Transform 電費清單_tp;public GameObject 電費清單_rpf;public GameObject 電費清單_ct;public GameObject 電費清單_lpf;
  41. public Transform 年用電清單_tp;public GameObject 年用電清單_rpf;public GameObject 年用電清單_ct;public GameObject 年用電清單_lpf;
  42. public Transform 度數清單_tp;public GameObject 度數清單_rpf;public GameObject 度數清單_ct;public GameObject 度數清單_lpf;
  43. //public AdMobManager adMobManager;
  44. private float timer=0;
  45. private bool 載入完畢=false,已開啟=false;
  46. public float maxButtonPressInterval = 3f;
  47. public int requiredButtonPressCount = 2;
  48. private string loadingText = "";
  49. private int dotCount = 0;
  50. void Awake(){
  51. Global.Zoneoffset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours-7;
  52. alarm_sound = GetComponent<AudioSource>();
  53. Global.年=DateTime.Now.Year.ToString();
  54. Global.上次功率因素數值=0;Global.上次副功率因素數值=0;
  55. 讀取_pl.SetActive(true);StartCoroutine(AnimateText());
  56. }
  57. void Start(){
  58. Screen.autorotateToPortrait = false;
  59. Screen.orientation = ScreenOrientation.LandscapeLeft;
  60. float screenWidth = Screen.width;
  61. float screenHeight = Screen.height;
  62. float rate = screenWidth/screenHeight;
  63. if (canvasScaler == null){
  64. canvasScaler = GetComponent<CanvasScaler>();
  65. }
  66. if (rate>(1900f/900f)){
  67. canvasScaler.matchWidthOrHeight = 1f;
  68. }
  69. else{
  70. canvasScaler.matchWidthOrHeight = 0f;
  71. }
  72. if(Global.初次載入主畫面){
  73. //adMobManager.RequestBanner();
  74. Global.Wnum = new Sprite[] {W[0],W[1],W[2],W[3],W[4],W[5],W[6],W[7],W[8],W[9]};
  75. Global.sprite_check=sprite_check;
  76. Global.sprite_box=UIsprite;
  77. Global.初次載入主畫面=false;
  78. SQL_CommString.SQL_連線字串_外();
  79. SQL_Module.TestSQL(SQL_Module.ConString4);
  80. if(!SQL_Module.T_SQL){
  81. 彈跳_pl.SetActive(true);
  82. 讀取_pl.SetActive(false);
  83. 彈跳文字_tb.text="伺服器維護中,請稍後再重新登入";
  84. Global.彈跳狀態="伺服器維護";
  85. }
  86. SQL_CommString.SQL_連線字串_外2();
  87. SQL_ele_sys.SQL_取得版本號();
  88. if(SQL_Module.dr.Read()){
  89. string 系統版本號1="",系統版本號2="";
  90. #if UNITY_ANDROID
  91. 系統版本號1=SQL_Module.dr[0].ToString();
  92. 系統版本號2=SQL_Module.dr[1].ToString();
  93. if(安卓版本號 != 系統版本號1 && 安卓版本號 != 系統版本號2){
  94. 讀取_pl.SetActive(false);
  95. 前往商店_pl.SetActive(true);
  96. //adMobManager.HideBanner();
  97. }
  98. #elif UNITY_IPHONE
  99. 系統版本號1=SQL_Module.dr[2].ToString();
  100. 系統版本號2=SQL_Module.dr[3].ToString();
  101. if(IOS版本號 != 系統版本號1 && IOS版本號 != 系統版本號2){
  102. 讀取_pl.SetActive(false);
  103. 前往商店_pl.SetActive(true);
  104. //adMobManager.HideBanner();
  105. }
  106. #else
  107. 系統版本號1=SQL_Module.dr[0].ToString();
  108. 系統版本號2=SQL_Module.dr[1].ToString();
  109. if(安卓版本號 != 系統版本號1 && 安卓版本號 != 系統版本號2){
  110. 讀取_pl.SetActive(false);
  111. 前往商店_pl.SetActive(true);
  112. //adMobManager.HideBanner();
  113. }
  114. #endif
  115. }
  116. SQL_ele_sys.SQL_取得PHP();
  117. if(SQL_Module.dr.Read()){
  118. Global.PHP路徑=SQL_Module.dr[0].ToString();
  119. }
  120. if(PlayerPrefs.HasKey("客戶代號")){
  121. Global.客戶代號 = PlayerPrefs.GetString("客戶代號");
  122. }else{
  123. Global.客戶代號 = "GCM";
  124. }
  125. Debug.Log(Global.客戶代號);
  126. if(Global.PHP路徑==""){
  127. 彈跳_pl.SetActive(true);
  128. 彈跳文字_tb.text="與伺服器連線異常,請稍後再重新登入";
  129. Global.彈跳狀態="PHP路徑取得異常";
  130. }else{
  131. Debug.Log(Global.PHP路徑);
  132. StartCoroutine(PostRequest(10,"取得資料庫_"+ Global.客戶代號,""));
  133. StartCoroutine(PostRequest(11,"取得電表_" + Global.客戶代號,""));
  134. StartCoroutine(PostRequest(12,"是否為PLC_" + Global.客戶代號,""));
  135. }
  136. SQL_ele_sys.SQL_取得排碳係數();
  137. DataSet ds1 = new();
  138. SQL_Module.da.Fill(ds1);
  139. Global.排碳係數表 = ds1.Tables[0];
  140. if(PlayerPrefs.HasKey("副電表編號")){
  141. //PlayerPrefs.DeleteKey ("副電表編號");
  142. 副電表編號_tb.text=PlayerPrefs.GetString("副電表編號");
  143. //副電表編號_tb.text="PANEL EMVCB#1";
  144. }
  145. 排碳_年_cb.ClearOptions();
  146. 排碳_年_cb.AddOptions(Global.年度Options);
  147. 排碳_年_cb.value=Global.年度Options.IndexOf(DateTime.Today.Year.ToString());
  148. 刷新排碳係數();
  149. 排碳_月_cb.ClearOptions();
  150. List<string> 月份 = new() { "","一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月" };
  151. 排碳_月_cb.AddOptions(月份);
  152. 排碳_月_cb.value= 0;
  153. 排碳_日_cb.ClearOptions();
  154. 已開啟=true;
  155. }
  156. }
  157. void Update(){
  158. timer += Time.deltaTime;
  159. Global.deleytime += Time.deltaTime;
  160. if(!Global.載入電表名稱Option){
  161. Global.電表名稱Option.Clear();
  162. for(int i =0;i<=Global.電表數量-1;i++){
  163. Global.電表名稱Option.Add(Global.電表名稱[i]);
  164. }
  165. Global.載入電表名稱Option=true;
  166. }
  167. if(Global.資料來源=="pi" && timer >= 3f && Global.系統選擇=="電能監控系統" && !電能報表_pl.activeInHierarchy && Global.PHP_Load_End_電表即時路徑){
  168. timer=0f;
  169. for(int i=0;i<=Global.電表數量-1;i++){
  170. StartCoroutine(PostRequest_電表資料(Global.電表資料清單.Rows[i][0].ToString()));
  171. }
  172. if(詳細電表_pl.activeInHierarchy){
  173. 載入詳細電表資料();
  174. }else{
  175. 載入主電表資料();
  176. 載入副電表資料();
  177. 載入簡易電表資料();
  178. }
  179. //載入電表異常();
  180. }else if(Global.資料來源 == "PLC" && timer >= 3f && Global.系統選擇=="電能監控系統" && !電能報表_pl.activeInHierarchy){
  181. timer=0f;
  182. if(Global.客戶代號=="GCM"){
  183. StartCoroutine(PostRequest_電表資料PLC(0,"RDS D6.U 146\r"));
  184. //StartCoroutine(PostRequest_電表資料PLC(1,"RDS M970 " + Global.電表數量.ToString() + "\r"));
  185. StartCoroutine(PostRequest_電表資料PLC(2,"RDS D1006.U 146\r"));
  186. StartCoroutine(PostRequest_電表資料PLC(3,"RDS D2006.U 146\r"));
  187. StartCoroutine(PostRequest_電表資料PLC(4,"RDS D3006.U 146\r"));
  188. StartCoroutine(PostRequest_電表資料PLC(5,"RDS D4006.U 146\r"));
  189. StartCoroutine(PostRequest_電表資料PLC(6,"RDS D5006.U 146\r"));
  190. StartCoroutine(PostRequest_電表資料PLC(7,"RDS D6006.U 146\r"));
  191. }else{
  192. StartCoroutine(PostRequest_電表資料PLC(0,"RDS D6.U 146\r"));
  193. //StartCoroutine(PostRequest_電表資料PLC(1,"RDS M970 " + Global.電表數量.ToString() + "\r"));
  194. StartCoroutine(PostRequest_電表資料PLC(2,"RDS D206.U 146\r"));
  195. StartCoroutine(PostRequest_電表資料PLC(3,"RDS D406.U 146\r"));
  196. StartCoroutine(PostRequest_電表資料PLC(4,"RDS D606.U 146\r"));
  197. StartCoroutine(PostRequest_電表資料PLC(5,"RDS D806.U 146\r"));
  198. StartCoroutine(PostRequest_電表資料PLC(6,"RDS D1006.U 146\r"));
  199. StartCoroutine(PostRequest_電表資料PLC(7,"RDS D1206.U 146\r"));
  200. }
  201. if(詳細電表_pl.activeInHierarchy){
  202. 載入詳細電表資料();
  203. }else{
  204. 載入主電表資料();
  205. 載入副電表資料();
  206. 載入簡易電表資料();
  207. }
  208. //載入電表異常();
  209. }
  210. /*if(Global.長案){
  211. Global.長案=false;
  212. if(電能監控系統_pl.activeInHierarchy && !電能報表_pl.activeInHierarchy && !詳細電表_pl.activeInHierarchy){
  213. open_report();
  214. }else if(電能報表_pl.activeInHierarchy || 詳細電表_pl.activeInHierarchy){
  215. 電能監控系統();
  216. }
  217. }*/
  218. /*if(Global.連點[0]){
  219. Global.連點[0]=false;
  220. Open_detail(0);
  221. }
  222. if(Global.連點[1]){
  223. Global.連點[1]=false;
  224. Open_detail(1);
  225. }*/
  226. if(電能報表_pl.activeInHierarchy || 詳細電表_pl.activeInHierarchy){
  227. if (Input.touchCount == 2 || Input.GetMouseButton(2) || Input.GetMouseButton(1)){
  228. 電能監控系統();
  229. Global.長案=false;
  230. //adMobManager.RequestBanner();
  231. }
  232. }
  233. //==============
  234. /*if(主跑馬燈_pl.activeInHierarchy==true || 副跑馬燈_pl.activeInHierarchy==true ){
  235. if(timer2>=0.5f){
  236. timer2=0;
  237. if(主跑馬燈_tb.text != "" && 主跑馬燈_tb.text.Length>=50){主跑馬燈_tb.text = 文字旋轉(主跑馬燈_tb.text, -1);}
  238. if(副跑馬燈_tb.text != "" && 副跑馬燈_tb.text.Length>=50 ){副跑馬燈_tb.text = 文字旋轉(副跑馬燈_tb.text, -1);}
  239. if(消防跑馬燈_tb.text != "" && 消防跑馬燈_tb.text.Length>=25 ){消防跑馬燈_tb.text = 文字旋轉(消防跑馬燈_tb.text, -1);}
  240. }
  241. }
  242. if(Global.系統選擇 != "消防系統" ){
  243. if(timer5>=3600f){
  244. timer5=0;
  245. 電能監控系統();
  246. }
  247. }else{
  248. timer5=0;
  249. }
  250. if(Global.電表異常BL[1]==true || Global.副電表有異常==true){
  251. if(Global.Ele_alarm_sound==true ){
  252. if(!alarm_sound.isPlaying){
  253. alarm_sound.Play();
  254. }
  255. }else{
  256. alarm_sound.Stop();
  257. }
  258. }else{
  259. alarm_sound.Stop();
  260. }
  261. if(Global.連點[0]){
  262. Global.連點[0]=false;
  263. open_detail(0);
  264. }
  265. if(Global.連點[1]){
  266. Global.連點[1]=false;
  267. open_detail(1);
  268. }
  269. if(電能報表_pl.activeInHierarchy || 詳細電表_pl.activeInHierarchy){
  270. if (Input.touchCount == 3 || Input.GetMouseButton(2) || Input.GetMouseButton(1)){
  271. 電能監控系統();
  272. Main.Global.長案=false;
  273. }
  274. }
  275. if(Global.PHP_Load_End9){
  276. Global.PHP_Load_End9=false;
  277. string alarm_data = Global.PHP_Report9;
  278. string 介面="H01";string ele_data="";string 語言;
  279. 語言="CH";
  280. for(int i=0;i<=18;i++){
  281. if(alarm_data.Substring(i*2,1)=="1"){
  282. //ele_data += Global.系統語言字典[介面+(i+7).ToString("00")+語言].Trim()+" ";
  283. int[] Abase=new int[]{0,2,3,6,8,9,11,12,15};
  284. int[] Bbase=new int[]{0,1,4,6,7,9,10,13,16};
  285. int[] Cbase=new int[]{1,2,5,7,8,10,11,14,17};
  286. if(Abase.Contains(i)){
  287. foreach (Image pic in 小電表清單_ct.GetComponentsInChildren<Image>()){
  288. if(pic.name.Contains("R_"+Global.電表異常num.ToString())){
  289. pic.color=new Color(1f,0f,0.05212975f,1f);
  290. }
  291. }
  292. }else if(Bbase.Contains(i)){
  293. foreach (Image pic in 小電表清單_ct.GetComponentsInChildren<Image>()){
  294. if(pic.name.Contains("S_"+Global.電表異常num.ToString())){
  295. pic.color=new Color(1f,0f,0.05212975f,1f);
  296. }
  297. }
  298. }else if(Cbase.Contains(i)){
  299. foreach (Image pic in 小電表清單_ct.GetComponentsInChildren<Image>()){
  300. if(pic.name.Contains("T_"+Global.電表異常num.ToString())){
  301. pic.color=new Color(1f,0f,0.05212975f,1f);
  302. }
  303. }
  304. }
  305. }
  306. }
  307. if(Global.主電表上次異常內容 != ele_data){
  308. 主跑馬燈_tb.text = ele_data;
  309. Global.主電表上次異常內容 = ele_data;
  310. }
  311. if(Global.副電表上次異常內容 != ele_data){
  312. 副跑馬燈_tb.text = ele_data;
  313. Global.副電表上次異常內容 = ele_data;
  314. }
  315. }*/
  316. if(Global.PHP_Load_End_取得資料庫路徑 && Global.PHP_Load_End_電表資料來源){
  317. Global.PHP_Load_End_取得資料庫路徑=false;Global.PHP_Load_End_電表資料來源=false;
  318. 取得電表資料資料庫();
  319. 安全運行天數();
  320. 電能監控系統();
  321. 切換排碳時間();
  322. 讀取_pl.SetActive(false);
  323. }
  324. }
  325. public void 開啟驗證碼(){
  326. 驗證碼_pl.SetActive(true);
  327. if(PlayerPrefs.HasKey("驗證碼")){
  328. 驗證碼_tb.text = PlayerPrefs.GetString("驗證碼");
  329. if(驗證碼_tb.text=="0003065795" || 驗證碼_tb.text=="wswtony1234"){
  330. SQL_ele_sys.SQL_電表客戶名稱();
  331. DataSet ds1 = new();
  332. SQL_Module.da.Fill(ds1);
  333. Global.客戶名稱表 = ds1.Tables[0];
  334. List<string> 客戶名稱Options = new();
  335. for(int i=0;i<=Global.客戶名稱表.Rows.Count-1;i++){
  336. 客戶名稱Options.Add(Global.客戶名稱表.Rows[i][0].ToString());
  337. }
  338. 客戶名稱_cb.ClearOptions();
  339. 客戶名稱_cb.AddOptions(客戶名稱Options);
  340. 超級_pl.SetActive(true);
  341. }
  342. }else{
  343. 驗證碼_tb.text = "";
  344. }
  345. }
  346. public void 輸入驗證碼(){
  347. if(驗證碼_tb.text=="0003065795" || 驗證碼_tb.text=="wswtony1234"){
  348. if(!超級_pl.activeInHierarchy){
  349. SQL_ele_sys.SQL_電表客戶名稱();
  350. DataSet ds1 = new();
  351. SQL_Module.da.Fill(ds1);
  352. Global.客戶名稱表 = ds1.Tables[0];
  353. List<string> 客戶名稱Options = new();
  354. for(int i=0;i<=Global.客戶名稱表.Rows.Count-1;i++){
  355. 客戶名稱Options.Add(Global.客戶名稱表.Rows[i][0].ToString());
  356. }
  357. 客戶名稱_cb.ClearOptions();
  358. 客戶名稱_cb.AddOptions(客戶名稱Options);
  359. 超級_pl.SetActive(true);
  360. }
  361. }else{
  362. string 舊驗證碼 = "";
  363. if(PlayerPrefs.HasKey("驗證碼")){
  364. 舊驗證碼 = PlayerPrefs.GetString("驗證碼");
  365. }
  366. if(驗證碼_tb.text != "" && 驗證碼_tb.text != 舊驗證碼){
  367. SQL_ele_sys.SQL_驗證碼判斷(驗證碼_tb.text);
  368. if(SQL_Module.dr.Read()){
  369. Global.客戶代號 = SQL_Module.dr[2].ToString();
  370. if(PlayerPrefs.HasKey("客戶代號")){PlayerPrefs.DeleteKey("客戶代號");}
  371. PlayerPrefs.SetString("客戶代號",Global.客戶代號);
  372. if(PlayerPrefs.HasKey("驗證碼")){PlayerPrefs.DeleteKey("驗證碼");}
  373. PlayerPrefs.SetString("驗證碼",驗證碼_tb.text);
  374. 彈跳_pl.SetActive(true);
  375. //adMobManager.HideBanner();
  376. 彈跳文字_tb.text="驗證碼認證成功,請重新開啟APP";
  377. if(PlayerPrefs.HasKey("副電表編號")){PlayerPrefs.DeleteKey("副電表編號");}
  378. Global.彈跳狀態="驗證碼認證成功";
  379. }
  380. }else{
  381. 彈跳_pl.SetActive(true);
  382. 彈跳文字_tb.text="驗證碼有誤,請確認驗證碼是否正確!";
  383. Global.彈跳狀態="驗證碼認證失敗";
  384. }
  385. }
  386. }
  387. public void 切換驗證碼(){
  388. for(int i=0;i<=Global.客戶名稱表.Rows.Count-1;i++){
  389. if(客戶名稱_cb.options[客戶名稱_cb.value].text==Global.客戶名稱表.Rows[i][0].ToString()){
  390. string 新驗證碼 = Global.客戶名稱表.Rows[i][1].ToString();
  391. SQL_ele_sys.SQL_驗證碼判斷(新驗證碼);
  392. if(SQL_Module.dr.Read()){
  393. Global.客戶代號 = SQL_Module.dr[2].ToString();
  394. if(PlayerPrefs.HasKey("客戶代號")){PlayerPrefs.DeleteKey("客戶代號");}
  395. PlayerPrefs.SetString("客戶代號",Global.客戶代號);
  396. if(PlayerPrefs.HasKey("驗證碼")){PlayerPrefs.DeleteKey("驗證碼");}
  397. PlayerPrefs.SetString("驗證碼",驗證碼_tb.text);
  398. if(PlayerPrefs.HasKey("副電表編號")){PlayerPrefs.DeleteKey("副電表編號");}
  399. 超級_pl.SetActive(false);電表編號_tb.text="PANEL EMVCB#1";副電表編號_tb.text="PANEL EMVCB#1";
  400. Global.初次載入主畫面=true;
  401. string sceneName = SceneManager.GetActiveScene().name;
  402. SceneManager.LoadScene(sceneName);
  403. }
  404. }
  405. }
  406. }
  407. public void 回原廠(){
  408. if(PlayerPrefs.HasKey("驗證碼")){PlayerPrefs.DeleteKey("驗證碼");}
  409. if(PlayerPrefs.HasKey("客戶代號")){PlayerPrefs.DeleteKey("客戶代號");}
  410. if(PlayerPrefs.HasKey("副電表編號")){PlayerPrefs.DeleteKey("副電表編號");}
  411. 彈跳_pl.SetActive(true);
  412. 彈跳文字_tb.text="已回復原廠設定,請重新開啟APP";
  413. Global.彈跳狀態="回原廠成功";
  414. }
  415. private void 取得電表資料資料庫(){
  416. SQL_ele_sys.SQL_電表資料資料庫(Global.客戶代號);
  417. DataSet ds1 = new();
  418. SQL_Module.da.Fill(ds1);
  419. Global.電表資料資料庫清單=ds1.Tables[0];
  420. }
  421. private void 刷新排碳係數(){
  422. for(int i=0;i<=Global.排碳係數表.Rows.Count-1;i++){
  423. if(Global.排碳係數表.Rows[i][0].ToString()==排碳_年_cb.options[排碳_年_cb.value].text){
  424. 排碳係數_lb.text=Global.排碳係數表.Rows[i][1].ToString();
  425. }else{
  426. 排碳係數_lb.text=Global.排碳係數表.Rows[0][1].ToString();
  427. }
  428. }
  429. 排碳最新係數_lb.text = Global.排碳係數表.Rows[0][0].ToString();
  430. }
  431. public void 切換排碳時間(){
  432. if(已開啟){
  433. string 排碳時間選擇="月";
  434. if(排碳_月_cb.value==0 && 排碳_日_cb.value==0){
  435. 排碳時間選擇="月";
  436. }else if(排碳_月_cb.value !=0 && 排碳_日_cb.value==0){
  437. 排碳時間選擇="日";
  438. }else if(排碳_月_cb.value !=0 && 排碳_日_cb.value!=0){
  439. 排碳時間選擇="小時";
  440. }
  441. Moudle.載入日期(2,排碳_年_cb,排碳_月_cb,排碳_日_cb);
  442. 計算排碳(排碳時間選擇);
  443. }
  444. }
  445. private void 計算排碳(string 排碳時間選擇){
  446. //讀取_pl.SetActive(true);
  447. string 電表編號 = 副電表編號_tb.text;
  448. int 電表id=0;
  449. string 流水號=取得流水號(副電表編號_tb.text);string 電表編號改="";string 電表迴路="";string 功率單位="";
  450. if(流水號 != null){
  451. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  452. if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
  453. 電表id=i;
  454. 電表編號改 = Global.電表資料清單.Rows[i][3].ToString();
  455. 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
  456. if(Global.資料來源=="PLC"){
  457. 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
  458. }else{
  459. 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
  460. }
  461. }
  462. }
  463. }
  464. string p;if(電表迴路=="迴路1"){p="P1";}else{p="P2";}string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
  465. int N_year =int.Parse(排碳_年_cb.options[排碳_年_cb.value].text);
  466. int N_month = 排碳_月_cb.GetComponent<TMP_Dropdown>().value;
  467. int N_day = 排碳_日_cb.GetComponent<TMP_Dropdown>().value;
  468. List<string> TimeData = new(){"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
  469. DataTable ds3 = new();
  470. float 排碳度數總和 = 0;
  471. if(排碳時間選擇=="小時"){
  472. ds3.Columns.Add("小時",typeof(string));ds3.Columns.Add("度數",typeof(string));
  473. }else if(排碳時間選擇=="日"){
  474. ds3.Columns.Add("日期",typeof(string));ds3.Columns.Add("度數",typeof(string));
  475. }else{
  476. ds3.Columns.Add("月份",typeof(string));ds3.Columns.Add("度數",typeof(string));
  477. }
  478. bool 有無 = 資料庫判斷(N_year.ToString());
  479. if(有無 && 流水號!=null){
  480. List<string> 清單 = 資料庫明細(N_year.ToString());
  481. string SQL語法="SELECT ";
  482. if(排碳時間選擇=="小時"){
  483. for(int n=0;n<=23;n++){
  484. string 開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"0000";
  485. string 結束時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"5959";
  486. for(int j=0;j<=清單.Count-1;j++){
  487. if(Global.資料來源=="PLC"){
  488. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * "+ 倍率 +@") AS 度
  489. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  490. WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  491. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  492. }else{
  493. SQL語法+="(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST("+ p +" AS FLOAT) * "+ 倍率 +@") AS 度
  494. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  495. WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  496. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  497. }
  498. }
  499. }
  500. }else if(排碳時間選擇=="日"){
  501. for(int n=1;n<=DateTime.DaysInMonth(N_year,N_month);n++){
  502. string 開始時間=N_year.ToString()+N_month.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"000000";
  503. string 結束時間=N_year.ToString()+N_month.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"235959";
  504. for(int j=0;j<=清單.Count-1;j++){
  505. if(Global.資料來源=="PLC"){
  506. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * "+ 倍率 +@") AS 度
  507. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  508. WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  509. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  510. }else{
  511. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST("+ p +" AS FLOAT) * "+ 倍率 +@") AS 度
  512. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  513. WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  514. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  515. }
  516. }
  517. }
  518. }else{
  519. for(int n=0;n<=Global.月份Options_中.Count-1;n++){
  520. string 開始時間=N_year.ToString()+(n+1).ToString().PadLeft(2,'0')+"01000000";
  521. string 結束時間=N_year.ToString()+(n+1).ToString().PadLeft(2,'0')+"31235959";
  522. for(int j=0;j<=清單.Count-1;j++){
  523. if(Global.資料來源=="PLC"){
  524. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * "+ 倍率 +@") AS 度
  525. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  526. WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  527. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  528. }else{
  529. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST("+ p +" AS FLOAT) * "+ 倍率 +@") AS 度
  530. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  531. WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  532. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  533. }
  534. }
  535. }
  536. }
  537. SQL語法 = SQL語法[..^",".Length];
  538. SQL_ele_sys.SQL_載入區間表格_月_改(SQL語法);
  539. if(SQL_Module.dr.Read()){
  540. if(排碳時間選擇=="小時"){
  541. for(int n=0;n<=23;n++){
  542. DataRow row = ds3.NewRow();
  543. row["小時"] =n.ToString().PadLeft(2,'0');
  544. float 度數=0;
  545. for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
  546. string colname = SQL_Module.dr.GetName(s);
  547. if(int.Parse(colname.Substring(3,2))==n){
  548. if(SQL_Module.dr[s].ToString()!=""){
  549. 度數 += float.Parse(SQL_Module.dr[s].ToString());
  550. }
  551. }
  552. }
  553. if(Global.電表功率單位[電表id] == "W"){
  554. row["度數"] = (度數 / 1000).ToString("#,##0.##");
  555. 排碳度數總和 += 度數 / 1000;
  556. }else{
  557. row["度數"] = 度數.ToString("#,##0.##");
  558. 排碳度數總和 += 度數;
  559. }
  560. ds3.Rows.Add(row);
  561. }
  562. }else if(排碳時間選擇=="日"){
  563. for(int n=0;n<=DateTime.DaysInMonth(N_year,N_month)-1;n++){
  564. DataRow row = ds3.NewRow();
  565. row["日期"] =TimeData[n];
  566. float 度數=0;
  567. for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
  568. string colname = SQL_Module.dr.GetName(s);
  569. if(int.Parse(colname.Substring(3,2))==n+1){
  570. if(SQL_Module.dr[s].ToString()!=""){
  571. 度數 += float.Parse(SQL_Module.dr[s].ToString());
  572. }
  573. }
  574. }
  575. if(Global.電表功率單位[電表id] == "W"){
  576. row["度數"] = (度數 / 1000).ToString("#,##0.##");
  577. 排碳度數總和 += 度數 / 1000;
  578. }else{
  579. row["度數"] = 度數.ToString("#,##0.##");
  580. 排碳度數總和 += 度數;
  581. }
  582. ds3.Rows.Add(row);
  583. }
  584. }else{
  585. for(int n=0;n<=Global.月份Options_中.Count-1;n++){
  586. DataRow row = ds3.NewRow();
  587. row["月份"] = Global.月份Options_中[n];
  588. float 度數=0;
  589. for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
  590. string colname = SQL_Module.dr.GetName(s);
  591. if(int.Parse(colname.Substring(3,2))==n){
  592. if(SQL_Module.dr[s].ToString()!=""){
  593. 度數 += float.Parse(SQL_Module.dr[s].ToString());
  594. }
  595. }
  596. }
  597. if(Global.電表功率單位[電表id] == "W"){
  598. row["度數"] = (度數 / 1000).ToString("#,##0.##");
  599. 排碳度數總和 += 度數 / 1000;
  600. }else{
  601. row["度數"] = 度數.ToString("#,##0.##");
  602. 排碳度數總和 += 度數;
  603. }
  604. ds3.Rows.Add(row);
  605. }
  606. }
  607. }
  608. }
  609. 排碳使用度數_lb.text = string.Format("{0:###,##0.##}",排碳度數總和);
  610. float 排碳係數 = float.Parse(排碳係數_lb.text);
  611. float 排碳量 = 排碳係數 * 排碳度數總和 / 1000;
  612. 排碳量_lb.text = string.Format("{0:###,##0.###}",排碳量);
  613. }
  614. //============================
  615. public void 電能監控系統(){
  616. 電能報表_pl.SetActive(false);詳細電表_pl.SetActive(false);
  617. if(!電能監控系統_pl.activeInHierarchy){電能監控系統_pl.SetActive(true);}
  618. //Global.資料來源 = "PLC";
  619. Global.系統選擇 = "電能監控系統";
  620. 載入電表編號資料();
  621. //載入小電表();
  622. 載入簡易電表();
  623. 載入圖表上限();
  624. Color[] colorr =new Color[3]{new Color(0,0,0,0),new Color(0,0,0,1),new Color(1,1,1,1)};
  625. Color[] colobr =new Color[3]{new Color(0,0,0,0),new Color(1,1,1,1),new Color(0,0,0,1)};
  626. Color fontcolor=colorr[Global.系統主題];
  627. Color color2 = new Color(0.97f, 0.48f, 0.99f, 1f);
  628. Moudle.BarChart_表格設定(chart,fontcolor,color2,false,false,false);
  629. Moudle.BarChart_表格設定(chart2,fontcolor,color2,false,false,false);
  630. Moudle.BarChart_表格設定(電壓_barchart,fontcolor,color2,false,false,false);
  631. Moudle.BarChart_表格設定(電流_barchart,fontcolor,color2,false,false,false);
  632. Moudle.BarChart_表格設定(功率_barchart,fontcolor,color2,false,false,false);
  633. Moudle.LineChart_表格設定(電費_chart,fontcolor,color2,false,true,true);
  634. Moudle.LineChart_表格設定(年用電_chart,fontcolor,color2,false,true,true);
  635. Moudle.BarChart_表格設定(度數_chart,fontcolor,color2,false,true,true);
  636. //載入主電表資料();
  637. /*if(!string.IsNullOrEmpty(Global.電表名稱[1])){
  638. 載入副電表資料(Global.電表名稱[1]);
  639. }
  640. 載入電表異常();
  641. //載入系統主題();
  642. 載入簡易電表資料();
  643. 載入圖表上限();
  644. Color[] colorr =new Color[3]{new Color(0,0,0,0),new Color(0,0,0,1),new Color(1,1,1,1)};
  645. Color[] colobr =new Color[3]{new Color(0,0,0,0),new Color(1,1,1,1),new Color(0,0,0,1)};
  646. Color fontcolor=colorr[Global.系統主題];
  647. Color color2 = new Color(0.97f, 0.48f, 0.99f, 1f);
  648. Moudle.BarChart_表格設定(chart,fontcolor,color2,false,false,false);
  649. Moudle.BarChart_表格設定(chart2,fontcolor,color2,false,false,false);
  650. Moudle.BarChart_表格設定(電壓_barchart,fontcolor,color2,false,false,false);
  651. Moudle.BarChart_表格設定(電流_barchart,fontcolor,color2,false,false,false);
  652. Moudle.BarChart_表格設定(功率_barchart,fontcolor,color2,false,false,false);
  653. Moudle.LineChart_表格設定(電費_chart,fontcolor,color2,false,true,true);
  654. Moudle.LineChart_表格設定(年用電_chart,fontcolor,color2,false,true,true);
  655. Moudle.BarChart_表格設定(度數_chart,fontcolor,color2,false,true,true);*/
  656. }
  657. private void 安全運行天數(){
  658. if(Global.上次更新天數 != DateTime.Now.Day){
  659. DateTime day2 = DateTime.Now;
  660. int dayear, damonth, daday;
  661. if(DateTime.Now.Year > 2023){
  662. dayear = DateTime.Now.Year - 2023;
  663. day2 = day2.AddYears(-dayear);
  664. }
  665. if(DateTime.Now.Month > 1){
  666. damonth = DateTime.Now.Month - 1;
  667. day2 = day2.AddMonths(-damonth);
  668. }
  669. if(DateTime.Now.Day > 1){
  670. daday = DateTime.Now.Day - 1;
  671. day2 = day2.AddDays(-daday);
  672. }
  673. Global.運行天數 = new TimeSpan(DateTime.Now.Ticks - day2.Ticks);
  674. string ddd = Global.運行天數.Days.ToString().PadLeft(5,'0');
  675. 安全運行天數_img[0].sprite = Global.Wnum[int.Parse(ddd.Substring(0,1))];
  676. 安全運行天數_img[1].sprite = Global.Wnum[int.Parse(ddd.Substring(1,1))];
  677. 安全運行天數_img[2].sprite = Global.Wnum[int.Parse(ddd.Substring(2,1))];
  678. 安全運行天數_img[3].sprite = Global.Wnum[int.Parse(ddd.Substring(3,1))];
  679. 安全運行天數_img[4].sprite = Global.Wnum[int.Parse(ddd.Substring(4,1))];
  680. }
  681. }
  682. private void 載入電表編號資料(){
  683. try{
  684. SQL_ele_sys.SQL_電表清單資料(Global.客戶代號);
  685. DataSet ds1 = new();
  686. SQL_Module.da.Fill(ds1);
  687. Global.電表資料清單=ds1.Tables[0];
  688. Global.電表數量 = ds1.Tables[0].Rows.Count;
  689. if(電表編號_tb.text=="PANEL EMVCB#1" && Global.客戶代號 !="GCM"){
  690. 電表編號_tb.text=ds1.Tables[0].Rows[0][1].ToString();
  691. }
  692. if(副電表編號_tb.text=="PANEL EMVCB#1" && Global.客戶代號 !="GCM"){
  693. 副電表編號_tb.text=ds1.Tables[0].Rows[0][1].ToString();
  694. }
  695. /*if(電表編號_tb.text=="PANEL EMVCB#1"){
  696. 電表編號_tb.text=ds1.Tables[0].Rows[0][1].ToString();
  697. }
  698. if(副電表編號_tb.text=="PANEL EMVCB#1"){
  699. 副電表編號_tb.text=ds1.Tables[0].Rows[0][1].ToString();
  700. }*/
  701. for(int i=0;i<=Global.電表數量-1;i++){
  702. Global.電表名稱[i]=ds1.Tables[0].Rows[i][1].ToString();
  703. if(Global.資料來源=="PLC"){
  704. Global.電表功率單位[i]=ds1.Tables[0].Rows[i]["圖表顯示功率"].ToString();
  705. Global.圖表最大電壓[i]=ds1.Tables[0].Rows[i]["圖表顯示電壓"].ToString();
  706. Global.圖表最大電流[i]=ds1.Tables[0].Rows[i]["圖表顯示電流"].ToString();
  707. Global.圖表最大功率[i]=ds1.Tables[0].Rows[i]["圖表最大功率"].ToString();
  708. }else{
  709. Global.電表功率單位[i]=ds1.Tables[0].Rows[i]["功率單位"].ToString();
  710. Global.圖表最大電壓[i]=ds1.Tables[0].Rows[i]["最大電壓"].ToString();
  711. Global.圖表最大電流[i]=ds1.Tables[0].Rows[i]["最大電流"].ToString();
  712. Global.圖表最大功率[i]=ds1.Tables[0].Rows[i]["最大功率"].ToString();
  713. }
  714. }
  715. Global.載入電表名稱Option=false;
  716. }finally{
  717. SQL_Module.conn.Close();
  718. }
  719. }
  720. private void 載入圖表上限(){
  721. if(詳細電表_pl.activeInHierarchy){
  722. 詳V1.maxValue= int.Parse(Global.圖表最大電壓[Global.詳細電表電表ID-1]);
  723. 詳V2.maxValue= int.Parse(Global.圖表最大電壓[Global.詳細電表電表ID-1]);
  724. 詳V3.maxValue= int.Parse(Global.圖表最大電壓[Global.詳細電表電表ID-1]);
  725. 詳I1.maxValue= int.Parse(Global.圖表最大電流[Global.詳細電表電表ID-1]);
  726. 詳I2.maxValue= int.Parse(Global.圖表最大電流[Global.詳細電表電表ID-1]);
  727. 詳I3.maxValue= int.Parse(Global.圖表最大電流[Global.詳細電表電表ID-1]);
  728. 詳V3_lb.text = Global.圖表最大電壓[Global.詳細電表電表ID-1];
  729. 詳V2_lb.text = (float.Parse(Global.圖表最大電壓[Global.詳細電表電表ID-1])/2).ToString("##0") ;
  730. 詳I3_lb.text = Global.圖表最大電流[Global.詳細電表電表ID-1];
  731. 詳I2_lb.text = (float.Parse(Global.圖表最大電流[Global.詳細電表電表ID-1])/2).ToString("##0") ;
  732. 詳S3_lb.text = Global.圖表最大功率[Global.詳細電表電表ID-1];
  733. 詳S2_lb.text = (float.Parse(Global.圖表最大功率[Global.詳細電表電表ID-1])/2).ToString("##0") ;
  734. 詳Q3_lb.text = Global.圖表最大功率[Global.詳細電表電表ID-1];
  735. 詳Q2_lb.text = (float.Parse(Global.圖表最大功率[Global.詳細電表電表ID-1])/2).ToString("##0") ;
  736. 詳P3_lb.text = Global.圖表最大功率[Global.詳細電表電表ID-1];
  737. 詳P2_lb.text = (float.Parse(Global.圖表最大功率[Global.詳細電表電表ID-1])/2).ToString("##0") ;
  738. }else{
  739. Global.上限電表ID1 = Array.IndexOf(Global.電表名稱, 電表編號_tb.text);
  740. Global.上限電表ID2 = Array.IndexOf(Global.電表名稱, 副電表編號_tb.text);
  741. if(Global.上限電表ID1 != -1){
  742. V3_lb.text = Global.圖表最大電壓[Global.上限電表ID1];
  743. V2_lb.text = (float.Parse(Global.圖表最大電壓[Global.上限電表ID1])/2).ToString("##0") ;
  744. I3_lb.text = Global.圖表最大電流[Global.上限電表ID1];
  745. I2_lb.text = (float.Parse(Global.圖表最大電流[Global.上限電表ID1])/2).ToString("##0") ;
  746. }
  747. if(Global.上限電表ID2 != -1){
  748. 副V3_lb.text = Global.圖表最大電壓[Global.上限電表ID2];
  749. 副V2_lb.text = (float.Parse(Global.圖表最大電壓[Global.上限電表ID2])/2).ToString("##0") ;
  750. 副I3_lb.text = Global.圖表最大電流[Global.上限電表ID2];
  751. 副I2_lb.text = (float.Parse(Global.圖表最大電流[Global.上限電表ID2])/2).ToString("##0") ;
  752. }
  753. }
  754. }
  755. private void 載入小電表(){
  756. Moudle.清除控件(小電表清單_ct);
  757. int k=0;
  758. int h=0;
  759. for(int i=0;i<=Global.電表數量-1;i++){
  760. GameObject header = Instantiate(小電表清單_rpf, 小電表清單_tp);
  761. TextMeshProUGUI ele_text = new GameObject("ele_"+i+"_tb").AddComponent<TextMeshProUGUI>();
  762. if (i % 2 == 1){
  763. header.transform.localPosition=new Vector3(6,-10-(140*(k)),0);
  764. k+=1;
  765. }else{
  766. header.transform.localPosition = new Vector3(394, -10 - (140 * (h)), 0);
  767. h+=1;
  768. }
  769. header.AddComponent<Image>().type=Image.Type.Sliced;
  770. header.GetComponent<Image>().sprite=UIsprite;
  771. header.name="小電表_"+i.ToString();
  772. header.GetComponent<Image>().fillCenter=false;
  773. header.GetComponent<Image>().color = new Color(1f,1f,1f,1f);
  774. //header.AddComponent<Button>().onClick.AddListener(() => { 按鈕事件(ele_text); });
  775. Image ele_img = new GameObject("ele_"+i+"_pic").AddComponent<Image>();
  776. ele_img.transform.SetParent(header.transform, false);
  777. ele_img.sprite=控件圖片[3];
  778. ele_img.transform.localPosition = new Vector3(65f,-63f,0f);
  779. string[] title=new string[4]{"R","S","T","N"};
  780. float[] x_data=new float[4]{-25.0756f,-8.5f,8f,24.6f};
  781. for(int j=0;j<=3;j++){
  782. Image Color_img = new GameObject(title[j]+"_"+i+"_pic").AddComponent<Image>();
  783. Color_img.transform.SetParent(ele_img.transform, false);
  784. Color_img.color=new Color(0.05633092f,0.745283f,0.02460841f,1f);
  785. Color_img.transform.localPosition=new Vector3(x_data[j],19.39892f,0);
  786. Color_img.GetComponent<RectTransform>().sizeDelta = new Vector2(13.1166f, 22.0985f);
  787. }
  788. Color[] colorr =new Color[3]{new Color(0,0,0,0),new Color(0,0,0,1),new Color(1,1,1,1)};
  789. Color fontcolor=colorr[Global.系統主題];
  790. ele_text.transform.SetParent(header.transform, false);
  791. ele_text.transform.localPosition = new Vector3(250f,-63f,0f);
  792. ele_text.rectTransform.sizeDelta = new Vector2(246f, 100f);
  793. ele_text.font = myFont;
  794. ele_text.color=fontcolor;
  795. ele_text.alignment = TextAlignmentOptions.Center;
  796. ele_text.fontStyle = FontStyles.Bold;
  797. ele_text.fontSize=30;
  798. ele_text.enableAutoSizing=true;
  799. ele_text.text=Global.電表名稱[i].ToString();
  800. }
  801. int 電表數量 = Global.電表數量-1;
  802. int 商數 = 電表數量 / 2;
  803. int 餘數 = 電表數量 % 2;
  804. int 結果 = 商數 + (餘數 > 0 ? 1 : 0);
  805. 小電表清單_ct.GetComponent<RectTransform>().sizeDelta = new Vector2(小電表清單_ct.GetComponent<RectTransform>().sizeDelta.x,145*結果);
  806. }
  807. private void 載入簡易電表(){
  808. Moudle.清除控件(簡易電表清單_ct);
  809. int[] Vector2X = new int[4] {100,520,200,200};
  810. int[] Vector3X = new int[5] {0,100,620,820,1020};
  811. string[] HeaderString = new string[4]{"","電表名稱","電壓","電流"};
  812. string[] CellName = new string[4]{"","Name","V","I"};
  813. for(int j=1;j<=3;j++){
  814. GameObject header = Instantiate(簡易電表清單_rpf, 簡易電表清單_tp);
  815. TextMeshProUGUI ele_text = new GameObject("easyHeader_"+j+"_tb").AddComponent<TextMeshProUGUI>();
  816. header.transform.localPosition=new Vector3(Vector3X[j],0,0);
  817. header.GetComponent<RectTransform>().sizeDelta = new Vector2(Vector3X[j+1]-Vector3X[j],70);
  818. header.AddComponent<Image>().type=Image.Type.Sliced;
  819. header.GetComponent<Image>().sprite=UIsprite;
  820. header.GetComponent<Image>().fillCenter=false;
  821. header.GetComponent<Image>().color = new Color(1f,1f,1f,1f);
  822. Color[] colorr =new Color[3]{new Color(0,0,0,0),new Color(0,0,0,1),new Color(1,1,1,1)};
  823. Color fontcolor=colorr[Global.系統主題];
  824. ele_text.transform.SetParent(header.transform, false);
  825. ele_text.rectTransform.anchoredPosition = new Vector3(0f,0f,0f);
  826. ele_text.rectTransform.sizeDelta = new Vector2(Vector2X[j], 70f);
  827. ele_text.font = myFont;
  828. ele_text.color=fontcolor;
  829. ele_text.alignment = TextAlignmentOptions.Center;
  830. ele_text.fontStyle = FontStyles.Bold;
  831. ele_text.fontSize=36;
  832. ele_text.margin = new Vector4(10, 5, 10, 5);
  833. ele_text.text=HeaderString[j];
  834. }
  835. for(int i=0;i<=Global.電表數量-1;i++){
  836. GameObject header = Instantiate(簡易電表清單_rpf, 簡易電表清單_tp);
  837. Image ele_img = new GameObject("easyChild_pic_"+i.ToString().PadLeft(8,'0')).AddComponent<Image>();
  838. ele_img.rectTransform.sizeDelta = new Vector2(90, 90);
  839. ele_img.transform.SetParent(header.transform, false);
  840. ele_img.sprite=控件圖片[3];
  841. ele_img.transform.localPosition = new Vector3(106.1107f,-50f,0f);
  842. header.transform.localPosition=new Vector3(Vector3X[0],-70-(100*i),0);
  843. header.GetComponent<RectTransform>().sizeDelta = new Vector2(Vector3X[1]-Vector3X[0],100);
  844. header.AddComponent<Image>().type=Image.Type.Sliced;
  845. header.GetComponent<Image>().sprite=UIsprite;
  846. header.GetComponent<Image>().fillCenter=false;
  847. header.GetComponent<Image>().color = new Color(1f,1f,1f,1f);
  848. header.AddComponent<Button>().onClick.AddListener(() => { 按鈕事件(ele_img.name); });
  849. for(int j=1;j<=3;j++){
  850. header = Instantiate(簡易電表清單_rpf, 簡易電表清單_tp);
  851. TextMeshProUGUI ele_text = new GameObject("easyChild_"+CellName[j]+"_tb_"+i.ToString().PadLeft(8,'0')).AddComponent<TextMeshProUGUI>();
  852. header.transform.localPosition=new Vector3(Vector3X[j],-70-(100*i),0);
  853. header.GetComponent<RectTransform>().sizeDelta = new Vector2(Vector3X[j+1]-Vector3X[j],100);
  854. header.AddComponent<Image>().type=Image.Type.Sliced;
  855. header.GetComponent<Image>().sprite=UIsprite;
  856. header.GetComponent<Image>().fillCenter=false;
  857. header.GetComponent<Image>().color = new Color(1f,1f,1f,1f);
  858. header.AddComponent<Button>().onClick.AddListener(() => { 按鈕事件(ele_text.name);});
  859. Color[] colorr =new Color[3]{new (0,0,0,0),new (0,0,0,1),new (1,1,1,1)};
  860. Color fontcolor=colorr[Global.系統主題];
  861. ele_text.transform.SetParent(header.transform, false);
  862. ele_text.transform.localPosition = new Vector3(Vector2X[j]/2f,-50f,0f);
  863. ele_text.rectTransform.sizeDelta = new Vector2(Vector2X[j], 100f);
  864. ele_text.font = myFont;
  865. ele_text.color=fontcolor;
  866. ele_text.alignment = TextAlignmentOptions.Center;
  867. ele_text.fontStyle = FontStyles.Bold;
  868. ele_text.fontSize=36;
  869. ele_text.margin = new Vector4(10, 5, 10, 5);
  870. ele_text.text=HeaderString[j];
  871. }
  872. }
  873. 簡易電表清單_ct.GetComponent<RectTransform>().sizeDelta = new Vector2(小電表清單_ct.GetComponent<RectTransform>().sizeDelta.x,100*Global.電表數量+70);
  874. }
  875. private void 載入主電表資料(){
  876. string 流水號="";string 電表編號="";string 電表迴路="";string 功率單位="";
  877. if(Global.資料來源=="PLC"){
  878. 流水號 = 電表編號_tb.text;
  879. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  880. if(Global.電表資料清單.Rows[i][1].ToString().Contains(流水號)){
  881. 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
  882. }
  883. }
  884. }else{
  885. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  886. if(Global.電表資料清單.Rows[i][0].ToString().Contains("EL-00000001")){
  887. 流水號 = Global.電表資料清單.Rows[i][0].ToString();
  888. 電表編號 = Global.電表資料清單.Rows[i][3].ToString();
  889. 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
  890. 電表編號_tb.text = Global.電表資料清單.Rows[i][1].ToString();
  891. 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
  892. }
  893. }
  894. }
  895. Global.PA = 電表編號_tb.text;
  896. if(Global.主電表上次編號 != Global.PA){
  897. Global.主電表上次編號 = Global.PA ;
  898. Global.電表ID1 = Array.IndexOf(Global.電表名稱, Global.PA)+1;
  899. }
  900. if(Global.PHP_Load_End_電表即時路徑){
  901. 電表資料(Global.電表ID1,電表編號,電表迴路);
  902. //Debug.Log(Global.Vavg);Debug.Log(Global.Iavg);
  903. 平均電壓_tb.text = Global.Vavg + " V";
  904. 平均電流_tb.text = Global.Iavg + " A";
  905. 累計用電量_tb.text = Global.Etol + " GWh";
  906. if(Global.COSdata <=0){
  907. Global.功率因素數值 = Global.COSdata+100;
  908. }else{
  909. Global.功率因素數值 = Global.COSdata;
  910. }
  911. }
  912. if(Global.paint_choice2){
  913. Global.paint_choice2=false;
  914. 繪圖(chart,流水號,電表編號,電表迴路,功率單位);
  915. }
  916. }
  917. private void 載入副電表資料(){
  918. string 流水號;string 電表編號="";string 電表迴路="";string 功率單位="";
  919. if(Global.資料來源=="PLC"){
  920. 流水號=副電表編號_tb.text;
  921. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  922. if(Global.電表資料清單.Rows[i][1].ToString().Contains(流水號)){
  923. 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
  924. }
  925. }
  926. }else{
  927. 流水號=取得流水號(副電表編號_tb.text);
  928. if(流水號!=null){
  929. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  930. if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
  931. 電表編號 = Global.電表資料清單.Rows[i][3].ToString();
  932. 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
  933. 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
  934. }
  935. }
  936. }
  937. }
  938. Global.PA = 副電表編號_tb.text; //副電表編號_tb.text = Global.PA;
  939. if(Global.副電表上次編號 != Global.PA){
  940. Global.副電表上次編號 = Global.PA ;
  941. Global.電表ID2 = Array.IndexOf(Global.電表名稱, Global.PA)+1;
  942. }
  943. if(Global.PHP_Load_End_電表即時路徑){
  944. 電表資料(Global.電表ID2,電表編號,電表迴路);
  945. 副平均電壓_tb.text = Global.Vavg + " V";
  946. 副平均電流_tb.text = Global.Iavg + " A";
  947. 副累計用電量_tb.text = Global.Etol + " GWh";
  948. if(Global.COSdata <=0){
  949. Global.副功率因素數值 = Global.COSdata+100;
  950. }else{
  951. Global.副功率因素數值 = Global.COSdata;
  952. }
  953. }
  954. if(Global.paint_choice3){
  955. Global.paint_choice3=false;
  956. 繪圖(chart2,流水號,電表編號,電表迴路,功率單位);
  957. }
  958. }
  959. public void Open_detail(int num){
  960. 詳細電表_pl.SetActive(true);
  961. //adMobManager.HideBanner();
  962. string 流水號, 電表編號="",電表迴路="",功率單位="",流水號2;
  963. if(num==0){
  964. Global.詳細電表電表ID=Global.電表ID1;
  965. Global.PA=電表編號_tb.text;
  966. 流水號=電表編號_tb.text;
  967. }else{
  968. Global.詳細電表電表ID=Global.電表ID2;
  969. Global.PA=副電表編號_tb.text;
  970. 流水號=副電表編號_tb.text;
  971. }
  972. 流水號2=取得流水號(流水號);
  973. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  974. if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號2)){
  975. 電表編號 = Global.電表資料清單.Rows[i][3].ToString();
  976. 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
  977. if(Global.資料來源=="PLC"){
  978. 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
  979. }else{
  980. 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
  981. }
  982. }
  983. }
  984. 載入詳細電表資料();
  985. 載入圖表上限();
  986. 三合一繪圖(流水號,電表編號,電表迴路,功率單位);
  987. }
  988. public void close_detail(){
  989. 電能監控系統();
  990. }
  991. private void 載入詳細電表資料(){
  992. string 電表編號="";string 電表迴路="";;
  993. if(Global.資料來源=="PLC" && Global.PHP_Load_End){
  994. 電表資料(Global.詳細電表電表ID,電表編號,電表迴路);
  995. 詳細平均電壓_tb.text=Global.Vavg + " V";
  996. 詳細平均電流_tb.text=Global.Iavg + " A";
  997. }else{
  998. string 流水號 = 取得流水號(Global.電表名稱[Global.詳細電表電表ID-1]);
  999. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  1000. if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
  1001. 電表編號 = Global.電表資料清單.Rows[i][3].ToString();
  1002. 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
  1003. }
  1004. }
  1005. 電表資料(Global.詳細電表電表ID,電表編號,電表迴路);
  1006. 詳細平均電壓_tb.text=Global.Vavg + " V";
  1007. 詳細平均電流_tb.text=Global.Iavg + " A";
  1008. if(Global.COSdata <=0){
  1009. Global.詳細功率因素數值 = Global.COSdata+100;
  1010. }else{
  1011. Global.詳細功率因素數值 = Global.COSdata;
  1012. }
  1013. }
  1014. }
  1015. /*private void 載入電表異常(){
  1016. if(Global.資料來源=="PLC" && Global.PHP_Load_End2){
  1017. string ele_code = Global.PHP_Report2;
  1018. //Debug.Log(ele_code.Length);
  1019. if(ele_code.Length > 1){
  1020. for(int b=0;b<=Global.電表數量;b++){
  1021. if(ele_code.Substring(2*b,1)=="1"){
  1022. Global.電表異常BL[b+1]=true;
  1023. 電表異常(b);
  1024. if((b+1)==Global.電表ID1){
  1025. if(主跑馬燈_pl.activeInHierarchy==false){
  1026. 主跑馬燈_pl.SetActive(true);
  1027. }
  1028. if(主電力警報音效_bt.activeInHierarchy==false){
  1029. 主電力警報音效_bt.SetActive(true);
  1030. }
  1031. }else if((b+1)==Global.電表ID2){
  1032. Global.副電表有異常=true;
  1033. if(副跑馬燈_pl.activeInHierarchy==false){
  1034. 副跑馬燈_pl.SetActive(true);
  1035. }
  1036. if(副電力警報音效_bt.activeInHierarchy==false){
  1037. 副電力警報音效_bt.SetActive(true);
  1038. }
  1039. if(Global.Ele_alarm_sound==true){
  1040. Button bmt=副電力警報音效_bt.GetComponent<Button>();
  1041. bmt.image.sprite=控件圖片[1];
  1042. }else{
  1043. Button bmt=副電力警報音效_bt.GetComponent<Button>();
  1044. bmt.image.sprite=控件圖片[2];
  1045. }
  1046. }
  1047. }else{
  1048. Global.電表異常BL[b+1]=false;
  1049. if((b+1)==Global.電表ID1){
  1050. if(主跑馬燈_pl.activeInHierarchy==true){
  1051. 主跑馬燈_pl.SetActive(false);
  1052. }
  1053. if(主電力警報音效_bt.activeInHierarchy==true){
  1054. 主電力警報音效_bt.SetActive(false);
  1055. }
  1056. Global.主電表上次異常內容="";
  1057. }else if((b+1)==Global.電表ID2){
  1058. Global.副電表有異常=false;
  1059. if(副跑馬燈_pl.activeInHierarchy==true){
  1060. 副跑馬燈_pl.SetActive(false);
  1061. }
  1062. if(副電力警報音效_bt.activeInHierarchy==true){
  1063. 副電力警報音效_bt.SetActive(false);
  1064. }
  1065. Global.副電表上次異常內容="";
  1066. }
  1067. foreach (Image pic in 小電表清單_ct.GetComponentsInChildren<Image>()){
  1068. if(pic.name.Contains("R_"+(b).ToString())){
  1069. pic.color=new Color(0.05633092f,0.745283f,0.02460841f,1f);
  1070. }
  1071. }
  1072. foreach (Image pic in 小電表清單_ct.GetComponentsInChildren<Image>()){
  1073. if(pic.name.Contains("S_"+(b).ToString())){
  1074. pic.color=new Color(0.05633092f,0.745283f,0.02460841f,1f);
  1075. }
  1076. }
  1077. foreach (Image pic in 小電表清單_ct.GetComponentsInChildren<Image>()){
  1078. if(pic.name.Contains("T_"+(b).ToString())){
  1079. pic.color=new Color(0.05633092f,0.745283f,0.02460841f,1f);
  1080. }
  1081. }
  1082. }
  1083. }
  1084. }
  1085. for(int k=1;k<=Global.電表數量;k++){
  1086. if(Global.電表異常BL[k]==true && k!= Global.電表ID1 && k != Global.電表ID2){
  1087. Global.PK= k.ToString();
  1088. Global.PA=Global.電表名稱[k-1];
  1089. 載入副電表資料();
  1090. Global.paint_choice3 = true;
  1091. }
  1092. }
  1093. }
  1094. }
  1095. private void 電表異常(int ele_num){
  1096. //RDS M3100 20\r
  1097. //StartCoroutine(PostRequest(8,"RDS M"+(3000+ele_num*100).ToString()+" 20\r"));
  1098. //Debug.Log("ELE_DATAA:"+ele_data);
  1099. }*/
  1100. private void 載入簡易電表資料(){
  1101. if(簡易電表_pl.activeInHierarchy==true){
  1102. if(Global.資料來源=="PLC"){
  1103. string[] PLC_data = new string[]{Global.PHP_Report,Global.PHP_Report3,Global.PHP_Report4,Global.PHP_Report5,Global.PHP_Report6,Global.PHP_Report7,Global.PHP_Report8};
  1104. for(int i=0;i<=Global.電表數量-1;i++){
  1105. string data1 =PLC_data[i];
  1106. string a,b;
  1107. a=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(114, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(108, 5)), 2).PadLeft(16, '0'));
  1108. b=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(66, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(60, 5)), 2).PadLeft(16, '0'));
  1109. TextMeshProUGUI ele_text=null,ele_text2=null,ele_text3=null;
  1110. foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
  1111. if (textComponent.name=="easyChild_V_tb_"+i.ToString().PadLeft(8,'0')){
  1112. ele_text = textComponent;
  1113. break;
  1114. }
  1115. }
  1116. if (ele_text != null){
  1117. ele_text.text= a;
  1118. }
  1119. foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
  1120. if (textComponent.name=="easyChild_I_tb_"+i.ToString().PadLeft(8,'0')){
  1121. ele_text2 = textComponent;
  1122. break;
  1123. }
  1124. }
  1125. if (ele_text2 != null){
  1126. ele_text2.text= b;
  1127. }
  1128. foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
  1129. if (textComponent.name=="easyChild_Name_tb_"+i.ToString().PadLeft(8,'0')){
  1130. ele_text3 = textComponent;
  1131. break;
  1132. }
  1133. }
  1134. if (ele_text3 != null){
  1135. ele_text3.text= Global.電表名稱[i];
  1136. }
  1137. }
  1138. }else{
  1139. if(Global.PHP_Load_End_電表即時路徑){
  1140. for(int i=0;i<=Global.電表數量-1;i++){
  1141. string a,b;
  1142. string[] data1 = Global.電表即時資料字典[Global.電表資料清單.Rows[i][3].ToString()];
  1143. a=(float.Parse(data1[3])/10).ToString();
  1144. if( Global.電表資料清單.Rows[i][4].ToString()=="迴路1"){
  1145. b=(float.Parse(data1[4])/100 + float.Parse(data1[5])/100).ToString();
  1146. }else{
  1147. b=(float.Parse(data1[6])/100 + float.Parse(data1[7])/100).ToString();
  1148. }
  1149. TextMeshProUGUI ele_text=null,ele_text2=null,ele_text3=null;
  1150. foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
  1151. if (textComponent.name=="easyChild_V_tb_"+i.ToString().PadLeft(8,'0')){
  1152. ele_text = textComponent;
  1153. break;
  1154. }
  1155. }
  1156. if (ele_text != null){
  1157. ele_text.text= a;
  1158. }
  1159. foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
  1160. if (textComponent.name=="easyChild_I_tb_"+i.ToString().PadLeft(8,'0')){
  1161. ele_text2 = textComponent;
  1162. break;
  1163. }
  1164. }
  1165. if (ele_text2 != null){
  1166. ele_text2.text= b;
  1167. }
  1168. foreach (TextMeshProUGUI textComponent in 簡易電表_pl.GetComponentsInChildren<TextMeshProUGUI>()){
  1169. if (textComponent.name=="easyChild_Name_tb_"+i.ToString().PadLeft(8,'0')){
  1170. ele_text3 = textComponent;
  1171. break;
  1172. }
  1173. }
  1174. if (ele_text3 != null){
  1175. ele_text3.text= Global.電表名稱[i];
  1176. }
  1177. }
  1178. }
  1179. }
  1180. }
  1181. }
  1182. /*public void 切換簡易電表(){
  1183. if(簡易電表_pl.activeInHierarchy){
  1184. 簡易電表_pl.SetActive(false);
  1185. 小電表_pl.SetActive(true);
  1186. }else{
  1187. 簡易電表_pl.SetActive(true);
  1188. 小電表_pl.SetActive(false);
  1189. }
  1190. }*/
  1191. private void 電表資料(int num,string 電表編號,string 電表迴路){
  1192. if(Global.資料來源=="PLC" && Global.PHP_Load_End){
  1193. int index = num-1;
  1194. string[] PLC_data = new string[]{Global.PHP_Report,Global.PHP_Report3,Global.PHP_Report4,Global.PHP_Report5,Global.PHP_Report6,Global.PHP_Report7,Global.PHP_Report8};
  1195. string data1=PLC_data[index];
  1196. string[] EtolStr = new string[]{"5.83", "2.83", "1.02", "1.01", "0.54", "0.31", "0.12"};
  1197. Global.Etol = EtolStr[index];
  1198. if(data1.Length != 0){
  1199. Global.Vavg=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(114, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(108, 5)), 2).PadLeft(16, '0'));
  1200. Global.Iavg=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(66, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(60, 5)), 2).PadLeft(16, '0'));
  1201. Global.COSdata =0;
  1202. if(詳細電表_pl.activeInHierarchy){
  1203. 詳細電流A相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(6, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(0, 5)), 2).PadLeft(16, '0'))+ " A";
  1204. 詳細電流B相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(18, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(12, 5)), 2).PadLeft(16, '0'))+ " A";
  1205. 詳細電流C相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(30, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(24, 5)), 2).PadLeft(16, '0'))+ " A";
  1206. 詳細電壓AB相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(78, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(72, 5)), 2).PadLeft(16, '0'))+ " V";
  1207. 詳細電壓BC相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(90, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(84, 5)), 2).PadLeft(16, '0'))+ " V";
  1208. 詳細電壓CA相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(102, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(96, 5)), 2).PadLeft(16, '0'))+ " V";
  1209. 詳細電流不平衡A相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(174, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(168, 5)), 2).PadLeft(16, '0'))+ " A";
  1210. 詳細電流不平衡B相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(186, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(180, 5)), 2).PadLeft(16, '0'))+ " A";
  1211. 詳細電流不平衡C相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(198, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(192, 5)), 2).PadLeft(16, '0'))+ " A";
  1212. 詳細電壓不平衡AB相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(222, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(216, 5)), 2).PadLeft(16, '0'))+ " V";
  1213. 詳細電壓不平衡BC相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(234, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(228, 5)), 2).PadLeft(16, '0')) + " V";
  1214. 詳細電壓不平衡CA相_tb.text=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(246, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(240, 5)), 2).PadLeft(16, '0')) + " V";
  1215. string 詳細平均有效功率=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(354, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(348, 5)), 2).PadLeft(16, '0'));
  1216. string 詳細平均無效功率=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(402, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(396, 5)), 2).PadLeft(16, '0'));
  1217. string 詳細平均視在功率=Converter_we.BintoSng(Convert.ToString(Int32.Parse(data1.Substring(450, 5)), 2).PadLeft(16, '0') + Convert.ToString(Int32.Parse(data1.Substring(444, 5)), 2).PadLeft(16, '0'));
  1218. if(Global.電表功率單位[Global.詳細電表電表ID-1]=="W"){
  1219. Debug.Log(詳細平均有效功率);
  1220. float 詳細平均有效功率2 = float.Parse(詳細平均有效功率) * 1000;
  1221. 詳細平均有效功率_tb.text = 詳細平均有效功率2.ToString("#,##0.##") + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
  1222. float 詳細平均無效功率2 = float.Parse(詳細平均無效功率) * 1000;
  1223. 詳細平均無效功率_tb.text = 詳細平均無效功率2.ToString("#,##0.##") + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
  1224. float 詳細平均視在功率2 = float.Parse(詳細平均視在功率) * 1000;
  1225. 詳細平均視在功率_tb.text = 詳細平均視在功率2.ToString("#,##0.##") + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
  1226. }else{
  1227. 詳細平均有效功率_tb.text= 詳細平均有效功率 + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
  1228. 詳細平均無效功率_tb.text= 詳細平均無效功率 + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
  1229. 詳細平均視在功率_tb.text= 詳細平均視在功率 + " "+Global.電表功率單位[Global.詳細電表電表ID-1];
  1230. }
  1231. }
  1232. }else{
  1233. Global.COSdata =0;
  1234. Global.Vavg="0";
  1235. Global.Iavg="0";
  1236. 詳細電流A相_tb.text="0";
  1237. 詳細電流B相_tb.text="0";
  1238. 詳細電流C相_tb.text="0";
  1239. 詳細電壓AB相_tb.text="0";
  1240. 詳細電壓BC相_tb.text="0";
  1241. 詳細電壓CA相_tb.text="0";
  1242. 詳細電流不平衡A相_tb.text="0";
  1243. 詳細電流不平衡B相_tb.text="0";
  1244. 詳細電流不平衡C相_tb.text="0";
  1245. 詳細電壓不平衡AB相_tb.text="0";
  1246. 詳細電壓不平衡BC相_tb.text="0";
  1247. 詳細電壓不平衡CA相_tb.text="0";
  1248. 詳細平均有效功率_tb.text="0";
  1249. 詳細平均無效功率_tb.text="0";
  1250. 詳細平均視在功率_tb.text="0";
  1251. }
  1252. }else{
  1253. if(Global.電表即時資料字典.ContainsKey(電表編號)){
  1254. string[] data1 = Global.電表即時資料字典[電表編號];
  1255. if(電表迴路=="迴路1"){
  1256. Global.Etol = data1[32] + " kWh";
  1257. Global.Vavg=(float.Parse(data1[3])/10).ToString();
  1258. //Debug.Log(data1[4]);Debug.Log(data1[5]);
  1259. Global.Iavg=(float.Parse(data1[4])/100 + float.Parse(data1[5])/100).ToString();
  1260. float 功率因素 = float.Parse(data1[19])/10;
  1261. Global.COSdata = Mathf.FloorToInt(功率因素);
  1262. if(詳細電表_pl.activeInHierarchy){
  1263. 詳細電流A相_tb.text=(float.Parse(data1[4])/100).ToString()+ " A";
  1264. 詳細電流B相_tb.text=(float.Parse(data1[5])/100).ToString()+ " A";
  1265. 詳細電流C相_tb.text="0 A";
  1266. 詳細電壓AB相_tb.text=(float.Parse(data1[1])/10).ToString()+ " V";
  1267. 詳細電壓BC相_tb.text=(float.Parse(data1[2])/10).ToString()+ " V";
  1268. 詳細電壓CA相_tb.text="0 V";
  1269. 詳細電流不平衡A相_tb.text="0 V";
  1270. 詳細電流不平衡B相_tb.text="0 V";
  1271. 詳細電流不平衡C相_tb.text="0 V";
  1272. 詳細電壓不平衡AB相_tb.text="0 V";
  1273. 詳細電壓不平衡BC相_tb.text="0 V";
  1274. 詳細電壓不平衡CA相_tb.text="0 V";
  1275. 詳細平均有效功率_tb.text=(float.Parse(data1[10])*10).ToString()+ " W ";
  1276. 詳細平均無效功率_tb.text=(float.Parse(data1[13])*10).ToString()+ " W ";
  1277. 詳細平均視在功率_tb.text=(float.Parse(data1[16])*10).ToString()+ " W ";
  1278. }
  1279. }else{
  1280. Global.Etol = data1[34] + " kWh";
  1281. Global.Vavg=(float.Parse(data1[3])/10).ToString();
  1282. //Debug.Log(data1[4]);Debug.Log(data1[5]);
  1283. Global.Iavg=(float.Parse(data1[6])/100 + float.Parse(data1[7])/100).ToString();
  1284. float 功率因素 = float.Parse(data1[31])/10;
  1285. Global.COSdata = Mathf.FloorToInt(功率因素);
  1286. if(詳細電表_pl.activeInHierarchy){
  1287. 詳細電流A相_tb.text=(float.Parse(data1[6])/100).ToString()+ " A";
  1288. 詳細電流B相_tb.text=(float.Parse(data1[7])/100).ToString()+ " A";
  1289. 詳細電流C相_tb.text="0 A";
  1290. 詳細電壓AB相_tb.text=(float.Parse(data1[1])/10).ToString()+ " V";
  1291. 詳細電壓BC相_tb.text=(float.Parse(data1[2])/10).ToString()+ " V";
  1292. 詳細電壓CA相_tb.text="0 V";
  1293. 詳細電流不平衡A相_tb.text="0 V";
  1294. 詳細電流不平衡B相_tb.text="0 V";
  1295. 詳細電流不平衡C相_tb.text="0 V";
  1296. 詳細電壓不平衡AB相_tb.text="0 V";
  1297. 詳細電壓不平衡BC相_tb.text="0 V";
  1298. 詳細電壓不平衡CA相_tb.text="0 V";
  1299. 詳細平均有效功率_tb.text=(float.Parse(data1[22])*10).ToString()+ " W ";
  1300. 詳細平均無效功率_tb.text=(float.Parse(data1[25])*10).ToString()+ " W ";
  1301. 詳細平均視在功率_tb.text=(float.Parse(data1[28])*10).ToString()+ " W ";
  1302. }
  1303. }
  1304. }else{
  1305. Global.Etol="0";Global.Vavg="0";Global.Iavg="0";詳細電流A相_tb.text="0 A";詳細電流B相_tb.text="0 A";詳細電流C相_tb.text="0 A";詳細電壓AB相_tb.text="0 V";
  1306. Global.COSdata =0;
  1307. 詳細電壓BC相_tb.text="0 V";詳細電壓CA相_tb.text="0 V";詳細電流不平衡A相_tb.text="0 A";詳細電流不平衡B相_tb.text="0 A";詳細電流不平衡C相_tb.text="0 A";
  1308. 詳細電壓不平衡AB相_tb.text="0 V";詳細電壓不平衡BC相_tb.text="0 V";詳細電壓不平衡CA相_tb.text="0 V";詳細平均有效功率_tb.text="0 W ";詳細平均無效功率_tb.text="0 W ";
  1309. 詳細平均視在功率_tb.text="0 W ";
  1310. }
  1311. }
  1312. }
  1313. private void 繪圖(BarChart barchart,string 電表流水號,string 電表編號,string 電表迴路,string 功率單位){
  1314. DataSet ds1= new DataSet();
  1315. barchart.ClearData();
  1316. DateTime day2 = DateTime.Now.AddDays(-30);
  1317. string 開始時間= day2.ToString("yyyyMMdd");
  1318. string 結束時間= DateTime.Now.ToString("yyyyMMdd");
  1319. string 倍數;if(功率單位=="W"){倍數="1000";}else{倍數="1";}
  1320. string SQL語法;
  1321. if(Global.資料來源=="PLC"){
  1322. SQL語法=" SELECT DISTINCT 時間_年 , 時間_月 , 時間_日 ,AVG(CONVERT(float,總平均功率) * "+倍數+" ) FROM (";
  1323. if(day2.Year!=DateTime.Now.Year){
  1324. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1325. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
  1326. SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1327. WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1328. UNION ALL";
  1329. }
  1330. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(day2.Year.ToString())){
  1331. SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1332. WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1333. UNION ALL";
  1334. }
  1335. }
  1336. SQL語法 = SQL語法[..^"UNION ALL".Length];
  1337. SQL語法 += ") AS all_data GROUP BY 時間_年, 時間_月, 時間_日 ORDER BY 時間_年, 時間_月, 時間_日";
  1338. }else{
  1339. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1340. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
  1341. SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1342. WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1343. UNION ALL";
  1344. }
  1345. }
  1346. SQL語法 = SQL語法[..^"UNION ALL".Length];
  1347. SQL語法 += ") AS all_data GROUP BY 時間_年, 時間_月, 時間_日 ORDER BY 時間_年, 時間_月, 時間_日";
  1348. }
  1349. }else{
  1350. string p;if(電表迴路=="迴路1"){p="P1";}else{p="P2";}
  1351. SQL語法=" SELECT CONVERT(VARCHAR(8), 上傳時間, 120) AS 日期, AVG(CAST("+p+" AS FLOAT) * "+倍數+" ) AS 平均P1 FROM (";
  1352. if(day2.Year!=DateTime.Now.Year){
  1353. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1354. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
  1355. SQL語法 += "SELECT 上傳時間, "+p+" FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1356. WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1357. UNION ALL";
  1358. }
  1359. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(day2.Year.ToString())){
  1360. SQL語法 += "SELECT 上傳時間, "+p+" FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1361. WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1362. UNION ALL";
  1363. }
  1364. }
  1365. SQL語法 = SQL語法[..^"UNION ALL".Length];
  1366. SQL語法 += ") AS 合併資料表 GROUP BY CONVERT(VARCHAR(8), 上傳時間, 120) ORDER BY 日期";
  1367. }else{
  1368. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1369. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
  1370. SQL語法 += "SELECT 上傳時間, "+p+" FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1371. WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1372. UNION ALL";
  1373. }
  1374. }
  1375. SQL語法 = SQL語法[..^"UNION ALL".Length];
  1376. SQL語法 += ") AS 合併資料表 GROUP BY CONVERT(VARCHAR(8), 上傳時間, 120) ORDER BY 日期";
  1377. }
  1378. }
  1379. List<string> xAxisValue = new();
  1380. List<float> yAxisValue = new();
  1381. SQL_ele_sys.SQL_電表內容資料清單載入_月(SQL語法);
  1382. SQL_Module.da.Fill(ds1);
  1383. for(int i =0;i<=ds1.Tables[0].Rows.Count-1;i++){
  1384. if(Global.資料來源=="PLC"){
  1385. xAxisValue.Add(ds1.Tables[0].Rows[i][2].ToString());
  1386. yAxisValue.Add(float.Parse(ds1.Tables[0].Rows[i][3].ToString()));
  1387. }else{
  1388. xAxisValue.Add(ds1.Tables[0].Rows[i][0].ToString());
  1389. yAxisValue.Add(float.Parse(ds1.Tables[0].Rows[i][1].ToString()));
  1390. }
  1391. }
  1392. foreach (var xValue in xAxisValue) {
  1393. barchart.AddXAxisData(xValue);
  1394. }
  1395. foreach (float item in yAxisValue){
  1396. barchart.AddData(0, item);
  1397. }
  1398. }
  1399. private void 三合一繪圖(string 電表流水號,string 電表編號,string 電表迴路,string 功率單位){
  1400. 電壓_barchart.ClearData();
  1401. 電流_barchart.ClearData();
  1402. 功率_barchart.ClearData();
  1403. List<string> xAxisValue = new();
  1404. List<float> yAxisValue = new();
  1405. List<float> yAxisValue2 = new();
  1406. List<float> yAxisValue3 = new();
  1407. DataSet ds1 = new();
  1408. DateTime day2=DateTime.Now.AddDays(-30);
  1409. string 開始時間= day2.ToString("yyyyMMdd");
  1410. string 結束時間= DateTime.Now.ToString("yyyyMMdd");
  1411. string SQL語法;
  1412. if(Global.資料來源=="PLC"){
  1413. string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
  1414. SQL語法="SELECT DISTINCT 時間_年 , 時間_月 , 時間_日 , AVG(CONVERT(float,電壓L_L_Avg)),AVG(CONVERT(float,電流Avg )),AVG(CONVERT(float,總平均功率 ) * "+ 倍率 +" ) FROM (";
  1415. if(day2.Year!=DateTime.Now.Year){
  1416. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1417. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
  1418. SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1419. WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1420. UNION ALL";
  1421. }
  1422. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(day2.Year.ToString())){
  1423. SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1424. WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1425. UNION ALL";
  1426. }
  1427. }
  1428. SQL語法 = SQL語法[..^"UNION ALL".Length];
  1429. SQL語法 += ") AS all_data GROUP BY 時間_年, 時間_月, 時間_日 ORDER BY 時間_年, 時間_月, 時間_日";
  1430. }else{
  1431. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1432. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
  1433. SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1434. WHERE (電表編號 LIKE N'" + 電表流水號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1435. UNION ALL";
  1436. }
  1437. }
  1438. SQL語法 = SQL語法[..^"UNION ALL".Length];
  1439. SQL語法 += ") AS all_data GROUP BY 時間_年, 時間_月, 時間_日 ORDER BY 時間_年, 時間_月, 時間_日";
  1440. }
  1441. }else{
  1442. string p,a;if(電表迴路=="迴路1"){p="P1";a="I1";}else{p="P2";a="I2";}string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
  1443. SQL語法="SELECT CONVERT(VARCHAR(8), 上傳時間, 120) AS 日期, AVG(CAST("+p+" AS FLOAT) * "+ 倍率 +" ) AS 平均P1, AVG(CAST(Vab AS FLOAT)) AS 平均V,AVG(CAST("+a+" AS FLOAT)) AS 平均I FROM (";
  1444. if(day2.Year!=DateTime.Now.Year){
  1445. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1446. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
  1447. SQL語法 += "SELECT 上傳時間, " + p + ",Vab," + a + " FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1448. WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1449. UNION ALL";
  1450. }
  1451. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(day2.Year.ToString())){
  1452. SQL語法 += "SELECT 上傳時間, " + p + ",Vab," + a + " FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1453. WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1454. UNION ALL";
  1455. }
  1456. }
  1457. SQL語法 = SQL語法[..^"UNION ALL".Length];
  1458. SQL語法 += ") AS 合併資料表 GROUP BY CONVERT(VARCHAR(8), 上傳時間, 120) ORDER BY 日期";
  1459. }else{
  1460. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1461. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(DateTime.Now.Year.ToString())){
  1462. SQL語法 += "SELECT 上傳時間, " + p + ",Vab," + a + " FROM [" + Global.電表資料資料庫清單.Rows[i][0] + @"].dbo.電表資料表
  1463. WHERE (電表編號 LIKE N'" + 電表編號 + "') AND (上傳時間 BETWEEN '" + 開始時間 + @"000000' AND '" + 結束時間 + @"235959')
  1464. UNION ALL";
  1465. //SQL語法 += "SELECT * FROM [" + Global.電表資料資料庫清單.Rows[i][0] + "].dbo.電表資料表 WHERE 電表編號 LIKE N'" + 電表流水號 + "' AND (上傳時間 BETWEEN '" + 開始時間 + "000000' AND '" + 結束時間 + @"235959')
  1466. // UNION ALL";
  1467. }
  1468. }
  1469. SQL語法 = SQL語法[..^"UNION ALL".Length];
  1470. SQL語法 += ") AS 合併資料表 GROUP BY CONVERT(VARCHAR(8), 上傳時間, 120) ORDER BY 日期";
  1471. }
  1472. }
  1473. SQL_ele_sys.SQL_電表內容資料詳細載入_月(SQL語法);
  1474. if(Global.SQL_S){SQL_Module.da.Fill(ds1);}
  1475. for(int i =0;i<=ds1.Tables[0].Rows.Count-1;i++){
  1476. if(Global.資料來源=="PLC"){
  1477. xAxisValue.Add(ds1.Tables[0].Rows[i]["時間_日"].ToString());
  1478. yAxisValue.Add(float.Parse(ds1.Tables[0].Rows[i][3].ToString()));
  1479. yAxisValue2.Add(float.Parse(ds1.Tables[0].Rows[i][4].ToString()));
  1480. yAxisValue3.Add(float.Parse(ds1.Tables[0].Rows[i][5].ToString()));
  1481. }else{
  1482. xAxisValue.Add(ds1.Tables[0].Rows[i][0].ToString()[^2..]);
  1483. yAxisValue.Add(float.Parse(ds1.Tables[0].Rows[i][2].ToString()));
  1484. yAxisValue2.Add(float.Parse(ds1.Tables[0].Rows[i][3].ToString()));
  1485. yAxisValue3.Add(float.Parse(ds1.Tables[0].Rows[i][1].ToString()));
  1486. }
  1487. }
  1488. for (int i = 0; i < xAxisValue.Count; i++){
  1489. 電壓_barchart.AddXAxisData(xAxisValue[i]);
  1490. 電流_barchart.AddXAxisData(xAxisValue[i]);
  1491. 功率_barchart.AddXAxisData(xAxisValue[i]);
  1492. }
  1493. foreach (float item in yAxisValue){
  1494. 電壓_barchart.AddData(0, item);
  1495. }
  1496. foreach (float item in yAxisValue2){
  1497. 電流_barchart.AddData(0, item);
  1498. }
  1499. foreach (float item in yAxisValue3){
  1500. 功率_barchart.AddData(0, item);
  1501. }
  1502. }
  1503. public void open_right(){
  1504. 右側按鈕_pl.SetActive(true);
  1505. }
  1506. public void close_right(){
  1507. 右側按鈕_pl.SetActive(false);
  1508. }
  1509. //=======電費試算表===========================
  1510. public void Open_calculator(){
  1511. if(電費試算表_pl.activeInHierarchy){電費試算表_pl.SetActive(false);}else{
  1512. 電費試算表_pl.SetActive(true);
  1513. //試算_電表編號_tb.text=Global.PA;
  1514. if(!Global.載入電表名稱){
  1515. 試算_電表名稱_cb.GetComponent<TMP_Dropdown>().ClearOptions();
  1516. 試算_電表名稱_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.電表名稱Option);
  1517. 試算_電表名稱_cb.GetComponent<TMP_Dropdown>().value=0;
  1518. Global.載入電表名稱=true;
  1519. }
  1520. /*if(Global.管理權限){
  1521. 試算_幣別_tb.SetActive(true);
  1522. 試算_幣別_cb.SetActive(true);
  1523. }*/
  1524. if(!Global.載入年度){
  1525. 試算_開始年_cb.GetComponent<TMP_Dropdown>().ClearOptions();
  1526. 試算_結束年_cb.GetComponent<TMP_Dropdown>().ClearOptions();
  1527. 試算_開始年_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.年度Options);
  1528. 試算_結束年_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.年度Options);
  1529. 試算_開始年_cb.GetComponent<TMP_Dropdown>().value=Global.年度Options.IndexOf(DateTime.Now.Year.ToString());
  1530. 試算_結束年_cb.GetComponent<TMP_Dropdown>().value=Global.年度Options.IndexOf(DateTime.Now.Year.ToString());
  1531. Global.載入年度=true;
  1532. }
  1533. if(!Global.載入月份){
  1534. 試算_開始月_cb.GetComponent<TMP_Dropdown>().ClearOptions();
  1535. 試算_結束月_cb.GetComponent<TMP_Dropdown>().ClearOptions();
  1536. 試算_開始月_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.月份Options_中);
  1537. 試算_結束月_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.月份Options_中);
  1538. 試算_開始月_cb.GetComponent<TMP_Dropdown>().value=DateTime.Now.Month-1;
  1539. 試算_結束月_cb.GetComponent<TMP_Dropdown>().value=DateTime.Now.Month-1;
  1540. Global.載入月份=true;
  1541. Moudle.載入日期(1,試算_開始年_cb,試算_開始月_cb,試算_開始日_cb);
  1542. 試算_Set_電表資料();
  1543. }
  1544. }
  1545. }
  1546. public void 觸發載入日期(){
  1547. if(Global.載入月份){
  1548. Moudle.載入日期(1,試算_開始年_cb,試算_開始月_cb,試算_開始日_cb);
  1549. 試算_Set_電表資料();
  1550. }
  1551. }
  1552. public void 試算_Set_電表資料(){
  1553. int N_year = Int32.Parse(試算_開始年_cb.GetComponent<TMP_Dropdown>().options[試算_開始年_cb.GetComponent<TMP_Dropdown>().value].text);
  1554. int N_month = 試算_開始月_cb.GetComponent<TMP_Dropdown>().value+1;
  1555. int N_day = 試算_開始日_cb.GetComponent<TMP_Dropdown>().value+1;
  1556. int E_year = Int32.Parse(試算_結束年_cb.GetComponent<TMP_Dropdown>().options[試算_結束年_cb.GetComponent<TMP_Dropdown>().value].text);
  1557. int E_month = 試算_結束月_cb.GetComponent<TMP_Dropdown>().value+1;
  1558. int E_day = 試算_結束日_cb.GetComponent<TMP_Dropdown>().value+1;
  1559. if(E_year <= DateTime.Now.Year && E_month <= DateTime.Now.Month && E_day <= DateTime.Now.Day && N_year <= DateTime.Now.Year && N_month <= DateTime.Now.Month && N_day <= DateTime.Now.Day){
  1560. Global.試算_開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0');
  1561. Global.試算_結束時間=E_year.ToString().PadLeft(4,'0')+E_month.ToString().PadLeft(2,'0')+E_day.ToString().PadLeft(2,'0');
  1562. Global.PA = 試算_電表名稱_cb.GetComponent<TMP_Dropdown>().options[試算_電表名稱_cb.GetComponent<TMP_Dropdown>().value].text;
  1563. SQL_ele_sys.SQL_取得電費試算資料();
  1564. if(Global.SQL_S){
  1565. if(SQL_Module.dr.Read()){
  1566. if(!SQL_Module.dr.IsDBNull(0)){
  1567. 試算_平均電壓_tb.text = String.Format("{0:###,###.###}",SQL_Module.dr[0]) + " V";
  1568. 試算_平均電流_tb.text = String.Format("{0:###,###.###}",SQL_Module.dr[1]) + " A";
  1569. 試算_平均功率_tb.text = String.Format("{0:###,###.###}",SQL_Module.dr[2]) + " kW";
  1570. 試算_總消耗功率_tb.text = String.Format("{0:###,###.###}",SQL_Module.dr[2]) + " kWh";
  1571. DateTime day3 = new DateTime(N_year,N_month,N_day);
  1572. DateTime day4 = new DateTime(E_year,E_month,E_day);
  1573. if(E_year==DateTime.Now.Year && E_month==DateTime.Now.Month && E_day==DateTime.Now.Day){
  1574. day4=day4.AddHours(DateTime.Now.Hour+Global.Zoneoffset);
  1575. }else{
  1576. day4=day4.AddDays(1);
  1577. }
  1578. TimeSpan day2 = day4.Subtract(day3);
  1579. 試算_總消耗能量_tb.text = String.Format("{0:###,###.###}",Single.Parse(試算_總消耗功率_tb.text.Substring(0, 試算_總消耗功率_tb.text.Length - 4)) * day2.TotalHours) + " kWh";
  1580. if(Global.幣別=="印尼盾"){
  1581. 試算_電費試算_tb.text = String.Format("{0:###,###}",(int)Single.Parse(試算_總消耗能量_tb.text.Substring(0, 試算_總消耗能量_tb.text.Length - 4)) * 1114) + " Rp";
  1582. }else{
  1583. 試算_電費試算_tb.text = String.Format("{0:###,###}",(int)Single.Parse(試算_總消耗能量_tb.text.Substring(0, 試算_總消耗能量_tb.text.Length - 4)) * 1114/500) + " NTD";
  1584. }
  1585. }else{
  1586. 試算_平均電壓_tb.text="0";
  1587. 試算_平均電流_tb.text="0";
  1588. 試算_平均功率_tb.text="0";
  1589. 試算_總消耗功率_tb.text="0";
  1590. 試算_總消耗能量_tb.text="0";
  1591. 試算_電費試算_tb.text = "0";
  1592. }
  1593. }
  1594. }
  1595. }else{
  1596. 試算_平均電壓_tb.text="0";
  1597. 試算_平均電流_tb.text="0";
  1598. 試算_平均功率_tb.text="0";
  1599. 試算_總消耗功率_tb.text="0";
  1600. 試算_總消耗能量_tb.text="0";
  1601. 試算_電費試算_tb.text = "0";
  1602. //MsgBox("TimeError!");
  1603. }
  1604. }
  1605. /*public void 幣別轉換(){
  1606. if(試算_幣別_cb.GetComponent<TMP_Dropdown>().value==0){
  1607. Global.幣別="印尼盾";
  1608. }else{
  1609. Global.幣別="台幣";
  1610. }
  1611. }*/
  1612. public void close_calculator(){
  1613. 電費試算表_pl.SetActive(false);
  1614. }
  1615. //===============電能報表===================
  1616. public void open_report(){
  1617. 電能報表_pl.SetActive(true);電能監控系統_pl.SetActive(false);
  1618. //adMobManager.HideBanner();
  1619. if(!載入完畢){
  1620. Global.電能報表區間時間選擇="月";Global.電能報表電費時間選擇="月";載入cb();
  1621. Moudle.載入日期(2,區間_開始_年_cb,區間_開始_月_cb,區間_開始_日_cb);
  1622. //Moudle.載入日期(3,電費_開始_年_cb,電費_結束_年_cb,電費_開始_月_cb,電費_結束_月_cb,電費_開始_日_cb,電費_結束_日_cb);
  1623. 建立年度表格();
  1624. 建立區間表格();
  1625. //建立電費表格();
  1626. 載入完畢=true;
  1627. }
  1628. }
  1629. private void 載入cb(){
  1630. DateTime day2 = DateTime.Now.AddDays(-(DateTime.Now.Day - 1));
  1631. day2 = day2.AddMonths(-1);
  1632. 電表編號_cb.GetComponent<TMP_Dropdown>().ClearOptions();
  1633. 電表編號_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.電表名稱Option);
  1634. 電表編號_cb.GetComponent<TMP_Dropdown>().value=0;
  1635. 區間_開始_年_cb.ClearOptions();
  1636. 區間_開始_月_cb.ClearOptions();
  1637. 區間_開始_日_cb.ClearOptions();
  1638. 區間_開始_年_cb.AddOptions(Main.Global.年度Options);
  1639. 區間_開始_年_cb.value=Main.Global.年度Options.IndexOf(day2.Year.ToString());
  1640. List<string> 月份 = new List<string> { "","一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月" };
  1641. 區間_開始_月_cb.AddOptions(月份);
  1642. 區間_開始_月_cb.value= 0;
  1643. //===============================
  1644. 開始時間_cb.GetComponent<TMP_Dropdown>().ClearOptions();
  1645. 開始時間_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.年度Options);
  1646. 開始時間_cb.GetComponent<TMP_Dropdown>().value=1;
  1647. 結束時間_cb.GetComponent<TMP_Dropdown>().ClearOptions();
  1648. 結束時間_cb.GetComponent<TMP_Dropdown>().AddOptions(Global.年度Options);
  1649. 結束時間_cb.GetComponent<TMP_Dropdown>().value=Global.年度Options.IndexOf(DateTime.Now.Year.ToString());
  1650. //============================
  1651. 電費_開始_年_cb.ClearOptions();
  1652. 電費_開始_月_cb.ClearOptions();
  1653. 電費_開始_小時_cb.ClearOptions();
  1654. 電費_結束_年_cb.ClearOptions();
  1655. 電費_結束_月_cb.ClearOptions();
  1656. 電費_結束_小時_cb.ClearOptions();
  1657. 電費_開始_年_cb.AddOptions(Global.年度Options);
  1658. 電費_開始_年_cb.value=Global.年度Options.IndexOf(day2.Year.ToString());
  1659. 電費_結束_年_cb.AddOptions(Global.年度Options);
  1660. 電費_結束_年_cb.value=Global.年度Options.IndexOf(DateTime.Now.Year.ToString());
  1661. 電費_開始_月_cb.AddOptions(Global.月份Options_中);
  1662. 電費_結束_月_cb.AddOptions(Global.月份Options_中);
  1663. 電費_開始_月_cb.value= day2.Month-1;
  1664. 電費_結束_月_cb.value= DateTime.Now.Month-1;
  1665. 電費_開始_小時_cb.AddOptions(Global.小時Options);
  1666. 電費_開始_小時_cb.value=0;
  1667. 電費_結束_小時_cb.AddOptions(Global.小時Options);
  1668. 電費_結束_小時_cb.value=Global.小時Options.IndexOf((DateTime.Now.Hour-Global.Zoneoffset).ToString());
  1669. Global.報表載入月份=true;
  1670. }
  1671. private void 建立年度表格(){
  1672. string 電表編號= 電表編號_cb.GetComponent<TMP_Dropdown>().options[電表編號_cb.GetComponent<TMP_Dropdown>().value].text;
  1673. DataTable ds1 = new();
  1674. ds1.Columns.Add("年份",typeof(string));
  1675. for(int i=0;i<=Global.月份Options_中.Count-1;i++){ds1.Columns.Add(Global.月份Options_中[i],typeof(string));}
  1676. int 開始年 = int.Parse(開始時間_cb.GetComponent<TMP_Dropdown>().options[開始時間_cb.GetComponent<TMP_Dropdown>().value].text);
  1677. int 結束年 =int.Parse(結束時間_cb.GetComponent<TMP_Dropdown>().options[結束時間_cb.GetComponent<TMP_Dropdown>().value].text);
  1678. if(結束年-開始年>=0){
  1679. for(int g=0;g<=結束年-開始年;g++){
  1680. DataRow row = ds1.NewRow();
  1681. row["年份"] = 開始年+g;
  1682. string 流水號=取得流水號(電表編號);string 電表編號改="";string 電表迴路="";string 功率單位="";
  1683. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  1684. if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
  1685. 電表編號改 = Global.電表資料清單.Rows[i][3].ToString();
  1686. 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
  1687. if(Global.資料來源=="PLC"){
  1688. 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
  1689. }else{
  1690. 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
  1691. }
  1692. }
  1693. }
  1694. bool 有無 = 資料庫判斷((開始年+g).ToString());
  1695. if(有無){
  1696. List<string> 清單 = 資料庫明細((開始年+g).ToString());
  1697. for(int j=0;j<=清單.Count-1;j++){
  1698. string SQL語法="SELECT ";
  1699. for(int n=0;n<=Global.月份Options_中.Count-1;n++){
  1700. string 開始時間=(開始年+g).ToString()+(n+1).ToString().PadLeft(2,'0')+"01000000";
  1701. string 結束時間=(開始年+g).ToString()+(n+1).ToString().PadLeft(2,'0')+"31235959";
  1702. string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
  1703. if(流水號!=null){
  1704. if(Global.資料來源=="PLC"){
  1705. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * " + 倍率 + @" ) AS 度
  1706. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
  1707. WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  1708. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString()+") AS 總P"+n.ToString()+",";
  1709. }else{
  1710. string p;if(電表迴路=="迴路1"){p="P1";}else{p="P2";}
  1711. SQL語法+="(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST("+p+" AS FLOAT) * " + 倍率 + @" ) AS 度
  1712. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString()+@"
  1713. WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  1714. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString()+") AS 總P"+n.ToString()+",";
  1715. }
  1716. }
  1717. }
  1718. SQL語法 = SQL語法[..^",".Length];
  1719. SQL_ele_sys.SQL_載入年度電費表格_改(SQL語法);
  1720. if(SQL_Module.dr.Read()){
  1721. for(int i=0;i<=Global.月份Options_中.Count-1;i++){
  1722. if(SQL_Module.dr[i].ToString()==""){
  1723. row[Global.月份Options_中[i]]="0";
  1724. }else{
  1725. if(功率單位 == "W"){
  1726. float data = float.Parse(SQL_Module.dr[i].ToString())/1000;
  1727. row[Global.月份Options_中[i]]= data.ToString("#,##0.##");
  1728. }else{
  1729. float data = float.Parse(SQL_Module.dr[i].ToString());
  1730. row[Global.月份Options_中[i]]= data.ToString("#,##0");
  1731. }
  1732. }
  1733. }
  1734. }else{
  1735. for(int i=0;i<=Global.月份Options_中.Count-1;i++){row[Global.月份Options_中[i]]="0";}
  1736. }
  1737. }
  1738. }else{
  1739. for(int i=0;i<=Global.月份Options_中.Count-1;i++){row[Global.月份Options_中[i]]="0";}
  1740. }
  1741. ds1.Rows.Add(row);
  1742. }
  1743. //====================
  1744. Moudle.載入表格("年度",ds1,年用電清單_tp,年用電清單_rpf,年用電清單_ct,myFont,UIsprite,年用電清單_lpf,true);
  1745. Global.年度表格=ds1;
  1746. 年用電_chart.RemoveData();
  1747. List<string> xAxisValue = new List<string>();
  1748. for(int j=1;j<=12;j++){
  1749. xAxisValue.Add(j.ToString());
  1750. }
  1751. for (int h = 0; h < xAxisValue.Count; h++){
  1752. 年用電_chart.AddXAxisData(xAxisValue[h]);
  1753. }
  1754. for(int i=int.Parse(開始時間_cb.GetComponent<TMP_Dropdown>().options[開始時間_cb.GetComponent<TMP_Dropdown>().value].text);i<= int.Parse(結束時間_cb.GetComponent<TMP_Dropdown>().options[結束時間_cb.GetComponent<TMP_Dropdown>().value].text);i++){
  1755. 年用電_chart.AddSerie<Line>(i.ToString());
  1756. for(int m=0;m<=ds1.Rows.Count-1;m++){
  1757. List<float> yAxisValue = new List<float>();
  1758. if(i== int.Parse(ds1.Rows[m][0].ToString())){
  1759. for(int j=1;j<=12;j++){
  1760. yAxisValue.Add(float.Parse(ds1.Rows[m][j].ToString()));
  1761. }
  1762. }
  1763. foreach (float item in yAxisValue){
  1764. 年用電_chart.AddData(m, item);
  1765. }
  1766. }
  1767. }
  1768. 年用電_chart.GetSerie<Line>(0).itemStyle.color=new Color(0.97f, 0.48f, 0.99f, 1f);
  1769. foreach (var series in 年用電_chart.series)
  1770. {
  1771. series.symbol.type = SymbolType.Circle;
  1772. }
  1773. }
  1774. }
  1775. private string 取得流水號(string 電表編號){
  1776. for(int f=0;f<=Global.電表資料清單.Rows.Count-1;f++){
  1777. if(電表編號 == Global.電表資料清單.Rows[f][1].ToString()){
  1778. return Global.電表資料清單.Rows[f][0].ToString();
  1779. }
  1780. }
  1781. return null;
  1782. }
  1783. private bool 資料庫判斷(string 資料庫名稱){
  1784. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(資料庫名稱)){return true;}}
  1785. return false;
  1786. }
  1787. private List<string> 資料庫明細(string 資料庫名稱){
  1788. List<string> 清單 = new();
  1789. for(int i=0;i<=Global.電表資料資料庫清單.Rows.Count-1;i++){
  1790. if(Global.電表資料資料庫清單.Rows[i][0].ToString().Contains(資料庫名稱)){
  1791. 清單.Add(Global.電表資料資料庫清單.Rows[i][0].ToString());
  1792. }
  1793. }
  1794. return 清單;
  1795. }
  1796. private void 建立區間表格(){
  1797. 讀取_pl.SetActive(true);
  1798. string 電表編號= 電表編號_cb.GetComponent<TMP_Dropdown>().options[電表編號_cb.GetComponent<TMP_Dropdown>().value].text;
  1799. string 流水號=取得流水號(電表編號);string 電表編號改="";string 電表迴路="";string 功率單位="";
  1800. for(int i=0;i<=Global.電表資料清單.Rows.Count-1;i++){
  1801. if(Global.電表資料清單.Rows[i][0].ToString().Contains(流水號)){
  1802. 電表編號改 = Global.電表資料清單.Rows[i][3].ToString();
  1803. 電表迴路 = Global.電表資料清單.Rows[i][4].ToString();
  1804. if(Global.資料來源=="PLC"){
  1805. 功率單位 = Global.電表資料清單.Rows[i]["圖表顯示功率"].ToString();
  1806. }else{
  1807. 功率單位 = Global.電表資料清單.Rows[i][9].ToString();
  1808. }
  1809. }
  1810. }
  1811. string p;if(電表迴路=="迴路1"){p="P1";}else{p="P2";}string 倍率;if(功率單位=="W"){倍率="1000";}else{倍率="1";}
  1812. int N_year =int.Parse(區間_開始_年_cb.options[區間_開始_年_cb.value].text);
  1813. int N_month = 區間_開始_月_cb.GetComponent<TMP_Dropdown>().value;
  1814. int N_day = 區間_開始_日_cb.GetComponent<TMP_Dropdown>().value;
  1815. List<string> TimeData = new(){"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
  1816. Global.區間_總和=0;
  1817. DataTable 區間表格_tabel;
  1818. DataTable ds3 = new();
  1819. if(Global.電能報表區間時間選擇=="小時"){
  1820. ds3.Columns.Add("小時",typeof(string));ds3.Columns.Add("度數",typeof(string));
  1821. }else if(Global.電能報表區間時間選擇=="日"){
  1822. ds3.Columns.Add("日期",typeof(string));ds3.Columns.Add("度數",typeof(string));
  1823. }else{
  1824. ds3.Columns.Add("月份",typeof(string));ds3.Columns.Add("度數",typeof(string));
  1825. }
  1826. bool 有無 = 資料庫判斷(N_year.ToString());
  1827. if(有無 && 流水號!=null){
  1828. List<string> 清單 = 資料庫明細(N_year.ToString());
  1829. string SQL語法="SELECT ";
  1830. if(Global.電能報表區間時間選擇=="小時"){
  1831. for(int n=0;n<=23;n++){
  1832. string 開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"0000";
  1833. string 結束時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"5959";
  1834. for(int j=0;j<=清單.Count-1;j++){
  1835. if(Global.資料來源=="PLC"){
  1836. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * "+ 倍率 + @" ) AS 度
  1837. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  1838. WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  1839. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  1840. }else{
  1841. SQL語法+="(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST("+ p +" AS FLOAT) * "+ 倍率 + @" ) AS 度
  1842. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  1843. WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  1844. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  1845. }
  1846. }
  1847. }
  1848. }else if(Global.電能報表區間時間選擇=="日"){
  1849. for(int n=1;n<=DateTime.DaysInMonth(N_year,N_month);n++){
  1850. string 開始時間=N_year.ToString()+N_month.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"000000";
  1851. string 結束時間=N_year.ToString()+N_month.ToString().PadLeft(2,'0')+n.ToString().PadLeft(2,'0')+"235959";
  1852. for(int j=0;j<=清單.Count-1;j++){
  1853. if(Global.資料來源=="PLC"){
  1854. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * "+ 倍率 + @" ) AS 度
  1855. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  1856. WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  1857. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  1858. }else{
  1859. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST("+ p +" AS FLOAT) * "+ 倍率 + @" ) AS 度
  1860. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  1861. WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  1862. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  1863. }
  1864. }
  1865. }
  1866. }else{
  1867. for(int n=0;n<=Global.月份Options_中.Count-1;n++){
  1868. string 開始時間=N_year.ToString()+(n+1).ToString().PadLeft(2,'0')+"01000000";
  1869. string 結束時間=N_year.ToString()+(n+1).ToString().PadLeft(2,'0')+"31235959";
  1870. for(int j=0;j<=清單.Count-1;j++){
  1871. if(Global.資料來源=="PLC"){
  1872. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST(總平均功率 AS FLOAT) * "+ 倍率 + @" ) AS 度
  1873. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  1874. WHERE (電表編號 LIKE N'"+電表編號+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  1875. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  1876. }else{
  1877. SQL語法+=@"(SELECT SUM(度) AS Expr1 FROM (SELECT CONVERT(VARCHAR(10), 上傳時間, 120) AS 日期, AVG(CAST("+ p +" AS FLOAT) * "+ 倍率 + @" ) AS 度
  1878. FROM ["+清單[j]+"].dbo.電表資料表 AS 電表資料表_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+@"
  1879. WHERE (電表編號 LIKE N'"+電表編號改+ "') AND (上傳時間 BETWEEN '"+開始時間+"' AND '"+結束時間+@"')
  1880. GROUP BY CONVERT(VARCHAR(10), 上傳時間, 120)) AS DailyAverages_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+") AS 總P_"+n.ToString().PadLeft(2,'0')+"_"+j.ToString().PadLeft(2,'0')+",";
  1881. }
  1882. }
  1883. }
  1884. }
  1885. SQL語法 = SQL語法[..^",".Length];
  1886. SQL_ele_sys.SQL_載入區間表格_月_改(SQL語法);
  1887. if(SQL_Module.dr.Read()){
  1888. if(Global.電能報表區間時間選擇=="小時"){
  1889. for(int n=0;n<=23;n++){
  1890. DataRow row = ds3.NewRow();
  1891. row["小時"] =n.ToString().PadLeft(2,'0');
  1892. float 度數=0;
  1893. for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
  1894. string colname = SQL_Module.dr.GetName(s);
  1895. if(int.Parse(colname.Substring(3,2))==n){
  1896. if(SQL_Module.dr[s].ToString()!=""){
  1897. 度數 += float.Parse(SQL_Module.dr[s].ToString());
  1898. }
  1899. }
  1900. }
  1901. if(Global.電表功率單位[電表編號_cb.GetComponent<TMP_Dropdown>().value] == "W"){
  1902. row["度數"] = (度數 / 1000).ToString("#,##0.##");
  1903. Global.區間_總和 += 度數 / 1000;
  1904. }else{
  1905. row["度數"] = 度數.ToString("#,##0.##");
  1906. Global.區間_總和 += 度數;
  1907. }
  1908. ds3.Rows.Add(row);
  1909. }
  1910. }else if(Global.電能報表區間時間選擇=="日"){
  1911. for(int n=0;n<=DateTime.DaysInMonth(N_year,N_month)-1;n++){
  1912. DataRow row = ds3.NewRow();
  1913. row["日期"] =TimeData[n];
  1914. float 度數=0;
  1915. for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
  1916. string colname = SQL_Module.dr.GetName(s);
  1917. if(int.Parse(colname.Substring(3,2))==n+1){
  1918. if(SQL_Module.dr[s].ToString()!=""){
  1919. 度數 += float.Parse(SQL_Module.dr[s].ToString());
  1920. }
  1921. }
  1922. }
  1923. if(Global.電表功率單位[電表編號_cb.GetComponent<TMP_Dropdown>().value] == "W"){
  1924. row["度數"] = (度數 / 1000).ToString("#,##0.##");
  1925. Global.區間_總和 += 度數 / 1000;
  1926. }else{
  1927. row["度數"] = 度數.ToString("#,##0.##");
  1928. Global.區間_總和 += 度數;
  1929. }
  1930. ds3.Rows.Add(row);
  1931. }
  1932. }else{
  1933. for(int n=0;n<=Global.月份Options_中.Count-1;n++){
  1934. DataRow row = ds3.NewRow();
  1935. row["月份"] = Global.月份Options_中[n];
  1936. float 度數=0;
  1937. for(int s=0;s<=SQL_Module.dr.FieldCount-1;s++){
  1938. string colname = SQL_Module.dr.GetName(s);
  1939. if(int.Parse(colname.Substring(3,2))==n){
  1940. if(SQL_Module.dr[s].ToString()!=""){
  1941. 度數 += float.Parse(SQL_Module.dr[s].ToString());
  1942. }
  1943. }
  1944. }
  1945. if(Global.電表功率單位[電表編號_cb.GetComponent<TMP_Dropdown>().value] == "W"){
  1946. row["度數"] = (度數 / 1000).ToString("#,##0.##");
  1947. Global.區間_總和 += 度數 / 1000;
  1948. }else{
  1949. row["度數"] = 度數.ToString("#,##0.##");
  1950. Global.區間_總和 += 度數;
  1951. }
  1952. ds3.Rows.Add(row);
  1953. }
  1954. }
  1955. }
  1956. }
  1957. 區間表格_tabel = ds3;
  1958. Moudle.載入表格("區間",區間表格_tabel,度數清單_tp,度數清單_rpf,度數清單_ct,myFont,UIsprite,度數清單_lpf,false);
  1959. 區間總和_tb.text = string.Format("{0:###,##0.##}",Global.區間_總和)+" kWh";
  1960. Global.區間表格=區間表格_tabel;
  1961. //===================================================
  1962. 度數_chart.RemoveData();
  1963. if(Global.電能報表區間時間選擇=="小時"){
  1964. List<string> xAxisValue = new(){"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"};
  1965. for (int h = 0; h < xAxisValue.Count; h++){度數_chart.AddXAxisData(xAxisValue[h]);}
  1966. int k =0;
  1967. 度數_chart.AddSerie<Bar>(區間_開始_日_cb.options[區間_開始_日_cb.value].text);
  1968. List<float> yAxisValue = new();
  1969. for(int g=0;g<=23;g++){
  1970. if(k<=區間表格_tabel.Rows.Count-1){
  1971. if(區間表格_tabel.Rows[k][0].ToString().PadLeft(2,'0') == xAxisValue[g]){
  1972. yAxisValue.Add(float.Parse(區間表格_tabel.Rows[k][1].ToString()));
  1973. k++;
  1974. }else{
  1975. yAxisValue.Add(0f);
  1976. }
  1977. }else{
  1978. yAxisValue.Add(0f);
  1979. }
  1980. }
  1981. foreach (float item in yAxisValue){
  1982. 度數_chart.AddData(0, item);
  1983. }
  1984. }else if(Global.電能報表區間時間選擇=="日"){
  1985. List<string> xAxisValue = new(){"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
  1986. for (int h = 0; h < xAxisValue.Count; h++){度數_chart.AddXAxisData(xAxisValue[h]);}
  1987. int k =0;
  1988. 度數_chart.AddSerie<Bar>(區間_開始_日_cb.options[區間_開始_日_cb.value].text);
  1989. List<float> yAxisValue = new();
  1990. for(int g=0;g<=DateTime.DaysInMonth(N_year,N_month)-1;g++){
  1991. if(k<=區間表格_tabel.Rows.Count-1){
  1992. if(區間表格_tabel.Rows[k][0].ToString().PadLeft(2,'0') == xAxisValue[g]){
  1993. yAxisValue.Add(float.Parse(區間表格_tabel.Rows[k][1].ToString()));
  1994. k++;
  1995. }else{
  1996. yAxisValue.Add(0f);
  1997. }
  1998. }else{
  1999. yAxisValue.Add(0f);
  2000. }
  2001. }
  2002. foreach (float item in yAxisValue){
  2003. 度數_chart.AddData(0, item);
  2004. }
  2005. }else{
  2006. List<string> xAxisValue = Global.月份Options_中;
  2007. for (int h = 0; h < xAxisValue.Count; h++){
  2008. 度數_chart.AddXAxisData(xAxisValue[h]);
  2009. }
  2010. int k=0;
  2011. 度數_chart.AddSerie<Bar>(區間_開始_年_cb.options[區間_開始_年_cb.value].text);
  2012. List<float> yAxisValue = new();
  2013. for(int g=0;g<=11;g++){
  2014. if(k<=區間表格_tabel.Rows.Count-1){
  2015. if(區間表格_tabel.Rows[k][0].ToString().PadLeft(2,'0') == xAxisValue[g]){
  2016. yAxisValue.Add(float.Parse(區間表格_tabel.Rows[k][1].ToString()));
  2017. k++;
  2018. }else{
  2019. yAxisValue.Add(0f);
  2020. }
  2021. }else{
  2022. yAxisValue.Add(0f);
  2023. }
  2024. }
  2025. foreach (float item in yAxisValue){
  2026. 度數_chart.AddData(0, item);
  2027. }
  2028. }
  2029. 度數_chart.GetSerie<Bar>(0).itemStyle.color=new Color(0.97f, 0.48f, 0.99f, 1f);
  2030. foreach (var series in 度數_chart.series)
  2031. {
  2032. series.symbol.type = SymbolType.Circle;
  2033. }
  2034. Global.第一區間表格完畢=true;讀取_pl.SetActive(false);
  2035. }
  2036. private void 建立電費表格(){
  2037. Global.PA7= 電表編號_cb.GetComponent<TMP_Dropdown>().options[電表編號_cb.GetComponent<TMP_Dropdown>().value].text;
  2038. int N_year = int.Parse(電費_開始_年_cb.GetComponent<TMP_Dropdown>().options[電費_開始_年_cb.GetComponent<TMP_Dropdown>().value].text);
  2039. int N_month = 電費_開始_月_cb.GetComponent<TMP_Dropdown>().value+1;
  2040. int N_day = 電費_開始_日_cb.GetComponent<TMP_Dropdown>().value+1;
  2041. int N_hour = 電費_開始_小時_cb.GetComponent<TMP_Dropdown>().value+1;
  2042. int E_year = int.Parse(電費_結束_年_cb.GetComponent<TMP_Dropdown>().options[電費_結束_年_cb.GetComponent<TMP_Dropdown>().value].text);
  2043. int E_month = 電費_結束_月_cb.GetComponent<TMP_Dropdown>().value+1;
  2044. int E_day = 電費_結束_日_cb.GetComponent<TMP_Dropdown>().value+1;
  2045. int E_hour = 電費_結束_小時_cb.GetComponent<TMP_Dropdown>().value+1;
  2046. DateTime N_Time=new DateTime(N_year,N_month,N_day);
  2047. DateTime E_Time=new DateTime(E_year,E_month,E_day);
  2048. TimeSpan Totalday = E_Time-N_Time;
  2049. Main.Global.電費_總和=0;
  2050. DataSet ds1 = new();
  2051. if(Main.Global.電能報表電費時間選擇=="小時"){
  2052. Main.Global.區間_開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0')+N_hour.ToString().PadLeft(2,'0');
  2053. Main.Global.區間_結束時間=E_year.ToString().PadLeft(4,'0')+E_month.ToString().PadLeft(2,'0')+E_day.ToString().PadLeft(2,'0')+E_hour.ToString().PadLeft(2,'0');
  2054. SQL_ele_sys.SQL_載入電費表格_小時();
  2055. SQL_Module.da.Fill(ds1);
  2056. for(int j=0;j<=ds1.Tables[0].Rows.Count-1;j++){
  2057. ds1.Tables[0].Rows[j][4] = String.Format("{0:###,##0}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][4].ToString())));
  2058. ds1.Tables[0].Rows[j][5] = String.Format("{0:###,##0}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][4].ToString()))*1114f);
  2059. Main.Global.電費_總和 += Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][4].ToString()))*1114;
  2060. }
  2061. }else if(Main.Global.電能報表電費時間選擇=="日"){
  2062. Main.Global.區間_開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0');
  2063. Main.Global.區間_結束時間=E_year.ToString().PadLeft(4,'0')+E_month.ToString().PadLeft(2,'0')+E_day.ToString().PadLeft(2,'0');
  2064. SQL_ele_sys.SQL_載入電費表格_日();
  2065. SQL_Module.da.Fill(ds1);
  2066. for(int j=0;j<=ds1.Tables[0].Rows.Count-1;j++){
  2067. ds1.Tables[0].Rows[j][3] = String.Format("{0:###,##0}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][3].ToString())));
  2068. ds1.Tables[0].Rows[j][4] = String.Format("{0:###,##0}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][3].ToString()))*1114f);
  2069. Main.Global.電費_總和 += Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][3].ToString()))*1114;
  2070. }
  2071. }else{
  2072. Main.Global.區間_開始時間=N_year.ToString().PadLeft(4,'0')+N_month.ToString().PadLeft(2,'0')+N_day.ToString().PadLeft(2,'0');
  2073. Main.Global.區間_結束時間=E_year.ToString().PadLeft(4,'0')+E_month.ToString().PadLeft(2,'0')+E_day.ToString().PadLeft(2,'0');
  2074. SQL_ele_sys.SQL_載入電費表格_月();
  2075. SQL_Module.da.Fill(ds1);
  2076. for(int j=0;j<=ds1.Tables[0].Rows.Count-1;j++){
  2077. ds1.Tables[0].Rows[j][2] = String.Format("{0:###,###}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][2].ToString())*DateTime.DaysInMonth(Int32.Parse(ds1.Tables[0].Rows[j][0].ToString()),Int32.Parse(ds1.Tables[0].Rows[j][1].ToString()))*24f));
  2078. ds1.Tables[0].Rows[j][3] = String.Format("{0:###,###}",Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][2].ToString())*DateTime.DaysInMonth(Int32.Parse(ds1.Tables[0].Rows[j][0].ToString()),Int32.Parse(ds1.Tables[0].Rows[j][1].ToString()))*24f)*1114f);
  2079. Main.Global.電費_總和 += Mathf.RoundToInt(Single.Parse(ds1.Tables[0].Rows[j][2].ToString()))*1114;
  2080. }
  2081. }
  2082. Moudle.載入表格("電費",ds1.Tables[0],電費清單_tp,電費清單_rpf,電費清單_ct,myFont,UIsprite,電費清單_lpf,false);
  2083. 電費總和_tb.text = String.Format("{0:###,###}",Main.Global.電費_總和)+" Rp";
  2084. Main.Global.電費表格=ds1.Tables[0];
  2085. //===================================================
  2086. 電費_chart.RemoveData();
  2087. if(Main.Global.電能報表電費時間選擇=="小時"){
  2088. List<string> xAxisValue = new List<string>();
  2089. for(int h=0;h<=23;h++){xAxisValue.Add(h.ToString().PadLeft(2,'0'));電費_chart.AddXAxisData(xAxisValue[h]);}
  2090. int k=0;
  2091. for(int s=0;s<=Totalday.Days;s++){
  2092. DateTime localTime = new DateTime(N_year,N_month,N_day);
  2093. DateTime day2 = localTime.AddDays(s);
  2094. 電費_chart.AddSerie<Line>(day2.Day.ToString());
  2095. List<float> yAxisValue = new List<float>();
  2096. for(int g=0;g<=23;g++){
  2097. if(k<=ds1.Tables[0].Rows.Count-1){
  2098. if(ds1.Tables[0].Rows[k][3].ToString().PadLeft(2,'0') == xAxisValue[g]){
  2099. yAxisValue.Add(Single.Parse(ds1.Tables[0].Rows[k][4].ToString()));
  2100. k++;
  2101. }else{
  2102. yAxisValue.Add(0f);
  2103. }
  2104. }else{
  2105. yAxisValue.Add(0f);
  2106. }
  2107. }
  2108. foreach (float item in yAxisValue){
  2109. 電費_chart.AddData(s, item);
  2110. }
  2111. }
  2112. }else if(Main.Global.電能報表電費時間選擇=="日"){
  2113. List<string> xAxisValue = new List<string>(){"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
  2114. for (int h = 0; h < xAxisValue.Count; h++){電費_chart.AddXAxisData(xAxisValue[h]);}
  2115. int k =0;
  2116. for(int s=0;s<=Math.Abs((E_year - N_year) * 12 + E_month - N_month);s++){
  2117. DateTime localTime = new DateTime(N_year,N_month,N_day);
  2118. DateTime day2 = localTime.AddMonths(s);
  2119. 電費_chart.AddSerie<Line>(day2.Month.ToString());
  2120. List<float> yAxisValue = new List<float>();
  2121. for(int g=0;g<=DateTime.DaysInMonth(day2.Year,day2.Month)-1;g++){
  2122. if(k<=ds1.Tables[0].Rows.Count-1){
  2123. if(ds1.Tables[0].Rows[k][2].ToString().PadLeft(2,'0') == xAxisValue[g]){
  2124. yAxisValue.Add(Single.Parse(ds1.Tables[0].Rows[k][3].ToString()));
  2125. k++;
  2126. }else{
  2127. yAxisValue.Add(0f);
  2128. }
  2129. }else{
  2130. yAxisValue.Add(0f);
  2131. }
  2132. }
  2133. foreach (float item in yAxisValue){
  2134. 電費_chart.AddData(s, item);
  2135. }
  2136. }
  2137. }else{
  2138. List<string> xAxisValue = new List<string>(){"01","02","03","04","05","06","07","08","09","10","11","12"};
  2139. for (int h = 0; h < xAxisValue.Count; h++){
  2140. 電費_chart.AddXAxisData(xAxisValue[h]);
  2141. }
  2142. int k=0;
  2143. for(int s=0;s<=E_year-N_year;s++){
  2144. DateTime localTime = new DateTime(N_year,N_month,N_day);
  2145. DateTime day2 = localTime.AddYears(s);
  2146. 電費_chart.AddSerie<Line>(day2.Year.ToString());
  2147. List<float> yAxisValue = new List<float>();
  2148. for(int g=0;g<=11;g++){
  2149. if(k<=ds1.Tables[0].Rows.Count-1){
  2150. if(ds1.Tables[0].Rows[k][1].ToString().PadLeft(2,'0') == xAxisValue[g]){
  2151. yAxisValue.Add(Single.Parse(ds1.Tables[0].Rows[k][2].ToString()));
  2152. k++;
  2153. }else{
  2154. yAxisValue.Add(0f);
  2155. }
  2156. }else{
  2157. yAxisValue.Add(0f);
  2158. }
  2159. }
  2160. foreach (float item in yAxisValue){
  2161. 電費_chart.AddData(s, item);
  2162. }
  2163. }
  2164. }
  2165. 電費_chart.GetSerie<Line>(0).itemStyle.color=new Color(0.97f, 0.48f, 0.99f, 1f);
  2166. foreach (var series in 電費_chart.series)
  2167. {
  2168. series.symbol.type = SymbolType.Circle;
  2169. }
  2170. }
  2171. public void 切換區間時間(){
  2172. if(Global.第一區間表格完畢){
  2173. 讀取_pl.SetActive(true);
  2174. if(區間_開始_月_cb.value==0 && 區間_開始_日_cb.value==0){
  2175. Global.電能報表區間時間選擇="月";
  2176. }else if(區間_開始_月_cb.value !=0 && 區間_開始_日_cb.value==0){
  2177. Global.電能報表區間時間選擇="日";
  2178. }else if(區間_開始_月_cb.value !=0 && 區間_開始_日_cb.value!=0){
  2179. Global.電能報表區間時間選擇="小時";
  2180. }
  2181. Moudle.載入日期(2,區間_開始_年_cb,區間_開始_月_cb,區間_開始_日_cb);
  2182. 建立區間表格();
  2183. }
  2184. }
  2185. public void 切換電費時間(int num){
  2186. if(num==1){
  2187. 電費_開始_小時_cb.interactable=true;
  2188. 電費_結束_小時_cb.interactable=true;
  2189. Main.Global.電能報表電費時間選擇="小時";
  2190. }else if(num==2){
  2191. 電費_開始_小時_cb.interactable=false;
  2192. 電費_結束_小時_cb.interactable=false;
  2193. Main.Global.電能報表電費時間選擇="日";
  2194. }else{
  2195. 電費_開始_小時_cb.interactable=false;
  2196. 電費_結束_小時_cb.interactable=false;
  2197. Main.Global.電能報表電費時間選擇="月";
  2198. }
  2199. 建立電費表格();
  2200. }
  2201. public void 觸發刷新表格(int num){
  2202. if(載入完畢){
  2203. if(num==1){
  2204. 建立年度表格();
  2205. }else if(num==2){
  2206. 建立區間表格();
  2207. }else{
  2208. 建立電費表格();
  2209. }
  2210. }
  2211. }
  2212. //====================================================
  2213. public void 按鈕事件(string text){
  2214. if(int.Parse(text[^8..])>=-1){
  2215. int index = int.Parse(text[^8..]);
  2216. 副電表編號_tb.text = Global.電表名稱[index].ToString();
  2217. Global.paint_choice3=true;
  2218. if(PlayerPrefs.HasKey("副電表編號")){
  2219. PlayerPrefs.DeleteKey("副電表編號");
  2220. }
  2221. PlayerPrefs.SetString("副電表編號",副電表編號_tb.text);
  2222. 載入副電表資料();
  2223. 載入圖表上限();
  2224. 切換排碳時間();
  2225. }
  2226. }
  2227. public static void 按鈕事件2(GameObject item){
  2228. }
  2229. /*public void OnButtonPress(int num){
  2230. if (Time.time - lastButtonPressTime > maxButtonPressInterval)
  2231. {
  2232. buttonPressCount = 0;
  2233. }
  2234. else
  2235. {
  2236. buttonPressCount++;
  2237. }
  2238. lastButtonPressTime = Time.time;
  2239. if (buttonPressCount >= requiredButtonPressCount)
  2240. {
  2241. // 触发你想要的事件
  2242. Debug.Log("连点触发:"+num);
  2243. Main.Global.連點[num]=true;
  2244. buttonPressCount = 0; // 重置计数器
  2245. }
  2246. }*/
  2247. //=================更新數值===========================
  2248. public static void 更新SQL成功(){
  2249. Global.SQL成功+=1;
  2250. }
  2251. public static void 更新SQL失敗(){
  2252. Global.SQL失敗+=1;
  2253. }
  2254. //==================================================
  2255. public void 測試按鈕(){
  2256. //StartCoroutine(PostRequest(0,"123"));
  2257. }
  2258. IEnumerator PostRequest(int num,string comm,string data){
  2259. string Url = Global.PHP路徑;
  2260. WWWForm form = new();
  2261. form.AddField("comm", comm);
  2262. form.AddField("data", data);
  2263. UnityWebRequest www = UnityWebRequest.Post(Url, form);
  2264. yield return www.SendWebRequest();
  2265. if (www.result == UnityWebRequest.Result.Success){
  2266. if(num==10){
  2267. Debug.Log(www.downloadHandler.text);
  2268. SQL_CommString.SQL_連線字串_正式_電控SQL(www.downloadHandler.text);
  2269. //SQL_CommString.SQL_連線字串_電控資料SQL(www.downloadHandler.text,DateTime.Now.Year.ToString().PadLeft(4,'0'),Global.客戶代號);
  2270. Global.PHP_Load_End_取得資料庫路徑=true;
  2271. }else if(num==11){
  2272. Debug.Log(www.downloadHandler.text);
  2273. Global.電表即時路徑=www.downloadHandler.text;
  2274. Global.PHP_Load_End_電表即時路徑=true;
  2275. }else if(num==12){
  2276. //Debug.Log(www.downloadHandler.text);
  2277. if(www.downloadHandler.text=="true"){
  2278. Global.資料來源="PLC";
  2279. 提供的有效電能_tb.text="0 GWh";接收的有效電能_tb.text="0 GWh";提供加接收的有效電能_tb.text="0 GWh";提供減接收的有效電能_tb.text="0 GWh";
  2280. 提供的無效電能_tb.text="0 GWh";接收的無效電能_tb.text="0 GWh";提供加接收的無效電能_tb.text="0 GWh";提供減接收的無效電能_tb.text="0 GWh";
  2281. 提供的視在電能_tb.text="0 GWh";接收的視在電能_tb.text="0 GWh";提供加接收的視在電能_tb.text="0 GWh";提供減接收的視在電能_tb.text="0 GWh";
  2282. }else{
  2283. Global.資料來源="pi";
  2284. 提供的有效電能_tb.text="0 GWh";接收的有效電能_tb.text="0 GWh";提供加接收的有效電能_tb.text="0 GWh";提供減接收的有效電能_tb.text="0 GWh";
  2285. 提供的無效電能_tb.text="0 GWh";接收的無效電能_tb.text="0 GWh";提供加接收的無效電能_tb.text="0 GWh";提供減接收的無效電能_tb.text="0 GWh";
  2286. 提供的視在電能_tb.text="0 GWh";接收的視在電能_tb.text="0 GWh";提供加接收的視在電能_tb.text="0 GWh";提供減接收的視在電能_tb.text="0 GWh";
  2287. }
  2288. Global.PHP_Load_End_電表資料來源=true;
  2289. Debug.Log("資料來源:"+Global.資料來源);
  2290. }
  2291. }else{
  2292. Debug.LogError("POST 請求失敗:" + www.error);
  2293. if(num==0){
  2294. Global.PHP_Report=www.error;
  2295. }else if(num==10){
  2296. 讀取_pl.SetActive(false);
  2297. 彈跳_pl.SetActive(true);
  2298. 彈跳文字_tb.text = "伺服器讀取資料異常\n請稍後在試!";
  2299. Global.彈跳狀態="伺服器異常";
  2300. }
  2301. }
  2302. www.Dispose();
  2303. }
  2304. IEnumerator PostRequest_電表資料PLC(int num,string data){
  2305. string Url = Global.電表即時路徑;
  2306. WWWForm form = new();
  2307. form.AddField("data", data);
  2308. UnityWebRequest www = UnityWebRequest.Post(Url, form);
  2309. yield return www.SendWebRequest();
  2310. if (www.result == UnityWebRequest.Result.Success){
  2311. if(num==0){
  2312. Global.PHP_Report=www.downloadHandler.text;
  2313. Global.PHP_Load_End=true;
  2314. }else if(num==1){
  2315. Global.PHP_Report2=www.downloadHandler.text;
  2316. Global.PHP_Load_End2=true;
  2317. }else if(num==2){
  2318. Global.PHP_Report3=www.downloadHandler.text;
  2319. Global.PHP_Load_End3=true;
  2320. }else if(num==3){
  2321. Global.PHP_Report4=www.downloadHandler.text;
  2322. Global.PHP_Load_End4=true;
  2323. }else if(num==4){
  2324. Global.PHP_Report5=www.downloadHandler.text;
  2325. Global.PHP_Load_End5=true;
  2326. }else if(num==5){
  2327. Global.PHP_Report6=www.downloadHandler.text;
  2328. Global.PHP_Load_End6=true;
  2329. }else if(num==6){
  2330. Global.PHP_Report7=www.downloadHandler.text;
  2331. Global.PHP_Load_End7=true;
  2332. }else if(num==7){
  2333. Global.PHP_Report8=www.downloadHandler.text;
  2334. Global.PHP_Load_End8=true;
  2335. }else if(num==8){
  2336. Global.電表異常num=int.Parse(data.Substring(6,1));
  2337. Global.PHP_Report9=www.downloadHandler.text;
  2338. Global.PHP_Load_End9=true;
  2339. }else if(num==9){
  2340. Global.PHP_Report10=www.downloadHandler.text;
  2341. Global.PHP_Load_End10=true;
  2342. }
  2343. }else{
  2344. Debug.LogError("POST 請求失敗:" + www.error);
  2345. if(num==0){
  2346. Global.PHP_Report=www.error;
  2347. }
  2348. }
  2349. www.Dispose();
  2350. }
  2351. IEnumerator PostRequest_電表資料(string 電表流水號){
  2352. string Url = Global.電表即時路徑;
  2353. WWWForm form = new();
  2354. form.AddField("comm", 電表流水號);
  2355. UnityWebRequest www = UnityWebRequest.Post(Url, form);
  2356. yield return www.SendWebRequest();
  2357. if (www.result == UnityWebRequest.Result.Success){
  2358. string[] dataStringArray = www.downloadHandler.text.Split(',');
  2359. if(Global.電表即時資料字典.ContainsKey(電表流水號)){
  2360. Global.電表即時資料字典.Remove(電表流水號);
  2361. }
  2362. Global.電表即時資料字典.Add(電表流水號,dataStringArray);
  2363. }else{
  2364. Debug.LogError("POST 請求失敗:" + www.error);
  2365. Global.PHP_Report=www.error;
  2366. }
  2367. www.Dispose();
  2368. }
  2369. public void close_sys(){
  2370. #if UNITY_EDITOR
  2371. UnityEditor.EditorApplication.isPlaying = false;
  2372. #else
  2373. Application.Quit();
  2374. #endif
  2375. }
  2376. IEnumerator AnimateText(){
  2377. string qqq = 讀取_tb.text.ToString();
  2378. while (true){
  2379. yield return new WaitForSeconds(0.5f);
  2380. if (dotCount < 3){
  2381. loadingText += ".";
  2382. dotCount++;
  2383. }else{
  2384. loadingText = "";
  2385. dotCount = 0;
  2386. }
  2387. 讀取_tb.text = qqq+loadingText;
  2388. }
  2389. }
  2390. //==========Mute SOund=======================
  2391. public void Mute_Sound(Button but){
  2392. if(Global.Ele_alarm_sound==true){
  2393. Global.Ele_alarm_sound=false;
  2394. but.image.sprite=控件圖片[2];
  2395. }else{
  2396. Global.Ele_alarm_sound=true;
  2397. but.image.sprite=控件圖片[1];
  2398. }
  2399. }
  2400. void OnApplicationFocus(bool hasFocus) {
  2401. if (hasFocus){
  2402. if(!詳細電表_pl.activeInHierarchy && !電能報表_pl.activeInHierarchy && !前往商店_pl.activeInHierarchy && !彈跳_pl.activeInHierarchy){
  2403. //adMobManager.RequestBanner();
  2404. }
  2405. }else{
  2406. //adMobManager.HideBanner();
  2407. }
  2408. }
  2409. public void OpenWebsite(){
  2410. string websiteURL = "https://gcm-smart.com/";
  2411. Application.OpenURL(websiteURL);
  2412. }
  2413. public void 快速前往(){
  2414. string url ="";
  2415. #if UNITY_ANDROID
  2416. // url = "https://play.google.com/store/apps/details?id=com.G.C.M.SmartEnterpriseLTD.ICSSCADAAPP";
  2417. #elif UNITY_IPHONE
  2418. url = "https://apps.apple.com/us/app/ics-scada-app/id6463194003";
  2419. #else
  2420. url = "https://play.google.com/store/apps/details?id=com.G.C.M.SmartEnterpriseLTD.ICSSCADAAPP";
  2421. #endif
  2422. Application.OpenURL(url);
  2423. }
  2424. public void 截圖(){
  2425. string fileName = string.Format("{0}/screenshot_{1}.png", Application.persistentDataPath, System.DateTime.Now.ToString("yyyyMMdd_HHmmss"));
  2426. ScreenCapture.CaptureScreenshot(fileName);
  2427. }
  2428. public static class Global{
  2429. public static string 客戶代號="GCM",年="2024",區間_開始時間,區間_結束時間,系統選擇,資料來源="PLC",彈跳狀態,PHP路徑="",電表即時路徑="";
  2430. public static string 主電表上次編號,Vavg,Iavg,Etol,副電表上次編號,PHP_Report_PLC_ALARM_DATA,主電表上次異常內容,副電表上次異常內容,幣別="台幣",試算_開始時間,試算_結束時間;
  2431. public static string 電能報表區間時間選擇,電能報表電費時間選擇,Vab,Vbc,Vca,NVab,NVbc,NVca,Ia,Ib,Ic,NIa,NIb,NIc;
  2432. public static string PHP_Report,PHP_Report2,PHP_Report3,PHP_Report4,PHP_Report5,PHP_Report6,PHP_Report7,PHP_Report8,PHP_Report9,PHP_Report10;
  2433. public static string PHP_Report_資料庫路徑,PHP_Report_電表即時路徑;
  2434. public static bool PHP_Load_End=false,PHP_Load_End2=false,PHP_Load_End3=false,PHP_Load_End4=false,PHP_Load_End5=false,PHP_Load_End6=false,PHP_Load_End7=false,PHP_Load_End8=false,PHP_Load_End9=false,PHP_Load_End10=false;
  2435. public static bool PHP_Load_End_取得資料庫路徑=false,PHP_Load_End_電表即時路徑=false,PHP_Load_End_電表資料來源=false;
  2436. public static int 功率因素數值=98,副功率因素數值=98,詳細功率因素數值=98,上次功率因素數值=0,上次副功率因素數值=0,Zoneoffset=0,上次更新天數,SQL成功,SQL失敗,電表數量=0,COSdata,上次詳細功率因素數值=0;
  2437. public static int 系統主題=2,電表ID1,電表ID2,消防異常page=1,上次消防異常ID,電費_總和,詳細電表電表ID,電表異常num,上限電表ID1,上限電表ID2;
  2438. public static float deleytime=0f,區間_總和=0f;
  2439. public static bool 初次載入主畫面=true,SQL_S=false,內網=false,載入電表名稱Option=true,paint_choice=true,paint_choice2=true,paint_choice3=true;
  2440. public static bool 副電表有異常=false,Ele_alarm_sound=true,風格切換_cos主=false,風格切換_cos副=false;
  2441. public static bool 載入電表名稱=false,載入年度=false,載入月份=false,報表載入月份=false,長案=false,第一區間表格完畢=false;
  2442. public static string[] 電表名稱 = new string[999];
  2443. public static string[] 電表功率單位 = new string[999];
  2444. public static string[] 圖表最大電壓 = new string[999];
  2445. public static string[] 圖表最大電流 = new string[999];
  2446. public static string[] 圖表最大功率 = new string[999];
  2447. public static string[] 目前開始月份 = new string[50],上次開始月份 = new string[50],目前結束月份 = new string[50],上次結束月份 = new string[50];
  2448. public static string[] 目前開始年度 = new string[50],上次開始年度 = new string[50],目前結束年度 = new string[50],上次結束年度 = new string[50];
  2449. public static List<string> 電表名稱Option = new List<string>();
  2450. public static List<string> 年度Options = new List<string> { "2023","2024","2025","2026","2027","2028","2029","2030","2031","2032","2033","2034","2035","2036","2037","2038","2039","2040","2041","2042","2043","2044","2045","2046","2047","2048","2049","2050","2051"};
  2451. public static List<string> 月份Options_中 = new List<string> { "一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月" };
  2452. public static List<string> 小時Options = new List<string> { "","00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"};
  2453. public static TimeSpan 運行天數;
  2454. public static DataTable 電表資料清單,電表資料資料庫清單,年度表格,區間表格,電費表格,排碳係數表,客戶名稱表;
  2455. //public static List<string> 電表資料資料庫名稱 = new() {};
  2456. //==========系統語言轉換必要變數================
  2457. public static string[] 系統語言資料;
  2458. //public static Dictionary<string, string> 系統語言字典 = new Dictionary<string, string>(){ };
  2459. public static Dictionary<string, string[]> 電表即時資料字典 = new (){ };
  2460. //============================================
  2461. public static string PA, PB, PC, PD, PE, PF, PG, PH, PI, PJ, PK, PA1, PA2, PA3, PA4, PA5, PA6, PA9, PA20, PA7;
  2462. public static string[] 表頭 = new string[50];
  2463. public static bool[] 電表異常BL = new bool[100],連點 = new bool[5];
  2464. public static Sprite[] Wnum;public static Sprite sprite_check,sprite_box;
  2465. }
  2466. }