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;
}
}
}