using System; using System.Collections.Generic; using yunneiPda.EnumDefine; using yunneiPda.orm; using System.Linq; using Newtonsoft.Json.Linq; namespace yunneiPda { /// /// 增补创建的扩展方法 【EditBy shaocx,2022-02-05】 /// public class MyExtend { /// /// 获取非法站点号字符串 /// /// /// public static string GetFFZDHStr(string station) { return "非法站点号:" + station; } /// /// 组盘,保存入库表单,验证托盘号是否在新建的表单中 /// /// /// /// /// public static bool ValidateContainerCodeIsExistInInStockOrderWithNewCreateStatus(dbmodel mod, string containerCode, ref string errMsg ) { var queryStatus = (int)InStockOrderStatus.新建; inStockOrder _inStockOrder = mod.inStockOrder.FirstOrDefault(x => x.containerCode == containerCode && x.status == queryStatus); if (_inStockOrder != null) { errMsg = "托盘号" + containerCode + "已经在新建的组盘记录中,入库表单:" + _inStockOrder.orderCode; return false; } return true; } /// /// 验证托盘号是否有库存 /// /// /// /// /// public static bool ValidateContainerCodeIsExistStockForSalverCode(dbmodel mod, string containerCode, ref string errMsg ) { productStock stock = mod.productStock.FirstOrDefault(x => x.containerCode == containerCode); if (stock != null) { var place = mod.position.FirstOrDefault(x => x.positionId == stock.positionId); errMsg = "托盘号" + containerCode + "已经在库存中,库位号:" + place.positionName; return false; } return true; } /// /// 组盘,保存入库表单,验证流水号是在在新建的表单中 /// /// /// /// /// public static bool ValidateSerialNumbersIsExistInInStockOrderWithNewCreateStatus(dbmodel mod, inStockEntity value, ref string errMsg ) { foreach (var item in value.dataList) { var result = ValidateSingleSerialNumbersIsExistInInStockOrderWithNewCreateStatus(mod, 0, item.serialNumber, value.productCode, ref errMsg); if (result == false) { return false; } } return true; } /// /// 组盘,保存入库表单,验证流水号是在在新建的表单中 /// /// /// /// /// public static bool ValidateSingleSerialNumbersIsExistInInStockOrderWithNewCreateStatus(dbmodel mod, int orderCodeId, string serialNumber, string productCode, ref string errMsg ) { var queryStatus = (int)InStockOrderStatus.新建; var _inStockOrderList = mod.inStockOrderList.AsNoTracking().Where(x => x.serialNumber == serialNumber && x.productCode == productCode).ToList(); if (_inStockOrderList != null && _inStockOrderList.Count > 0) { if (orderCodeId > 0) {//说明是编辑情况下,把当前正在编辑的过滤掉 //_inStockOrderList = mod.inStockOrderList.AsNoTracking().Where(x => x.orderCodeId != orderCodeId).ToList(); //修复查询bug,提示流水号跟工单不符的问题 【Editby shaocx,2025-04-02】 _inStockOrderList = _inStockOrderList.Where(x => x.orderCodeId != orderCodeId).ToList(); } //优化太慢的情况,pda要求5秒内必须返回请求。所以以后pda也得优化! 【Editby shaocx,2023-09-20】 List query_orderCodeIdList = _inStockOrderList.Select(x => x.orderCodeId).ToList(); var _inStockOrder = mod.inStockOrder.AsNoTracking().FirstOrDefault(x => query_orderCodeIdList.Contains(x.orderCodeId) && x.status == queryStatus); if (_inStockOrder != null) { errMsg = "流水号" + serialNumber + "已经在新建的组盘记录中,入库表单:" + _inStockOrder.orderCode; return false; } //foreach (var myInStock in _inStockOrderList) //{ // var _inStockOrder = mod.inStockOrder.AsNoTracking().FirstOrDefault(x => x.orderCodeId == myInStock.orderCodeId && x.status == queryStatus); // if (_inStockOrder != null) // { // errMsg = "流水号" + serialNumber + "已经在新建的组盘记录中,入库表单:" + _inStockOrder.orderCode; // return false; // } //} } return true; } /// /// 组盘,保存入库表单,验证流水号是在库存中 /// /// /// /// /// public static bool ValidateSerialNumbersIsExistStockForSalverCode(dbmodel mod, inStockEntity value, ref string errMsg ) { foreach (var item in value.dataList) { var result = ValidateSingleSerialNumbersIsExistStockForSalverCode(mod, item.serialNumber, value.productCode, ref errMsg); if (result == false) { return false; } } return true; } /// /// 组盘,保存入库表单,验证流水号是在库存中 /// /// /// /// /// public static bool ValidateSingleSerialNumbersIsExistStockForSalverCode(dbmodel mod, string serialNumber, string productCode, ref string errMsg ) { var myStock = mod.productStockList.FirstOrDefault(x => x.serialNumber == serialNumber && x.productCode == productCode); if (myStock != null) { productStock stock2 = mod.productStock.FirstOrDefault(x => x.positionId == myStock.stockId); if (stock2 != null) { var place2 = mod.position.FirstOrDefault(x => x.positionId == stock2.positionId); if (place2 != null) { errMsg = "流水号" + serialNumber + "已经在库存中,库位号:" + place2.positionName; return false; } } } return true; } /// /// 组盘,保存入库表单,验证目标站点是否有库存 /// /// /// /// /// public static bool ValidateIsExistStockWhenSaveInCode(dbmodel mod, inStockEntity value, ref string errMsg ) { if (string.IsNullOrEmpty(value.toStieCode)) return true; var stock = MyExtendHelper.GetProductStockByName(mod, value.toStieCode); if (stock != null) { errMsg = "站点" + value.toStieCode + "已经有库存"; return false; } return true; } /// /// 组盘,保存入库表单,验证目标站点是否允许创建任务 /// /// /// /// /// public static bool ValidateIsAllowCreateTaskWhenSaveInCode(dbmodel mod, inStockEntity value, ref string errMsg ) { if (string.IsNullOrEmpty(value.toStieCode)) return true; task _task = null; var isExist = MyExtendHelper.IsExistNoFinishedTask(mod, value.toStieCode, ref _task); if (isExist) { errMsg = "站点" + value.toStieCode + "有未完成的任务,任务号:" + _task.createListCode + ",起点:" + _task.sourcePlace + ",目标点:" + _task.toPlace; return false; } return true; } /// /// 校验站点是否有任务被占用 /// /// /// /// /// public static bool CommonIsExistNoFinishedTask(dbmodel mod, string positionName, ref string errMsg ) { task _task = null; var isExist = MyExtendHelper.IsExistNoFinishedTask(mod, positionName, ref _task); if (isExist) { errMsg = "站点" + positionName + "有未完成的任务,任务号:" + _task.createListCode + ",起点:" + _task.sourcePlace + ",目标点:" + _task.toPlace; return false; } return true; } } }