林豪 左 2 年 前
コミット
2b577d4593

+ 2 - 2
wms.api/Controllers/FjController.cs

@@ -550,9 +550,9 @@ namespace wms.api.Controllers
         ///  分拣自动生成货位信息
         /// </summary>
         [HttpPost]
-        public SRes EnteMainLine(FJEnteMainLineRequest reqDto)
+        public SRes<SRes> EnteMainLine(FJEnteMainLineRequest reqDto)
         {
-            return ConcurrencyReqControl<FJEnteMainLineRequest, SRes>(lockFJEnteMainLineRequest, "EnteMainLine" + reqDto.equNo, reqDto.equNo, reqDto, _fjService.EnteMainLine);
+            return ConcurrencyReqControl<FJEnteMainLineRequest, SRes<SRes>>(lockFJEnteMainLineRequest, "EnteMainLine" + reqDto.equNo, reqDto.equNo, reqDto, _fjService.EnteMainLine);
         }
     }
 }

+ 2 - 2
wms.api/appsettings.json

@@ -8,7 +8,7 @@
   "AllowedHosts": "*",
   "ConnectionConfigs": [
     {
-      "ConnectionString": "Data Source=10.30.44.50;User ID=sa;Password=P@ssw0rd;Initial Catalog=Ztest",
+      "ConnectionString": "Data Source=LAPTOP-D9OEIS1K\\SQLEXPRESS;User ID=sa;Password=7166766;Initial Catalog=hjwms",
       //"ConnectionString": "Data Source=.;User ID=sa;Password=Aa123456;Initial Catalog=WMS_ZT_01HJ",
       "DbType": 1,
       "ConfigId": "hj",
@@ -39,7 +39,7 @@
       "IsAutoCloseConnection": true
     }
   ],
-  "CSRedisConnectString": "127.0.0.1[:6379],defaultDatabase=0",
+  "CSRedisConnectString": "127.0.0.1[:6379],defaultDatabase=6",
   "Serilog": {
     "MinimumLevel": {
       "Default": "Debug", //最小记录日志级别

+ 8 - 2
wms.dto/const/FJEnumClass.cs

@@ -17,7 +17,7 @@ namespace wms.dto
         ///  一楼人工入空托盘
         /// </summary>
         [Description("一楼人工入空托盘")]
-        OneLayerManualPallets = 1, 
+        OneLayerManualPallets = 1,
 
         /// <summary>
         ///  一楼自动入空托盘
@@ -29,7 +29,13 @@ namespace wms.dto
         ///  手动出库
         /// </summary>
         [Description("手动出库")]
-        TaskBusType_FJ_ManualOut = 2
+        TaskBusType_FJ_ManualOut = 3,
+
+        /// <summary>
+        ///  二楼组盘
+        /// </summary>
+        [Description("二楼组盘")]
+        二楼组盘 = 4
     }
 
     /// <summary>

+ 1 - 1
wms.service/IService/IFJService.cs

@@ -107,6 +107,6 @@ namespace wms.service.IService
         /// </summary>
         /// <param name="reqDto"></param>
         /// <returns></returns
-        public SRes EnteMainLine(FJEnteMainLineRequest reqDto);
+        public SRes<SRes> EnteMainLine(FJEnteMainLineRequest reqDto);
     }
 }

+ 1 - 0
wms.service/Service/DBService.cs

@@ -124,6 +124,7 @@ namespace wms.service.Service
             db1.CodeFirst.InitTables<sqlsugar.model.fj.BillLog>();
             db1.CodeFirst.InitTables<sqlsugar.model.fj.BillPushinfo>();
             db1.CodeFirst.InitTables<sqlsugar.model.fj.BillSpoolTrans>();
+            db1.CodeFirst.InitTables<sqlsugar.model.fj.BillMachinfo>();
         }
 
         public void InitSxDB()

+ 135 - 4
wms.service/Service/FJService.cs

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

+ 11 - 11
wms.sqlsugar/model/fj/BillMachinfo.cs

@@ -1,4 +1,4 @@
-using System; 
+using System;
 using System.Collections.Generic;
 using SqlSugar;
 
@@ -9,12 +9,12 @@ namespace wms.sqlsugar.model.fj
     /// </summary>
     [Tenant("fj")]
     [SugarTable("Bill_MachInfo")]
