using System; using System.Collections.Generic; using System.Globalization; using DefaultNamespace; using DefaultNamespace.ProcessMode; using Framework.Manager; using Framework.Utils; using MotionFramework; using NaughtyAttributes; using TMPro; using UnityEngine; using UnityEngine.UI; namespace Zion.Scripts.ERP.系统入库冲销凭证分析 { /// /// 月份状态枚举 /// public enum MonthStatus { None, // 无状态 June, // 6月 December // 12月 } /// /// /// public class InventoryReversalVoucherAnalyzerManager : MonoBehaviour { public TMP_InputField factroyCodeInputField; public TMP_InputField moveTypeInputField; public TMP_InputField starTimeInputField; public TMP_InputField endTimeInputField; public GameObject queryPlane; public Button queryButton; public Button saveButton; public Button saveButto2; public GameObject plane6; public GameObject plane12; public GameObject datika; public TMP_InputField tiaomu1; public TMP_InputField tiaomu2; public TMP_InputField jine1; public TMP_InputField jine2; // 当前月份状态 private MonthStatus currentMonthStatus = MonthStatus.None; private Framework.Dto.InventoryReversalVoucherAnalyzer inventoryReversalVoucherAnalyzer; public Button datikaanniu; /// /// 获取当前月份状态 /// public MonthStatus CurrentMonthStatus => currentMonthStatus; public Button btclose; void Start() { queryButton.onClick.AddListener(OnQueryButtonClicked); saveButton.onClick.AddListener(OnSaveButtonClicked); saveButto2.onClick.AddListener(OnSaveButtonClicked); datikaanniu.onClick.AddListener(OnDatikaSave); inventoryReversalVoucherAnalyzer = (Framework.Dto.InventoryReversalVoucherAnalyzer)MotionEngine.GetModule().materialTaskObj; btclose.onClick.AddListener(OnCloseButtonClicked); } private void OnCloseButtonClicked() { TutorialGuideManager.Instance.HideGuide(); } private void OnSaveDatika() { List list = new List(); list.Add(tiaomu1.text); list.Add(jine1.text); list.Add(tiaomu2.text); list.Add(jine2.text); if (MotionEngine.GetModule().HandleClick(list)) { TutorialGuideManager.Instance.TriggerNextGuide(); } } private void OnQueryButtonClicked() { List parameters = new List(); parameters.Add(factroyCodeInputField.text); parameters.Add(moveTypeInputField.text); parameters.Add(starTimeInputField.text); parameters.Add(endTimeInputField.text); // 根据月份显示对应的面板并更新状态 if (inventoryReversalVoucherAnalyzer.formselection == "6月") { plane6.SetActive(true); plane12.SetActive(false); currentMonthStatus = MonthStatus.June; Debug.Log("检测到6月份日期,显示6月面板,状态设置为June"); } else if (inventoryReversalVoucherAnalyzer.formselection == "12月") { plane6.SetActive(false); plane12.SetActive(true); currentMonthStatus = MonthStatus.December; Debug.Log("检测到12月份日期,显示12月面板,状态设置为December"); } if(MotionEngine.GetModule().HandleClick(parameters)){ TutorialGuideManager.Instance.TriggerNextGuide(queryButton.name);} Debug.Log("查询成功"); // queryPlane.SetActive(true); } private void OnSaveButtonClicked() { datika.SetActive(true); if (inventoryReversalVoucherAnalyzer.formselection == "6月") { FileComponent.DownloadSingleFile("附件1:2024年6月入库冲销凭证"); } else { FileComponent.DownloadSingleFile("附件1:2024年12月入库冲销凭证"); } } public void OnDatikaSave() { // 添加日期范围判断 string startTime = starTimeInputField.text; string endTime = endTimeInputField.text; // 判断是否为6月份或12月份 bool isJune = IsDateInMonth(startTime, 6) || IsDateInMonth(endTime, 6); bool isDecember = IsDateInMonth(startTime, 12) || IsDateInMonth(endTime, 12); // 判断输入的月份和当前状态是否相同 bool monthMatches = false; if (isJune && currentMonthStatus == MonthStatus.June) { monthMatches = true; Debug.Log("月份匹配:当前为6月份状态"); } else if (isDecember && currentMonthStatus == MonthStatus.December) { monthMatches = true; Debug.Log("月份匹配:当前为12月份状态"); } else { Debug.LogWarning("月份不匹配:输入日期月份与当前状态不符"); } // 如果月份匹配,验证输入的条目和金额数据 if (monthMatches) { bool dataValid = ValidateInputData(isJune); if (dataValid) { Debug.Log("数据验证通过,保存成功"); // 创建参数列表,将验证通过的数据传递给ProcessManager List parameters = new List(); parameters.Add("102"); // 条目1 parameters.Add("31734409.36"); // 金额1 parameters.Add("18"); // 条目2 parameters.Add("994015.01"); // 金额2 // 调用ProcessManager处理数据 MotionEngine.GetModule().HandleClick(parameters); Debug.Log("数据已传递给ProcessManager处理"); } else { List parameters = new List(); parameters.Add(tiaomu1.text); parameters.Add(jine1.text); parameters.Add(tiaomu2.text); parameters.Add(jine2.text); MotionEngine.GetModule().HandleClick(parameters); Debug.LogError("数据验证失败,请检查输入的条目和金额数据"); } } } /// /// 验证输入数据是否与标准数据匹配 /// /// 是否为6月份 /// 数据是否有效 private bool ValidateInputData(bool isJune) { try { // 获取输入值 string tiaomu1Text = tiaomu1.text; string tiaomu2Text = tiaomu2.text; string jine1Text = jine1.text; string jine2Text = jine2.text; // 解析输入的数值 if (!int.TryParse(tiaomu1Text, out int inputTiaomu1) || !int.TryParse(tiaomu2Text, out int inputTiaomu2) || !decimal.TryParse(jine1Text, out decimal inputJine1) || !decimal.TryParse(jine2Text, out decimal inputJine2)) { Debug.LogError("输入数据格式错误,请确保条目为整数,金额为数字"); return false; } if (isJune) { // 6月份标准数据:条目1:41,金额1:9202094.91,条目2:3,金额2:102843.85 bool valid = (inputTiaomu1 == 41 && inputJine1 == 9202094.91m && inputTiaomu2 == 3 && inputJine2 == 102843.85m); if (valid) { Debug.Log("6月份数据验证通过"); } else { Debug.LogError($"6月份数据不匹配。标准值:条目1=41, 金额1=9202094.91, 条目2=3, 金额2=102843.85\n" + $"输入值:条目1={inputTiaomu1}, 金额1={inputJine1}, 条目2={inputTiaomu2}, 金额2={inputJine2}"); } return valid; } else { // 12月份标准数据:条目1:102,金额1:31734409.36,条目2:18,金额2:994015.01 bool valid = (inputTiaomu1 == 102 && inputJine1 == 31734409.36m && inputTiaomu2 == 18 && inputJine2 == 994015.01m); if (valid) { Debug.Log("12月份数据验证通过"); } else { Debug.LogError($"12月份数据不匹配。标准值:条目1=102, 金额1=31734409.36, 条目2=18, 金额2=994015.01\n" + $"输入值:条目1={inputTiaomu1}, 金额1={inputJine1}, 条目2={inputTiaomu2}, 金额2={inputJine2}"); } return valid; } } catch (Exception ex) { Debug.LogError($"数据验证过程中发生错误: {ex.Message}"); return false; } } /// /// 判断日期字符串是否属于指定月份 /// /// 日期字符串 /// 目标月份(1-12) /// 如果日期属于指定月份返回true,否则返回false private bool IsDateInMonth(string dateString, int targetMonth) { if (string.IsNullOrEmpty(dateString)) return false; try { // 尝试多种日期格式解析 DateTime date; string[] formats = { "yyyy-MM-dd", "yyyy/MM/dd", "MM/dd/yyyy", "dd/MM/yyyy", "yyyy-MM-dd HH:mm:ss", "MM-dd-yyyy" }; if (DateTime.TryParseExact(dateString, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out date) || DateTime.TryParse(dateString, out date)) { return date.Month == targetMonth; } } catch (Exception ex) { Debug.LogWarning($"日期解析失败: {dateString}, 错误: {ex.Message}"); } return false; } } }