You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
567 lines
26 KiB
C#
567 lines
26 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Estsh.Core.Base;
|
|
using Estsh.Core.Wms.IRepositories;
|
|
using Estsh.Core.Wms.IServices;
|
|
using Estsh.Core.Model.Result;
|
|
using Estsh.Core.Services;
|
|
using Estsh.Core.Repositories;
|
|
using Estsh.Core.Models;
|
|
using Newtonsoft.Json.Linq;
|
|
using static Estsh.Core.Model.EnumUtil.WmsEnumUtil;
|
|
using Estsh.Core.Model.EnumUtil;
|
|
|
|
namespace Estsh.Core.Wms.Services
|
|
{
|
|
public class MoveService : BaseService<BaseEntity>, IMoveService
|
|
{
|
|
private readonly IMoveRepository repository;
|
|
public MoveService(IMoveRepository _repository) : base(_repository)
|
|
{
|
|
repository = _repository;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 执行移库
|
|
/// </summary>
|
|
/// <param name="user">用户名</param>
|
|
/// <returns></returns>
|
|
public WmsResponseResult CheckMove(string loginId, string cartonNo, string locateName, string isPack)
|
|
{
|
|
//判断箱条码是否可用
|
|
SysStock cartonInfo = repository.CheckCartonNoStatus(cartonNo);
|
|
WmsResponseResult result = new WmsResponseResult();
|
|
if (cartonInfo == null)
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "条码不存在:[" + cartonNo + "],请检查!";
|
|
return result;
|
|
}
|
|
if (cartonInfo.Enabled.Equals("N"))
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "[" + cartonNo + "]:箱条码已冻结,无法操作!";
|
|
return result;
|
|
}
|
|
if (cartonInfo.Status != (int)StockStatus.INSTOCKED)
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "[" + cartonNo + "]:该条码为" + cartonInfo.StockStatus + "状态,请检查!";
|
|
return result;
|
|
}
|
|
if (cartonInfo.CartonType == 1 && isPack == "True")
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "[" + cartonNo + "]:该条码为料架,无法使用组托!";
|
|
return result;
|
|
}
|
|
|
|
//获取库位表库位与绑定零件信息
|
|
List<SysLocate> sysLocates = repository.CheckLocateStatus(locateName);
|
|
if (sysLocates.Count == 0)
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "[" + locateName + "]:库位不存在,请检查!";
|
|
return result;
|
|
}
|
|
|
|
if (cartonInfo.ErpWarehouse != sysLocates[0].ErpWarehouse)
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "移库不允许跨库存地!";
|
|
return result;
|
|
}
|
|
if (sysLocates[0].LocateId == cartonInfo.LocateId)
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "[" + locateName + "]:来源库位与目标库位一致,请检查!";
|
|
return result;
|
|
}
|
|
|
|
List<SysStock> UseStocks = repository.CheckUseStockCapacity(locateName); //当前库位已经使用库存列表
|
|
decimal QtySum = UseStocks.Sum(a => a.Qty);//已经使用库存总量
|
|
|
|
if (isPack == "True")
|
|
{
|
|
if (cartonInfo.GroupNo == "" || cartonInfo.GroupNo == null)
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "[" + cartonNo + "]:组托号为空,无法使用组托!";
|
|
return result;
|
|
}
|
|
//组托入库
|
|
List<SysStock> stocksByPack = repository.CheckCartonNoStatusByPack(cartonNo);
|
|
|
|
decimal QtySumByPack = stocksByPack.Sum(a => a.Qty);//组托入库所需库容
|
|
if (sysLocates[0].LocateCapacity > QtySum + QtySumByPack)
|
|
{
|
|
//有库容
|
|
//判断入库库位类型 是单零件 还是多零件
|
|
var getcount = stocksByPack.GroupBy(a => a.PartId).Select(b => (new SysStock
|
|
{
|
|
PartId = b.Key,
|
|
Qty = b.Count()
|
|
}));
|
|
int PartCount = getcount.Count();
|
|
if (PartCount > 1)
|
|
{
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.BASICS_LOCATE)
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "库位[" + locateName + "]类型无法满足操作,请更换为动态组合库!";
|
|
return result;
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.MANEUVER_LOCATE)
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "库位[" + locateName + "]类型无法满足操作,请更换为动态组合库!";
|
|
return result;
|
|
}
|
|
//多种类,进动态组合库 (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE 30
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE)
|
|
{
|
|
//动态组合库库位正确 ,有库容,正常入库
|
|
return repository.UpdateStockStatus(stocksByPack, sysLocates, (int)WmsEnumUtil.StockStatus.INSTOCKED, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//单种类,进基础库位 、 机动库位 (int)WmsEnumUtil.LocateType
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.BASICS_LOCATE)
|
|
{
|
|
if (sysLocates.Where(a => a.PartId == cartonInfo.PartId).Count() >= 0)
|
|
{
|
|
int Outstatus = (int)WmsEnumUtil.StockStatus.INSTOCKED;
|
|
//基础库位正确 ,有库容,正常入库
|
|
return repository.UpdateStockStatus(stocksByPack, sysLocates, Outstatus, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
else
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "库位[" + locateName + "]与条码零件[" + cartonInfo.PartNo + "]不匹配!";
|
|
return result;
|
|
}
|
|
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.LINE_LOCATE)
|
|
{
|
|
if (sysLocates.FirstOrDefault(a => a.PartId > 0) == null || sysLocates.Where(a => a.PartId == cartonInfo.PartId).Count() >= 0)
|
|
{
|
|
int Outstatus = (int)WmsEnumUtil.StockStatus.ONLINED;
|
|
//线边库位,维护过零件则校验零件是否存在,未维护零件则不校验
|
|
return repository.UpdateStockStatus(stocksByPack, sysLocates, Outstatus, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
else
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "库位[" + locateName + "]与条码零件[" + cartonInfo.PartNo + "]不匹配!";
|
|
return result;
|
|
}
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.MANEUVER_LOCATE)
|
|
{
|
|
//机动库位正确 ,有库容,正常入库
|
|
if (UseStocks.Where(a => a.PartId == cartonInfo.PartId).Count() >= 0)
|
|
{
|
|
//基础库位正确 ,有库容,正常入库
|
|
return repository.UpdateStockStatus(stocksByPack, sysLocates, (int)WmsEnumUtil.StockStatus.INSTOCKED, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
else
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "库位[" + locateName + "]与条码零件[" + cartonInfo.PartNo + "]不匹配!";
|
|
return result;
|
|
}
|
|
}
|
|
//多种类,进动态组合库 (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE 30
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE)
|
|
{
|
|
//动态组合库库位正确 ,有库容,正常入库
|
|
return repository.UpdateStockStatus(stocksByPack, sysLocates, (int)WmsEnumUtil.StockStatus.INSTOCKED, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
}
|
|
result.Success = false;
|
|
result.Msg = "[" + locateName + "]:库位类型不匹配,请检查!";
|
|
return result;
|
|
}
|
|
else
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "[" + locateName + "]:库位容量不足,请检查!";
|
|
return result;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//单包装入库
|
|
SysStock sysStock = repository.CheckCartonNoStatus(cartonNo);
|
|
|
|
if (sysLocates[0].LocateCapacity > QtySum + sysStock.Qty)
|
|
{
|
|
//有库容
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.BASICS_LOCATE)
|
|
{
|
|
if (sysLocates.Where(a => a.PartId == cartonInfo.PartId).Count() > 0)
|
|
{
|
|
int Outstatus = (int)WmsEnumUtil.StockStatus.INSTOCKED;
|
|
//基础库位正确 ,有库容,正常入库
|
|
List<SysStock> sysStocks = new List<SysStock>();
|
|
sysStocks.Add(sysStock);
|
|
return repository.UpdateStockStatus(sysStocks, sysLocates, Outstatus, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
else
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "库位[" + locateName + "]与条码零件[" + cartonInfo.PartNo + "]不匹配!";
|
|
return result;
|
|
}
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.LINE_LOCATE)
|
|
{
|
|
|
|
if (sysLocates.FirstOrDefault(a => a.PartId > 0) == null || sysLocates.Where(a => a.PartId == cartonInfo.PartId).Count() > 0)
|
|
{
|
|
int Outstatus = (int)WmsEnumUtil.StockStatus.ONLINED;
|
|
//线边库位,维护过零件则校验零件是否存在,未维护零件则不校验
|
|
List<SysStock> sysStocks = new List<SysStock>();
|
|
sysStocks.Add(sysStock);
|
|
return repository.UpdateStockStatus(sysStocks, sysLocates, Outstatus, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
else
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "库位[" + locateName + "]与条码零件[" + cartonInfo.PartNo + "]不匹配!";
|
|
return result;
|
|
}
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.MANEUVER_LOCATE)
|
|
{
|
|
//机动库位正确 ,有库容,正常入库
|
|
if (UseStocks.Where(a => a.PartId == cartonInfo.PartId).Count() >= 0)
|
|
{
|
|
//基础库位正确 ,有库容,正常入库
|
|
List<SysStock> sysStocks = new List<SysStock>();
|
|
sysStocks.Add(sysStock);
|
|
return repository.UpdateStockStatus(sysStocks, sysLocates, (int)WmsEnumUtil.StockStatus.INSTOCKED, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
else
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "库位[" + locateName + "]与条码零件[" + cartonInfo.PartNo + "]不匹配!";
|
|
return result;
|
|
}
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE)
|
|
{
|
|
//动态组合库库位正确 ,有库容,正常入库
|
|
List<SysStock> sysStocks = new List<SysStock>();
|
|
sysStocks.Add(sysStock);
|
|
return repository.UpdateStockStatus(sysStocks, sysLocates, (int)WmsEnumUtil.StockStatus.INSTOCKED, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.NC_LOCATE)
|
|
{
|
|
//动态组合库库位正确 ,有库容,正常入库
|
|
List<SysStock> sysStocks = new List<SysStock>();
|
|
sysStocks.Add(sysStock);
|
|
return repository.UpdateStockStatus(sysStocks, sysLocates, (int)WmsEnumUtil.StockStatus.NC_INSTOCK, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId);
|
|
}
|
|
result.Success = false;
|
|
result.Msg = "[" + locateName + "]:库位类型异常,请检查!";
|
|
return result;
|
|
}
|
|
else
|
|
{
|
|
result.Success = false;
|
|
result.Msg = "[" + locateName + "]:库位容量不足,请检查!";
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
|
|
//判断库位
|
|
public string CheckLocateName(string loginId, string LocateName, string isPack)
|
|
{
|
|
List<SysLocate> sysLocates = repository.CheckLocateStatus(LocateName);
|
|
if (sysLocates.Count == 0)
|
|
{
|
|
return "[" + LocateName + "]:库位不存在,请检查!";
|
|
}
|
|
|
|
List<SysStock> sysStocks = repository.CheckUseStockCapacity(LocateName);
|
|
if (sysStocks.Count == 0)
|
|
{
|
|
return "OK";
|
|
}
|
|
if (sysStocks[0].LocateNum > sysLocates[0].LocateCapacity)
|
|
{
|
|
return "[" + LocateName + "]:库位容量已满,请检查!";
|
|
}
|
|
|
|
|
|
return "OK";
|
|
}
|
|
|
|
//获取信息列表
|
|
public List<SysStock> GetMovePartInfo(string cartonNo, string isPack)
|
|
{
|
|
if (isPack == "True")
|
|
{
|
|
//组托移
|
|
return repository.GetCartonNoInfoByPack(cartonNo);
|
|
}
|
|
else
|
|
{
|
|
//单包装移
|
|
return repository.GetCartonNoInfo(cartonNo);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 获取单据移动单列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<WmsMoveHeader> GetMoveOrderList()
|
|
{
|
|
return repository.GetMoveOrderList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取单据移动单列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<WmsMoveDetail> GetMoveOrderDetailList(string orderNo)
|
|
{
|
|
return repository.CheckMoveOrderLocate(orderNo);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 单据移动单 库位判断
|
|
/// </summary>
|
|
/// <param name="loginId"></param>
|
|
/// <param name="LocateName"></param>
|
|
/// <param name="isPack"></param>
|
|
/// <returns></returns>
|
|
public string CheckMoveOrderLocateName(string loginId, string LocateName, string orderNo)
|
|
{
|
|
List<WmsMoveDetail> wmsMoveDetails = repository.CheckMoveOrderLocate(orderNo);
|
|
|
|
if (wmsMoveDetails.Count == 0)
|
|
{
|
|
return "[" + orderNo + "]:订单明细不存在,请检查!";
|
|
}
|
|
string dest_zone = wmsMoveDetails[0].DestZoneId.ToString();
|
|
|
|
List<SysLocate> sysLocates = repository.CheckLocateStatus(LocateName);
|
|
|
|
if (sysLocates.Count == 0)
|
|
{
|
|
return "[" + LocateName + "]:库位不存在,请检查!";
|
|
}
|
|
|
|
///大于1 ,说明移动单订单中设置了移动目的地库区,判断扫描的库位是否是指定库区
|
|
if (dest_zone.Length > 1)
|
|
{
|
|
if (sysLocates[0].ZoneId.ToString() == dest_zone)
|
|
{
|
|
//扫描库位在订单要求库区中
|
|
}
|
|
else
|
|
{
|
|
return "[" + LocateName + "]:库位不在订单库区中,请检查!";
|
|
}
|
|
}
|
|
|
|
List<SysStock> sysStocks = repository.CheckUseStockCapacity(LocateName);
|
|
if (sysStocks.Count == 0)
|
|
{
|
|
return "OK";
|
|
}
|
|
if (sysStocks[0].LocateNum > sysLocates[0].LocateCapacity)
|
|
{
|
|
return "[" + LocateName + "]:库位容量已满,请检查!";
|
|
}
|
|
|
|
|
|
return "OK";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 单据移动单 箱条码判断
|
|
/// </summary>
|
|
/// <param name="loginId"></param>
|
|
/// <param name="cartonNo"></param>
|
|
/// <param name="locateName"></param>
|
|
/// <returns></returns>
|
|
public string CheckCartonMoveOrder(string loginId, string cartonNo, string locateName, string orderNo)
|
|
{
|
|
//判断箱条码来源是否满足订单
|
|
List<WmsMoveDetail> wmsMoveDetails = repository.CheckMoveOrderLocate(orderNo);
|
|
|
|
if (wmsMoveDetails.Count == 0)
|
|
{
|
|
return "[" + orderNo + "]:订单明细不存在,请检查!";
|
|
}
|
|
string scr_zone = wmsMoveDetails[0].SrcZoneId.ToString();
|
|
|
|
//判断箱条码是否可用
|
|
SysStock cartonInfo = repository.CheckCartonNoStatus(cartonNo);
|
|
|
|
List<WmsMoveDetail> ifnum = wmsMoveDetails.Where(a => a.PartId == cartonInfo.PartId).ToList();
|
|
decimal partno = 0;
|
|
if (ifnum.Count > 0)
|
|
{
|
|
if (ifnum[0].Qty == ifnum[0].OutQty)
|
|
{
|
|
return "[" + cartonNo + "]:箱条码零件在订单中已完成操作,请检查!";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return "[" + cartonNo + "]:箱条码零件不在订单明细中,请检查!";
|
|
}
|
|
|
|
if (scr_zone.Length > 1 && cartonInfo != null)
|
|
{
|
|
if (cartonInfo.ZoneId.ToString() != scr_zone)
|
|
{
|
|
return "[" + cartonNo + "]:箱条码不在订单要求来源的库区,请检查!";
|
|
}
|
|
}
|
|
if (cartonInfo == null)
|
|
{
|
|
return "[" + cartonNo + "]:条码不存在,请检查!";
|
|
}
|
|
if (cartonInfo.Enabled.Equals("N"))
|
|
{
|
|
return "[" + cartonNo + "]:箱条码已冻结,无法操作!";
|
|
}
|
|
//if (cartonInfo.Status != (int)StockStatus.INSTOCKED)
|
|
//{
|
|
// return "[" + cartonNo + "]:该条码为" + cartonInfo.StockStatus + "状态,请检查!";
|
|
//}
|
|
|
|
|
|
|
|
|
|
//获取库位表库位与绑定零件信息
|
|
List<SysLocate> sysLocates = repository.CheckLocateStatus(locateName);
|
|
if (sysLocates.Count == 0)
|
|
{
|
|
return "[" + locateName + "]:该库位不存在,请检查!";
|
|
}
|
|
if (sysLocates[0].LocateId == cartonInfo.LocateId)
|
|
{
|
|
return "[" + locateName + "]:来源库位与目标库位一致,请检查!";
|
|
}
|
|
int move_status = 50;
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.BASICS_LOCATE)//基础库
|
|
{
|
|
move_status = (int)WmsEnumUtil.StockStatus.INSTOCKED;
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.MANEUVER_LOCATE)//机动库位
|
|
{
|
|
move_status = (int)WmsEnumUtil.StockStatus.INSTOCKED;
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE)//动态组合库位
|
|
{
|
|
move_status = (int)WmsEnumUtil.StockStatus.INSTOCKED;
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.LINE_LOCATE)//线边库位
|
|
{
|
|
move_status = (int)WmsEnumUtil.StockStatus.ONLINED;
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.COLLECT_LOCATE)//收货库位
|
|
{
|
|
move_status = (int)WmsEnumUtil.StockStatus.INSTOCKED;
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.NC_LOCATE)//NC库位
|
|
{
|
|
move_status = (int)WmsEnumUtil.StockStatus.NC_INSTOCK;
|
|
}
|
|
//if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.TRANSIT_LOCATE)//在途库位
|
|
//{
|
|
// move_status = 50;
|
|
//}
|
|
//if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.RETURN_LOCATE)//退货库位
|
|
//{
|
|
// move_status = 50;
|
|
//}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.OUTSOURCE_LOCATE)//委外库位
|
|
{
|
|
move_status = (int)WmsEnumUtil.StockStatus.OUTSTOCKED;
|
|
}
|
|
if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.OFFLINEVIRTUAL_LOCATE)//成品下线虚拟库位
|
|
{
|
|
move_status = (int)WmsEnumUtil.StockStatus.INSTOCKED;
|
|
}
|
|
|
|
List<SysStock> UseStocks = repository.CheckUseStockCapacity(locateName); //当前库位已经使用库存列表
|
|
decimal QtySum = UseStocks.Sum(a => a.Qty);//已经使用库存总量
|
|
|
|
SysStock sysStock = repository.CheckCartonNoStatus(cartonNo);
|
|
if (sysLocates[0].LocateCapacity > QtySum + sysStock.Qty)
|
|
{
|
|
//有库容
|
|
//if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.BASICS_LOCATE)
|
|
//{
|
|
// // TODO 此处需要重新写逻辑
|
|
// if (sysLocates.Where(a => a.PartId == cartonInfo.PartId).Count() > 0)
|
|
// {
|
|
// //基础库位正确 ,有库容,正常入库
|
|
// List<SysStock> sysStocks = new List<SysStock>();
|
|
// sysStocks.Add(sysStock);
|
|
// return repository.UpdateStockStatusByMoveOrder(sysStocks, sysLocates, move_status, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId, orderNo);
|
|
// }
|
|
// {
|
|
// return "库位[" + locateName + "]与条码零件[" + cartonInfo.PartNo + "]不匹配!";
|
|
// }
|
|
//}
|
|
//if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.MANEUVER_LOCATE)
|
|
//{
|
|
// //机动库位正确 ,有库容,正常入库
|
|
// if (UseStocks.Where(a => a.PartId == cartonInfo.PartId).Count() >= 0)
|
|
// {
|
|
// //基础库位正确 ,有库容,正常入库
|
|
// List<SysStock> sysStocks = new List<SysStock>();
|
|
// sysStocks.Add(sysStock);
|
|
// return repository.UpdateStockStatusByMoveOrder(sysStocks, sysLocates, move_status, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId, orderNo);
|
|
// }
|
|
// else
|
|
// {
|
|
// return "库位[" + locateName + "]与条码零件[" + cartonInfo.PartNo + "]不匹配!";
|
|
// }
|
|
//}
|
|
//if (sysLocates[0].LocateType == (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE)
|
|
//{
|
|
//动态组合库库位正确 ,有库容,正常入库
|
|
List<SysStock> sysStocks = new List<SysStock>();
|
|
sysStocks.Add(sysStock);
|
|
return repository.UpdateStockStatusByMoveOrder(sysStocks, sysLocates, move_status, (int)WmsEnumUtil.TransType.MOVESTOCK, loginId, orderNo);
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
return "[" + locateName + "]:库位容量不足,请检查!";
|
|
}
|
|
}
|
|
|
|
public string ChangeMoveHeaderStatus(string loginId, string orderNo)
|
|
{
|
|
List<WmsMoveDetail> wmsMoveDetails = repository.CheckMoveOrderLocate(orderNo);
|
|
|
|
int statusSum = wmsMoveDetails.Sum(a => a.ItemStatus);
|
|
|
|
if (wmsMoveDetails.Count * (int)WmsEnumUtil.MoveOrderStatus.COMPLETED == statusSum)
|
|
{
|
|
repository.ChangeMoveHeaderStatus(loginId, orderNo);
|
|
}
|
|
|
|
return "OK";
|
|
}
|
|
}
|
|
}
|