-    public partial class BillMachinfo:BaseModel
-    { 
+    public partial class BillMachinfo : BaseModel
+    {
         /// <summary> 
         /// 仓库id
         /// </summary> 
-        [SugarColumn(ColumnDataType ="bigint" ,  IsNullable = false )]
+        [SugarColumn(ColumnDataType = "bigint", IsNullable = false)]
         public long WarehouseId { get; set; }
 
         /// <summary> 
@@ -38,43 +38,43 @@ namespace wms.sqlsugar.model.fj
         /// <summary> 
         /// WareAreaId
         /// </summary> 
-        [SugarColumn(ColumnDataType ="bigint" ,  IsNullable = false )]
+        [SugarColumn(ColumnDataType = "bigint", IsNullable = false)]
         public long WareAreaId { get; set; }
 
         /// <summary> 
         /// 是否停止
         /// </summary> 
-        [SugarColumn(ColumnDataType ="int" ,  IsNullable = false )]
+        [SugarColumn(ColumnDataType = "int", IsNullable = false)]
         public int IsStop { get; set; }
 
         /// <summary> 
         /// 机台号
         /// </summary> 
-        [SugarColumn(ColumnDataType ="nvarchar" , Length = 50  , IsNullable = false )]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = false)]
         public string MachNo { get; set; }
 
         /// <summary> 
         /// 名称
         /// </summary> 
-        [SugarColumn(ColumnDataType ="nvarchar" , Length = 100  , IsNullable = false )]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 100, IsNullable = false)]
         public string Name { get; set; }
 
         /// <summary> 
         /// 机台组
         /// </summary> 
-        [SugarColumn(ColumnDataType ="nvarchar" , Length = 50  , IsNullable = false )]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = false)]
         public string GrpCode { get; set; }
 
         /// <summary> 
         /// AGV托盘位
         /// </summary> 
-        [SugarColumn(ColumnDataType ="nvarchar" , Length = 50  , IsNullable = false )]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = false)]
         public string Station { get; set; }
 
         /// <summary> 
         /// 左/右手车
         /// </summary> 
-        [SugarColumn(ColumnDataType ="nvarchar" , Length = 50  , IsNullable = false )]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = false)]
         public string Direction { get; set; }
         /// <summary>
         /// 帘线工序工单号

+ 10 - 10
wms.sqlsugar/model/fj/BillSpoolTrans.cs

@@ -18,43 +18,43 @@ namespace wms.sqlsugar.model.fj
         /// <summary>
         /// 分拣库仓库编码
         /// </summary>
-        [SugarColumn(ColumnDataType = "nvarchar", Length = 50)]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
         public string WarehouseCode { get; set; }
 
         /// <summary>
         /// 分拣库序号
         /// </summary>
-        [SugarColumn(ColumnDataType = "int")]
+        [SugarColumn(ColumnDataType = "int", IsNullable = true)]
         public int WarehouseSort { get; set; }
 
         /// <summary>
         /// 南北向
         /// </summary>
-        [SugarColumn(ColumnDataType = "nvarchar", Length = 50)]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
         public string Direct { get; set; }
 
         /// <summary>
         /// 输送线号
         /// </summary>
-        [SugarColumn(ColumnDataType = "int")]
+        [SugarColumn(ColumnDataType = "int", IsNullable = true)]
         public int ConveyorSort { get; set; }
 
         /// <summary>
         /// 位置序号
         /// </summary>
-        [SugarColumn(ColumnDataType = "int")]
+        [SugarColumn(ColumnDataType = "int", IsNullable = true)]
         public int LocSort { get; set; }
 
         /// <summary>
         /// 湿拉物料编码
         /// </summary>
-        [SugarColumn(ColumnDataType = "nvarchar", Length = 50)]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
         public string MatCode { get; set; }
 
         /// <summary>
         /// 异常盘类型
         /// </summary>
-        [SugarColumn(ColumnDataType = "int")]
+        [SugarColumn(ColumnDataType = "int", IsNullable = true)]
         public int ErrType { get; set; }
 
         /// <summary>
@@ -66,13 +66,13 @@ namespace wms.sqlsugar.model.fj
         /// <summary>
         /// 湿拉工序订单号
         /// </summary>
-        [SugarColumn(ColumnDataType = "nvarchar", Length = 50)]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
         public string BillCode { get; set; }
 
         /// <summary>
-        /// 生产订单号
+        ///  生产订单号
         /// </summary>
-        [SugarColumn(ColumnDataType = "nvarchar", Length = 50)]
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
         public string WorkOrder { get; set; }
     }
 }