using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using Common.Model; using JCSoft.WX.Framework.Api; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using Newtonsoft.Json; using PublicLibrary.Model; using SupplierWeb.Codes.EF; using ZcPeng.PublicLibrary; using System.Linq.Dynamic.Core; using SupplierWeb.Codes.mvc; using CoreEntity.Entity; using CoreEntity.DAL; using Common.Wechat; using Newtonsoft.Json.Converters; using LigerRM.Common; namespace SupplierWeb.Controllers { /// /// /// 订单汇总明细,入库单汇总明细,拒收单汇总明细 /// [Route("web/order")] [ApiController] public class OrderController : BaseController { public OrderController(IMemoryCache cache, IApiClient client) : base(cache, client) { } [AuthPermission] [HttpPost] [Route("getData")] public JsonResult GetData(string[] filters, Int32 pageIndex, Int32 pageSize, string sortField, Int32 sortDirection, string[] sumFields, string staffid, [FromBody]dynamic data) { var userid = getStaffUserid(staffid); //判断参数是否合法 if (string.IsNullOrEmpty(userid)) { return Json(new { success = 0, msg = "没有登陆", timeout = 1, }); } var sql0 = "select * from sup_Account where id = @userid"; var param0 = new List(); param0.Add(new SqlParameter("userid", int.Parse(userid))); var dt0 = new DataTable(); DataAccess.GetValues(sql0, ref dt0, param0.ToArray(), out _); var purStaffId = string.Empty; var name = string.Empty; if (dt0 != null && dt0.Rows.Count > 0) { purStaffId = dt0.Rows[0]["PurStaffId"].ToString(); name = dt0.Rows[0]["AccountRealName"].ToString(); } List filterList = new List(); if (data != null) { if (data.filters.Count > 0) { var list = JsonConvert.SerializeObject(data.filters); filterList = JsonConvert.DeserializeObject>(list); } pageIndex = data.pageIndex; pageSize = data.pageSize; sortField = data.sortField; sortDirection = data.sortDirection; sumFields = data.sumFields.ToObject(); } var isAce = sortDirection == 0; var queryCondition = string.Empty; var param = new List(); var start = (pageIndex - 1) * pageSize; var end = (start + 1 + pageSize); var dt = new DataTable(); if (filterList != null) { queryCondition = QueryFilter.getFilterSqlParam(filterList.ToArray(), out param, new PurInMt(), "A."); } var sql = $"select * from " + $"(select A.*,row_number() over (order by A.BillNo desc) as rowNum " + $"from (select *,'{name}' as AccountRealName from PurOrderMT A " + $"where SaleManId= '{purStaffId}') A where 1=1 {queryCondition}) R" + $" where rowNum > {start} and rowNum < {end}"; DataAccess.GetValues(sql, ref dt, param.ToArray(), out _); IList result = new List(); if (dt != null && dt.Rows.Count > 0) { result = ModelConvertHelper.ConvertToModel(dt); } var jsonData = JsonConvert.SerializeObject(result); var countSql = $"select count(1) from (select * from (select * from PURORDERMT where SaleManId= '{purStaffId}') A where 1=1 {queryCondition}) R"; var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out _); return Json(new { items = result, sum = new { }, totalCount = count }); } [AuthPermission] [HttpPost] [Route("orderin")] public JsonResult orderin(string[] filters, Int32 pageIndex, Int32 pageSize, string sortField, Int32 sortDirection, string[] sumFields, string staffid, [FromBody]dynamic data) { var userid = getStaffUserid(staffid); //判断参数是否合法 if (string.IsNullOrEmpty(userid)) { return Json(new { success = 0, msg = "没有登陆", timetout = 1, }); } //var sql0 = "select ContactId from ContactDoc where UserId = @userid"; //var param0 = new List(); //param0.Add(new SqlParameter("userid", int.Parse(userid))); //var dt0 = new DataTable(); //DataAccess.GetValues(sql0, ref dt0, param0.ToArray(), out _); //var ContactId = string.Empty; //if (dt0 != null && dt0.Rows.Count > 0) //{ // ContactId = dt0.Rows[0]["ContactId"].ToString(); //} List filterList = new List(); if (data != null) { if (data.filters.Count > 0) { var list = JsonConvert.SerializeObject(data.filters); filterList = JsonConvert.DeserializeObject>(list); } pageIndex = data.pageIndex; pageSize = data.pageSize; sortField = data.sortField; sortDirection = data.sortDirection; sumFields = data.sumFields.ToObject(); } var isAce = sortDirection == 0; var queryCondition = string.Empty; var param = new List(); var start = (pageIndex - 1) * pageSize; var end = (start + 1 + pageSize); var dt = new DataTable(); if (filterList != null) { queryCondition = QueryFilter.getFilterSqlParam(filterList.ToArray(),out param,new PurInMt(),"B."); } queryCondition = queryCondition.Replace("B.Contact", "A.Contact"); queryCondition = queryCondition.Replace("B.OppContact", "A1.OppContact"); queryCondition = queryCondition.Replace("B.StaffName","D.StaffName"); //param.Add(new SqlParameter("userid", int.Parse(userid))); string rulesql = FilterTranslator.ruleSql(ref param); var sql = $"select * from"; var sql1 = $"(select row_number() over (order by b.BillNo desc) as rownum,b.*,A.Contact,A1.Contact as OppContact,D.StaffName " + $"from PURINMT B " + $"left join PURORDERMT C on b.K_BillCode=c.BillCode and C.EntId = B.EntId " + $"left join CONTACTDOC A on C.K_ContactId = A.ContactId and A.EntId = C.EntId " + $"left join CONTACTDOC A1 on A1.ContactId = C.OppContId and A1.EntId = C.EntId " + $"left join StaffDoc D on D.StaffId = B.SaleManId and D.EntId = B.EntId " + $"where 1=1 " + //$"and c.Source = 'coop.360lj.com' " + //$"and c.Source = 'coop.360lj.com' and C.K_ContactId in (select ContactId from ContactDoc where UserId = @userid) " + queryCondition + rulesql + $")R"; var sql2 = $" where rownum > {start} and rownum< {end}"; string resultstr; DataAccess.GetValues(sql+sql1+sql2, ref dt, param.ToArray(), out resultstr); IList result = new List(); if (dt != null && dt.Rows.Count > 0) { result = ModelConvertHelper.ConvertToModel(dt); } var jsonData = JsonConvert.SerializeObject(result); var countSql = $"select count(1) from " + sql1; var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out resultstr); return Json(new { items = result, sum = new { }, totalCount = count }); } [AuthPermission] [HttpPost] [Route("orderindt")] public JsonResult orderindt(string[] filters, Int32 pageIndex, Int32 pageSize, string sortField, Int32 sortDirection, string[] sumFields, string staffid, [FromBody]dynamic data) { var userid = getStaffUserid(staffid); //判断参数是否合法 if (string.IsNullOrEmpty(userid)) { return Json(new { success = 0, msg = "没有登陆", timetout = 1, }); } //var sql0 = "select * from ContactDoc where userid = @userid"; //var param0 = new List(); //param0.Add(new SqlParameter("userid", int.Parse(userid))); //var dt0 = new DataTable(); //DataAccess.GetValues(sql0, ref dt0, param0.ToArray(), out _); //var ContactId = "'"; //if (dt0 != null && dt0.Rows.Count > 0) //{ // int i = 0; // foreach (DataRow row in dt0.Rows) // { // if (i != (dt0.Rows.Count - 1)) // ContactId += dt0.Rows[0]["ContactId"].ToString() + "','"; // else // ContactId += dt0.Rows[0]["ContactId"].ToString() + "'"; // i += 1; // } //} //var billNo = string.Empty; List filterList = new List(); if (data != null) { if (data.filters.Count > 0) { var list = JsonConvert.SerializeObject(data.filters); filterList = JsonConvert.DeserializeObject>(list); } pageIndex = data.pageIndex; pageSize = data.pageSize; sortField = data.sortField; sortDirection = data.sortDirection; sumFields = data.sumFields.ToObject(); //billNo = filterList.FirstOrDefault()?.value; } //if (string.IsNullOrEmpty(billNo)) //{ // billNo = "0000"; //} var isAce = sortDirection == 0; var queryCondition = string.Empty; var param = new List(); var start = (pageIndex - 1) * pageSize; var end = (start + 1 + pageSize); var dt = new DataTable(); //var filter = " and D.K_ContactId in( " + ContactId + ")"; if (filterList != null) { queryCondition = QueryFilter.getFilterSqlParam(filterList.ToArray(), out param, new PurInMt(), "B."); } queryCondition = queryCondition.Replace("B.kdcode", "F.k_kdcode"); queryCondition = queryCondition.Replace("B.GoodsName", "G.GoodsName"); //queryCondition = queryCondition.Replace("B.StaffName", "D.StaffName"); string rulesql = FilterTranslator.ruleSql(ref param); var sql = $"select * from "; var sql1 = $"(select row_number() over (order by a.BillNo desc) as rownum,b.*,F.k_kdcode as kdcode,G.GoodsName " + $"from PURINDT B " + $"left join PURINMT A on A.BillNo=B.BillNo and A.EntId = B.EntId " + $"left join PURNOTESDT C on b.RfBillNo=c.BillNo and C.BillSn=B.RfBillSn and C.EntId = B.EntId " + $"left join PURORDERMT D on A.K_BillCode = d.BillCode and D.EntId = A.EntId " + $"left join sup_PurShipmentOrderDT E on E.BillNo=C.BillNo and E.BillSn=C.BillSn " + $"left join sup_PurOrderShipment F on F.Id=E.ShipmentId " + $"left join GOODSDOC G on G.GoodsId=B.GoodsId and G.EntId = B.EntId " + $"where 1=1 " + $" {queryCondition} " + $" {rulesql}" + //$" and a.billno ={billNo}" + $") R " ; var sql2 = $" where rownum > {start} and rownum < {end}"; string resultstr; DataAccess.GetValues(sql + sql1 +sql2, ref dt, param.ToArray(), out resultstr); IList result = new List(); if (dt != null && dt.Rows.Count > 0) { result = ModelConvertHelper.ConvertToModel(dt); } var jsonData = JsonConvert.SerializeObject(result); var countSql = $"select count(1) from " + sql1; var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out resultstr); return Json(new { items = result, sum = new { }, totalCount = count }); } ////查询采购订单明细 [AuthPermission] [HttpPost, Route("purchaseorderdt/{staffId}")] public JsonResult purchaseorderdt(QueryFilter[] filters, Int32 pageIndex, Int32 pageSize, string sortField, Int32 sortDirection, string[] sumFields, string staffId, [FromBody]dynamic data) { string userids; userids = getStaffUserid(staffId); //判断参数是否合法 if (string.IsNullOrEmpty(userids)) { return Json(new { items = new string[] { }, sum = new { }, totalCount = 0, timeout = 1 }); } if (data != null) { //Newtonsoft.Json.Linq.JArray filters = data.filters.ToObject(); pageIndex = data.pageIndex; pageSize = data.pageSize; sortField = data.sortField; sortDirection = data.sortDirection; sumFields = data.sumFields.ToObject(); } string StaffDocId = StaffDocDAL.GetStaffId(userids); List parameters1 = new List(); string filterstring = QueryFilter.getFilterSqlParam(filters, out parameters1, new PurOrderDTEx(), "G."); filterstring += " " + " and A.SaleManId = '" + StaffDocId + "' "; filterstring = filterstring.Replace("and G.GoodsName", "and H.GoodsName"); filterstring = filterstring.Replace("and G.GoodsCode", "and H.GoodsCode"); filterstring = filterstring.Replace("and G.StaffName", "and C.StaffName"); filterstring = filterstring.Replace("and G.Contact", "and F.Contact"); filterstring = filterstring.Replace("and G.BusinessName", "and E.BusinessName"); #region 获取订单 DataTable dt = new DataTable(); string result = string.Empty; string direct = " desc "; if (sortDirection != 1) direct = " asc"; int start = (pageIndex - 1) * pageSize; int end = (start + 1 + pageSize); string commandText0 = "select * from ("; string commandText1 = "select G.*,A.OppContId,A.SuppliersId,B.AccountRealName,C.StaffName," + "E.BusinessName,F.Contact," + "H.GoodsName,H.GoodsCode,H.GoodsSpec,H.Manufacturer," + "row_number() over" + "( order by G." + sortField + " " + direct + " ) as rownum" + " from PurOrderDT G left join PurOrderMT A on G.BillNo = A.BillNo and A.EntId = G.EntId " + " left join GoodsDoc H on H.GoodsId=G.GoodsId and H.EntId = G.EntId " + " left join " + Config.TablePrefix + "Account B on A.SaleManId=B.PurStaffId " + " left join StaffDoc C on A.SaleManId=C.StaffId and C.EntId = A.EntId " + " left join supplydoc D on A.SuppliersId=D.SuppliersId and D.EntId = A.EntId " + " left join BusinessDoc E on E.BusinessId=D.SuppliersId and E.Is_Supp = 'Y' and E.EntId = D.EntId " + " left join ContactDoc F on F.ContactId=A.oppcontid and F.EntId = A.EntId " + " where 1=1 " + filterstring + ")AAA"; string commandText2 = " where AAA.rownum>" + start + " and AAA.rownum<" + end ; string commandText = commandText0 + commandText1 + commandText2; bool result1 = DataAccess.GetValues(commandText, ref dt, parameters1.ToArray(), out result); IList users = new List(); if (dt != null && dt.Rows.Count > 0) { // 把DataTable转换为IList users = ModelConvertHelper.ConvertToModel(dt); } #endregion string resultrow; string commandTextCount = "select count(*) from (" + commandText1; long totalcount = DataAccess.GetRowCountDefine(commandTextCount, parameters1.ToArray(), out resultrow); IsoDateTimeConverter timejson = new IsoDateTimeConverter { DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss" }; var jsonData = JsonConvert.SerializeObject(users, timejson); return Json(new { items = JsonConvert.DeserializeObject(jsonData), sum = new { }, totalCount = totalcount }); } [AuthPermission] [HttpPost] [Route("gsnotacp")] public JsonResult GspNotAcpData(string staffid, [FromBody] dynamic data) { var userid = getStaff("userid"); //判断参数是否合法 if (string.IsNullOrEmpty(userid)) { return Json(new { success = 0, msg = "没有登陆", timeout = 1 }); } var sql0 = "select * from sup_Account where id = @userid"; var param0 = new List(); param0.Add(new SqlParameter("userid", int.Parse(userid))); var dt0 = new DataTable(); DataAccess.GetValues(sql0, ref dt0, param0.ToArray(), out _); var purStaffId = string.Empty; if (dt0 != null && dt0.Rows.Count > 0) { purStaffId = dt0.Rows[0]["PurStaffId"].ToString(); } List filterList = new List(); int pageIndex = 1; int pageSize = 15; string sortField; int sortDirection = 0; string[] sumFields; if (data != null) { if (data.filters.Count > 0) { var list = JsonConvert.SerializeObject(data.filters); filterList = JsonConvert.DeserializeObject>(list); } pageIndex = data.pageIndex; pageSize = data.pageSize; sortField = data.sortField; sortDirection = data.sortDirection; sumFields = data.sumFields.ToObject(); } var isAce = sortDirection == 0; var queryCondition = string.Empty; var param = new List(); var start = (pageIndex - 1) * pageSize; var end = (start + 1 + pageSize); var dt = new DataTable(); if (filterList != null) { queryCondition = QueryFilter.getFilterSqlParam(filterList.ToArray(), out param, new PurInMt(), "A."); } string rulesql = FilterTranslator.ruleSql(ref param); var sql = $"select * from "; var sql1 = $"(select row_number() over (order by A.BillNo desc) as rownum," + $" H.StaffName,F.contact,G.contact as oppcontact,E.K_ContactId,E.OppContId,K_BillCode,A.* from GSPNOTACPMT A " + $" left join GSPINMT B on A.RfBillNo = B.BillNo and A.EntId = B.EntId " + $" left join(select billno, entid, RfBillNo, ROW_NUMBER() over(partition by billno order by billno asc) as rn from GSPINDT )C on C.BillNo = B.BillNo and rn = 1 and C.EntId = B.EntId" + $" left join PURNOTESMT D on D.BillNo = C.RfBillNo and D.EntId = C.EntId" + $" left join PurOrderMT E on E.BillCode = D.K_BillCode and E.EntId = D.EntId" + $" left join contactdoc F on F.ContactId = E.K_ContactId and F.EntId = E.EntId" + $" left join contactdoc G on G.ContactId = E.OppContId and G.EntId = E.EntId" + $" left join StaffDoc H on H.STAFFID = E.SaleManId and H.EntId = E.EntId" + $" where rn = 1 " + $"{queryCondition} " + $"{rulesql})AAA"; var sql2 = " where AAA.rownum>" + start + " and AAA.rownum<" + end; DataAccess.GetValues(sql + sql1 + sql2, ref dt, param.ToArray(), out var msg); IList result = new List(); if (dt != null && dt.Rows.Count > 0) { result = ModelConvertHelper.ConvertToModel(dt); } var jsonData = JsonConvert.SerializeObject(result); var countSql = $"select count(1) from " + sql1; var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out var msg1); return Json(new { items = JsonConvert.DeserializeObject(jsonData), sum = new { }, totalCount = count }); } [AuthPermission] [HttpPost] [Route("gsnotacpdt")] public JsonResult GspNotAcpDataDT(string staffid, [FromBody] dynamic data) { var userid = getStaff("userid"); //判断参数是否合法 if (string.IsNullOrEmpty(userid)) { return Json(new { success = 0, msg = "没有登陆", timeout = 1 }); } var sql0 = "select * from sup_Account where id = @userid"; var param0 = new List(); param0.Add(new SqlParameter("userid", int.Parse(userid))); var dt0 = new DataTable(); DataAccess.GetValues(sql0, ref dt0, param0.ToArray(), out _); var purStaffId = string.Empty; if (dt0 != null && dt0.Rows.Count > 0) { purStaffId = dt0.Rows[0]["PurStaffId"].ToString(); } List filterList = new List(); int pageIndex = 1; int pageSize = 15; string sortField; int sortDirection = 0; string[] sumFields; if (data != null) { if (data.filters.Count > 0) { var list = JsonConvert.SerializeObject(data.filters); filterList = JsonConvert.DeserializeObject>(list); } pageIndex = data.pageIndex; pageSize = data.pageSize; sortField = data.sortField; sortDirection = data.sortDirection; sumFields = data.sumFields.ToObject(); } var isAce = sortDirection == 0; var queryCondition = string.Empty; var param = new List(); var start = (pageIndex - 1) * pageSize; var end = (start + 1 + pageSize); var dt = new DataTable(); if (filterList != null) { queryCondition = QueryFilter.getFilterSqlParam(filterList.ToArray(), out param, new PurInMt(), "A."); } string rulesql = FilterTranslator.ruleSql(ref param); var sql = $"select * from "; var sql1 = $"(select row_number() over (order by A.BillNo desc) as rownum," + $"H.StaffName,F.contact,G.contact as oppcontact,H1.GoodsName," + $"E.K_ContactId,E.OppContId,A.*,B.BillCode from GSPNOTACPDT A" + $" left join GSPNOTACPMT B on A.BillNo = B.BillNo and B.EntId = A.EntId" + $" left join GSPINDT C on C.BillNo = B.RfBillNo and C.BillSn = A.BillSn and C.EntId = A.EntId" +//----订单验货 $" left join PURNOTESMT D on D.BillNo = C.RfBillNo and D.EntId = C.EntId" +//--订单收货 $" left join PurOrderMT E on E.BillCode = D.K_BillCode and E.EntId = D.EntId" + $" left join contactdoc F on F.ContactId = E.K_ContactId and F.EntId = E.EntId" + $" left join contactdoc G on G.ContactId = E.OppContId and G.EntId = E.EntId" + $" left join StaffDoc H on H.STAFFID = E.SaleManId and H.EntId = E.EntId" + $" left join GoodsDoc H1 on H1.GoodsId = A.GoodsId " + $"where 1=1 " + $"{queryCondition} " + $"{rulesql})AAA"; var sql2 = " where AAA.rownum>" + start + " and AAA.rownum<" + end; DataAccess.GetValues(sql + sql1 + sql2, ref dt, param.ToArray(), out var msg); IList result = new List(); if (dt != null && dt.Rows.Count > 0) { result = ModelConvertHelper.ConvertToModel(dt); } var jsonData = JsonConvert.SerializeObject(result); var countSql = $"select count(1) from " + sql1; var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out var msg1); return Json(new { items = result, sum = new { }, totalCount = count, result = msg }); } } internal class Temp { public string Key => Guid.NewGuid().ToString(); public int BillNo { get; set; } public string Dates { get; set; } public string Address { get; set; } public string AccountRealName { get; set; } public string Delivery { get; set; } public string PayType { get; set; } public string Summaries { get; set; } public string BillCode { get; set; } public string InmtState { get; set; } public decimal k_pay { get; set; } public string k_kdcode { get; set; } public string SaleMan { get; set; } public string Supplier { get; set; } } internal class Temp2 { public int BillNo { get; set; } public int BillSn { get; set; } public string EntId { get; set; } public int BillSort { get; set; } public string GoodsId { get; set; } public decimal Num { get; set; } public string unit { get; set; } public int Meas { get; set; } public string AngleId { get; set; } public string BatchCode { get; set; } public string ProduceDate { get; set; } public string SterilCode { get; set; } public string ValDate { get; set; } public string ArrivalDate { get; set; } public string ApprovalNo { get; set; } public decimal CheckNum { get; set; } public string Zhilbz { get; set; } public string Zhilwt { get; set; } public string AcceptId { get; set; } public string Yansrq { get; set; } public string Remark { get; set; } public string OwnerId { get; set; } public string constraint { get; set; } public string BillCode { get; set; } public string GoodsName { get; set; } public string StaffName { get; set; } public string Contact { get; set; } public string OppContact { get; set; } } internal class Temp3 { public string Key => Guid.NewGuid().ToString(); public int BillNo { get; set; } public string BillCode { get; set; } public string Dates { get; set; } public string SaleManId { get; set; } public decimal Amount { get; set; } public string IsInvoice { get; set; } public string OrgId { get; set; } public string DeptId { get; set; } public string Invoice { get; set; } public string OlderNo { get; set; } public string K_DFBillCode { get; set; } public string K_BillCode { get; set; } public string WareManId { get; set; } public string OppContId { get; set; } public string PayOrgId { get; set; } public string Contact { get; set; } public string OppContact { get; set; } public string StaffName { get; set; } } internal class Temp4 { public string Key => Guid.NewGuid().ToString(); public int BillNo { get; set; } public int BillSn { get; set; } public string GoodsId { get; set; } public decimal Num { get; set; } public string GoodsName { get; set; } public decimal Amount { get; set; } public string IsInvoice { get; set; } public string Remark { get; set; } public string Kdcode { get; set; } } } public class Filter { public string field { get; set; } public string operate { get; set; } public string value { get; set; } }