From 3571d8b2231e06e46774af86be502014d6974e1d Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 07 四月 2026 16:16:53 +0800
Subject: [PATCH] 优化ERP接收单据逻辑,一期领料变更逻辑修改
---
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs | 186 ++++++++++++++++++++++-----------------------
1 files changed, 91 insertions(+), 95 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
index ce74bab..bfe700b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
@@ -41,7 +41,6 @@
_stationMangerRepository = stationMangerRepository;
_unitOfWorkManage = unitOfWorkManage;
}
- private static object lock_reqPackTask = new object();
/// <summary>
/// 鍒嗛厤鐮佸灈浠诲姟
/// </summary>
@@ -50,106 +49,103 @@
/// <returns></returns>
public WebResponseContent ReqPackTask(string barCode,string deviceCode)
{
- lock (lock_reqPackTask)
+ WebResponseContent content = new WebResponseContent();
+ try
{
- WebResponseContent content = new WebResponseContent();
- try
+ Dt_Packinfo packinfo = _packinfoRepository.QueryFirst(x => x.BarCode == barCode && x.PackStatus == StationOccupiedEnum.None.ObjToInt());
+ if (packinfo == null)
{
- Dt_Packinfo packinfo = _packinfoRepository.QueryFirst(x => x.BarCode == barCode && x.PackStatus == StationOccupiedEnum.None.ObjToInt());
- if (packinfo == null)
- {
- return content.Error($"鏈壘鍒版潯鐮亄barCode}");
- }
- List<Dt_StationPackInfo> stationPackInfos = _stationPackInfoRepository.Db.Queryable<Dt_StationPackInfo>().ToList();
- Dt_StationPackInfo? stationPackInfo = stationPackInfos.FirstOrDefault(x => x.PackType == packinfo.PackType && x.OrderNo == packinfo.OrderNo && x.AssignNum < x.PackNum);
- Dt_PackaxisTask packaxisTask = new Dt_PackaxisTask();
- //濡傛灉璁㈠崟鐩稿悓銆佸灈鍨嬩竴鑷村苟涓斿垎閰嶆暟閲忓皯浜庣爜鍨涚粨鎵樻暟閲忓垯鍒嗛厤鍒颁竴璧�
- _unitOfWorkManage.BeginTran();
- if (stationPackInfo != null)
- {
- packaxisTask = new Dt_PackaxisTask()
- {
- DeviceCode = deviceCode,
- SourceAddress = "2421",
- BarCode = barCode,
- CurrentAddress = "2421",
- TargetAddress = stationPackInfo.StationCode,
- NextAddress = stationPackInfo.LineCode,
- TaskState = TaskStatusEnum.Line_Executing.ObjToInt(),
- PackLength = packinfo.Length,
- PackWidth = packinfo.Width,
- PackHeight = packinfo.Height,
- PackType = packinfo.PackType,
- Dispatchertime = DateTime.Now,
- };
- stationPackInfo.AssignNum += 1;
- stationPackInfo.ExecutingNum += 1;
- packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt();
-
- //鏇存柊鐮佸灈鎵ц宸ヤ綅
- _stationPackInfoRepository.UpdateData(stationPackInfo);
- //鏇存柊寰呯爜鍨涗俊鎭〃
- _packinfoRepository.UpdateData(packinfo);
- //娣诲姞鐮佸灈浠诲姟
- BaseDal.AddData(packaxisTask);
-
- }
- else//鍒嗛厤鏂板伐浣�
- {
- //鑾峰彇褰撳墠绌虹洏鍑嗗鐨勭爜鍨涘伐浣�
- List<string> stations = _stationMangerRepository.QueryData(x => x.StationDeviceCode == "CLC_CP" && x.IsOccupied == StationOccupiedEnum.None.ObjToInt()).Select(x => x.StationCode).ToList();
- //鑾峰彇鐮佸灈閰嶇疆琛ㄦ煡璇㈠彲鍒嗛厤骞跺凡閰嶇疆鐨勭爜鍨涘伐浣�
- List<Dt_Packaxis> packaxes = _packaxisRepository.Db.Queryable<Dt_Packaxis>().Where(x => x.PackType == packinfo.PackType && stations.Contains(x.StationCode)).ToList();
- if (packaxes.Count == 0)
- {
- return content.Error("鏈壘鍒板彲鍒嗛厤鐮佸灈閰嶇疆");
- }
- List<string> packStations = packaxes.Select(x => x.StationCode).ToList();
- Dt_StationPackInfo? packInfoAssign = stationPackInfos.Where(x => x.PackType == 0 && x.AssignNum == 0 && packStations.Contains(x.StationCode)).OrderBy(x => x.OrderIndex).FirstOrDefault();
- if (packInfoAssign == null)
- {
- return content.Error("鏈壘鍒板彲鍒嗛厤鍨涗綅");
- }
- packInfoAssign.PackType = packinfo.PackType;
- packInfoAssign.OrderNo = packinfo.OrderNo;
- packInfoAssign.MakeCode = packinfo.MakeCode;
- packInfoAssign.MaterielCode = packInfoAssign.MaterielCode;
- packInfoAssign.PackNum = packaxes.FirstOrDefault(x => x.StationCode == packInfoAssign.StationCode).PackNum;
- packaxisTask = new Dt_PackaxisTask()
- {
- DeviceCode = deviceCode,
- SourceAddress = "2421",
- BarCode = barCode,
- CurrentAddress = "2421",
- TargetAddress = packInfoAssign.StationCode,
- NextAddress = packInfoAssign.LineCode,
- TaskState = TaskStatusEnum.Line_Executing.ObjToInt(),
- PackLength = packinfo.Length,
- PackWidth = packinfo.Width,
- PackHeight = packinfo.Height,
- PackType = packinfo.PackType,
- Dispatchertime = DateTime.Now,
- };
- packInfoAssign.AssignNum += 1;
- packInfoAssign.ExecutingNum += 1;
- packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt();
- //鏇存柊鐮佸灈鎵ц宸ヤ綅
- _stationPackInfoRepository.UpdateData(packInfoAssign);
- //鏇存柊寰呯爜鍨涗俊鎭〃
- _packinfoRepository.UpdateData(packinfo);
- //娣诲姞鐮佸灈浠诲姟
- BaseDal.AddData(packaxisTask);
- }
- _unitOfWorkManage.CommitTran();
- return content.OK(barCode, packaxisTask);
+ return content.Error($"鏈壘鍒版潯鐮亄barCode}");
}
- catch (Exception ex)
+ List<Dt_StationPackInfo> stationPackInfos = _stationPackInfoRepository.Db.Queryable<Dt_StationPackInfo>().ToList();
+ Dt_StationPackInfo? stationPackInfo = stationPackInfos.FirstOrDefault(x => x.PackType == packinfo.PackType && x.OrderNo == packinfo.OrderNo && x.AssignNum < x.PackNum);
+ Dt_PackaxisTask packaxisTask = new Dt_PackaxisTask();
+ //濡傛灉璁㈠崟鐩稿悓銆佸灈鍨嬩竴鑷村苟涓斿垎閰嶆暟閲忓皯浜庣爜鍨涚粨鎵樻暟閲忓垯鍒嗛厤鍒颁竴璧�
+ _unitOfWorkManage.BeginTran();
+ if (stationPackInfo != null)
{
- _unitOfWorkManage.RollbackTran();
- content.Error(ex.Message);
+ packaxisTask = new Dt_PackaxisTask()
+ {
+ DeviceCode = deviceCode,
+ SourceAddress = "2421",
+ BarCode = barCode,
+ CurrentAddress = "2421",
+ TargetAddress = stationPackInfo.StationCode,
+ NextAddress = stationPackInfo.LineCode,
+ TaskState = TaskStatusEnum.Line_Executing.ObjToInt(),
+ PackLength = packinfo.Length,
+ PackWidth = packinfo.Width,
+ PackHeight = packinfo.Height,
+ PackType = packinfo.PackType,
+ Dispatchertime = DateTime.Now,
+ };
+ stationPackInfo.AssignNum += 1;
+ stationPackInfo.ExecutingNum += 1;
+ packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt();
+
+ //鏇存柊鐮佸灈鎵ц宸ヤ綅
+ _stationPackInfoRepository.UpdateData(stationPackInfo);
+ //鏇存柊寰呯爜鍨涗俊鎭〃
+ _packinfoRepository.UpdateData(packinfo);
+ //娣诲姞鐮佸灈浠诲姟
+ BaseDal.AddData(packaxisTask);
+
}
- return content;
+ else//鍒嗛厤鏂板伐浣�
+ {
+ //鑾峰彇褰撳墠绌虹洏鍑嗗鐨勭爜鍨涘伐浣�
+ List<string> stations = _stationMangerRepository.QueryData(x => x.StationDeviceCode == "CLC_CP" && x.IsOccupied == StationOccupiedEnum.None.ObjToInt()).Select(x => x.StationCode).ToList();
+ //鑾峰彇鐮佸灈閰嶇疆琛ㄦ煡璇㈠彲鍒嗛厤骞跺凡閰嶇疆鐨勭爜鍨涘伐浣�
+ List<Dt_Packaxis> packaxes = _packaxisRepository.Db.Queryable<Dt_Packaxis>().Where(x => x.PackType == packinfo.PackType && stations.Contains(x.StationCode)).ToList();
+ if (packaxes.Count == 0)
+ {
+ return content.Error("鏈壘鍒板彲鍒嗛厤鐮佸灈閰嶇疆");
+ }
+ List<string> packStations = packaxes.Select(x => x.StationCode).ToList();
+ Dt_StationPackInfo? packInfoAssign = stationPackInfos.Where(x => x.PackType == 0 && x.AssignNum == 0 && packStations.Contains(x.StationCode)).OrderBy(x => x.OrderIndex).FirstOrDefault();
+ if (packInfoAssign == null)
+ {
+ return content.Error("鏈壘鍒板彲鍒嗛厤鍨涗綅");
+ }
+ packInfoAssign.PackType = packinfo.PackType;
+ packInfoAssign.OrderNo = packinfo.OrderNo;
+ packInfoAssign.MakeCode = packinfo.MakeCode;
+ packInfoAssign.MaterielCode = packInfoAssign.MaterielCode;
+ packInfoAssign.PackNum = packaxes.FirstOrDefault(x => x.StationCode == packInfoAssign.StationCode).PackNum;
+ packaxisTask = new Dt_PackaxisTask()
+ {
+ DeviceCode = deviceCode,
+ SourceAddress = "2421",
+ BarCode = barCode,
+ CurrentAddress = "2421",
+ TargetAddress = packInfoAssign.StationCode,
+ NextAddress = packInfoAssign.LineCode,
+ TaskState = TaskStatusEnum.Line_Executing.ObjToInt(),
+ PackLength = packinfo.Length,
+ PackWidth = packinfo.Width,
+ PackHeight = packinfo.Height,
+ PackType = packinfo.PackType,
+ Dispatchertime = DateTime.Now,
+ };
+ packInfoAssign.AssignNum += 1;
+ packInfoAssign.ExecutingNum += 1;
+ packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt();
+ //鏇存柊鐮佸灈鎵ц宸ヤ綅
+ _stationPackInfoRepository.UpdateData(packInfoAssign);
+ //鏇存柊寰呯爜鍨涗俊鎭〃
+ _packinfoRepository.UpdateData(packinfo);
+ //娣诲姞鐮佸灈浠诲姟
+ BaseDal.AddData(packaxisTask);
+ }
+ _unitOfWorkManage.CommitTran();
+ return content.OK(barCode, packaxisTask);
}
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
}
/// <summary>
/// 鐮佸灈缁撴墭骞朵笂浼犵爜鍨涘伐浣嶇爜鍨涙槑缁嗘暟鎹�
--
Gitblit v1.9.3