| | |
| | | using System.Data; |
| | | using System.Runtime.ConstrainedExecution; |
| | | using HH.WCS.Mobox3.pinggao.core; |
| | | using static HH.WCS.Mobox3.pinggao.api.OtherModel.Putaway_Order_In; |
| | | using System.Web.Http.Results; |
| | | |
| | | namespace HH.WCS.Mobox3.pinggao.api |
| | | { |
| | |
| | | { |
| | | var result = new SimpleResult(); |
| | | //判断冲销凭证编号 是否为空 如果为空 则为冲销(审核前才能冲销,非待执行状态提示执行中不可冲销) 不为空 则为外采入库 |
| | | if ((itemwlpz.HEAD.YDLX != "351" || itemwlpz.HEAD.YDLX != "Z89") && itemwlpz.ITEM[0].FHGC == "3040") |
| | | if (itemwlpz.ITEM[0].JDBS=="H" && itemwlpz.ITEM[0].GC == "3040") |
| | | { |
| | | var po = db.Queryable<TN_Ll_Order>().Includes(a => a.Details).Where(s => s.S_NO == itemwlpz.HEAD.WLPZH).First(); |
| | | //创建出库单主子表 |
| | |
| | | } |
| | | #endregion |
| | | } |
| | | else if ((itemwlpz.HEAD.YDLX == "351" || itemwlpz.HEAD.YDLX == "Z89") && itemwlpz.ITEM[0].GC == "3040") |
| | | else if (itemwlpz.ITEM[0].JDBS == "S" && itemwlpz.ITEM[0].GC == "3040") |
| | | { |
| | | //创建入库单主子表 |
| | | var po = WMSHelper.GetInboundOrder(itemwlpz.HEAD.WLPZH); |
| | |
| | | /// <returns></returns> |
| | | internal static SimpleResult InboundOrderSorting(MPSorting model) |
| | | { |
| | | |
| | | |
| | | var result = new SimpleResult(); |
| | | foreach (var a in model.MaterList) |
| | | { |
| | |
| | | // var db = new SqlHelper<object>().GetInstance(); |
| | | 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(); |
| | | if (hwbd!=null) |
| | | { |
| | | endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE).First(); |
| | | } |
| | | else |
| | | { |
| | | result.resultCode = 3; |
| | | result.resultMsg = $"托盘找不到货位"; |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | var locinfo = db.Queryable<Location>().Where(a => a.S_CODE == model.start).First(); |
| | | |
| | | if (locinfo?.N_LOCK_STATE != 0) |
| | |
| | | S_START_LOC = model.start, |
| | | S_START_AREA = locinfo.S_AREA_CODE, |
| | | S_START_WH = locinfo.S_WH_CODE, |
| | | S_END_LOC = model.start, |
| | | S_END_LOC = endloc.S_CODE, |
| | | S_END_AREA = endloc.S_AREA_CODE, |
| | | S_END_WH = endloc.S_WH_CODE, |
| | | S_BS_NO = model.MaterList[0].arrival_no, |
| | | N_TYPE = 1, |
| | | S_TYPE = WMSTask.GetTypeStr(1), |
| | |
| | | } |
| | | else if (!string.IsNullOrEmpty(model.item_code)) |
| | | { |
| | | var khsta= db.Queryable<CGRels>().Where(cir => cir.S_CNTR_TYPE == "半托" && cir.S_ITEM_CODE == model.item_code).OrderBy(cir => cir.T_CREATE).ToList().FirstOrDefault(); |
| | | LogHelper.Info($"进来了"); |
| | | var khsta= db.Queryable<CGRels>().Where(cir => cir.S_CNTR_TYPE == "半托" && cir.S_ITEM_CODE == model.item_code).OrderBy(cir => cir.T_CREATE).ToList().FirstOrDefault(); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | if (khsta != null) |
| | | { |
| | | LogHelper.Info($"starts{khsta}"); |
| | | var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == khsta.S_CNTR_CODE).ToList().FirstOrDefault(); |
| | | LogHelper.Info($"starts1{starts12}"); |
| | | start = db.Queryable<Location>().Where(loc => loc.S_AREA_CODE == "HJQ" && loc.S_CODE == starts12.S_LOC_CODE).ToList().FirstOrDefault(); |
| | | LogHelper.Info($"starts2{start}"); |
| | | var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == khsta.S_CNTR_CODE).First(); |
| | | if (starts12==null) |
| | | { |
| | | LogHelper.Info($"{khsta.S_CNTR_CODE}容器货位不存在"); |
| | | result.resultMsg = $"{khsta.S_CNTR_CODE}容器货位不存在"; |
| | | result.resultCode = 1; |
| | | return result; |
| | | } |
| | | else |
| | | { |
| | | |
| | | model.cntr_code = starts12?.S_CNTR_CODE; |
| | | LogHelper.Info($"starts1{starts12}"); |
| | | start = db.Queryable<Location>().Where(loc => loc.S_AREA_CODE == "HJQ" && loc.S_CODE == starts12.S_LOC_CODE).ToList().FirstOrDefault(); |
| | | LogHelper.Info($"starts2{start}"); |
| | | |
| | | model.cntr_code = starts12?.S_CNTR_CODE; |
| | | } |
| | | } |
| | | else |
| | | { |
| | |
| | | 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)).ToList().FirstOrDefault(); |
| | | var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == start.S_CODE).ToList().FirstOrDefault(); |
| | | if (start!=null) |
| | | { |
| | | var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == start.S_CODE).ToList().FirstOrDefault(); |
| | | |
| | | |
| | | model.cntr_code = starts12?.S_CNTR_CODE; |
| | | model.cntr_code = starts12?.S_CNTR_CODE; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | if (start == null) |
| | | { |
| | | LogHelper.Info($"{model.cntr_code}未找到可用货位"); |
| | | result.resultMsg = $"{model.cntr_code}未找到可用货位"; |
| | | LogHelper.Info($"{model.item_code}未找到可用货位"); |
| | | result.resultMsg = $"{model.item_code}未找到可用货位"; |
| | | result.resultCode = 1; |
| | | return result; |
| | | } |
| | |
| | | catch (Exception e) |
| | | { |
| | | result.resultMsg = e.Message; |
| | | result.resultCode = 1; |
| | | db.RollbackTran(); |
| | | return result; |
| | | throw; |
| | |
| | | result.resultMsg += $"任务{locs.S_CODE}来源号{locs.S_BS_NO}找不到配盘信息"; |
| | | return result; |
| | | } |
| | | Location endloc = new Location(); |
| | | var hwbd = db.Queryable<TN_Container_Code>().Where(a => a.S_CNTR_CODE == cntr_code).First(); |
| | | if (hwbd != null) |
| | | { |
| | | endloc = db.Queryable<Location>().Where(a => a.S_CODE == hwbd.S_LOC_CODE).First(); |
| | | } |
| | | else |
| | | { |
| | | result.resultCode = 3; |
| | | result.resultMsg = $"托盘找不到货位"; |
| | | return result; |
| | | } |
| | | |
| | | //var location = db.Queryable<Location>().Where(a => a.S_CODE == locs.S_LOC_CODE).First(); |
| | | var wmsTask = new WMSTask |
| | | { |
| | |
| | | S_START_LOC = start, |
| | | S_START_AREA = startinfo.S_AREA_CODE, |
| | | S_START_WH = startinfo.S_WH_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 = locs?.S_START_LOC, |
| | | //S_END_AREA = locs?.S_START_AREA, |
| | | //S_END_WH = locs?.S_START_WH, |
| | | |
| | | N_TYPE = 1, |
| | | // S_TYPE = WMSTask.GetTypeStr(1), |
| | |
| | | if (cntr != null) |
| | | { |
| | | #region 客户指定容器表 |
| | | var cir2 = db.Queryable<CGRels>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == item.item_code && a.N_BS_ROW_NO == item.N_ROW_NO ).First(); |
| | | var cir2 = db.Queryable<CGRels>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == item.item_code ).First(); |
| | | |
| | | if (cir2 != null) |
| | | { |
| | |
| | | List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>(); |
| | | po1.Details = new List<TN_Outbound_Detail>(); |
| | | var list = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY&&s.S_ERP_WH_CODE=="4004").Select(s => s.S_ITEM_CODE).Distinct().ToArray(); |
| | | |
| | | var Sitemlist = db.Queryable<CntrItemRel>().Where(s => list.Contains(s.S_ITEM_CODE)).Select(s => s.S_ITEM_CODE).ToArray().Select(x => x.Trim()).ToArray(); ; |
| | | |
| | | var itemfirs = db.Queryable<CntrItemRel>().Where(s => list.Contains(s.S_ITEM_CODE)).ToList() ; |
| | | var Sitemlist = itemfirs.Select(s => s.S_ITEM_CODE).ToArray().Select(x => x.Trim()).ToArray(); |
| | | |
| | | |
| | | |
| | | #region list集合数量 |
| | | var extractedArrays = itemfirs.Select(s => new CustomItem |
| | | { |
| | | SITEMCODE = s.S_ITEM_CODE?.Trim() ?? string.Empty, |
| | | FQTY = s.F_QTY, |
| | | FALLOCQTY = s.F_ALLOC_QTY |
| | | }).ToList(); |
| | | |
| | | var extractedArray = extractedArrays |
| | | .GroupBy(x => x.SITEMCODE) |
| | | .Select(g => new CustomItem |
| | | { |
| | | SITEMCODE = g.Key, |
| | | FQTY = g.Sum(x => x.FQTY), |
| | | FALLOCQTY = g.Sum(x => x.FALLOCQTY) |
| | | }) |
| | | .ToList(); |
| | | |
| | | var cklist= db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.N_B_STATE==0).ToList(); |
| | | foreach (var ckdetail in cklist) |
| | | { |
| | | foreach (var item in itemfirs) |
| | | { |
| | | var itemfi = ckdetail.Details.Where(s => s.S_ITEM_CODE == item.S_ITEM_CODE).FirstOrDefault(); |
| | | if (itemfi!=null) |
| | | { |
| | | var extractedArrayone = extractedArray.Where(s => s.SITEMCODE == item.S_ITEM_CODE).FirstOrDefault(); |
| | | extractedArrayone.FQTY = (float)(extractedArrayone.FQTY - itemfi.F_QTY); |
| | | } |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | po.Details = po.Details.Where(s => Sitemlist.Contains(s.S_ITEM_CODE)).ToList(); |
| | | if (po.Details.Count() > 0) |
| | | { |
| | |
| | | { |
| | | if (a.F_QTY > a.F_ACC_D_QTY) |
| | | { |
| | | po1.Details.Add(new TN_Outbound_Detail |
| | | { |
| | | S_DO_NO = po1.S_NO, |
| | | S_AREA_CODE = "HJQ", |
| | | N_ROW_NO = a.N_ROW_NO, |
| | | S_KCDD = a.S_KCDD, |
| | | S_ITEM_CODE = a.S_ITEM_CODE, |
| | | S_ITEM_NAME = a.S_ITEM_NAME, |
| | | S_UOM = a.S_UOM, |
| | | F_QTY = a.F_QTY - a.F_ACC_D_QTY, |
| | | S_BATCH_NO = a.S_BATCH_NO, |
| | | S_SERIAL_NO = a.S_SERIAL_NO, |
| | | S_CGPZH = a.S_CGPZH, |
| | | S_ZJBM = a.S_ZJBM, |
| | | S_YLBH = a.S_YLBH, |
| | | S_ZJWLTH = a.S_ZJWLTH, |
| | | S_ZJWLMS = a.S_ZJWLMS, |
| | | S_ZHFHBS = a.S_ZHFHBS, |
| | | S_CJRQ = a.S_CJRQ, |
| | | S_LLDSCBS = a.S_LLDSCBS, |
| | | S_SCGLY = a.S_SCGLY, |
| | | S_GXH = a.S_GXH, |
| | | S_XQRQ = a.S_XQRQ, |
| | | S_YLXMH = a.S_YLXMH, |
| | | S_CGPZXMBH = a.S_CGPZXMBH, |
| | | S_ERP_WH_CODE = a.S_ERP_WH_CODE, |
| | | N_ITEM_STATE = a.N_ITEM_STATE |
| | | }); |
| | | double difference = a.F_QTY - a.F_ACC_D_QTY; |
| | | a.F_ACC_D_QTY += difference; |
| | | tN_Ll_Details.Add(a); |
| | | var ones = extractedArray.Where(s => s.SITEMCODE == a.S_ITEM_CODE).FirstOrDefault(); |
| | | ///库存数量 |
| | | ones.FQTY = ones.FQTY - ones.FALLOCQTY; |
| | | ///出库数量 |
| | | double shul = a.F_QTY - a.F_ACC_D_QTY; |
| | | if (ones.FQTY !=0) { |
| | | if (ones.FQTY - shul>=0) |
| | | { |
| | | ones.FQTY = (float)(ones.FQTY - shul); |
| | | } |
| | | else |
| | | { |
| | | shul = ones.FQTY; |
| | | ones.FQTY = 0; |
| | | } |
| | | po1.Details.Add(new TN_Outbound_Detail |
| | | { |
| | | S_DO_NO = po1.S_NO, |
| | | S_AREA_CODE = "HJQ", |
| | | N_ROW_NO = a.N_ROW_NO, |
| | | S_KCDD = a.S_KCDD, |
| | | S_ITEM_CODE = a.S_ITEM_CODE, |
| | | S_ITEM_NAME = a.S_ITEM_NAME, |
| | | S_UOM = a.S_UOM, |
| | | F_QTY = shul, |
| | | S_BATCH_NO = a.S_BATCH_NO, |
| | | S_SERIAL_NO = a.S_SERIAL_NO, |
| | | S_CGPZH = a.S_CGPZH, |
| | | S_ZJBM = a.S_ZJBM, |
| | | S_YLBH = a.S_YLBH, |
| | | S_ZJWLTH = a.S_ZJWLTH, |
| | | S_ZJWLMS = a.S_ZJWLMS, |
| | | S_ZHFHBS = a.S_ZHFHBS, |
| | | S_CJRQ = a.S_CJRQ, |
| | | S_LLDSCBS = a.S_LLDSCBS, |
| | | S_SCGLY = a.S_SCGLY, |
| | | S_GXH = a.S_GXH, |
| | | S_XQRQ = a.S_XQRQ, |
| | | S_YLXMH = a.S_YLXMH, |
| | | S_CGPZXMBH = a.S_CGPZXMBH, |
| | | S_ERP_WH_CODE = a.S_ERP_WH_CODE, |
| | | N_ITEM_STATE = a.N_ITEM_STATE |
| | | }); |
| | | double difference = shul; |
| | | a.F_ACC_D_QTY += difference; |
| | | tN_Ll_Details.Add(a); |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | db.Updateable(tN_Ll_Details).UpdateColumns(it => new { it.F_ACC_D_QTY }).ExecuteCommand(); |
| | | if (po1.Details.Count() > 0) |
| | |
| | | List<TN_Inbound_Detail> tN_Inbound_Details = new List<TN_Inbound_Detail>(); |
| | | po.Details = po.Details.Where(d => model.Wlist.Any(w => |
| | | w.S_ITEM_CODE == d.S_ITEM_CODE && |
| | | w.N_ROW_NO == d.N_ROW_NO)) |
| | | w.N_ROW_NO == d.N_ROW_NO)).OrderBy(s => s.N_ROW_NO) |
| | | .ToList(); |
| | | if (po.S_IN_TYPE == "内采入库") |
| | | { |
| | |
| | | tN_Inbound_Details.Add(item); |
| | | |
| | | } |
| | | 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(); |
| | | if (s_key!=null) |
| | | { |
| | | KEY = s_key.S_KEY; |
| | | } |
| | | NcRkDto.Root roots = new NcRkDto.Root |
| | | { |
| | | ROOT = new NcRkDto.ROOT |
| | |
| | | HEAD = new NcRkDto.HEAD |
| | | { |
| | | |
| | | KEY = po.S_NO, |
| | | KEY = KEY, |
| | | GZRQ = DateTime.Now.ToString("yyyyMMdd"), |
| | | GZRY = model.GZRY, |
| | | GZRY = model.GZRY,//GenerateTaskNo |
| | | WLPZBH = po.S_NO, |
| | | WLPZND = po.S_WLPZND |
| | | }, |
| | |
| | | var json = JsonConvert.SerializeObject(roots.ROOT); |
| | | string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml; |
| | | |
| | | // 现在 root 对象包含了您定义的假数据 |
| | | // 发送POST请求 |
| | | |
| | | LogHelper.Info($"内采收货xml数据{xml}"); |
| | | |
| | | #region MyRegion |
| | |
| | | //添加凭证记录表 |
| | | result.resultMsg = data.ROOT.ITEM.MSGDESP; |
| | | result.resultCode = data.ROOT.ITEM.MSGCODE; |
| | | //MaterialVoucher materialVoucher = new MaterialVoucher(); |
| | | if (data.ROOT.ITEM.MSGCODE == 0) |
| | | { |
| | | //materialVoucher.S_NO = model.S_NO; |
| | | //materialVoucher.S_TYPE = po.S_IN_TYPE; |
| | | //materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH; |
| | | //materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND; |
| | | //materialVoucher.STATUS = 0; |
| | | //db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand(); |
| | | |
| | | List<MaterialVoucher> materials = new List<MaterialVoucher>(); |
| | | foreach (var item in model.Wlist) |
| | | { |
| | |
| | | db.Insertable<MaterialVoucher>(materials).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | TN_InBounder_Sh tN_InBounder_Sh = new TN_InBounder_Sh(); |
| | | tN_InBounder_Sh.S_KEY = KEY; |
| | | tN_InBounder_Sh.N_ROW_NO = combinedIds; |
| | | tN_InBounder_Sh.S_NO = po.S_NO; |
| | | db.Insertable<TN_InBounder_Sh>(tN_InBounder_Sh).ExecuteCommand(); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd"); |
| | | |
| | | } |
| | | 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(); |
| | | if (s_key != null) |
| | | { |
| | | KEY = s_key.S_KEY; |
| | | } |
| | | JHWBackDto.Root myRoot = new JHWBackDto.Root |
| | | { |
| | | ROOT = new JHWBackDto.ROOT |
| | | { |
| | | HEAD = new JHWBackDto.HEAD |
| | | { |
| | | KEY = po.S_NO, |
| | | KEY = KEY, |
| | | GZRQ = GZRQ, |
| | | PZZDRQ = PZZDRQ, |
| | | YHM = po.UNAME, |
| | |
| | | |
| | | } |
| | | }; |
| | | |
| | | //回参物料信息 |
| | | List<JHWBackDto.ITEM> iTEMs = new List<JHWBackDto.ITEM>(); |
| | | foreach (var item in po.Details) |
| | |
| | | db.Insertable<MaterialVoucher>(materials).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | TN_InBounder_Sh tN_InBounder_Sh = new TN_InBounder_Sh(); |
| | | tN_InBounder_Sh.S_KEY = KEY; |
| | | tN_InBounder_Sh.N_ROW_NO = combinedIds; |
| | | tN_InBounder_Sh.S_NO = po.S_NO; |
| | | db.Insertable<TN_InBounder_Sh>(tN_InBounder_Sh).ExecuteCommand(); |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | } |
| | |
| | | tN_Inbound_Details.Add(item); |
| | | |
| | | } |
| | | 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(); |
| | | if (s_key != null) |
| | | { |
| | | KEY = s_key.S_KEY; |
| | | } |
| | | WcRkBc.Root roots = new WcRkBc.Root |
| | | { |
| | | ROOT = new WcRkBc.ROOT |
| | |
| | | { |
| | | HEAD = new WcRkBc.HEAD |
| | | { |
| | | KEY = po.S_NO, |
| | | KEY = KEY, |
| | | GZRQ = DateTime.Now.ToString("yyyyMMdd"), |
| | | GZRY = model.GZRY, |
| | | GC = po.S_FACTORY |
| | |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | |
| | | TN_InBounder_Sh tN_InBounder_Sh = new TN_InBounder_Sh(); |
| | | tN_InBounder_Sh.S_KEY = KEY; |
| | | tN_InBounder_Sh.N_ROW_NO = combinedIds; |
| | | tN_InBounder_Sh.S_NO = po.S_NO; |
| | | db.Insertable<TN_InBounder_Sh>(tN_InBounder_Sh).ExecuteCommand(); |
| | | |
| | | } |
| | | |
| | | } |
| | | |