| | |
| | | try |
| | | { |
| | | db.BeginTran(); |
| | | List<TN_GENERATE_ORDER> tN_GENERATE_ORDERs = new List<TN_GENERATE_ORDER>(); |
| | | foreach (var item in model.ROOT.SCDD) |
| | | { |
| | | Orderback.ITEM iTEM = new Orderback.ITEM(); |
| | | |
| | | var materlist = db.Queryable<TN_GENERATE_ORDER>().Where(it => it.S_SCDDH == item.SCDDH).First(); |
| | | if (materlist == null) |
| | | { |
| | |
| | | tnorder.S_WBS = item.WBS; |
| | | tnorder.S_SHF = item.SHF; |
| | | tnorder.GZLH = item.GZLH; |
| | | tN_GENERATE_ORDERs.Add(tnorder); |
| | | //tnorder.S_XLH = string.Join(",", item.ITEM.Select(items => items.XLH)); |
| | | db.Insertable<TN_GENERATE_ORDER>(tnorder).ExecuteCommand(); |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | iTEM.MSGDESP = $"成功"; |
| | | tEMs.Add(iTEM); |
| | | } |
| | | db.Insertable<TN_GENERATE_ORDER>(tN_GENERATE_ORDERs).ExecuteCommand(); |
| | | orderResponse.ROOT.ITEM = tEMs; |
| | | db.CommitTran(); |
| | | } |
| | |
| | | |
| | | try |
| | | { |
| | | var itemlist = db.Queryable<TN_Material>().ToList(); |
| | | List<TN_Inbound_Detail> tN_Inbound_Details = new List<TN_Inbound_Detail>(); |
| | | List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>(); |
| | | foreach (var itemwlpz in model.ROOT.WLPZ) |
| | | { |
| | | |
| | |
| | | { |
| | | var poq = po.Details.Where(s => s.S_ITEM_CODE == a.WLBH).FirstOrDefault(); |
| | | poq.F_QTY = a.SL; |
| | | |
| | | db.Updateable(poq).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | tN_Inbound_Details.Add(poq); |
| | | // db.Updateable(poq).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | |
| | | po.S_FACTORY = itemwlpz.ITEM[0].GC; |
| | | foreach (var a in itemwlpz.ITEM) |
| | | { |
| | | var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBH).First(); |
| | | var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBH).FirstOrDefault(); |
| | | if (item == null) |
| | | { |
| | | var result12 = new SimpleResult(); |
| | |
| | | var po1 = po.Details.Where(s => a.WLBH == s.S_ITEM_CODE).ToList(); |
| | | if (po1.Count() == 0) //无则新增物料明细 |
| | | { |
| | | var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBH).First(); |
| | | var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBH).FirstOrDefault(); |
| | | if (item == null) |
| | | { |
| | | var result12 = new SimpleResult(); |
| | |
| | | if (po1.Where(s => s.F_ACC_D_QTY < a.SL).Count() > 0)//更新数量大于当前物料 数量 更新出库单 |
| | | { |
| | | po1.First().F_QTY = a.SL; |
| | | db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | tN_Ll_Details.Add(po1.First()); |
| | | //db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | } |
| | | else //返回失败 |
| | | { |
| | |
| | | var po1 = po.Details.Where(s => a.WLBH == s.S_ITEM_CODE).ToList(); |
| | | if (po1.Count() == 0) //无则新增物料明细 |
| | | { |
| | | var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBH).First(); |
| | | var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBH).FirstOrDefault(); |
| | | if (item == null) |
| | | { |
| | | var result12 = new SimpleResult(); |
| | |
| | | else |
| | | {//更新数量 未执行时 直接更新数量 |
| | | po1.First().F_QTY = a.SL; |
| | | db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | tN_Ll_Details.Add(po1.First()); |
| | | //db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | } |
| | | //} |
| | | } |
| | |
| | | result.resultCode = 0; |
| | | simples.Add(result); |
| | | } |
| | | if (tN_Ll_Details.Count()>0) |
| | | { |
| | | |
| | | |
| | | db.Updateable(tN_Ll_Details).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | } |
| | | if (tN_Inbound_Details.Count()>0) |
| | | { |
| | | db.Updateable(tN_Inbound_Details).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | } |
| | | db.CommitTran(); |
| | | |
| | | } |
| | |
| | | } |
| | | }; |
| | | List<LLDReturnRoot.ITEM> iTEMs = new List<LLDReturnRoot.ITEM>(); |
| | | |
| | | |
| | | var result = new WeiLiResult(); |
| | | |
| | | using (var db = new SqlHelper<object>().GetInstance()) |
| | |
| | | //创建领料单 |
| | | try |
| | | { |
| | | var itemlist = db.Queryable<TN_Material>().ToList(); |
| | | |
| | | //删除的集合 |
| | | List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>(); |
| | | List<TN_Ll_detail> iuptN_Ll_Details = new List<TN_Ll_detail>(); |
| | | foreach (var itemscddll in model.ROOT.SCDDLL) |
| | | { |
| | | LLDReturnRoot.ITEM lLDReturnRoots = new LLDReturnRoot.ITEM(); |
| | | |
| | | db.BeginTran(); |
| | | |
| | | // 预先缓存物料数据(优化点1:批量查询减少数据库访问) |
| | | |
| | | var materialCache = new Dictionary<string, TN_Material>(); |
| | | #region 创建领料单 |
| | | var po = db.Queryable<TN_Ll_Order>().Includes(a => a.Details).Where(s => s.S_NO == itemscddll.LLDH).First(); |
| | | |
| | | //var po = db.Queryable<TN_Ll_Order>().Includes(a => a.Details).Where(s => s.S_NO == itemscddll.LLDH).First(); |
| | | var po = db.Queryable<TN_Ll_Order>() |
| | | .Includes(a => a.Details) |
| | | .Where(s => s.S_NO == itemscddll.LLDH) |
| | | .First(); |
| | | #endregion |
| | | //var po = WMSHelper.GetOutboundOrder(model.ROOT.SCDDLL.LLDH); |
| | | if (po == null) |
| | |
| | | { |
| | | foreach (var a in itemscddll.ITEM) |
| | | { |
| | | var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBM).First(); |
| | | var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); |
| | | if (item == null) |
| | | { |
| | | //result.code = 1; |
| | | //result.msg = $"物料{a.WLBM}物料主数据不存在该物料"; |
| | | //throw new Exception($"物料{a.WLBM}物料主数据不存在该物料"); |
| | | lLDReturnRoots.GC = itemscddll.GC; |
| | | lLDReturnRoots.LLDH = itemscddll.LLDH; |
| | | lLDReturnRoots.MSGCODE = 1; |
| | |
| | | N_ITEM_STATE = 1 |
| | | }); |
| | | } |
| | | if (po.Details.Count()>0) |
| | | if (po.Details.Count() > 0) |
| | | { |
| | | LLDReturnRoot.ITEM lLDReturnRoot1 = new LLDReturnRoot.ITEM(); |
| | | lLDReturnRoot1.GC = itemscddll.GC; |
| | |
| | | var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList(); |
| | | if (po1.Count() == 0) //无则新增物料明细 |
| | | { |
| | | var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBM).First(); |
| | | var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); |
| | | if (item == null) |
| | | { |
| | | //result.code = 1; |
| | |
| | | if (po1.Where(s => s.F_ACC_D_QTY < a.XQSL).Count() > 0)//更新数量大于当前物料 数量 更新出库单 |
| | | { |
| | | po1.First().F_QTY = a.XQSL; |
| | | db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | iuptN_Ll_Details.Add(po1.First()); |
| | | //db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | } |
| | | else //返回失败 |
| | | { |
| | |
| | | var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList(); |
| | | if (po1.Count() > 0) //无则新增物料明细 |
| | | { |
| | | db.Deleteable<TN_Ll_detail>().Where(it => it.S_ITEM_CODE == a.WLBM && it.S_DO_NO == po1.First().S_DO_NO).ExecuteCommand(); |
| | | tN_Ll_Details.AddRange(po1); |
| | | // db.Deleteable<TN_Ll_detail>().Where(it => it.S_ITEM_CODE == a.WLBM && it.S_DO_NO == po1.First().S_DO_NO).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | |
| | | lLDReturnRoots.GC = itemscddll.GC; |
| | | lLDReturnRoots.LLDH = itemscddll.LLDH; |
| | | lLDReturnRoots.MSGCODE = 1; |
| | | lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料数据不存在 无法删除"; |
| | | lLDReturnRoots.MSGDESP = $"删除的物料{a.WLBM}物料数据不存在 无法删除"; |
| | | iTEMs.Add(lLDReturnRoots); |
| | | break; |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | |
| | | var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList(); |
| | | if (po1.Count() == 0) //无则新增物料明细 |
| | | { |
| | | var item = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == a.WLBM).First(); |
| | | var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); |
| | | if (item == null) |
| | | { |
| | | //result.code = 1; |
| | |
| | | lLDReturnRoots.MSGCODE = 1; |
| | | lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料"; |
| | | iTEMs.Add(lLDReturnRoots); |
| | | break; |
| | | continue; |
| | | } |
| | | TN_Ll_detail tN_Outbound_Detail = new TN_Ll_detail |
| | | { |
| | |
| | | else |
| | | {//更新数量 未执行时 直接更新数量 |
| | | po1.First().F_QTY = a.XQSL; |
| | | db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | iuptN_Ll_Details.Add(po1.First()); |
| | | //db.Updateable(po1).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | } |
| | | } |
| | | } |
| | | if (tN_Ll_Details.Count()>0) |
| | | { |
| | | db.Deleteable<TN_Ll_detail>(tN_Ll_Details).ExecuteCommand(); |
| | | |
| | | } |
| | | if (iuptN_Ll_Details.Count() > 0) |
| | | { |
| | | db.Updateable(iuptN_Ll_Details).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); |
| | | |
| | | } |
| | | |
| | | ; |
| | | } |
| | | //添加数据 |
| | |
| | | { |
| | | //var az = db.Queryable<AZInventory>().ToList(); |
| | | var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(), UNAME = po.UNAME, S_FACTORY = po.S_FACTORY, S_CBZX = po.S_CBZX, S_ZZKM = po.S_ZZKM, S_LRZX = po.S_LRZX, BLDAT = po.BLDAT, BUDAT = po.BUDAT, S_OUT_TYPE = po.S_OUT_TYPE, S_BS_TYPE = po.S_BS_TYPE, S_AREA_CODE = po.S_AREA_CODE, S_BS_NO = po.S_NO }; |
| | | |
| | | List<TN_Ll_detail> tN_Ll_Details= new List<TN_Ll_detail>(); |
| | | po1.Details = new List<TN_Outbound_Detail>(); |
| | | if (po.Details.Count() > 0) |
| | | { |
| | |
| | | S_ERP_WH_CODE = a.S_ERP_WH_CODE, |
| | | N_ITEM_STATE = a.N_ITEM_STATE |
| | | }); |
| | | a.F_ACC_D_QTY += a.F_QTY - a.F_ACC_D_QTY; |
| | | db.Updateable(a).UpdateColumns(it => new { it.F_ACC_D_QTY }).ExecuteCommand(); |
| | | double difference = a.F_QTY - a.F_ACC_D_QTY; |
| | | 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) |
| | | { |
| | | var result1 = db.Insertable<TN_Outbound_Order>(po1).ExecuteCommand() > 0; |