/*******************************************************************************
* Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:PMModuleLogic.cs
* 2.功能描述:生产管理服务端业务逻辑
* 编辑履历:
* 作者 日期 版本 修改内容
* 陈晓野 2015/03/21 1.00 新建
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Curtain.DataAccess;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.Basics.DataAccess;
using Dongke.IBOSS.PRD.Service.CMNModuleService;
using Dongke.IBOSS.PRD.Service.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels;
using Dongke.WinForm.Utilities;
using Oracle.ManagedDataAccess.Client;
using DataBaseType = Curtain.DataAccess.DataBaseType;
namespace Dongke.IBOSS.PRD.Service.PMModuleService
{
///
/// 生产管理服务端业务逻辑
///
public static class PMModuleLogic
{
#region 注浆管理
#region 注浆登记一览
///
/// 取得FPM0101画面(注浆登记)的初始化数据
///
/// 登录用户信息
/// 初始化数据
public static ServiceResultEntity GetFPM0101IData(SUserInfo user)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
DataTable dataTable = CMNModuleLogic.GetTP_MST_GMouldType(conn, user, Constant.ValueFlag.Effective);
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Data.Tables.Add(dataTable);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 取得FPM0101画面(注浆登记)的查询数据
///
/// 登录用户信息
/// 多个注浆id(用[,]分开)
/// 查询结果
public static ServiceResultEntity GetFPM0101SData(SUserInfo user, string ids)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
List parameters = new List();
StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0101SSQL());
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
//if (!string.IsNullOrWhiteSpace(ids))
{
ids = "," + ids + ",";
sql.Append(" AND INSTR(:GroutingDailyIDs, ',' || GD.GroutingDailyID || ',') > 0");
parameters.Add(new OracleParameter(":GroutingDailyIDs", OracleDbType.Varchar2, ids, ParameterDirection.Input));
}
sql.Append(" ORDER BY GDD.GroutingLineCode, GDD.GroutingDate, GDD.GroutingDailyID, GDD.GroutingMouldCode");
DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 取得FPM0101画面(注浆登记)的查询数据
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetFPM0101SData(SUserInfo user, FPM0101_SE se)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
List parameters = new List();
StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0101SSQL());
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
if (se != null)
{
// 成型线编码
if (!string.IsNullOrEmpty(se.GroutingLineCode))
{
sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
}
// 成型线名称
if (!string.IsNullOrEmpty(se.GroutingLineName))
{
sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
}
// 成型线类别
if (se.GMouldTypeID.HasValue)
{
sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
}
// 注浆日期-开始
if (se.GroutingDateBegin.HasValue)
{
sql.Append(" AND GD.GroutingDate >= :GroutingDateBegin");
parameters.Add(new OracleParameter(":GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
}
// 注浆日期-结束
if (se.GroutingDateEnd.HasValue)
{
sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
}
// 注浆批次
if (se.GroutingBatchNo.HasValue)
{
sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo.Value, ParameterDirection.Input));
}
// 注浆模具编号
if (!string.IsNullOrEmpty(se.GroutingMouldCode))
{
sql.Append(" AND INSTR(GDD.GroutingMouldCode, :GroutingMouldCode) > 0");
parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
}
// 产品编号
if (!string.IsNullOrEmpty(se.GoodsCode))
{
sql.Append(" AND INSTR(GDD.GoodsCode, :GoodsCode) > 0");
parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
}
// 产品名称
if (!string.IsNullOrEmpty(se.GoodsName))
{
sql.Append(" AND INSTR(GDD.GoodsName, :GoodsName) > 0");
parameters.Add(new OracleParameter(":GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
}
// 备注
if (!string.IsNullOrEmpty(se.Remarks))
{
sql.Append(" AND INSTR(GDD.Remarks, :Remarks) > 0");
parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
}
// 注浆标识
if (!string.IsNullOrEmpty(se.GroutingFlag))
{
sql.Append(" AND GDD.GroutingFlag = :GroutingFlag");
parameters.Add(new OracleParameter(":GroutingFlag", OracleDbType.Char, se.GroutingFlag, ParameterDirection.Input));
}
// 损坯标识
if (!string.IsNullOrEmpty(se.ScrapFlag))
{
sql.Append(" AND GDD.ScrapFlag = :ScrapFlag");
parameters.Add(new OracleParameter(":ScrapFlag", OracleDbType.Char, se.ScrapFlag, ParameterDirection.Input));
}
// 成型工号
if (!string.IsNullOrEmpty(se.GroutingUserCode))
{
sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
}
// 条码
if (!string.IsNullOrEmpty(se.BarCode))
{
sql.Append(" AND INSTR(GDD.BarCode, :BarCode) > 0");
parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
}
// 绑定条码
if (!string.IsNullOrEmpty(se.BarCodeFlag))
{
if ("1" == se.BarCodeFlag)
{
sql.Append(" AND LENGTH(GDD.BarCode) > 0");
}
else
{
sql.Append(" AND (GDD.BarCode IS NULL OR LENGTH(GDD.BarCode) = 0)");
}
}
// 交坯日期-开始
if (se.DeliverTimeBegin.HasValue)
{
sql.Append(" AND GDD.DeliverTime >= :DeliverTimeBegin");
parameters.Add(new OracleParameter(":DeliverTimeBegin", OracleDbType.Date, se.DeliverTimeBegin.Value, ParameterDirection.Input));
}
// 交坯日期-结束
if (se.DeliverTimeEnd.HasValue)
{
sql.Append(" AND GDD.DeliverTime < :DeliverTimeEnd");
parameters.Add(new OracleParameter(":DeliverTimeEnd", OracleDbType.Date, se.DeliverTimeEnd.Value.AddDays(1), ParameterDirection.Input));
}
// 交坯标识
if (!string.IsNullOrEmpty(se.DeliverFlag))
{
sql.Append(" AND GDD.DeliverFlag = :DeliverFlag");
parameters.Add(new OracleParameter(":DeliverFlag", OracleDbType.Char, se.DeliverFlag, ParameterDirection.Input));
}
}
sql.Append(" ORDER BY GDD.GroutingDate, GDD.GroutingLineCode, GDD.GroutingDailyID, GDD.GroutingMouldCode");
DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 获取查询sql
///
/// sql
private static string GetFPM0101SSQL()
{
string selSql =
"SELECT GDD.GroutingDailyDetailID," +
" GDD.GroutingDailyID," +
" GDD.GroutingLineDetailID," +
" GDD.GroutingLineID," +
// 成型线编码
" GDD.GroutingLineCode," +
// 成型线名称
" GDD.GroutingLineName," +
// 注浆日期
" GDD.GroutingDate," +
// 注浆批次
" GDD.GroutingBatchNo," +
// 成型工号
" GDD.UserCode," +
// 产品编码
" GDD.GoodsCode," +
// 产品名称
" GDD.GoodsName," +
// 注浆线模具编码
" GDD.GroutingMouldCode," +
// 模具状态
" GMS.GMouldStatusName," +
// 注浆标识
" GDD.GroutingFlag," +
// 注浆标识
" decode(ML.LogoID, null, null,to_char( ML.LogoName || '[' || ML.LogoCode || ']')) LogoNameCode," +
// 未注浆原因
" DD.DictionaryValue AS NoGroutingRreason," +
// 注浆次数
" GDD.GroutingCount," +
// 损坯标识
" GDD.ScrapFlag," +
// 备注
" GDD.Remarks," +
// 成型线类型
" GMT.GMouldTypeName," +
// 绑定条码
" GDD.BarCode," +
// 交坯时间
" GDD.DeliverTime," +
// 交坯标识
" GDD.DeliverFlag," +
// 创建时间
" GDD.CreateTime," +
// 创建工号
" U.UserName AS Createuser" +
// 注浆日报
" FROM TP_PM_GroutingDaily GD" +
// 注浆日报明细表
" INNER JOIN TP_PM_GroutingDailyDetail GDD" +
" ON GD.GroutingDailyID = GDD.GroutingDailyID" +
// 成型线类型
" INNER JOIN TP_MST_GMouldType GMT" +
" ON GD.GMouldTypeID = GMT.GMouldTypeID" +
// 模具状态
" INNER JOIN TP_SYS_GMouldStatus GMS" +
" ON GMS.GMouldStatusID = GDD.GMouldStatus" +
// 创建工号
" INNER JOIN TP_MST_User U" +
" ON U.UserID = GDD.CreateUserID" +
// 未注浆原因
" LEFT JOIN TP_MST_DataDictionary DD" +
" ON DD.DictionaryID = GDD.NoGroutingRreason" +
// 商标
" LEFT JOIN TP_MST_Logo ML" +
" ON ML.LogoID = GDD.LogoID" +
// 账套
" WHERE GD.AccountID = :AccountID" +
" AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
// 成型线操作权限
" AND EXISTS (SELECT UP.PurviewID" +
" FROM TP_MST_UserPurview UP" +
" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
" AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
" AND UP.UserId = :UPUserId)";
return selSql;
}
#endregion 注浆登记一览
#region 注浆登记
///
/// 取得FPM0102画面(注浆登记)的初始化数据
///
/// 登录用户信息
/// 注浆日报ID
///
/// 初始化数据
/// 注浆数据
/// OtherStatus = 1:没有可编辑的注浆信息
/// OtherStatus = 2:没有可编辑的注浆明细信息
///
public static ServiceResultEntity GetFPM0102IData(SUserInfo user, int groutingDailyID)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
DataTable dataTable = CMNModuleLogic.GetTP_MST_DataDictionary(conn, user, Constant.DictionaryType.TPC004, Constant.ValueFlag.Effective);
// 账务日期
object date = CMNModuleLogic.GetAccountDate(conn, user);
if (date == null || date == DBNull.Value)
{
// 服务器时间错误
//throw new Exception("SystemDateTimeError");
sre.Status = Constant.ServiceResultStatus.AccountDateError;
return sre;
}
sre.Data = new DataSet();
dataTable.TableName = Constant.DictionaryType.TPC004.ToString();
sre.Data.Tables.Add(dataTable);
sre.Result = date;
// 编辑时,取得注浆日报信息
if (groutingDailyID > 0)
{
StringBuilder sql = new StringBuilder();
List parameters = new List();
string gdSql =
"SELECT GD.GroutingDailyID," +
" GD.GroutingLineID," +
" GD.GroutingLineCode," +
" GD.GroutingLineName," +
" GD.MouldQuantity," +
" GD.GroutingDate," +
" GD.OPTimeStamp" +
" FROM TP_PM_GroutingDaily GD" +
" WHERE GD.AccountID = :AccountID" +
" AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
// 成型线操作权限
" AND EXISTS (SELECT UP.PurviewID" +
" FROM TP_MST_UserPurview UP" +
" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
" AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
" AND UP.UserId = :UPUserId)" +
" AND GD.GroutingDailyID = :GroutingDailyID";
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
DataTable gdData = conn.GetSqlResultToDt(gdSql, parameters.ToArray());
if (gdData == null || gdData.Rows.Count == 0)
{
// 没有可编辑的注浆信息
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = "没有可编辑的注浆信息";
return sre;
}
gdData.TableName = "TP_PM_GroutingDaily";
sre.Data.Tables.Add(gdData);
string gddSql =
"SELECT GDD.GroutingDailyID," +
" GDD.GroutingDailyDetailID," +
" GDD.GroutingLineID," +
" GDD.GroutingLineDetailID," +
" GDD.GroutingLineCode," +
" GDD.GroutingLineName," +
" GDD.GroutingDate," +
" GDD.GroutingBatchNo," +
" GDD.GroutingMouldCode," +
//" GDD.MouldCode," +
//" GDD.UserID as GroutingUserID," +
" GDD.UserCode as GroutingUserCode," +
" GDD.GoodsCode," +
" GDD.GoodsName," +
//" GDD.GMouldStatus," +
" GMS.GMouldStatusName," +
" GDD.GroutingFlag," +
" GDD.NoGroutingRreason," +
" GDD.Remarks," +
" GDD.ScrapFlag," +
" GDD.LogoID," +
" GDD.DeliverFlag," +
" GDD.BarCode" +
" FROM TP_PM_GroutingDailyDetail GDD" +
" INNER JOIN TP_SYS_GMouldStatus GMS" +
" ON GMS.GMouldStatusID = GDD.GMouldStatus" +
//" INNER JOIN TP_MST_Goods MG" +
//" ON MG.Goodsid = GLD.GoodsID" +
//" INNER JOIN TP_MST_User U" +
//" ON U.Userid = GDD.Userid" +
" WHERE GDD.AccountID = :AccountID" +
" AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND GDD.GroutingDailyID = :GroutingDailyID" +
" ORDER BY GDD.GroutingMouldCode";
parameters.Clear();
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
DataTable gddData = conn.GetSqlResultToDt(gddSql, parameters.ToArray());
if (gddData == null || gddData.Rows.Count == 0)
{
// 没有可注浆的模具
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 2;
sre.Message = "没有可编辑的注浆明细信息";
return sre;
}
gddData.TableName = "TP_PM_GroutingDailyDetail";
sre.Data.Tables.Add(gddData);
// 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 begin
sre.Result = 1;
string spm022 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_022' and ss.AccountID = " + user.AccountID);
int spm022Value = 0;
if (!string.IsNullOrWhiteSpace(spm022) && int.TryParse(spm022, out spm022Value) && spm022Value > 0)
{
DateTime tDate = DateTime.Now.Date;
DateTime lastDate = tDate.AddDays(1 - spm022Value);
DateTime gData = (DateTime)gdData.Rows[0]["GroutingDate"];
if (gData < lastDate || gData > tDate)
{
sre.Result = 0;
sre.Message = string.Format("允许注浆编辑的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
}
}
// 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 end
}
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 取得FPM0102画面(注浆登记)的成型线数据
///
/// 登录用户信息
/// 注浆日期
/// 成型线ID(多个用【,】隔开)
///
/// 成型线数据
/// OtherStatus = 1:注浆日期大于账务日期
/// OtherStatus = 2:没有可注浆的成型线
/// OtherStatus = 3:没有可注浆的模具
///
public static ServiceResultEntity GetFPM0102_GroutingLine(SUserInfo user, DateTime? groutingDate, string groutingIDs)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
// 账务日期
object date = CMNModuleLogic.GetAccountDate(conn, user);
if (date == null || date == DBNull.Value)
{
// 服务器时间错误
//throw new Exception("SystemDateTimeError");
sre.Status = Constant.ServiceResultStatus.AccountDateError;
return sre;
}
DateTime accountDate = Convert.ToDateTime(date);
// 成型线变更 ver41 by chenxy begin
/* 注浆日期大于此成型线最后一次注浆日期
if (groutingDate.HasValue && groutingDate > accountDate)
{
// 注浆日期大于账务日期
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = string.Format("注浆日期({0})大于账务日期({1})",
groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD),
accountDate.ToString(Constant.S_DATE_YYYY_MM_DD));
return sre;
}
*/
// 成型线变更 ver41 by chenxy end
if (!groutingDate.HasValue)
{
groutingDate = accountDate;
}
sre.Result = groutingDate;
// 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 begin
string spm021 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_021' and ss.AccountID = " + user.AccountID);
int spm021Value = 0;
if (!string.IsNullOrWhiteSpace(spm021) && int.TryParse(spm021, out spm021Value) && spm021Value > 0)
{
DateTime tDate = DateTime.Now.Date;
DateTime lastDate = tDate.AddDays(1 - spm021Value);
if (groutingDate < lastDate || groutingDate > tDate)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = string.Format("允许注浆登记的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
return sre;
}
}
// 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 end
StringBuilder sql = new StringBuilder();
List parameters = new List();
string glSql =
"SELECT GL.GroutingLineID," +
" GL.GroutingLineCode," +
" GL.GroutingLineName," +
" GL.MouldQuantity," +
" GL.UserID," +
" U.UserCode," +
" GL.monitorid," +
" mu.usercode monitorcode," +
// 成型线变更 ver41 by chenxy begin
/*
" GL.UserCount," +
" decode((GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
" decode((GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
//" GL.LastGroutingDate," +
" GL.LastGroutingBatchNo," +
" decode((GMT.CanManyTimes, '1', NULL, 1) GroutingNum," +
" GMT.CanManyTimes," +
*/
" decode(GMT.CanManyTimes, '1', decode(GL.LastGroutingDate, null, 1, :GroutingDate, NVL(GL.LastGroutingBatchNo, 1) + 1, 1), 1) GroutingBatchNo," +
" GMT.CanManyTimes," +
" GMT.GMouldTypeID," +
" GMT.GMouldTypeName," +
// 成型线变更 ver41 by chenxy end
" GL.OPTimeStamp" +
" FROM TP_PC_GroutingLine GL" +
" INNER JOIN TP_MST_User U" +
" ON U.UserID = GL.UserID " +
" left JOIN TP_MST_User mU" +
" ON mU.UserID = GL.monitorid" +
" LEFT JOIN TP_MST_GMouldType GMT" +
" ON GMT.GMouldTypeID = GL.GMouldTypeID " +
//// 成型线操作权限
//" INNER JOIN (SELECT UP.PurviewID" +
//" FROM TP_MST_UserPurview UP" +
//" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
//" AND UP.UserId = :UPUserId) UP" +
//" ON UP.PurviewID = GL.GroutingLineID" +
" WHERE GL.AccountID = :AccountID" +
" AND GL.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND GL.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
// 成型线操作权限
" AND EXISTS (SELECT UP.PurviewID" +
" FROM TP_MST_UserPurview UP" +
" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
" AND (UP.PurviewID = -1 OR UP.PurviewID = GL.GroutingLineID)" +
" AND UP.UserId = :UPUserId)" +
// 未注浆
// 成型线变更 ver41 by chenxy begin
/*
" AND NOT EXISTS (SELECT GD.GroutingDailyID" +
" FROM TP_PM_GroutingDaily GD" +
" WHERE GD.GroutingLineID = GL.GroutingLineID" +
" AND GD.GroutingDate = :GroutingDate)"
*/
// 注浆日期必须小于等于账务日期
" AND :GroutingDate <= FUN_CMN_GetAccountDate(:AccountID)" +
" AND (GL.LastGroutingDate IS NULL OR (GMT.CanManyTimes = '1' AND GL.LastGroutingDate <= :GroutingDate) OR (GMT.CanManyTimes <> '1' AND GL.LastGroutingDate < :GroutingDate))"
// 成型线变更 ver41 by chenxy end
// 有正常状态的模具
+ " AND EXISTS (SELECT 1 FROM TP_PC_GroutingLineDetail GLD WHERE GL.GroutingLineID = GLD.GroutingLineID AND GLD.ValueFlag = '1' AND GLD.GMouldStatus=1)"
;
sql.Append(glSql);
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value.Date, ParameterDirection.Input));
if (!string.IsNullOrWhiteSpace(groutingIDs))
{
groutingIDs = "," + groutingIDs + ",";
sql.Append(" AND INSTR(:GroutingLineIDs, ',' || GL.GroutingLineID || ',') > 0");
parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
}
else
{
sql.Append(" AND GL.UserCount = 1");
}
sql.Append(" ORDER BY GroutingLineCode");
DataTable glData = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
if (glData == null || glData.Rows.Count == 0)
{
// 没有可注浆的成型线
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 2;
sre.Message = string.Format("注浆日期({0})没有可注浆的成型线",
groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
return sre;
}
sre.Data = new DataSet();
glData.TableName = "TP_PC_GroutingLine";
sre.Data.Tables.Add(glData);
groutingIDs = ",";
foreach (DataRow row in glData.Rows)
{
groutingIDs += row["GroutingLineID"] + ",";
}
string gldSql =
"SELECT GLD.GroutingLineID," +
" GL.GroutingLineCode," +
" GL.GroutingLineName," +
" GLD.GroutingLineDetailID," +
" GLD.GroutingMouldCode," +
// 成型线变更 ver41 by chenxy begin
//" GL.UserID," +
//" U.UserCode," +
//" GL.UserCount," +
" decode(GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
" decode(GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
" decode(GMT.CanManyTimes, '1', decode(GL.LastGroutingDate, null, 1, :GroutingDate, NVL(GL.LastGroutingBatchNo, 1) + 1, 1), 1) GroutingBatchNo," +
//" GMT.CanManyTimes," +
" GL.monitorid," +
" mu.usercode monitorcode," +
" GMT.GMouldTypeID," +
" GMT.GMouldTypeName," +
// 成型线变更 ver41 by chenxy end
" MG.GoodsCode," +
" MG.GoodsName," +
" MG.LogoID," +
" GLD.GMouldStatus," +
" GMS.GMouldStatusName," +
" CASE WHEN GLD.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "' THEN '" + (int)Constant.GroutingFlag.Yes + "'" +
" ELSE '" + (int)Constant.GroutingFlag.No + "'" +
" END AS GroutingFlag" +
" FROM TP_PC_GroutingLine GL" +
" left JOIN TP_MST_User mU" +
" ON mU.UserID = GL.monitorid" +
" INNER JOIN TP_PC_GroutingLineDetail GLD" +
" ON GL.GroutingLineID = GLD.GroutingLineID" +
" INNER JOIN TP_SYS_GMouldStatus GMS" +
" ON GMS.GMouldStatusID = GLD.GMouldStatus" +
" INNER JOIN TP_MST_Goods MG" +
" ON MG.Goodsid = GLD.GoodsID" +
" INNER JOIN TP_MST_User U" +
" ON U.Userid = GL.Userid" +
" LEFT JOIN TP_MST_GMouldType GMT" +
" ON GMT.GMouldTypeID = GL.GMouldTypeID " +
" WHERE GL.AccountID = :AccountID" +
" AND GLD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND GLD.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
" AND INSTR(:GroutingLineIDs, ',' || GL.GroutingLineID || ',') > 0" +
" ORDER BY GL.GroutingLineCode, GLD.GroutingMouldCode";
parameters.Clear();
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value.Date, ParameterDirection.Input));
DataTable gldData = conn.GetSqlResultToDt(gldSql, parameters.ToArray());
if (gldData == null || gldData.Rows.Count == 0)
{
// 没有可注浆的模具
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 3;
sre.Message = string.Format("注浆日期({0})没有可注浆的模具",
groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
return sre;
}
gldData.TableName = "TP_PC_GroutingLineDetail";
sre.Data.Tables.Add(gldData);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 取得FPM0104画面(选择成型线)的查询数据
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetFPM0104SData(SUserInfo user, FPM0104_SE se)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
// 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 begin
string spm021 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_021' and ss.AccountID = " + user.AccountID);
int spm021Value = 0;
if (!string.IsNullOrWhiteSpace(spm021) && int.TryParse(spm021, out spm021Value) && spm021Value > 0)
{
DateTime tDate = DateTime.Now.Date;
DateTime lastDate = tDate.AddDays(1-spm021Value);
if (se.GroutingDate < lastDate || se.GroutingDate > tDate)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = string.Format("允许注浆登记的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
return sre;
}
}
// 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 end
string sqlString =
"SELECT " +
" GL.GroutingLineID," +
" GL.GroutingLineCode," +
" GL.GroutingLineName," +
" GMS.GMouldStatusName," +
" GMT.GMouldTypeName," +
" GL.MouldQuantity," +
// 成型线变更 ver41 by chenxy begin
//" U.UserCode AS GroutingUserCode," +
//" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(GS.GoodsCode)) AS GoodsCode" +
" (select WM_CONCAT(DISTINCT TO_CHAR(gs.GoodsCode)) GoodsCode" +
" from tp_pc_groutinglinedetail gld" +
" left join tp_mst_goods gs" +
" on gs.goodsid = gld.goodsid" +
" where gld.groutinglineid = gl.groutinglineid" +
" AND gld.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND gld.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "') GoodsCode," +
//" GL.UserID," +
//" U.UserCode," +
" GL.UserCount," +
" decode(GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
" decode(GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
" GL.LastGroutingDate," +
" GL.LastGroutingBatchNo," +
" GL.monitorid," +
" mu.usercode monitorcode," +
" decode(GMT.CanManyTimes, '1', NULL, 1) GroutingNum," +
" GMT.CanManyTimes" +
// 成型线变更 ver41 by chenxy end
" FROM TP_PC_GroutingLine GL" +
// 成型线变更 ver41 by chenxy begin
//" INNER JOIN TP_PC_GroutingLineDetail GLD" +
//" ON GLD.GroutingLineID = GL.GroutingLineID" +
// 成型线变更 ver41 by chenxy end
" INNER JOIN TP_SYS_GMouldStatus GMS" +
" ON GMS.GMouldStatusID = GL.GMouldStatus" +
" INNER JOIN TP_MST_GMouldType GMT" +
" ON GMT.GMouldTypeID = GL.GMouldTypeID" +
// 成型线变更 ver41 by chenxy begin
//" INNER JOIN TP_MST_Goods GS" +
//" ON GS.GoodsID = GLD.GoodsID" +
// 成型线变更 ver41 by chenxy end
" INNER JOIN TP_MST_User U" +
" ON U.UserID = GL.UserID" +
" left JOIN TP_MST_User mU" +
" ON mU.UserID = GL.monitorid" +
" WHERE GL.AccountID = :AccountID" +
" AND GL.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND GL.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
//// 成型线操作权限
" AND EXISTS (SELECT UP.PurviewID" +
" FROM TP_MST_UserPurview UP" +
" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
" AND (UP.PurviewID = -1 OR UP.PurviewID = GL.GroutingLineID)" +
" AND UP.UserId = :UPUserId)" +
// 未注浆
// 成型线变更 ver41 by chenxy begin
//" AND NOT EXISTS (SELECT GD.GroutingDailyID" +
//" FROM TP_PM_GroutingDaily GD" +
//" WHERE GD.GroutingLineID = GL.GroutingLineID" +
//" AND GD.GroutingDate = :GroutingDate)" +
// 注浆日期必须小于等于账务日期
" AND :GroutingDate <= FUN_CMN_GetAccountDate(:AccountID)" +
" AND (GL.LastGroutingDate IS NULL OR (GMT.CanManyTimes = '1' AND GL.LastGroutingDate <= :GroutingDate) OR (GMT.CanManyTimes <> '1' AND GL.LastGroutingDate < :GroutingDate))"
// 成型线变更 ver41 by chenxy end
// 有正常状态的模具
+ " AND EXISTS (SELECT 1 FROM TP_PC_GroutingLineDetail GLD WHERE GL.GroutingLineID = GLD.GroutingLineID AND GLD.ValueFlag = '1' AND GLD.GMouldStatus=1)"
;
StringBuilder sql = new StringBuilder(sqlString);
List parameters = new List();
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate, ParameterDirection.Input));
if (se != null)
{
// 成型线编码
if (!string.IsNullOrEmpty(se.GroutingLineCode))
{
sql.Append(" AND INSTR(GL.GroutingLineCode, :GroutingLineCode) > 0");
parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
}
// 成型线名称
if (!string.IsNullOrEmpty(se.GroutingLineName))
{
sql.Append(" AND INSTR(GL.GroutingLineName, :GroutingLineName) > 0");
parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
}
// 成型工号
if (!string.IsNullOrEmpty(se.GroutingUserCode))
{
sql.Append(" AND INSTR(U.UserCode, :GroutingUserCode) > 0");
parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
}
// 成型线类别
if (se.GMouldTypeID.HasValue)
{
sql.Append(" AND GL.GMouldTypeID = :GMouldTypeID");
parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
}
// 备注
if (!string.IsNullOrEmpty(se.Remarks))
{
sql.Append(" AND INSTR(GL.Remarks, :Remarks) > 0");
parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
}
}
sqlString = sql.ToString() +
// 成型线变更 ver41 by chenxy begin
//" GROUP BY" +
//" GL.GroutingLineID," +
//" GL.GroutingLineCode," +
//" GL.GroutingLineName," +
//" GMS.GMouldStatusName," +
//" GMT.GMouldTypeName," +
//" GL.MouldQuantity," +
//" U.UserCode" +
// 成型线变更 ver41 by chenxy end
" ORDER BY GL.GroutingLineCode";
DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
// 成型线变更 ver41 by chenxy begin
string groutingIDs = ",";
foreach (DataRow row in data.Rows)
{
groutingIDs += row["GroutingLineID"] + ",";
}
string guSql = "select gu.groutinglineid, gu.remarks, u.userid groutinguserid, u.usercode groutingusercode" +
" from TP_PC_GroutingUser gu" +
" left join tp_mst_user u" +
" on u.userid = gu.userid where INSTR(:GroutingLineIDs, ',' || gu.GroutingLineID || ',') > 0";
parameters.Clear();
parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
DataTable guData = conn.GetSqlResultToDt(guSql, parameters.ToArray());
//if (guData == null || guData.Rows.Count == 0)
//{
// // 没有可注浆的模具
// sre.Status = Constant.ServiceResultStatus.Other;
// sre.OtherStatus = 3;
// sre.Message = string.Format("注浆日期({0})没有可注浆的模具",
// groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
// return sre;
//}
guData.TableName = "TP_PC_GroutingUser";
sre.Data.Tables.Add(guData);
// 成型线变更 ver41 by chenxy end
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 返回班次配置信息
///
///
///
private static int? getClassesSettingID(IDBTransaction oracleTrConn, int userID, DateTime accountDate)
{
#region 将班次配置表中的数据插入生产者表中
string sql = "select max(ClassesSettingID) as ClassesSettingID"
+ " from TP_PC_ClassesSetting"
+ " where ValueFlag = 1 and AccountDate=:accountDate"
+ " and UserID = :userID";
OracleParameter[] paras = new OracleParameter[] {
new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
new OracleParameter(":userID",OracleDbType.Int32,userID,ParameterDirection.Input),
};
DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
return Convert.ToInt32(ds.Tables[0].Rows[0]["ClassesSettingID"]);
}
return null;
#endregion
}
///
/// 保存FPM0102画面(注浆登记)的注浆数据
///
/// 登录用户信息
/// 注浆日期(null:编辑;非null:新建)
/// 注浆数据
/// 保存结果
/// OtherStatus = 1: 没有以下成型线的操作权限
/// OtherStatus = 2: 以下成型线已做过注浆
/// OtherStatus = 3: 以下成型工号已被停用
/// OtherStatus = 4: 补注浆,成型工号没有班次配置
/// OtherStatus = 5: 以下成型工号没有配置员工关联
///
public static ServiceResultEntity SetFPM0102Data(SUserInfo user, DateTime? groutingDate, DataSet groutingInfo)
{
IDBTransaction tran = null;
try
{
ServiceResultEntity sre = new ServiceResultEntity();
if (groutingInfo == null ||
groutingInfo.Tables.Count != 2 ||
groutingInfo.Tables[0].Rows.Count < 1 ||
groutingInfo.Tables[1].Rows.Count < 1)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
int executeResult = 0;
DataTable dtGroutingLine = groutingInfo.Tables[0];
DataTable dtGroutingDetail = groutingInfo.Tables[1];
// 新建注浆登记
if (groutingDate.HasValue)
{
#region 新建注浆登记
groutingDate = groutingDate.Value.Date;
#region 取得账务日期
// 账务日期
object date = CMNModuleLogic.GetAccountDate(tran, user);
if (date == null || date == DBNull.Value)
{
// 服务器时间错误
//throw new Exception("SystemDateTimeError");
sre.Status = Constant.ServiceResultStatus.AccountDateError;
return sre;
}
DateTime accountDate = Convert.ToDateTime(date).Date;
// 注浆日期不能大于账务日期
if (groutingDate > accountDate)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = string.Format("注浆日期({0})不能大于账务日期({1})",
groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD),
accountDate.ToString(Constant.S_DATE_YYYY_MM_DD));
return sre;
}
#endregion 取得账务日期
#region 验证成型线时间戳
StringBuilder checkGLSql = new StringBuilder("select GroutingLineCode from TP_PC_GroutingLine where valueflag = '1' and (");
int index = 0;
foreach (DataRow item in dtGroutingLine.Rows)
{
if (index > 0)
{
checkGLSql.AppendLine(" or ");
}
checkGLSql.AppendFormat(" (GroutingLineID = {0} and OPTimeStamp <> to_timestamp('{1}','yyyy-mm-dd hh24:mi:ss.ff'))", item["GroutingLineID"], ((System.DateTime)item["OPTimeStamp"]).ToString("yyyy-MM-dd HH:mm:ss.ffffff"));
index++;
}
checkGLSql.AppendLine(")");
DataTable checkGLDataTable = tran.GetSqlResultToDt(checkGLSql.ToString());
if (checkGLDataTable != null && checkGLDataTable.Rows.Count > 0)
{
string code = null;
foreach (DataRow item in checkGLDataTable.Rows)
{
if (code == null)
{
code = item["GroutingLineCode"].ToString();
}
else
{
code += "," + item["GroutingLineCode"].ToString();
}
}
// 成型线信息被修改
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = "以下成形线数据已被修改,请重新选择成型线。" + System.Environment.NewLine + code;
return sre;
}
#endregion 验证成型线时间戳
#region 数据校验 插入班次配置
// 成型工ID
List userIDs = new List();
List userCodes = new List();
// 成型线ID
List lineIDs = new List();
List lineCodes = new List();
foreach (DataRow gdd in dtGroutingDetail.Rows)
{
string userID = gdd["GroutingUserID"].ToString();
if (!userIDs.Contains(userID))
{
userIDs.Add(userID);
userCodes.Add(gdd["GroutingUserCode"].ToString());
}
string lineID = gdd["GroutingLineID"].ToString();
if (!lineIDs.Contains(lineID))
{
lineIDs.Add(lineID);
lineCodes.Add(gdd["GroutingLineCode"].ToString());
}
}
#region 成型线校验
string strLineIDs = "," + string.Join(",", lineIDs) + ",";
string strNoLineCodes = null;
// 校验成型线操作权限
string checkPurviewSql =
"SELECT UP.PurviewID" +
" FROM TP_MST_UserPurview UP" +
" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
" AND (UP.PurviewID = -1 OR INSTR(:GroutingLineIDs, ',' || UP.PurviewID || ',') > 0)" +
" AND UP.UserId = :UPUserId Order by UP.PurviewID";
OracleParameter[] checkPurviewParas = new OracleParameter[]
{
new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, strLineIDs, ParameterDirection.Input),
new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
DataTable purviewData = tran.GetSqlResultToDt(checkPurviewSql, checkPurviewParas);
if (purviewData == null || purviewData.Rows.Count == 0)
{
strNoLineCodes = string.Join(",", lineCodes);
}
else if ("-1" == purviewData.Rows[0][0].ToString())
{
strNoLineCodes = null;
}
else if (lineIDs.Count != purviewData.Rows.Count)
{
for (int i = 0; i < lineIDs.Count; i++)
{
DataRow[] drs = purviewData.Select("PurviewID = " + lineIDs[i]);
if (drs == null || drs.Length == 0)
{
if (strNoLineCodes != null)
{
strNoLineCodes += "," + lineCodes[i];
}
else
{
strNoLineCodes += lineCodes[i];
}
}
}
}
if (strNoLineCodes != null)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = "当前用户没有以下成型线的操作权限。"
+ System.Environment.NewLine + strNoLineCodes;
return sre;
}
/* 已验证成型线时间戳,注浆时会修改成型线的最后注浆日期,时间戳会变。
// 校验成型线是否已注浆
string checkGroutingDailySql =
"SELECT GD.GroutingLineCode" +
" FROM TP_PM_GroutingDaily GD" +
" WHERE GD.AccountID = :AccountID" +
" AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND GD.GroutingDate = :GroutingDate" +
" AND INSTR(:GroutingLineIDs, ',' || GD.GroutingLineID || ',') > 0";
OracleParameter[] checkGroutingDailyParas = new OracleParameter[]
{
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, strLineIDs, ParameterDirection.Input),
};
DataTable groutingDailyData = tran.GetSqlResultToDt(checkGroutingDailySql, checkGroutingDailyParas);
strNoLineCodes = null;
if (groutingDailyData != null && groutingDailyData.Rows.Count > 0)
{
foreach (DataRow item in groutingDailyData.Rows)
{
if (strNoLineCodes != null)
{
strNoLineCodes += "," + item["GroutingLineCode"];
}
else
{
strNoLineCodes += item["GroutingLineCode"];
}
}
}
if (strNoLineCodes != null)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 2;
sre.Message = groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD)
+ ",以下成型线已做过注浆登记。"
+ System.Environment.NewLine + strNoLineCodes;
return sre;
}
*/
#endregion 成型线校验
string strNoUserCodes = null;
#region 校验成型工号是否有效
// 校验成型工号是否有效
string checkUserSql =
"SELECT UserID" +
" FROM TP_MST_User" +
" WHERE AccountID = :AccountID" +
" AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND INSTR(:UserIDs, ',' || UserID || ',') > 0";
string strUserIDs = "," + string.Join(",", userIDs) + ",";
OracleParameter[] checkUserParas = new OracleParameter[]
{
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
};
DataTable userData = tran.GetSqlResultToDt(checkUserSql, checkUserParas);
strNoUserCodes = null;
if (userData == null || userData.Rows.Count == 0)
{
strNoUserCodes = string.Join(",", userCodes);
}
else if (userIDs.Count != userData.Rows.Count)
{
for (int i = 0; i < userIDs.Count; i++)
{
DataRow[] drs = userData.Select("UserID = " + userIDs[i]);
if (drs == null || drs.Length == 0)
{
if (strNoUserCodes != null)
{
strNoUserCodes += "," + userCodes[i];
}
else
{
strNoUserCodes += userCodes[i];
}
}
}
}
if (strNoUserCodes != null)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 3;
sre.Message = "以下成型工号已被停用,不能注浆。"
+ System.Environment.NewLine + strNoUserCodes;
return sre;
}
#endregion 校验成型工号是否有效
#region 校验成型工是否有班次配置
// 校验成型工是否有班次配置
string checkClassesSettingSql =
"SELECT UserID, Max(ClassesSettingID) as ClassesSettingID" +
" FROM TP_PC_ClassesSetting CS " +
" WHERE CS.AccountID = :AccountID" +
" AND CS.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND CS.AccountDate = :AccountDate" +
" AND INSTR(:UserIDs, ',' || CS.UserID || ',') > 0 group by UserID";
OracleParameter[] checkClassesSettingParas = new OracleParameter[]
{
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":AccountDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
};
DataTable classesSettingData = tran.GetSqlResultToDt(checkClassesSettingSql, checkClassesSettingParas);
Dictionary userClassID = new Dictionary();
// 补注浆日报
if (groutingDate.Value < accountDate)
{
#region 补注浆日报,校验班次配置
strNoUserCodes = null;
if (classesSettingData == null || classesSettingData.Rows.Count == 0)
{
strNoUserCodes = string.Join(",", userCodes);
}
else if (userIDs.Count != classesSettingData.Rows.Count)
{
for (int i = 0; i < userIDs.Count; i++)
{
DataRow[] drs = classesSettingData.Select("UserID = " + userIDs[i]);
if (drs == null || drs.Length == 0)
{
if (strNoUserCodes != null)
{
strNoUserCodes += "," + userCodes[i];
}
else
{
strNoUserCodes += userCodes[i];
}
}
}
}
else
{
foreach (DataRow item in classesSettingData.Rows)
{
userClassID.Add(item["UserID"].ToString(), item["ClassesSettingID"].ToString());
}
}
if (strNoUserCodes != null)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 4;
sre.Message = string.Format("以下成型工号在日期【{0}】没有配置班次,请确认后再注浆。", groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD))
+ System.Environment.NewLine + strNoUserCodes;
return sre;
}
#endregion 补注浆日报,校验班次配置
}
else
{
// 无班次配置的成型工ID
List userStaffIDs = new List();
List userStaffCodes = new List();
strUserIDs = null;
if (classesSettingData != null && userIDs.Count != classesSettingData.Rows.Count)
{
//strUserIDs = null;
for (int i = 0; i < userIDs.Count; i++)
{
DataRow[] drs = classesSettingData.Select("UserID = " + userIDs[i]);
if (drs == null || drs.Length == 0)
{
strUserIDs += "," + userIDs[i];
userStaffIDs.Add(userIDs[i]);
userStaffCodes.Add(userCodes[i]);
}
else
{
userClassID.Add(drs[0]["UserID"].ToString(), drs[0]["ClassesSettingID"].ToString());
}
}
if (strUserIDs != null)
{
strUserIDs += ",";
}
}
if (strUserIDs != null)
{
#region 无班次配置的工号,校验员工关联(成型工号是否有员工)
// 无班次配置的工号,校验员工关联(成型工号是否有员工)
string checkUserStaffSql =
"SELECT DISTINCT U.UserID, U.UserCode, U.OrganizationID" +
" FROM TP_MST_User U " +
" INNER JOIN TP_MST_UserStaff US" +
" ON U.UserID = US.UserID " +
" WHERE U.AccountID = :AccountID" +
" AND INSTR(:UserIDs, ',' || U.UserID || ',') > 0";
OracleParameter[] checkUserStaffParas = new OracleParameter[]
{
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
};
DataTable userStaffData = tran.GetSqlResultToDt(checkUserStaffSql, checkUserStaffParas);
strNoUserCodes = null;
if (userStaffData == null || userStaffData.Rows.Count == 0)
{
strNoUserCodes = string.Join(",", userStaffCodes);
}
else
{
//for (int i = 0; i < userIDs.Count; i++)
for (int i = 0; i < userStaffIDs.Count; i++)
{
DataRow[] drs = userStaffData.Select("UserID = " + userStaffIDs[i]);
if (drs == null || drs.Length == 0)
{
if (strNoUserCodes != null)
{
strNoUserCodes += "," + userStaffCodes[i];
}
else
{
strNoUserCodes += userStaffCodes[i];
}
}
}
}
if (strNoUserCodes != null)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 5;
sre.Message = "以下成型工号没有配置员工关联,请确认后再注浆。"
+ System.Environment.NewLine + strNoUserCodes;
return sre;
}
#endregion 无班次配置的工号,校验员工关联(成型工号是否有员工)
#region 插入班次配置
#region SQL
string seqClassesSettingSql = "SELECT SEQ_PC_ClassesSetting_ID.Nextval FROM DUAL";
string insertClassesSettingSql =
"INSERT INTO TP_PC_ClassesSetting" +
" (ClassesSettingID, AccountDate, UserID, UserCode, OrganizationID, AccountID, CreateUserID, UpdateUserID)" +
" VALUES" +
" (:ClassesSettingID, :AccountDate, :UserID, :UserCode, :OrganizationID, :AccountID, :CUserID, :CUserID)";
string insertClassesDetailSql =
"INSERT INTO TP_PC_ClassesDetail" +
" (ClassesSettingID, AccountDate, UserID, UserCode, UOrganizationID, UJobsID, StaffID, SOrganizationID, SJobsID, StaffStatus, AccountID, CreateUserID, UpdateUserID)" +
" SELECT :ClassesSettingID, :AccountDate, :UserID, :UserCode, :UOrganizationID, US.UJobsID, S.StaffID, S.OrganizationID, S.Jobs, S.StaffStatus, :AccountID, :CUserID, :CUserID" +
" FROM TP_MST_UserStaff US" +
" INNER JOIN TP_HR_Staff S" +
" ON S.StaffID = US.StaffID" +
" WHERE US.UserID = :UserID";
#endregion SQL
// 插入班次配置
foreach (DataRow userStaffRow in userStaffData.Rows)
{
object csSeq = tran.GetSqlResultToObj(seqClassesSettingSql);
// 插入班次配置
OracleParameter[] insertClassesSettingParas = new OracleParameter[]
{
new OracleParameter(":ClassesSettingID", OracleDbType.Int32, csSeq, ParameterDirection.Input),
new OracleParameter(":AccountDate", OracleDbType.Date, accountDate, ParameterDirection.Input),
new OracleParameter(":UserID", OracleDbType.Int32, userStaffRow["UserID"], ParameterDirection.Input),
new OracleParameter(":UserCode", OracleDbType.NVarchar2, userStaffRow["UserCode"], ParameterDirection.Input),
new OracleParameter(":OrganizationID", OracleDbType.Int32, userStaffRow["OrganizationID"], ParameterDirection.Input),
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(insertClassesSettingSql, insertClassesSettingParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
// 插入班次配置明细
OracleParameter[] insertClassesDetailParas = new OracleParameter[]
{
new OracleParameter(":ClassesSettingID", OracleDbType.Int32, csSeq, ParameterDirection.Input),
new OracleParameter(":AccountDate", OracleDbType.Date, accountDate, ParameterDirection.Input),
new OracleParameter(":UserID", OracleDbType.Int32, userStaffRow["UserID"], ParameterDirection.Input),
new OracleParameter(":UserCode", OracleDbType.NVarchar2, userStaffRow["UserCode"], ParameterDirection.Input),
new OracleParameter(":UOrganizationID", OracleDbType.Int32, userStaffRow["OrganizationID"], ParameterDirection.Input),
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(insertClassesDetailSql, insertClassesDetailParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
userClassID.Add(userStaffRow["UserID"].ToString(), csSeq.ToString());
}
#endregion 插入班次配置
}
else
{
foreach (DataRow item in classesSettingData.Rows)
{
userClassID.Add(item["UserID"].ToString(), item["ClassesSettingID"].ToString());
}
}
}
#endregion 校验成型工是否有班次配置
#endregion 数据校验
#region 取得默认商标
string logoSql = "select t.LogoID from TP_MST_Logo t where t.AccountID = :AccountID and t.ValueFlag ='1'" +
" order by t.IsDefault desc, t.DISPLAYNO";
OracleParameter[] logoParas = new OracleParameter[]
{
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input)
};
DataTable logoDataTable = tran.GetSqlResultToDt(logoSql, logoParas);
object logoID = null;
if (logoDataTable != null && logoDataTable.Rows.Count > 0)
{
logoID = logoDataTable.Rows[0]["LogoID"];
}
#endregion 取得默认商标
// 插入注浆日报
#region SQL
string seqGroutingDailySql = "SELECT SEQ_PM_GroutingDaily_ID.Nextval FROM DUAL";
string insertGroutingDailySql =
"INSERT INTO TP_PM_GroutingDaily " +
" (GroutingDailyID, " +
" GroutingLineID, " +
" GroutingLineCode, " +
" GroutingLineName, " +
" GroutingDate, " +
" UserID, " +
" UserCode, " +
" monitorid, " +
" monitorcode, " +
" MouldQuantity, " +
" GMouldTypeID, " +
" GMouldStatus, " +
" CanManyTimes, " +
" HighPressureFlag, " + //xuwei add 2019-11-14 高压注浆标识
" AccountID, " +
" ClassesSettingID, " +
" GroutingBatchNo, " +
" CreateUserID, " +
" UpdateUserID) " +
" SELECT :GroutingDailyID, " +
" :GroutingLineID, " +
" GL.GroutingLineCode, " +
" GL.GroutingLineName, " +
" :GroutingDate, " +
" :UserID, " +
" :UserCode, " +
" :monitorid, " +
" :monitorcode, " +
" GL.MouldQuantity, " +
" GL.GMouldTypeID, " +
" GL.GMouldStatus, " +
" :CanManyTimes, " +
" GL.HighPressureFlag, " + //xuwei add 2019-11-14 高压注浆标识
" :AccountID, " +
" :ClassesSettingID, " +
" :GroutingBatchNo, " +
" :CUserID, " +
" :CUserID " +
" FROM TP_PC_GroutingLine GL " +
" INNER JOIN TP_MST_GMouldType GMT " +
" ON GMT.GMouldTypeID = GL.GMouldTypeID " +
" WHERE GL.GroutingLineID = :GroutingLineID";
#endregion SQL
#region DetailSQL
string insertGroutingDailyDetailSql =
"INSERT INTO TP_PM_GroutingDailyDetail " +
" (GroutingDailyID, " +
" GroutingLineID, " +
" GroutingLineCode, " +
" GroutingLineName, " +
" GroutingLineDetailID, " +
" GroutingDate, " +
" GroutingMouldCode, " +
" MouldID, " +
" MouldCode, " +
" UserID, " +
" UserCode, " +
//" monitorid, " +
//" monitorcode, " +
" GoodsID, " +
" GoodsCode, " +
" GoodsName, " +
" GMouldStatus, " +
" GroutingCount, " +
" GroutingFlag, " +
//" BarCode, " +
" NoGroutingRreason, " +
" ScrapFlag, " +
" Remarks, " +
" AccountID, " +
" ClassesSettingID, " +
" GroutingBatchNo, " +
" LogoID, " +
" glazetypeid, " +
" CreateUserID, " +
" GMouldTypeID, " +
" CanManyTimes, " +
" UpdateUserID) " +
" SELECT :GroutingDailyID, " +
" :GroutingLineID, " +
" GL.GroutingLineCode, " +
" GL.GroutingLineName, " +
" :GroutingLineDetailID, " +
" :GroutingDate, " +
" GLD.GroutingMouldCode, " +
" GLD.MouldID, " +
" GLD.MouldCode, " +
" :UserID, " +
" :UserCode, " +
//" :monitorid, " +
//" :monitorcode, " +
" GLD.GoodsID, " +
" G.GoodsCode, " +
" G.GoodsName, " +
" GLD.GMouldStatus, " +
" CASE WHEN :GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
" THEN GLD.GroutingCount + 1 " +
" ELSE GLD.GroutingCount END," +
" :GroutingFlag, " +
" :NoGroutingRreason, " +
" :ScrapFlag, " +
" :Remarks, " +
" :AccountID, " +
//" (select max(ClassesSettingID) from TP_PC_ClassesSetting where AccountDate=:GroutingDate and UserID = :UserID ), " +
" :ClassesSettingID, " +
" :GroutingBatchNo, " +
" :LogoID, " +
" g.glazetypeid, " +
" :CUserID, " +
" :GMouldTypeID, " +
" :CanManyTimes, " +
" :CUserID " +
" FROM TP_PC_GroutingLine GL " +
" INNER JOIN TP_PC_GroutingLineDetail GLD " +
" ON GL.GroutingLineID = :GroutingLineID " +
" AND GLD.GroutingLineID = :GroutingLineID " +
" AND GLD.GroutingLineDetailID = :GroutingLineDetailID " +
" INNER JOIN TP_MST_Goods G " +
" ON G.GoodsID = GLD.GoodsID";
#endregion DetailSQL
#region LineDetailSQL
string updateGroutingLineDetailSql =
"UPDATE TP_PC_GroutingLineDetail" +
" SET GroutingCount = GroutingCount + 1," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingLineDetailID = :GroutingLineDetailID";
#endregion LineDetailSQL
#region LineSQL
string updateGroutingLineSql =
"UPDATE TP_PC_GroutingLine" +
" SET LastGroutingDate = :LastGroutingDate," +
" LastGroutingBatchNo = :LastGroutingBatchNo," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingLineID = :GroutingLineID";
#endregion LineSQL
#region ProducerSQL
//string insertGroutingProducerSql =
// "INSERT INTO TP_PM_GroutingProducer " +
// " (GroutingDailyID, " +
// " StaffID, " +
// " StaffCode, " +
// " StaffStatus, " +
// " UserID, " +
// " UserCode, " +
// " UJobsID, " +
// " SJobsID, " +
// " ClassesSettingID) " +
// //" AccountID, " +
// //" CreateUserID, " +
// //" UpdateUserID) " +
// " SELECT :GroutingDailyID, " +
// " CD.StaffID, " +
// " HS.StaffCode, " +
// " CD.StaffStatus, " +
// " :UserID, " +
// " CD.UserCode, " +
// " CD.UJobsID, " +
// " CD.SJobsID, " +
// " CD.ClassesSettingID " +
// //" :AccountID, " +
// //" :CUserID, " +
// //" :CUserID " +
// " FROM TP_PC_ClassesDetail CD " +
// " INNER JOIN TP_HR_Staff HS" +
// " ON HS.StaffID = CD.StaffID" +
// " WHERE CD.ClassesSettingID = " +
// " (SELECT MAX(ClassesSettingID) " +
// " FROM TP_PC_ClassesSetting " +
// " WHERE UserID = :UserID " +
// " AND AccountDate = :GroutingDate)";
#endregion ProducerSQL
string groutingDailyIDs = null;
foreach (DataRow lineRow in dtGroutingLine.Rows)
{
#region 插入注浆日报
// 插入注浆日报
object gdSeq = tran.GetSqlResultToObj(seqGroutingDailySql);
if (groutingDailyIDs == null)
{
groutingDailyIDs = gdSeq.ToString();
}
else
{
groutingDailyIDs += "," + gdSeq.ToString();
}
//int? ClassesSettingID = null;
//ClassesSettingID = getClassesSettingID(tran, Convert.ToInt32(lineRow["UserID"]), groutingDate.Value);
int ClassesSettingID = Convert.ToInt32(userClassID[lineRow["UserID"].ToString()]);
OracleParameter[] insertGroutingDailyParas = new OracleParameter[]
{
new OracleParameter(":ClassesSettingID", OracleDbType.Int32, ClassesSettingID, ParameterDirection.Input),
new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, lineRow["GroutingBatchNo"], ParameterDirection.Input),
new OracleParameter(":CanManyTimes", OracleDbType.Char, lineRow["CanManyTimes"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
new OracleParameter(":GroutingLineID", OracleDbType.Int32, lineRow["GroutingLineID"], ParameterDirection.Input),
new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
new OracleParameter(":UserID", OracleDbType.Int32, lineRow["UserID"], ParameterDirection.Input),
new OracleParameter(":UserCode", OracleDbType.NVarchar2, lineRow["UserCode"], ParameterDirection.Input),
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
new OracleParameter(":monitorid", OracleDbType.Int32, lineRow["monitorid"], ParameterDirection.Input),
new OracleParameter(":monitorcode", OracleDbType.NVarchar2, lineRow["monitorcode"], ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(insertGroutingDailySql, insertGroutingDailyParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
#endregion 插入注浆日报
#region 更新成型线注浆日期
OracleParameter[] updateGroutingLineParas = new OracleParameter[]
{
new OracleParameter(":LastGroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
new OracleParameter(":LastGroutingBatchNo", OracleDbType.Int32, lineRow["GroutingBatchNo"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
new OracleParameter(":GroutingLineID", OracleDbType.Int32, lineRow["GroutingLineID"], ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingLineSql, updateGroutingLineParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
#endregion 更新成型线注浆日期
// 插入注浆日报明细
DataRow[] groutingLineDetailRows = dtGroutingDetail.Select("GroutingLineID = " + lineRow["GroutingLineID"].ToString()
+ " and GroutingBatchNo = " + lineRow["GroutingBatchNo"].ToString());
foreach (DataRow detailDataRow in groutingLineDetailRows)
{
object drLogoID = detailDataRow["logoID"];
if (drLogoID == null || drLogoID == DBNull.Value)
{
drLogoID = logoID;
}
#region 插入注浆日报明细
OracleParameter[] insertGroutingDailyDetailParas = new OracleParameter[]
{
new OracleParameter(":ClassesSettingID", OracleDbType.Int32, ClassesSettingID, ParameterDirection.Input),
new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, detailDataRow["GroutingBatchNo"], ParameterDirection.Input),
//new OracleParameter(":LogoID", OracleDbType.Int32, logoID, ParameterDirection.Input),
new OracleParameter(":LogoID", OracleDbType.Int32, drLogoID, ParameterDirection.Input),
new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
new OracleParameter(":GroutingLineID", OracleDbType.Int32, detailDataRow["GroutingLineID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
new OracleParameter(":UserID", OracleDbType.Int32, detailDataRow["GroutingUserID"], ParameterDirection.Input),
new OracleParameter(":UserCode", OracleDbType.NVarchar2, detailDataRow["GroutingUserCode"], ParameterDirection.Input),
//new OracleParameter(":monitorid", OracleDbType.Int32, detailDataRow["monitorid"], ParameterDirection.Input),
//new OracleParameter(":monitorcode", OracleDbType.NVarchar2, detailDataRow["monitorcode"], ParameterDirection.Input),
new OracleParameter(":GroutingFlag", OracleDbType.Char, detailDataRow["GroutingFlag"], ParameterDirection.Input),
new OracleParameter(":NoGroutingRreason", OracleDbType.Int32, detailDataRow["NoGroutingRreason"], ParameterDirection.Input),
new OracleParameter(":ScrapFlag", OracleDbType.Char, (int)Constant.GroutingScrapFlag.No, ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
new OracleParameter(":GMouldTypeID", OracleDbType.Int32, detailDataRow["GMouldTypeID"], ParameterDirection.Input),
new OracleParameter(":CanManyTimes", OracleDbType.Char, lineRow["CanManyTimes"], ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(insertGroutingDailyDetailSql, insertGroutingDailyDetailParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
#endregion 插入注浆日报明细
#region 更新成型线明细注浆次数
if (((int)Constant.GroutingFlag.Yes).ToString() == detailDataRow["GroutingFlag"].ToString())
{
OracleParameter[] updateGroutingLineDetailParas = new OracleParameter[]
{
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingLineDetailSql, updateGroutingLineDetailParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
}
#endregion 更新成型线明细注浆次数
}
#region 插入注浆者
//// 插入注浆者
//OracleParameter[] InsertGroutingProducerParas = new OracleParameter[]
//{
// new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
// new OracleParameter(":UserID", OracleDbType.Int32, lineRow["UserID"], ParameterDirection.Input),
// //new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
// //new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
// new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
//};
//executeResult = tran.ExecuteNonQuery(insertGroutingProducerSql, InsertGroutingProducerParas);
//if (executeResult <= 0)
//{
// sre.Status = Constant.ServiceResultStatus.NoModifyData;
// return sre;
//}
#endregion 插入注浆者
}
// TODO 补录注浆日报时,是否更新大于注浆日期的注浆日报明细和生产数据中的注浆次数?
sre.Result = groutingDailyIDs;
#endregion 新建注浆登记
}
// 编辑注浆日报
else
{
#region 编辑注浆日报
#region 校验时间戳
// 校验时间戳
DataRow gdDataRow = dtGroutingLine.Rows[0];
string checkSql = "SELECT GroutingDailyID" +
" FROM TP_PM_GroutingDaily" +
" WHERE GroutingDailyID = :GroutingDailyID" +
" AND OPTimeStamp = :OPTimeStamp" +
" AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
OracleParameter[] checkParas = new OracleParameter[]
{
new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
};
object checkResult = tran.GetSqlResultToObj(checkSql, checkParas);
if (checkResult == null)
{
sre.Status = Constant.ServiceResultStatus.DataChanged;
return sre;
}
#endregion 校验时间戳
// 更新注浆日报表
string upgdSql = "UPDATE TP_PM_GroutingDaily SET UpdateUserID = :UpdateUserID WHERE GroutingDailyID = :GroutingDailyID";
OracleParameter[] upgdParas = new OracleParameter[]
{
new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(upgdSql, upgdParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
#region SQL
string updateGroutingDailyDetailSql =
"UPDATE TP_PM_GroutingDailyDetail" +
" SET GroutingCount = CASE" +
" WHEN GroutingFlag <> :GroutingFlag AND GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
" THEN GroutingCount - 1" +
" WHEN GroutingFlag <> :GroutingFlag AND GroutingFlag = '" + (int)Constant.GroutingFlag.No + "'" +
" THEN GroutingCount + 1" +
" ELSE GroutingCount END," +
" GroutingFlag = :GroutingFlag," +
" NoGroutingRreason = :NoGroutingRreason," +
" Remarks = :Remarks," +
" LogoID = :LogoID," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
string updateGroutingDailyDetailLogoSql =
"UPDATE TP_PM_GroutingDailyDetail" +
" SET Remarks = :Remarks," +
" LogoID = :LogoID," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
string updateGroutingDailyDetailRemarksSql =
"UPDATE TP_PM_GroutingDailyDetail" +
" SET Remarks = :Remarks," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
string updateGroutingLineDetailSql =
"UPDATE TP_PC_GroutingLineDetail" +
" SET GroutingCount = CASE" +
" WHEN :cGroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
" THEN GroutingCount + 1" +
" WHEN :cGroutingFlag = '" + (int)Constant.GroutingFlag.No + "'" +
" THEN GroutingCount - 1" +
" ELSE GroutingCount END," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingLineDetailID = :GroutingLineDetailID /*AND :oGroutingFlag <> :cGroutingFlag*/";
#endregion SQL
// 更新注浆日报明细表
foreach (DataRow detailDataRow in dtGroutingDetail.Rows)
{
if (detailDataRow.RowState != DataRowState.Modified)
{
continue;
}
// 已交坯,不能修改注浆信息
if ("1" == detailDataRow["DeliverFlag"].ToString())
{
OracleParameter[] updateGroutingDailyDetailRemarksParas = new OracleParameter[]
{
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailRemarksSql, updateGroutingDailyDetailRemarksParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
continue;
}
// 已绑定条码、损坯,不能修改注浆信息,可以修改商标
if ((detailDataRow["BarCode"] != DBNull.Value && !string.IsNullOrWhiteSpace(detailDataRow["BarCode"].ToString())) ||
((int)Constant.GroutingScrapFlag.Yes).ToString() == detailDataRow["ScrapFlag"].ToString())
{
OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
{
new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
continue;
}
OracleParameter[] updateGroutingDailyDetailParas = new OracleParameter[]
{
new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":GroutingFlag", OracleDbType.Char, detailDataRow["GroutingFlag"], ParameterDirection.Input),
new OracleParameter(":NoGroutingRreason", OracleDbType.Int32, detailDataRow["NoGroutingRreason"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailSql, updateGroutingDailyDetailParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
// 更新成型线明细的注浆次数
string oGroutingFlag = detailDataRow["GroutingFlag", DataRowVersion.Original].ToString();
string cGroutingFlag = detailDataRow["GroutingFlag", DataRowVersion.Current].ToString();
if (oGroutingFlag != cGroutingFlag)
{
OracleParameter[] updateGroutingLineDetailParas = new OracleParameter[]
{
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
new OracleParameter(":cGroutingFlag", OracleDbType.Char, cGroutingFlag, ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingLineDetailSql, updateGroutingLineDetailParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
}
// TODO 修改以前记录时,是否更新大于注浆日期的注浆日报明细和生产数据中的注浆次数?
}
#endregion 编辑注浆日报
}
tran.Commit();
return sre;
}
catch (Exception ex)
{
if (tran != null &&
tran.ConnState == ConnectionState.Open)
{
tran.Rollback();
}
throw ex;
}
finally
{
if (tran != null &&
tran.ConnState == ConnectionState.Open)
{
tran.Disconnect();
}
}
}
#endregion 注浆登记
#region 条码绑定
///
/// 取得FPM0105画面(选择能绑定条码的注浆登记)的查询数据
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetFPM0105SData(SUserInfo user, FPM0104_SE se)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
// 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 begin
string spm023 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_023' and ss.AccountID = " + user.AccountID);
int spm023Value = 0;
if (!string.IsNullOrWhiteSpace(spm023) && int.TryParse(spm023, out spm023Value) && spm023Value > 0)
{
DateTime tDate = DateTime.Now.Date;
DateTime lastDate = tDate.AddDays(1 - spm023Value);
if (se.GroutingDate < lastDate || se.GroutingDate > tDate)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = string.Format("允许注浆绑码的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
return sre;
}
}
// 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 end
string sqlString =
"SELECT " +
" GD.GroutingDailyID," +
" GD.GroutingLineCode," +
" GD.GroutingLineName," +
" GMS.GMouldStatusName," +
" GMT.GMouldTypeName," +
" GD.MouldQuantity," +
" GD.GroutingBatchNo," +
" GD.UserCode AS GroutingUserCode," +
" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(GDD.GoodsCode)) AS GoodsCode" +
" FROM TP_PM_GroutingDaily GD" +
" INNER JOIN TP_PM_GroutingDailyDetail GDD" +
" ON GDD.GroutingDailyID = GD.GroutingDailyID" +
" INNER JOIN TP_SYS_GMouldStatus GMS" +
" ON GMS.GMouldStatusID = GD.GMouldStatus" +
" INNER JOIN TP_MST_GMouldType GMT" +
" ON GMT.GMouldTypeID = GD.GMouldTypeID" +
" WHERE GD.AccountID = :AccountID" +
" AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
// 成型线操作权限
" AND EXISTS (SELECT UP.PurviewID" +
" FROM TP_MST_UserPurview UP" +
" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
" AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
" AND UP.UserId = :UPUserId)" +
// 注浆,未绑定条码
" AND GD.GroutingDate = :GroutingDate" +
" AND GDD.GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
" AND GDD.ScrapFlag = '" + (int)Constant.GroutingScrapFlag.No + "'";
// 周兴 2018-4-2 增加
if (!se.IsBarCodeScrapReasonUseFlag)
{
sqlString += " AND (GDD.BARCODE IS NULL OR LENGTH(GDD.BARCODE) = 0)";
}
//" AND (GDD.BARCODE IS NULL OR GDD.BARCODE = '')"
sqlString += " AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'"
;
StringBuilder sql = new StringBuilder(sqlString);
List parameters = new List();
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate, ParameterDirection.Input));
if (se != null)
{
// 成型线编码
if (!string.IsNullOrEmpty(se.GroutingLineCode))
{
sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
}
// 成型线名称
if (!string.IsNullOrEmpty(se.GroutingLineName))
{
sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
}
// 成型工号
if (!string.IsNullOrEmpty(se.GroutingUserCode))
{
sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
}
// 注浆批次
if (se.GroutingBatchNo.HasValue)
{
sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
}
// 成型线类别
if (se.GMouldTypeID.HasValue)
{
sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
}
// 备注
if (!string.IsNullOrEmpty(se.Remarks))
{
sql.Append(" AND INSTR(GDD.Remarks, :Remarks) > 0");
parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
}
}
sqlString = sql.ToString() +
" GROUP BY " +
" GD.GroutingDailyID," +
" GD.GroutingLineCode," +
" GD.GroutingLineName," +
" GMS.GMouldStatusName," +
" GMT.GMouldTypeName," +
" GD.MouldQuantity," +
" GD.GroutingBatchNo," +
" GD.UserCode" +
" ORDER BY GD.GroutingLineCode";
DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 取得FPM0103画面(绑定条码)的注浆数据
///
/// 登录用户信息
/// 注浆日报ID
///
/// 注浆数据
/// OtherStatus = 1:没有可编辑的注浆信息
/// OtherStatus = 2:没有可编辑的注浆明细信息
///
public static ServiceResultEntity GetFPM0103Data(SUserInfo user, int groutingDailyID)
{
ServiceResultEntity sre = new ServiceResultEntity();
if (groutingDailyID < 1)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
StringBuilder sql = new StringBuilder();
List parameters = new List();
string gdSql =
"SELECT GD.GroutingDailyID," +
" GD.GroutingLineID," +
" GD.GroutingLineCode," +
" GD.GroutingLineName," +
" GD.MouldQuantity," +
" GD.GroutingDate," +
//" GD.GroutingBatchNo," +
" GD.OPTimeStamp" +
" FROM TP_PM_GroutingDaily GD" +
// 成型线操作权限
//" INNER JOIN (SELECT UP.PurviewID" +
//" FROM TP_MST_UserPurview UP" +
//" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
//" AND UP.UserId = :UPUserId) UP" +
//" ON UP.PurviewID = GD.GroutingLineID" +
" WHERE GD.AccountID = :AccountID" +
" AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
// 成型线操作权限
" AND EXISTS (SELECT UP.PurviewID" +
" FROM TP_MST_UserPurview UP" +
" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
" AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
" AND UP.UserId = :UPUserId)" +
" AND GD.GroutingDailyID = :GroutingDailyID";
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
DataTable gdData = conn.GetSqlResultToDt(gdSql, parameters.ToArray());
if (gdData == null || gdData.Rows.Count == 0)
{
// 没有可编辑的注浆信息
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = "没有可编辑的注浆信息";
return sre;
}
gdData.TableName = "TP_PM_GroutingDaily";
sre.Data = new DataSet();
sre.Data.Tables.Add(gdData);
string gddSql =
"SELECT GDD.GroutingDailyID," +
" GDD.GroutingDailyDetailID," +
" GDD.GroutingLineID," +
" GDD.GroutingLineDetailID," +
" GDD.GroutingLineCode," +
" GDD.GroutingLineName," +
" GDD.GroutingDate," +
" GDD.GroutingBatchNo," +
" GDD.GroutingMouldCode," +
" GDD.UserCode," +
" GDD.GoodsCode," +
" GDD.GoodsName," +
" GMS.GMouldStatusName," +
" GDD.GroutingFlag," +
" GDD.LogoID," +
//" GDD.NoGroutingRreason," +
" DD.DictionaryValue AS NoGroutingRreason," +
" GDD.Remarks," +
" GDD.ScrapFlag," +
" GDD.DeliverFlag," +
//" GP.BarCode," +
//" GP.BarCode AS OBarCode," +
" GDD.SReasonID," +
" GDD.SReasonID ScrapReasonID," +
" SR.ScrapReason SReason," +
" GDD.BarCode," +
" GDD.BarCode AS OBarCode," +
" GDD.ScrapFlag AS OScrapFlag" +
" FROM TP_PM_GroutingDailyDetail GDD" +
" LEFT JOIN TP_MST_ScrapReason SR " +
" ON GDD.SReasonID = SR.ScrapReasonID " +
" INNER JOIN TP_SYS_GMouldStatus GMS" +
" ON GMS.GMouldStatusID = GDD.GMouldStatus" +
" LEFT JOIN TP_MST_DataDictionary DD" +
" ON DD.DictionaryID = GDD.NoGroutingRreason" +
//" LEFT JOIN TP_PM_GroutingProduct GP" +
//" ON GP.GroutingDailyDetailID = GDD.GroutingDailyDetailID" +
" WHERE GDD.AccountID = :AccountID" +
" AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND GDD.GroutingDailyID = :GroutingDailyID" +
" ORDER BY GDD.GroutingMouldCode";
parameters.Clear();
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
DataTable gddData = conn.GetSqlResultToDt(gddSql, parameters.ToArray());
if (gddData == null || gddData.Rows.Count == 0)
{
// 没有可注浆的模具
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 2;
sre.Message = "没有可编辑的注浆明细信息";
return sre;
}
gddData.TableName = "TP_PM_GroutingDailyDetail";
sre.Data.Tables.Add(gddData);
// 获取成型报损原因
string sqlString = "SELECT ScrapReasonID,ScrapReason,DisplayNo,ScrapType,Remarks,ValueFlag FROM TP_MST_ScrapReason "
+ " WHERE AccountID = :AccountID AND ScrapType ='0' Order By DisplayNo";
parameters.Clear();
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
DataTable returnTable = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
if (returnTable == null || returnTable.Rows.Count == 0)
{
// 没有可注浆的模具
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 3;
sre.Message = "没有获取到成型报损原因";
return sre;
}
// 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 begin
sre.Result = 1;
string spm023 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_023' and ss.AccountID = " + user.AccountID);
int spm023Value = 0;
if (!string.IsNullOrWhiteSpace(spm023) && int.TryParse(spm023, out spm023Value) && spm023Value > 0)
{
DateTime tDate = DateTime.Now.Date;
DateTime lastDate = tDate.AddDays(1 - spm023Value);
DateTime gData = (DateTime)gdData.Rows[0]["GroutingDate"];
if (gData < lastDate || gData > tDate)
{
sre.Result = 0;
sre.Message = string.Format("允许注浆绑码的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
}
}
// 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 end
returnTable.TableName = "TP_MST_ScrapReason";
sre.Data.Tables.Add(returnTable);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 保存FPM0103画面(绑定条码)的注浆数据
///
/// 登录用户信息
/// 注浆数据
/// 保存结果
/// OtherStatus = 1: 没有以下成型线的操作权限
///
public static ServiceResultEntity SetFPM0103Data(SUserInfo user, DataSet groutingInfo)
{
IDBTransaction tran = null;
try
{
ServiceResultEntity sre = new ServiceResultEntity();
if (groutingInfo == null ||
groutingInfo.Tables.Count < 2 ||
groutingInfo.Tables[0].Rows.Count < 1 ||
groutingInfo.Tables[1].Rows.Count < 1)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
int executeResult = 0;
// 绑定条码
#region 校验时间戳
// 校验时间戳
DataRow gdDataRow = groutingInfo.Tables[0].Rows[0];
string checkSql =
"SELECT GroutingDailyID" +
" FROM TP_PM_GroutingDaily" +
" WHERE GroutingDailyID = :GroutingDailyID" +
" AND OPTimeStamp = :OPTimeStamp" +
" AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
OracleParameter[] checkParas = new OracleParameter[]
{
new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
};
object checkResult = tran.GetSqlResultToObj(checkSql, checkParas);
if (checkResult == null)
{
sre.Status = Constant.ServiceResultStatus.DataChanged;
return sre;
}
#endregion 校验时间戳
#region 校验条码
StringBuilder barcodes = new StringBuilder(",");
foreach (DataRow row in groutingInfo.Tables[1].Rows)
{
if ((row["OBarCode"] == null || row["OBarCode"] == DBNull.Value) &&
(row["BarCode"] != null && row["BarCode"] != DBNull.Value))
{
barcodes.Append(row["BarCode"].ToString() + ",");
}
}
// todo 条码状态表
string checkBarcodeSql =
"SELECT UBC.BarCode FROM TP_PM_UsedBarCode UBC " +
" WHERE INSTR(:BarCodes, ',' || UBC.BarCode || ',') > 0";
OracleParameter[] checkBarcodeParas = new OracleParameter[]
{
new OracleParameter(":BarCodes", OracleDbType.NVarchar2, barcodes.ToString(), ParameterDirection.Input),
};
DataTable barCodeDataTable = tran.GetSqlResultToDt(checkBarcodeSql, checkBarcodeParas);
if (barCodeDataTable != null && barCodeDataTable.Rows.Count > 0)
{
barcodes.Clear();
//foreach (DataRow row in groutingInfo.Tables[1].Rows)
foreach (DataRow row in barCodeDataTable.Rows)
{
if (barcodes.Length > 0)
{
barcodes.Append(",");
}
barcodes.Append(row["BarCode"].ToString());
}
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
//sre.Message = string.Format("条码({0})已被使用", barcode);
sre.Message = "以下条码已被使用" + System.Environment.NewLine + barcodes.ToString();
return sre;
}
#endregion 校验条码
#region 更新注浆日报表
string upgdSql = "UPDATE TP_PM_GroutingDaily SET UpdateUserID = :UpdateUserID WHERE GroutingDailyID = :GroutingDailyID";
OracleParameter[] upgdParas = new OracleParameter[]
{
new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(upgdSql, upgdParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
#endregion 更新注浆日报表
#region 更新注浆日报明细表
#region SQL
string updateGroutingDailyDetailLogoSql =
"UPDATE TP_PM_GroutingDailyDetail" +
" SET Remarks = :Remarks," +
" UpdateUserID = :UpdateUserID, LogoID = :LogoID" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
string updateGroutingDailyDetailRemarksSql =
"UPDATE TP_PM_GroutingDailyDetail" +
" SET ScrapFlag = :ScrapFlag, Remarks = :Remarks, " +
" ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
" ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
" UpdateUserID = :UpdateUserID, LogoID = :LogoID" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
string updateGroutingDailyDetailScrapFlagSql =
"UPDATE TP_PM_GroutingDailyDetail" +
" SET ScrapFlag = :ScrapFlag, " +
" ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
" ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
" Remarks = :Remarks," +
" LogoID = :LogoID," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
string updateGroutingDailyDetailSql =
"UPDATE TP_PM_GroutingDailyDetail" +
" SET BarCode = :BarCode, " +
" ScrapFlag = '" + (int)Constant.GroutingScrapFlag.No + "'," +
" Remarks = :Remarks," +
" LogoID = :LogoID," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
#endregion SQL
foreach (DataRow detailDataRow in groutingInfo.Tables[1].Rows)
{
if (detailDataRow.RowState != DataRowState.Modified)
{
continue;
}
// 未注浆不用更新
if (((int)Constant.GroutingFlag.Yes).ToString() != detailDataRow["GroutingFlag"].ToString())
{
//OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
//{
// new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
// new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
// new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
// new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
//};
//executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
//if (executeResult <= 0)
//{
// sre.Status = Constant.ServiceResultStatus.NoModifyData;
// return sre;
//}
continue;
}
// 已交坯不用更新
if ("1" == detailDataRow["DeliverFlag"].ToString())
{
//OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
//{
// new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
// new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
// new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
// new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
//};
//executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
//if (executeResult <= 0)
//{
// sre.Status = Constant.ServiceResultStatus.NoModifyData;
// return sre;
//}
continue;
}
// 已绑定条码,不能修改条码,绑定条码后损坯
string oBarcode = detailDataRow["OBarcode"].ToString();
if (!string.IsNullOrEmpty(oBarcode))
{
OracleParameter[] updateGroutingDailyDetailRemarksParas = new OracleParameter[]
{
new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailRemarksSql, updateGroutingDailyDetailRemarksParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
//更新使用条码 2015/7/14
string sqlUpdateUsedBarCode = "update TP_PM_UsedBarCode set BarCodeStatus=:BarCodeStatus where barcode=:barcode";
OracleParameter[] UpdateUsedBarCodeParas = new OracleParameter[]
{
new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
new OracleParameter(":barcode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(sqlUpdateUsedBarCode, UpdateUsedBarCodeParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
//更新使用条码 2015/7/14 end
continue;
}
// 损坯
string barcode = detailDataRow["Barcode"].ToString();
if (((int)Constant.GroutingScrapFlag.Yes).ToString() == detailDataRow["ScrapFlag"].ToString() ||
string.IsNullOrWhiteSpace(barcode))
{
OracleParameter[] updateGroutingDailyDetailScrapFlagParas = new OracleParameter[]
{
new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailScrapFlagSql, updateGroutingDailyDetailScrapFlagParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
//更新使用条码 2015/7/14
if (!string.IsNullOrEmpty(detailDataRow["BarCode"].ToString()))
{
string sqlUpdateUsedBarCode = "update TP_PM_UsedBarCode set BarCodeStatus=:BarCodeStatus where barcode=:barcode";
OracleParameter[] UpdateUsedBarCodeParas = new OracleParameter[]
{
new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
new OracleParameter(":barcode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(sqlUpdateUsedBarCode, UpdateUsedBarCodeParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
}
//更新使用条码 2015/7/14 end
continue;
}
// 验证条码
// todo 条码状态表
//string checkBarcodeSql =
// "SELECT 1 FROM TP_PM_UsedBarCode WHERE BarCode = :BarCode";
//OracleParameter[] checkBarcodeParas = new OracleParameter[]
//{
// new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
//};
//object result = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas);
//if (result != null)
//{
// sre.Status = Constant.ServiceResultStatus.Other;
// sre.OtherStatus = 1;
// sre.Message = string.Format("条码({0})已被使用", barcode);
// return sre;
//}
string insertBarcodeSql =
"INSERT INTO TP_PM_UsedBarCode " +
" (BarCode, AccountID, CreateTime, CreateUserID,GroutingDailyDetailID,BarCodeStatus)" +
"VALUES " +
" (:BarCode, :AccountID, sysdate, :CreateUserID,:GroutingDailyDetailID,:BarCodeStatus)";
OracleParameter[] insertBarcodeParas = new OracleParameter[]
{
new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(insertBarcodeSql, insertBarcodeParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
// 绑定条码
OracleParameter[] updateGroutingDailyDetailParas = new OracleParameter[]
{
new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":BarCode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailSql, updateGroutingDailyDetailParas);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
}
#endregion 更新注浆日报明细表
tran.Commit();
return sre;
}
catch (Exception ex)
{
if (tran != null &&
tran.ConnState == ConnectionState.Open)
{
tran.Rollback();
}
throw ex;
}
finally
{
if (tran != null &&
tran.ConnState == ConnectionState.Open)
{
tran.Disconnect();
}
}
}
#endregion 条码绑定
#endregion 注浆管理
#region 条码管理
#region 条码校验
/*
///
/// 条码()无效
///
private const string MSG_CHECK_BARCODE_1 = "条码({0})无效";
///
/// 系统中不存在条码()
///
private const string MSG_CHECK_BARCODE_2 = "系统中不存在条码({0})";
///
/// 条码()属于其他账套
///
private const string MSG_CHECK_BARCODE_3 = "条码({0})属于其他账套";
///
/// 条码()未被使用
///
private const string MSG_CHECK_BARCODE_4 = "条码({0})未被使用";
///
/// 条码()已被使用
///
private const string MSG_CHECK_BARCODE_5 = "条码({0})已被使用";
///
/// 条码()已被更换为()
///
private const string MSG_CHECK_BARCODE_6 = "条码({0})已被更换为({1})";
///
/// 校验更换条码
///
///
///
///
private static bool CheckBarcode2(IDBTransaction tran, SUserInfo user,
string barcode, string newBarcode, out string messages)
{
messages = null;
if (string.IsNullOrWhiteSpace(barcode))
{
// 无效条码
messages = string.Format(MSG_CHECK_BARCODE_1, barcode);
return false;
}
if (string.IsNullOrWhiteSpace(newBarcode))
{
// 无效条码
messages = string.Format(MSG_CHECK_BARCODE_1, newBarcode);
return false;
}
string checkBarCodeSql =
"SELECT BC.BarCode, BC.BarCodeStatus, BC.AccountID" +
" FROM TP_PM_BarCode BC" +
" WHERE BarCode = :BarCode OR BarCode = :NewBarCode";
OracleParameter[] checkBarCodeParas = new OracleParameter[]
{
new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
new OracleParameter(":NewBarCode", OracleDbType.Varchar2, newBarcode, ParameterDirection.Input),
};
DataTable barcodeData = tran.GetSqlResultToDt(checkBarCodeSql, checkBarCodeParas);
if (barcodeData == null || barcodeData.Rows.Count == 0)
{
// 系统中不存在条码
messages = string.Format(MSG_CHECK_BARCODE_2, barcode);
return false;
}
DataRow[] drs = barcodeData.Select("BarCode = '" + barcode + "'");
if (drs == null || drs.Length == 0)
{
// 系统中不存在条码
messages = string.Format(MSG_CHECK_BARCODE_2, barcode);
return false;
}
if (user.AccountID.ToString() != drs[0]["AccountID"].ToString())
{
// 条码属于其他账套
messages = string.Format(MSG_CHECK_BARCODE_3, barcode);
return false;
}
if (((int)Constant.BarcodeStatus.Unused).ToString() == drs[0]["BarCodeStatus"].ToString())
{
// 条码未被使用
messages = string.Format(MSG_CHECK_BARCODE_4, barcode);
return false;
}
if (((int)Constant.BarcodeStatus.Replaced).ToString() == drs[0]["BarCodeStatus"].ToString())
{
string sql = "SELECT FinalBarCode FROM TP_PM_BarCodeRecord WHERE BarCode = :BarCode";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
};
object finalBarCode = tran.GetSqlResultToObj(sql, paras);
if (finalBarCode != null)
{
// 条码已被更换
messages = string.Format(MSG_CHECK_BARCODE_6, barcode, finalBarCode);
return false;
}
}
drs = barcodeData.Select("BarCode = '" + newBarcode + "'");
if (drs == null || drs.Length == 0)
{
return true;
}
if (user.AccountID.ToString() != drs[0]["AccountID"].ToString())
{
// 条码属于其他账套
messages = string.Format(MSG_CHECK_BARCODE_3, newBarcode);
return false;
}
if (((int)Constant.BarcodeStatus.Unused).ToString() != drs[0]["BarCodeStatus"].ToString())
{
// 条码已被使用
messages = string.Format(MSG_CHECK_BARCODE_5, newBarcode);
return false;
}
return true;
}
///
/// 校验注浆绑定条码
///
///
///
///
private static bool CheckBarcode1(IDBTransaction tran, SUserInfo user, string barcodes,
out DataTable invalid, out DataTable effective)
{
// 无效条码
invalid = null;
// 有效条码
effective = null;
if (string.IsNullOrWhiteSpace(barcodes))
{
// 无效条码
return false;
}
string checkBarCodeSql =
"SELECT BC.BarCodeStatus, BC.AccountID" +
" FROM TP_PM_BarCode BC" +
//" WHERE BarCode = :BarCode;";
" WHERE INSTR(:BarCodes, ',' || BC.BarCode || ',') > 0";
OracleParameter[] checkBarCodeParas = new OracleParameter[]
{
new OracleParameter(":BarCodes", OracleDbType.Varchar2, checkBarCodeSql, ParameterDirection.Input),
};
DataTable barcodeData = tran.GetSqlResultToDt(checkBarCodeSql, checkBarCodeParas);
if (barcodeData == null || barcodeData.Rows.Count == 0)
{
// 通过校验
return true;
}
foreach (DataRow barcode in barcodeData.Rows)
{
if (user.AccountID.ToString() != barcode["AccountID"].ToString())
{
// 不在同一个账套
}
if (((int)Constant.BarcodeStatus.Unused).ToString() != barcode["BarCodeStatus"].ToString())
{
}
}
return true;
}
*/
#endregion 条码校验
#region 条码变更
///
/// 取得FPM0202画面(条码变更用条码查询)的查询数据
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetFPM0202SData(SUserInfo user, FPM0202_SE se)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
// 'S_PM_024', '未交坯可否替换条码' add by chenxy 2019-05-07 begin
string spm024 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_024' and ss.AccountID = " + user.AccountID);
if (spm024 != "1")
{
spm024 = "0";
}
// 'S_PM_024', '未交坯可否替换条码' add by chenxy 2019-05-07 end
List parameters = new List();
StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0202SSQL());
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
//parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
if (se != null)
{
if (spm024 == "0")
{
sql.Append(" AND GDD.deliverflag = '1'");
}
// 成型线编码
if (!string.IsNullOrEmpty(se.GroutingLineCode))
{
sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
}
// 成型线名称
if (!string.IsNullOrEmpty(se.GroutingLineName))
{
sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
}
// 成型线类别
if (se.GMouldTypeID.HasValue)
{
sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
}
// 注浆日期-开始
if (se.GroutingDateBegin.HasValue)
{
sql.Append(" AND GD.GroutingDate >= :GroutingDateBegin");
parameters.Add(new OracleParameter(":GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
}
// 注浆日期-结束
if (se.GroutingDateEnd.HasValue)
{
sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
}
// 注浆批次
if (se.GroutingBatchNo.HasValue)
{
sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
}
//PDA 注浆日期-开始与结束
if (!string.IsNullOrEmpty(se.GroutingDateBeginPDA))
{
sql.Append(" AND GD.GroutingDate >= TO_DATE(:GroutingDateBeginPDA, 'yyyy-mm-dd hh24:mi:ss')");
parameters.Add(new OracleParameter(":GroutingDateBeginPDA", OracleDbType.Varchar2, se.GroutingDateBeginPDA, ParameterDirection.Input));
}
if (!string.IsNullOrEmpty(se.GroutingDateEndPDA))
{
sql.Append(" AND GD.GroutingDate <= TO_DATE(:GroutingDateEndPDA, 'yyyy-mm-dd hh24:mi:ss')");
parameters.Add(new OracleParameter(":GroutingDateEndPDA", OracleDbType.Varchar2, se.GroutingDateEndPDA, ParameterDirection.Input));
}
// 注浆模具编号
if (!string.IsNullOrEmpty(se.GroutingMouldCode))
{
sql.Append(" AND INSTR(GDD.GroutingMouldCode, :GroutingMouldCode) > 0");
parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
}
// 产品编号
if (!string.IsNullOrEmpty(se.GoodsCode))
{
sql.Append(" AND INSTR(GDD.GoodsCode, :GoodsCode) > 0");
parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
}
// 产品名称
if (!string.IsNullOrEmpty(se.GoodsName))
{
sql.Append(" AND INSTR(GDD.GoodsName, :GoodsName) > 0");
parameters.Add(new OracleParameter(":GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
}
// 备注
if (!string.IsNullOrEmpty(se.Remarks))
{
sql.Append(" AND INSTR(GDD.Remarks, :Remarks) > 0");
parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
}
// 成型工号
if (!string.IsNullOrEmpty(se.GroutingUserCode))
{
// 成型工号不要模糊查询
//sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
sql.Append(" AND GDD.UserCode = :GroutingUserCode");
parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
}
// 条码
if (!string.IsNullOrEmpty(se.BarCode))
{
sql.Append(" AND INSTR(GDD.BarCode, :BarCode) > 0");
parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
}
// 交坯时间-开始
if (se.DeliverMudDateBegin.HasValue)
{
sql.Append(" AND GDD.DeliverTime >= :DMCreateTimeBegin");
parameters.Add(new OracleParameter(":DMCreateTimeBegin", OracleDbType.Date, se.DeliverMudDateBegin.Value, ParameterDirection.Input));
}
// 交坯时间-结束
if (se.DeliverMudDateEnd.HasValue)
{
sql.Append(" AND GDD.DeliverTime < :DMCreateTimeEnd");
parameters.Add(new OracleParameter(":DMCreateTimeEnd", OracleDbType.Date, se.DeliverMudDateEnd.Value.AddDays(1), ParameterDirection.Input));
}
//PDA 交坯时间-开始与结束
if (!string.IsNullOrEmpty(se.DeliverMudDateBeginPDA))
{
sql.Append(" AND GDD.DeliverTime >= TO_DATE(:DeliverMudDateBeginPDA, 'yyyy-mm-dd hh24:mi:ss')");
parameters.Add(new OracleParameter(":DeliverMudDateBeginPDA", OracleDbType.Varchar2, se.DeliverMudDateBeginPDA, ParameterDirection.Input));
}
if (!string.IsNullOrEmpty(se.DeliverMudDateEndPDA))
{
sql.Append(" AND GDD.DeliverTime < TO_DATE(:DeliverMudDateEndPDA, 'yyyy-mm-dd hh24:mi:ss')");
parameters.Add(new OracleParameter(":DeliverMudDateEndPDA", OracleDbType.Varchar2, se.DeliverMudDateEndPDA, ParameterDirection.Input));
}
}
sql.Append(" GROUP BY GDD.GroutingLineCode, GDD.GroutingLineName, GDD.GroutingDate, GDD.GroutingBatchNo,GDD.DeliverTime, GDD.UserCode, " +
" GDD.GoodsCode, GDD.GoodsName, GDD.GroutingMouldCode, GMS.GMouldStatusName, GDD.GroutingCount, " +
" GDD.Remarks, GMT.GMouldTypeName, GDD.BarCode, P.ProcedureName, IP.ProcedureTime, GDD.IsPublicBody");
sql.Append(" ) ");
// 生产工号
if (se != null && !string.IsNullOrEmpty(se.WorkUserCode))
{
//sql.Append(" AND EXISTS (SELECT 1");
//sql.Append(" FROM TP_PM_PRODUCTIONDATA PPD");
//sql.Append(" WHERE PPD.AccountID = :AccountID");
//sql.Append(" AND PPD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'");
//sql.Append(" AND PPD.BarCode = GDD.BarCode");
//sql.Append(" AND INSTR(PPD.UserCode, :WorkUserCode) > 0");
//sql.Append(" )");
//sql.Append(" AND INSTR(PDW.UserCode, :WorkUserCode) > 0");
sql.Append(" WHERE INSTR(WorkUserCodes, :WorkUserCode) > 0");
parameters.Add(new OracleParameter(":WorkUserCode", OracleDbType.NVarchar2, se.WorkUserCode, ParameterDirection.Input));
}
//sql.Append(" ORDER BY GDD.GroutingDate, GDD.GroutingLineCode, GDD.GroutingMouldCode");
sql.Append(" ORDER BY GroutingDate, GroutingLineCode, GroutingBatchNo, GroutingMouldCode");
DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 获取查询sql
///
/// sql
private static string GetFPM0202SSQL()
{
string selSql =
"SELECT GroutingLineCode, GroutingLineName, GroutingDate,GroutingBatchNo, UserCode, " +
" GoodsCode, GoodsName, GroutingMouldCode, GMouldStatusName," +
" GroutingCount, Remarks, GMouldTypeName, BarCode, ProcedureName, ProcedureTime," +
" IsPublicBody," +
" DMCreateTime," +
" WorkUserCodes,BarCodeRecord" +
" FROM (" +
//"SELECT GDD.GroutingDailyDetailID," +
//" GDD.GroutingDailyID," +
"SELECT " +
// 成型线编码
" GDD.GroutingLineCode," +
// 成型线名称
" GDD.GroutingLineName," +
// 注浆日期
" GDD.GroutingDate," +
// 注浆批次
" GDD.GroutingBatchNo," +
// 成型工号
" GDD.UserCode," +
// 产品编码
" GDD.GoodsCode," +
// 产品名称
" GDD.GoodsName," +
// 注浆线模具编码
" GDD.GroutingMouldCode," +
// 模具状态
" GMS.GMouldStatusName," +
// 注浆次数
" GDD.GroutingCount," +
// 备注
" GDD.Remarks," +
// 成型线类型
" GMT.GMouldTypeName," +
// 绑定条码
" GDD.BarCode," +
// 当前工序名称
" P.ProcedureName," +
// 当前工序完成时间
" IP.ProcedureTime," +
// 公坯标识
" GDD.IsPublicBody," +
// 交坯时间
" GDD.DeliverTime AS DMCreateTime," +
//" GDD.deliverflag," +
// 生产工号
//" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(PDW.UserCode)) AS WorkUserCodes," +
//" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(BCR.BarCode)) AS BarCodeRecord" +
" listagg(to_char(PDW.UserCode), ',') within GROUP(ORDER BY PDW.ProductionDataID) AS WorkUserCodes," +
" listagg(to_char(BCR.BarCode), ',') within GROUP(ORDER BY BCR.CREATETIME) AS BarCodeRecord" +
// 注浆日报
" FROM TP_PM_GroutingDaily GD" +
// 注浆日报明细表
" INNER JOIN TP_PM_GroutingDailyDetail GDD" +
" ON GD.GroutingDailyID = GDD.GroutingDailyID" +
// 成型线类型
" INNER JOIN TP_MST_GMouldType GMT" +
" ON GD.GMouldTypeID = GMT.GMouldTypeID" +
// 模具状态
" INNER JOIN TP_SYS_GMouldStatus GMS" +
" ON GMS.GMouldStatusID = GDD.GMouldStatus" +
// 历史条码
" LEFT JOIN TP_PM_BarCodeRecord BCR" +
" ON BCR.FinalBarCode = GDD.BarCode" +
// 当前工序
" LEFT JOIN TP_PM_InProduction IP" +
" ON IP.BarCode = GDD.BarCode" +
// 当前工序名
" LEFT JOIN TP_PC_Procedure P" +
" ON P.ProcedureID = IP.ProcedureID" +
// 生产工号
" LEFT JOIN TP_PM_ProductionData PDW" +
" ON PDW.BarCode = GDD.BarCode" +
" AND PDW.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
// 账套
" WHERE GD.AccountID = :AccountID" +
" AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
" AND LENGTH(GDD.BarCode) > 0";
//// 成型线操作权限
//" AND EXISTS (SELECT UP.PurviewID" +
//" FROM TP_MST_UserPurview UP" +
//" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
//" AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
//" AND UP.UserId = :UPUserId)";
return selSql;
}
///
/// 更换条码
///
/// 登录用户信息
/// 原条码
/// 新条码
/// 备注
/// 操作结果
public static ServiceResultEntity SetFPM0201Data(SUserInfo user, string barcode, string newBarcode, string remarks, string groutingUserCode, string goodsCode)
{
IDBTransaction tran = null;
try
{
ServiceResultEntity sre = new ServiceResultEntity();
if (string.IsNullOrWhiteSpace(barcode) ||
string.IsNullOrWhiteSpace(newBarcode) ||
barcode == newBarcode)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
#region 校验条码
/*
//string message = null;
//bool check = PMModuleLogic.CheckBarcode2(tran, user, barcode, newBarcode, out message);
//if (!check)
//{
// sre.Status = Constant.ServiceResultStatus.Other;
// sre.Message = message;
// return sre;
//}
// todo 条码状态表
string checkBarcodeSql =
"SELECT UBC.BarCode FROM TP_PM_UsedBarCode UBC " +
" WHERE UBC.BarCode = :BarCode";
OracleParameter[] checkBarcodeParas = new OracleParameter[]
{
new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
};
object objBarCode = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas);
if (objBarCode == null || objBarCode.ToString().Length == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = string.Format("原条码({0})不存在", barcode);
return sre;
}
OracleParameter[] checkBarcodeParas1 = new OracleParameter[]
{
new OracleParameter(":BarCode", OracleDbType.NVarchar2, newBarcode, ParameterDirection.Input),
};
objBarCode = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas1);
if (objBarCode != null && objBarCode.ToString().Length > 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 2;
sre.Message = string.Format("新条码({0})已被使用", newBarcode);
return sre;
}
*/
#endregion 校验条码
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter("in_BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
new OracleParameter("in_NewBarCode", OracleDbType.NVarchar2, newBarcode, ParameterDirection.Input),
new OracleParameter("in_Remarks", OracleDbType.NVarchar2, remarks, ParameterDirection.Input),
new OracleParameter("in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
new OracleParameter("in_CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
new OracleParameter("out_Result", OracleDbType.Varchar2, 10, null, ParameterDirection.Output),
new OracleParameter("out_Barcode", OracleDbType.NVarchar2, 50, null, ParameterDirection.Output),
new OracleParameter("in_GroutingUserCode", OracleDbType.Varchar2, groutingUserCode, ParameterDirection.Input),
new OracleParameter("in_GoodsCode", OracleDbType.Varchar2, goodsCode, ParameterDirection.Input),
};
DataSet ds = tran.ExecStoredProcedure("PRO_PM_ReplacedBarCode", paras);
//-- 1.1 原条码不存在
//-- 1.2 原条码属于其他账套
//-- 1.3 原条码已被替换
//-- 1.4 产品已登窑
//-- 1.5 产品已包装
//-- 1.6 产品已成型报损
//-- 1.7 未交坯不可替换
//-- 2.1 新条码属于其他账套
//-- 2.2 新条码已被使用
//-- 2.3 新条码已被替换
//-- 3.1 条码对应成型工号不正确
//-- 3.2 替换工号没有操作成型线权限
//-- 3.3 无注浆信息
//-- 3.4 产品编码与条码不一致
//-- 3.5 产品不是在产产品
string out_Result = paras[5].Value.ToString();
if (out_Result != "0")
{
sre.Status = Constant.ServiceResultStatus.Other;
switch (out_Result)
{
case "1.1":
sre.OtherStatus = 1;
sre.Message = "原产品条码不存在";
break;
case "1.2":
sre.OtherStatus = 2;
sre.Message = "原产品条码属于其他账套";
break;
case "1.3":
sre.OtherStatus = 3;
sre.Message = "原产品条码已被替换为(" + paras[6].Value.ToString() + ")";
break;
case "1.4":
sre.OtherStatus = 7;
sre.Message = "产品已经过工序(" + paras[6].Value.ToString() + ")";
break;
case "1.5":
sre.OtherStatus = 13;
sre.Message = "产品已完成生产流程,不能替换";
break;
case "1.6":
sre.OtherStatus = 14;
sre.Message = "产品已成型报损,不能替换";
break;
case "1.7":
sre.OtherStatus = 15;
sre.Message = "产品未交坯,不能替换";
break;
case "2.1":
sre.OtherStatus = 4;
sre.Message = "新产品条码属于其他账套";
break;
case "2.2":
sre.OtherStatus = 5;
sre.Message = "新产品条码已被使用";
break;
case "2.3":
sre.OtherStatus = 6;
sre.Message = "新产品条码已被替换为(" + paras[6].Value.ToString() + ")";
break;
case "3.1":
sre.OtherStatus = 8;
sre.Message = "条码对应成型工号不正确";
break;
case "3.2":
sre.OtherStatus = 9;
sre.Message = "替换工号没有操作成型线权限";
break;
case "3.3":
sre.OtherStatus = 10;
sre.Message = "无注浆信息";
break;
case "3.4":
sre.OtherStatus = 11;
sre.Message = "产品编码与条码不一致";
break;
case "3.5":
sre.OtherStatus = 12;
sre.Message = "产品不是在产产品";
break;
default:
break;
}
}
tran.Commit();
return sre;
}
catch (Exception ex)
{
if (tran != null &&
tran.ConnState == ConnectionState.Open)
{
tran.Rollback();
}
throw ex;
}
finally
{
if (tran != null &&
tran.ConnState == ConnectionState.Open)
{
tran.Disconnect();
}
}
}
///
/// 取得FPM0203画面(条码变更)的查询数据
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetFPM0203SData(SUserInfo user, FPM0203_SE se)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
List parameters = new List();
StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0203SSQL());
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
if (se != null)
{
// 变更日期-开始
if (se.DateBegin.HasValue)
{
sql.Append(" AND BCR.CreateTime >= :DateBegin");
parameters.Add(new OracleParameter(":DateBegin", OracleDbType.Date, se.DateBegin.Value, ParameterDirection.Input));
}
// 变更日期-结束
if (se.DateEnd.HasValue)
{
sql.Append(" AND BCR.CreateTime <= :DateEnd");
parameters.Add(new OracleParameter(":DateEnd", OracleDbType.Date, se.DateEnd.Value.AddDays(1), ParameterDirection.Input));
}
// 成型线编码
if (!string.IsNullOrEmpty(se.GroutingLineCode))
{
sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
}
// 成型线名称
if (!string.IsNullOrEmpty(se.GroutingLineName))
{
sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
}
// 成型线类别
if (se.GMouldTypeID.HasValue)
{
sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
}
// 注浆日期-开始
if (se.GroutingDateBegin.HasValue)
{
sql.Append(" AND GD.GroutingDate >= :GroutingDateBegin");
parameters.Add(new OracleParameter(":GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
}
// 注浆日期-结束
if (se.GroutingDateEnd.HasValue)
{
sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
}
// 注浆批次
if (se.GroutingBatchNo.HasValue)
{
sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
}
// 注浆模具编号
if (!string.IsNullOrEmpty(se.GroutingMouldCode))
{
sql.Append(" AND INSTR(GDD.GroutingMouldCode, :GroutingMouldCode) > 0");
parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
}
// 产品编号
if (!string.IsNullOrEmpty(se.GoodsCode))
{
sql.Append(" AND INSTR(GDD.GoodsCode, :GoodsCode) > 0");
parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
}
// 产品名称
if (!string.IsNullOrEmpty(se.GoodsName))
{
sql.Append(" AND INSTR(GDD.GoodsName, :GoodsName) > 0");
parameters.Add(new OracleParameter(":GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
}
// 备注
if (!string.IsNullOrEmpty(se.Remarks))
{
sql.Append(" AND INSTR(BCR.Remarks, :Remarks) > 0");
parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
}
// 成型工号
if (!string.IsNullOrEmpty(se.GroutingUserCode))
{
// 成型工号不要模糊查询
sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
}
}
sql.Append(" ORDER BY BCR.CreateTime, BCR.BarCode");
DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 取得FPM0203画面(条码变更)的查询数据
///
/// 登录用户信息
/// 条码
/// 查询结果
public static ServiceResultEntity GetFPM0203SData(SUserInfo user, string barcode)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
List parameters = new List();
StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0203SSQL());
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
//if (!string.IsNullOrWhiteSpace(barcode))
{
sql.Append(" AND BCR.BarCode = :BarCode");
parameters.Add(new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input));
}
sql.Append(" ORDER BY BCR.CreateTime, BCR.BarCode");
DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 获取查询sql
///
/// sql
private static string GetFPM0203SSQL()
{
string selSql =
"SELECT BCR.BarCode," +
" BCR.NewBarCode," +
// 创建时间
" BCR.CreateTime," +
// 创建工号
" U.UserName AS CreateUser," +
// 备注
" BCR.Remarks," +
// 工序
" P.ProcedureCode," +
" P.ProcedureName," +
// 成型线编码
" GDD.GroutingLineCode," +
// 成型线名称
" GDD.GroutingLineName," +
// 注浆日期
" GDD.GroutingDate," +
// 注浆批次
" GDD.GroutingBatchNo," +
// 成型工号
" GDD.UserCode," +
// 产品编码
" GDD.GoodsCode," +
// 产品名称
" GDD.GoodsName," +
// 注浆线模具编码
" GDD.GroutingMouldCode," +
// 模具状态
" GMS.GMouldStatusName," +
// 注浆次数
" GDD.GroutingCount," +
// 成型线类型
" GMT.GMouldTypeName " +
" FROM TP_PM_BarCodeRecord BCR" +
" INNER JOIN TP_PM_GroutingDailyDetail GDD" +
" ON GDD.BarCode = BCR.FinalBarCode" +
" INNER JOIN TP_PM_GroutingDaily GD" +
" ON GD.GroutingDailyID = GDD.GroutingDailyID" +
" INNER JOIN TP_MST_User U" +
" ON U.UserID = BCR.CreateUserID" +
// 成型线类型
" INNER JOIN TP_MST_GMouldType GMT" +
" ON GD.GMouldTypeID = GMT.GMouldTypeID" +
// 模具状态
" INNER JOIN TP_SYS_GMouldStatus GMS" +
" ON GMS.GMouldStatusID = GDD.GMouldStatus" +
// 工序
" LEFT JOIN TP_PC_Procedure P" +
" ON P.ProcedureID = BCR.ProcedureID" +
// 账套
" WHERE BCR.AccountID = :AccountID" +
" AND (BCR.CreateUserID = :CreateUserID OR " +
" EXISTS (SELECT UP.PurviewID" +
" FROM TP_MST_UserPurview UP" +
" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateUser + "'" +
" AND (UP.PurviewID = -1 OR UP.PurviewID = BCR.CreateUserID)" +
" AND UP.UserId = :CreateUserID))";
return selSql;
}
#endregion 条码变更
#region 开模报损
///
/// 保存开模报损信息
///
///
///
///
public static ServiceResultEntity SaveScrapKm(ClientRequestEntity cre, SUserInfo userInfo)
{
IDBTransaction tran = null;
string sqlString = string.Empty;
DataSet groutingInfo = cre.Data;
try
{
ServiceResultEntity sre = new ServiceResultEntity();
if (groutingInfo == null ||
groutingInfo.Tables.Count < 2 ||
groutingInfo.Tables[0].Rows.Count < 1 ||
groutingInfo.Tables[1].Rows.Count < 1)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
int executeResult = 0;
#region 校验时间戳
// 校验时间戳
DataRow gdDataRow = groutingInfo.Tables[0].Rows[0];
sqlString =
"SELECT GroutingDailyID" +
" FROM TP_PM_GroutingDaily" +
" WHERE GroutingDailyID = :GroutingDailyID" +
" AND OPTimeStamp = :OPTimeStamp" +
" AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
OracleParameter[] checkParas = new OracleParameter[]
{
new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
};
object checkResult = tran.GetSqlResultToObj(sqlString, checkParas);
if (checkResult == null)
{
sre.Status = Constant.ServiceResultStatus.DataChanged;
return sre;
}
#endregion 校验时间戳
#region 更新注浆日报明细表
string errorMsg = string.Empty;
foreach (DataRow detailDataRow in groutingInfo.Tables[1].Rows)
{
if (detailDataRow.RowState != DataRowState.Modified)
{
continue;
}
#region 1、判断是否符合报损条件(未注浆,交坯之后不允许报损,是否进行过了报损)
sqlString = "SELECT GroutingFlag,DeliverFlag,ScrapFlag,GroutingMouldCode\n" +
" FROM TP_PM_GroutingDailyDetail \n" +
" WHERE AccountID = :AccountID\n" +
" AND GroutingDailyDetailID = :GroutingDailyDetailID\n";
OracleParameter[] paras = new OracleParameter[] {
new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
};
DataTable returnTable = tran.GetSqlResultToDt(sqlString, paras);
// 编码不存在
if (returnTable.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Result = -99;
return sre;
}
// 未注浆
if ("0".Equals(returnTable.Rows[0]["GroutingFlag"]))
{
sre.Result = -100;
errorMsg += "模具:" + returnTable.Rows[0]["GroutingMouldCode"] + "未注浆";
continue;
}
// 已经交坯
if ("1".Equals(returnTable.Rows[0]["DeliverFlag"]))
{
sre.Result = -101;
errorMsg += "模具:" + returnTable.Rows[0]["GroutingMouldCode"] + "已经交坯";
continue;
}
#endregion
sqlString = "UPDATE TP_PM_GroutingDailyDetail" +
" SET ScrapFlag = :ScrapFlag, " +
" ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
" ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
" ScrapType = :ScrapType, " +
" SReasonID = :SReasonID, " +
" Remarks = :Remarks," +
" UpdateUserID = :UpdateUserID" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
OracleParameter[] oracleParameters = new OracleParameter[]
{
new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
new OracleParameter(":ScrapType", OracleDbType.Char, "0", ParameterDirection.Input), // 开模报损
new OracleParameter(":SReasonID", OracleDbType.Int32, detailDataRow["SReasonID"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID", OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
};
executeResult = tran.ExecuteNonQuery(sqlString, oracleParameters);
if (executeResult <= 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
return sre;
}
}
#endregion 更新注浆日报明细表
if (!string.IsNullOrWhiteSpace(errorMsg))
{
sre.Message = errorMsg;
}
tran.Commit();
return sre;
}
catch (Exception ex)
{
if (tran != null &&
tran.ConnState == ConnectionState.Open)
{
tran.Rollback();
}
throw ex;
}
finally
{
if (tran != null &&
tran.ConnState == ConnectionState.Open)
{
tran.Disconnect();
}
}
}
#endregion
#endregion 条码管理
#region 生产数据查询
#region 生产数据查询(干补)
///
/// 取得FPM0202画面(条码变更用条码查询)的查询数据
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetProductionData8(SUserInfo user, ClientRequestEntity cre)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
//SearchProductionDataEntity searchEntity = cre.Request as SearchProductionDataEntity;
//if (searchEntity == null)
//{
// return null;
//}
string sqlString = "SELECT pd.CreateTime\n" +
" ,pd.UpdateTime\n" +
" ,pd.ProductionDataID\n" +
" ,pd.ProductionLineCode\n" +
" ,pd.BarCode\n" +
" ,pd.GoodsCode\n" +
" ,pd.GoodsName\n" +
" ,pd.UserCode\n" +
" ,pd.IsPublicBody\n" +
" ,decode(pd.ProcedureModel, '1', '计数模型', '检验模型') AS ProcedureModel\n" +
" ,pmt.ProcedureModelTypeName\n" +
//" ,decode(pd.PieceType, '1', '不计件', '同工种策略') AS PieceType\n" +
//" ,pd.IsReworked\n" +
//" ,gl.GoodsLevelName AS GoodsGrade\n" +
" ,org.OrganizationName\n" +
//" ,pd.Remarks\n" +
//" ,pd.KilnID\n" +
//" ,pd.KilnCode\n" +
//" ,pd.KilnName\n" +
//" ,pd.KilnCarID\n" +
//" ,pd.KilnCarCode\n" +
//" ,pd.KilnCarName\n" +
//" ,pd.KilnCarPosition\n" +
//" ,dd.DictionaryValue KilnCarPositionName\n" +
" ,gt.GoodsTypeName\n" +
" ,u.usercode AS barusercode\n" +
" ,pd.GroutingUserCode\n" +
" ,pd.GroutingMouldCode\n" +
" ,pd.GroutingDate\n" +
" ,pd.GroutingNum\n" +
" ,u.username AS barusername\n" +
//" ,decode(pd.Goodsleveltypeid,\n" +
//" '4',\n" +
//" '正品',\n" +
//" '5',\n" +
//" '副品',\n" +
//" '6',\n" +
//" '重烧',\n" +
//" '7',\n" +
//" '次品',\n" +
//" '') AS Goodsleveltype\n" +
" ,REPLACE((l.Logoname || '[' || l.Logocode || ']'), '[]', '') AS LogoCodeName\n" +
" ,pd.SpecialRepairFlag\n" +
" ,pcp.procedurename inprocedurename\n" +
" ,(SELECT pp.procedurename\n" +
" FROM tp_pc_procedure pp\n" +
" WHERE pp.procedureid =\n" +
" fun_rpt_getprevprocedureidall(pd.productiondataid, pd.barcode)) procedurename\n" +
" FROM TP_PM_ProductionData pd\n" +
" LEFT JOIN tp_pm_inproduction inp\n" +
" ON inp.barcode = pd.barcode\n" +
" LEFT JOIN tp_pc_procedure pcp\n" +
" ON pcp.procedureid = inp.procedureid\n" +
" LEFT JOIN TP_SYS_ProcedureModelType pmt\n" +
" ON pd.ModelType = pmt.PROCEDUREMODELTYPEID\n" +
" LEFT JOIN TP_MST_ORGANIZATION org\n" +
" ON pd.OrganizationID = org.OrganizationID\n" +
//" LEFT JOIN TP_MST_DataDictionary dd\n" +
//" ON pd.KilnCarPosition = dd.DictionaryID\n" +
//" LEFT JOIN TP_MST_GoodsLevel gl\n" +
//" ON pd.Goodslevelid = gl.Goodslevelid\n" +
" LEFT JOIN TP_MST_Goods g\n" +
" ON pd.GoodsID = g.GoodsID\n" +
" LEFT JOIN TP_MST_GoodsType gt\n" +
" ON g.GoodsTypeID = gt.GoodsTypeID\n" +
" LEFT JOIN TP_MST_USER u\n" +
" ON pd.Createuserid = u.userid\n" +
" LEFT JOIN TP_MST_Logo l\n" +
" ON pd.logoid = l.logoid\n" +
" WHERE pd.accountID = :accountID and pd.ValueFlag = '1'\n" +
" AND pd.ProcedureID = :procedureID\n" +
" AND (:barCode IS NULL OR :barCode IS NULL OR\n" +
" instr(pd.BarCode, :barCode) > 0)\n" +
" AND (:goodsCode IS NULL OR :goodsCode IS NULL OR\n" +
" instr(pd.goodsCode, :goodsCode) > 0)\n" +
" AND (:goodsName IS NULL OR :goodsName IS NULL OR\n" +
" instr(pd.goodsName, :goodsName) > 0)\n" +
" AND (:userCode IS NULL OR :userCode IS NULL OR\n" +
" instr(pd.userCode, :userCode) > 0)\n" +
" AND (:organizationID = 0 OR :organizationID IS NULL OR\n" +
" pd.organizationID = :organizationID)\n" +
" AND (pd.CreateTime >= :begindate AND pd.CreateTime < :enddate)\n" +
//" AND (:isReworked IS NULL OR :isReworked IS NULL OR\n" +
//" (instr(:isReworked, pd.isReworked) > 0))\n" +
//" AND (:pKilnCode IS NULL OR :pKilnCode IS NULL OR\n" +
//" pd.KilnCode = :pKilnCode)\n" +
//" AND (:pKilnCarCode IS NULL OR :pKilnCarCode IS NULL OR\n" +
//" instr(pd.KilnCarCode, :KilnCarCode) > 0)\n" +
//" AND (:pKilnCarPosition IS NULL OR :pKilnCarPosition IS NULL OR\n" +
//" pd.KilnCarPosition = :pKilnCarPosition)\n" +
" AND (pd.CreateUserID = :currentUserID OR EXISTS\n" +
" (SELECT 1\n" +
" FROM TP_MST_UserPurview up\n" +
" WHERE up.PurviewType = 4\n" +
" AND (up.PurviewID = -1 OR up.PurviewID = pd.CreateUserID)\n" +
" AND up.UserId = :currentUserID))\n" +
//" AND (:remarks IS NULL OR :remarks IS NULL OR\n" +
//" instr(pd.remarks, :remarks) > 0)\n" +
" AND (:goodstypecode IS NULL OR :goodstypecode IS NULL OR\n" +
" instr(gt.goodstypecode, :goodstypecode) > 0)";
//IDataParameter[] paras = new OracleParameter[]
//{
// new OracleParameter(":procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input),
// new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
// new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
// new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
// new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
// new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
// new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
// new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
// new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
// new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
// new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
// new OracleParameter(":userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
// new OracleParameter(":kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
// new OracleParameter(":kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
// new OracleParameter(":kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
// new OracleParameter(":currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
// new OracleParameter(":goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
//};
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":procedureID",OracleDbType.Int32, cre.Properties["ProcedureID"], ParameterDirection.Input),
new OracleParameter(":barCode", OracleDbType.Varchar2,cre.Properties["BarCode"], ParameterDirection.Input),
new OracleParameter(":goodsCode", OracleDbType.Varchar2,cre.Properties["GoodsCode"], ParameterDirection.Input),
new OracleParameter(":goodsName", OracleDbType.Varchar2,cre.Properties["GoodsName"], ParameterDirection.Input),
new OracleParameter(":userCode", OracleDbType.Varchar2,cre.Properties["UserCode"], ParameterDirection.Input),
new OracleParameter(":organizationID", OracleDbType.Int32,cre.Properties["OrganizationID"], ParameterDirection.Input),
//new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
//new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
new OracleParameter(":begindate", OracleDbType.Date,cre.Properties["BeginDate"], ParameterDirection.Input),
new OracleParameter(":enddate", OracleDbType.Date,cre.Properties["EndDate"], ParameterDirection.Input),
new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
//new OracleParameter(":userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
//new OracleParameter(":kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
//new OracleParameter(":kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
//new OracleParameter(":kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
new OracleParameter(":currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
new OracleParameter(":goodstypecode", OracleDbType.Varchar2,cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
};
DataTable data = conn.GetSqlResultToDt(sqlString, paras);
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
#endregion
#endregion
#region 注浆盘点
///
/// 获取盘点单列表(searchbox用)
///
///
///
public static ServiceResultEntity GetGBCheckedList(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = @"select GBCheckedID inCheckedID,GBCheckedNo inCheckedNo,AccountDate,Remarks from TP_PM_GroutingChecked where accountid=:accountid and ValueFlag=1 order by GBCheckedID desc";
List parameters = new List();
parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
sre.Data = con.GetSqlResultToDs(sqlString, parameters.ToArray());
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取盘点单列表(一览用)
///
///
///
public static ServiceResultEntity GetAllGBCheckList(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = "SELECT gbc.gbcheckedid\n" +
" ,gbc.gbcheckedno\n" +
" ,gbc.gbcheckname\n" +
" ,gbc.remarks\n" +
" ,gbc.createtime\n" +
" ,u.usercode CreateUserCode\n" +
" ,u.username CreateUserName\n" +
" FROM TP_PM_GroutingChecked gbc\n" +
" LEFT JOIN tp_mst_user u\n" +
" ON u.userid = gbc.createuserid\n" +
" WHERE gbc.valueflag = '1'\n" +
" AND gbc.accountid = :accountid\n" +
" AND (:datebegin IS NULL OR gbc.createtime >= :datebegin)\n" +
" AND (:dateend IS NULL OR gbc.createtime <= :dateend)\n" +
" AND (:gbcheckedno IS NULL OR instr(gbc.gbcheckedno, :gbcheckedno) > 0)\n" +
" AND (:gbcheckname IS NULL OR instr(gbc.gbcheckname, :gbcheckname) > 0)\n" +
" AND (:remarks IS NULL OR instr(gbc.remarks, :remarks) > 0)" +
" ORDER BY gbcheckedid desc";
OracleParameter[] parameters = new OracleParameter[] {
new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":datebegin", OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
new OracleParameter(":dateend", OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
new OracleParameter(":gbcheckedno", OracleDbType.NVarchar2, cre.Properties["gbcheckedno"], ParameterDirection.Input),
new OracleParameter(":gbcheckname", OracleDbType.NVarchar2, cre.Properties["gbcheckname"], ParameterDirection.Input),
new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input),
};
sre.Data = con.GetSqlResultToDs(sqlString, parameters);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取盘点单明细(一览用)
///
///
///
public static ServiceResultEntity GetAllGBCheckDetail(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
sre.Data = new DataSet();
con.Open();
string sqlString = "SELECT gbu.gbcheckedid, u.userid, u.usercode, u.username\n" +
" FROM Tp_Pm_Gbcheckeduser gbu\n" +
" LEFT JOIN tp_mst_user u\n" +
" ON u.userid = gbu.userid\n" +
" WHERE gbu.gbcheckedid = :gbcheckedid";
OracleParameter[] parameters = new OracleParameter[] {
new OracleParameter(":gbcheckedid", OracleDbType.Int32, checkedID, ParameterDirection.Input),
};
DataTable userTable = con.GetSqlResultToDt(sqlString, parameters);
userTable.TableName = "UserTable";
sre.Data.Tables.Add(userTable);
sqlString = "SELECT 0 sel\n" +
" ,gbcd.GBCheckedID -- 盘点单ID\n" +
" ,gbcd.BarCode -- 产品条码\n" +
" ,gbcd.GBCheckedNo -- 盘点单号\n" +
" ,gbcd.GroutingLineCode -- 成型生产线编码\n" +
" ,gbcd.GroutingLineName -- 成型生产线名称\n" +
" ,gbcd.GroutingDate -- 注浆日期\n" +
" ,gbcd.GroutingMouldCode -- 注浆模具编号\n" +
" ,gbcd.GroutingBatchNo -- 注浆批次\n" +
" ,gbcd.UserCode -- 注浆工号编码\n" +
" ,gbcd.GoodsCode -- 产品编码\n" +
" ,gbcd.GoodsName -- 产品名称\n" +
" ,gbcd.GroutingCount -- 注浆次数\n" +
" ,gbcd.ScrapFlag -- 损坯标识\n" +
" ,gbcd.ScrapTime -- 损坯时间\n" +
" ,SUser.usercode ScrapUsercode -- 损坯工号\n" +
" ,gbcd.IsPublicBody -- 公坯标识\n" +
" ,gbcd.DeliverFlag -- 交坯标识\n" +
" ,gbcd.DeliverTime -- 交坯时间\n" +
" ,gbcd.DeliverUserCode -- 交坯工号\n" +
" ,gbcd.Remarks -- 备注\n" +
" ,gbcd.GBCheckedFlag -- 盘点标识\n" +
" ,gbcd.CheckedDate -- 盘点时间\n" +
" ,CUser.usercode CheckedUserCode -- 盘点工号\n" +
" ,case when gdd.scrapflag = '1' then '成型损坯'" +
" when inp.barcode is not null then to_char(p.procedurename) " +
" when sp.barcode is not null then to_char(glt.goodsleveltypename) " +
" when fp.barcode is not null then '生产完成' else '' end procedurename -- 当前工序\n" +
" ,case when gdd.scrapflag = '1' then gdd.scraptime " +
" when inp.barcode is not null then inp.PROCEDURETIME " +
" when sp.barcode is not null then sp.auditdate " +
" when fp.barcode is not null then fp.createtime else null end PROCEDURETIME -- 当前工序时间\n" +
//" ,p.procedurename procedurename -- 当前工序\n" +
//" ,inp.PROCEDURETIME PROCEDURETIME -- 当前工序时间\n" +
" FROM tp_pm_gbcheckeddetail gbcd\n" +
// 当前注浆信息
" INNER JOIN tp_pm_groutingdailydetail gdd\n" +
" ON gdd.groutingdailydetailid = gbcd.groutingdailydetailid\n" +
" LEFT JOIN tp_mst_user SUser\n" +
" ON SUser.userid = gbcd.ScrapUser\n" +
" LEFT JOIN tp_mst_user CUser\n" +
" ON CUser.userid = gbcd.CheckedUserID\n" +
// 在产工序
" LEFT JOIN tp_pm_inproduction inp \n" +
" ON inp.barcode = gdd.barcode\n" +
// 完成
" LEFT JOIN tp_pm_finishedproduct fp \n" +
" ON inp.barcode is null and fp.barcode = gdd.barcode\n" +
// 损坯
" LEFT JOIN tp_pm_scrapproduct sp \n" +
" ON inp.barcode is null and fp.barcode is null and sp.barcode = gdd.barcode\n" +
" AND sp.valueflag = '1'\n" +
" AND sp.auditstatus = 1\n" +
" AND sp.goodsleveltypeid <> 9\n" +
" AND sp.RECYCLINGFLAG = '0'\n" +
" LEFT JOIN tp_sys_goodsleveltype glt \n" +
" ON glt.goodsleveltypeid = sp.goodsleveltypeid\n" +
" LEFT JOIN tp_pc_procedure p \n" +
" ON p.procedureid = inp.procedureid\n" +
" WHERE gbcd.gbcheckedid = :gbcheckedid\n" +
" AND gbcd.gbcheckedflag = :gbcheckedflag";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":gbcheckedflag",OracleDbType.Int32,(int)Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
new OracleParameter(":gbcheckedid",OracleDbType.Int32,checkedID,ParameterDirection.Input),
};
sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
paras[0].Value = (int)Constant.InCheckedFlag.InCheckeded;
sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
paras[0].Value = (int)Constant.InCheckedFlag.InCheckedWin;
sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
paras[0].Value = (int)Constant.InCheckedFlag.Loss;
sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 获取盘点单信息(编辑用)
///
///
///
public static ServiceResultEntity GetGBCheckedInfoForUpdate(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString =
"SELECT gbc.gbcheckedid, gbc.gbcheckedno, gbc.gbcheckname, gbc.remarks\n" +
" FROM TP_PM_GroutingChecked gbc\n" +
" WHERE gbc.gbcheckedid = :gbcheckedid";
OracleParameter[] parameters = new OracleParameter[] {
new OracleParameter(":gbcheckedid", OracleDbType.Int32, checkedID, ParameterDirection.Input)
};
sre.Data = con.GetSqlResultToDs(sqlString, parameters);
sqlString =
"SELECT u.userid, u.usercode, u.username\n" +
" FROM Tp_Pm_Gbcheckeduser gbu\n" +
" INNER JOIN tp_mst_user u\n" +
" ON u.userid = gbu.userid\n" +
" WHERE gbu.gbcheckedid = :gbcheckedid" +
" ORDER BY u.usercode";
sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, parameters));
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 保存盘点单
///
/// 用户基本信息
///
public static ServiceResultEntity SaveGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
string checkedName = cre.Properties["CheckedName"].ToString();
string remarks = cre.Properties["Remarks"].ToString();
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string sql = null;
OracleParameter[] paras = null;
if (checkedID > 0)
{
// 编辑
sql = "UPDATE TP_PM_GroutingChecked gbc\n" +
" SET gbc.gbcheckname = :gbcheckname\n" +
" ,gbc.remarks = :remarks\n" +
" ,gbc.updateuserid = :updateuserid\n" +
" WHERE gbc.gbcheckedid = :gbcheckedid";
paras = new OracleParameter[] {
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":gbcheckname",OracleDbType.NVarchar2,
checkedName,ParameterDirection.Input),
new OracleParameter(":remarks",OracleDbType.NVarchar2,
remarks,ParameterDirection.Input),
new OracleParameter(":updateuserid",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
sql = "DELETE FROM Tp_Pm_Gbcheckeduser gbu\n" +
" WHERE gbu.gbcheckedid = :gbcheckedid";
paras = new OracleParameter[] {
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
if (cre.Data != null && cre.Data.Tables.Count > 0)
{
sql = "INSERT INTO Tp_Pm_Gbcheckeduser gbu\n" +
" (gbcheckedid, userid, usercode)\n" +
"VALUES\n" +
" (:gbcheckedid, :userid, :usercode)";
foreach (DataRow item in cre.Data.Tables[0].Rows)
{
if (item["UserID"] == DBNull.Value)
{
continue;
}
paras = new OracleParameter[] {
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":userid",OracleDbType.Int32,
item["UserID"],ParameterDirection.Input),
new OracleParameter(":usercode",OracleDbType.NVarchar2,
item["UserCode"],ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
}
}
}
else
{
// 新建
//盘点单号
string checkedNo = string.Format("GBC{0}", DateTime.Now.ToString("yyyyMMddHHmmss"));
//获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
//盘点单ID
sql = "select SEQ_PM_GBChecked_ID.nextval from dual";
checkedID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
#region 插入盘点单主表信息
sql = @"insert into TP_PM_GroutingChecked
(
GBCheckedID,
GBCheckedNo,
AccountDate,
Remarks,
AccountID,
CreateUserID,
UpdateUserID,
GBCHECKNAME
) values
( :GBCheckedID,
:GBCheckedNo,
:AccountDate,
:Remarks,
:AccountID,
:CreateUserID,
:CreateUserID,
:GBCHECKNAME
)";
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":GBCheckedNo",OracleDbType.NVarchar2,
checkedNo,ParameterDirection.Input),
new OracleParameter(":AccountDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
remarks,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":GBCHECKNAME",OracleDbType.NVarchar2,
checkedName,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
#endregion
#region 盘点工号
if (cre.Data != null && cre.Data.Tables.Count > 0)
{
sql = "INSERT INTO Tp_Pm_Gbcheckeduser gbu\n" +
" (gbcheckedid, userid, usercode)\n" +
"VALUES\n" +
" (:gbcheckedid, :userid, :usercode)";
foreach (DataRow item in cre.Data.Tables[0].Rows)
{
if (item["UserID"] == DBNull.Value)
{
continue;
}
paras = new OracleParameter[] {
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":userid",OracleDbType.Int32,
item["UserID"],ParameterDirection.Input),
new OracleParameter(":usercode",OracleDbType.NVarchar2,
item["UserCode"],ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
}
}
#endregion
#region 盘点信息
string lineWhere = null;
if (cre.Properties["BUILDINGNO"] + "" != "")
{
lineWhere = " instr('," + cre.Properties["BUILDINGNO"] + ",', ',' || gl.buildingno || ',') > 0\n";
}
if (cre.Properties["FLOORNO"] + "" != "")
{
if (lineWhere != null)
{
lineWhere += " AND";
}
lineWhere += " to_number(gl.floorno) IN (" + cre.Properties["FLOORNO"] + ")\n";
}
if (lineWhere != null)
{
lineWhere = "INNER JOIN (SELECT gl.groutinglineid\n" +
" FROM tp_pc_groutingline gl\n" +
" WHERE " + lineWhere + ") gll\n" +
" ON gll.groutinglineid = gdd.groutinglineid\n";
}
sql =
"INSERT INTO TP_PM_GBCHECKEDDETAIL\n" +
" (GBCHECKEDID\n" +
" ,BARCODE\n" +
" ,GBCHECKEDNO\n" +
" ,GROUTINGDAILYDETAILID\n" +
" ,GROUTINGDAILYID\n" +
" ,GROUTINGLINEID\n" +
" ,GROUTINGLINECODE\n" +
" ,GROUTINGLINENAME\n" +
" ,GROUTINGLINEDETAILID\n" +
" ,GROUTINGDATE\n" +
" ,GROUTINGMOULDCODE\n" +
" ,MOULDCODE\n" +
" ,GMOULDTYPEID\n" +
" ,CANMANYTIMES\n" +
" ,GROUTINGBATCHNO\n" +
" ,USERID\n" +
" ,USERCODE\n" +
" ,CLASSESSETTINGID\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,GOODSNAME\n" +
" ,GMOULDSTATUS\n" +
" ,GROUTINGCOUNT\n" +
" ,GROUTINGFLAG\n" +
" ,ONLYCODE\n" +
" ,NOGROUTINGRREASON\n" +
" ,SPECIALREPAIRFLAG\n" +
" ,SCRAPFLAG\n" +
" ,SCRAPTIME\n" +
" ,SCRAPUSER\n" +
" ,ISPUBLICBODY\n" +
" ,DELIVERFLAG\n" +
" ,DELIVERTIME\n" +
" ,DELIVERUSERID\n" +
" ,DELIVERUSERCODE\n" +
" ,LOGOID\n" +
" ,REMARKS\n" +
" ,ACCOUNTID\n" +
" ,VALUEFLAG\n" +
" ,CREATEUSERID\n" +
" ,UPDATEUSERID)\n" +
" SELECT :GBCHECKEDID\n" +
" ,gdd.BARCODE\n" +
" ,:GBCHECKEDNO\n" +
" ,gdd.GROUTINGDAILYDETAILID\n" +
" ,gdd.GROUTINGDAILYID\n" +
" ,gdd.GROUTINGLINEID\n" +
" ,gdd.GROUTINGLINECODE\n" +
" ,gdd.GROUTINGLINENAME\n" +
" ,gdd.GROUTINGLINEDETAILID\n" +
" ,gdd.GROUTINGDATE\n" +
" ,gdd.GROUTINGMOULDCODE\n" +
" ,gdd.MOULDCODE\n" +
" ,gdd.GMOULDTYPEID\n" +
" ,gdd.CANMANYTIMES\n" +
" ,gdd.GROUTINGBATCHNO\n" +
" ,gdd.USERID\n" +
" ,gdd.USERCODE\n" +
" ,gdd.CLASSESSETTINGID\n" +
" ,gdd.GOODSID\n" +
" ,gdd.GOODSCODE\n" +
" ,gdd.GOODSNAME\n" +
" ,gdd.GMOULDSTATUS\n" +
" ,gdd.GROUTINGCOUNT\n" +
" ,gdd.GROUTINGFLAG\n" +
" ,gdd.ONLYCODE\n" +
" ,gdd.NOGROUTINGRREASON\n" +
" ,gdd.SPECIALREPAIRFLAG\n" +
" ,gdd.SCRAPFLAG\n" +
" ,gdd.SCRAPTIME\n" +
" ,gdd.SCRAPUSER\n" +
" ,gdd.ISPUBLICBODY\n" +
" ,gdd.DELIVERFLAG\n" +
" ,gdd.DELIVERTIME\n" +
" ,gdd.DELIVERUSERID\n" +
" ,gdd.DELIVERUSERCODE\n" +
" ,gdd.LOGOID\n" +
" ,gdd.REMARKS\n" +
" ,gdd.ACCOUNTID\n" +
" ,'1'\n" +
" ,:CHECKEDUSERID\n" +
" ,:CHECKEDUSERID\n" +
" FROM tp_pm_groutingdailydetail gdd\n" +
" LEFT JOIN tp_mst_goods g\n" +
" ON g.goodsid = gdd.goodsid\n" +
" LEFT JOIN tp_mst_goodsType gt\n" +
" ON gt.goodstypeid = g.goodstypeid\n" + lineWhere +
"WHERE gdd.valueflag = '1'\n" +
" AND gdd.accountid = :accountid\n" +
" AND gdd.barcode IS NOT NULL\n" +
" AND gdd.deliverflag = '0'\n" +
" AND gdd.scrapflag = '0'\n" +
" AND (:DateBegin IS NULL OR gdd.groutingdate >= :DateBegin)\n" +
" AND (:DateEnd IS NULL OR gdd.groutingdate <= :DateEnd)\n" +
" AND (:GoodsIDS IS NULL OR\n" +
" instr(',' || :GoodsIDS || ',', ',' || gdd.GoodsID || ',') > 0)\n" +
" AND (:GoodsTypeCode IS NULL OR\n" +
" instr(gt.goodstypecode, :GoodsTypeCode) = 1)";
paras = new OracleParameter[] {
new OracleParameter(":accountid",OracleDbType.Int32,
sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":GBCHECKEDID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":GBCHECKEDNO",OracleDbType.NVarchar2,
checkedNo,ParameterDirection.Input),
new OracleParameter(":CHECKEDUSERID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":DateBegin",OracleDbType.Date,
cre.Properties["DateBegin"],ParameterDirection.Input),
new OracleParameter(":DateEnd",OracleDbType.Date,
cre.Properties["DateEnd"],ParameterDirection.Input),
new OracleParameter(":GoodsIDS",OracleDbType.NVarchar2,
cre.Properties["GoodsCodeList"],ParameterDirection.Input),
new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2,
cre.Properties["GoodsTypeCode"],ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
#endregion
}
oracleTrConn.Commit();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return sre;
}
///
/// 停用盘点单
///
/// 用户基本信息
///
public static ServiceResultEntity DisableGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string sql = "update TP_PM_GroutingChecked set valueflag='0', updateuserid=:updateuserid where GBCheckedID=:GBCheckedID and valueflag='1'";
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":updateuserid",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
if (returnRows > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
}
else
{
sre.Status = Constant.ServiceResultStatus.Other;
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return sre;
}
///
/// 更新盘点单(条码盘点)
///
/// 盘点单号
/// 产品条码
/// 用户基本信息
///
public static ServiceResultEntity UpdateGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
string barcode = cre.Properties["Barcode"].ToString();
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string sql = null;
OracleParameter[] paras = null;
DataSet ds = null;
sql = @"select GBCheckedFlag,CHECKEDUSERID from TP_PM_GBCheckedDetail where GBCheckedID=:GBCheckedID and BarCode=:BarCode and Valueflag=1";
paras = new OracleParameter[] {
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,
barcode,ParameterDirection.Input)
};
ds = oracleTrConn.GetSqlResultToDs(sql, paras);
// 不在盘点单中
if (ds != null && ds.Tables[0].Rows.Count == 0)
{
sql = @"select GBCheckedNo from tp_pm_groutingchecked where GBCheckedID=:GBCheckedID";
paras = new OracleParameter[] {
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
};
ds = oracleTrConn.GetSqlResultToDs(sql, paras);
if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = "盘点单不存在";
return sre;
}
string checkedNo = ds.Tables[0].Rows[0]["GBCheckedNo"].ToString();
// 条码是否在注浆日报中
sql = "SELECT gdd.groutingdailydetailid\n" +
" FROM tp_pm_groutingdailydetail gdd\n" +
" WHERE gdd.barcode = :BarCode";
paras = new OracleParameter[] {
new OracleParameter(":BarCode",OracleDbType.NVarchar2,
barcode,ParameterDirection.Input)
};
DataTable dt = oracleTrConn.GetSqlResultToDt(sql, paras);
if (dt == null || dt.Rows.Count == 0)
{
// 无效条码
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = "条码【" + barcode + "】为无效条码";
return sre;
}
sql =
"INSERT INTO TP_PM_GBCHECKEDDETAIL\n" +
" (GBCHECKEDID\n" +
" ,BARCODE\n" +
" ,GBCHECKEDNO\n" +
" ,GROUTINGDAILYDETAILID\n" +
" ,GROUTINGDAILYID\n" +
" ,GROUTINGLINEID\n" +
" ,GROUTINGLINECODE\n" +
" ,GROUTINGLINENAME\n" +
" ,GROUTINGLINEDETAILID\n" +
" ,GROUTINGDATE\n" +
" ,GROUTINGMOULDCODE\n" +
" ,MOULDCODE\n" +
" ,GMOULDTYPEID\n" +
" ,CANMANYTIMES\n" +
" ,GROUTINGBATCHNO\n" +
" ,USERID\n" +
" ,USERCODE\n" +
" ,CLASSESSETTINGID\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,GOODSNAME\n" +
" ,GMOULDSTATUS\n" +
" ,GROUTINGCOUNT\n" +
" ,GROUTINGFLAG\n" +
" ,ONLYCODE\n" +
" ,NOGROUTINGRREASON\n" +
" ,SPECIALREPAIRFLAG\n" +
" ,SCRAPFLAG\n" +
" ,SCRAPTIME\n" +
" ,SCRAPUSER\n" +
" ,ISPUBLICBODY\n" +
" ,DELIVERFLAG\n" +
" ,DELIVERTIME\n" +
" ,DELIVERUSERID\n" +
" ,DELIVERUSERCODE\n" +
" ,LOGOID\n" +
" ,REMARKS\n" +
" ,GBCHECKEDFLAG\n" +
" ,CHECKEDDATE\n" +
" ,CHECKEDUSERID\n" +
" ,ACCOUNTID\n" +
" ,VALUEFLAG\n" +
" ,CREATEUSERID\n" +
" ,UPDATEUSERID)\n" +
" SELECT :GBCHECKEDID\n" +
" ,BARCODE\n" +
" ,:GBCHECKEDNO\n" +
" ,GROUTINGDAILYDETAILID\n" +
" ,GROUTINGDAILYID\n" +
" ,GROUTINGLINEID\n" +
" ,GROUTINGLINECODE\n" +
" ,GROUTINGLINENAME\n" +
" ,GROUTINGLINEDETAILID\n" +
" ,GROUTINGDATE\n" +
" ,GROUTINGMOULDCODE\n" +
" ,MOULDCODE\n" +
" ,GMOULDTYPEID\n" +
" ,CANMANYTIMES\n" +
" ,GROUTINGBATCHNO\n" +
" ,USERID\n" +
" ,USERCODE\n" +
" ,CLASSESSETTINGID\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,GOODSNAME\n" +
" ,GMOULDSTATUS\n" +
" ,GROUTINGCOUNT\n" +
" ,GROUTINGFLAG\n" +
" ,ONLYCODE\n" +
" ,NOGROUTINGRREASON\n" +
" ,SPECIALREPAIRFLAG\n" +
" ,SCRAPFLAG\n" +
" ,SCRAPTIME\n" +
" ,SCRAPUSER\n" +
" ,ISPUBLICBODY\n" +
" ,DELIVERFLAG\n" +
" ,DELIVERTIME\n" +
" ,DELIVERUSERID\n" +
" ,DELIVERUSERCODE\n" +
" ,LOGOID\n" +
" ,REMARKS\n" +
" ,'2'\n" +
" ,SYSDATE\n" +
" ,:CHECKEDUSERID\n" +
" ,ACCOUNTID\n" +
" ,'1'\n" +
" ,:CHECKEDUSERID\n" +
" ,:CHECKEDUSERID\n" +
" FROM tp_pm_groutingdailydetail\n" +
" WHERE GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID";
paras = new OracleParameter[] {
new OracleParameter(":GBCHECKEDID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":GBCHECKEDNO",OracleDbType.NVarchar2,
checkedNo,ParameterDirection.Input),
new OracleParameter(":CHECKEDUSERID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sql, paras);
//returnRows = 10;
}
else
{
string checkedFlag = ds.Tables[0].Rows[0]["GBCheckedFlag"].ToString();
if (checkedFlag == "1")
{
//if (Convert.ToInt32(ds.Tables[0].Rows[0]["CHECKEDUSERID"]) != sUserInfo.UserID)
//{
// returnRows = -22;//己被其他工号盘点
//}
//else
//{
// returnRows = -24;//己被自己工号盘点
//}
//return returnRows;
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = "条码【" + barcode + "】已被盘点";
return sre;
}
else if (checkedFlag == "2")
{
//if (Convert.ToInt32(ds.Tables[0].Rows[0]["CHECKEDUSERID"]) != sUserInfo.UserID)
//{
// returnRows = -23;//己被其他工号盘盈
//}
//else
//{
// returnRows = -25;//己被自己工号盘盈
//}
//return returnRows;
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = "条码【" + barcode + "】已被盘盈";
return sre;
}
sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:CheckedID and BarCode=:BarCode and GBCheckedFlag=:whereGBCheckedFlag";
paras = new OracleParameter[] {
new OracleParameter(":CheckedUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
(int)Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
new OracleParameter(":CheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,
barcode,ParameterDirection.Input),
new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
(int)Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sql, paras);
//returnRows = 1;
}
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
else
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return sre;
}
///
/// 报损未盘点
///
/// 用户基本信息
///
public static ServiceResultEntity SaveClearGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
string barcodes = null;
if (cre.Properties["Barcodes"] != null)
{
barcodes = cre.Properties["Barcodes"].ToString();
}
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
string sql = null;
OracleParameter[] paras = null;
try
{
if (barcodes == null)
{
sql =
"UPDATE tp_pm_groutingdailydetail gdd\n" +
" SET gdd.scrapflag = '1'\n" +
" ,gdd.scraptime = SYSDATE\n" +
" ,gdd.scrapuser = :UserID\n" +
" ,gdd.scrapreasonid = -2\n" +
" ,gdd.scrapreason = '盘亏报损'\n" +
" ,gdd.ScrapType = 2\n" +
" WHERE gdd.scrapflag = '0'\n" +
" AND gdd.deliverflag = '0'\n" +
//" AND instr(:barcodes, gdd.barcode) > 0";
" AND exists (select 1 from tp_pm_gbcheckeddetail gbcd where gbcd.GBCheckedID = :CheckedID and gbcd.gbcheckedflag = '0' and gbcd.barcode = gdd.barcode)";
paras = new OracleParameter[] {
new OracleParameter(":CheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
sql = "UPDATE tp_pm_gbcheckeddetail gdd\n" +
" SET gdd.gbcheckedflag = '3'\n" +
" ,gdd.CheckedDate = SYSDATE\n" +
" ,gdd.CheckedUserID = :UserID\n" +
" ,gdd.UpdateUserID = :UserID\n" +
" WHERE gdd.gbcheckedflag = '0'\n" +
" AND gdd.GBCheckedID = :CheckedID";
paras = new OracleParameter[] {
new OracleParameter(":UserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":CheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
}
else
{
string[] barcodelist = barcodes.Split(',');
foreach (string barcode in barcodelist)
{
sql =
"UPDATE tp_pm_groutingdailydetail gdd\n" +
" SET gdd.scrapflag = '1'\n" +
" ,gdd.scraptime = SYSDATE\n" +
" ,gdd.scrapuser = :UserID\n" +
" ,gdd.scrapreasonid = -2\n" +
" ,gdd.scrapreason = '盘亏报损'\n" +
" ,gdd.ScrapType = 2\n" +
" WHERE gdd.scrapflag = '0'\n" +
" AND gdd.deliverflag = '0'\n" +
//" AND instr(:barcodes, gdd.barcode) > 0";
" AND gdd.barcode = :barcode";
paras = new OracleParameter[] {
//new OracleParameter(":barcodes",OracleDbType.NVarchar2,
// barcodes,ParameterDirection.Input),
new OracleParameter(":barcode",OracleDbType.NVarchar2,
barcode,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
sql = "UPDATE tp_pm_gbcheckeddetail gdd\n" +
" SET gdd.gbcheckedflag = '3'\n" +
" ,gdd.CheckedDate = SYSDATE\n" +
" ,gdd.CheckedUserID = :UserID\n" +
" ,gdd.UpdateUserID = :UserID\n" +
" WHERE gdd.gbcheckedflag = '0'\n" +
" AND gdd.GBCheckedID = :CheckedID" +
//" AND instr(:barcodes, gdd.barcode) > 0";
" AND gdd.barcode = :barcode";
paras = new OracleParameter[] {
//new OracleParameter(":barcodes",OracleDbType.NVarchar2,
// barcodes,ParameterDirection.Input),
new OracleParameter(":barcode",OracleDbType.NVarchar2,
barcode,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":CheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
}
}
oracleTrConn.Commit();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return sre;
}
///
/// 获取盘点单明细
///
/// 工序ID
/// DataSet
public static DataSet GetUpdateGBCheckedInfo(int checkedID, SUserInfo sUserInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = @"SELECT to_char(checked.UserCheckedCount) || '/' ||
to_char(checked.CheckedCount) CheckedCount
,to_char(checked.UserOverageCount) || '/' ||
to_char(checked.OverageCount) OverageCount
,to_char(checked.UserCheckedCount + checked.UserOverageCount) || '/' ||
to_char(checked.CheckedCount + checked.OverageCount) || '/' ||
to_char(TCount) TCount
FROM (SELECT icd.GBcheckedid
, SUM(CASE
WHEN icd.checkeduserid = :userid AND icd.GBCheckedFlag = '1' THEN
1
ELSE
0
END) UserCheckedCount
, SUM(CASE
WHEN icd.checkeduserid = :userid AND icd.GBCheckedFlag = '2' THEN
1
ELSE
0
END) UserOverageCount
, SUM(CASE
WHEN icd.GBCheckedFlag = '1' THEN
1
ELSE
0
END) CheckedCount
, SUM(CASE
WHEN icd.GBCheckedFlag = '2' THEN
1
ELSE
0
END) OverageCount
,COUNT(icd.GBcheckedid) TCount
FROM tp_pm_GBcheckeddetail icd
WHERE icd.GBcheckedid = :GBcheckedid
AND icd.valueflag = '1') checked";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":GBcheckedid",OracleDbType.Int32, checkedID, ParameterDirection.Input),
new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
};
DataSet ds = con.GetSqlResultToDs(sqlString, paras);
ds.Tables[0].TableName = "Table1";
sqlString = @"SELECT icd.goodscode, COUNT(icd.goodscode) goodscount
FROM tp_pm_GBcheckeddetail icd
WHERE icd.GBcheckedid = :GBcheckedid
AND icd.checkeduserid = :userid
AND icd.GBCheckedFlag = '1'
AND icd.valueflag = '1'
GROUP BY icd.goodscode";
DataTable dt = con.GetSqlResultToDt(sqlString, paras);
dt.TableName = "Table2";
ds.Tables.Add(dt);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 成型盘点-盘点选择条码
///
/// 用户基本信息
///
public static ServiceResultEntity GBCheckBarcodes(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
string barcodes = null;
if (cre.Properties["Barcodes"] != null)
{
barcodes = cre.Properties["Barcodes"].ToString();
}
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string sql = null;
OracleParameter[] paras = null;
if (barcodes == null)
{
sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:GBCheckedID and GBCheckedFlag=:whereGBCheckedFlag";
paras = new OracleParameter[] {
new OracleParameter(":CheckedUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
}
else
{
string[] barcode = barcodes.Split(',');
foreach (string item in barcode)
{
sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:GBCheckedID and BarCode=:BarCode and GBCheckedFlag=:whereGBCheckedFlag";
paras = new OracleParameter[] {
new OracleParameter(":CheckedUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
new OracleParameter(":GBCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,
item,ParameterDirection.Input),
new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
}
}
oracleTrConn.Commit();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return sre;
}
///
/// 在产盘点-盘点选择条码
///
/// 用户基本信息
///
public static ServiceResultEntity CheckBarcodes(SUserInfo sUserInfo, ClientRequestEntity cre)
{
ServiceResultEntity sre = new ServiceResultEntity();
int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
string barcodes = null;
if (cre.Properties["Barcodes"] != null)
{
barcodes = cre.Properties["Barcodes"].ToString();
}
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string sql = null;
OracleParameter[] paras = null;
if (barcodes == null)
{
sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and InCheckedFlag=:whereInCheckedFlag";
paras = new OracleParameter[] {
new OracleParameter(":CheckedUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
new OracleParameter(":InCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
}
else
{
string[] barcode = barcodes.Split(',');
foreach (string item in barcode)
{
sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and BarCode=:BarCode and InCheckedFlag=:whereInCheckedFlag";
paras = new OracleParameter[] {
new OracleParameter(":CheckedUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
new OracleParameter(":InCheckedID",OracleDbType.Int32,
checkedID,ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,
item,ParameterDirection.Input),
new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
sUserInfo.UserID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
}
}
oracleTrConn.Commit();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return sre;
}
#endregion
#region 集中采集的结束工序(包装装板)验证参数(商标、型号、数量)
///
/// 集中采集的结束工序(包装装板)验证参数(商标、型号、数量)
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetFinishedLoadingCarSetting(SUserInfo user, ClientRequestEntity cre)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
//// 列表中产品数量
//int listCount = (int)cre.Properties["ListCount"];
//// 第一产品时,获取系统参数
//if (listCount == 0)
//{
string sqlString = "SELECT sss.settingcode, sss.settingvalue\n" +
" FROM tp_mst_systemsetting sss\n" +
" WHERE sss.accountid = " + user.AccountID + "\n" +
" AND sss.settingcode IN ('S_PM_011', 'S_PM_012', 'S_PM_013')";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
};
DataTable data = conn.GetSqlResultToDt(sqlString, paras);
//foreach (DataRow item in data.Rows)
//{
// if (item["settingcode"].ToString() == "S_PM_011")
// {
// cre.Properties["S_PM_011"] = item["settingvalue"];
// }
// else if (item["settingcode"].ToString() == "S_PM_012")
// {
// cre.Properties["S_PM_012"] = item["settingvalue"];
// }
// else if (item["settingcode"].ToString() == "S_PM_013")
// {
// cre.Properties["S_PM_013"] = item["settingvalue"];
// }
//}
sqlString = "SELECT g.PLATELIMITNUM\n" +
" FROM tp_mst_goods g\n" +
" WHERE g.goodsid = " + cre.Properties["GoodsID"];
cre.Properties["PLATELIMITNUM"] = conn.GetSqlResultToObj(sqlString);
//}
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Data.Tables.Add(data);
sre.Result = cre.Properties["PLATELIMITNUM"];
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
#endregion
#region 成型报损
///
/// 根据页面条件获取成型报损一览
///
/// 成型报损
/// 用户基本信息
/// DataSet
public static ServiceResultEntity GetGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
ServiceResultEntity result = new ServiceResultEntity();
con.Open();
string sqlString = "SELECT sp.BarCode\n" +
" ,sp.ScrapProductID\n" +
" ,sp.GoodsID\n" +
" ,sp.Goodscode\n" +
" ,sp.Goodsname\n" +
" ,sp.GroutingDailyID\n" +
" ,sp.Groutingdailydetailid\n" +
" ,sp.GroutingDate\n" +
" ,sp.GroutingLineID\n" +
" ,sp.Groutinglinecode\n" +
" ,sp.Groutinglinename\n" +
" ,sp.GMouldTypeID\n" +
" ,sp.Groutingmouldcode\n" +
" ,sp.Mouldcode\n" +
" ,sp.Groutinguserid\n" +
" ,sp.Groutingusercode\n" +
" ,sp.Groutingnum\n" +
" ,sp.Scraptype\n" +
" , CASE\n" +
" WHEN sp.ScrapType = '0' THEN\n" +
" '开模报损'\n" +
" WHEN sp.ScrapType = '1' THEN\n" +
" '普通报损'\n" +
" WHEN sp.ScrapType = '2' THEN\n" +
" '盘点报损'\n" +
" ELSE\n" +
" '自动报损'\n" +
" END ScrapTypeName\n" +
" ,sp.ResponType\n" +
" ,sp.ScrapDate\n" +
" ,sp.ScrapRreasonID\n" +
" ,msr.ScrapReason\n" +
" ,userInfo.UserName AS UName\n" +
" ,userInfo.UserCode AS UCode\n" +
" ,status.AuditStatusName\n" +
" ,createuser.usercode AS createuser\n" +
" ,responUser.UserName AS ResponUserName\n" +
" ,sp.ResponUserCode\n" +
" ,sp.ResponUserID\n" +
" ,sp.BackOutFlag\n" +
" ,sp.BackOutTime\n" +
" ,sp.BackOutUserID\n" +
" ,sp.BackOutUserCode\n" +
" ,backOutUser.UserName AS BackOutUserName\n" +
" ,sp.Remarks\n" +
" ,sp.AuditStatus\n" +
" ,sp.AuditDate\n" +
" ,sp.Auditopinion\n" +
" ,sp.Accountdate\n" +
" ,sp.OPTimeStamp\n" +
" FROM TP_PM_GroutingScrapProduct sp\n" +
" INNER JOIN TP_SYS_AuditStatus status\n" +
" ON sp.AuditStatus = status.AuditStatusID\n" +
" LEFT JOIN TP_MST_USER userInfo\n" +
" ON sp.Auditor = userInfo.UserId\n" +
" LEFT JOIN TP_MST_USER createuser\n" +
" ON sp.createuserid = createuser.UserId\n" +
" LEFT JOIN TP_MST_USER responUser\n" +
" ON sp.ResponUserID = responUser.UserId\n" +
" LEFT JOIN TP_MST_ScrapReason msr\n" +
" ON sp.ScrapRreasonID = msr.ScrapReasonID\n" +
" LEFT JOIN TP_MST_USER backOutUser\n" +
" ON sp.BackOutUserID = backOutUser.UserId\n" +
" WHERE sp.ValueFlag = 1\n" +
" AND sp.AccountID = :in_AccountID";
List paraList = new List();
paraList.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
// 成型报损ID
if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapProductID"] + ""))
{
sqlString += " AND sp.ScrapProductID = :in_ScrapProductID";
paraList.Add(new OracleParameter(":in_ScrapProductID", OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input));
}
// 产品编码
if (!string.IsNullOrWhiteSpace(cre.Properties["GoodsCode"] + ""))
{
sqlString += " AND INSTR(sp.GoodsCode, :in_GoodsCode) > 0";
paraList.Add(new OracleParameter(":in_GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"] + "", ParameterDirection.Input));
}
// 产品名称
if (!string.IsNullOrWhiteSpace(cre.Properties["GoodsName"] + ""))
{
sqlString += " AND INSTR(sp.GoodsName, :in_GoodsName) > 0";
paraList.Add(new OracleParameter(":in_GoodsName", OracleDbType.NVarchar2, cre.Properties["GoodsName"] + "", ParameterDirection.Input));
}
// 产品条码
if (!string.IsNullOrWhiteSpace(cre.Properties["BarCode"] + ""))
{
sqlString += " AND INSTR(sp.BarCode, :in_BarCode) > 0";
paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.NVarchar2, cre.Properties["BarCode"] + "", ParameterDirection.Input));
}
// 成型工号
if (!string.IsNullOrWhiteSpace(cre.Properties["GroutingUserCode"] + ""))
{
sqlString += " AND INSTR(sp.GroutingUserCode, :in_GroutingUserCode) > 0";
paraList.Add(new OracleParameter(":in_GroutingUserCode", OracleDbType.NVarchar2, cre.Properties["GroutingUserCode"] + "", ParameterDirection.Input));
}
// 责任工号
if (!string.IsNullOrWhiteSpace(cre.Properties["ResponUserCode"] + ""))
{
sqlString += " AND INSTR(sp.ResponUserCode, :in_ResponUserCode) > 0";
paraList.Add(new OracleParameter(":in_ResponUserCode", OracleDbType.NVarchar2, cre.Properties["ResponUserCode"] + "", ParameterDirection.Input));
}
// 损坯原因
if (!string.IsNullOrWhiteSpace(cre.Properties["Rreason"] + ""))
{
sqlString += " AND INSTR(msr.ScrapReason, :in_ScrapRreason) > 0";
paraList.Add(new OracleParameter(":in_ScrapRreason", OracleDbType.NVarchar2, cre.Properties["Rreason"] + "", ParameterDirection.Input));
}
// 备注
if (!string.IsNullOrWhiteSpace(cre.Properties["Remarks"] + ""))
{
sqlString += " AND INSTR(sp.Remarks, :in_Remarks) > 0";
paraList.Add(new OracleParameter(":in_Remarks", OracleDbType.NVarchar2, cre.Properties["Remarks"] + "", ParameterDirection.Input));
}
// 审核状态
if (!string.IsNullOrWhiteSpace(cre.Properties["AuditStatus"] + ""))
{
sqlString += " AND sp.AuditStatus = :in_AuditStatus";
paraList.Add(new OracleParameter(":in_AuditStatus", OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input));
}
// 报损开始日期
if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapDateStart"] + ""))
{
sqlString += " AND sp.ScrapDate >= :in_ScrapDateStart";
paraList.Add(new OracleParameter(":in_ScrapDateStart", OracleDbType.Date, Convert.ToDateTime(cre.Properties["ScrapDateStart"]), ParameterDirection.Input));
}
// 报损结束日期
if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapDateEnd"] + ""))
{
sqlString += " AND sp.ScrapDate <= :in_ScrapDateEnd";
paraList.Add(new OracleParameter(":in_ScrapDateEnd", OracleDbType.Date, Convert.ToDateTime(cre.Properties["ScrapDateEnd"]), ParameterDirection.Input));
}
sqlString += " ORDER BY sp.BarCode ";
DataSet dsReturn = con.GetSqlResultToDs(sqlString, paraList.ToArray());
// 是否查责任员工
if (!string.IsNullOrWhiteSpace(cre.Properties["IsSearchStaff"] + ""))
{
string detailString = "SELECT Mu.userid\n" +
" ,Staff.Staffid\n" +
" ,Staff.Staffname\n" +
" ,Staff.Organizationid\n" +
" ,Staff.Jobs\n" +
" ,Staff.Staffstatus\n" +
" ,Staff.Staffcode\n" +
" ,Jobs.Jobsname\n" +
" ,Mu.UserCode\n" +
" ,TUserJobs.Jobsname AS UJobsName\n" +
" ,TUserJobs.JobsId AS UJobsId\n" +
" , CASE\n" +
" WHEN PPG.ResponsibleID IS NULL THEN\n" +
" 0\n" +
" ELSE\n" +
" 1\n" +
" END UserSelected\n" +
" FROM TP_PM_GroutingScrapProduct PGS\n" +
" INNER JOIN TP_MST_User Mu\n" +
" ON PGS.ResponUserID = Mu.Userid\n" +
" INNER JOIN TP_MST_UserStaff Mus\n" +
" ON Mu.Userid = Mus.Userid\n" +
" INNER JOIN TP_HR_Staff Staff\n" +
" ON Mus.StaffID = Staff.Staffid\n" +
" LEFT JOIN TP_MST_Jobs Jobs\n" +
" ON Staff.Jobs = Jobs.Jobsid\n" +
" LEFT JOIN TP_MST_Jobs TUserJobs\n" +
" ON TUserJobs.Jobsid = Mus.Ujobsid\n" +
" LEFT JOIN TP_PM_GroutingScrapResponsible PPG\n" +
" ON Staff.Staffid = PPG.Staffid\n" +
" AND PPG.ScrapProductID = :in_ScrapProductID\n" +
" WHERE PGS.ScrapProductID = :in_ScrapProductID";
OracleParameter[] dparas = new OracleParameter[] {
new OracleParameter(":in_ScrapProductID",OracleDbType.Int32,
cre.Properties["ScrapProductID"],ParameterDirection.Input),
};
DataTable returnTable = con.GetSqlResultToDt(detailString, dparas);
if (dsReturn != null)
{
dsReturn.Tables.Add(returnTable);
}
}
result.Data = dsReturn;
return result;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 保存成型报损数据
///
///
///
///
public static ServiceResultEntity SaveGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
{
ServiceResultEntity result = new ServiceResultEntity();
result.Status = Constant.ServiceResultStatus.Success;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlString = string.Empty;
int returnRow = Constant.INT_IS_ZERO;
try
{
oracleTrConn.Connect();
int scrapProductID = Convert.ToInt32(cre.Properties["ScrapProductID"]);
#region 1、判断是否符合报损条件(未注浆,交坯之后不允许报损,是否进行过了报损)
sqlString = "SELECT GroutingFlag,DeliverFlag,ScrapFlag\n" +
" FROM TP_PM_GroutingDailyDetail \n" +
" WHERE AccountID = :AccountID\n" +
" AND BarCode = :BarCode\n";
OracleParameter[] paras = new OracleParameter[] {
new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
};
DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
// 编码不存在
if (returnTable.Rows.Count == 0)
{
result.Result = -99;
result.Status = Constant.ServiceResultStatus.SystemError;
result.Message = "未查询到该产品信息,请确认该产品是否已经进行注浆";
return result;
}
// 未注浆
if ("0".Equals(returnTable.Rows[0]["GroutingFlag"]))
{
result.Result = -100;
result.Status = Constant.ServiceResultStatus.SystemError;
result.Message = "该产品还未进行注浆";
return result;
}
// 已经交坯
if ("1".Equals(returnTable.Rows[0]["DeliverFlag"]))
{
result.Result = -101;
result.Status = Constant.ServiceResultStatus.SystemError;
result.Message = "该产品已经交坯";
return result;
}
// 已经报损(新建才行进行判断)
if ("1".Equals(returnTable.Rows[0]["ScrapFlag"]) && scrapProductID == 0)
{
result.Result = -102;
result.Status = Constant.ServiceResultStatus.SystemError;
result.Message = "该产品已经报损";
return result;
}
#endregion
#region 2、保存报损信息
int? auditor = null;
DateTime? auditDate = null;
if (!Constant.AuditStatus.Pending.GetHashCode().Equals(cre.Properties["AuditStatus"]))
{
auditor = userInfo.UserID;
auditDate = DateTime.Now;
}
#region 新建
if (scrapProductID == 0)
{
#region 报损总表
sqlString = "SELECT SEQ_PM_GroutingScrapProduct_ID.nextval FROM DUAL";
scrapProductID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sqlString));
sqlString = "INSERT INTO TP_PM_GroutingScrapProduct\n" +
" (ScrapProductID\n" +
" ,BarCode\n" +
" ,GoodsID\n" +
" ,GoodsCode\n" +
" ,GoodsName\n" +
" ,GroutingDailyID\n" +
" ,GroutingDailyDetailID\n" +
" ,GroutingDate\n" +
" ,GroutingLineID\n" +
" ,GroutingLineCode\n" +
" ,GroutingLineName\n" +
" ,GMouldTypeID\n" +
" ,GroutingLineDetailID\n" +
" ,GroutingMouldCode\n" +
" ,MouldCode\n" +
" ,GroutingUserID\n" +
" ,GroutingUserCode\n" +
" ,GroutingNum\n" +
" ,ScrapType\n" +
" ,ResponType\n" +
" ,ScrapDate\n" +
" ,ScrapRreasonID\n" +
" ,ResponUserID\n" +
" ,ResponUserCode\n" +
" ,Remarks\n" +
" ,AuditStatus\n" +
" ,Auditor\n" +
" ,AuditDate\n" +
" ,AccountDate\n" +
" ,AccountID\n" +
" ,CreateUserID\n" +
" ,UpdateUserID)\n" +
"VALUES\n" +
" (:ScrapProductID\n" +
" ,:BarCode\n" +
" ,:GoodsID\n" +
" ,:GoodsCode\n" +
" ,:GoodsName\n" +
" ,:GroutingDailyID\n" +
" ,:GroutingDailyDetailID\n" +
" ,:GroutingDate\n" +
" ,:GroutingLineID\n" +
" ,:GroutingLineCode\n" +
" ,:GroutingLineName\n" +
" ,:GMouldTypeID\n" +
" ,:GroutingLineDetailID\n" +
" ,:GroutingMouldCode\n" +
" ,:MouldCode\n" +
" ,:GroutingUserID\n" +
" ,:GroutingUserCode\n" +
" ,:GroutingNum\n" +
" ,:ScrapType\n" +
" ,:ResponType\n" +
" ,:ScrapDate\n" +
" ,:ScrapRreasonID\n" +
" ,:ResponUserID\n" +
" ,:ResponUserCode\n" +
" ,:Remarks\n" +
" ,:AuditStatus\n" +
" ,:Auditor\n" +
" ,:AuditDate\n" +
" ,sysdate\n" +
" ,:AccountID\n" +
" ,:CreateUserID\n" +
" ,:UpdateUserID)";
paras = new OracleParameter[] {
new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
new OracleParameter(":GoodsName",OracleDbType.NVarchar2, cre.Properties["GoodsName"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyID",OracleDbType.Int32, cre.Properties["GroutingDailyID"], ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":GroutingDate",OracleDbType.Date,
Convert.ToDateTime(cre.Properties["GroutingDate"]), ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32, cre.Properties["GroutingLineID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2, cre.Properties["GroutingLineCode"], ParameterDirection.Input),
new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2, cre.Properties["GroutingLineName"], ParameterDirection.Input),
new OracleParameter(":GMouldTypeID",OracleDbType.Int32, cre.Properties["GMouldTypeID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32, cre.Properties["GroutingLineDetailID"], ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2, cre.Properties["GroutingMouldCode"], ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2, cre.Properties["MouldCode"], ParameterDirection.Input),
new OracleParameter(":GroutingUserID",OracleDbType.Int32, cre.Properties["GroutingUserID"], ParameterDirection.Input),
new OracleParameter(":GroutingUserCode",OracleDbType.NVarchar2, cre.Properties["GroutingUserCode"], ParameterDirection.Input),
new OracleParameter(":GroutingNum",OracleDbType.Decimal, cre.Properties["GroutingNum"], ParameterDirection.Input),
new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
new OracleParameter(":ResponType",OracleDbType.Char, Constant.ScrapResponType.Person.GetHashCode(),
ParameterDirection.Input),
new OracleParameter(":ScrapDate",OracleDbType.Date,
Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
new OracleParameter(":ScrapRreasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
new OracleParameter(":ResponUserID",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
new OracleParameter(":ResponUserCode",OracleDbType.NVarchar2, cre.Properties["ResponUserCode"], ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2, cre.Properties["Remarks"], ParameterDirection.Input),
new OracleParameter(":AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
new OracleParameter(":Auditor",OracleDbType.Int32, auditor, ParameterDirection.Input),
new OracleParameter(":AuditDate",OracleDbType.Date, auditDate, ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
#endregion
#region 报损责任者
if (cre.Data != null && cre.Data.Tables.Count > 0
&& cre.Data.Tables[0].Rows.Count > 0)
{
foreach (DataRow row in cre.Data.Tables[0].Rows)
{
sqlString = "INSERT INTO TP_PM_GroutingScrapResponsible\n" +
" (\n" +
" ScrapProductID\n" +
" ,BarCode\n" +
" ,StaffID\n" +
" ,StaffStatus\n" +
" ,UserID\n" +
" ,UserCode\n" +
" ,UJobsID\n" +
" ,SJobsID\n" +
" ,AccountID\n" +
" ,CreateUserID\n" +
" ,UpdateUserID)\n" +
"VALUES\n" +
" (\n" +
" :ScrapProductID\n" +
" ,:BarCode\n" +
" ,:StaffID\n" +
" ,:StaffStatus\n" +
" ,:UserID\n" +
" ,:UserCode\n" +
" ,:UJobsID\n" +
" ,:SJobsID\n" +
" ,:AccountID\n" +
" ,:CreateUserID\n" +
" ,:UpdateUserID)";
paras = new OracleParameter[] {
new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32, row["StaffID"], ParameterDirection.Input),
new OracleParameter(":StaffStatus",OracleDbType.Int32, row["StaffStatus"], ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32, row["UserID"], ParameterDirection.Input),
new OracleParameter(":UserCode",OracleDbType.NVarchar2, row["UserCode"], ParameterDirection.Input),
new OracleParameter(":UJobsID",OracleDbType.Int32, row["UJobsId"], ParameterDirection.Input),
new OracleParameter(":SJobsID",OracleDbType.Int32, row["Jobs"], ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
}
#endregion
#region 更新注浆日报明细表
sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
" SET ScrapFlag = :ScrapFlag\n" +
" ,SReasonID = :SReasonID\n" +
" ,ScrapType = :ScrapType\n" +
" ,ScrapTime = :ScrapTime\n" +
" ,ScrapUser = :ScrapUser\n" +
" ,UpdateUserID = :UpdateUserID\n" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
paras = new OracleParameter[] {
new OracleParameter(":ScrapFlag",OracleDbType.Char, 1, ParameterDirection.Input),
new OracleParameter(":SReasonID",OracleDbType.NVarchar2, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
new OracleParameter(":ScrapTime",OracleDbType.Date,
Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
new OracleParameter(":ScrapUser",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
#endregion
}
#endregion
#region 编辑
else
{
#region 报损总表
sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
" SET ScrapType = :in_ScrapType\n" +
" ,ResponType = :in_ResponType\n" +
" ,ScrapDate = :in_ScrapDate\n" +
" ,ScrapRreasonID = :in_ScrapRreasonID\n" +
" ,ResponUserID = :in_ResponUserID\n" +
" ,ResponUserCode = :in_ResponUserCode\n" +
" ,Remarks = :in_Remarks\n" +
" ,AuditStatus = :in_AuditStatus\n" +
" ,Auditor = :in_Auditor\n" +
" ,AuditDate = :in_AuditDate\n" +
" ,UpdateUserID = :in_UpdateUserID\n" +
" WHERE ScrapProductID = :in_ScrapProductID";
paras = new OracleParameter[] {
new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
new OracleParameter(":in_ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
new OracleParameter(":in_ResponType",OracleDbType.Char, Constant.ScrapResponType.Person.GetHashCode(),
ParameterDirection.Input),
new OracleParameter(":in_ScrapDate",OracleDbType.Date,
Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
new OracleParameter(":in_ScrapRreasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
new OracleParameter(":in_ResponUserID",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
new OracleParameter(":in_ResponUserCode",OracleDbType.NVarchar2, cre.Properties["ResponUserCode"], ParameterDirection.Input),
new OracleParameter(":in_Remarks",OracleDbType.NVarchar2, cre.Properties["Remarks"], ParameterDirection.Input),
new OracleParameter(":in_AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
new OracleParameter(":in_Auditor",OracleDbType.Int32, auditor, ParameterDirection.Input),
new OracleParameter(":in_AuditDate",OracleDbType.Date, auditDate, ParameterDirection.Input),
new OracleParameter(":in_UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
#endregion
#region 报损责任者
if (cre.Data != null && cre.Data.Tables.Count > 0
&& cre.Data.Tables[0].Rows.Count > 0)
{
// 先删除 后插入
sqlString = "DELETE TP_PM_GroutingScrapResponsible\n" +
" WHERE ScrapProductID = :in_ScrapProductID";
paras = new OracleParameter[] {
new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
foreach (DataRow row in cre.Data.Tables[0].Rows)
{
sqlString = "INSERT INTO TP_PM_GroutingScrapResponsible\n" +
" (\n" +
" ScrapProductID\n" +
" ,BarCode\n" +
" ,StaffID\n" +
" ,StaffStatus\n" +
" ,UserID\n" +
" ,UserCode\n" +
" ,UJobsID\n" +
" ,SJobsID\n" +
" ,AccountID\n" +
" ,CreateUserID\n" +
" ,UpdateUserID)\n" +
"VALUES\n" +
" (\n" +
" :ScrapProductID\n" +
" ,:BarCode\n" +
" ,:StaffID\n" +
" ,:StaffStatus\n" +
" ,:UserID\n" +
" ,:UserCode\n" +
" ,:UJobsID\n" +
" ,:SJobsID\n" +
" ,:AccountID\n" +
" ,:CreateUserID\n" +
" ,:UpdateUserID)";
paras = new OracleParameter[] {
new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
new OracleParameter(":StaffID",OracleDbType.Int32, row["StaffID"], ParameterDirection.Input),
new OracleParameter(":StaffStatus",OracleDbType.Int32, row["StaffStatus"], ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32, row["UserID"], ParameterDirection.Input),
new OracleParameter(":UserCode",OracleDbType.NVarchar2, row["UserCode"], ParameterDirection.Input),
new OracleParameter(":UJobsID",OracleDbType.Int32, row["UJobsId"], ParameterDirection.Input),
new OracleParameter(":SJobsID",OracleDbType.Int32, row["Jobs"], ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
}
#endregion
#region 更新注浆日报明细表
sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
" SET SReasonID = :SReasonID\n" +
" ,ScrapType = :ScrapType\n" +
" ,ScrapTime = :ScrapTime\n" +
" ,ScrapUser = :ScrapUser\n" +
" ,UpdateUserID = :UpdateUserID\n" +
" WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
paras = new OracleParameter[] {
new OracleParameter(":SReasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
new OracleParameter(":ScrapTime",OracleDbType.Date,
Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
new OracleParameter(":ScrapUser",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
#endregion
}
#endregion
#endregion
oracleTrConn.Commit();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
result.Result = -999;
result.Status = Constant.ServiceResultStatus.SystemError;
result.Message = "成型报损保存失败";
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
result.Result = returnRow;
return result;
}
///
/// 审核成型报损
///
///
///
///
public static ServiceResultEntity AuditGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
{
ServiceResultEntity result = new ServiceResultEntity();
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlString = string.Empty;
int returnRow = Constant.INT_IS_ZERO;
try
{
oracleTrConn.Connect();
#region 1、校验该成型报损是否是待审状态
sqlString = "SELECT 1\n" +
" FROM TP_PM_GroutingScrapProduct \n" +
" WHERE ScrapProductID = :in_ScrapProductID\n" +
" AND AuditStatus = 0";
OracleParameter[] paras = new OracleParameter[] {
new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input),
};
DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
// 审核状态不是待审
if (returnTable.Rows.Count == 0)
{
result.Result = -99;
return result;
}
#endregion
#region 2、审核
sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
" SET AuditStatus = :in_AuditStatus\n" +
" ,Auditor = :in_Auditor\n" +
" ,AuditDate = :in_AuditDate\n" +
" ,AuditOpinion = :in_AuditOpinion\n" +
" WHERE ScrapProductID = :in_ScrapProductID";
paras = new OracleParameter[] {
new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input),
new OracleParameter(":in_AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
new OracleParameter(":in_Auditor",OracleDbType.Int32, cre.Properties["Auditor"], ParameterDirection.Input),
new OracleParameter(":in_AuditDate",OracleDbType.Date, DateTime.Now, ParameterDirection.Input),
new OracleParameter(":in_AuditOpinion",OracleDbType.NVarchar2, cre.Properties["AuditOpinion"], ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
#endregion
oracleTrConn.Commit();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
result.Result = returnRow;
return result;
}
///
/// 撤销成型报损
///
///
///
///
public static ServiceResultEntity ReverseGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
{
ServiceResultEntity result = new ServiceResultEntity();
result.Status = Constant.ServiceResultStatus.Success;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlString = string.Empty;
int returnRow = Constant.INT_IS_ZERO;
try
{
oracleTrConn.Connect();
#region 1、校验该成型报损是否是待审状态
sqlString = "SELECT BackOutFlag\n" +
" FROM TP_PM_GroutingScrapProduct \n" +
" WHERE BackOutFlag = '0'\n" +
" AND BarCode = :in_BarCode\n";
OracleParameter[] paras = new OracleParameter[] {
new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
};
DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
// 该产品没有做成型报损
if (returnTable.Rows.Count == 0)
{
result.Result = -99;
result.Status = Constant.ServiceResultStatus.SystemError;
result.Message = "此产品没有损坯或已被撤销,不能撤销";
return result;
}
//// 该产品已经做了撤销了
//if ("1".Equals(returnTable.Rows[0]["BackOutFlag"]))
//{
// result.Result = -100;
// result.Status = Constant.ServiceResultStatus.SystemError;
// result.Message = "此产品已经撤销";
// return result;
//}
#endregion
#region 2、撤销
sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
" SET BackOutFlag = :in_BackOutFlag\n" +
" ,BackOutTime = :in_BackOutTime\n" +
" ,BackOutUserID = :in_BackOutUserID\n" +
" ,BackOutUserCode = :in_BackOutUserCode\n" +
" WHERE BarCode = :in_BarCode";
paras = new OracleParameter[] {
new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
new OracleParameter(":in_BackOutFlag",OracleDbType.Int32, Constant.INT_IS_ONE, ParameterDirection.Input),
new OracleParameter(":in_BackOutTime",OracleDbType.Date, DateTime.Now, ParameterDirection.Input),
new OracleParameter(":in_BackOutUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
new OracleParameter(":in_BackOutUserCode",OracleDbType.NVarchar2, userInfo.UserCode , ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
" SET ScrapFlag = :in_ScrapFlag\n" +
" ,SReasonID = NULL\n" +
" ,ScrapType = NULL\n" +
" ,ScrapTime = NULL\n" +
" ,ScrapUser = NULL\n" +
" WHERE BarCode = :in_BarCode";
paras = new OracleParameter[] {
new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
new OracleParameter(":in_ScrapFlag",OracleDbType.Char, "0" , ParameterDirection.Input),
};
returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
#endregion
oracleTrConn.Commit();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
result.Status = Constant.ServiceResultStatus.SystemError;
result.Message = "撤销成型报损失败";
throw ex;
}
finally
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
result.Result = returnRow;
return result;
}
///
/// 获取注浆日报明细表
///
///
///
///
public static ServiceResultEntity GetGroutingDailyDetail(ClientRequestEntity cre, SUserInfo userInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
ServiceResultEntity result = new ServiceResultEntity();
con.Open();
string sqlString = "SELECT PGD.GroutingDailyDetailID\n" +
" ,PGD.GroutingDailyID\n" +
" ,PGD.GroutingLineID\n" +
" ,PGD.GroutingLineCode\n" +
" ,PGD.GroutingLineName\n" +
" ,PGD.GroutingLineDetailID\n" +
" ,PGD.GroutingDate\n" +
" ,PGD.GroutingMouldCode\n" +
" ,PGD.MouldCode\n" +
" ,PGD.GMouldTypeID\n" +
" ,PGD.CanManyTimes\n" +
" ,PGD.GroutingBatchNo\n" +
" ,PGD.UserID GroutingUserID\n" +
" ,PGD.UserCode GroutingUserCode\n" +
" ,PGD.ClassesSettingID\n" +
" ,PGD.GoodsID\n" +
" ,PGD.GoodsCode\n" +
" ,PGD.GoodsName\n" +
" ,PGD.GMouldStatus\n" +
" ,PGD.GroutingCount GroutingNum\n" +
" ,PGD.GroutingFlag\n" +
" ,PGD.BarCode\n" +
" ,PGD.OnlyCode\n" +
//" ,PGD.PrintTime\n" +
" ,PGD.NoGroutingRreason\n" +
" ,PGD.SpecialRepairFlag\n" +
" ,PGD.ScrapFlag\n" +
" ,PGD.SReasonID\n" +
" ,PGD.ScrapType\n" +
" ,PGD.ScrapTime\n" +
" ,PGD.ScrapUser\n" +
" ,PGD.IsPublicBody\n" +
" ,PGD.DeliverFlag\n" +
" FROM TP_PM_GroutingDailyDetail PGD\n" +
" WHERE PGD.AccountID = :in_AccountID";
List paraList = new List();
paraList.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
// 产品条码
if (!string.IsNullOrWhiteSpace(cre.Properties["BarCode"] + ""))
{
sqlString += " AND PGD.BarCode = :in_BarCode ";
paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.NVarchar2, cre.Properties["BarCode"] + "", ParameterDirection.Input));
}
DataSet dsReturn = con.GetSqlResultToDs(sqlString, paraList.ToArray());
result.Data = dsReturn;
return result;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
#endregion
#region 产品挂起
///
/// 获取可以挂起的工序(干补、装车、入窑、出窑)工序不能挂起
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetSuspendProcedure(SUserInfo user)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "SELECT p.procedureid, p.procedurename\n" +
" FROM tp_pc_procedure p\n" +
" INNER JOIN tp_pc_productionline line\n" +
" ON line.productionlineid = p.productionlineid\n" +
" WHERE line.valueflag = '1'\n" +
" AND p.valueflag = '1'\n" +
" AND p.NODETYPE <> '3'\n" +
//" AND p.modeltype IN (-1, 0, 4, 5, 9)\n" +
" AND p.modeltype IN (0, 4, 5, 9)\n" +
" AND p.PROCEDUREMODEL = '1'\n" +
" AND p.accountid = :accountid\n" +
" AND line.accountid = :accountid\n" +
" ORDER BY line.productionlineid, p.displayno";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
};
DataSet data = conn.GetSqlResultToDs(sqlString, paras);
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = data;
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 验证挂起条码
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity CheckSuspendBarcode(SUserInfo user, string barcode)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "SELECT 1 AS SEL, gdd.groutingdailydetailid\n" +
" ,gdd.barcode\n" +
" ,gdd.groutingmouldcode\n" +
" ,gdd.groutingdate\n" +
" ,gdd.goodscode\n" +
" ,gdd.usercode\n" +
" ,gdd.scrapflag\n" +
" ,gdd.deliverflag\n" +
" ,inp.procedureid\n" +
" ,p.procedurename\n" +
" FROM tp_pm_groutingdailydetail gdd\n" +
" LEFT JOIN tp_pm_inproduction inp\n" +
" ON inp.barcode = gdd.barcode\n" +
" LEFT JOIN tp_pc_procedure p\n" +
" ON p.procedureid = inp.procedureid\n" +
" WHERE gdd.accountid = :accountid\n" +
" AND gdd.barcode = :barcode";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
};
DataSet data = conn.GetSqlResultToDs(sqlString, paras);
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "无效条码";
return sre;
}
DataRow row = data.Tables[0].Rows[0];
if (row["scrapflag"] + "" == "1" || (row["deliverflag"] + "" == "1" && row["procedureid"] + "" == ""))
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "此条码不是在产产品";
return sre;
}
sre.Data = data;
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 保存条码挂起
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity SaveSuspendProduct(SUserInfo user, int[] procedureids, int[] groutingdailydetailids, string remarks)
{
IDBTransaction conn = null;
try
{
conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
string suspendBatchNo = Guid.NewGuid().ToString();
string sqlDelete = "DELETE FROM TP_PM_ProductSuspend ps\n" +
" WHERE ps.groutingdailydetailid = :groutingdailydetailid\n" +
" AND ps.suspendprocedureid = :suspendprocedureid";
string sqlUpdateRecord = "update TP_PM_ProductSuspendRecord r set RevokeTime=sysdate, RevokeUserID=" + user.UserID +
" WHERE RevokeUserID is null and r.groutingdailydetailid = :groutingdailydetailid\n" +
" AND r.suspendprocedureid = :suspendprocedureid";
string sqlInsert = "INSERT INTO TP_PM_PRODUCTSUSPEND\n" +
" (GROUTINGDAILYDETAILID\n" +
" ,SUSPENDPROCEDUREID\n" +
" ,REMARKS\n" +
" ,SUSPENDBATCHNO\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
"VALUES\n" +
" (:GROUTINGDAILYDETAILID\n" +
" ,:SUSPENDPROCEDUREID\n" +
" ,:REMARKS\n" +
" ,:SUSPENDBATCHNO\n" +
" ,:ACCOUNTID\n" +
" ,:CREATEUSERID)";
string sqlInsertRecord = "INSERT INTO TP_PM_PRODUCTSUSPENDRecord\n" +
" (GROUTINGDAILYDETAILID\n" +
" ,SUSPENDPROCEDUREID\n" +
" ,REMARKS\n" +
" ,SUSPENDBATCHNO\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
"VALUES\n" +
" (:GROUTINGDAILYDETAILID\n" +
" ,:SUSPENDPROCEDUREID\n" +
" ,:REMARKS\n" +
" ,:SUSPENDBATCHNO\n" +
" ,:ACCOUNTID\n" +
" ,:CREATEUSERID)";
foreach (int procedureid in procedureids)
{
foreach (int groutingdailydetailid in groutingdailydetailids)
{
IDataParameter[] deleteParas = new OracleParameter[]
{
new OracleParameter(":groutingdailydetailid", OracleDbType.Int32,groutingdailydetailid, ParameterDirection.Input),
new OracleParameter(":suspendprocedureid", OracleDbType.Int32,procedureid, ParameterDirection.Input),
};
conn.ExecuteNonQuery(sqlDelete, deleteParas);
conn.ExecuteNonQuery(sqlUpdateRecord, deleteParas);
IDataParameter[] insertParas = new OracleParameter[]
{
new OracleParameter(":GROUTINGDAILYDETAILID", OracleDbType.Int32,groutingdailydetailid, ParameterDirection.Input),
new OracleParameter(":SUSPENDPROCEDUREID", OracleDbType.Int32,procedureid, ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,remarks, ParameterDirection.Input),
new OracleParameter(":SUSPENDBATCHNO", OracleDbType.Varchar2,suspendBatchNo, ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
new OracleParameter(":CREATEUSERID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
};
conn.ExecuteNonQuery(sqlInsert, insertParas);
conn.ExecuteNonQuery(sqlInsertRecord, insertParas);
}
}
conn.Commit();
conn.Disconnect();
return new ServiceResultEntity();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Disconnect();
}
}
}
///
/// 查询挂起条码
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetSuspendProduct(SUserInfo user, string barcode)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "SELECT 0 AS SEL, gdd.barcode\n" +
" ,gdd.groutingmouldcode\n" +
" ,gdd.groutingdate\n" +
" ,gdd.goodscode\n" +
" ,gdd.usercode\n" +
" ,ps.groutingdailydetailid\n" +
" ,ps.suspendprocedureid\n" +
" ,sp.procedurename suspendprocedurename\n" +
" ,ps.remarks\n" +
" ,ps.Createtime\n" +
" ,u.usercode CREATEUSERCode\n" +
" ,case when gdd.scrapflag = '1' then '成型损坯'" +
" when gdd.deliverflag = '0' then '注浆' " +
" when inp.barcode is not null then to_char(p.procedurename) " +
" when spp.barcode is not null then to_char(glt.goodsleveltypename) " +
" when fp.barcode is not null then '生产完成' else '' end procedurename -- 当前工序\n" +
" FROM TP_PM_ProductSuspend ps\n" +
" INNER JOIN tp_pm_groutingdailydetail gdd\n" +
" ON gdd.groutingdailydetailid = ps.groutingdailydetailid\n" +
" INNER JOIN tp_pc_procedure sp\n" +
" ON ps.suspendprocedureid = sp.procedureid\n" +
" INNER JOIN tp_mst_user u\n" +
" ON u.userid = ps.CREATEUSERID\n" +
// 在产工序
" LEFT JOIN tp_pm_inproduction inp \n" +
" ON gdd.deliverflag = '1' and inp.barcode = gdd.barcode\n" +
" LEFT JOIN tp_pc_procedure p \n" +
" ON p.procedureid = inp.procedureid\n" +
// 完成
" LEFT JOIN tp_pm_finishedproduct fp \n" +
" ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode = gdd.barcode\n" +
// 损坯
" LEFT JOIN tp_pm_scrapproduct spp \n" +
" ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode is null and spp.barcode = gdd.barcode\n" +
" AND spp.valueflag = '1'\n" +
" AND spp.auditstatus = 1\n" +
" AND spp.goodsleveltypeid <> 9\n" +
" AND spp.RECYCLINGFLAG = '0'\n" +
" LEFT JOIN tp_sys_goodsleveltype glt \n" +
" ON glt.goodsleveltypeid = spp.goodsleveltypeid\n" +
" WHERE gdd.barcode = :barcode\n" +
" ORDER BY sp.displayno";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
};
DataSet data = conn.GetSqlResultToDs(sqlString, paras);
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = data;
if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
{
sre.Message = "此条码没有可撤销的挂起信息";
return sre;
}
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 撤销条码挂起
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity DeleteSuspendProduct(SUserInfo user, int[] procedureids, int[] groutingdailydetailids)
{
IDBTransaction conn = null;
try
{
conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
string suspendBatchNo = Guid.NewGuid().ToString();
string sqlDelete = "DELETE FROM TP_PM_ProductSuspend ps\n" +
" WHERE ps.groutingdailydetailid = :groutingdailydetailid\n" +
" AND ps.suspendprocedureid = :suspendprocedureid";
string sqlUpdateRecord = "update TP_PM_ProductSuspendRecord r set RevokeTime=sysdate, RevokeUserID=" + user.UserID +
" WHERE RevokeUserID is null and r.groutingdailydetailid = :groutingdailydetailid\n" +
" AND r.suspendprocedureid = :suspendprocedureid";
for (int i = 0; i < procedureids.Length; i++)
{
IDataParameter[] deleteParas = new OracleParameter[]
{
new OracleParameter(":groutingdailydetailid", OracleDbType.Int32,groutingdailydetailids[i], ParameterDirection.Input),
new OracleParameter(":suspendprocedureid", OracleDbType.Int32,procedureids[i], ParameterDirection.Input),
};
conn.ExecuteNonQuery(sqlDelete, deleteParas);
conn.ExecuteNonQuery(sqlUpdateRecord, deleteParas);
}
conn.Commit();
conn.Disconnect();
return new ServiceResultEntity();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Disconnect();
}
}
}
///
/// 查询挂起条码
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetAllSuspendProduct(SUserInfo user, ClientRequestEntity cre)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
//string sqlString = "SELECT gdd.barcode\n" +
//" ,gdd.groutingmouldcode\n" +
//" ,gdd.groutingdate\n" +
//" ,gdd.goodscode\n" +
//" ,gdd.usercode GroutingUserCode\n" +
//" ,ps.groutingdailydetailid\n" +
//" ,ps.suspendprocedureid\n" +
//" ,sp.procedurename suspendprocedurename\n" +
//" ,ps.remarks\n" +
//" ,ps.Createtime\n" +
//" ,u.usercode CREATEUSERCode\n" +
//" ,case when gdd.scrapflag = '1' then '成型损坯'" +
//" when gdd.deliverflag = '0' then '注浆' " +
//" when inp.barcode is not null then to_char(p.procedurename) " +
//" when spp.barcode is not null then to_char(glt.goodsleveltypename) " +
//" when fp.barcode is not null then '生产完成' else '' end procedurename\n" + // 当前工序
//" FROM TP_PM_ProductSuspend ps\n" +
//" INNER JOIN tp_pc_procedure sp\n" +
//" ON ps.suspendprocedureid = sp.procedureid\n" +
//" INNER JOIN tp_mst_user u\n" +
//" ON u.userid = ps.CREATEUSERID\n" +
//" INNER JOIN tp_pm_groutingdailydetail gdd\n" +
//" ON gdd.groutingdailydetailid = ps.groutingdailydetailid\n" +
//// 在产工序
//" LEFT JOIN tp_pm_inproduction inp \n" +
//" ON gdd.deliverflag = '1' and inp.barcode = gdd.barcode\n" +
//" LEFT JOIN tp_pc_procedure p \n" +
//" ON p.procedureid = inp.procedureid\n" +
// // 完成
//" LEFT JOIN tp_pm_finishedproduct fp \n" +
//" ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode = gdd.barcode\n" +
// // 损坯
//" LEFT JOIN tp_pm_scrapproduct spp \n" +
//" ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode is null and spp.barcode = gdd.barcode\n" +
//" AND spp.valueflag = '1'\n" +
//" AND spp.auditstatus = 1\n" +
//" AND spp.goodsleveltypeid <> 9\n" +
//" AND spp.RECYCLINGFLAG = '0'\n" +
//" LEFT JOIN tp_sys_goodsleveltype glt \n" +
//" ON glt.goodsleveltypeid = spp.goodsleveltypeid\n" +
//" WHERE (:barcode is null or instr(gdd.barcode, :barcode) > 0)\n" +
//" AND (:remarks is null or instr(ps.remarks, :remarks) > 0)\n" +
//" AND (:datefrom is null or ps.createtime >= :datefrom)\n" +
//" AND (:dateend is null or ps.createtime <= :dateend)\n" +
//" ORDER BY gdd.barcode, sp.displayno ";
string sqlString = "SELECT GDD.BARCODE,\n" +
" GDD.GROUTINGMOULDCODE,\n" +
" GDD.GROUTINGDATE,\n" +
" GDD.GOODSCODE,\n" +
" GDD.USERCODE GROUTINGUSERCODE,\n" +
" PSR.GROUTINGDAILYDETAILID,\n" +
" PSR.SUSPENDPROCEDUREID,\n" +
" SP.PROCEDURENAME SUSPENDPROCEDURENAME,\n" +
" PSR.REMARKS,\n" +
" PSR.CREATETIME,\n" +
" U.USERCODE CREATEUSERCODE,\n" +
" CASE\n" +
" WHEN GDD.SCRAPFLAG = '1' THEN\n" +
" '成型损坯'\n" +
" WHEN GDD.DELIVERFLAG = '0' THEN\n" +
" '注浆'\n" +
" WHEN INP.BARCODE IS NOT NULL THEN\n" +
" TO_CHAR(P.PROCEDURENAME)\n" +
" WHEN SPP.BARCODE IS NOT NULL THEN\n" +
" TO_CHAR(GLT.GOODSLEVELTYPENAME)\n" +
" WHEN FP.BARCODE IS NOT NULL THEN\n" +
" '生产完成'\n" +
" ELSE\n" +
" ''\n" +
" END PROCEDURENAME,\n" +
" TO_CHAR(PSR.REVOKETIME, 'yyyy-mm-dd hh24:mi:ss') AS REVOKETIME,\n" +
" REVOKEUSER.USERCODE REVOKEUSERCODE\n" +
" FROM TP_PM_PRODUCTSUSPENDRECORD PSR\n" +
" INNER JOIN TP_PC_PROCEDURE SP\n" +
" ON PSR.SUSPENDPROCEDUREID = SP.PROCEDUREID\n" +
" INNER JOIN TP_MST_USER U\n" +
" ON U.USERID = PSR.CREATEUSERID\n" +
" INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
" ON GDD.GROUTINGDAILYDETAILID = PSR.GROUTINGDAILYDETAILID\n" +
" LEFT JOIN TP_PM_INPRODUCTION INP\n" +
" ON GDD.DELIVERFLAG = '1'\n" +
" AND INP.BARCODE = GDD.BARCODE\n" +
" LEFT JOIN TP_PC_PROCEDURE P\n" +
" ON P.PROCEDUREID = INP.PROCEDUREID\n" +
" LEFT JOIN TP_PM_FINISHEDPRODUCT FP\n" +
" ON GDD.DELIVERFLAG = '1'\n" +
" AND INP.BARCODE IS NULL\n" +
" AND FP.BARCODE = GDD.BARCODE\n" +
" LEFT JOIN TP_PM_SCRAPPRODUCT SPP\n" +
" ON GDD.DELIVERFLAG = '1'\n" +
" AND INP.BARCODE IS NULL\n" +
" AND FP.BARCODE IS NULL\n" +
" AND SPP.BARCODE = GDD.BARCODE\n" +
" AND SPP.VALUEFLAG = '1'\n" +
" AND SPP.AUDITSTATUS = 1\n" +
" AND SPP.GOODSLEVELTYPEID <> 9\n" +
" AND SPP.RECYCLINGFLAG = '0'\n" +
" LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT\n" +
" ON GLT.GOODSLEVELTYPEID = SPP.GOODSLEVELTYPEID\n" +
" LEFT JOIN TP_MST_USER REVOKEUSER\n" +
" ON PSR.REVOKEUSERID = REVOKEUSER.USERID\n" +
" WHERE (:barcode IS NULL OR INSTR(GDD.BARCODE, :barcode) > 0)\n" +
" AND (:remarks IS NULL OR INSTR(PSR.REMARKS, :remarks) > 0)\n" +
" AND (:datefrom IS NULL OR PSR.CREATETIME >= :datefrom)\n" +
" AND (:dateend is null or psr.createtime <= :dateend)\n" +
" ORDER BY GDD.BARCODE, SP.DISPLAYNO";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input),
new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input),
new OracleParameter(":datefrom", OracleDbType.Date, cre.Properties["datefrom"], ParameterDirection.Input),
new OracleParameter(":dateend", OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
};
DataSet data = conn.GetSqlResultToDs(sqlString, paras);
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
}
sre.Data = data;
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
#endregion
#region 品保抽查
///
/// 验证品保抽查条码
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity CheckQASpotCheck(SUserInfo user, string barcode)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "SELECT gdd.groutingdailydetailid\n" +
" ,gdd.barcode\n" +
" ,gdd.groutingmouldcode\n" +
" ,gdd.groutingdate\n" +
" ,gdd.goodscode\n" +
" ,gdd.usercode\n" +
//" ,gdd.scrapflag\n" +
//" ,gdd.deliverflag\n" +
// -1:未交坯 -2:生产完成 -3:成品交接 >0:在产工序ID
" ,case when gdd.deliverflag='0' then -1 \n" +
" when fp.FHUserID is not null then -3 \n" +
" when fp.barcode is not null then -2 \n" +
" when inp.barcode is null then -4 \n" +
" else inp.procedureid end procedureid \n" +
" ,case when gdd.deliverflag='0' then '未交坯' \n" +
" when fp.FHUserID is not null then '成品交接' \n" +
" when fp.barcode is not null then '生产完成' \n" +
" when inp.barcode is null then '损坯' \n" +
" else to_char(p.procedurename) end procedurename \n" +
" ,sysdate CheckTime \n" +
" FROM tp_pm_groutingdailydetail gdd\n" +
" LEFT JOIN tp_pm_inproduction inp\n" +
" ON inp.barcode = gdd.barcode\n" +
" LEFT JOIN tp_pc_procedure p\n" +
" ON p.procedureid = inp.procedureid\n" +
" LEFT JOIN TP_PM_FinishedProduct fp\n" +
" ON fp.barcode = gdd.barcode\n" +
" WHERE gdd.accountid = :accountid\n" +
" AND gdd.barcode = :barcode";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
};
DataSet data = conn.GetSqlResultToDs(sqlString, paras);
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "此条码为无效条码";
return sre;
}
sre.Data = data;
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 保存品保抽查
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity SaveQASpotCheck(SUserInfo user, Dictionary data)
{
if (data == null || data.Count == 0)
{
return new ServiceResultEntity();
}
IDBTransaction conn = null;
try
{
conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlInsert = "INSERT INTO TP_PM_QASpotCheck\n" +
" (GroutingDailyDetailID\n" +
" ,Remarks\n" +
" ,ProcedureID\n" +
" ,ProcedureName\n" +
" ,CheckTime\n" +
" ,AccountID\n" +
" ,CreateUserID)\n" +
"VALUES\n" +
" (:GroutingDailyDetailID\n" +
" ,:Remarks\n" +
" ,:ProcedureID\n" +
" ,:ProcedureName\n" +
" ,:CheckTime\n" +
" ,:AccountID\n" +
" ,:CreateUserID)";
IDataParameter[] insertParas = new OracleParameter[]
{
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32,data["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2,data["Remarks"], ParameterDirection.Input),
new OracleParameter(":ProcedureID", OracleDbType.Int32,data["ProcedureID"], ParameterDirection.Input),
new OracleParameter(":ProcedureName", OracleDbType.NVarchar2,data["ProcedureName"], ParameterDirection.Input),
new OracleParameter(":CheckTime", OracleDbType.Date,data["CheckTime"], ParameterDirection.Input),
new OracleParameter(":AccountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
new OracleParameter(":CreateUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
};
conn.ExecuteNonQuery(sqlInsert, insertParas);
conn.Commit();
return new ServiceResultEntity();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Disconnect();
}
}
}
///
/// 自动保存品保抽查
///
///
///
///
///
public static ServiceResultEntity AutoSaveQASpotCheck(SUserInfo user, string barcode, string remarks)
{
IDBTransaction conn = null;
try
{
conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlString = "SELECT gdd.groutingdailydetailid\n" +
" ,gdd.barcode\n" +
" ,gdd.groutingmouldcode\n" +
" ,gdd.groutingdate\n" +
" ,gdd.goodscode\n" +
" ,gdd.usercode\n" +
//" ,gdd.scrapflag\n" +
//" ,gdd.deliverflag\n" +
// -1:未交坯 -2:生产完成 -3:成品交接 >0:在产工序ID
" ,case when gdd.deliverflag='0' then -1 \n" +
" when fp.FHUserID is not null then -3 \n" +
" when fp.barcode is not null then -2 \n" +
" when inp.barcode is null then -4 \n" +
" else inp.procedureid end procedureid \n" +
" ,case when gdd.deliverflag='0' then '未交坯' \n" +
" when fp.FHUserID is not null then '成品交接' \n" +
" when fp.barcode is not null then '生产完成' \n" +
" when inp.barcode is null then '损坯' \n" +
" else to_char(p.procedurename) end procedurename \n" +
" ,sysdate CheckTime \n" +
" FROM tp_pm_groutingdailydetail gdd\n" +
" LEFT JOIN tp_pm_inproduction inp\n" +
" ON inp.barcode = gdd.barcode\n" +
" LEFT JOIN tp_pc_procedure p\n" +
" ON p.procedureid = inp.procedureid\n" +
" LEFT JOIN TP_PM_FinishedProduct fp\n" +
" ON fp.barcode = gdd.barcode\n" +
" WHERE gdd.accountid = :accountid\n" +
" AND gdd.barcode = :barcode";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
};
DataSet data = conn.GetSqlResultToDs(sqlString, paras);
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "此条码为无效条码";
return sre;
}
string sqlInsert = "INSERT INTO TP_PM_QASpotCheck\n" +
" (GroutingDailyDetailID\n" +
" ,Remarks\n" +
" ,ProcedureID\n" +
" ,ProcedureName\n" +
" ,CheckTime\n" +
" ,AccountID\n" +
" ,CreateUserID)\n" +
"VALUES\n" +
" (:GroutingDailyDetailID\n" +
" ,:Remarks\n" +
" ,:ProcedureID\n" +
" ,:ProcedureName\n" +
" ,:CheckTime\n" +
" ,:AccountID\n" +
" ,:CreateUserID)";
IDataParameter[] insertParas = new OracleParameter[]
{
new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32,data.Tables[0].Rows[0]["GroutingDailyDetailID"], ParameterDirection.Input),
new OracleParameter(":Remarks", OracleDbType.NVarchar2,remarks, ParameterDirection.Input),
new OracleParameter(":ProcedureID", OracleDbType.Int32,data.Tables[0].Rows[0]["ProcedureID"], ParameterDirection.Input),
new OracleParameter(":ProcedureName", OracleDbType.NVarchar2,data.Tables[0].Rows[0]["ProcedureName"], ParameterDirection.Input),
new OracleParameter(":CheckTime", OracleDbType.Date,data.Tables[0].Rows[0]["CheckTime"], ParameterDirection.Input),
new OracleParameter(":AccountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
new OracleParameter(":CreateUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
};
conn.ExecuteNonQuery(sqlInsert, insertParas);
conn.Commit();
sre.Data = data;
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Disconnect();
}
}
}
///
/// 查询品保抽查
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetAllQASpotCheck(SUserInfo user, ClientRequestEntity cre)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "select gdd.barcode\n" +
" ,gdd.goodscode\n" +
" ,gdd.GroutingDate\n" +
" ,gdd.usercode GroutingUserCode\n" +
" ,gdd.GroutingMouldCode\n" +
" ,u.usercode checkusercode\n" +
" ,qa.ProcedureName\n" +
" ,qa.checktime\n" +
" ,qa.remarks\n" +
" from TP_PM_QASPOTCHECK qa\n" +
" inner join tp_pm_groutingdailydetail gdd\n" +
" on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
" inner join tp_mst_user u\n" +
" on u.userid = qa.createuserid\n" +
" where qa.valueflag = '1'\n";
List paras = new List();
if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
{
sqlString += " and instr(gdd.barcode, :barcode) > 0\n";
paras.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input));
}
if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
{
sqlString += " and instr(gdd.goodscode, :goodscode) > 0\n";
paras.Add(new OracleParameter(":goodscode", OracleDbType.NVarchar2, cre.Properties["goodscode"], ParameterDirection.Input));
}
if (!string.IsNullOrEmpty(cre.Properties["usercode"] + ""))
{
sqlString += " and instr(u.usercode, :usercode) > 0\n";
paras.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, cre.Properties["usercode"], ParameterDirection.Input));
}
if (!string.IsNullOrEmpty(cre.Properties["remarks"] + ""))
{
sqlString += " and instr(qa.remarks, :remarks) > 0\n";
paras.Add(new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input));
}
if (cre.Properties["checktimebegin"] != null)
{
sqlString += " and qa.checktime >= :checktimebegin\n";
paras.Add(new OracleParameter(":checktimebegin", OracleDbType.Date, cre.Properties["checktimebegin"], ParameterDirection.Input));
}
if (cre.Properties["checktimeend"] != null)
{
sqlString += " and qa.checktime < :checktimeend\n";
paras.Add(new OracleParameter(":checktimeend", OracleDbType.Date, cre.Properties["checktimeend"], ParameterDirection.Input));
}
sqlString += " ORDER BY gdd.barcode, qa.checktime ";
DataSet data = conn.GetSqlResultToDs(sqlString, paras.ToArray());
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
}
sre.Data = data;
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 查询品保抽查
///
/// 登录用户信息
/// 查询条件
/// 查询结果
public static ServiceResultEntity GetAllQASpotCheckForPC(SUserInfo user, ClientRequestEntity cre)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
//string sqlString = "select gdd.barcode,\n" +
//" gdd.goodscode,\n" +
//" gdd.GroutingDate,\n" +
//" gdd.usercode GroutingUserCode,\n" +
//" gdd.GroutingMouldCode,\n" +
//" u.usercode checkusercode,\n" +
//" qa.ProcedureName,\n" +
//" qa.checktime,\n" +
//" qa.remarks,\n" +
//" inpp.procedurename currprocedurename,\n" +
//" listagg(decode(d.productiondefectid,\n" +
//" null,\n" +
//" null,\n" +
//" '[' || to_char(d.defectcode) || ']' ||\n" +
//" to_char(d.defectname)),\n" +
//" ',') WITHIN GROUP(ORDER BY d.productiondefectid) defectcodes,\n" +
//" (select listagg('[' || to_char(dd.defectcode) || ']' ||\n" +
//" to_char(dd.defectname),\n" +
//" ',') WITHIN GROUP(ORDER BY dd.productiondefectid)\n" +
//" from tp_pm_defect dd\n" +
//" where dd.valueflag = '1'\n" +
//" and dd.barcode = gdd.barcode) ddefectcode\n" +
//" from TP_PM_QASPOTCHECK qa\n" +
//" inner join tp_mst_user u\n" +
//" on u.userid = qa.createuserid\n" +
//" inner join tp_pm_groutingdailydetail gdd\n" +
//" on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
//" left join tp_pm_inproduction inp\n" +
//" on inp.barcode = gdd.barcode\n" +
//" left join tp_pc_procedure inpp\n" +
//" on inp.procedureid = inpp.procedureid\n" +
//" left join tp_pm_defect d\n" +
//" on d.barcode = gdd.barcode\n" +
//" and d.valueflag = '1'\n" +
//" where qa.valueflag = '1'\n" +
//" group by gdd.barcode,\n" +
//" gdd.goodscode,\n" +
//" gdd.GroutingDate,\n" +
//" gdd.usercode,\n" +
//" gdd.GroutingMouldCode,\n" +
//" u.usercode,\n" +
//" qa.ProcedureName,\n" +
//" qa.checktime,\n" +
//" qa.remarks,\n" +
//" inpp.procedurename";
string sqlString = "select gdd.barcode\n" +
" ,gdd.goodscode\n" +
" ,gdd.GroutingDate\n" +
" ,gdd.usercode GroutingUserCode\n" +
" ,gdd.GroutingMouldCode\n" +
" ,u.usercode checkusercode\n" +
" ,qa.ProcedureName\n" +
" ,qa.checktime\n" +
" ,qa.remarks\n" +
" ,inpp.procedurename currprocedurename\n" +
" ,(select listagg('[' || to_char(dd.defectcode) || ']' ||\n" +
" to_char(dd.defectname),\n" +
" ',') WITHIN GROUP(ORDER BY dd.productiondefectid)\n" +
" from tp_pm_defect dd\n" +
" where dd.valueflag = '1'\n" +
" and dd.barcode = gdd.barcode) ddefectcode\n" +
" from TP_PM_QASPOTCHECK qa\n" +
" inner join tp_pm_groutingdailydetail gdd\n" +
" on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
" inner join tp_mst_user u\n" +
" on u.userid = qa.createuserid\n" +
" left join tp_pm_inproduction inp\n" +
" on inp.barcode = gdd.barcode\n" +
" left join tp_pc_procedure inpp\n" +
" on inp.procedureid = inpp.procedureid\n" +
" where qa.valueflag = '1'\n";
List paras = new List();
if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
{
sqlString += " and instr(gdd.barcode, :barcode) > 0\n";
paras.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input));
}
if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
{
sqlString += " and instr(gdd.goodscode, :goodscode) > 0\n";
paras.Add(new OracleParameter(":goodscode", OracleDbType.NVarchar2, cre.Properties["goodscode"], ParameterDirection.Input));
}
if (!string.IsNullOrEmpty(cre.Properties["usercode"] + ""))
{
sqlString += " and instr(u.usercode, :usercode) > 0\n";
paras.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, cre.Properties["usercode"], ParameterDirection.Input));
}
if (!string.IsNullOrEmpty(cre.Properties["remarks"] + ""))
{
sqlString += " and instr(qa.remarks, :remarks) > 0\n";
paras.Add(new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input));
}
if (cre.Properties["checktimebegin"] != null)
{
sqlString += " and qa.checktime >= :checktimebegin\n";
paras.Add(new OracleParameter(":checktimebegin", OracleDbType.Date, cre.Properties["checktimebegin"], ParameterDirection.Input));
}
if (cre.Properties["checktimeend"] != null)
{
sqlString += " and qa.checktime < :checktimeend\n";
paras.Add(new OracleParameter(":checktimeend", OracleDbType.Date, cre.Properties["checktimeend"], ParameterDirection.Input));
}
sqlString += " ORDER BY gdd.barcode, qa.checktime ";
DataSet data = conn.GetSqlResultToDs(sqlString, paras.ToArray());
ServiceResultEntity sre = new ServiceResultEntity();
if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
}
sre.Data = data;
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
#endregion
#region 成品装车(潮州需求【废弃】)
/*
///
/// 获取当天装车号
///
///
///
public static int GetMaxLoadingNo(SUserInfo user)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "select nvl(max(fl.loadingno), 0) + 1\n" +
" from TP_PM_FINISHEDLOADING fl\n" +
" where fl.loadingdate = :loadingdate\n" +
" and fl.valueflag = '1'\n" +
" and fl.accountid = :accountid";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
new OracleParameter(":loadingdate", OracleDbType.Date, DateTime.Now.Date, ParameterDirection.Input),
};
object maxno = conn.GetSqlResultToObj(sqlString, paras);
if (maxno == null || maxno == DBNull.Value)
{
return 1;
}
else
{
return Convert.ToInt32(maxno);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 产成品装车条码验证
///
///
///
///
public static ServiceResultEntity CheckFinishedLaodingBarcode(SUserInfo sUserInfo, string barcode)
{
IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleConn.Open();
ServiceResultEntity resultEntity = new ServiceResultEntity();
string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
OracleParameter[] paras1 = new OracleParameter[]{
new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
};
string gbarcode = oracleConn.GetSqlResultToObj(sqlString, paras1) + "";
if (string.IsNullOrWhiteSpace(gbarcode))
{
resultEntity.Status = Constant.ServiceResultStatus.Other;
resultEntity.OtherStatus = -1;
resultEntity.Message = "此条码不存在";
return resultEntity;
}
// 1.判断产品是否在产成品表中
sqlString = @"select f.FINISHEDLOADBATCHNO from TP_PM_FinishedProduct f where f.BarCode=:BarCode";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
};
DataTable dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
string FINISHEDLOADBATCHNO = null;
if (dtResult != null && dtResult.Rows.Count > 0)
{
FINISHEDLOADBATCHNO = dtResult.Rows[0]["FINISHEDLOADBATCHNO"].ToString();
}
else
{
resultEntity.Status = Constant.ServiceResultStatus.Other;
resultEntity.OtherStatus = -1;
resultEntity.Message = "此产品没有交接";
return resultEntity;
}
sqlString = "select 1\n" +
" from TP_PM_FPLoadingDetail fpld\n" +
" where fpld.finishedloadbatchno = :fbatchno\n" +
" and rownum = 1";
paras = new OracleParameter[]{
new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
};
string exists = oracleConn.GetSqlResultToObj(sqlString, paras)+"";
if (!string.IsNullOrEmpty(exists))
{
resultEntity.Status = Constant.ServiceResultStatus.Other;
resultEntity.OtherStatus = -1;
resultEntity.Message = "此产品已装车";
return resultEntity;
}
#region 查询产品相关信息
sqlString = "select ss.settingvalue\n" +
" from tp_mst_systemsetting ss\n" +
" where ss.settingcode = 'S_PM_025'\n" +
" and ss.accountid = :accountid";
paras = new OracleParameter[]{
new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
};
exists = oracleConn.GetSqlResultToObj(sqlString, paras) + "";
if (string.IsNullOrWhiteSpace(exists))
{
exists = "0";
}
sqlString = "select "+ exists + " limitnum, :barcode barcode, :fbatchno fbatchno, to_char(sum(cc)) sumcount\n" +
" ,listagg(to_char(t.goodscode) || '[' || to_char(cc) || ']', ', ') within group(order by t.goodscode) dd\n" +
" from (select count(*) cc, fp.goodscode\n" +
" from tp_pm_finishedproduct fp\n" +
" where fp.finishedloadbatchno =:fbatchno\n" +
" group by fp.finishedloadbatchno, fp.goodscode) t";
paras = new OracleParameter[]{
new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
};
dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
if (dtResult != null && dtResult.Rows.Count > 0)
{
resultEntity.Data = new DataSet("ds");
resultEntity.Data.Tables.Add(dtResult);
sqlString = "select fp.barcode, fp.groutingdailydetailid, :fbatchno fbatchno\n" +
" from tp_pm_finishedproduct fp\n" +
" where fp.finishedloadbatchno = :fbatchno";
paras = new OracleParameter[]{
new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
};
dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
resultEntity.Data.Tables.Add(dtResult);
}
else
{
resultEntity.Status = Constant.ServiceResultStatus.Other;
resultEntity.OtherStatus = -1;
resultEntity.Message = "此条码不存在";
return resultEntity;
}
#endregion
return resultEntity;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (oracleConn.ConnState == ConnectionState.Open)
{
oracleConn.Close();
}
}
}
///
/// 产成品装车-保存
///
///
///
///
public static ServiceResultEntity SaveFinishedLoading(SUserInfo sUserInfo, int loadingNo,
string carLicense, int palletNum, int goodsNum, string remarks, Dictionary[] details)
{
IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleConn.Connect();
ServiceResultEntity resultEntity = new ServiceResultEntity();
DateTime date = DateTime.Now.Date;
// 1 验证 LoadingNo
string sqlString = "select 1\n" +
" from TP_PM_FinishedLoading fl\n" +
" where fl.loadingdate = :loadingdate\n" +
" and fl.loadingno = :loadingno\n" +
" and fl.AccountID = :AccountID\n" +
" and rownum = 1";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":loadingdate",OracleDbType.Date, date,ParameterDirection.Input),
new OracleParameter(":loadingno",OracleDbType.Int32, loadingNo,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
};
string exists = oracleConn.GetSqlResultToObj(sqlString, paras) + "";
if (!string.IsNullOrEmpty(exists))
{
resultEntity.Status = Constant.ServiceResultStatus.Other;
resultEntity.OtherStatus = -1;
resultEntity.Message = "今天此装车序号已存在";
return resultEntity;
}
// 2 保存
sqlString = @"select SEQ_PM_FinishedLoading_ID.Nextval From DUAL";
int loadingID = Convert.ToInt32(oracleConn.GetSqlResultToObj(sqlString));
sqlString = "insert into TP_PM_FinishedLoading\n" +
" (LOADINGID\n" +
" ,LOADINGDATE\n" +
" ,LOADINGNO\n" +
" ,CARLICENSE\n" +
" ,PALLETNUM\n" +
" ,GOODSNUM\n" +
" ,REMARKS\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
"values\n" +
" (:LOADINGID\n" +
" ,:LOADINGDATE\n" +
" ,:LOADINGNO\n" +
" ,:CARLICENSE\n" +
" ,:PALLETNUM\n" +
" ,:GOODSNUM\n" +
" ,:REMARKS\n" +
" ,:ACCOUNTID\n" +
" ,:CREATEUSERID)";
paras = new OracleParameter[]{
new OracleParameter(":LOADINGID",OracleDbType.Int32, loadingID,ParameterDirection.Input),
new OracleParameter(":LOADINGDATE",OracleDbType.Date, date,ParameterDirection.Input),
new OracleParameter(":LOADINGNO",OracleDbType.Int32, loadingNo,ParameterDirection.Input),
new OracleParameter(":CARLICENSE",OracleDbType.Varchar2, carLicense,ParameterDirection.Input),
new OracleParameter(":PALLETNUM",OracleDbType.Int32, palletNum,ParameterDirection.Input),
new OracleParameter(":GOODSNUM",OracleDbType.Int32, goodsNum,ParameterDirection.Input),
new OracleParameter(":REMARKS",OracleDbType.NVarchar2, remarks,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CREATEUSERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
};
int r = oracleConn.ExecuteNonQuery(sqlString, paras);
sqlString = "insert into TP_PM_FPLoadingDetail\n" +
" (LOADINGID, GROUTINGDAILYDETAILID, FINISHEDLOADBATCHNO)\n" +
"values\n" +
" (:LOADINGID, :GROUTINGDAILYDETAILID, :FINISHEDLOADBATCHNO)";
foreach (Dictionary item in details)
{
paras = new OracleParameter[]{
new OracleParameter(":LOADINGID",OracleDbType.Int32, loadingID,ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32, item["groutingdailydetailid"],ParameterDirection.Input),
new OracleParameter(":FINISHEDLOADBATCHNO",OracleDbType.Varchar2, item["fbatchno"],ParameterDirection.Input),
};
r = oracleConn.ExecuteNonQuery(sqlString, paras);
}
oracleConn.Commit();
return resultEntity;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (oracleConn.ConnState == ConnectionState.Open)
{
oracleConn.Disconnect();
}
}
}
*/
#endregion
#region 半检返修登记
///
/// 获取半检返修登记列表
///
///
public static ServiceResultEntity GetSemiRework(ClientRequestEntity cre, SUserInfo userInfo)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "select sr.SemiReworkID\n" +
" ,sr.BarCode\n" +
" ,sr.ProductionLineID\n" +
" ,sr.ProcedureID\n" +
" ,p.procedurename\n" +
" ,sr.ProcedureTime\n" +
" ,sr.GoodsID\n" +
" ,sr.GoodsCode\n" +
" ,sr.UserID --完成工号ID\n" +
" ,sr.UserCode\n" +
" ,sr.ProductionDataID\n" +
" ,sr.GroutingDailyID\n" +
" ,sr.GroutingDailyDetailID\n" +
" ,sr.GroutingLineID\n" +
" ,sr.GroutingLineCode\n" +
" ,sr.GroutingLineDetailID\n" +
" ,sr.GroutingDate\n" +
" ,sr.GroutingMouldCode\n" +
" ,sr.GroutingUserID\n" +
" ,sr.GroutingUserCode\n" +
" ,sr.SemiReworkUserID\n" +
" ,sr.SemiReworkUserCode\n" +
" ,sr.SemiReworkTime\n" +
" ,sr.ReworkProcedureID\n" +
" ,rp.procedurename ReworkProcedurename\n" +
" ,sr.BackOutFlag\n" +
" ,sr.BackOutTime\n" +
" ,sr.BackOutUserID\n" +
" ,sr.BackOutUserCode\n" +
" ,sr.Remarks\n" +
" from TP_PM_SemiRework sr\n" +
" inner join tp_pc_procedure p\n" +
" on p.procedureid = sr.procedureid\n" +
" inner join tp_pc_procedure rp\n" +
" on rp.procedureid = sr.reworkprocedureid" +
" where sr.accountID = :accountID" +
" and sr.valueflag = '1'" +
// todo 其他查询条件
" order by sr.SemiReworkID desc";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountID", OracleDbType.Int32,userInfo.AccountID, ParameterDirection.Input),
};
ServiceResultEntity sre = new ServiceResultEntity();
DataSet data = conn.GetSqlResultToDs(sqlString, paras);
if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
return sre;
}
data.Tables[0].TableName = "SemiRework";
sre.Data = data;
int semiReworkID = Convert.ToInt32(data.Tables[0].Rows[0]["SemiReworkID"]);
ServiceResultEntity sre1 = GetSemiReworkDefect(semiReworkID, userInfo, conn);
if (sre1.Data == null || sre1.Data.Tables.Count == 0 || sre1.Data.Tables[0].Rows.Count == 0)
{
return sre;
}
sre1.Data.Tables[0].TableName = "SemiReworkDefect";
sre.Data.Merge(sre1.Data.Tables[0]);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 获取半检返修登记列表
///
///
public static ServiceResultEntity GetSemiReworkDefect(int semiReworkID, SUserInfo userInfo, IDBConnection conn = null)
{
try
{
if (conn == null)
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
}
string sqlString = "select srd.SemiReworkDefectID\n" +
" ,srd.SemiReworkID\n" +
" ,srd.DefectID\n" +
" ,srd.DefectCode\n" +
" ,srd.DefectName\n" +
" ,srd.DefectPositionID\n" +
" ,srd.DefectPositionCode\n" +
" ,srd.DefectPositionName\n" +
" ,srd.ScrapResponFlag\n" +
" ,srd.DefectProductionDataID\n" +
" ,srd.DefectProcedureID\n" +
" ,p.procedurename DefectProcedureName\n" +
" ,srd.DefectUserID\n" +
" ,srd.DefectUserCode\n" +
" ,srd.Remarks\n" +
" from TP_PM_SemiReworkDefect srd\n" +
" inner join tp_pc_procedure p\n" +
" on p.procedureid = srd.DefectProcedureID\n" +
" where srd.accountID = :accountID" +
" and srd.valueflag = '1'" +
" and srd.SemiReworkID = :SemiReworkID" +
" order by srd.DefectID";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountID", OracleDbType.Int32,userInfo.AccountID, ParameterDirection.Input),
new OracleParameter(":SemiReworkID", OracleDbType.Int32,semiReworkID, ParameterDirection.Input),
};
DataSet data = conn.GetSqlResultToDs(sqlString, paras);
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = data;
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null &&
conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 获取登陆帐户有无修改半检返修权限
///
///
public static int GetSemiReworkEditFuntion(SUserInfo userInfo)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string strSql = "";
strSql = @"SELECT r.FunctionCode FROM TP_MST_UserRight R WHERE r.FunctionCode='06200104' AND R.UserID = " + userInfo.UserID;
DataSet ds = con.GetSqlResultToDs(strSql);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
return 1;
}
return 0;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 验证半检返修条码
///
/// 产品条码
///
public static ServiceResultEntity CheckSemiReworkBarcode(string barcode)
{
IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleConn.Open();
ServiceResultEntity resultEntity = new ServiceResultEntity();
// 1.判断产品是否在产
string sql = @"select
InScrapFlag,
KilnCarID,
KilnCarName,
IsReworkFlag,
SemiCheckID
from TP_PM_InProduction
where BarCode=:BarCode";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
};
DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
{
if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
{
resultEntity.Result = -2; //报损待审批
resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
return resultEntity;
}
if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
{
resultEntity.Result = -3; //登窑车后不允许半成品检测
resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]";
return resultEntity;
}
if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
{
resultEntity.Result = -4; //半检返工
resultEntity.Message = "条码[" + barcode + "]已半检返工";
return resultEntity;
}
if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
{
resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);//编辑状态
resultEntity.Message = "返修";
}
else
{
resultEntity.Result = "0";//新建状态
}
}
else
{
resultEntity.Result = -1;// 不在在产表中
resultEntity.Message = "条码[" + barcode + "]不在在产流程";
}
return resultEntity;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (oracleConn.ConnState == ConnectionState.Open)
{
oracleConn.Close();
}
}
}
///
/// 根据半成品检验数据ID,显示半成品数据信息
///
/// 半成品数据ID
/// DataSet
public static ServiceResultEntity GetSemiReworkByID(int semiReworkID,string userCode = "")
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "select sr.SemiReworkID\n" +
" ,sr.BarCode\n" +
" ,sr.ProductionLineID\n" +
" ,sr.ProcedureID\n" +
" ,p.procedurename\n" +
" ,sr.ProcedureTime\n" +
" ,sr.GoodsID\n" +
" ,sr.GoodsCode\n" +
" ,sr.UserID --完成工号ID\n" +
" ,sr.UserCode\n" +
" ,sr.ProductionDataID\n" +
" ,sr.GroutingDailyID\n" +
" ,sr.GroutingDailyDetailID\n" +
" ,sr.GroutingLineID\n" +
" ,sr.GroutingLineCode\n" +
" ,sr.GroutingLineDetailID\n" +
" ,sr.GroutingDate\n" +
" ,sr.GroutingMouldCode\n" +
" ,sr.GroutingUserID\n" +
" ,sr.GroutingUserCode\n" +
" ,sr.SemiReworkUserID\n" +
" ,sr.SemiReworkUserCode\n" +
" ,sr.SemiReworkTime\n" +
" ,sr.ReworkProcedureID\n" +
" ,rp.procedurename ReworkProcedurename\n" +
" ,sr.BackOutFlag\n" +
" ,sr.BackOutTime\n" +
" ,sr.BackOutUserID\n" +
" ,sr.BackOutUserCode\n" +
" ,sr.Remarks\n" +
" from TP_PM_SemiRework sr\n" +
" inner join tp_pc_procedure p\n" +
" on p.procedureid = sr.procedureid\n" +
" left join tp_pc_procedure rp\n" +
" on rp.procedureid = sr.reworkprocedureid" +
" where sr.SemiReworkID = :SemiReworkID";
string sqlString1 = "select srd.SemiReworkDefectID\n" +
" ,srd.SemiReworkID\n" +
" ,srd.DefectID\n" +
" ,srd.DefectCode\n" +
" ,srd.DefectName\n" +
" ,srd.DefectPositionID\n" +
" ,srd.DefectPositionCode\n" +
" ,srd.DefectPositionName\n" +
" ,srd.ScrapResponFlag\n" +
" ,srd.DefectProductionDataID\n" +
" ,srd.DefectProcedureID\n" +
" ,p.procedurecode DefectProcedureCode\n" +
" ,p.procedurename DefectProcedureName\n" +
" ,srd.DefectUserID\n" +
" ,du.username DefectUserName\n" +
" ,srd.DefectUserCode\n" +
" ,srd.Remarks\n" +
" ,srd.ValueFlag\n" + //xuwei add 2019-11-14 为 1 时可编辑 为 0 时不可编辑
" from TP_PM_SemiReworkDefect srd\n" +
" left join tp_pc_procedure p\n" +
" on p.procedureid = srd.DefectProcedureID\n" +
" inner join tp_mst_user du\n" +
" on du.userid = srd.DefectUserID\n" +
" where srd.SemiReworkID = :SemiReworkID" +
" order by srd.SemiReworkDefectID";
string sqlString2 = "select t.SemiReworkDefectID\n" +
" ,t.StaffID\n" +
" ,t.SemiReworkID\n" +
" ,t.UserID\n" +
" ,t.UserCode\n" +
" ,t.UJobsID\n" +
" ,t.SJobsID\n" +
" ,s.staffcode\n" +
" ,s.staffname\n" +
" from TP_PM_SemiReworkRPS t\n" +
" inner join tp_hr_staff s\n" +
" on s.staffid = t.staffid\n" +
" where t.valueflag = '1'" +
" and t.SemiReworkID = :SemiReworkID" +
" order by t.semireworkdefectid, s.staffcode";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":SemiReworkID", OracleDbType.Int32,semiReworkID, ParameterDirection.Input),
};
ServiceResultEntity sre = new ServiceResultEntity();
DataTable data = conn.GetSqlResultToDt(sqlString, paras);
data.TableName = "SemiRework";
DataTable data1 = conn.GetSqlResultToDt(sqlString1, paras);
data1.TableName = "SemiReworkDefect";
DataTable data2 = conn.GetSqlResultToDt(sqlString2, paras);
data2.TableName = "SemiReworkRPS";
//xuwei add 2019-11-14 验证并重置valueflag,确定是否可编辑
if(userCode!="")
{
for(int i=0;i
/// 可以返修的工序
///
///
///
///
public static ServiceResultEntity GetSemiReworkProcedure(string barcode, SUserInfo userInfo)
{
IDBConnection conn = null;
try
{
conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string sqlString = "select p.procedureid, p.procedurecode, p.procedurename\n" +
" from tp_pm_inproduction t\n" +
" inner join tp_pc_procedure p\n" +
" on p.productionlineid = t.productionlineid\n" +
" and p.ISSEMIREWORK = '1'\n" +
" where t.barcode = :barcode";
IDataParameter[] paras = new OracleParameter[]
{
new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
};
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = conn.GetSqlResultToDs(sqlString, paras);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.ConnState == ConnectionState.Open)
{
conn.Close();
}
}
}
///
/// 根据条码获取经过的工序,用于责任工序
///
/// 产品条码
/// DataSet
public static ServiceResultEntity GetSemiReworkPassProcedure(string barcode)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = "select pin.Barcode\n" +
" ,pin.UserID\n" +
" ,pin.UserCode\n" +
" ,pin.UserName\n" +
" ,pin.ProcedureID\n" +
" ,pin.ProcedureCode\n" +
" ,pin.ProcedureName\n" +
" ,pin.ProductionDataID\n" +
" from TP_PM_ProductionDataIn pin\n" +
" where pin.valueflag = '1'\n" +
" and pin.barcode = :BarCode\n" +
" order by pin.ProductionDataID";
// 干补后 半检 不能选成型责任
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BarCode",OracleDbType.NVarchar2, barcode,ParameterDirection.Input),
};
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = con.GetSqlResultToDs(sqlString, paras);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 根据所选生产工序(生产数据ID)查询责任员工
///
///
///
public static ServiceResultEntity GetSemiReworkDefectStaffByProductionDataID(int productionDataID)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = "select cd.StaffID\n" +
" ,s.StaffCode\n" +
" ,s.staffname\n" +
" ,cd.staffstatus\n" +
" ,cd.UJobsID\n" +
" ,cd.SJobsID\n" +
" from tp_pm_productiondatain pd\n" +
//"--inner join tp_pc_classessetting c on c.classessettingid = pd.classessettingid\n" +
" inner join tp_pc_classesdetail cd\n" +
" on cd.classessettingid = pd.classessettingid\n" +
" inner join TP_HR_Staff s\n" +
" on s.staffid = cd.staffid\n" +
" where pd.productiondataid = :productionDataID\n" +
" order by s.StaffCode";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":productionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
};
ServiceResultEntity se = new ServiceResultEntity();
se.Data = con.GetSqlResultToDs(sqlString, paras);
return se;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 根据所选工号,查出缺陷责任员工
///
/// 用户ID
/// DataSet
public static ServiceResultEntity GetSemiReworkDefectStaffByUserID(int userid)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = "select s.StaffID\n" +
" ,s.StaffCode\n" +
" ,s.StaffName\n" +
" ,s.StaffStatus\n" +
" ,us.UJobsID\n" +
" ,s.jobs SJobsID\n" +
" from TP_MST_UserStaff us\n" +
" inner join TP_HR_Staff s\n" +
" on us.Staffid = s.Staffid\n" +
" where us.Userid = :userid";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":userid",OracleDbType.Int32, userid,ParameterDirection.Input),
};
ServiceResultEntity se = new ServiceResultEntity();
se.Data = con.GetSqlResultToDs(sqlString, paras);
return se;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 保存半检返修
///
/// 半检实体类
/// 用户基本信息
/// ServiceResultEntity
///
/// 王鑫 2016.06.27 新建
///
public static ServiceResultEntity AddSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
{
IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
ServiceResultEntity resultEntity = new ServiceResultEntity();
resultEntity.Result = 1;
if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) ||
entityobj.SemiReworkDefects == null || entityobj.SemiReworkDefects.Count == 0)
{
resultEntity.Result = -1;
resultEntity.Message = "数据错误";
return resultEntity;
}
con.Connect();
string barcode = entityobj.BarCode;
#region 验证条码
// 1.判断产品是否在产
string sql = @"select p.*,u.usercode from TP_PM_InProduction p inner join tp_mst_user u on u.userid=p.userid where p.BarCode=:BarCode for update";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
};
DataTable dsResult = con.GetSqlResultToDt(sql, paras);
if (dsResult == null || dsResult.Rows.Count == 0)
{
resultEntity.Result = -1;// 不在在产表中
resultEntity.Message = "条码[" + barcode + "]不在在产流程";
return resultEntity;
}
DataRow dataRow = dsResult.Rows[0];
if (dataRow["InScrapFlag"].ToString() == "1")
{
resultEntity.Result = -2; //报损待审批
resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
return resultEntity;
}
if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
{
resultEntity.Result = -3; //登窑车后不允许半成品检测
resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
return resultEntity;
}
if (dataRow["IsReworkFlag"].ToString() == "1")
{
resultEntity.Result = -4; //半检返工
resultEntity.Message = "条码[" + barcode + "]已半检返工";
return resultEntity;
}
//xuwei modify 2019-11-14 允许多次半检
//if (dataRow["IsReworkFlag"].ToString() == "2")
//{
// resultEntity.Result = -5; //半检返修
// resultEntity.Message = "条码[" + barcode + "]已半检返修";
// return resultEntity;
//}
//xuwei end
#endregion
#region 保存数据
sql = "select SEQ_PM_SemiRework_ID.nextval from dual";
object srID = con.GetSqlResultToObj(sql);
// 返修
string sqlString = "insert into tp_pm_semirework\n" +
" (SEMIREWORKID\n" +
" ,BARCODE\n" +
" ,PRODUCTIONLINEID\n" +
" ,PROCEDUREID\n" +
" ,PROCEDURETIME\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,USERID\n" +
" ,USERCODE\n" +
" ,PRODUCTIONDATAID\n" +
" ,GROUTINGDAILYID\n" +
" ,GROUTINGDAILYDETAILID\n" +
" ,GROUTINGLINEID\n" +
" ,GROUTINGLINECODE\n" +
" ,GROUTINGLINEDETAILID\n" +
" ,GROUTINGDATE\n" +
" ,GROUTINGMOULDCODE\n" +
" ,GROUTINGUSERID\n" +
" ,GROUTINGUSERCODE\n" +
" ,SEMIREWORKUSERID\n" +
" ,SEMIREWORKUSERCODE\n" +
" ,SEMIREWORKTIME\n" +
" ,REWORKPROCEDUREID\n" +
" ,REMARKS\n" +
" ,ACCOUNTID\n" +
" ,VALUEFLAG\n" +
" ,CREATEUSERID\n" +
" ,UPDATEUSERID)\n" +
"values\n" +
" (:SEMIREWORKID\n" +
" ,:BARCODE\n" +
" ,:PRODUCTIONLINEID\n" +
" ,:PROCEDUREID\n" +
" ,:PROCEDURETIME\n" +
" ,:GOODSID\n" +
" ,:GOODSCODE\n" +
" ,:USERID\n" +
" ,:USERCODE\n" +
" ,:PRODUCTIONDATAID\n" +
" ,:GROUTINGDAILYID\n" +
" ,:GROUTINGDAILYDETAILID\n" +
" ,:GROUTINGLINEID\n" +
" ,:GROUTINGLINECODE\n" +
" ,:GROUTINGLINEDETAILID\n" +
" ,:GROUTINGDATE\n" +
" ,:GROUTINGMOULDCODE\n" +
" ,:GROUTINGUSERID\n" +
" ,:GROUTINGUSERCODE\n" +
" ,:SEMIREWORKUSERID\n" +
" ,:SEMIREWORKUSERCODE\n" +
" ,sysdate\n" +
" ,:REWORKPROCEDUREID\n" +
" ,:REMARKS\n" +
" ,:ACCOUNTID\n" +
" ,'1'\n" +
" ,:CREATEUSERID\n" +
" ,:UPDATEUSERID)\n";
paras = new OracleParameter[]{
new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
new OracleParameter(":PRODUCTIONLINEID",OracleDbType.Int32,dataRow["PRODUCTIONLINEID"],ParameterDirection.Input),
new OracleParameter(":PROCEDUREID",OracleDbType.Int32,dataRow["PROCEDUREID"],ParameterDirection.Input),
new OracleParameter(":PROCEDURETIME",OracleDbType.Date,dataRow["PROCEDURETIME"],ParameterDirection.Input),
new OracleParameter(":GOODSID",OracleDbType.Int32,dataRow["GOODSID"],ParameterDirection.Input),
new OracleParameter(":GOODSCODE",OracleDbType.NVarchar2,dataRow["GOODSCODE"],ParameterDirection.Input),
new OracleParameter(":USERID",OracleDbType.Int32,dataRow["USERID"],ParameterDirection.Input),
new OracleParameter(":USERCODE",OracleDbType.NVarchar2,dataRow["USERCODE"],ParameterDirection.Input),
new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,dataRow["PRODUCTIONDATAID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYID",OracleDbType.Int32,dataRow["GROUTINGDAILYID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,dataRow["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGLINEID",OracleDbType.Int32,dataRow["GROUTINGLINEID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGLINECODE",OracleDbType.NVarchar2,dataRow["GROUTINGLINECODE"],ParameterDirection.Input),
new OracleParameter(":GROUTINGLINEDETAILID",OracleDbType.Int32,dataRow["GROUTINGLINEDETAILID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGDATE",OracleDbType.Date,dataRow["GROUTINGDATE"],ParameterDirection.Input),
new OracleParameter(":GROUTINGMOULDCODE",OracleDbType.NVarchar2,dataRow["GROUTINGMOULDCODE"],ParameterDirection.Input),
new OracleParameter(":GROUTINGUSERID",OracleDbType.Int32,dataRow["GROUTINGUSERID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGUSERCODE",OracleDbType.NVarchar2,dataRow["GROUTINGUSERCODE"],ParameterDirection.Input),
new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
new OracleParameter(":REWORKPROCEDUREID",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
new OracleParameter(":REMARKS",OracleDbType.NVarchar2,entityobj.Remarks,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlString, paras);
// 缺陷
string sqlStringDefect =
"insert into TP_PM_SemiReworkDefect\n" +
" (SEMIREWORKDEFECTID\n" +
" ,SEMIREWORKID\n" +
" ,DEFECTID\n" +
" ,DEFECTCODE\n" +
" ,DEFECTNAME\n" +
" ,DEFECTPOSITIONID\n" +
" ,DEFECTPOSITIONCODE\n" +
" ,DEFECTPOSITIONNAME\n" +
" ,SCRAPRESPONFLAG\n" +
" ,DEFECTPRODUCTIONDATAID\n" +
" ,DEFECTPROCEDUREID\n" +
" ,DEFECTUSERID\n" +
" ,DEFECTUSERCODE\n" +
" ,REMARKS\n" +
" ,ACCOUNTID\n" +
" ,VALUEFLAG\n" +
" ,CREATEUSERID\n" +
" ,UPDATEUSERID)\n" +
"values\n" +
" (:SEMIREWORKDEFECTID\n" +
" ,:SEMIREWORKID\n" +
" ,:DEFECTID\n" +
" ,:DEFECTCODE\n" +
" ,:DEFECTNAME\n" +
" ,:DEFECTPOSITIONID\n" +
" ,:DEFECTPOSITIONCODE\n" +
" ,:DEFECTPOSITIONNAME\n" +
" ,:SCRAPRESPONFLAG\n" +
" ,:DEFECTPRODUCTIONDATAID\n" +
" ,:DEFECTPROCEDUREID\n" +
" ,:DEFECTUSERID\n" +
" ,:DEFECTUSERCODE\n" +
" ,:REMARKS\n" +
" ,:ACCOUNTID\n" +
" ,:VALUEFLAG\n" +
" ,:CREATEUSERID\n" +
" ,:UPDATEUSERID)";
string sqlStringRPS =
"insert into TP_PM_SemiReworkRPS\n" +
" (semireworkdefectid\n" +
" ,staffid\n" +
" ,semireworkid\n" +
" ,userid\n" +
" ,usercode\n" +
" ,ujobsid\n" +
" ,sjobsid\n" +
" ,accountid\n" +
" ,valueflag\n" +
" ,createuserid\n" +
" ,updateuserid)\n" +
"values\n" +
" (:semireworkdefectid\n" +
" ,:staffid\n" +
" ,:semireworkid\n" +
" ,:userid\n" +
" ,:usercode\n" +
" ,:ujobsid\n" +
" ,:sjobsid\n" +
" ,:accountid\n" +
" ,'1'\n" +
" ,:createuserid\n" +
" ,:updateuserid)";
foreach (SemiReworkDefectEntity defect in entityobj.SemiReworkDefects)
{
sql = "select SEQ_PM_SEMIREWORKDEFECT_ID.nextval from dual";
object srdefectID = con.GetSqlResultToObj(sql);
paras = new OracleParameter[]{
new OracleParameter(":SEMIREWORKDEFECTID",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
new OracleParameter(":DEFECTID",OracleDbType.Int32,defect.DefectID,ParameterDirection.Input),
new OracleParameter(":DEFECTCODE",OracleDbType.NVarchar2,defect.DefectCode,ParameterDirection.Input),
new OracleParameter(":DEFECTNAME",OracleDbType.NVarchar2,defect.DefectName,ParameterDirection.Input),
new OracleParameter(":DEFECTPOSITIONID",OracleDbType.Int32,defect.DefectPositionID,ParameterDirection.Input),
new OracleParameter(":DEFECTPOSITIONCODE",OracleDbType.NVarchar2,defect.DefectPositionCode,ParameterDirection.Input),
new OracleParameter(":DEFECTPOSITIONNAME",OracleDbType.NVarchar2,defect.DefectPositionName,ParameterDirection.Input),
new OracleParameter(":SCRAPRESPONFLAG",OracleDbType.NVarchar2,defect.ScrapResponFlag,ParameterDirection.Input),
new OracleParameter(":DEFECTPRODUCTIONDATAID",OracleDbType.Int32,defect.DefectProductionDataID,ParameterDirection.Input),
new OracleParameter(":DEFECTPROCEDUREID",OracleDbType.Int32,defect.DefectProcedureID,ParameterDirection.Input),
new OracleParameter(":DEFECTUSERID",OracleDbType.Int32,defect.DefectUserID,ParameterDirection.Input),
new OracleParameter(":DEFECTUSERCODE",OracleDbType.NVarchar2,defect.DefectUserCode,ParameterDirection.Input),
new OracleParameter(":REMARKS",OracleDbType.NVarchar2,defect.Remarks,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
//xuwei add 2019-11-14
new OracleParameter(":VALUEFLAG",OracleDbType.Char,defect.ValueFlag,ParameterDirection.Input),
//xuwei end
new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlStringDefect, paras);
foreach (SemiReworkRPSEntity item in defect.DefectResponsibles)
{
paras = new OracleParameter[]{
new OracleParameter(":semireworkdefectid",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
new OracleParameter(":staffid",OracleDbType.Int32,item.StaffID,ParameterDirection.Input),
new OracleParameter(":semireworkid",OracleDbType.Int32,srID,ParameterDirection.Input),
new OracleParameter(":userid",OracleDbType.Int32,item.UserID,ParameterDirection.Input),
new OracleParameter(":usercode",OracleDbType.NVarchar2,item.UserCode,ParameterDirection.Input),
new OracleParameter(":ujobsid",OracleDbType.Int32,item.UJobsID,ParameterDirection.Input),
new OracleParameter(":sjobsid",OracleDbType.Int32,item.SJobsID,ParameterDirection.Input),
new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlStringRPS, paras);
}
}
#endregion
#region 更新在产数据
string sqlStringInp = "update tp_pm_inproduction inp\n" +
" set inp.reworkprocedureid = :pid\n" +
" ,inp.isreworkflag = '2'\n" +
" ,inp.semicheckid = :srid\n" +
" where inp.barcode = :barcode";
paras = new OracleParameter[]{
new OracleParameter(":pid",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
new OracleParameter(":srid",OracleDbType.Int32,srID,ParameterDirection.Input),
new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlStringInp, paras);
#endregion
con.Commit();
return resultEntity;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Disconnect();
}
}
}
///
/// 编辑半检返修
///
///
///
///
public static ServiceResultEntity EditSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
{
IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
ServiceResultEntity resultEntity = new ServiceResultEntity();
resultEntity.Result = 1;
if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) ||
entityobj.SemiReworkDefects == null || entityobj.SemiReworkDefects.Count == 0)
{
resultEntity.Result = -1;
resultEntity.Message = "数据错误";
return resultEntity;
}
con.Connect();
string barcode = entityobj.BarCode;
#region 验证条码
// 1.判断产品是否在产
string sql = @"select p.*,u.usercode from TP_PM_InProduction p inner join tp_mst_user u on u.userid=p.userid where p.BarCode=:BarCode for update";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
};
DataTable dsResult = con.GetSqlResultToDt(sql, paras);
if (dsResult == null || dsResult.Rows.Count == 0)
{
resultEntity.Result = -1;// 不在在产表中
resultEntity.Message = "条码[" + barcode + "]不在在产流程";
return resultEntity;
}
DataRow dataRow = dsResult.Rows[0];
if (dataRow["InScrapFlag"].ToString() == "1")
{
resultEntity.Result = -2; //报损待审批
resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
return resultEntity;
}
if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
{
resultEntity.Result = -3; //登窑车后不允许半成品检测
resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
return resultEntity;
}
if (dataRow["IsReworkFlag"].ToString() == "1")
{
resultEntity.Result = -4; //半检返工
resultEntity.Message = "条码[" + barcode + "]已半检返工";
return resultEntity;
}
if (dataRow["IsReworkFlag"].ToString() != "2")
{
resultEntity.Result = -5; //半检返修
resultEntity.Message = "条码[" + barcode + "]未半检返修";
return resultEntity;
}
if (Convert.ToInt32(dataRow["SemiCheckID"]) != entityobj.SemiReworkID)
{
resultEntity.Result = -6; //半检返修
resultEntity.Message = "条码[" + barcode + "]已重新登记半检返修";
return resultEntity;
}
#endregion
#region 停用数据
//xuwei modify 2019-11-18 如果半检工号不同 跳过停用数据
//通过 SEMIREWORKUSERCODE 半检工号 与 当前操作工号 判定识别
string isSameUser = con.GetSqlResultToStr($@"
SELECT
count( SEMIREWORKID )
FROM
TP_PM_SEMIREWORK
WHERE
SEMIREWORKID = {entityobj.SemiReworkID}
AND SEMIREWORKUSERCODE = '{sUserInfo.UserCode}'
");
//xuwei modify 2019-11-18 如果半检工号不同 跳过停用数据
if(isSameUser == "1")
{
paras = new OracleParameter[]{
new OracleParameter(":userid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":SemiReworkID",OracleDbType.Int32,entityobj.SemiReworkID,ParameterDirection.Input),
};
string sqldelete = "update TP_PM_SemiReworkRPS\n" +
" set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
" where SemiReworkID = :SemiReworkID";
con.ExecuteNonQuery(sqldelete, paras);
sqldelete = "update TP_PM_SemiReworkDefect\n" +
" set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
" where SemiReworkID = :SemiReworkID";
con.ExecuteNonQuery(sqldelete, paras);
sqldelete = " update TP_PM_SemiRework\n" +
" set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
" where SemiReworkID = :SemiReworkID";
con.ExecuteNonQuery(sqldelete, paras);
}
#endregion
#region 保存数据
sql = "select SEQ_PM_SemiRework_ID.nextval from dual";
object srID = con.GetSqlResultToObj(sql);
// 返修
string sqlString = "insert into tp_pm_semirework\n" +
" (SEMIREWORKID\n" +
" ,BARCODE\n" +
" ,PRODUCTIONLINEID\n" +
" ,PROCEDUREID\n" +
" ,PROCEDURETIME\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,USERID\n" +
" ,USERCODE\n" +
" ,PRODUCTIONDATAID\n" +
" ,GROUTINGDAILYID\n" +
" ,GROUTINGDAILYDETAILID\n" +
" ,GROUTINGLINEID\n" +
" ,GROUTINGLINECODE\n" +
" ,GROUTINGLINEDETAILID\n" +
" ,GROUTINGDATE\n" +
" ,GROUTINGMOULDCODE\n" +
" ,GROUTINGUSERID\n" +
" ,GROUTINGUSERCODE\n" +
" ,SEMIREWORKUSERID\n" +
" ,SEMIREWORKUSERCODE\n" +
" ,SEMIREWORKTIME\n" +
" ,REWORKPROCEDUREID\n" +
" ,REMARKS\n" +
" ,ACCOUNTID\n" +
" ,VALUEFLAG\n" +
" ,CREATEUSERID\n" +
" ,UPDATEUSERID)\n" +
"values\n" +
" (:SEMIREWORKID\n" +
" ,:BARCODE\n" +
" ,:PRODUCTIONLINEID\n" +
" ,:PROCEDUREID\n" +
" ,:PROCEDURETIME\n" +
" ,:GOODSID\n" +
" ,:GOODSCODE\n" +
" ,:USERID\n" +
" ,:USERCODE\n" +
" ,:PRODUCTIONDATAID\n" +
" ,:GROUTINGDAILYID\n" +
" ,:GROUTINGDAILYDETAILID\n" +
" ,:GROUTINGLINEID\n" +
" ,:GROUTINGLINECODE\n" +
" ,:GROUTINGLINEDETAILID\n" +
" ,:GROUTINGDATE\n" +
" ,:GROUTINGMOULDCODE\n" +
" ,:GROUTINGUSERID\n" +
" ,:GROUTINGUSERCODE\n" +
" ,:SEMIREWORKUSERID\n" +
" ,:SEMIREWORKUSERCODE\n" +
//" ,:SEMIREWORKTIME\n" +
" ,sysdate\n" +
" ,:REWORKPROCEDUREID\n" +
" ,:REMARKS\n" +
" ,:ACCOUNTID\n" +
" ,'1'\n" +
" ,:CREATEUSERID\n" +
" ,:UPDATEUSERID)\n";
paras = new OracleParameter[]{
new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
new OracleParameter(":PRODUCTIONLINEID",OracleDbType.Int32,dataRow["PRODUCTIONLINEID"],ParameterDirection.Input),
new OracleParameter(":PROCEDUREID",OracleDbType.Int32,dataRow["PROCEDUREID"],ParameterDirection.Input),
new OracleParameter(":PROCEDURETIME",OracleDbType.Date,dataRow["PROCEDURETIME"],ParameterDirection.Input),
new OracleParameter(":GOODSID",OracleDbType.Int32,dataRow["GOODSID"],ParameterDirection.Input),
new OracleParameter(":GOODSCODE",OracleDbType.NVarchar2,dataRow["GOODSCODE"],ParameterDirection.Input),
new OracleParameter(":USERID",OracleDbType.Int32,dataRow["USERID"],ParameterDirection.Input),
new OracleParameter(":USERCODE",OracleDbType.NVarchar2,dataRow["USERCODE"],ParameterDirection.Input),
new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,dataRow["PRODUCTIONDATAID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYID",OracleDbType.Int32,dataRow["GROUTINGDAILYID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,dataRow["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGLINEID",OracleDbType.Int32,dataRow["GROUTINGLINEID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGLINECODE",OracleDbType.NVarchar2,dataRow["GROUTINGLINECODE"],ParameterDirection.Input),
new OracleParameter(":GROUTINGLINEDETAILID",OracleDbType.Int32,dataRow["GROUTINGLINEDETAILID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGDATE",OracleDbType.Date,dataRow["GROUTINGDATE"],ParameterDirection.Input),
new OracleParameter(":GROUTINGMOULDCODE",OracleDbType.NVarchar2,dataRow["GROUTINGMOULDCODE"],ParameterDirection.Input),
new OracleParameter(":GROUTINGUSERID",OracleDbType.Int32,dataRow["GROUTINGUSERID"],ParameterDirection.Input),
new OracleParameter(":GROUTINGUSERCODE",OracleDbType.NVarchar2,dataRow["GROUTINGUSERCODE"],ParameterDirection.Input),
//new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,entityobj.SEMIREWORKUSERID,ParameterDirection.Input),
//new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,entityobj.UserCode,ParameterDirection.Input),
//new OracleParameter(":SEMIREWORKTIME",OracleDbType.Date,sUserInfo.entityobj,ParameterDirection.Input),
new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
new OracleParameter(":REWORKPROCEDUREID",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
new OracleParameter(":REMARKS",OracleDbType.NVarchar2,entityobj.Remarks,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlString, paras);
// 缺陷
string sqlStringDefect =
"insert into TP_PM_SemiReworkDefect\n" +
" (SEMIREWORKDEFECTID\n" +
" ,SEMIREWORKID\n" +
" ,DEFECTID\n" +
" ,DEFECTCODE\n" +
" ,DEFECTNAME\n" +
" ,DEFECTPOSITIONID\n" +
" ,DEFECTPOSITIONCODE\n" +
" ,DEFECTPOSITIONNAME\n" +
" ,SCRAPRESPONFLAG\n" +
" ,DEFECTPRODUCTIONDATAID\n" +
" ,DEFECTPROCEDUREID\n" +
" ,DEFECTUSERID\n" +
" ,DEFECTUSERCODE\n" +
" ,REMARKS\n" +
" ,ACCOUNTID\n" +
" ,VALUEFLAG\n" +
" ,CREATEUSERID\n" +
" ,UPDATEUSERID)\n" +
"values\n" +
" (:SEMIREWORKDEFECTID\n" +
" ,:SEMIREWORKID\n" +
" ,:DEFECTID\n" +
" ,:DEFECTCODE\n" +
" ,:DEFECTNAME\n" +
" ,:DEFECTPOSITIONID\n" +
" ,:DEFECTPOSITIONCODE\n" +
" ,:DEFECTPOSITIONNAME\n" +
" ,:SCRAPRESPONFLAG\n" +
" ,:DEFECTPRODUCTIONDATAID\n" +
" ,:DEFECTPROCEDUREID\n" +
" ,:DEFECTUSERID\n" +
" ,:DEFECTUSERCODE\n" +
" ,:REMARKS\n" +
" ,:ACCOUNTID\n" +
" ,:VALUEFLAG\n" + //xuwei add 2019-11-14
" ,:CREATEUSERID\n" +
" ,:UPDATEUSERID)";
string sqlStringRPS =
"insert into TP_PM_SemiReworkRPS\n" +
" (semireworkdefectid\n" +
" ,staffid\n" +
" ,semireworkid\n" +
" ,userid\n" +
" ,usercode\n" +
" ,ujobsid\n" +
" ,sjobsid\n" +
" ,accountid\n" +
" ,valueflag\n" +
" ,createuserid\n" +
" ,updateuserid)\n" +
"values\n" +
" (:semireworkdefectid\n" +
" ,:staffid\n" +
" ,:semireworkid\n" +
" ,:userid\n" +
" ,:usercode\n" +
" ,:ujobsid\n" +
" ,:sjobsid\n" +
" ,:accountid\n" +
" ,'1'\n" +
" ,:createuserid\n" +
" ,:updateuserid)";
foreach (SemiReworkDefectEntity defect in entityobj.SemiReworkDefects)
{
sql = "select SEQ_PM_SEMIREWORKDEFECT_ID.nextval from dual";
object srdefectID = con.GetSqlResultToObj(sql);
paras = new OracleParameter[]{
new OracleParameter(":SEMIREWORKDEFECTID",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
new OracleParameter(":DEFECTID",OracleDbType.Int32,defect.DefectID,ParameterDirection.Input),
new OracleParameter(":DEFECTCODE",OracleDbType.NVarchar2,defect.DefectCode,ParameterDirection.Input),
new OracleParameter(":DEFECTNAME",OracleDbType.NVarchar2,defect.DefectName,ParameterDirection.Input),
new OracleParameter(":DEFECTPOSITIONID",OracleDbType.Int32,defect.DefectPositionID,ParameterDirection.Input),
new OracleParameter(":DEFECTPOSITIONCODE",OracleDbType.NVarchar2,defect.DefectPositionCode,ParameterDirection.Input),
new OracleParameter(":DEFECTPOSITIONNAME",OracleDbType.NVarchar2,defect.DefectPositionName,ParameterDirection.Input),
new OracleParameter(":SCRAPRESPONFLAG",OracleDbType.NVarchar2,defect.ScrapResponFlag,ParameterDirection.Input),
new OracleParameter(":DEFECTPRODUCTIONDATAID",OracleDbType.Int32,defect.DefectProductionDataID,ParameterDirection.Input),
new OracleParameter(":DEFECTPROCEDUREID",OracleDbType.Int32,defect.DefectProcedureID,ParameterDirection.Input),
new OracleParameter(":DEFECTUSERID",OracleDbType.Int32,defect.DefectUserID,ParameterDirection.Input),
new OracleParameter(":DEFECTUSERCODE",OracleDbType.NVarchar2,defect.DefectUserCode,ParameterDirection.Input),
new OracleParameter(":REMARKS",OracleDbType.NVarchar2,defect.Remarks,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
//xuwei add 2019-11-14
new OracleParameter(":VALUEFLAG",OracleDbType.Char,defect.ValueFlag,ParameterDirection.Input),
//xuwei end
new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlStringDefect, paras);
foreach (SemiReworkRPSEntity item in defect.DefectResponsibles)
{
paras = new OracleParameter[]{
new OracleParameter(":semireworkdefectid",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
new OracleParameter(":staffid",OracleDbType.Int32,item.StaffID,ParameterDirection.Input),
new OracleParameter(":semireworkid",OracleDbType.Int32,srID,ParameterDirection.Input),
new OracleParameter(":userid",OracleDbType.Int32,item.UserID,ParameterDirection.Input),
new OracleParameter(":usercode",OracleDbType.NVarchar2,item.UserCode,ParameterDirection.Input),
new OracleParameter(":ujobsid",OracleDbType.Int32,item.UJobsID,ParameterDirection.Input),
new OracleParameter(":sjobsid",OracleDbType.Int32,item.SJobsID,ParameterDirection.Input),
new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlStringRPS, paras);
}
}
#endregion
#region 更新在产数据
string sqlStringInp = "update tp_pm_inproduction inp\n" +
" set inp.reworkprocedureid = :pid\n" +
" ,inp.isreworkflag = '2'\n" +
" ,inp.semicheckid = :srid\n" +
" where inp.barcode = :barcode";
paras = new OracleParameter[]{
new OracleParameter(":pid",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
new OracleParameter(":srid",OracleDbType.Int32,srID,ParameterDirection.Input),
new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlStringInp, paras);
#endregion
con.Commit();
return resultEntity;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Disconnect();
}
}
}
///
/// 撤销半检返修
///
///
///
///
public static ServiceResultEntity CancelSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
{
IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
ServiceResultEntity resultEntity = new ServiceResultEntity();
resultEntity.Result = 1;
if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) || entityobj.SemiReworkID < 1)
{
resultEntity.Result = -1;
resultEntity.Message = "数据错误";
return resultEntity;
}
con.Connect();
string barcode = entityobj.BarCode;
#region 验证条码
// 1.判断产品是否在产
string sql = @"select * from TP_PM_InProduction where BarCode=:BarCode for update";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
};
DataTable dsResult = con.GetSqlResultToDt(sql, paras);
if (dsResult == null || dsResult.Rows.Count == 0)
{
resultEntity.Result = -1;// 不在在产表中
resultEntity.Message = "条码[" + barcode + "]不在在产流程";
return resultEntity;
}
DataRow dataRow = dsResult.Rows[0];
if (dataRow["InScrapFlag"].ToString() == "1")
{
resultEntity.Result = -2; //报损待审批
resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
return resultEntity;
}
if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
{
resultEntity.Result = -3; //登窑车后不允许半成品检测
resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
return resultEntity;
}
if (dataRow["IsReworkFlag"].ToString() == "1")
{
resultEntity.Result = -4; //半检返工
resultEntity.Message = "条码[" + barcode + "]已半检返工";
return resultEntity;
}
if (dataRow["IsReworkFlag"].ToString() != "2")
{
resultEntity.Result = -5; //半检返修
resultEntity.Message = "条码[" + barcode + "]未半检返修";
return resultEntity;
}
if (Convert.ToInt32(dataRow["SemiCheckID"]) != entityobj.SemiReworkID)
{
resultEntity.Result = -6; //半检返修
resultEntity.Message = "条码[" + barcode + "]已重新登记半检返修";
return resultEntity;
}
#endregion
#region 停用数据
paras = new OracleParameter[]{
new OracleParameter(":userid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":usercode",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
new OracleParameter(":SemiReworkID",OracleDbType.Int32,entityobj.SemiReworkID,ParameterDirection.Input),
};
//string sqldelete = "update TP_PM_SemiReworkRPS\n" +
//" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
//" where SemiReworkID = :SemiReworkID";
//con.ExecuteNonQuery(sqldelete, paras);
//sqldelete = "update TP_PM_SemiReworkDefect\n" +
//" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
//" where SemiReworkID = :SemiReworkID";
//con.ExecuteNonQuery(sqldelete, paras);
//sqldelete = " update TP_PM_SemiRework\n" +
//" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
//" where SemiReworkID = :SemiReworkID";
//con.ExecuteNonQuery(sqldelete, paras);
string sqlString = "update TP_PM_SemiRework\n" +
" set BackOutFlag = '1'\n" +
" ,BackOutTime = sysdate\n" +
" ,BackOutUserID = :userid\n" +
" ,BackOutUserCode = :usercode\n" +
" ,UpdateTime = sysdate\n" +
" ,UpdateUserID = :userid\n" +
" where SemiReworkID = :SemiReworkID";
con.ExecuteNonQuery(sqlString, paras);
#endregion
#region 更新在产数据
string sqlStringInp = "update tp_pm_inproduction inp\n" +
" set inp.reworkprocedureid = null\n" +
" ,inp.isreworkflag = '0'\n" +
" ,inp.semicheckid = null\n" +
" where inp.barcode = :barcode";
paras = new OracleParameter[]{
new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
};
con.ExecuteNonQuery(sqlStringInp, paras);
#endregion
con.Commit();
return resultEntity;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Disconnect();
}
}
}
public static ServiceResultEntity GetSemiReworkForPDAEdit(int semiReworkID, SUserInfo sUserInfo)
{
return null;
}
#endregion
#region 窑车漏扫补件
///
/// 验证窑车是否存在
///
///
///
///
public static ServiceResultEntity CheckKilnCar(ClientRequestEntity cre, SUserInfo userInfo)
{
IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
try
{
string sqlString = "select kc.kilncarid,kc.kilnid\n" +
" from tp_mst_kilncar kc\n" +
" where kc.valueflag = '1'\n" +
" and kc.accountid = @accountID@\n" +
" and kc.kilncarcode = @kilncarcode@";
CDAParameter[] paras = new CDAParameter[]
{
new CDAParameter("accountID", userInfo.AccountID),
new CDAParameter("kilncarcode", cre.Properties["kilncarcode"]),
};
ServiceResultEntity sre = new ServiceResultEntity();
DataTable data = dataAccess.ExecuteDatatable(sqlString, paras);
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = "此窑车不存在";
return sre;
}
sre.Result = data.Rows[0]["kilncarid"];
sqlString = "Select procedureID From tp_pc_procedureKiln t where t.KilnID = @KilnID@ and t.procedureID = @procedureID@";
paras = new CDAParameter[]
{
new CDAParameter("KilnID", data.Rows[0]["kilnid"]),
new CDAParameter("procedureID", cre.Properties["procedureID"]),
};
data = dataAccess.ExecuteDatatable(sqlString, paras);
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 2;
sre.Message = "此窑车不不允许经过此工序";
return sre;
}
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dataAccess?.Dispose();
}
}
///
/// 验证窑车烧成批次号是否存在 和 是否能补漏扫
///
///
///
///
public static ServiceResultEntity CheckKilnCarBatchNo(ClientRequestEntity cre, SUserInfo userInfo)
{
IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
try
{
string sqlString = "select t.kilncardataid, t.modelType, t.procedureid\n" +
" from tp_pm_kilncardata t\n" +
" where t.kilnid = @kilnid@\n" +
" and t.kilncarid = @kilncarid@\n" +
" and t.valueflag = '1'\n" +
" and t.kilncarbatchno = @kilncarbatchno@";
CDAParameter[] paras = new CDAParameter[]
{
new CDAParameter("kilnid", cre.Properties["KilnID"]),
new CDAParameter("kilncarid", cre.Properties["KilnCarID"]),
new CDAParameter("kilncarbatchno", cre.Properties["KilnCarBatchNo"]),
};
ServiceResultEntity sre = new ServiceResultEntity();
DataTable data = dataAccess.ExecuteDatatable(sqlString, paras);
if (data == null || data.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 1;
sre.Message = "此烧成批次号不存在";
return sre;
}
int carProcedureid = Convert.ToInt32(data.Rows[0]["procedureid"]);
string modelType = data.Rows[data.Rows.Count-1]["modelType"] + "";
if (modelType != "4")
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 2;
sre.Message = "此窑车还未卸窑不能补件";
return sre;
}
if (carProcedureid != Convert.ToInt32(cre.Properties["ProcedureID"]))
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = 3;
sre.Message = "此窑车烧成批次不是在当前工序登窑";
return sre;
}
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dataAccess?.Dispose();
}
}
///
/// 窑车漏扫补件
///
///
///
///
public static ServiceResultEntity SetKilnCarMissing(ClientRequestEntity cre, SUserInfo userInfo)
{
IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
try
{
ServiceResultEntity sre = new ServiceResultEntity();
dataAccess.Open(true);
DataTable data = cre.Data.Tables[0];
string CENTRALIZEDBATCHNO = System.Guid.NewGuid().ToString();
string sqlString = "\n" +
"insert into tp_pm_productiondatain\n" +
" (BARCODE\n" +
" ,CENTRALIZEDBATCHNO\n" +
" ,PRODUCTIONLINEID\n" +
" ,PRODUCTIONLINECODE\n" +
" ,PRODUCTIONLINENAME\n" +
" ,PROCEDUREID\n" +
" ,PROCEDURECODE\n" +
" ,PROCEDURENAME\n" +
" ,PROCEDUREMODEL\n" +
" ,MODELTYPE\n" +
" ,PIECETYPE\n" +
" ,ISREWORKED\n" +
" ,NODETYPE\n" +
" ,ISPUBLICBODY\n" +
" ,ISREFIRE\n" +
" ,ORGANIZATIONID\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,GOODSNAME\n" +
" ,USERID\n" +
" ,USERCODE\n" +
" ,USERNAME\n" +
" ,KILNID\n" +
" ,KILNCODE\n" +
" ,KILNNAME\n" +
" ,KILNCARID\n" +
" ,KILNCARCODE\n" +
" ,KILNCARNAME\n" +
" ,KILNCARBATCHNO\n" +
" ,KILNCARPOSITION\n" +
" ,REMARKS\n" +
" ,ACCOUNTDATE\n" +
" ,ACCOUNTID\n" +
" ,VALUEFLAG\n" +
" ,CREATEUSERID\n" +
" ,UPDATEUSERID\n" +
" ,GROUTINGDATE\n" +
" ,GROUTINGMOULDCODE\n" +
" ,MOULDCODE\n" +
" ,GROUTINGUSERID\n" +
" ,GROUTINGUSERCODE\n" +
" ,GROUTINGNUM\n" +
" ,GROUTINGDAILYID\n" +
" ,GROUTINGDAILYDETAILID\n" +
" ,GROUTINGLINEID\n" +
" ,GROUTINGLINECODE\n" +
" ,GROUTINGLINENAME\n" +
" ,GMOULDTYPEID\n" +
" ,CANMANYTIMES\n" +
" ,GROUTINGLINEDETAILID\n" +
" ,SPECIALREPAIRFLAG\n" +
" ,CLASSESSETTINGID\n" +
" ,LOGOID\n" +
" ,CHECKTIME)\n" +
" select inp.barcode\n" +
" ,@CENTRALIZEDBATCHNO@\n" +
" ,kd.productionlineid\n" +
" ,pline.PRODUCTIONLINECODE\n" +
" ,pline.PRODUCTIONLINENAME\n" +
" ,kd.procedureid\n" +
" ,pcp.PROCEDURECODE\n" +
" ,pcp.PROCEDURENAME\n" +
" ,pcp.proceduremodel\n" +
" ,pcp.modeltype\n" +
" ,pcp.piecetype\n" +
" ,'0'\n" +
" ,pcp.nodetype\n" +
" ,inp.ispublicbody\n" +
" ,inp.isrefire\n" +
" ,pcp.organizationid\n" +
" ,inp.goodsid\n" +
" ,inp.goodscode\n" +
" ,inp.goodsname\n" +
//" ,kd.USERID\n" +
//" ,kd.USERCODE\n" +
//" ,kd.USERNAME\n" +
" ,@USERID@\n" +
" ,@USERCODE@\n" +
" ,@USERNAME@\n" +
" ,kd.KILNID\n" +
" ,k.KILNCODE\n" +
" ,k.KILNNAME\n" +
" ,kc.KILNCARID\n" +
" ,kc.KILNCARCODE\n" +
" ,kc.KILNCARNAME\n" +
" ,kd.KILNCARBATCHNO\n" +
" ,@KILNCARPOSITION@\n" +
" ,'窑车漏扫补件'\n" +
" ,trunc(sysdate)\n" +
" ,@ACCOUNTID@\n" +
" ,'1'\n" +
" ,@CREATEUSERID@\n" +
" ,@CREATEUSERID@\n" +
" ,inp.GROUTINGDATE\n" +
" ,inp.GROUTINGMOULDCODE\n" +
" ,inp.MOULDCODE\n" +
" ,inp.GROUTINGUSERID\n" +
" ,inp.GROUTINGUSERCODE\n" +
" ,inp.GROUTINGNUM\n" +
" ,inp.GROUTINGDAILYID\n" +
" ,inp.GROUTINGDAILYDETAILID\n" +
" ,inp.GROUTINGLINEID\n" +
" ,inp.GROUTINGLINECODE\n" +
" ,inp.GROUTINGLINENAME\n" +
" ,inp.GMOULDTYPEID\n" +
" ,inp.CANMANYTIMES\n" +
" ,inp.GROUTINGLINEDETAILID\n" +
" ,inp.SPECIALREPAIRFLAG\n" +
" ,kd.CLASSESSETTINGID\n" +
" ,inp.LOGOID\n" +
" ,kd.CREATETIME\n" +
" from tp_pm_inproduction inp\n" +
" inner join tp_pm_kilncardata kd\n" +
" on kd.kilncarbatchno = @kilncarbatchno@\n" +
" and kd.valueflag = '1'\n" +
" inner join tp_pc_productionline pline\n" +
" on pline.productionlineid = kd.productionlineid\n" +
" inner join tp_pc_procedure pcp\n" +
" on pcp.procedureid = kd.procedureid\n" +
" inner join tp_mst_kiln k\n" +
" on kd.kilnid = k.kilnid\n" +
" inner join tp_mst_kilncar kc\n" +
" on kc.kilncarid = kd.kilncarid\n" +
" where inp.barcode = @barcode@\n" +
" order by kd.kilncardataid";
string sqlUpdate = "update tp_pm_inproduction t\n" +
" set (t.KILNID\n" +
" ,t.KILNCODE\n" +
" ,t.KILNNAME\n" +
" ,t.KILNCARID\n" +
" ,t.KILNCARCODE\n" +
" ,t.KILNCARNAME\n" +
" ,t.KILNCARBATCHNO\n" +
" ,t.KILNCARPOSITION\n" +
" ,t.PROCEDUREMODEL\n" +
" ,t.MODELTYPE\n" +
" ,t.FLOWPROCEDUREID\n" +
" ,t.FLOWPROCEDURETIME\n" +
" ,t.PROCEDUREID\n" +
" ,t.PROCEDURETIME\n" +
" ,t.USERID\n" +
" ,t.PRODUCTIONDATAID) =\n" +
" (select pin.KILNID\n" +
" ,pin.KILNCODE\n" +
" ,pin.KILNNAME\n" +
" ,pin.KILNCARID\n" +
" ,pin.KILNCARCODE\n" +
" ,pin.KILNCARNAME\n" +
" ,pin.KILNCARBATCHNO\n" +
" ,pin.KILNCARPOSITION\n" +
" ,pin.PROCEDUREMODEL\n" +
" ,pin.MODELTYPE\n" +
" ,pin.PROCEDUREID\n" +
" ,sysdate\n" +
" ,pin.PROCEDUREID\n" +
" ,sysdate\n" +
" ,@USERID@\n" +
" ,pin.PRODUCTIONDATAID\n" +
" from tp_pm_productiondatain pin\n" +
" where pin.productiondataid =\n" +
" (select max(productiondataid)\n" +
" from tp_pm_productiondatain ppin\n" +
" where ppin.barcode = t.barcode))\n" +
" where t.barcode = @barcode@";
foreach (DataRow item in data.Rows)
{
CDAParameter[] paras = new CDAParameter[]
{
new CDAParameter("CENTRALIZEDBATCHNO", CENTRALIZEDBATCHNO),
new CDAParameter("ACCOUNTID", userInfo.AccountID),
new CDAParameter("CREATEUSERID", userInfo.UserID),
new CDAParameter("kilncarbatchno", cre.Properties["KilnCarBatchNo"]),
new CDAParameter("barcode", item["barcode"]),
new CDAParameter("KILNCARPOSITION", item["KILNCARPOSITION"]),
new CDAParameter("USERID", userInfo.UserID),
new CDAParameter("USERCODE", userInfo.UserCode),
new CDAParameter("USERNAME", userInfo.UserName),
};
// 插入生产数据
dataAccess.ExecuteNonQuery(sqlString, paras);
// 更新在产数据
dataAccess.ExecuteNonQuery(sqlUpdate,
new CDAParameter("barcode", item["barcode"]),
new CDAParameter("USERID", userInfo.UserID));
}
dataAccess.Commit();
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dataAccess?.Dispose();
}
}
#endregion
}
}