using System;
|
using System.Collections.Generic;
|
using yunneiPda.EnumDefine;
|
using yunneiPda.orm;
|
using System.Linq;
|
using Newtonsoft.Json.Linq;
|
|
namespace yunneiPda
|
{
|
/// <summary>
|
/// 增补创建的扩展方法 【EditBy shaocx,2022-02-05】
|
/// </summary>
|
public class MyExtend
|
{
|
/// <summary>
|
/// 获取非法站点号字符串
|
/// </summary>
|
/// <param name="station"></param>
|
/// <returns></returns>
|
public static string GetFFZDHStr(string station)
|
{
|
return "非法站点号:" + station;
|
}
|
|
/// <summary>
|
/// 组盘,保存入库表单,验证托盘号是否在新建的表单中
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="value"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 验证托盘号是否有库存
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="value"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 组盘,保存入库表单,验证流水号是在在新建的表单中
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="value"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
public static bool ValidateSerialNumbersIsExistInInStockOrderWithNewCreateStatus(dbmodel mod, inStockEntity<serialNumbers> 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;
|
}
|
/// <summary>
|
/// 组盘,保存入库表单,验证流水号是在在新建的表单中
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="value"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
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<int?> 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;
|
}
|
|
/// <summary>
|
/// 组盘,保存入库表单,验证流水号是在库存中
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="value"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
public static bool ValidateSerialNumbersIsExistStockForSalverCode(dbmodel mod, inStockEntity<serialNumbers> 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;
|
}
|
|
/// <summary>
|
/// 组盘,保存入库表单,验证流水号是在库存中
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="value"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
|
/// <summary>
|
/// 组盘,保存入库表单,验证目标站点是否有库存
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="value"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
public static bool ValidateIsExistStockWhenSaveInCode(dbmodel mod, inStockEntity<serialNumbers> 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;
|
}
|
|
/// <summary>
|
/// 组盘,保存入库表单,验证目标站点是否允许创建任务
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="value"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
public static bool ValidateIsAllowCreateTaskWhenSaveInCode(dbmodel mod, inStockEntity<serialNumbers> 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;
|
}
|
|
/// <summary>
|
/// 校验站点是否有任务被占用
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="positionName"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
}
|