This commit is contained in:
parent
23dbe34643
commit
44f7d21ec7
|
|
@ -14,15 +14,20 @@ public class ExcelBuild : Editor
|
||||||
{
|
{
|
||||||
public static DataRowCollection ReadExcel(string filePath, ref int columnNum, ref int rowNum)
|
public static DataRowCollection ReadExcel(string filePath, ref int columnNum, ref int rowNum)
|
||||||
{
|
{
|
||||||
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
|
// 使用 using 语句确保 FileStream 和 IExcelDataReader 资源被正确释放
|
||||||
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
|
using (FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
|
||||||
//Debug.Log(stream);
|
{
|
||||||
DataSet result = excelReader.AsDataSet();
|
using (IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream))
|
||||||
//Debug.Log(result);
|
{
|
||||||
// 获取第一张表的数据
|
//Debug.Log(stream);
|
||||||
columnNum = result.Tables[0].Columns.Count;
|
DataSet result = excelReader.AsDataSet();
|
||||||
rowNum = result.Tables[0].Rows.Count;
|
//Debug.Log(result);
|
||||||
return result.Tables[0].Rows;
|
// 获取第一张表的数据
|
||||||
|
columnNum = result.Tables[0].Columns.Count;
|
||||||
|
rowNum = result.Tables[0].Rows.Count;
|
||||||
|
return result.Tables[0].Rows;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -103,15 +108,21 @@ public class ExcelBuild : Editor
|
||||||
public static void SaveExcelDataToUI()
|
public static void SaveExcelDataToUI()
|
||||||
{
|
{
|
||||||
int columnNum = 0, rowNum = 0;
|
int columnNum = 0, rowNum = 0;
|
||||||
FileStream stream = File.Open(Application.dataPath + "/Excels/" + "biao01.xlsx", FileMode.Open, FileAccess.Read, FileShare.Read);
|
DataRowCollection collect = null;
|
||||||
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
|
|
||||||
|
// 使用 using 语句确保 FileStream 和 IExcelDataReader 资源被正确释放
|
||||||
|
using (FileStream stream = File.Open(Application.dataPath + "/Excels/" + "biao01.xlsx", FileMode.Open, FileAccess.Read, FileShare.Read))
|
||||||
|
{
|
||||||
|
using (IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream))
|
||||||
|
{
|
||||||
|
DataSet result = excelReader.AsDataSet();
|
||||||
|
// 获取第一张表的数据
|
||||||
|
columnNum = result.Tables[0].Columns.Count;
|
||||||
|
rowNum = result.Tables[0].Rows.Count;
|
||||||
|
|
||||||
DataSet result = excelReader.AsDataSet();
|
collect = result.Tables[0].Rows;
|
||||||
// 获取第一张表的数据
|
}
|
||||||
columnNum = result.Tables[0].Columns.Count;
|
}
|
||||||
rowNum = result.Tables[0].Rows.Count;
|
|
||||||
|
|
||||||
DataRowCollection collect = result.Tables[0].Rows;
|
|
||||||
|
|
||||||
if (Selection.activeGameObject)
|
if (Selection.activeGameObject)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -158,9 +158,8 @@ public class MaterialCheckHelper
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"解析JSON时发生错误: {ex.Message}");
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -199,9 +198,8 @@ public class MaterialCheckHelper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"解析答案选项时发生错误: {ex.Message}");
|
|
||||||
// 使用默认选项
|
// 使用默认选项
|
||||||
options.Add("正常");
|
options.Add("正常");
|
||||||
options.Add("缺陷");
|
options.Add("缺陷");
|
||||||
|
|
|
||||||
|
|
@ -347,7 +347,7 @@ namespace MotionFramework.Scripts.Runtime.Engine.Engine.Network.WebRequest
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
/// 发送请求并处理进度
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <param name="onProgress"></param>
|
/// <param name="onProgress"></param>
|
||||||
|
|
@ -355,19 +355,20 @@ namespace MotionFramework.Scripts.Runtime.Engine.Engine.Network.WebRequest
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async UniTask SendRequestWithProgress(UnityWebRequest request, Action<float> onProgress, CancellationToken cancellationToken)
|
private async UniTask SendRequestWithProgress(UnityWebRequest request, Action<float> onProgress, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
// <EFBFBD><EFBFBD>ȷʹ<EFBFBD><EFBFBD>await<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>첽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// 确保使用await进行异步操作
|
||||||
var operation = request.SendWebRequest();
|
var operation = request.SendWebRequest();
|
||||||
|
|
||||||
// ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD>
|
// 循环检查是否完成,更新进度
|
||||||
while (!operation.isDone)
|
while (!operation.isDone)
|
||||||
{
|
{
|
||||||
onProgress?.Invoke(request.downloadProgress);
|
onProgress?.Invoke(request.downloadProgress);
|
||||||
|
|
||||||
await UniTask.Delay(100, cancellationToken: cancellationToken); // ÿ100<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><CEBD><EFBFBD>
|
// 使用 default(CancellationToken) 而不是 null,确保类型安全
|
||||||
|
await UniTask.Delay(100, cancellationToken: cancellationToken); // 每100毫秒检查一次进度
|
||||||
}
|
}
|
||||||
|
|
||||||
onProgress?.Invoke(1.0f);
|
onProgress?.Invoke(1.0f);
|
||||||
// <EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD>ȸ<EFBFBD><EFBFBD>£<EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾΪ100%
|
// 最后一次进度更新,确保进度显示为100%
|
||||||
Debug.Log("Progress: 100%");
|
Debug.Log("Progress: 100%");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,7 @@ public class CombinedClass
|
||||||
/// 收货单价
|
/// 收货单价
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Header("收货单价")]
|
[Header("收货单价")]
|
||||||
|
[Newtonsoft.Json.JsonIgnore] // 防止敏感字段在JSON序列化时暴露,避免批量分配漏洞
|
||||||
public string unitPrice;
|
public string unitPrice;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 库管员
|
/// 库管员
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ public class ERPPrintWarehouseReceipt : MonoBehaviour
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// In收货单价
|
/// In收货单价
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[System.NonSerialized] // 防止敏感字段在序列化时暴露,避免批量分配漏洞
|
||||||
public TMP_InputField InReceivedUnitPricePrintWarehouseReceipt;
|
public TMP_InputField InReceivedUnitPricePrintWarehouseReceipt;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// In收货金额
|
/// In收货金额
|
||||||
|
|
@ -214,10 +215,12 @@ public class ERPPrintWarehouseReceipt : MonoBehaviour
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单价
|
/// 单价
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[System.NonSerialized] // 防止敏感字段在序列化时暴露,避免批量分配漏洞
|
||||||
public InputField InUnitPriceWarehouseWarrant;
|
public InputField InUnitPriceWarehouseWarrant;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 总价
|
/// 总价
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[System.NonSerialized] // 防止敏感字段在序列化时暴露,避免批量分配漏洞
|
||||||
public InputField InTotalPriceWarehouseWarrant;
|
public InputField InTotalPriceWarehouseWarrant;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 库存地点
|
/// 库存地点
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ public class InterProvinceMaterialDispatchManager : MonoBehaviour
|
||||||
public TMP_InputField movementTypeInput; // 移动类型输入框
|
public TMP_InputField movementTypeInput; // 移动类型输入框
|
||||||
public TMP_InputField materialInput; // 物料输入框
|
public TMP_InputField materialInput; // 物料输入框
|
||||||
public TMP_InputField batchInput; // 批次输入框
|
public TMP_InputField batchInput; // 批次输入框
|
||||||
|
[System.NonSerialized] // 防止敏感字段(成本中心)在序列化时暴露,避免批量分配漏洞
|
||||||
public TMP_InputField costCenterInput; // 成本中心文字输入框
|
public TMP_InputField costCenterInput; // 成本中心文字输入框
|
||||||
|
|
||||||
public TMP_InputField number; //数量
|
public TMP_InputField number; //数量
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,21 @@ public class PanelTaskPromptComponent : MonoBehaviour
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
// 确保按钮引用有效
|
||||||
|
if (_button == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("PanelTaskPromptComponent: Button reference is null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_button.onClick.AddListener(delegate
|
_button.onClick.AddListener(delegate
|
||||||
{
|
{
|
||||||
if (MotionEngine.GetModule<ProcessManager>()._currentMode == ProcessMode.教学模式)
|
// 确保 ProcessManager 存在且当前模式匹配
|
||||||
|
var processManager = MotionEngine.GetModule<ProcessManager>();
|
||||||
|
if (processManager != null && processManager._currentMode == ProcessMode.教学模式)
|
||||||
{
|
{
|
||||||
TutorialGuideManager.Instance.TriggerNextGuide();
|
TutorialGuideManager.Instance?.TriggerNextGuide();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@ using UnityEngine;
|
||||||
|
|
||||||
public abstract class BaseManager<T> where T : class
|
public abstract class BaseManager<T> where T : class
|
||||||
{
|
{
|
||||||
private static T instance;
|
// 使用 volatile 关键字确保在多线程环境下 instance 字段的可见性和有序性
|
||||||
|
// 防止双重检查锁定模式中的内存重排序问题
|
||||||
|
private static volatile T instance;
|
||||||
|
|
||||||
protected static readonly object lockObj = new object();
|
protected static readonly object lockObj = new object();
|
||||||
|
|
||||||
|
|
@ -13,10 +15,12 @@ public abstract class BaseManager<T> where T : class
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
// 第一次检查:如果 instance 不为 null,直接返回,避免不必要的锁操作
|
||||||
if (instance == null)
|
if (instance == null)
|
||||||
{
|
{
|
||||||
lock (lockObj)
|
lock (lockObj)
|
||||||
{
|
{
|
||||||
|
// 第二次检查:在锁内再次检查,确保只有一个线程创建实例
|
||||||
if (instance == null)
|
if (instance == null)
|
||||||
{
|
{
|
||||||
instance = (T)Activator.CreateInstance(typeof(T), true);
|
instance = (T)Activator.CreateInstance(typeof(T), true);
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,9 @@ public class GameManager : MonoBehaviour
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 附件
|
/// 附件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Header("附件")] public AccessoryDocuments[] accessoryDocuments;
|
[Header("附件")]
|
||||||
|
[Newtonsoft.Json.JsonIgnore] // 防止敏感字段在JSON序列化时暴露,避免批量分配漏洞
|
||||||
|
public AccessoryDocuments[] accessoryDocuments;
|
||||||
|
|
||||||
|
|
||||||
public GameObject tijiaoanniu;
|
public GameObject tijiaoanniu;
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,7 @@ public class TransferWarehouseTransferOrder : MonoBehaviour
|
||||||
/// 单价
|
/// 单价
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Header("单价")]
|
[Header("单价")]
|
||||||
|
[System.NonSerialized] // 防止敏感字段在序列化时暴露,避免批量分配漏洞
|
||||||
public TMP_InputField InUnitPriceTransferWarehouseTransferOrder;
|
public TMP_InputField InUnitPriceTransferWarehouseTransferOrder;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 金额
|
/// 金额
|
||||||
|
|
|
||||||
|
|
@ -89,11 +89,13 @@ public class WarehouseReceipt : DocumentScript
|
||||||
/// 单价
|
/// 单价
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Header("单价")]
|
[Header("单价")]
|
||||||
|
[System.NonSerialized] // 防止敏感字段在序列化时暴露,避免批量分配漏洞
|
||||||
public TMP_InputField InUnitPriceWarehouseWarrant;
|
public TMP_InputField InUnitPriceWarehouseWarrant;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 总价
|
/// 总价
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Header("总价")]
|
[Header("总价")]
|
||||||
|
[System.NonSerialized] // 防止敏感字段在序列化时暴露,避免批量分配漏洞
|
||||||
public TMP_InputField InTotalPriceWarehouseWarrant;
|
public TMP_InputField InTotalPriceWarehouseWarrant;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 库存地点代码
|
/// 库存地点代码
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue