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.

147 lines
7.8 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 System.Collections;
using Estsh.Core.Dapper;
using Estsh.Core.Models;
using System.Data;
using System.Text;
using Dapper;
using Estsh.Core.Repository.IRepositories;
using Estsh.Core.Model.Result;
using Estsh.Core.Model.ExcelModel;
/***************************************************************************************************
*
* 更新人sitong.dong
* 描述BOM管理数据访问类
* 修改时间2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Repositories
{
/// <summary>
/// BOM管理数据访问类
/// </summary>
public class BOMSearchRepository : BaseRepository<SysBom>, IBOMSearchRepository
{
public BOMSearchRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
/// <summary>
/// 获取分页数据列表
/// </summary>
public Hashtable getListByPage(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", " sys_bom a left join sys_bom_detail b on a.bom_id=b.bom_id left join sys_part c on b.part_no=c.part_no left join sys_part d on b.item_part_no=d.part_no ");
parameters.Add("@Column", " a.bom_id,a.part_no,c.part_spec,c.part_spec2,a.unit,a.remark,a.start_ymd,b.item_part_id,b.item_part_no,d.part_spec as item_part_spec,d.part_spec2 as item_part_spec2,b.item_qty, " +
" b.item_unit,b.version,a.factory_code,b.create_time,b.enabled ");
parameters.Add("@OrderColumn", OrderBy);
parameters.Add("@GroupColumn", "");
parameters.Add("@PageSize", PageSize);
parameters.Add("@CurrentPage", PageIndex);
parameters.Add("@Group", 0);
parameters.Add("@Condition", strWhere);
List<SysBom> depts = dbConn.Query<SysBom>("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", depts);
result.Add("totalCount", parameters.Get<int>("@TotalCount"));
return result;
}
}
public List<SysPart> GetPartInfo(string part_no)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string sql = "SELECT part_id,part_no,part_spec,default_box_qty FROM sys_part (NOLOCK) WHERE enabled='Y' AND part_no LIKE '" + part_no + "%' ORDER BY part_no";
List<SysPart> result = dbConn.Query<SysPart>(sql).ToList();
return result;
}
}
public List<BOMDefine> getExpotBOMList(String bomType, String partId, String sort, String direction)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT ");
SqlStringBuilder.Append(" d.part_no as part_no_f ");//父阶零件号
SqlStringBuilder.Append(" , e.part_no as part_no_z ");//子阶零件号
SqlStringBuilder.Append(" , a.bom_type ");//BOM类型
SqlStringBuilder.Append(" , '' as 'ItemGroup' ");//分组
SqlStringBuilder.Append(" , b.location ");//位置
SqlStringBuilder.Append(" , '' as 'Version' ");//版本
SqlStringBuilder.Append(" , c.process_name ");//工站
SqlStringBuilder.Append(" , b.step_type ");//工步序号
SqlStringBuilder.Append(" , 'N' as 'virtual_order' ");//虚阶
SqlStringBuilder.Append(" , d.part_spec AS 'part_spec_f' ");//父阶零件号描述
SqlStringBuilder.Append(" , e.part_spec AS 'part_spec_z' ");//子阶零件号描述
//SqlStringBuilder.Append(" , c.process_name AS '流程名称' ");
//SqlStringBuilder.Append(" , b.location AS '显示位置' ");
SqlStringBuilder.Append("FROM sys_bom a, sys_bom_detail b ");
SqlStringBuilder.Append(" LEFT JOIN sys_process c ON b.process_id = c.process_id, sys_part d, sys_part e ");
SqlStringBuilder.Append("WHERE a.part_id = d.part_id ");
SqlStringBuilder.Append(" AND b.item_part_id = e.part_id ");
SqlStringBuilder.Append(" AND a.bom_id = b.bom_id ");
SqlStringBuilder.Append(" AND d.part_id = @part_id ");
SqlStringBuilder.Append(" AND a.bom_type = @bom_type ");
SqlStringBuilder.Append(" AND a.enabled = 'Y' ");
SqlStringBuilder.Append("ORDER BY e.part_no ");
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@part_id", partId);
parameters.Add("@bom_type", bomType);
List<BOMDefine> result = dbConn.Query<BOMDefine>(SqlStringBuilder.ToString(), parameters).ToList();
return result;
}
}
public List<BOMDefine> exportALL(String bomType, String sort, String direction)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" d.part_no_f ");//父阶零件号
SqlStringBuilder.Append(" , e.part_no_z ");//子阶零件号
SqlStringBuilder.Append(" , a.bom_type ");//BOM类型
SqlStringBuilder.Append(" , '' as 'ItemGroup' ");//分组
SqlStringBuilder.Append(" , b.location ");//位置
SqlStringBuilder.Append(" , '' as 'Version' ");//版本
SqlStringBuilder.Append(" , c.process_name ");//工站
SqlStringBuilder.Append(" , b.step_type ");//工步序号
SqlStringBuilder.Append(" , 'N' as 'virtual_order' ");//虚阶
SqlStringBuilder.Append(" , d.part_spec AS 'part_spec_f' ");//父阶零件号描述
SqlStringBuilder.Append(" , e.part_spec AS 'part_spec_z' ");//子阶零件号描述
SqlStringBuilder.Append("FROM sys_bom a , ");
SqlStringBuilder.Append("sys_bom_detail b ");
SqlStringBuilder.Append("LEFT JOIN sys_process c ON b.process_id = c.process_id , ");
SqlStringBuilder.Append("sys_part d , ");
SqlStringBuilder.Append("sys_part e ");
SqlStringBuilder.Append("WHERE a.part_id = d.part_id ");
SqlStringBuilder.Append("AND b.item_part_id = e.part_id ");
SqlStringBuilder.Append("AND a.bom_id = b.bom_id ");
SqlStringBuilder.Append("AND a.bom_type = @bom_type ");
//lvf 20210317 加入过滤条件过滤禁用的BOM
SqlStringBuilder.Append(" AND a.enabled = 'Y' and d.enabled = 'Y' ");
SqlStringBuilder.Append("ORDER BY d.part_no , ");
SqlStringBuilder.Append("e.part_no ");
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@bom_type", bomType);
List<BOMDefine> result = dbConn.Query<BOMDefine>(SqlStringBuilder.ToString(), parameters).ToList();
return result;
}
}
}
}