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.

387 lines
21 KiB
C#

2 years ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Text;
using System.Collections;
using ApServerProvider;
using Estsh.Web.Util;
using DbCommon;
namespace Estsh.Core.Repositories
{
public class CheckStockPrint : BaseApp
{
/***************************************************************************************************
*
*
* 2013.04.17
* Dal
*
*
*
* *************************************************************************************************/
public CheckStockPrint(RemotingProxy remotingProxy)
: base(remotingProxy)
{ }
//public Model.Ex.g_check_stockEx[] Query()
//{
// Estsh.ExpressDAL.ExpressDAO<Model.Ex.g_check_stockEx> dalBase = new ExpressDAL.ExpressDAO<Model.Ex.g_check_stockEx>(_remotingProxy, Model.Ex.g_check_stockEx._tableName);
// return dalBase.Query();
//}
/// <summary>
/// 获取库区
/// </summary>
/// <returns></returns>
public DataTable GetFactoryListData()
{
lock (_remotingProxy)
{
string SqlString = "select factory_code as [value],factory_code as [key] from dbo.sys_factory where enabled='Y'";
return _remotingProxy.GetDataTable(SqlString);
}
}
/// <summary>
/// 获取大库位
/// </summary>
/// <param name="factoryCode"></param>
/// <returns></returns>
public DataTable GetWarehouseListData(string factoryCode)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT warehouse_name as [value],warehouse_name as [key]");
SqlStringBuilder.Append("FROM dbo.sys_warehouse a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_factory b ON a.factory_id = b.factory_id ");
SqlStringBuilder.Append("WHERE a.enabled = 'Y' ");
SqlStringBuilder.Append(" AND b.enabled = 'Y' ");
SqlStringBuilder.Append(" AND b.factory_code = @factory_code ");
Hashtable Params = new Hashtable(1);
Params.Add("@factory_code", factoryCode);
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 根据用户选择的条件查找盘点数据
/// </summary>
/// <param name="wheres">筛选条件</param>
/// <returns>盘点数据</returns>
public DataTable GetWhere(string wheres)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.order_no , ");
SqlStringBuilder.Append(" a.carton_no, ");
SqlStringBuilder.Append(" a.lot_no, ");
SqlStringBuilder.Append(" a.qty, ");
SqlStringBuilder.Append(" d.factory_name, ");
SqlStringBuilder.Append(" e.part_no, ");
SqlStringBuilder.Append(" e.part_spec, ");
SqlStringBuilder.Append(" b.locate_name , ");
SqlStringBuilder.Append(" b.locate_id , ");
SqlStringBuilder.Append(" c.warehouse_name , ");
SqlStringBuilder.Append(" d.factory_code, ");
SqlStringBuilder.Append(" '' as order_no1 ");
SqlStringBuilder.Append("FROM dbo.sys_stock a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_locate b ON a.locate_id = b.locate_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_warehouse c ON b.warehouse_id = c.warehouse_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_factory d ON c.factory_id = d.factory_id ");
SqlStringBuilder.Append(" left join dbo.sys_part e on a.part_id=e.part_id ");
SqlStringBuilder.Append("WHERE a.enabled = 'Y' ");
SqlStringBuilder.Append(" AND b.enabled = 'Y' ");
SqlStringBuilder.Append(" AND c.enabled = 'Y' ");
SqlStringBuilder.Append(" AND d.enabled = 'Y' ");
SqlStringBuilder.Append(wheres);
SqlStringBuilder.Append(" ORDER BY a.order_no , ");
SqlStringBuilder.Append(" a.carton_no, ");
SqlStringBuilder.Append(" d.factory_name, ");
SqlStringBuilder.Append(" e.part_no, ");
SqlStringBuilder.Append(" e.part_spec, ");
SqlStringBuilder.Append(" b.locate_name , ");
SqlStringBuilder.Append(" c.warehouse_name , ");
SqlStringBuilder.Append(" d.factory_code ");
DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
return dt;
}
}
/// <summary>
/// 生成盘点单
/// </summary>
/// <param name="factoryCode">库区</param>
/// <param name="warehouseName">大库位</param>
/// <param name="partNo">零件号</param>
/// <param name="startLocate">开始库位</param>
/// <param name="endLocate">结束库位</param>
/// <param name="csType">盘点类型</param>
/// <param name="showQty">PDA盘点时是否显示库存数量</param>
/// <param name="data">盘点明细数据</param>
/// <returns>是否成功</returns>
public bool GenCSOrder(string factoryCode, string warehouseName, string partNo,
string startLocate, string endLocate, string csType, string showQty, DataTable data)
{
lock (_remotingProxy)
{
if (data == null)
return false;
if (data.Rows.Count == 0)
return false;
ArrayList SqlStrings = new ArrayList();
Hashtable Values = new Hashtable();
// 产生盘点单号
string OrderNo = "C" + _remotingProxy.GetServerTime().ToString("yyMMddHHmmss");
Values.Add("order_no", OrderNo);
Values.Add("cs_type", csType);
Values.Add("factory_code", factoryCode);
Values.Add("warehouse_name", warehouseName);
Values.Add("start_locate_name", startLocate);
Values.Add("end_locate_name", endLocate);
Values.Add("part_no", partNo);
//Values.Add("show_qty", showQty);
// 生成盘点单表头的 SQL
SqlStrings.Add(_remotingProxy.Insert("dbo.g_check_stock", Values, false));
// 生产盘点单明细表的 SQL
foreach (DataRow dr in data.Rows)
{
// 把生成的盘点单号写入数据表,用于显示
dr["order_no1"] = OrderNo;
Values.Clear();
Values.Add("order_no", OrderNo);
Values.Add("part_no", dr["part_no"].ToString());
Values.Add("carton_no", dr["carton_no"].ToString());
Values.Add("qty", Convert.ToDecimal(dr["qty"]));
Values.Add("locate_id", Convert.ToInt32(dr["locate_id"]));
SqlStrings.Add(_remotingProxy.Insert("dbo.g_check_stock_list", Values, false));
}
// 以事务类型执行一组 SQL
return _remotingProxy.ExecuteSqlTransaction(SqlStrings);
}
}
#region jerome
/// <summary>
/// 获取产线
/// </summary>
/// <returns></returns>
public DataTable GetPdLineName()
{
lock (_remotingProxy)
{
string SqlString = "SELECT pdline_id as [value],pdline_name,pdline_desc as [key] FROM sys_pdline WHERE enabled='Y'";
try
{
return _remotingProxy.GetDataTable(SqlString);
}
catch
{
return null;
}
}
}
/// <summary>
/// 获取项目
/// </summary>
/// <returns></returns>
public DataTable GetModelTypeNameList()
{
lock (_remotingProxy)
{
string SqlString = " SELECT type_id as [value],type_name as [key] FROM sys_model_type WHERE enabled='Y' ";
try
{
return _remotingProxy.GetDataTable(SqlString);
}
catch
{
return null;
}
}
}
/// <summary>
/// 根据用户选择的条件查找盘点数据
/// </summary>
/// <param name="wheres">筛选条件</param>
/// <returns>盘点数据</returns>
public Hashtable GetCheckStockWhere(string wheres, Pager pager)
{
lock (_remotingProxy)
{
#if(false)
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.AppendLine("SELECT ");
SqlStringBuilder.AppendLine(" c.pdline_name, c.fg_wh_code, d.model_name, ");
SqlStringBuilder.AppendLine(" b.part_no,b.part_spec, ");
SqlStringBuilder.AppendLine(" a.serial_number,a.car_no, ");
SqlStringBuilder.AppendLine(" CASE a.work_flag WHEN 1 THEN '已下线' WHEN 0 THEN '已上线' WHEN -1 THEN '未上线' WHEN 2 THEN '已发运' ");
SqlStringBuilder.AppendLine(" WHEN 3 THEN '已领用' ELSE CAST(a.work_flag AS VARCHAR(2)) END AS work_flag ");
SqlStringBuilder.AppendLine(" ,CASE a.current_status WHEN 0 THEN '良品' WHEN 1 THEN '不良品' WHEN -1 THEN '报废品' ");
SqlStringBuilder.AppendLine(" WHEN -2 THEN '已拆解' ELSE CAST(a.current_status AS VARCHAR(2)) + ' 未知' END AS current_status ");
SqlStringBuilder.AppendLine(" ,CONVERT(VARCHAR(25),a.in_pdline_time,120) AS in_pdline_time ");
SqlStringBuilder.AppendLine(" ,CONVERT(VARCHAR(25),a.Out_pdline_time,120) AS out_pdline_time ");
SqlStringBuilder.AppendLine("FROM dbo.g_sn_status a ");
SqlStringBuilder.AppendLine(" left join dbo.sys_part b on a.part_id=b.part_id ");
SqlStringBuilder.AppendLine(" left join dbo.sys_pdline c on a.pdline_id=c.pdline_id ");
SqlStringBuilder.AppendLine(" left join dbo.sys_model d on a.model_id=d.model_id ");
SqlStringBuilder.AppendLine(" left join dbo.sys_model_type e on e.type_id = d.model_type_id ");
SqlStringBuilder.AppendLine("WHERE a.enabled='Y' AND a.prod_type NOT IN ('C','K')" + wheres); // pord_type: C: 充料, K: 删除的指令
SqlStringBuilder.AppendLine("ORDER BY a.out_pdline_time ");
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
//#else
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.AppendLine("SELECT ");
SqlStringBuilder.AppendLine(" ' ' as order_no,c.pdline_name,d.model_name, ");
SqlStringBuilder.AppendLine(" b.part_no,b.part_spec, ");
SqlStringBuilder.AppendLine(" a.serial_number,CONVERT(VARCHAR(25),a.Out_pdline_time,120) AS out_pdline_time ");
SqlStringBuilder.AppendLine(" ,CONVERT(VARCHAR(25),a.in_pdline_time,120) AS in_pdline_time, c.fg_wh_code ");
SqlStringBuilder.AppendLine(" ,CASE a.current_status WHEN 0 THEN '良品' WHEN 1 THEN '不良品' WHEN -1 THEN '报废品' ");
SqlStringBuilder.AppendLine(" WHEN -2 THEN '已拆解' ELSE CAST(a.current_status AS VARCHAR(2)) + ' 未知' END AS current_status ");
SqlStringBuilder.AppendLine(" ,CASE a.work_flag WHEN 1 THEN '已下线' WHEN 0 THEN '已上线' WHEN -1 THEN '未上线' WHEN 2 THEN '已发运' ");
SqlStringBuilder.AppendLine(" WHEN 3 THEN '已领用' ELSE CAST(a.work_flag AS VARCHAR(2)) END AS work_flag ");
SqlStringBuilder.AppendLine(" ,a.car_no ");
SqlStringBuilder.AppendLine("FROM dbo.g_sn_status a ");
SqlStringBuilder.AppendLine(" left join dbo.sys_part b on a.part_id=b.part_id ");
SqlStringBuilder.AppendLine(" left join dbo.sys_pdline c on a.pdline_id=c.pdline_id ");
SqlStringBuilder.AppendLine(" left join dbo.sys_model d on a.model_id=d.model_id ");
SqlStringBuilder.AppendLine(" left join dbo.sys_model_type e on e.type_id = d.model_type_id ");
SqlStringBuilder.AppendLine("WHERE a.enabled='Y' AND a.prod_type NOT IN ('C','K')" + wheres); // pord_type: C: 充料, K: 删除的指令
SqlStringBuilder.AppendLine("ORDER BY a.out_pdline_time ");
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
#endif
Hashtable result = new Hashtable();
List<StoreProcedureParameter> parameters = new List<StoreProcedureParameter>();
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalCount", 100));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalPage", 100));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Table", "dbo.g_sn_status a left join dbo.sys_part b on a.part_id=b.part_id left join dbo.sys_pdline c on a.pdline_id=c.pdline_id left join dbo.sys_model d on a.model_id=d.model_id left join dbo.sys_model_type e on e.type_id = d.model_type_id "));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", "' ' as order_no,c.pdline_name,d.model_name,b.part_no,b.part_spec,a.serial_number,CONVERT(VARCHAR(25),a.Out_pdline_time,120) AS out_pdline_time,CONVERT(VARCHAR(25),a.in_pdline_time,120) AS in_pdline_time, c.fg_wh_code,CASE a.current_status WHEN 0 THEN '良品' WHEN 1 THEN '不良品' WHEN -1 THEN '报废品' WHEN -2 THEN '已拆解' ELSE CAST(a.current_status AS VARCHAR(2)) + ' 未知' END AS current_status ,CASE a.work_flag WHEN 1 THEN '已下线' WHEN 0 THEN '已上线' WHEN -1 THEN '未上线' WHEN 2 THEN '已发运' WHEN 3 THEN '已领用' ELSE CAST(a.work_flag AS VARCHAR(2)) END AS work_flag ,a.car_no"));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", "a.out_pdline_time"));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", ""));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0));
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.AppendLine(" a.enabled='Y' AND a.prod_type NOT IN ('C','K')" + wheres); // pord_type: C: 充料, K: 删除的指令
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", SqlStringBuilder.ToString()));
Hashtable values = new Hashtable(2);
DataTable dt = new DataTable();
dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values);
ArrayList dataList = DataTypeConvert.NewObject.DataTableToArrayList(dt);
result.Add("dataList", dataList);
result.Add("totalCount", values["@TotalCount"].ToString());
return result;
}
}
/// <summary>
/// 生成盘点单
/// </summary>
/// <param name="data">盘点明细数据</param>
/// <param name="OrderNo">盘点单号</param>
/// <returns>是否成功</returns>
public Hashtable GenCSOrder(string wheres, int totalRows)
{
lock (_remotingProxy)
{
//Hashtable result = new Hashtable();
List<StoreProcedureParameter> parameters = new List<StoreProcedureParameter>();
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalCount", 100));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalPage", 100));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Table", "dbo.g_sn_status a left join dbo.sys_part b on a.part_id=b.part_id left join dbo.sys_pdline c on a.pdline_id=c.pdline_id left join dbo.sys_model d on a.model_id=d.model_id left join dbo.sys_model_type e on e.type_id = d.model_type_id "));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", "' ' as order_no,c.pdline_name,d.model_name,b.part_no,b.part_spec,a.serial_number,CONVERT(VARCHAR(25),a.Out_pdline_time,120) AS out_pdline_time,CONVERT(VARCHAR(25),a.in_pdline_time,120) AS in_pdline_time, c.fg_wh_code,CASE a.current_status WHEN 0 THEN '良品' WHEN 1 THEN '不良品' WHEN -1 THEN '报废品' WHEN -2 THEN '已拆解' ELSE CAST(a.current_status AS VARCHAR(2)) + ' 未知' END AS current_status ,CASE a.work_flag WHEN 1 THEN '已下线' WHEN 0 THEN '已上线' WHEN -1 THEN '未上线' WHEN 2 THEN '已发运' WHEN 3 THEN '已领用' ELSE CAST(a.work_flag AS VARCHAR(2)) END AS work_flag ,a.car_no"));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", "a.out_pdline_time"));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", ""));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", totalRows));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", 1));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0));
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.AppendLine(" a.enabled='Y' AND a.prod_type NOT IN ('C','K')" + wheres); // pord_type: C: 充料, K: 删除的指令
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", SqlStringBuilder.ToString()));
Hashtable values = new Hashtable(2);
DataTable data = new DataTable();
data = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values);
Hashtable result = new Hashtable();
result.Add("result", false);
result.Add("order_no", string.Empty);
result.Add("msg", "没有查询到数据!");
if (data == null)
return result;
if (data.Rows.Count == 0)
return result;
//data.Columns.Add("order_no");
string OrderNo = "C" + _remotingProxy.GetServerTime().ToString("yyMMddHHmmss");
result["order_no"] = OrderNo;
result["msg"] = string.Empty;
ArrayList SqlStrings = new ArrayList();
Hashtable Values = new Hashtable();
// 产生盘点单号
Values.Add("order_no", OrderNo);
Values.Add("cs_type", "0");
Values.Add("factory_code", "0");
Values.Add("warehouse_name", "0");
Values.Add("start_locate_name", "0");
Values.Add("end_locate_name", "0");
Values.Add("part_no", "0");
// 生成盘点单表头的 SQL
SqlStrings.Add(_remotingProxy.Insert("dbo.g_check_stock", Values, false));
// 生产盘点单明细表的 SQL
foreach (DataRow dr in data.Rows)
{
// 把生成的盘点单号写入数据表,用于显示
dr["order_no"] = OrderNo;
Values.Clear();
Values.Add("order_no", OrderNo);
Values.Add("part_no", dr["part_no"].ToString());
Values.Add("carton_no", dr["serial_number"].ToString());
Values.Add("qty", "0");
Values.Add("locate_id", "0");
SqlStrings.Add(_remotingProxy.Insert("dbo.g_check_stock_list", Values, false));
}
// 以事务类型执行一组 SQL
if (_remotingProxy.ExecuteSqlTransaction(SqlStrings))
{
result["result"] = true;
}
return result;
}
}
#endregion
}
}