hudong
2025-06-26 076b32f9fa1dc8dc39ca345b2b94a58c8e50040e
api/WmsSpaHelper.cs
@@ -1750,15 +1750,21 @@
            using (var db = new SqlHelper<object>().GetInstance())
            {
                Location endloc = new Location();
                var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE == model.start).First();
                var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE.Trim() == model.cntr_code).First();
                if (hwbd!=null)
                {
                    endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE).First();
                    endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE.Trim()).First();
                    if (endloc?.N_LOCK_STATE != 0)
                    {
                        result.resultCode = 3;
                        result.resultMsg = $"终点库位已锁/不存在";
                        return result;
                    }
                }
                else
                {
                    result.resultCode = 3;
                    result.resultMsg = $"托盘找不到货位";
                    result.resultMsg = $"{model.cntr_code}托盘找不到货位";
                    return result;
                }
                   
@@ -2019,26 +2025,42 @@
                        if (!string.IsNullOrEmpty(model.cntr_code))
                        {
                            #region MyRegion
                            //var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray();
                            //var S_LOC_CODElist =   db.Queryable<LocCntrRel>().Where(s=>!list.Contains(s.S_CNTR_CODE)).Select(s=>s.S_LOC_CODE).ToArray();
                            //start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).First();
                            var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE.Trim() == model.cntr_code).First();
                            if (hwbd!=null)
                            {
                                end = db.Queryable<Location>().Where(s => s.S_CODE == hwbd.S_LOC_CODE.Trim()).First();
                            }
                            else
                            {
                            //// 获取所有被占用的容器编码
                            //var usedContainerCodes = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToList();
                                #region MyRegion
                                //var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray();
                                //var S_LOC_CODElist =   db.Queryable<LocCntrRel>().Where(s=>!list.Contains(s.S_CNTR_CODE)).Select(s=>s.S_LOC_CODE).ToArray();
                                //start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).First();
                            // 获取未被占用的容器对应的货位编码
                            var availableLocationCodes = db.Queryable<LocCntrRel>()
                                .Select(s => s.S_LOC_CODE)
                                .ToList();
                                //// 获取所有被占用的容器编码
                                //var usedContainerCodes = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToList();
                                #endregion
                                // 获取未被占用的容器对应的货位编码
                                var availableLocationCodes = db.Queryable<LocCntrRel>()
                                    .Select(s => s.S_LOC_CODE)
                                    .ToList();
                            // 获取第一个可用货位(如果没有则返回null)
                            end = db.Queryable<Location>()
                               .Where(it => !availableLocationCodes.Contains(it.S_CODE) && it.S_AREA_CODE == "HJQ")
                               .ToList().FirstOrDefault();
                                if (end!=null)
                                {
                                    TN_Container_Code tN_Container_Code = new TN_Container_Code();
                                    tN_Container_Code.S_CNTR_CODE= model.cntr_code;
                                    tN_Container_Code.S_LOC_CODE = end.S_CODE;
                                    var sss = db.Insertable<TN_Container_Code>(tN_Container_Code).ExecuteCommand();
                                }
                            #endregion
                            }
                        }
                        else
                        {
@@ -2105,16 +2127,25 @@
        {
            var result = new SimpleResult();
            // var db = new SqlHelper<object>().GetInstance();
            using (var db = new SqlHelper<object>().GetInstance())
            {
                try
                {
                    result.resultMsg = "成功";
                    var start = "";
                    var startloc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == model.cntr_code).First();
                    if (startloc!=null)
                    {
                        start = startloc.S_LOC_CODE;
                    }
                    else
                    {
                        result.resultMsg = "出库单号不能为空";
                        result.resultCode = 1;
                        return result;
                    }
                        result.resultMsg = "成功";
                    result.resultCode = 0;
                    if (string.IsNullOrEmpty(model.arrival_no))
                    {
@@ -2137,27 +2168,27 @@
                    //根据不同出库类型 回调sap
                    if (po.S_OUT_TYPE == "冲销出库")
                    {
                        result = await CXAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start);
                        result = await CXAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start);
                    }
                    else
                    if (po.S_OUT_TYPE == "出库")//普通出库
                    {
                        LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}");
                        result = await AddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start);
                        result = await AddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start);
                    }
                    else if (po.S_OUT_TYPE == "计划外发料出库")
                    {
                        result = await jhwtlAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start);
                        result = await jhwtlAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start);
                    }
                    else if (po.S_OUT_TYPE == "成本中心出库")
                    {
                        result = await CBAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start);
                        result = await CBAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start);
                    }
                    //通用接口 对容器货品的删减 和生成回库单 都要用的接口
                    result = await TYAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.IsHK, model.start, po.S_OUT_TYPE, model.cntr_type);
                    result = await TYAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.IsHK, start, po.S_OUT_TYPE, model.cntr_type);
                    if (result.resultCode == 1)
                    {
                    {
                        return result;
                    }
                    #region 升降量
@@ -2294,9 +2325,10 @@
                //回参物料信息
                List<OutboundRecord> records = new List<OutboundRecord>();
                var pz = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == arrival_no).First();
                var pzlist = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == arrival_no).ToList();
                foreach (var item in MaterList)
                {
                    var pz=pzlist.Where(s=>s.S_WLBM== item.item_code).FirstOrDefault();
                    // 插入到托盘明细表
                    var cntr = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr_code).ToList();
                    if (cntr.Count() > 0)
