yanjinhui
4 天以前 3d3598eea1b93ed7f977d077355ebbcc1270ba38
优化
已修改4个文件
202 ■■■■■ 文件已修改
新建文件夹/WIDESEA_WMSServer/ClassLibrary2/ContainerService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/ClassLibrary2/EquipmentAlarmInforService.cs 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Check.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary2/ContainerService.cs
@@ -71,7 +71,7 @@
                    if (item.alarm != "正常")
                    {
                        _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm,
                            $"冷柜{item.alarm}", item.message, MessageStatusEnum.Undisposed);
                            $"冷柜{item.name}{item.alarm}", item.message, MessageStatusEnum.Undisposed);
                    }
                }
                if (containersAdd.Count > 0) BaseDal.AddData(containersAdd);
н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary2/EquipmentAlarmInforService.cs
@@ -76,7 +76,7 @@
                    }
                    if (string.Equals(item.status, nameof(DeviceStatus.Error), StringComparison.OrdinalIgnoreCase))
                    {
                        _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, item.robotName, item.status);
                        _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm,"小车编号"+ item.robotCode, item.status);
                    }
                }
                foreach (var item in response.data.sorters)
@@ -103,7 +103,7 @@
                    }
                    if (string.Equals(item.status, nameof(DeviceStatus.Error), StringComparison.OrdinalIgnoreCase))
                    {
                        _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, item.sorterCode, item.status);
                        _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, "分拣台名字"+ item.sorterCode, item.status);
                    }
                }
                if (equipmentAlarmInforsAdd.Count > 0) BaseDal.AddData(equipmentAlarmInforsAdd);
