From f6a81c5426bfa0000113729bff128abb87576623 Mon Sep 17 00:00:00 2001 From: cnf <3200815559@qq.com> Date: 星期六, 23 八月 2025 16:17:49 +0800 Subject: [PATCH] 1增加了通用控件选择库位 2增加撤回报工,自动入库维护功能 --- WebApi/Gs.Warehouse/Services/MesAutoRkController.cs | 214 ++++++++++++++++++++++++++ .gitignore | 1 WebApi/Gs.Wom/Service/MesScrksqDjManager.cs | 65 ++++++++ WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs | 144 ++++++++++++++++++ 4 files changed, 424 insertions(+), 0 deletions(-) diff --git a/.gitignore b/.gitignore index bea9692..aa43675 100644 --- a/.gitignore +++ b/.gitignore @@ -187,3 +187,4 @@ /WebApi/.vs/GsMesSolution/FileContentIndex /WebApi/.idea/.idea.GsMesSolution/.idea /WebApi/.vs/GsMesSolution/v17 +/.vs diff --git a/WebApi/Gs.Warehouse/Services/MesAutoRkController.cs b/WebApi/Gs.Warehouse/Services/MesAutoRkController.cs new file mode 100644 index 0000000..f83ea1c --- /dev/null +++ b/WebApi/Gs.Warehouse/Services/MesAutoRkController.cs @@ -0,0 +1,214 @@ +锘縰sing System.Data; +using System.Dynamic; +using System.Text; +using Gs.Toolbox; +using Gs.Toolbox.ApiCore.Abstract.Mvc; +using Gs.Toolbox.ApiCore.Common.Mvc; +using Gs.Toolbox.ApiCore.Group; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json.Linq; +using static Gs.Toolbox.UtilityHelper; + +namespace Gs.Wom.WorkService +{ + + [ApiGroup(ApiGroupNames.WOM)] + public class MesAutoRkController : IRomteService + { + private readonly IHttpContextAccessor _http; + private readonly string _userCode, _userGuid, _orgFids; + public MesAutoRkController(IHttpContextAccessor httpContextAccessor) + { + _http = httpContextAccessor; + (_userCode, _userGuid, _orgFids) = GetUserGuidAndOrgGuid(_http); + } + + #region + /// <summary> + /// 璇诲彇鍒楄〃锛屾敮鎸佸垎椤� + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [RequestMethod(RequestMethods.POST)] + public ReturnDto<PageList<dynamic>> GetListPage([FromBody] PageQuery model) + { + int currentPage = model.currentPage; + int everyPageSize = model.everyPageSize; + string sortName = string.IsNullOrEmpty(model.sortName) ? "org.FNumber" : model.sortName; + string keyWhere = model.keyWhere; + System.Text.StringBuilder _w = new StringBuilder(); + _w.Append(" from [dbo].[MES_BACK_FLASH] a"); + _w.Append(" left join MES_ITEMS i on a.ItemID=i.item_id "); + _w.Append(" left join MES_DEPOTS d on a.depotId=d.depot_id "); + _w.Append(" left join SYS_DEPARTMENT m on a.departmentId=m.departmentid "); + _w.Append(" left join SYS_ORGANIZATION org on i.FSubsidiary=org.FID"); + _w.Append(" where 1=1 " + keyWhere); + System.Text.StringBuilder sbSql = new StringBuilder(); + sbSql.Append("select * from "); + sbSql.Append("( "); + sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,a.*,'('+org.FNumber+')'+org.NAME as orgName "); + sbSql.Append(",i.item_no as itemNo,i.item_name as itemName,i.item_model as itemModel,d.depot_name as depotName,m.departmentname as bmName"); + sbSql.Append(_w); + sbSql.Append(") as T "); + sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and T.rowindex<=" + currentPage + "*" + everyPageSize); + sbSql.Append(" order by rowindex asc "); + sbSql.Append(" select count(1) as intTotal "); + sbSql.Append(_w); + DataSet dset = new DataSet(); + try + { + dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString()); + } + catch (Exception ex) + { + Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetListPage error锛�" + ex.Message); + return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触"); + } + PageList<dynamic> _pglist = new PageList<dynamic> + { + total = 0, + everyPageSize = 0, + pages = 0, + list = new List<dynamic>() + }; + if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//鏈夋暟鎹� + { + int intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString()); + int pages = (intTotal % everyPageSize != 0) ? (intTotal / everyPageSize + 1) : (intTotal / everyPageSize); + _pglist.total = intTotal; + _pglist.everyPageSize = everyPageSize; + _pglist.pages = pages; + List<dynamic> _dy = dset.Tables[0].TableToDynamicList(); + _pglist.list = _dy; + } + return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist, ReturnCode.Success, "璇诲彇鎴愬姛"); + } + + + /// <summary> + /// 鍒犻櫎瀹炰綋 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [RequestMethod(RequestMethods.POST)] + public ReturnDto<int?> DeleteModel([FromBody] JArray guidList) + { + var intArray = guidList.ToObject<string[]>(); + string guid = intArray[0]; + int rtnInt = (int)ReturnCode.Default; + int cont = 0; + try + { + cont = isChkOrUnChk(guid, 1); + if (cont > 0) + return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃淇℃伅宸茶瀹℃牳锛�"); + StringBuilder strSql = new StringBuilder(); + strSql.Append(" delete from MES_BACK_FLASH "); + strSql.Append(" where guid='" + guid + "'"); + int rows = DbHelperSQL.ExecuteSql(strSql.ToString()); + rtnInt = rows; + } + catch (Exception ex) + { + LogHelper.Debug(this.ToString(), "DeleteModel error锛�" + ex.Message); + rtnInt = (int)ReturnCode.Exception; + return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛�" + ex.Message); + } + if (rtnInt > 0) + return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛屽叡鍒犻櫎" + rtnInt.ToString() + "鏉℃暟鎹紒"); + else + return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃閲嶈瘯锛�"); + } + + /// <summary> + /// 澧炲姞瀹炰綋 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [RequestMethod(RequestMethods.POST)] + public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model) + { + string itemId = model.itemId; + string departmentId = model.departmentId; + string depotId = model.depotId; + int? rtnInt = (int)ReturnCode.Default; + dynamic mObj = new ExpandoObject(); + mObj.outMsg = ""; + mObj.outSum = -1; + mObj.outGuid = ""; + mObj.outNo = ""; + StringBuilder strSql = new StringBuilder(); + string guid = Guid.NewGuid().ToString(); + strSql.Append(" insert into MES_BACK_FLASH"); + strSql.Append(" ([guid] ,[ItemId] ,[departmentId] ,[depotId],createBy,createDate,checkStatus)"); + strSql.Append(" values("); + strSql.Append(" '" + guid + "','" + itemId + "','" + departmentId + "'," + depotId + ",'" + _userCode + "',getdate(),0)"); + try + { + rtnInt = DbHelperSQL.ExecuteSql(strSql.ToString()); + mObj.outMsg = "鎿嶄綔鎴愬姛锛�"; + mObj.outSum = rtnInt; + mObj.outGuid = guid; + mObj.outNo = itemId; + } + catch (Exception ex) + { + LogHelper.Debug(this.ToString(), "EditModel error锛�" + ex.Message); + rtnInt = (int)ReturnCode.Exception; + mObj.outMsg = ex.Message; + mObj.outSum = -1; + } + if (mObj.outSum <= 0) + return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg); + return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg); + } + + /// <summary> + /// 璇诲彇瀹炰綋 + /// </summary> + /// <param name="guid"></param> + /// <returns></returns> + [RequestMethod(RequestMethods.POST)] + [AllowAnonymous] + public ReturnDto<System.Dynamic.ExpandoObject> GetModel([FromBody] dynamic model) + { + dynamic m = new System.Dynamic.ExpandoObject(); + System.Text.StringBuilder sbSql = new StringBuilder(); + sbSql.Append("select top 1 a.*,org.FID as orgId ,i.item_no as itemNo,i.item_name as itemName,i.item_model as itemModel from MES_BACK_FLASH a left join MES_ITEMS i on a.ItemID=i.item_id left join SYS_ORGANIZATION org on i.FSubsidiary=org.FID where 1=1 and a.guid='" + model.guid.ToString() + "' "); + try + { + DataSet dset = new DataSet(); + dset = DbHelperSQL.Query(sbSql.ToString()); + if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) + { + System.Data.DataRow dr = dset.Tables[0].Rows[0]; + m = dr.RowToDynamic(); + return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�"); + } + else + return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�"); + } + catch (Exception ex) + { + LogHelper.Debug(this.ToString(), "GetModel error:" + ex.Message); + return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�"); + } + } + + /// <summary> + /// 鍒ゆ柇鏄惁瀹℃牳 + /// </summary> + /// <param name="guidList"></param> + /// <param name="status"></param> + /// <returns></returns> + private int isChkOrUnChk(string guidList, int status) + { + int cont = 0; + cont = int.Parse(DbHelperSQL.GetSingle("select count(1) from MES_BACK_FLASH where guid='" + guidList + "' and isnull(checkstatus,0)=" + status + "").ToString()); + return cont; + } + #endregion + } +} diff --git a/WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs b/WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs index ef3683f..d3bcde8 100644 --- a/WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs +++ b/WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs @@ -1,7 +1,12 @@ 锘縰sing Gs.Entity.BaseInfo; +using Gs.Entity.Sys; using Gs.Toolbox; using Gs.Toolbox.ApiCore.Abstract.Mvc; +using Gs.Toolbox.ApiCore.Common.Mvc; using Gs.Toolbox.ApiCore.Group; +using SqlSugar; +using System.Data; +using System.Text; namespace Gs.Warehouse.Services; @@ -9,4 +14,143 @@ public class MesDepotSectionsManager : Repository<MesDepotSections>, IRomteService { + + /// <summary> + /// 鏌ヨ鍒楄〃锛屾敮鎸佸垎椤� + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + [RequestMethod(RequestMethods.POST)] + public ReturnDto<PageList<MesDepotSections>> GetListPage(PageQuery query) + { + var pageList = new PageList<MesDepotSections>(); + try + { + var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere); + var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder); + var totalCount = 0; + var itemsList = Db.Queryable<MesDepots,MesDepotSections, SysOrganization, MesStaff, MesCustomer, MesSupplier, SysDepartment>( + (a, b,Org, c, d, f, g) => new object[] + { + JoinType.Left, a.Guid == b.DepotGuid, + JoinType.Left, a.FSubsidiary == Org.Fid, + JoinType.Left, a.CreateBy == c.Id.ToString(), + JoinType.Left,d.Id.ToString()==a.ClientId.ToString(), + JoinType.Left,f.Id.ToString()==a.SuppLierId.ToString(), + JoinType.Left,g.Id.ToString()==a.department.ToString(), + }).Select((a, b, Org, c, d, f, g) => new MesDepotSections + { + Guid=b.Guid, + DepotSectionCode=b.DepotSectionCode.ToString(), + DepotSectionName=b.DepotSectionName.ToString(), + CreateBy = c.StaffName.ToString() + + }, true) + .Where(_sbWhere.ToString()) + .OrderBy(_sbBy.ToString()) + .ToPageList(query.currentPage, query.everyPageSize, + ref totalCount); + + pageList = new PageList<MesDepotSections>(itemsList, totalCount, + query.everyPageSize); + return ReturnDto<PageList<MesDepotSections>>.QuickReturn(pageList, + ReturnCode.Success, "璇诲彇鎴愬姛"); + } + catch (Exception ex) + { + return ReturnDto<PageList<MesDepotSections>>.QuickReturn(pageList, + ReturnCode.Default, ex.Message); + } + } + + + /// <summary> + /// 鏌ヨ鍒楄〃锛屾敮鎸佸垎椤�,鐢ㄤ簬鍚勭缁戝畾 + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + [RequestMethod(RequestMethods.POST)] + public ReturnDto<PageList<dynamic>> GetListPage2(PageQuery model) + { + var currentPage = model.currentPage; + var everyPageSize = model.everyPageSize; + var sortName = string.IsNullOrEmpty(model.sortName) ? "a.PAGE_GROUP" : model.sortName; + var keyWhere = model.keyWhere; + string keyType = model.keyType; + var sbSql = new StringBuilder(); + sbSql.Append(" SELECT * FROM "); + sbSql.Append(" (SELECT N'(' +[Org].[FNumber] + N')' +[Org].[NAME] AS [FSubsidiary2] ,"); + sbSql.Append(" [Org].[NAME] AS [OrgName] , [Org].[FNumber] AS [OrgId] , CAST([c].[staff_name]"); + sbSql.Append(" AS NVARCHAR(MAX)) AS [CreateBy] , [d].[cust_name] AS [ClientId] ,"); + sbSql.Append(" [f].[supp_name] AS [SuppLierId] , [g].[departmentname] AS [department2] ,"); + sbSql.Append(" ( CASE WHEN ( [a].[is_ng] = N'A' ) THEN N'姝e父' ELSE N'绂佺敤' END ) AS [IsNg] "); + // 娣诲姞MesDepotSections琛ㄧ殑瀛楁 + sbSql.Append(" , [b].[DepotSectionCode] AS [DepotSectionCode] "); + sbSql.Append(" , [b].[DepotSectionName] AS [DepotSectionName] "); + sbSql.Append(" , [a].*,ROW_NUMBER() OVER(ORDER BY org.FNumber asc ,a.depot_code asc) AS RowIndex "); + if (string.IsNullOrEmpty(keyType)) + { + sbSql.Append(",cast(0 as bit) as chkInt"); + } + else + { + sbSql.Append(",cast( (select count(1) from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=a.guid) as bit) as chkInt "); + } + // 娣诲姞LEFT JOIN MesDepotSections琛� + sbSql.Append(" FROM [MES_DEPOTS] [a] "); + sbSql.Append(" Left JOIN [MES_DEPOT_SECTIONS] [b] ON [a].[Guid] = [b].[DepotGuid] "); // 鏂板鐨凧OIN + sbSql.Append(" Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )"); + sbSql.Append(" Left JOIN [MES_STAFF] [c] ON ( [a].[create_by] = CAST([c].[id] AS NVARCHAR(50))) "); + sbSql.Append(" Left JOIN [MES_CUSTOMER] [d] ON (CAST([d].[id] AS NVARCHAR(50)) = CAST([a].[Client_Id] AS NVARCHAR(50))) "); + sbSql.Append(" Left JOIN [MES_SUPPLIER] [f] ON (CAST([f].[id] AS NVARCHAR(50)) = CAST([a].[SUPPLIER_ID] AS NVARCHAR(50))) "); + sbSql.Append(" Left JOIN [SYS_DEPARTMENT] [g] ON (CAST([g].[id] AS NVARCHAR(50)) = CAST([a].[department] AS NVARCHAR(50))) "); + sbSql.Append(" WHERE 1=1"); + sbSql.Append(keyWhere); + sbSql.Append(") T"); + sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and T.rowindex<=" + currentPage + "*" + everyPageSize); + + // 鍚屾椂闇�瑕佷慨鏀硅鏁版煡璇紝娣诲姞鐩稿悓鐨凧OIN鏉′欢 + sbSql.Append(" select count(1) as intTotal FROM [MES_DEPOTS] [a] "); + sbSql.Append(" Left JOIN [MES_DEPOT_SECTIONS] [b] ON [a].[Guid] = [b].[DepotGuid] "); // 鏂板鐨凧OIN + sbSql.Append(" Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )"); + sbSql.Append(" Left JOIN [MES_STAFF] [c] ON ( [a].[create_by] = CAST([c].[id] AS NVARCHAR(50))) "); + sbSql.Append(" Left JOIN [MES_CUSTOMER] [d] ON (CAST([d].[id] AS NVARCHAR(50)) = CAST([a].[Client_Id] AS NVARCHAR(50))) "); + sbSql.Append(" Left JOIN [MES_SUPPLIER] [f] ON (CAST([f].[id] AS NVARCHAR(50)) = CAST([a].[SUPPLIER_ID] AS NVARCHAR(50))) "); + sbSql.Append(" Left JOIN [SYS_DEPARTMENT] [g] ON (CAST([g].[id] AS NVARCHAR(50)) = CAST([a].[department] AS NVARCHAR(50))) "); + sbSql.Append(" WHERE 1=1"); + sbSql.Append(keyWhere); + var dset = new DataSet(); + try + { + dset = DbHelperSQL.Query(sbSql.ToString()); + } + catch (Exception ex) + { + LogHelper.Debug(ToString(), "GetListPage error锛�" + ex.Message); + return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触"); + } + var _pglist = new PageList<dynamic> + { + total = 0, + everyPageSize = 0, + pages = 0, + list = new List<dynamic>() + }; + if (dset != null && dset.Tables.Count > 0 && + dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹� + { + var intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString()); + var pages = intTotal % everyPageSize != 0 + ? intTotal / everyPageSize + 1 + : intTotal / everyPageSize; + _pglist.total = intTotal; + _pglist.everyPageSize = everyPageSize; + _pglist.pages = pages; + var _dy = dset.Tables[0].TableToDynamicList(); + _pglist.list = _dy; + } + return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist, + ReturnCode.Success, "璇诲彇鎴愬姛"); + } + } \ No newline at end of file diff --git a/WebApi/Gs.Wom/Service/MesScrksqDjManager.cs b/WebApi/Gs.Wom/Service/MesScrksqDjManager.cs index f98cd13..5e0934a 100644 --- a/WebApi/Gs.Wom/Service/MesScrksqDjManager.cs +++ b/WebApi/Gs.Wom/Service/MesScrksqDjManager.cs @@ -198,4 +198,69 @@ return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�"); } + /// <summary> + /// 鎾ゅ洖鎶ュ伐 + /// </summary> + /// <param name="mode"></param> + /// <returns></returns> + [RequestMethod(RequestMethods.POST)] + public ReturnDto<ExpandoObject> EditModelChbg([FromBody] dynamic mode) + { + string _guid = mode.guid; + string _billNo = mode.billNo; + string _inFieldValue = mode.inFieldValue; + string _proName = "prc_pda_scbg_withdraw"; + dynamic m = new ExpandoObject(); + m.outSum = -1; + m.outMsg = ""; + + if (!Guid.TryParse(_userGuid, out Guid userGuid)) + throw new ArgumentException("鏃犳晥鐨� UserGuid"); + if (!Guid.TryParse(_guid, out Guid orderGuid)) + throw new ArgumentException("鏃犳晥鐨� OrderGuid"); + + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand(_proName, conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 2500), + new("@outSum", SqlDbType.Int), + new("@inEdtUserGuid", userGuid), + new("@inOrderGuid", orderGuid), + new("@pi_inventoryAppBillNo",_billNo), + new("@in1", ""), + new("@in2", ""), + new("@in3", "") + }; + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + m.outMsg = parameters[0].Value.ToString(); + m.outSum = int.Parse(parameters[1].Value.ToString()); + } + catch (Exception ex) + { + LogHelper.Debug(ToString(), + "prc_pda_scbg_withdraw error锛�" + ex.Message); + m.outMsg = ex.Message; + return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, + ex.Message); + } + finally + { + conn.Close(); + } + } + } + return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�"); + } + } \ No newline at end of file -- Gitblit v1.9.3