@@ -2317,7 +2349,7 @@
                            else
                            {
                                db.Updateable(cir).UpdateColumns(it => new { it.F_QTY, it.S_CNTR_TYPE, it.F_ALLOC_QTY, it.T_MODIFY }).ExecuteCommand();
                                //添加回库作业
                            }
                        }
                        else
@@ -2366,15 +2398,24 @@
                            return result;
                        }
                        Location endloc = new Location();
                        var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE == cntr_code).First();
                        LogHelper.Info($"获取托盘信息{cntr_code}容器");
                        var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE.Trim() == cntr_code).First();
                        if (hwbd != null)
                        {
                            endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE).First();
                            endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE.Trim()).First();
                            if (endloc?.N_LOCK_STATE != 0)
                            {
                                result.resultCode = 3;
                                result.resultMsg = $"终点库位已锁/不存在";
                                return result;
                            }
                        }
                        else
                        {
                            result.resultCode = 3;
                            result.resultMsg = $"托盘找不到货位";
                            result.resultMsg = $"{cntr_code}托盘找不到货位";
                            return result;
                        }
@@ -2387,12 +2428,12 @@
                            S_START_AREA = startinfo.S_AREA_CODE,
                            S_START_WH = startinfo.S_WH_CODE,
                            S_END_LOC = start,
                            S_END_AREA = startinfo.S_AREA_CODE,
                            S_END_WH = startinfo.S_AREA_CODE,
                            //S_END_LOC = locs?.S_START_LOC,
                            //S_END_AREA = locs?.S_START_AREA,
                            //S_END_WH = locs?.S_START_WH,
                            //S_END_LOC = start,
                            //S_END_AREA = startinfo.S_AREA_CODE,
                            //S_END_WH = startinfo.S_AREA_CODE,
                            S_END_LOC = endloc?.S_CODE,
                            S_END_AREA = endloc?.S_AREA_CODE,
                            S_END_WH = endloc?.S_WH_CODE,
                            N_TYPE = 1,
                            // S_TYPE = WMSTask.GetTypeStr(1),
@@ -4540,7 +4581,7 @@
                        }
                        string combinedIds = string.Join(",", po.Details.Select(x => x.N_ROW_NO));
                        var KEY = WCSHelper.Generate13DigitIds();
                        var s_key = db.Queryable<TN_InBounder_Sh>().Where(a => a.S_NO == model.S_NO && a.N_ROW_NO == combinedIds).First();
                        var s_key = db.Queryable<TN_InBounder_Sh>().Where(a => a.S_NO == model.S_NO && a.N_ROW_NO == combinedIds).ToList().FirstOrDefault();
                        if (s_key != null)
                        {
                            KEY = s_key.S_KEY;