@@ -116,182 +116,6 @@
            return content;
        }
        /// <summary>
        /// æŸ¥çœ‹ç«‹åº“小车报警信息
        /// </summary>
        /// <returns></returns>
        public WebResponseContent getDeviceStatus1()
        {
            try
            {
                var url = "http://172.16.1.2:8080/cube/taskInfo/getDeviceStatus?token=wH5zdAUCv2BEHJIinmowyki8cdc5ge8fAwFDcYZs0bVldNgmORt0O0l4GJTDv1dglRdMxb9xDK5Qb3NJAqL1Li2GkfdVa3KnIkfrQZtsP7UXhMmUz6xEuztG6d5svAJO9HENLb8JWVqCfpO2EWV6ebo/g5tJ9x7kbwwAxvCBrWdiEJv09FvaRQ==  ";
                var result = HttpHelper.Get(url);
                var response = JsonConvert.DeserializeObject<AGVResponse<DeviceStatusData>>(result);
                // æ£€æŸ¥æŽ¥å£å“åº”是否成功
                if (response == null || response.code != "0")
                {
                    return new WebResponseContent { Status = false, Message = $"WCS接口调用失败: {response?.msg}" };
                }
                var syncTime = DateTime.Now;
                var AddEquipList = new List<Dt_EquipmentAlarmInfor>();
                var UpdateEquipList = new List<Dt_EquipmentAlarmInfor>();
                var alarmList = new List<(string deviceType, string deviceName, string deviceCode)>();
                // æ”¶é›†æ‰€æœ‰è®¾å¤‡ç¼–码,一次性查询
                var allDeviceCodes = new List<string>();
                if (response.data?.robot != null && response.data.robot.Count > 0)
                {
                    allDeviceCodes.AddRange(response.data.robot.Select(x => x.robotCode));
                }
                if (response.data?.sorters != null && response.data.sorters.Count > 0)
                {
                    allDeviceCodes.AddRange(response.data.sorters.Select(x => x.sorterCode));
                }
                // ä¸€æ¬¡æ€§æŸ¥è¯¢æ‰€æœ‰å·²å­˜åœ¨çš„设备记录
                var existingRecords = allDeviceCodes.Any()
                    ? BaseDal.QueryData(x => allDeviceCodes.Contains(x.RobotCode))
                         .ToDictionary(x => x.RobotCode, x => x)
                    : new Dictionary<string, Dt_EquipmentAlarmInfor>();
                // å¤„理机器人设备数据
                if (response.data?.robot != null && response.data.robot.Count > 0)
                {
                    foreach (var robot in response.data.robot)
                    {
                        ProcessDevice(robot.robotCode, robot.robotName, robot.status, "机器人",
                            existingRecords, AddEquipList, UpdateEquipList, alarmList, syncTime);
                    }
                }
                // å¤„理分拣台设备数据
                if (response.data?.sorters != null && response.data.sorters.Count > 0)
                {
                    foreach (var sorter in response.data.sorters)
                    {
                        ProcessDevice(sorter.sorterCode, sorter.sorterName, sorter.status, "分拣台",
                            existingRecords, AddEquipList, UpdateEquipList, alarmList, syncTime);
                    }
                }
                // å¼€å¯äº‹åŠ¡
                //_unitOfWorkManage.BeginTran();
                try
                {
                    // æ‰¹é‡æ“ä½œ
                    if (AddEquipList.Count > 0)
                    {
                        BaseDal.AddData(AddEquipList);
                    }
                    if (UpdateEquipList.Count > 0)
                    {
                        BaseDal.UpdateData(UpdateEquipList);
                    }
                    // æäº¤äº‹åŠ¡
                    //_unitOfWorkManage.CommitTran();
                    // å¤„理报警信息
                    ProcessAlarmMessages(alarmList);
                    var totalCount = AddEquipList.Count + UpdateEquipList.Count;
                    return new WebResponseContent
                    {
                        Status = true,
                        Message = $"同步成功,新增 {AddEquipList.Count} æ¡ï¼Œæ›´æ–° {UpdateEquipList.Count} æ¡ï¼Œå…±å¤„理 {totalCount} æ¡è®¾å¤‡è®°å½•。"
                    };
                }
                catch (Exception ex)
                {
                    //_unitOfWorkManage.RollbackTran();
                    return new WebResponseContent
                    {
                        Status = false,
                        Message = $"数据保存失败: {ex.Message}"
                    };
                }
            }
            catch (Exception ex)
            {
                return new WebResponseContent
                {
                    Status = false,
                    Message = $"获取设备状态失败: {ex.Message}"
                };
            }
        }
        /// <summary>
        /// å¤„理单个设备记录
        /// </summary>
        private void ProcessDevice(string deviceCode, string deviceName, string status, string deviceType,
            Dictionary<string, Dt_EquipmentAlarmInfor> existingRecords,
            List<Dt_EquipmentAlarmInfor> addList,
            List<Dt_EquipmentAlarmInfor> updateList,
            List<(string deviceType, string deviceName, string deviceCode)> alarmList,
            DateTime syncTime)
        {
            if (existingRecords.TryGetValue(deviceCode, out var existingRecord))
            {
                // æ£€æŸ¥çŠ¶æ€æ˜¯å¦å‘ç”Ÿå˜åŒ–ï¼Œé¿å…ä¸å¿…è¦çš„æ›´æ–°å’Œé‡å¤æŠ¥è­¦
                bool statusChanged = existingRecord.Status != status;
                // æ›´æ–°çŽ°æœ‰è®°å½•
                existingRecord.RobotName = deviceName;
                existingRecord.Status = status;
                existingRecord.SyncTime = syncTime;
                existingRecord.ModifyDate = syncTime;
                existingRecord.Modifier = "System";
                updateList.Add(existingRecord);
                // åªæœ‰çŠ¶æ€å˜ä¸ºerror时才报警
                if (statusChanged && status == "error")
                {
                    alarmList.Add((deviceType, deviceName, deviceCode));
                }
            }
            else
            {
                // åˆ›å»ºæ–°è®°å½•
                var newRecord = new Dt_EquipmentAlarmInfor
                {
                    RobotName = deviceName,
                    RobotCode = deviceCode,
                    Status = status,
                    SyncTime = syncTime,
                    CreateDate = syncTime,
                    Creater = "System"
                };
                addList.Add(newRecord);
                // æ–°è®¾å¤‡çŠ¶æ€ä¸ºerror时报警
                if (status == "error")
                {
                    alarmList.Add((deviceType, deviceName, deviceCode));
                }
            }
        }
        /// <summary>
        /// å¤„理报警信息
        /// </summary>
        private void ProcessAlarmMessages(List<(string deviceType, string deviceName, string deviceCode)> alarmList)
        {
            foreach (var alarm in alarmList)
            {
                string alarmTitle = alarm.deviceType == "机器人"
                    ? "小车名称:" + alarm.deviceName
                    : "分拣台名称:" + alarm.deviceName;
                string alarmMessage = alarm.deviceType == "机器人"
                    ? $"小车编号【{alarm.deviceCode}】发生错误"
                    : $"编号【{alarm.deviceCode}】发生错误";
                _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, alarmTitle, alarmMessage, MessageStatusEnum.Emergency);
            }
        }
    }
}
н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs
@@ -135,6 +135,7 @@
                    }
                }
                var messinfo = BaseDal.QueryData(x => x.MessageStatus < MessageStatusEnum.Wait.ObjToInt());
                messagesinfo = messagesinfo.Where(x => !messinfo.Select(x => x.Id).Contains(x.Id)).ToList();
                foreach (var item in messinfo)
                {
                    Message message = new Message()
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Check.cs
@@ -254,15 +254,15 @@
                #endregion
                #region åˆ¤æ–­å½“前物料批次的盘点任务是否全部完成
                List<Dt_SupplyTask> supplyTasks = _supplyTaskService.Repository.QueryData(x => x.MaterielCode == supplyTask.MaterielCode && x.BatchNo == supplyTask.BatchNo && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt() && x.WarehouseCode == supplyTask.WarehouseCode).ToList();
                List<Dt_SupplyTask> supplyTasks1 = _supplyTaskService.Repository.QueryData(x => x.MaterielCode == supplyTask.MaterielCode && x.BatchNo == supplyTask.BatchNo && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt()).ToList();
                List<Dt_SupplyTask> supplyTasks = _supplyTaskService.Repository.QueryData(x => x.MaterielCode == supplyTask.MaterielCode && x.BatchNo == supplyTask.BatchNo && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt() && x.WarehouseCode == supplyTask.WarehouseCode && x.TaskId != supplyTask.TaskId).ToList();
                List<Dt_SupplyTask> supplyTasks1 = _supplyTaskService.Repository.QueryData(x => x.MaterielCode == supplyTask.MaterielCode && x.BatchNo == supplyTask.BatchNo && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt() && x.TaskId != supplyTask.TaskId).ToList();
                Dt_Inventory_Batch inventory_Batch = new Dt_Inventory_Batch();
                List<Dt_InventoryInfo> inventoryInfos = new List<Dt_InventoryInfo>();
                if (supplyTasks1.Count < 1)
                {
                    #region æŸ¥æ‰¾åº“å­˜
                    inventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.BatchNo == cabinOrderDetail.Batch_num && x.MaterielCode == cabinOrderDetail.Goods_no);
                    var SupplyQuantitys = inventoryInfos.Sum(x => x.SupplyQuantity);
                    inventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.BatchNo == cabinOrderDetail.Batch_num && x.MaterielCode == cabinOrderDetail.Goods_no && x.Id != inventoryInfo.Id);
                    var SupplyQuantitys = inventoryInfos.Sum(x => x.SupplyQuantity) + supplyTask.SupplyQuantity;
                    #endregion
                    #region åº“存批次
