From 5aac8e7f0b646bb81df96d919d690b2264c1bd86 Mon Sep 17 00:00:00 2001
From: rszn <645583145@qq.com>
Date: Sun, 30 Jun 2024 23:11:03 +0800
Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E4=BB=93=E5=86=85=E9=83=A8=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0try=20catch?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Service/Station/MonitorService.cs | 214 ++++++++++++++++--------------
1 file changed, 116 insertions(+), 98 deletions(-)
diff --git a/Service/Station/MonitorService.cs b/Service/Station/MonitorService.cs
index a97d8b8..17edd61 100644
--- a/Service/Station/MonitorService.cs
+++ b/Service/Station/MonitorService.cs
@@ -148,128 +148,146 @@ public class MonitorService
///
///
///
- public Result BatteryRelocation(ushort removeBinNo, ushort putBinNo,int type=0)
+ public Result BatteryRelocation(ushort removeBinNo, ushort putBinNo, int type = 0)
{
- //校验:出仓位
- BinInfo? removeBin = BinInfoRepository.QueryByClause(i =>
- i.No.Equals(removeBinNo) && (i.ChargeStatus != 1) && i.Exists == 1 &&
- i.AmtLock == 0);
-
- if (removeBin == null)
+ MoveBinRecord moveBinRecord = null;
+ try
{
- return Result.Fail("出仓位状态有误");
- }
+ //校验:出仓位
+ BinInfo? removeBin = BinInfoRepository.QueryByClause(i =>
+ i.No.Equals(removeBinNo) && (i.ChargeStatus != 1) && i.Exists == 1 &&
+ i.AmtLock == 0);
- BinInfo? putBin = BinInfoRepository.QueryByClause(i =>
- i.No.Equals(putBinNo) && i.Exists == 0 && i.AmtLock == 0 &&
- i.Status == 1);
- if (putBin == null)
- {
- return Result.Fail("入仓位状态有误");
- }
+ if (removeBin == null)
+ {
+ return Result.Fail("出仓位状态有误");
+ }
- if (PlcMgr.PlcClient?.ReadTaskNo() != 0)
- {
- Log.Info("当前存在其他任务");
- return Result.Fail("当前存在其他任务");
- }
- PlcMgr.PlcClient?.ExChangeTaskNo(2);
- var result = PlcMgr.DistributeTask(putBinNo, removeBinNo, 2);
+ BinInfo? putBin = BinInfoRepository.QueryByClause(i =>
+ i.No.Equals(putBinNo) && i.Exists == 0 && i.AmtLock == 0 &&
+ i.Status == 1);
+ if (putBin == null)
+ {
+ return Result.Fail("入仓位状态有误");
+ }
- if (!result)
- {
- PlcMgr.PlcClient?.ExChangeTaskNo(0);
- return Result.Fail();
- }
+ if (PlcMgr.PlcClient?.ReadTaskNo() != 0)
+ {
+ Log.Info("当前存在其他任务");
+ return Result.Fail("当前存在其他任务");
+ }
+ PlcMgr.PlcClient?.ExChangeTaskNo(2);
+ var result = PlcMgr.DistributeTask(putBinNo, removeBinNo, 2);
+ if (!result)
+ {
+ PlcMgr.PlcClient?.ExChangeTaskNo(0);
+ return Result.Fail();
+ }
- int count = 3;
- while (count > 0)
- {
- result = PlcMgr.ReadTaskStatus(2);
- if (result)
+
+ int count = 3;
+ while (count > 0)
{
- break;
+ result = PlcMgr.ReadTaskStatus(2);
+ if (result)
+ {
+ break;
+ }
+
+ count--;
+ Thread.Sleep(1000);
}
- count--;
- Thread.Sleep(1000);
- }
+ if (!result)
+ {
+ PlcMgr.PlcClient?.ExChangeTaskNo(0);
+ Log.Error("BatteryRelocation PlcMgr.ReadTaskStatus(2) =false");
+ return Result.Fail();
+ }
- if (!result)
- {
- PlcMgr.PlcClient?.ExChangeTaskNo(0);
- Log.Error("BatteryRelocation PlcMgr.ReadTaskStatus(2) =false");
- return Result.Fail();
- }
+ moveBinRecord = new MoveBinRecord()
+ {
+ UpBinNo = removeBinNo.ToString(),
+ UpBatteryNo = removeBin.BatteryNo,
+ UpBatterySoc = removeBin.Soc.ToString(),
+ InBatteryNo = putBin.BatteryNo,
+ InBatterySoc = putBin.Soc.ToString(),
+ InBinNo = putBinNo.ToString(),
+ Status = 0,
+ Type = type
+ };
+ MoveBinRecordRepository.Insert(moveBinRecord);
+
+ result = PlcMgr.HoldOn();
+ if (!result)
+ {
+ moveBinRecord.Status = 3;
+ MoveBinRecordRepository.Update(moveBinRecord);
+ PlcMgr.PlcClient?.ExChangeTaskNo(0);
- MoveBinRecord moveBinRecord = new MoveBinRecord()
- {
- UpBinNo = removeBinNo.ToString(),
- UpBatteryNo = removeBin.BatteryNo,
- UpBatterySoc = removeBin.Soc.ToString(),
- InBatteryNo = putBin.BatteryNo,
- InBatterySoc = putBin.Soc.ToString(),
- InBinNo = putBinNo.ToString(),
- Status = 0,
- Type = type
- };
- MoveBinRecordRepository.Insert(moveBinRecord);
+ Log.Error("BatteryRelocation PlcMgr.HoldOn() =false");
+ return Result.Fail();
+ }
- result = PlcMgr.HoldOn();
- if (!result)
- {
- moveBinRecord.Status = 3;
+ Log.Info($"battery move task Manual removeBinNo={removeBinNo}, putBinNo={putBinNo} type={type} ");
+ moveBinRecord.Status = 1;
MoveBinRecordRepository.Update(moveBinRecord);
- PlcMgr.PlcClient?.ExChangeTaskNo(0);
+ var queryPlcTask = PlcTaskMgr.QueryPlcTask(2, 1200, 1201);
+ if (!queryPlcTask)
+ {
+ PlcMgr.PlcClient?.ExChangeTaskNo(0);
+ Log.Info($"move battery fail update moveBin={JsonConvert.SerializeObject(moveBinRecord)}");
+ moveBinRecord.Status = 3;
+ MoveBinRecordRepository.Update(moveBinRecord);
+ return Result.Fail();
+ }
- Log.Error("BatteryRelocation PlcMgr.HoldOn() =false");
- return Result.Fail();
- }
+ //如果是缓存仓 更新缓存仓的数据
+ if (putBin.CacheBinFlag == 1)
+ {
+ putBin.Exists = 1;
+ putBin.BatteryNo = removeBin.BatteryNo;
+ putBin.Soc = removeBin.Soc;
+ putBin.Soe = removeBin.Soe;
+ putBin.Soh = removeBin.Soh;
+ putBin.BatteryEnterSeq = removeBin.BatteryEnterSeq;
+ putBin.InTime = removeBin.InTime;
+ BinInfoRepository.Update(putBin);
+ }
- Log.Info($"battery move task Manual removeBinNo={removeBinNo}, putBinNo={putBinNo} type={type} ");
- moveBinRecord.Status = 1;
- MoveBinRecordRepository.Update(moveBinRecord);
- var queryPlcTask = PlcTaskMgr.QueryPlcTask(2, 1200, 1201);
- if (!queryPlcTask)
- {
- PlcMgr.PlcClient?.ExChangeTaskNo(0);
- Log.Info($"move battery fail update moveBin={JsonConvert.SerializeObject(moveBinRecord)}");
- moveBinRecord.Status = 3;
+
+ if (removeBin.CacheBinFlag == 1)
+ {
+ removeBin.Exists = 0;
+ removeBin.BatteryNo = "-1";
+ removeBin.Soc = -1;
+ removeBin.Soe = -1;
+ removeBin.Soh = -1;
+ }
+
+ removeBin.BatteryEnterSeq = 0;
+ BinInfoRepository.Update(removeBin);
+ moveBinRecord.Status = 2;
+ Log.Info($"move battery success update moveBin={JsonConvert.SerializeObject(moveBinRecord)}");
MoveBinRecordRepository.Update(moveBinRecord);
- return Result.Fail();
+ PlcMgr.PlcClient?.ExChangeTaskNo(0);
}
-
- //如果是缓存仓 更新缓存仓的数据
- if (putBin.CacheBinFlag == 1)
+ catch (Exception e)
{
- putBin.Exists = 1;
- putBin.BatteryNo = removeBin.BatteryNo;
- putBin.Soc = removeBin.Soc;
- putBin.Soe = removeBin.Soe;
- putBin.Soh = removeBin.Soh;
- putBin.BatteryEnterSeq = removeBin.BatteryEnterSeq;
- putBin.InTime = removeBin.InTime;
- BinInfoRepository.Update(putBin);
- }
+ Log.Error($"move battery fail e={e.Message}");
+ if (moveBinRecord != null)
+ {
+ moveBinRecord.Status = 3;
+ MoveBinRecordRepository.Update(moveBinRecord);
+ }
+ PlcMgr.PlcClient?.ResetTaskNo();
- if (removeBin.CacheBinFlag == 1)
- {
- removeBin.Exists = 0;
- removeBin.BatteryNo = "-1";
- removeBin.Soc = -1;
- removeBin.Soe = -1;
- removeBin.Soh = -1;
+ return Result.Fail();
}
- removeBin.BatteryEnterSeq = 0;
- BinInfoRepository.Update(removeBin);
- moveBinRecord.Status = 2;
- Log.Info($"move battery success update moveBin={JsonConvert.SerializeObject(moveBinRecord)}");
- MoveBinRecordRepository.Update(moveBinRecord);
- PlcMgr.PlcClient?.ExChangeTaskNo(0);
return Result.Success();
}