|
@@ -1,4 +1,5 @@
|
|
|
using AutoMapper;
|
|
|
+using Castle.Core.Internal;
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
using Newtonsoft.Json;
|
|
|
using SqlSugar;
|
|
@@ -704,17 +705,24 @@ namespace wms.service.Service
|
|
|
|
|
|
#region 主线
|
|
|
|
|
|
+ #region 分库
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 工字轮/芯股进入主线扫码
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- public SRes EnteMainLine(FJEnteMainLineRequest reqDto)
|
|
|
+ public SRes<SRes> EnteMainLine(FJEnteMainLineRequest reqDto)
|
|
|
{
|
|
|
- var res = new SRes();
|
|
|
+ var res = new SRes<SRes>();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- RedisHelper.LPush(nameof(EnteMainLine), reqDto.IShapedWheelCodes);
|
|
|
+ //RedisHelper.LPush(nameof(EnteMainLine), reqDto.IShapedWheelCodes);
|
|
|
+ foreach (var item in reqDto.IShapedWheelCodes)
|
|
|
+ {
|
|
|
+ var res1 = AllocationWarehouseSort(item);
|
|
|
+ res.ResDataList.Add(res);
|
|
|
+ }
|
|
|
res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode();
|
|
|
res.ResMsg = ResponseStatusCodeEnum.Sucess.GetDescription();
|
|
|
}
|
|
@@ -729,7 +737,7 @@ namespace wms.service.Service
|
|
|
/// <summary>
|
|
|
/// 分配分拣库
|
|
|
/// </summary>
|
|
|
- /// <param name="code"></param>
|
|
|
+ /// <param name="code">工字轮条码</param>
|
|
|
/// <returns></returns>
|
|
|
public SRes AllocationWarehouseSort(string code)
|
|
|
{
|
|
@@ -737,6 +745,44 @@ namespace wms.service.Service
|
|
|
var res = new SRes();
|
|
|
//找到码垛工字轮信息
|
|
|
var spoolTrans = _billSpoolTransrepository.GetSingle(p => p.ConBarCode == code);
|
|
|
+ if (spoolTrans == null)
|
|
|
+ {
|
|
|
+ //创建容器信息
|
|
|
+ var cont = new BillSpoolTrans
|
|
|
+ {
|
|
|
+ ConBarCode = code,
|
|
|
+ WarehouseCode = null,
|
|
|
+ AddWho = "WMS",
|
|
|
+ AddTime = DateTime.Now,
|
|
|
+ WorkOrder = "20230210"
|
|
|
+ };
|
|
|
+ //加载新的容器信息
|
|
|
+ if (!_billSpoolTransrepository.Insert(cont))
|
|
|
+ {
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
|
|
|
+ res.ResMsg = "RFID载具初始化失败";
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ spoolTrans = _billSpoolTransrepository.GetSingle(p => p.ConBarCode == code);
|
|
|
+ }
|
|
|
+ if (!spoolTrans.WarehouseCode.IsNullOrEmpty())
|
|
|
+ {
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
|
|
|
+ res.ResMsg = "已完成分库";
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ //验证容器是否存在
|
|
|
+ res = _mapper.Map<CopperLineResponse>(CheckContinfo(code, FJContainerType.ContainerType_IShapedWheel));
|
|
|
+ if (res.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode()) return res;
|
|
|
+
|
|
|
+ //验证工字轮是否有未结束的任务
|
|
|
+ res = _mapper.Map<CopperLineResponse>(CheckNoFinishTask(code));
|
|
|
+ if (res.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode()) return res;
|
|
|
+
|
|
|
+ //验证是否存在库存信息
|
|
|
+ res = _mapper.Map<CopperLineResponse>(CheckInvnow(code));
|
|
|
+ if (res.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode()) return res;
|
|
|
|
|
|
//通过订单找到对应的机台信息
|
|
|
var maclist = _basemachinforepository.AsQueryable().Where(p => p.WorkOrder == spoolTrans.WorkOrder);
|
|
@@ -755,10 +801,14 @@ namespace wms.service.Service
|
|
|
int sort = int.Parse(warelist.First().Substring(0, 1));
|
|
|
_billSpoolTransrepository.UpdateModelColumns(p => new BillSpoolTrans()
|
|
|
{
|
|
|
+ WarehouseCode = warelist.First(),
|
|
|
WarehouseSort = sort,
|
|
|
Direct = warelist.First().Substring(1, 1),
|
|
|
EditTime = DateTime.Now
|
|
|
}, p => p.ConBarCode == spoolTrans.ConBarCode);
|
|
|
+ spoolTrans.WarehouseCode = warelist.First();
|
|
|
+ spoolTrans.WarehouseSort = sort;
|
|
|
+ spoolTrans.Direct = warelist.First().Substring(1, 1);
|
|
|
}
|
|
|
else //当前订单对应多个仓库信息
|
|
|
{
|
|
@@ -773,6 +823,69 @@ namespace wms.service.Service
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //保存条码信息 空托盘条码即条码表条码
|
|
|
+ //TODO:此处条码号应当使用材料号,测试时使用条码
|
|
|
+ var barinfo = _billInvinitrepository.GetSingle(p => p.InvBarCode == code);
|
|
|
+ if (barinfo == null)
|
|
|
+ {
|
|
|
+ var warehosue = _basewarehouserepository.GetSingle(p => p.Code == spoolTrans.WarehouseCode);
|
|
|
+ barinfo = new BillInvinit()
|
|
|
+ {
|
|
|
+ InvBarCode = code,
|
|
|
+ WarehouseId = warehosue.Id,
|
|
|
+ ContGrpId = IdFactory.NewId(),
|
|
|
+ ContGrpBarCode = code,
|
|
|
+ ExecStateCode = FJInvLockState.InvState_Normal.ToString(),
|
|
|
+ ExecDocsTypeCode = FJDocType.DocType_FJ_EmptyPalletsStockIn.GetHashCode().ToString(),
|
|
|
+ InvInOut = FJInvInOutType.In.GetHashCode(),
|
|
|
+ ExecWho = "WCS",
|
|
|
+ EditTime = DateTime.Now,
|
|
|
+ InvStateCode = FJInvState.InvEcecState_BuildUp.ToString(),
|
|
|
+ SuppCode = "",
|
|
|
+ Size = 1,
|
|
|
+ MatCode = spoolTrans.MatCode,
|
|
|
+ AddTime = DateTime.Now,
|
|
|
+ };
|
|
|
+
|
|
|
+ barinfo = _billInvinitrepository.InsertReturnEntity(barinfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //生成库存信息-分解方法
|
|
|
+ var createStockRes = CreateStock(new List<BillInvinit>() { barinfo }, code, FJContainerType.ContainerType_Pallet);
|
|
|
+ if (createStockRes.ResCode != 200)
|
|
|
+ {
|
|
|
+ res.ResCode = createStockRes.ResCode;
|
|
|
+ res.ResMsg = createStockRes.ResMsg;
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ //开始生成WCS
|
|
|
+
|
|
|
+ var createStockInWcsTaskReqest = new FJCreateStockInWcsTaskRequest()
|
|
|
+ {
|
|
|
+ BusType = FJTaskBusType.二楼组盘.GetDescription(),
|
|
|
+ ContGrpBarCode = code,
|
|
|
+ ContGrpId = createStockRes.ResDataList.First().ContGrpId,
|
|
|
+ Qty = 1,
|
|
|
+ WarehouseCode = spoolTrans.WarehouseCode,
|
|
|
+ Floor = 2,
|
|
|
+ };
|
|
|
+
|
|
|
+ //下发wcs任务 - 分解方法
|
|
|
+ var taskres = CreateStockInWcsTask(createStockInWcsTaskReqest);
|
|
|
+ if (taskres.ResCode != 200)
|
|
|
+ {
|
|
|
+ res.ResCode = taskres.ResCode;
|
|
|
+ res.ResMsg = taskres.ResMsg;
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ //生成流水数据-分解方法
|
|
|
+ CreateInvFlow(createStockRes.ResDataList);
|
|
|
+ RedisHelper.Set($"AllocationWarehouseSort:{code}", JsonConvert.SerializeObject(new MainlineDiversion()
|
|
|
+ {
|
|
|
+ TaskId = taskres.ResData.ID,
|
|
|
+ WarehouseCode = spoolTrans.WarehouseCode
|
|
|
+ }));
|
|
|
return res;
|
|
|
}
|
|
|
|
|
@@ -795,6 +908,8 @@ namespace wms.service.Service
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ #endregion 分库
|
|
|
+
|
|
|
#endregion 主线
|
|
|
|
|
|
#endregion 满轮同WCS交互
|
|
@@ -1825,4 +1940,20 @@ namespace wms.service.Service
|
|
|
|
|
|
#endregion 完成/取消任务
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 主线分流
|
|
|
+ /// </summary>
|
|
|
+ public class MainlineDiversion
|
|
|
+ {
|
|
|
+ /// <summary>
|
|
|
+ /// 任务号
|
|
|
+ /// </summary>
|
|
|
+ public int TaskId { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 仓库号
|
|
|
+ /// </summary>
|
|
|
+ public string WarehouseCode { get; set; }
|
|
|
+ }
|
|
|
}
|