@@ -276,6 +276,9 @@
                            item.SupplyQuantity = 0;
                            item.StockStatus = StockStatusEmun.入库完成.ObjToInt();
                        }
                        inventoryInfo.StockQuantity = supplyTask.SupplyQuantity;
                        inventoryInfo.SupplyQuantity = 0;
                        inventoryInfo.StockStatus = StockStatusEmun.入库完成.ObjToInt();
                    }
                    else
                    {
@@ -295,19 +298,19 @@
                    });
                    _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(cabinOrder.Details, OperateTypeEnum.自动完成);
                    cabinOrder.Details = null;
                    Repository.DeleteAndMoveIntoHty(cabinOrder, OperateTypeEnum.自动完成);
                    BaseDal.DeleteAndMoveIntoHty(cabinOrder, OperateTypeEnum.自动完成);
                    #endregion
                }
                else
                {
                    Repository.UpdateData(cabinOrder);
                    BaseDal.UpdateData(cabinOrder);
                    _deliveryOrderDetailServices.Repository.UpdateData(cabinOrderDetail);
                }
                #endregion
                _inventoryInfoService.UpdateData(inventoryInfo);
                _supplyTaskService.Repository.DeleteAndMoveIntoHty(supplyTask, OperateTypeEnum.自动完成);
                if (inventoryInfos.Count > 1)
                if (inventoryInfos.Count >= 1)
                {
                    _inventoryInfoService.UpdateData(inventoryInfos);
                    _inventory_BatchServices.UpdateData(inventory_Batch);