640 lines
24 KiB
C#
640 lines
24 KiB
C#
using Dapper;
|
|
using dccdc.Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace dccdc.DAL
|
|
{
|
|
public class sqwzcgDal
|
|
{
|
|
public List<sqwzcgModel> GetAllList(string id)
|
|
{
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
string sql = "select * from sqwzcg where 1=1";
|
|
if (!string.IsNullOrEmpty(id))
|
|
{
|
|
sql += " and id=@id";
|
|
}
|
|
return conn.Query<sqwzcgModel>(sql, new { @id = id }).ToList();
|
|
}
|
|
}
|
|
|
|
public List<sqwzcgModel> GetAllList(string id, string zt)
|
|
{
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
string sql = "select * from sqwzcg where 1=1";
|
|
if (!string.IsNullOrEmpty(id))
|
|
{
|
|
sql += " and id=@id";
|
|
}
|
|
if (!string.IsNullOrEmpty(zt))
|
|
{
|
|
sql += " and zt=@zt";
|
|
}
|
|
return conn.Query<sqwzcgModel>(sql, new { @id = id, @zt = zt }).ToList();
|
|
}
|
|
}
|
|
|
|
public object save(sqwzcgModel model)
|
|
{
|
|
string sql = "";
|
|
if (model.id == 0)
|
|
{
|
|
sql = @"INSERT INTO [dbo].[sqwzcg]
|
|
([sqdh]
|
|
,[sqsj]
|
|
,[sqrid]
|
|
,[sqr]
|
|
,[ksid]
|
|
,[ksmc]
|
|
,[jflyid]
|
|
,[jfly]
|
|
,[je]
|
|
,[bz]
|
|
,[mx]
|
|
,[fyly]
|
|
,[fydh]
|
|
,[zt]
|
|
,[spr1]
|
|
,[sptime1]
|
|
,[spzt1]
|
|
,[spr2]
|
|
,[sptime2]
|
|
,[spzt2]
|
|
,[spr3]
|
|
,[sptime3]
|
|
,[spzt3]
|
|
,[spr4]
|
|
,[sptime4]
|
|
,[spzt4])
|
|
VALUES
|
|
(@sqdh
|
|
,@sqsj
|
|
,@sqrid
|
|
,@sqr
|
|
,@ksid
|
|
,@ksmc
|
|
,@jflyid
|
|
,@jfly
|
|
,@je
|
|
,@bz
|
|
,@mx
|
|
,@fyly
|
|
,@fydh
|
|
,@zt
|
|
,@spr1
|
|
,@sptime1
|
|
,@spzt1
|
|
,@spr2
|
|
,@sptime2
|
|
,@spzt2
|
|
,@spr3
|
|
,@sptime3
|
|
,@spzt3
|
|
,@spr4
|
|
,@sptime4
|
|
,@spzt4)";
|
|
}
|
|
else
|
|
{
|
|
sql = @"UPDATE [dbo].[sqwzcg]
|
|
SET [sqdh] = @sqdh
|
|
,[sqsj] = @sqsj
|
|
,[sqrid] = @sqrid
|
|
,[sqr] = @sqr
|
|
,[ksid] = @ksid
|
|
,[ksmc] = @ksmc
|
|
,[jflyid] = @jflyid
|
|
,[jfly] = @jfly
|
|
,[je] = @je
|
|
,[bz] = @bz
|
|
,[mx] = @mx
|
|
,[fyly] = @fyly
|
|
,[fydh] = @fydh
|
|
,[zt] = @zt
|
|
,[spr1] = @spr1
|
|
,[sptime1] = @sptime1
|
|
,[spzt1] = @spzt1
|
|
,[spr2] = @spr2
|
|
,[sptime2] = @sptime2
|
|
,[spzt2] = @spzt2
|
|
,[spr3] = @spr3
|
|
,[sptime3] = @sptime3
|
|
,[spzt3] = @spzt3
|
|
,[spr4] = @spr4
|
|
,[sptime4] = @sptime4
|
|
,[spzt4] = @spzt4
|
|
WHERE id=@id";
|
|
}
|
|
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
try
|
|
{
|
|
int result = conn.Execute(sql, model);
|
|
if (result > 0)
|
|
return new { State = 1, Message = "保存成功!" };
|
|
else
|
|
return new { State = 0, Message = "保存失败!" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
|
|
public List<sqwzcgModel> getListBydh(string dh)
|
|
{
|
|
string sql = "select * from sqwzcg where sqdh in (@dh)";
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
return conn.Query<sqwzcgModel>(sql, new { dh = dh }).ToList();
|
|
}
|
|
}
|
|
|
|
|
|
public object opSave(string id, int ksid, string ksmc, string items, int sqrid, string sqr, string je, string bz, int zt, string ymcg, string fyly1, string fyly2, string fyly, string fydh, string fydhs, string fydh2)
|
|
{
|
|
string errmsg = "";
|
|
string sqdh = getckkdh(out errmsg);
|
|
if (errmsg != "")
|
|
return new { State = 0, Message = errmsg };
|
|
sqwzcgModel model = new sqwzcgModel();
|
|
model.sqdh = sqdh;
|
|
model.sqrid = sqrid;
|
|
model.sqr = sqr;
|
|
model.sqsj = DateTime.Now;
|
|
model.tjsj = DateTime.Now;
|
|
model.ksid = ksid;
|
|
model.ksmc = ksmc;
|
|
model.je = Convert.ToDecimal(je);
|
|
model.bz = bz;
|
|
model.ymcg = Convert.ToBoolean(ymcg);
|
|
model.fyly1 = Convert.ToBoolean(fyly1);
|
|
model.fyly2 = Convert.ToBoolean(fyly2);
|
|
model.fyly = fyly;
|
|
model.fydh = fydh;
|
|
model.fydhs = fydhs;
|
|
model.fydh2 = fydh2;
|
|
model.zt = zt;
|
|
|
|
string sql = @"INSERT INTO [dbo].[sqwzcg]
|
|
([sqdh],[sqsj],[tjsj],[sqrid],[sqr],[ksid],[ksmc],[je],[bz],[ymcg],[fyly1],[fyly2],[fyly],[fydh],[fydhs],[fydh2],[zt])
|
|
VALUES
|
|
(@sqdh,@sqsj,@tjsj,@sqrid,@sqr,@ksid,@ksmc,@je,@bz,@ymcg,@fyly1,@fyly2,@fyly,@fydh,@fydhs,@fydh2,@zt)select SCOPE_IDENTITY()";
|
|
|
|
int sqdid = 0;
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
try
|
|
{
|
|
sqdid = conn.Query<int>(sql, model).FirstOrDefault();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
|
|
List<sqwzcgmxModel> models = new List<sqwzcgmxModel>();
|
|
sqwzcgmxModel m;
|
|
foreach (string item in items.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
|
|
{
|
|
string[] itemss = item.Split('|');
|
|
if (itemss.Length == 6)
|
|
{
|
|
m = new sqwzcgmxModel();
|
|
m.sqdid = sqdid;
|
|
m.wzid = Convert.ToInt32(itemss[0]);
|
|
m.wzmc = itemss[1];
|
|
m.wzgg = itemss[2];
|
|
m.wzdw = itemss[3];
|
|
m.dj = Convert.ToDecimal(itemss[4]);
|
|
m.sl = Convert.ToDecimal(itemss[5]);
|
|
m.czsj = DateTime.Now;
|
|
models.Add(m);
|
|
}
|
|
}
|
|
|
|
string sql2 = @"INSERT INTO [dbo].[sqwzcgmx]
|
|
([sqdid],[wzid],[wzmc],[wzgg],[wzdw],[sl],[dj],[czsj])
|
|
VALUES
|
|
(@sqdid,@wzid,@wzmc,@wzgg,@wzdw,@sl,@dj,@czsj)";
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
try
|
|
{
|
|
int result = conn.Execute(sql2, models);
|
|
if (result > 0)
|
|
{
|
|
return new { State = 1, Message = "操作成功", id = sqdid };
|
|
}
|
|
else
|
|
return new { State = 0, Message = "操作失败" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
|
|
public object opSave2(string id, int ksid, string ksmc, string items, int sqrid, string sqr, string je, string bz, int zt, string ymcg, string fyly1, string fyly2, string fyly, string fydh, string fydhs, string fydh2)
|
|
{
|
|
sqwzcgModel model = new sqwzcgModel();
|
|
model.id = Convert.ToInt32(id);
|
|
model.je = Convert.ToDecimal(je);
|
|
model.bz = bz;
|
|
model.ymcg = Convert.ToBoolean(ymcg);
|
|
model.fyly1 = Convert.ToBoolean(fyly1);
|
|
model.fyly2 = Convert.ToBoolean(fyly2);
|
|
model.fyly = fyly;
|
|
model.fydh = fydh;
|
|
model.fydhs = fydhs;
|
|
model.fydh2 = fydh2;
|
|
model.zt = zt;
|
|
|
|
string sql = @"UPDATE [dbo].[sqwzcg]
|
|
SET [je] = @je,[bz] = @bz,[ymcg] = @ymcg,[fyly1] = @fyly1,[fyly2] = @fyly2,[fyly] = @fyly,[fydh] = @fydh,[fydhs] = @fydhs,[fydh2] = @fydh2,[zt] = @zt
|
|
WHERE id=@id";
|
|
|
|
string sql3 = "delete from sqwzcgmx where sqdid=@id";
|
|
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
try
|
|
{
|
|
conn.Execute(sql, model);
|
|
conn.Execute(sql3, new { @id = id });
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
|
|
List<sqwzcgmxModel> models = new List<sqwzcgmxModel>();
|
|
sqwzcgmxModel m;
|
|
foreach (string item in items.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
|
|
{
|
|
string[] itemss = item.Split('|');
|
|
if (itemss.Length == 6)
|
|
{
|
|
m = new sqwzcgmxModel();
|
|
m.sqdid = Convert.ToInt32(id);
|
|
m.wzid = Convert.ToInt32(itemss[0]);
|
|
m.wzmc = itemss[1];
|
|
m.wzgg = itemss[2];
|
|
m.wzdw = itemss[3];
|
|
m.dj = Convert.ToDecimal(itemss[4]);
|
|
m.sl = Convert.ToDecimal(itemss[5]);
|
|
m.czsj = DateTime.Now;
|
|
models.Add(m);
|
|
}
|
|
}
|
|
|
|
string sql2 = @"INSERT INTO [dbo].[sqwzcgmx]
|
|
([sqdid],[wzid],[wzmc],[wzgg],[wzdw],[sl],[dj],[czsj])
|
|
VALUES
|
|
(@sqdid,@wzid,@wzmc,@wzgg,@wzdw,@sl,@dj,@czsj)";
|
|
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
try
|
|
{
|
|
int result = conn.Execute(sql2, models);
|
|
if (result > 0)
|
|
{
|
|
//退货
|
|
//ck(models, -1);
|
|
return new { State = 1, Message = "修改成功", id = id };
|
|
}
|
|
else
|
|
return new { State = 0, Message = "操作失败" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
|
|
public object updateXmjf(string id, string fyly, string fydh)
|
|
{
|
|
string sql = @"UPDATE [dbo].[sqwzcg]
|
|
SET [fyly] = @fyly,[fydh] = @fydh
|
|
WHERE id=@id";
|
|
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
try
|
|
{
|
|
conn.Execute(sql, new { @id = id, fyly = fyly, fydh = fydh });
|
|
return new { State = 1, Message = "修改成功" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
|
|
public object opSp(string id, int sprid, string spr, string yj, bool ty)
|
|
{
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
string sql2 = "select * from sqwzcg where 1=1";
|
|
if (!string.IsNullOrEmpty(id))
|
|
{
|
|
sql2 += " and id=@id";
|
|
}
|
|
sqwzcgModel model = conn.Query<sqwzcgModel>(sql2, new { @id = id }).FirstOrDefault();
|
|
if (model == null)
|
|
return new { State = 0, Message = "不存在记录" };
|
|
else
|
|
{
|
|
string sql = "";
|
|
int zt = 0;
|
|
switch (model.zt)
|
|
{
|
|
case 1:
|
|
sql = "update sqwzcg set sprid1=@sprid, spr1=@spr,sptime1=@sptime,spnr1=@spnr,zt=@zt where id=@id";
|
|
if (ty) { zt = 2; } else { zt = -1; }
|
|
break;
|
|
case 2:
|
|
sql = "update sqwzcg set sprid2=@sprid,spr2=@spr,sptime2=@sptime,spnr2=@spnr,zt=@zt where id=@id";
|
|
if (ty) { zt = 7; } else { zt = -2; }
|
|
break;
|
|
case 7:
|
|
sql = "update sqwzcg set sprid3=@sprid,spr3=@spr,sptime3=@sptime,spnr3=@spnr,zt=@zt where id=@id";
|
|
if (ty) { zt = 8; } else { zt = -7; }
|
|
break;
|
|
}
|
|
|
|
try
|
|
{
|
|
int result = conn.Execute(sql, new { @id = id, @sprid = sprid, @spr = spr, @sptime = DateTime.Now, @spnr = yj, @zt = zt });
|
|
if (result > 0)
|
|
{
|
|
return new { State = 1, Message = "修改成功" };
|
|
}
|
|
else
|
|
return new { State = 0, Message = "修改失败" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public object opSpOneself(string id, int sprid, string spr, string yj, bool ty, string zw)
|
|
{
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
string sql2 = "select * from sqwzcg where 1=1";
|
|
if (!string.IsNullOrEmpty(id))
|
|
{
|
|
sql2 += " and id=@id";
|
|
}
|
|
sqwzcgModel model = conn.Query<sqwzcgModel>(sql2, new { @id = id }).FirstOrDefault();
|
|
if (model == null)
|
|
return new { State = 0, Message = "不存在记录" };
|
|
else
|
|
{
|
|
string sql = "";
|
|
switch (zw)
|
|
{
|
|
case "科室领导":
|
|
sql = "update sqwzcg set sprid1=@sprid, spr1=@spr,sptime1=@sptime,spnr1=@spnr where id=@id";
|
|
break;
|
|
case "分管领导":
|
|
sql = "update sqwzcg set sprid2=@sprid, spr2=@spr,sptime2=@sptime,spnr2=@spnr where id=@id";
|
|
break;
|
|
}
|
|
|
|
try
|
|
{
|
|
int result = conn.Execute(sql, new { @id = id, @sprid = sprid, @spr = spr, @sptime = DateTime.Now, @spnr = yj });
|
|
if (result > 0)
|
|
{
|
|
return new { State = 1, Message = "修改成功" };
|
|
}
|
|
else
|
|
return new { State = 0, Message = "修改失败" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public object opRk(string id, int rkrid, string rkr, out bool resultP)
|
|
{
|
|
resultP = false;
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
string sql2 = "select * from sqwzcg where 1=1";
|
|
if (!string.IsNullOrEmpty(id))
|
|
{
|
|
sql2 += " and id=@id";
|
|
}
|
|
sqwzcgModel model = conn.Query<sqwzcgModel>(sql2, new { @id = id }).FirstOrDefault();
|
|
if (model == null)
|
|
return new { State = 0, Message = "不存在记录" };
|
|
else
|
|
{
|
|
string sql = "update sqwzcg set rkrid=@rkrid, rkr=@rkr,rktime=@rktime where id=@id";
|
|
try
|
|
{
|
|
int result = conn.Execute(sql, new { @id = id, @rkrid = rkrid, @rkr = rkr, @rktime = DateTime.Now });
|
|
if (result > 0)
|
|
{
|
|
resultP = true;
|
|
return new { State = 1, Message = "修改成功" };
|
|
}
|
|
else
|
|
return new { State = 0, Message = "修改失败" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public object opCg(string id, int cgrid, string cgr)
|
|
{
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
string sql2 = "select * from sqwzcg where 1=1";
|
|
if (!string.IsNullOrEmpty(id))
|
|
{
|
|
sql2 += " and id=@id";
|
|
}
|
|
sqwzcgModel model = conn.Query<sqwzcgModel>(sql2, new { @id = id }).FirstOrDefault();
|
|
if (model == null)
|
|
return new { State = 0, Message = "不存在记录" };
|
|
else
|
|
{
|
|
string sql = "update sqwzcg set cgrid=@cgrid, cgr=@cgr,cgtime=@cgtime where id=@id";
|
|
try
|
|
{
|
|
int result = conn.Execute(sql, new { @id = id, @cgrid = cgrid, @cgr = cgr, @cgtime = DateTime.Now });
|
|
if (result > 0)
|
|
{
|
|
return new { State = 1, Message = "修改成功" };
|
|
}
|
|
else
|
|
return new { State = 0, Message = "修改失败" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//获取申请单号
|
|
private string getckkdh(out string errmsg)
|
|
{
|
|
errmsg = "";
|
|
string result = "";
|
|
string start = DateTime.Now.ToString("yyyyMM") + "0001";
|
|
string end = DateTime.Now.ToString("yyyyMM") + "9999";
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
string sql = "select top 1 sqdh from sqwzcg where sqdh >= '" + start + "' and sqdh<= '" + end + "' order by id desc";
|
|
try
|
|
{
|
|
var result2 = conn.ExecuteScalar(sql);
|
|
if (result2 == null)
|
|
result = start;
|
|
else
|
|
{
|
|
result = (Convert.ToInt32(result2) + 1).ToString();
|
|
if (result == end)
|
|
errmsg = "单号不足!";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
errmsg = ex.Message;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public object delete(string id)
|
|
{
|
|
string sql = "delete from sqwzcg where id=@id";
|
|
string sql2 = "delete from sqwzcgmx where sqdid=@id";
|
|
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
try
|
|
{
|
|
int result = conn.Execute(sql, new { id = id });
|
|
result = conn.Execute(sql2, new { id = id });
|
|
if (result > 0)
|
|
{
|
|
return new { State = 1, Message = "操作成功!" };
|
|
}
|
|
else
|
|
return new { State = 0, Message = "操作失败!" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new { State = 0, Message = ex.Message };
|
|
}
|
|
}
|
|
}
|
|
|
|
public int getCount(string key)
|
|
{
|
|
string sql = "select count(1) from dbo.sqwzcg where 1=1";
|
|
if (!string.IsNullOrEmpty(key))
|
|
{
|
|
sql += " and ksid = @key";
|
|
}
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
return conn.ExecuteScalar<int>(sql, new { key = key });
|
|
}
|
|
}
|
|
|
|
public List<sqwzcgModel> getPage(int page, int pagesize, string key)
|
|
{
|
|
string sql = "select *,row_number() over(order by id desc) as rownum from sqwzcg where 1=1";
|
|
if (!string.IsNullOrEmpty(key))
|
|
{
|
|
sql += " and ksid = @key";
|
|
}
|
|
sql = "select * from (" + sql + ") t where t.rownum>(" + page + "-1)*" + pagesize + " and rownum<=" + page + "*" + pagesize;
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
return conn.Query<Models.sqwzcgModel>(sql, new { key = key }).ToList();
|
|
}
|
|
}
|
|
|
|
public int getCountLevel(string where)
|
|
{
|
|
string sql = "select count(1) from dbo.sqwzcg";
|
|
if (!string.IsNullOrEmpty(where))
|
|
{
|
|
sql += " where " + where;
|
|
}
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
return conn.ExecuteScalar<int>(sql);
|
|
}
|
|
}
|
|
|
|
public List<sqwzcgModel> getPageLevel(int page, int pagesize, string where)
|
|
{
|
|
string sql = "select *,row_number() over(order by id desc) as rownum from sqwzcg";
|
|
if (!string.IsNullOrEmpty(where))
|
|
{
|
|
sql += " where " + where;
|
|
}
|
|
sql = "select * from (" + sql + ") t where t.rownum>(" + page + "-1)*" + pagesize + " and rownum<=" + page + "*" + pagesize;
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
return conn.Query<Models.sqwzcgModel>(sql).ToList();
|
|
}
|
|
}
|
|
|
|
public object getcgxqd(string bt, string et)
|
|
{
|
|
//throw new NotImplementedException();
|
|
string sql = "select sqdh,sqr,sqsj,je,ksmc,id from sqwzcg where zt=8 and rkrid is null ";
|
|
DateTime bt1 = new DateTime();
|
|
DateTime bt2 = new DateTime();
|
|
if (DateTime.TryParse(bt, out bt1))
|
|
{
|
|
sql += " and sqsj>=@bt1";
|
|
}
|
|
if (DateTime.TryParse(et, out bt2))
|
|
{
|
|
sql += " and sqsj<@bt2";
|
|
bt2 = bt2.AddDays(1);
|
|
}
|
|
sql += " order by id desc";
|
|
using (IDbConnection conn = CommHelper.GetSqlConnection())
|
|
{
|
|
return conn.Query(sql, new { bt1, bt2 }).ToList();
|
|
}
|
|
}
|
|
}
|
|
}
|