You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

400 lines
20 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Dapper;
using Estsh.Core.Dapper;
using Estsh.Core.IRepositories;
using Estsh.Core.Model.ExcelModel;
using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using Estsh.Core.Repository.IRepositories;
using Estsh.Core.Util;
using System.Collections;
using System.Data;
using System.Text;
/***************************************************************************************************
*
* 更新人sitong.dong
* 描述:库存产量查询
* 修改时间2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Repositories
{
/// <summary>
/// 处理菜单模块的业务数据
/// </summary>
public class ProduceStockRepository : BaseRepository<GWorkorder>, IProduceStockRepository
{
public ProduceStockRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
#region 成员方法
/// <summary>
/// 根据传入条件获得菜单列表数据
/// </summary>
public List<SysPartCustOrder> getList(string strWhere, string filedOrder)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append(" select * from dbo.sys_part_cust_order ");
if (strWhere != null && !strWhere.Trim().Equals(""))
{
strSql.Append(" where " + strWhere);
}
if (filedOrder != null && !filedOrder.Trim().Equals(""))
{
strSql.Append(" order by " + filedOrder);
}
List<SysPartCustOrder> result = dbConn.Query<SysPartCustOrder>(strSql.ToString()).ToList();
return result;
}
}
/// <summary>
/// 汇总信息
/// </summary>
/// <returns></returns>
public Hashtable GetSummary(string strWhere, Pager pager)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
#if (false)
StringBuilder sql = new StringBuilder(1024);
sql.Append("SELECT type_id , ");
sql.Append(" c.model_id , ");
sql.Append(" type_name , ");
sql.Append(" model_desc , ");
sql.Append(" e.number ");
sql.Append("FROM g_workorder AS a ");
sql.Append(" INNER JOIN sys_part AS b ON a.part_id = b.part_id ");
sql.Append(" INNER JOIN sys_model AS c ON c.model_id = b.model_id ");
sql.Append(" INNER JOIN sys_model_type AS d ON c.model_type_id = d.type_id ");
sql.Append(" INNER JOIN ( SELECT c.model_id , ");
sql.Append(" COUNT(c.model_id) AS number ");
sql.Append(" FROM g_workorder AS a ");
sql.Append(" INNER JOIN sys_part AS b ON a.part_id = b.part_id ");
sql.Append(" INNER JOIN sys_model AS c ON c.model_id = b.model_id ");
sql.Append(" INNER JOIN sys_model_type AS d ON c.model_type_id = d.type_id ");
sql.Append(" LEFT JOIN g_wo_relation AS e ON e.workorder_id = a.ruid ");
sql.Append(" LEFT JOIN g_vw_order AS f ON f.order_id = e.order_id ");
sql.Append(" WHERE 1=1 " + _where + " ");
sql.Append(" GROUP BY c.model_id ");
sql.Append(" ) AS e ON e.model_id = c.model_id ");
sql.Append(" WHERE 1=1 " + _where + " ");
sql.Append("GROUP BY type_id , ");
sql.Append(" c.model_id , ");
sql.Append(" type_name , ");
sql.Append(" model_desc , ");
sql.Append(" e.number ");
return _remotingProxy.GetDataTable(sql.ToString());
#endif
Hashtable result = new Hashtable();
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
StringBuilder table = new StringBuilder();
table.Append(" dbo.g_workorder a ");
table.Append(" LEFT JOIN dbo.sys_part b ON a.part_id = b.part_id ");
table.Append(" left join dbo.sys_model c on b.model_id=c.model_id ");
parameters.Add("@Table", table.ToString());
StringBuilder column = new StringBuilder();
column.Append(" b.part_no , ");
column.Append(" COUNT(1) AS qty ");
parameters.Add("@Column", column.ToString());
parameters.Add("@OrderColumn", "b.part_no");
parameters.Add("@GroupColumn", "b.part_no");
parameters.Add("@PageSize", pager.pageSize);
parameters.Add("@CurrentPage", pager.pageNo);
parameters.Add("@Group", 1);
string where = " a.type not in ('C','K') and " + strWhere;
parameters.Add("@Condition", where);
List<GWorkorder> depts = dbConn.Query<GWorkorder>("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", depts);
result.Add("totalCount", parameters.Get<int>("@TotalCount"));
return result;
}
}
/// <summary>
/// 详细
/// </summary>
/// <param name="_where"></param>
/// <param name="typeID"></param>
/// <returns></returns>
public List<GWorkorder> GetSummaryDtail(string _where, string typeID)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT d.type_name, ");
SqlStringBuilder.Append(" g.part_id, ");
SqlStringBuilder.Append(" h.part_no, ");
SqlStringBuilder.Append(" h.part_spec, ");
SqlStringBuilder.Append(" COUNT(h.part_no) AS number, ");
SqlStringBuilder.Append(" CASE ISNULL(NULLIF(g.type, 'N'), a.type) ");
SqlStringBuilder.Append(" WHEN 'N' THEN '正常' ");
SqlStringBuilder.Append(" WHEN 'P' THEN '领料' ");
SqlStringBuilder.Append(" WHEN 'X' THEN '试制' ");
SqlStringBuilder.Append(" WHEN 'D' THEN '加拨' ");
SqlStringBuilder.Append(" WHEN 'S' THEN '库存' ");
SqlStringBuilder.Append(" END AS type ");
SqlStringBuilder.Append(" FROM g_workorder AS a ");
SqlStringBuilder.Append(" INNER JOIN sys_part AS b ON a.part_id = b.part_id ");
SqlStringBuilder.Append(" INNER JOIN sys_model AS c ON c.model_id = b.model_id ");
SqlStringBuilder.Append(" INNER JOIN sys_model_type AS d ON c.model_type_id = d.type_id ");
SqlStringBuilder.Append(" LEFT JOIN g_wo_relation AS e ON e.workorder_id = a.ruid ");
SqlStringBuilder.Append(" LEFT JOIN g_vw_order AS f ON f.order_id = e.order_id ");
SqlStringBuilder.Append(" inner join g_workorder_detail as g on a.ruid=g.workorder_id ");
SqlStringBuilder.Append(" inner join sys_part as h on g.part_id=h.part_id ");
SqlStringBuilder.Append(" WHERE 1=1 " + _where);
SqlStringBuilder.Append(" GROUP BY ");
SqlStringBuilder.Append(" g.part_id, ");
SqlStringBuilder.Append(" h.part_no, ");
SqlStringBuilder.Append(" h.part_spec, ");
SqlStringBuilder.Append(" d.type_name , ");
SqlStringBuilder.Append(" ISNULL(NULLIF(g.type, 'N'), a.type) ORDER BY type_name asc,type asc, h.part_no asc");
List<GWorkorder> result = dbConn.Query<GWorkorder>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
/// <summary>
/// 获得详细信息
/// </summary>
/// <param name="strWhere"></param>
/// <param name="pager"></param>
/// <returns></returns>
public Hashtable GetDetail(string strWhere, Pager pager)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
StringBuilder table = new StringBuilder();
table.Append(" dbo.g_workorder a ");
table.Append(" LEFT JOIN dbo.sys_part b ON a.part_id = b.part_id ");
table.Append(" left join dbo.sys_model c on b.model_id=c.model_id ");
parameters.Add("@Table", table.ToString());
StringBuilder column = new StringBuilder();
column.Append(" b.part_no , ");
column.Append(" COUNT(1) AS qty ");
parameters.Add("@Column", column.ToString());
parameters.Add("@OrderColumn", "b.part_no");
parameters.Add("@GroupColumn", "b.part_no");
parameters.Add("@PageSize", pager.pageSize);
parameters.Add("@CurrentPage", pager.pageNo);
parameters.Add("@Group", 1);
string where = " a.type not in ('C','K') and " + strWhere;
parameters.Add("@Condition", where);
List<GWorkorder> depts = dbConn.Query<GWorkorder>("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", depts);
result.Add("totalCount", parameters.Get<int>("@TotalCount"));
return result;
}
}
/// <summary>
/// 获得统计数据
/// </summary>
/// <param name="strWhere"></param>
/// <param name="pager"></param>
/// <returns></returns>
public Hashtable GetStatisticsData(string strWhere, Pager pager)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
StringBuilder table = new StringBuilder();
table.Append(" dbo.g_workorder a ");
table.Append(" LEFT JOIN dbo.sys_part b ON a.part_id = b.part_id ");
table.Append(" left join dbo.sys_model c on b.model_id=c.model_id ");
parameters.Add("@Table", table.ToString());
StringBuilder column = new StringBuilder();
column.Append(" b.part_no , ");
column.Append(" COUNT(1) AS qty ");
parameters.Add("@Column", column.ToString());
parameters.Add("@OrderColumn", "b.part_no");
parameters.Add("@GroupColumn", "b.part_no");
parameters.Add("@PageSize", pager.pageSize);
parameters.Add("@CurrentPage", pager.pageNo);
parameters.Add("@Group", 1);
string where = " a.type not in ('C','K') and " + strWhere;
parameters.Add("@Condition", where);
List<SysDept> depts = dbConn.Query<SysDept>("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", depts);
result.Add("totalCount", parameters.Get<int>("@TotalCount"));
return result;
}
}
/// <summary>
/// 根据分页条件获取分页数据列表
/// </summary>
public Hashtable getListByPage(String type_id, int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@Table", " dbo.g_workorder as a inner join sys_part as b on a.part_id=b.part_id inner join sys_model as c on c.model_id=b.model_id inner join sys_model_type as d on c.model_type_id=d.type_id inner join ( select c.model_id,count(c.model_id) as number from dbo.g_workorder as a inner join sys_part as b on a.part_id=b.part_id inner join sys_model as c on c.model_id=b.model_id inner join sys_model_type as d on c.model_type_id=d.type_id left join g_wo_relation as e on e.workorder_id=a.ruid left join g_vw_order as f on f.order_id =e.order_id ");
parameters.Add("@Column", "type_id,c.model_id,type_name,model_desc,e.number ");
parameters.Add("@OrderColumn", OrderBy);
parameters.Add("@GroupColumn", "");
parameters.Add("@PageSize", PageSize);
parameters.Add("@CurrentPage", PageIndex);
parameters.Add("@Group", 0);
parameters.Add("@Condition", " a.car_no like 'A%' AND " + strWhere + " group by c.model_id ) as e on e.model_id=c.model_id group by type_id,c.model_id,type_name,model_desc,e.number ");
List<GWorkorder> depts = dbConn.Query<GWorkorder>("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", depts);
result.Add("totalCount", parameters.Get<int>("@TotalCount"));
return result;
}
}
/// <summary>
/// 插入菜单数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int saveProduceStock(SysPartCustOrder htParams)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO sys_part_cust_order (part_id ");
SqlStringBuilder.Append(" , cust_order ");
SqlStringBuilder.Append(" , create_userid ");
SqlStringBuilder.Append(" , create_time ");
SqlStringBuilder.Append(" , enabled ");
SqlStringBuilder.Append(" ,ship_unit) ");
SqlStringBuilder.Append(" VALUES(@partId ");
SqlStringBuilder.Append(" , @custOrder ");
SqlStringBuilder.Append(" , @createUserid ");
SqlStringBuilder.Append(" , CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append(" , 'Y' ");
SqlStringBuilder.Append(" ,@shipUnit)");
int result = dbConn.Execute(SqlStringBuilder.ToString(), htParams);
return result;
}
}
/// <summary>
/// 更新菜单数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int updateProduceStock(SysPartCustOrder htParams)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("update sys_part_cust_order ");
SqlStringBuilder.Append("SET cust_order=@custOrder ");
SqlStringBuilder.Append(" , ship_unit=@shipUnit ");
SqlStringBuilder.Append(" ,update_userid = @updateUserId ");
SqlStringBuilder.Append(" ,update_time = CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append("WHERE part_id=@partId ");
int result = dbConn.Execute(SqlStringBuilder.ToString(), htParams);
return result;
}
}
/// <summary>
/// 删除菜单数据
/// </summary>
/// <param name="ruid"></param>
/// <returns></returns>
public int deleteProduceStock(String part_id)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
DynamicParameters htparams = new DynamicParameters();
htparams.Add("@part_id", part_id);
String delStr = "update sys_part_cust_order set Enabled='N' where part_id = @part_id";
int result = dbConn.Execute(delStr, htparams);
return result;
}
}
/// <summary>
/// 获取下拉框菜单数据
/// </summary>
/// <returns></returns>
public List<KeyValueResult> getType()
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select type_id as [value],type_name+':'+type_desc as [key] from dbo.sys_model_type where enabled='Y' ");
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(strSql.ToString()).ToList();
return result;
}
}
/// <summary>
/// 获取分页数据列表
/// </summary>
/// <param name="PageSize">一页显示多少条数据</param>
/// <param name="PageIndex">当前第几页</param>
/// <param name="strWhere">条件</param>
/// <param name="OrderBy">排序字段</param>
/// <returns></returns>
public Hashtable getTableListByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@Table", "dbo.sys_part_cust_order a LEFT JOIN sys_part b ON a.part_id = b.part_id ");
parameters.Add("@Column", "b.part_no,b.part_spec,a.*,a.part_id as part_id_a");
parameters.Add("@OrderColumn", OrderBy);
parameters.Add("@GroupColumn", "");
parameters.Add("@PageSize", PageSize);
parameters.Add("@CurrentPage", PageIndex);
parameters.Add("@Group", 0);
parameters.Add("@Condition", strWhere);
List<ProduceStock> dataList = dbConn.Query<ProduceStock>("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", dataList);
result.Add("totalCount", parameters.Get<int>("@TotalCount"));
return result;
}
}
#endregion 成员方法
}
}