| | |
| | | using System.Data; |
| | | using System.Data.SqlClient; |
| | | using System.Dynamic; |
| | | using System.Text; |
| | | using Gs.BaseInfo.Models; |
| | | using Gs.Entity.BaseInfo; |
| | | using Gs.Entity.Sys; |
| | | using Gs.Toolbox; |
| | |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using SqlSugar; |
| | | using System.Data; |
| | | using System.Data.SqlClient; |
| | | using System.Dynamic; |
| | | using System.Text; |
| | | using SqlDataAdapter = System.Data.SqlClient.SqlDataAdapter; |
| | | |
| | | namespace Gs.BaseInfo.Services; |
| | |
| | | try |
| | | { |
| | | var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere); |
| | | var _sbBy =new StringBuilder(query.sortName + " " + query.sortOrder); |
| | | var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder); |
| | | var totalCount = 0; |
| | | var itemsList = Db |
| | | .Queryable<MesItems, SysOrganization, MesUnit, MesUnit, MesUnit, |
| | | MesUnit, MesUnit, MesUnit, MesDepots>( |
| | | (a, org, c, d, e, f, g, h, m) => new object[] |
| | | MesUnit, MesUnit, MesUnit, MesDepots, MesItemType>( |
| | | (a, org, c, d, e, f, g, h, m, n) => new object[] |
| | | { |
| | | JoinType.Left, a.FSubsidiary == org.Fid, |
| | | JoinType.Left, a.ItemUnit == c.Id.ToString(), |
| | |
| | | JoinType.Left, a.Storeunit == f.Id.ToString(), |
| | | JoinType.Left, a.SubconUnit == g.Id.ToString(), |
| | | JoinType.Left, a.ProduceUnit == h.Id.ToString(), |
| | | JoinType.Left, a.DepotCode == m.DepotId.ToString() |
| | | JoinType.Left, a.DepotCode == m.DepotId.ToString(), |
| | | JoinType.Left, a.Fmaterialgroup == n.Id.ToString() |
| | | }) |
| | | .Select((a, org, c, d, e, f, g, h, m) => new MesItems |
| | | .Select((a, org, c, d, e, f, g, h, m, n) => new MesItems |
| | | { |
| | | chkInt = false, |
| | | FSubsidiary = "(" + org.FNumber + ")" + org.Name, |
| | | ItemUnit = c.Fname, |
| | | Fpurchaseunitid = d.Fname, |
| | |
| | | SubconUnit = g.Fname, |
| | | ProduceUnit = h.Fname, |
| | | DepotCode = m.DepotName, |
| | | Fmaterialgroup = n.Tname, |
| | | Fforbidstatus = a.Fforbidstatus + ":" + (a.Fforbidstatus == "A" ? "正常" : "禁用"), |
| | | DataType = a.DataType + ":" |
| | | + SqlFunc.IF(a.DataType == "Z").Return("暂存") |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 读取 |
| | | /// </summary> |
| | |
| | | return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "读取失败!"); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [RequestMethod(RequestMethods.POST)] |
| | | public ReturnDto<ExpandoObject> GetModelByOrg([FromBody] dynamic model) |
| | | { |
| | | string itemNo = model.itemNo; |
| | | string orgId = model.orgId; |
| | | dynamic m = new ExpandoObject(); |
| | | SqlParameter[] parameters = |
| | | { |
| | | new("@inItemNo", itemNo), |
| | | new("@inOrgId", orgId), |
| | | }; |
| | | var dset = new DataSet(); |
| | | try |
| | | { |
| | | dset = DbHelperSQL.RunProcedure("[prc_item_detailByOrg]", parameters, "0"); |
| | | if (dset != null && dset.Tables.Count > 0 && |
| | | dset.Tables[0].Rows.Count > 0) |
| | | { |
| | | var dr = dset.Tables[0].Rows[0]; |
| | | m = dr.RowToDynamic(); |
| | | return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "读取成功!"); |
| | | } |
| | | return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "读取失败,找不到该物料!"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Debug(ToString(), ex.Message); |
| | | return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "读取失败," + ex.Message.ToString()); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 读取列表,支持分页 |
| | |
| | | string sortName = model.sortName; |
| | | string keyWhere = model.keyWhere; |
| | | string keyType = model.keyType; |
| | | string keyWord = model.keyWord; //这个pguid,作为方案的主键 |
| | | var dset = new DataSet(); |
| | | try |
| | | { |
| | |
| | | new("@inSortOrder", ""), |
| | | new("@inQueryWhere", keyWhere), |
| | | new("@inP1",keyType),//当为:检验项目,iqc,ipqc,fqc时,免检时 特别加上过滤条件 |
| | | new("@inP2", "") |
| | | new("@inP2", keyWord) //这个pguid,作为方案的主键 |
| | | }; |
| | | foreach (var parameter in parameters) |
| | | cmd.Parameters.Add(parameter); |
| | |
| | | System.Text.StringBuilder sbJoin = new StringBuilder(); |
| | | sbJoin.Append(" FROM MES_ITEMS [a]"); |
| | | sbJoin.Append(" Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )"); |
| | | sbJoin.Append(" left join SYS_USER_BIND b on (b.userGuid='"+ keyType + "' and b.aboutGuid=a.guid)"); |
| | | sbJoin.Append(" left join SYS_USER_BIND b on (b.userGuid='" + keyType + "' and b.aboutGuid=a.item_id and b.fType='物料分区')"); |
| | | sbJoin.Append(" where 1=1 "); |
| | | sbJoin.Append(keyWhere); |
| | | var sbSql = new StringBuilder(); |
| | |
| | | ReturnCode.Success, "读取成功"); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 批量设置提前到货日期 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [RequestMethod(RequestMethods.POST)] |
| | | public ReturnDto<int?> SetDays([FromBody] dynamic model) |
| | | { |
| | | string guidList = model.guidList; |
| | | string bz10 = model.bz10; |
| | | string percent = model.percent; |
| | | string bz09 = model.bz09; |
| | | if (string.IsNullOrEmpty(bz09)) |
| | | bz09 = null; |
| | | |
| | | int rtnInt = (int)ReturnCode.Default; |
| | | |
| | | // 构建要更新的字段(只包含非空值) |
| | | var setParts = new List<string>(); |
| | | var parameters = new List<SqlParameter>(); |
| | | |
| | | if (!string.IsNullOrWhiteSpace(bz10)) |
| | | { |
| | | setParts.Add("bz10 = @bz10"); |
| | | parameters.Add(new SqlParameter("@bz10", SqlDbType.NVarChar) { Value = bz10.Trim() }); |
| | | } |
| | | |
| | | if (!string.IsNullOrWhiteSpace(percent)) |
| | | { |
| | | setParts.Add("loss_percent = @percent"); |
| | | parameters.Add(new SqlParameter("@percent", SqlDbType.NVarChar) { Value = percent.Trim() }); |
| | | } |
| | | |
| | | if (!string.IsNullOrWhiteSpace(bz09)) |
| | | { |
| | | setParts.Add("bz09 = @bz09"); |
| | | parameters.Add(new SqlParameter("@bz09", SqlDbType.NVarChar) { Value = bz09.Trim() }); |
| | | } |
| | | |
| | | if (setParts.Count == 0) |
| | | { |
| | | // 没有可更新的字段 |
| | | return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "没有需要更新的字段"); |
| | | } |
| | | |
| | | // 构建 SQL,使用参数化避免注入 |
| | | var sql = new StringBuilder(); |
| | | sql.Append("UPDATE MES_ITEMS SET "); |
| | | sql.Append(string.Join(", ", setParts)); |
| | | sql.Append(" WHERE guid IN (SELECT line FROM dbo.fn_split(@guidList,','))"); |
| | | |
| | | try |
| | | { |
| | | using (var conn = new SqlConnection(DbHelperSQL.strConn)) |
| | | using (var cmd = new SqlCommand(sql.ToString(), conn)) |
| | | { |
| | | // 添加 guidList 参数 |
| | | cmd.Parameters.Add(new SqlParameter("@guidList", SqlDbType.NVarChar) { Value = guidList ?? string.Empty }); |
| | | |
| | | // 添加可能的更新字段参数 |
| | | foreach (var p in parameters) |
| | | cmd.Parameters.Add(p); |
| | | |
| | | conn.Open(); |
| | | var rows = cmd.ExecuteNonQuery(); |
| | | rtnInt = rows; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Debug(this.ToString(), "SetDays 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, "操作成功!"); |
| | | else |
| | | return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "操作失败,请重试!"); |
| | | } |
| | | |
| | | } |