using System; using HH.WCS.Mobox3.RiDong.dto; using HH.WCS.Mobox3.RiDong.generalMethod; using HH.WCS.Mobox3.RiDong.models; using HH.WCS.Mobox3.RiDong.util; namespace HH.WCS.Mobox3.RiDong.wms; /// /// 容器帮助类 /// internal static class ContainerHelper { /// /// enable 让托盘允许被出库计算到,同时增加量表数据 /// /// /// internal static void Enable(string cntr, string loc) { var db = new SqlHelper().GetInstance(); var cntrInfo = db.Queryable().Where(a => a.S_CODE == cntr).First(); //获取仓库量表 //获取物理库区 //获取逻辑库区 if (cntrInfo != null) { var querySqlSugarClient = AdoSqlMethod.QuerySqlSugarClient(); try { querySqlSugarClient.BeginTran(); //防止接口重复调用,量表重复增加 if (cntrInfo.C_ENABLE == 'N') { cntrInfo.C_ENABLE = 'Y'; AdoSqlMethod.UpdateFirstTran(querySqlSugarClient, cntrInfo, p => new { p.C_ENABLE, p.T_MODIFY }); var cirList = db.Queryable().Where(a => a.S_CNTR_CODE == cntr).ToList(); if (cirList.Count > 0) { var moBoxInputDto = new MoBoxInputDto(); moBoxInputDto.op_type = 5; var moBoxInputDto2 = new MoBoxInputDto(); moBoxInputDto2.op_type = 6; cirList.ForEach(a => { var moBoxInputDetailDto = new MoBoxInputDetailDto(); var moBoxInputDetailDto2 = new MoBoxInputDetailDto(); moBoxInputDetailDto.item_code = a.S_ITEM_CODE; moBoxInputDetailDto.item_name = a.S_ITEM_NAME; moBoxInputDetailDto.qty = Convert.ToInt32(a.F_QTY); moBoxInputDetailDto.wh_code = Settings.WHCode; moBoxInputDetailDto.area_code = Settings.AreaCode; moBoxInputDetailDto2.item_code = a.S_ITEM_CODE; moBoxInputDetailDto2.item_name = a.S_ITEM_NAME; moBoxInputDetailDto2.qty = Convert.ToInt32(a.F_QTY); moBoxInputDetailDto2.area_code = Settings.AreaCode; moBoxInputDetailDto2.wh_code = Settings.WHCode; moBoxInputDto.item_info.Add(moBoxInputDetailDto); moBoxInputDto2.item_info.Add(moBoxInputDetailDto2); }); // 调用第三方接口 ThirdlyPortMethod.CallMoboxWMSAddChange("/api/wms/inventory/AddChange", moBoxInputDto); ThirdlyPortMethod.CallMoboxWMSAddChange("/api/wms/inventory/AddChange", moBoxInputDto2); } } querySqlSugarClient.CommitTran(); } catch (Exception ex) { Console.WriteLine(ex.Message); querySqlSugarClient.RollbackTran(); } } } /// /// 根据容器号获取容器信息 /// /// /// /// internal static Container GetCntr(string cntr, string type) { // 查询托盘是否存在 var container = AdoSqlMethod.QueryFirst(p => p.S_CODE == cntr); // 判断容器是否存在 if (container == null) { var model = new Container { S_CODE = cntr, S_TYPE = type }; // 判断是否创建成功 if (AdoSqlMethod.AddFirst(model)) { container = model; LogHelper.Info($"根据托盘号:{cntr},查询容器表中数据,未查询到数据,新键容器数据为:【容器编号:{cntr},容器类型:{type}】,时间点:{DateTime.Now}", "入库流程日志"); } } else { LogHelper.Info( $"根据托盘号:{cntr},查询容器表中数据,查询到的数据为:【容器编码:{container.S_CODE},容器状态('Y'- 可用,'N'- 不可用):{container.C_ENABLE}," + $"容器数量:{container.N_DETAIL_COUNT}】,容器的锁状态1(0 - 无锁,1 - 入库锁,2 - 出库锁,3 - 其他锁):{container.N_LOCK_STATE}," + $"容器的锁状态2:{container.S_LOCK_STATE}】,时间点:{DateTime.Now}", "入库流程日志"); } // 返回托盘(容器)信息 return container; } }