Aucune description
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Main.cs 150KB

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