/*******************************************************************************
* Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:PCModuleLogicDAL.cs
* 2.功能描述:生产配置数据库访问类(插入、修改、删除)
* 编辑履历:
* 作者 日期 版本 修改内容
* 庄天威 2014/09/16 1.00 新建
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.Basics.DataAccess;
using Dongke.IBOSS.PRD.Service.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels;
using Oracle.DataAccess.Client;
namespace Dongke.IBOSS.PRD.Service.PCModuleLogic
{
///
/// 生产配置数据库访问类(插入、修改、删除)
///
public partial class PCModuleLogicDAL
{
#region 成型线配置
///
/// 新建成型线信息
///
/// 成型线实体
/// 明细实体集合
/// 用户基本信息
/// 返回受影响行数
///
/// 庄天威 2014.09.10 新建
///
public static int AddGroutingLine(GroutingLineEntity groutingLineEntity,
List detailList, SUserInfo user)
{
int returnRows = 0;
int detailReturn = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
if (GroutingLineCodeIsRepeat(groutingLineEntity.GROUTINGLINECODE, user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -50;
}
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//获取成型线ID索引
StringBuilder sbSql = new StringBuilder();
sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//添加成型线信息
sbSql.Append("Insert into TP_PC_GroutingLine");
sbSql.Append("(GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,");
sbSql.Append("GroutingLineName,MouldQuantity,GMouldTypeID,UserID,");
sbSql.Append("BeginUsedDate,GMouldStatus,Remarks,AccountID,ValueFlag,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("values(:GroutingLineID,:BuildingNo,:FloorNo,:GroutingLineNo,:GroutingLineCode,");
sbSql.Append(":GroutingLineName,:MouldQuantity,:GMouldTypeID,:UserID,");
sbSql.Append(":BeginUsedDate,:GMouldStatus,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
groutingLineEntity.FLOORNO,ParameterDirection.Input),
new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
groutingLineEntity.USERID,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
groutingLineEntity.MouldStatus,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
groutingLineEntity.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
DateTime.Now,ParameterDirection.Input)
};
//执行插入成型线SQL语句
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//此处添加明细信息(循环)
foreach (GroutingLineDetailEntity detailInfo in detailList)
{
//查看该成型线明细编号是否存在
if (GroutingLineDetailCodeIsRepeat(detailInfo.GROUTINGMOULDCODE, user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -2;
}
//获取成型线明细索引
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//插入成型线明细信息
sbSql.Append("Insert into TP_PC_GroutingLineDetail");
sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailInfo.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailInfo.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailInfo.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
detailInfo.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
DateTime.Now,ParameterDirection.Input)
};
//执行插入语句并累加成功插入次数
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
//如果有插入不成功的情况,回滚事务,否则提交
if (returnRows == 0 || detailReturn == 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 returnRows;
}
///
/// 修改成型线信息
///
/// 成型线实体
/// 明细实体集合
/// 用户基本信息
/// int返回受影响行数
///
/// 庄天威 2014.09.10 新建
///
public static int UpdateGroutingLine(GroutingLineEntity groutingLineEntity,
List detailList, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//修改成型线信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLine");
sbSql.Append(" set BuildingNo=:BuildingNo,");
sbSql.Append("FloorNo=:FloorNo,");
sbSql.Append("GroutingLineNo=:GroutingLineNo,");
sbSql.Append("GroutingLineCode=:GroutingLineCode,");
sbSql.Append("GroutingLineName=:GroutingLineName,");
sbSql.Append("MouldQuantity=:MouldQuantity,");
sbSql.Append("GMouldTypeID=:GMouldTypeID,");
sbSql.Append("UserID=:UserID,");
sbSql.Append("BeginUsedDate=:BeginUsedDate,");
sbSql.Append("EndUsedDate=:EndUsedDate,");
sbSql.Append("GMouldStatus=:GMouldStatus,");
sbSql.Append("Remarks=:Remarks,");
sbSql.Append("AccountID=:AccountID,");
sbSql.Append("ValueFlag=:ValueFlag,");
sbSql.Append("UpdateTime=:UpdateTime,");
sbSql.Append("UpdateUserID=:UpdateUserID");
sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp");
if (groutingLineEntity.VALUEFLAG == 0)
{
groutingLineEntity.ENDUSEDDATE = DateTime.Now;
}
else
{
groutingLineEntity.ENDUSEDDATE = null;
}
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
groutingLineEntity.FLOORNO,ParameterDirection.Input),
new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
groutingLineEntity.USERID,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
groutingLineEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":EndUsedDate",OracleDbType.Date,
groutingLineEntity.ENDUSEDDATE,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
groutingLineEntity.MouldStatus,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
groutingLineEntity.ACCOUNTID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
groutingLineEntity.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
groutingLineEntity.OPTIMESTAMP,ParameterDirection.Input)
};
//执行修改语句
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//时间戳无法匹配
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
//添加修改时新建的模具信息
foreach (GroutingLineDetailEntity detailInfo in detailList)
{
//模具明细编号唯一
if (GroutingLineDetailCodeIsRepeat(detailInfo.GROUTINGMOULDCODE, user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -2;
}
//获取模具明细索引
int detailReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//插入新增的模具信息
sbSql.Append("Insert into TP_PC_GroutingLineDetail");
sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailInfo.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailInfo.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailInfo.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
detailInfo.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
DateTime.Now,ParameterDirection.Input)
};
//执行
detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
//提交事务
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return returnRows;
}
///
/// 修改成型线明细
///
/// 成型线明细实体
/// 数据库事务
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int UpdateGroutingLineDetail(GroutingLineDetailEntity detailInfo, IDBTransaction oracleTrConn, SUserInfo user)
{
int detailReturn = 0;
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GroutingLineID =:GroutingLineID,");
sbSql.Append("GroutingMouldCode =:GroutingMouldCode,");
sbSql.Append("MouldCode=:MouldCode,");
sbSql.Append("GoodsID =:GoodsID,");
sbSql.Append("GroutingCount =:GroutingCount,");
sbSql.Append("GMouldStatus =:GMouldStatus,");
sbSql.Append("BeginUsedDate =:BeginUsedDate,");
sbSql.Append("Remarks =:Remarks,");
sbSql.Append("AccountID =:AccountID,");
sbSql.Append("ValueFlag=:ValueFlag,");
sbSql.Append("CreateTime =:CreateTime,");
sbSql.Append("CreateUserID =:CreateUserID,");
sbSql.Append("UpdateTime =:UpdateTime,");
sbSql.Append("UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailInfo.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailInfo.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailInfo.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailInfo.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
detailInfo.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
detailInfo.ACCOUNTID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
detailInfo.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
detailInfo.CREATETIME,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
detailInfo.CREATEUSERID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailInfo.GROUTINGLINEDETAILID,ParameterDirection.Input)
};
detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
return detailReturn;
}
///
/// 新建注浆模具换修履历
///
/// 换修履历实体
/// 数据库事务
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int AddMouldRecord(GMouldRecordEntity recordEntity, IDBTransaction oracleTrConn, SUserInfo user)
{
StringBuilder sbSql = new StringBuilder();
int MyReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
Id,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
recordEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
recordEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
recordEntity.MouldCode,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
recordEntity.RESUMETYPE,ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
DBNull.Value,ParameterDirection.Input),
new OracleParameter(":Rreason",OracleDbType.NVarchar2,
recordEntity.RREASON,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
recordEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input)
};
MyReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
return MyReturn;
}
///
/// 补完注浆模具换修履历的结束时间
///
/// 换修履历实体
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int UpdateMouldRecordEndTime(GMouldRecordEntity recordEntity, SUserInfo user)
{
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
StringBuilder sbSql = new StringBuilder();
int MyReturn = 0;
int MouldResumeId = 0;
//ID为倒序的第一个数据就是符合条件的
//IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
//con.Open();
oracleTrConn.Connect();
sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord where ");
sbSql.Append(" GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
recordEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
//con.Close();
//}
//catch (Exception ex)
//{
// if (con.ConnState == ConnectionState.Open)
// {
// con.Close();
// }
// throw ex;
//}
//try
//{
//oracleTrConn.Connect();
//根据获取到的ID,修改结束时间
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumeId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
MyReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
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 MyReturn;
}
///
/// 新建注浆模具履历
///
/// 履历实体
/// 数据库事务
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int AddMouldHistory(GMouldHistoryEntity historyEntity,
IDBTransaction oracleTrConn, SUserInfo user)
{
StringBuilder sbSql = new StringBuilder();
int MyReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldHistory");
sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
Id,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
historyEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
historyEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
historyEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
historyEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MOULDCODE",OracleDbType.NVarchar2,
historyEntity.MouldCode,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
historyEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
historyEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":EndUsedDate",OracleDbType.Date,
historyEntity.ENDUSEDDATE,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
historyEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input)
};
MyReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
return MyReturn;
}
///
/// 修理模具
///
/// 明细实体
/// 换修履历实体
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int RepAirDetail(GroutingLineDetailEntity detailEntity,
GMouldRecordEntity recordEntity, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//更新明细信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GroutingLineID =:GroutingLineID,");
sbSql.Append("GroutingMouldCode =:GroutingMouldCode,");
sbSql.Append("GoodsID =:GoodsID,");
sbSql.Append("GroutingCount =:GroutingCount,");
sbSql.Append("GMouldStatus =:GMouldStatus,");
sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("Remarks =:Remarks,");
sbSql.Append("AccountID =:AccountID,");
sbSql.Append("CreateTime =to_date(:CreateTime,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("CreateUserID =:CreateUserID,");
sbSql.Append("UpdateTime =to_date(:UpdateTime,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID And OPTimeStamp=:OPTimeStamp");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailEntity.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
detailEntity.BEGINUSEDDATE.ToString(),ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
detailEntity.ACCOUNTID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.NVarchar2,
detailEntity.CREATETIME.ToString(),ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
detailEntity.CREATEUSERID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.NVarchar2,
DateTime.Now.ToString(),ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
detailEntity.OPTIMESTAMP,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
//添加换修履历
int MyReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//插入换修履历信息
sbSql.Append("Insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] RParas = new OracleParameter[] {
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
Id,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
recordEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
recordEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
recordEntity.MouldCode,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
recordEntity.RESUMETYPE,ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
recordEntity.BEGINDATE,ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
DBNull.Value,ParameterDirection.Input),
new OracleParameter(":Rreason",OracleDbType.NVarchar2,
recordEntity.RREASON,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
recordEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input)
};
MyReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
//插入不成功回滚事务
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows;
}
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 returnRows;
}
///
/// 修理完成
///
/// 明细实体
/// 结束日期
/// 备注
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int RepAirDetailEnd(GroutingLineDetailEntity detailEntity, DateTime? EndTime, String Remarks, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
StringBuilder sbSql = new StringBuilder();
int MouldResumeId = 0;
try
{
//获取之前修理的履历的ID
oracleTrConn.Connect();
sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//更新明细信息
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GroutingLineID =:GroutingLineID,");
sbSql.Append("GroutingMouldCode =:GroutingMouldCode,");
sbSql.Append("GoodsID =:GoodsID,");
sbSql.Append("GroutingCount =:GroutingCount,");
sbSql.Append("GMouldStatus =:GMouldStatus,");
sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("Remarks =:Remarks,");
sbSql.Append("AccountID =:AccountID,");
sbSql.Append("CreateTime =to_date(:CreateTime,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("CreateUserID =:CreateUserID,");
sbSql.Append("UpdateTime =to_date(:UpdateTime,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
OracleParameter[] Paras1 = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailEntity.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
detailEntity.BEGINUSEDDATE.ToString(),ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
detailEntity.ACCOUNTID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.NVarchar2,
detailEntity.CREATETIME.ToString(),ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
detailEntity.CREATEUSERID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.NVarchar2,
DateTime.Now.ToString(),ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
detailEntity.OPTIMESTAMP,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras1);
//时间戳不同
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
//根据前面取得的ID更新换修履历
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(",Remarks = :Remarks");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
DateTime? RecordEndTime = accountDate;
if (EndTime != null)
{
RecordEndTime = EndTime;
}
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
RecordEndTime,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
Remarks,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumeId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows;
}
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 returnRows;
}
///
/// 更换模具(先插入模具履历以及重置次数及开始时间)
///
/// 明细实体
/// 换修履历实体
/// 履历实体
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int ChangeDetail(GroutingLineDetailEntity detailEntity, GMouldRecordEntity recordEntity, GMouldHistoryEntity historyEntity, SUserInfo user)
{
int returnRows = 0;
int UpReturn = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//更新明细信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLineDetail set ");
sbSql.Append("remarks =:remarks,");
sbSql.Append("MouldCode =:MouldCode,");
sbSql.Append("GroutingCount =:GroutingCount,");
sbSql.Append("GMouldStatus =:GMouldStatus,");
sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":remarks",OracleDbType.NVarchar2,
detailEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailEntity.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailEntity.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
detailEntity.OPTIMESTAMP,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//时间戳不匹配
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
//如果是维修转换模
if (recordEntity.RESUMETYPE == Convert.ToInt32(Constant.GMouldRecordType.RepairToReplac))
{
int MouldResumeId = 0;
//把上一条维修信息的结束时间添加上
//ID为倒序的第一个数据就是符合条件的
//IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
//try
//{
// con.Open();
sbSql.Clear();
sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord where ");
sbSql.Append(" GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] QParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
recordEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
//DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), QParas);
DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), QParas);
MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
//con.Close();
//根据获取的ID补录结束时间
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumeId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
UpReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
//}
//catch (Exception ex)
//{
// if (con.ConnState == ConnectionState.Open)
// {
// con.Close();
// }
// throw ex;
//}
}
//添加换修履历
int RecordReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] RParas = new OracleParameter[] {
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
Id,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
recordEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
recordEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
recordEntity.MouldCode,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
recordEntity.RESUMETYPE,ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
recordEntity.BEGINDATE,ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
DBNull.Value,ParameterDirection.Input),
new OracleParameter(":Rreason",OracleDbType.NVarchar2,
recordEntity.RREASON,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
recordEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input)
};
RecordReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
//添加履历
int HistoryReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
int HistoryId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldHistory");
sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
OracleParameter[] HParas = new OracleParameter[] {
new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
HistoryId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
historyEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
historyEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
historyEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
historyEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
historyEntity.MouldCode,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
historyEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
historyEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":EndUsedDate",OracleDbType.Date,
historyEntity.ENDUSEDDATE,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
historyEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input)
};
HistoryReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HParas);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows;
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
return returnRows;
}
///
/// 更换模具(只插入换修履历,并只更新成型线明细的状态)
///
/// 明细实体
/// 换修履历实体
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int ChangeDetail(GroutingLineDetailEntity detailEntity, GMouldRecordEntity recordEntity, SUserInfo user)
{
int returnRows = 0;
int UpReturn = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//更新明细信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GMouldStatus =:GMouldStatus");
sbSql.Append(" UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailEntity.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
detailEntity.OPTIMESTAMP,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
//如果是维修转换模
if (recordEntity.RESUMETYPE == Convert.ToInt32(Constant.GMouldRecordType.RepairToReplac))
{
int MouldResumeId = 0;
//把上一条维修信息的结束时间添加上
//ID为倒序的第一个数据就是符合条件的
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
sbSql.Clear();
sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord where ");
sbSql.Append(" GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] QParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
recordEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), QParas);
MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
con.Close();
//根据ID补录结束时间
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
recordEntity.BEGINDATE,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumeId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
UpReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
}
catch (Exception ex)
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
throw ex;
}
}
//添加换修履历
int RecordReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] RParas = new OracleParameter[] {
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
Id,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
recordEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
recordEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
recordEntity.MouldCode,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
recordEntity.RESUMETYPE,ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
recordEntity.BEGINDATE,ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
DBNull.Value,ParameterDirection.Input),
new OracleParameter(":Rreason",OracleDbType.NVarchar2,
recordEntity.RREASON,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
recordEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input)
};
RecordReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows;
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return returnRows;
}
///
/// 更换完成(只修改明细状态)
///
/// 明细实体
/// 结束日期
/// 备注
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int ChangeDetailEnd(GroutingLineDetailEntity detailEntity, DateTime? EndTime, String Remarks, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
StringBuilder sbSql = new StringBuilder();
int MouldResumeId = 0;
string remarks = "";
try
{
//首先获取换修履历的ID
oracleTrConn.Connect();
//sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
sbSql.Append("Select GMouldRecordID,RREASON from TP_PC_GMouldRecord");
sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
remarks = ds.Tables[0].Rows[0]["RREASON"].ToString();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//更新明细信息
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set ");
sbSql.Append("Remarks =:Remarks,");//新添加的
sbSql.Append("GMouldStatus =:GMouldStatus,");
sbSql.Append("UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
OracleParameter[] Paras1 = new OracleParameter[] {
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailEntity.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
detailEntity.OPTIMESTAMP,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,
remarks+"->"+ detailEntity.REMARKS,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras1);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
//更新换修履历的结束时间
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(",Remarks = :Remarks");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
DateTime? recordEndTime = accountDate;
if (EndTime != null)
{
recordEndTime = EndTime;
}
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
recordEndTime,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
Remarks,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumeId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows;
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return returnRows;
}
///
/// 更换完成(修改明细状态,重置模具编号,注浆次数,开始使用时间,并插入模具履历)
///
/// 明细实体
/// 模具履历实体
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.11 新建
///
public static int ChangeDetailEnd(GroutingLineDetailEntity detailEntity, GMouldHistoryEntity historyEntity, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
StringBuilder sbSql = new StringBuilder();
int MouldResumeId = 0;
try
{
//首先获取换修履历的ID
oracleTrConn.Connect();
sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//更新明细信息
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set ");
sbSql.Append("MouldCode =:MouldCode,");
sbSql.Append("GroutingCount =:GroutingCount,");
sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
OracleParameter[] Paras1 = new OracleParameter[] {
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailEntity.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailEntity.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
detailEntity.BEGINUSEDDATE.ToString("yyyy-MM-dd"),ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
detailEntity.OPTIMESTAMP,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras1);
//时间戳不匹配
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
//添加履历
int HistoryReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
int HistoryId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldHistory");
sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
OracleParameter[] HParas = new OracleParameter[] {
new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
HistoryId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
historyEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
historyEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
historyEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
historyEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
historyEntity.MouldCode,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
historyEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
historyEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":EndUsedDate",OracleDbType.Date,
historyEntity.ENDUSEDDATE,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
historyEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input)
};
HistoryReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HParas);
//更新换修履历
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumeId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows;
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return returnRows;
}
///
/// 停用成型线明细
///
/// 明细实体
/// 换修履历实体
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.12 新建
///
public static int StopDetail(GroutingLineDetailEntity detailEntity, GMouldRecordEntity recordEntity, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
//更新明细信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GroutingLineID =:GroutingLineID,");
sbSql.Append("GroutingMouldCode =:GroutingMouldCode,");
sbSql.Append("GoodsID =:GoodsID,");
sbSql.Append("GroutingCount =:GroutingCount,");
sbSql.Append("GMouldStatus =:GMouldStatus,");
sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("Remarks =:Remarks,");
sbSql.Append("AccountID =:AccountID,");
sbSql.Append("CreateTime =to_date(:CreateTime,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("CreateUserID =:CreateUserID,");
sbSql.Append("UpdateTime =to_date(:UpdateTime,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append("UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailEntity.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
detailEntity.BEGINUSEDDATE.ToString(),ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
detailEntity.ACCOUNTID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.NVarchar2,
detailEntity.CREATETIME.ToString(),ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
detailEntity.CREATEUSERID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.NVarchar2,
DateTime.Now.ToString(),ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
detailEntity.OPTIMESTAMP,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
//添加换修履历
int RecordReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] RParas = new OracleParameter[] {
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
Id,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
recordEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
recordEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
recordEntity.MouldCode,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
recordEntity.RESUMETYPE,ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
recordEntity.BEGINDATE,ParameterDirection.Input),
new OracleParameter(":EndDate",OracleDbType.Date,
DBNull.Value,ParameterDirection.Input),
new OracleParameter(":Rreason",OracleDbType.NVarchar2,
recordEntity.RREASON,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
recordEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input)
};
RecordReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return returnRows;
}
///
/// 启用成型线明细
///
///
///
///
public static int StartDetail(int GroutingLineDetailID, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
//更新明细信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GMouldStatus =1");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
GroutingLineDetailID,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
else
{
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
return returnRows;
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
}
///
/// 整线换模(插入模具履历,并更新明细的各字段(模具编号,注浆次数,开始使用日期,模具状态))
///
/// 成型线实体
/// 明细集合
/// 起始日期
/// 原因
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.12 新建
///
public static int ChangeAllLine(GroutingLineEntity groutingLineEntity, List detailList, DateTime? StartTime, String Rreason, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
if (StartTime != null)
{
accountDate = Convert.ToDateTime(StartTime);
}
//修改成型线整体状态
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLine");
sbSql.Append(" set GMouldStatus=3,");
sbSql.Append("UpdateTime=:UpdateTime,");
sbSql.Append("UpdateUserID=:UpdateUserID");
sbSql.Append(" where GroutingLineID=:GroutingLineID");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//遍历该成型线的每一个模具信息(明细)
foreach (GroutingLineDetailEntity detailEntity in detailList)
{
//判断该模具的状态
//正常或维修状态可以转为换模状态,并更新模具编号,注浆次数,开始使用日期,模具状态
if (detailEntity.MOULDSTATUS != 0) //只要不是停用的,就要进行修改
{
string newMouldCode = Guid.NewGuid().ToString();
//更新明细信息
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GMouldStatus =3,");
sbSql.Append("remarks=:remarks,");//后添加的
sbSql.Append(" GroutingCount=0,");
sbSql.Append(" BeginUsedDate = to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
sbSql.Append(" MouldCode =:MouldCode,");
sbSql.Append(" UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
OracleParameter[] DParas = new OracleParameter[] {
new OracleParameter(":remarks",OracleDbType.Varchar2,
Rreason,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
accountDate,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
Guid.NewGuid().ToString(),ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DParas);
//添加换修履历
int RecordReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
int RecordId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":GMouldRecordType,:BeginDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
string rreasonStr = "整线换模";
if (Rreason != "")
{
rreasonStr = Rreason;
}
OracleParameter[] RParas = new OracleParameter[] {
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
RecordId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailEntity.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
4,ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Rreason",OracleDbType.NVarchar2,
rreasonStr,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
String.Empty,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
};
RecordReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
//如果是正常换模或维修转换模,要进行模具履历的添加,如果最开始先换了,那么就不添加这条履历。
if (detailEntity.MOULDSTATUS != 2)
{
int HistoryReturn = 0;
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
int HistoryId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldHistory");
sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
OracleParameter[] HParas = new OracleParameter[] {
new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
HistoryId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailEntity.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":EndUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input)
};
HistoryReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HParas);
}
//把之前的换修履历的结束时间添加上。
int MouldResumdId = 0;
if (detailEntity.MOULDSTATUS != 1) //如果是维修或者换模状态,那么之前会有一条履历,正常状态则没有
{
//ID为倒序的第一个数据就是符合条件的
sbSql.Clear();
sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord where ");
sbSql.Append(" GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] TParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), TParas);
MouldResumdId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumdId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
int UpdateTimeReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
}
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return returnRows;
}
///
/// 整线换模完毕(更新明细状态即可)
///
/// 成型线实体
/// 明细集合
/// 结束日期
/// 备注
/// 用户信息
/// int受影响行数
///
/// 庄天威 2014.09.12 新建
///
public static int ChangeAllLineEnd(GroutingLineEntity groutingLineEntity, List detailList, DateTime? endTime, string remarks, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
int MouldResumeId = 0;
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
if (endTime != null)
{
accountDate = Convert.ToDateTime(endTime);
}
//修改成型线整体状态
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLine");
sbSql.Append(" set GMouldStatus=1,");
sbSql.Append("UpdateTime=:UpdateTime,");
sbSql.Append("UpdateUserID=:UpdateUserID");
sbSql.Append(" where GroutingLineID=:GroutingLineID");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
string remark2 = "";
if (detailList.Count > 0)
{
string sql = "select remarks from TP_PC_GroutingLineDetail where GroutingLineDetailID=" + detailList[0].GROUTINGLINEDETAILID;
DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
remark2 = ds.Tables[0].Rows[0]["remarks"].ToString();
}
}
//将该成型线所属模具的状态改为正常
foreach (GroutingLineDetailEntity detailEntity in detailList)
{
if (detailEntity.MOULDSTATUS != 0) //停用的略过
{
//更新明细信息
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GMouldStatus =:GMouldStatus,");
sbSql.Append("remarks =:remarks,");//后添加的
sbSql.Append("UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
OracleParameter[] DParas = new OracleParameter[] {
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
1,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":remarks",OracleDbType.Varchar2,
remark2+"->"+remarks,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DParas);
//更新换修履历
//首先查询到该模具的最新换修履历
sbSql.Clear();
sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] SParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), SParas);
if (ds.Tables[0].Rows.Count > 0)
{
MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
}
if (MouldResumeId != 0)
{
//把结束时间添加上
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(",Remarks = :Remarks");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
remarks,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumeId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
}
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn.ConnState == ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return returnRows;
}
///
/// 判断成型线编号是否存在
///
/// 成型线编码
/// 帐套ID
/// bool是否可插入数据
///
/// 庄天威 2014.09.12 新建
///
private static bool GroutingLineCodeIsRepeat(string GroutingLineCode, int AccountID)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
StringBuilder sbSql = new StringBuilder();
try
{
con.Open();
sbSql.Append("Select GroutingLineID from TP_PC_GroutingLine");
sbSql.Append(" where AccountId=:AccountId and GroutingLineCode=:GroutingLineCode");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
GroutingLineCode,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
AccountID,ParameterDirection.Input)
};
DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), Paras);
con.Close();
if (ds.Tables[0].Rows.Count > 0)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 判断成型线编号是否存在(外用)
///
/// 成型线编码
/// 用户基本信息
/// bool是否可插入数据
///
/// 庄天威 2014.09.12 新建
///
public static bool GroutingLineCodeIsRepeat(string GroutingLineCode, SUserInfo user)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
StringBuilder sbSql = new StringBuilder();
try
{
con.Open();
sbSql.Append("Select GroutingLineID from TP_PC_GroutingLine");
sbSql.Append(" where AccountId=:AccountId and GroutingLineCode=:GroutingLineCode");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
GroutingLineCode,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), Paras);
con.Close();
if (ds.Tables[0].Rows.Count > 0)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 判断成型线明细编号是否存在
///
/// 成型线明细编码
/// 帐套ID
/// bool是否可插入数据
///
/// 庄天威 2014.09.12 新建
///
private static bool GroutingLineDetailCodeIsRepeat(string GroutingLineDetailCode, int AccountID)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
StringBuilder sbSql = new StringBuilder();
try
{
con.Open();
sbSql.Append("Select GroutingLineDetailID from TP_PC_GroutingLineDetail gld");
sbSql.Append(" inner join TP_PC_GroutingLine gl on gld.GroutingLineID = gl.GroutingLineID");
sbSql.Append(" where gld.AccountId=:AccountId and gld.GroutingMouldCode=:GroutingMouldCode and gld.valueflag = '1' and gl.valueflag='1'");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
GroutingLineDetailCode,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
AccountID,ParameterDirection.Input)
};
DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), Paras);
con.Close();
if (ds.Tables[0].Rows.Count > 0)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
///
/// 成性线变产
///
/// 成型线实体
/// 明细集合
/// 用户基本信息
/// int受影响行数
///
/// 庄天威 2014.09.12 新建
///
public static int UpdateLine(GroutingLineEntity groutingLineEntity, List detailList, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//修改成型线整体状态(4为变产)
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLine");
sbSql.Append(" set GMouldStatus=4,");
sbSql.Append("UpdateTime=:UpdateTime,");
sbSql.Append("UpdateUserID=:UpdateUserID");
sbSql.Append(" where GroutingLineID=:GroutingLineID");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//遍历该成型线的每一个模具信息(明细)
foreach (GroutingLineDetailEntity detailEntity in detailList)
{
//更新成性线明细的各模具状态
if (detailEntity.MOULDSTATUS != 0) //只要不是停用的,就要进行修改
{
//更新明细信息
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set GMouldStatus =4,");
// modify wangx 2015/06/23 新添加
sbSql.Append(" Remarks =:Remarks,");
// modify wangx 2015/06/23 新添加 end
sbSql.Append(" UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
OracleParameter[] DParas = new OracleParameter[] {
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DParas);
//插入变产履历
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":GMouldRecordType,:BeginDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] GRParas = new OracleParameter[] {
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
Id,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailEntity.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
Constant.GMouldRecordType.Update,ParameterDirection.Input),
new OracleParameter(":BeginDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Rreason",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input)
};
oracleTrConn.ExecuteNonQuery(sbSql.ToString(), GRParas);
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return returnRows;
}
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();
}
}
}
///
/// 成型线变产完毕
///
/// 成型线实体
/// 成型线明细集合
/// 新模具生产产品ID
/// 当前用户
/// 影响行数
public static int UpdateLineEnd(GroutingLineEntity groutingLineEntity, List detailList, int detailNewGoodsId, SUserInfo user)
{
int returnRows = 0;
int detailReturn = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//变产成功后,首先停用原成性线及其明细
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLine");
sbSql.Append(" set ValueFlag=0,");
//sbSql.Append("UpdateTime=:UpdateTime,");
sbSql.Append("UpdateUserID=:UpdateUserID");
sbSql.Append(" where GroutingLineID=:GroutingLineID");
OracleParameter[] Paras = new OracleParameter[] {
//new OracleParameter(":UpdateTime",OracleDbType.Date,
// DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
// 查明细变产备注 modify wangx 20150623
string remarks = "";
if (detailList.Count > 0)
{
string sql = "select remarks from TP_PC_GroutingLineDetail where GroutingLineDetailID=" + detailList[0].GROUTINGLINEDETAILID;
DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
remarks = ds.Tables[0].Rows[0]["remarks"].ToString();
}
}
// 查明细变产备注 modify wangx 20150623 end
// 遍历该成型线的每一个模具信息(明细),修改为停用状态
foreach (GroutingLineDetailEntity detailEntity in detailList)
{
// 更新成性线明细的各模具状态
//if (detailEntity.MOULDSTATUS != 0) //只要不是停用的,就要进行修改
{
// 更新明细信息
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail");
sbSql.Append(" set ValueFlag=0,");
sbSql.Append(" UpdateUserID =:UpdateUserID");
sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
OracleParameter[] DParas = new OracleParameter[] {
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DParas);
}
}
//新建一条成性线,继承停用的成性线的一切属性,状态与是否停用均为正常属性。
//获取成型线ID索引
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
int newLineId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append(@"Insert into TP_PC_GroutingLine
(GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,GroutingLineName,MouldQuantity,GMouldTypeID,
UserID,BeginUsedDate,GMouldStatus,Remarks,AccountID,CreateUserID,UpdateUserID)
Select :NewGroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,GroutingLineName,MouldQuantity,GMouldTypeID,
UserID,:BeginUsedDate,1,Remarks,AccountID,:CreateUserID,:UpdateUserID from TP_PC_GroutingLine
Where GroutingLineID = :GroutingLineID");
OracleParameter[] AParas = new OracleParameter[] {
new OracleParameter(":NewGroutingLineID",OracleDbType.Int32,
newLineId,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input)
};
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), AParas);
//根据新成性线ID插入该成型线明细,
foreach (GroutingLineDetailEntity detailEntity in detailList)
{
//获取成型线明细索引
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//插入成型线明细信息
string NewMouldCode = Guid.NewGuid().ToString();
sbSql.Append("Insert into TP_PC_GroutingLineDetail");
sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
newLineId,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
NewMouldCode,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailNewGoodsId,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
0,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
1,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
//new OracleParameter(":Remarks",OracleDbType.NVarchar2,
// detailEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
remarks+"->"+ groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
1,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
DateTime.Now,ParameterDirection.Input)
};
//执行插入语句并累加成功插入次数
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
//补全变产履历
//首先查询到该模具的最新换修履历
sbSql.Clear();
sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
OracleParameter[] SParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":AccountId",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
int MouldResumeId = 0;
DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), SParas);
if (ds.Tables[0].Rows.Count > 0)
{
MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
}
if (MouldResumeId != 0)
{
//把结束时间以及变产后信息添加上
sbSql.Clear();
sbSql.Append("update TP_PC_GMouldRecord");
sbSql.Append(" set ENDDATE = :ENDDATE");
sbSql.Append(",ChangedGoodsID = :ChangedGoodsID");
sbSql.Append(",ChangedMouldCode = :ChangedMouldCode");
sbSql.Append(",Remarks = :Remarks");
sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
OracleParameter[] UpParas = new OracleParameter[] {
new OracleParameter(":ENDDATE",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":ChangedGoodsID",OracleDbType.Int32,
detailNewGoodsId,ParameterDirection.Input),
new OracleParameter(":ChangedMouldCode",OracleDbType.NVarchar2,
NewMouldCode,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
MouldResumeId,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input)
};
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
}
//插入换模履历
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
int HistoryId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GMouldHistory");
sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
OracleParameter[] HParas = new OracleParameter[] {
new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
HistoryId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
detailEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailEntity.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailEntity.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":EndUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input)
};
oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HParas);
}
//复制该线的所有范围权限,并移交到新线上,老线的权限全部删除
sbSql.Clear();
sbSql.Append(@" Insert into TP_MST_UserPurview (UserID,PurviewID,PurviewType,CreateUserID)
Select UserID,:PurviewID,PurviewType,:CreateUserID from TP_MST_UserPurview
Where PurviewID = :OldPurviewID and PurviewType in (5,6)");
OracleParameter[] UPParas = new OracleParameter[] {
new OracleParameter(":PurviewID",OracleDbType.Int32,
newLineId,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OldPurviewID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input)
};
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UPParas);
sbSql.Clear();
// 只删除操作权限
//sbSql.Append(@" Delete from TP_MST_UserPurview Where PurviewID = :OldPurviewID and PurviewType in (5,6)");
sbSql.Append(@" Delete from TP_MST_UserPurview Where PurviewID = :OldPurviewID and PurviewType = 6");
OracleParameter[] DPParas = new OracleParameter[] {
new OracleParameter(":OldPurviewID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input)
};
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DPParas);
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return newLineId;
}
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();
}
}
}
#endregion
#region 更新生产线信息
///
/// 更新生产线
///
/// 生产线实体
/// 用户基本信息
///
public static int UpdateProductionLine(ProductionLineEntity productionLine, SUserInfo sUserInfo)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string sqlText = " SELECT ProductionLineID "
+ " FROM TP_PC_ProductionLine "
+ " WHERE "
+ " AccountID=:accountID "
+ " AND ProductionLineCode=:productionLineCode"
+ " AND ProductionLineID <> :productionLineID";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":accountID",sUserInfo.AccountID),
new OracleParameter(":productionLineCode",productionLine.ProductionLineCode),
new OracleParameter(":productionLineID",productionLine.ProductionLineID),
};
string returnCode = oracleTrConn.GetSqlResultToStr(sqlText, paras);
if (!string.IsNullOrEmpty(returnCode))
{
return Constant.RETURN_IS_EXIST;//-3
}
#region 编辑生产线
sqlText = "UPDATE TP_PC_ProductionLine SET "
+ "ProductionLineName=:productionLineName,"
+ "ProductionLineCode=:productionLineCode,"
+ "Remarks=:remarks,"
+ "ValueFlag=:valueflag,"
+ "UpdateTime=sysdate, "
+ "UpdateUserID=:updateUserID "
+ " WHERE ProductionLineID=:productionLineID";
paras = new OracleParameter[]
{
new OracleParameter(":productionLineName",productionLine.ProductionLineName),
new OracleParameter(":productionLineCode",productionLine.ProductionLineCode),
new OracleParameter(":remarks",productionLine.Remarks),
new OracleParameter(":valueflag",productionLine.ValueFlags[0]),
new OracleParameter(":updateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
new OracleParameter(":productionLineID", OracleDbType.Int32, productionLine.ProductionLineID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
#endregion
oracleTrConn.Commit();
}
catch (Exception ex)
{
oracleTrConn.Rollback();
throw ex;
}
finally
{
// 释放资源
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return returnRows;
}
#endregion
#region 成型线配置 20150916
///
/// 更改成型线状态
///
///
///
///
///
public static int SaveGroutingLineValueFlag(int GroutingLineID, int ValueFlag, SUserInfo sUserInfo)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 查询新插入的生产数据ID
string sqlText = "";
if (ValueFlag == 0)
{
sqlText = "update TP_PC_GroutingLine set GMouldStatus=:ValueFlag,updateUserID=:updateUserID,EndUsedDate=trunc(sysdate) where GroutingLineID=:GroutingLineID and GMouldStatus = 1";
}
else
{
sqlText = "update TP_PC_GroutingLine set GMouldStatus=:ValueFlag,updateUserID=:updateUserID,EndUsedDate=null where GroutingLineID=:GroutingLineID and GMouldStatus = 0";
}
OracleParameter[] parmeters1 = new OracleParameter[]
{
new OracleParameter(":GroutingLineID",OracleDbType.Int32,GroutingLineID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,ValueFlag,ParameterDirection.Input),
new OracleParameter(":updateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
};
returnRows = oracleTrConn.ExecuteNonQuery(sqlText, parmeters1);
oracleTrConn.Commit();
oracleTrConn.Disconnect();
return returnRows;
}
catch (Exception ex)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
throw ex;
}
finally
{
// 释放资源
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
}
///
/// 新建成型线信息
///
/// 成型线实体
/// 明细实体集合
/// 用户基本信息
/// 返回受影响行数
///
/// 庄天威 2014.09.10 新建
///
public static int AddGroutingLine_New(GroutingLineEntity groutingLineEntity,
List detailList, List detailUserList, SUserInfo user)
{
int returnRows = 0;
int detailReturn = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
if (GroutingLineCodeIsRepeat(groutingLineEntity.GROUTINGLINECODE, user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -50;
}
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//获取成型线ID索引
StringBuilder sbSql = new StringBuilder();
sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//添加成型线信息
sbSql.Append("Insert into TP_PC_GroutingLine");
sbSql.Append("(GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,");
sbSql.Append("GroutingLineName,MouldQuantity,GMouldTypeID,UserID,");
sbSql.Append("BeginUsedDate,GMouldStatus,Remarks,AccountID,ValueFlag,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp,UserCount)");
sbSql.Append("values(:GroutingLineID,:BuildingNo,:FloorNo,:GroutingLineNo,:GroutingLineCode,");
sbSql.Append(":GroutingLineName,:MouldQuantity,:GMouldTypeID,:UserID,");
sbSql.Append(":BeginUsedDate,:GMouldStatus,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp,:UserCount)");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
groutingLineEntity.FLOORNO,ParameterDirection.Input),
new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
groutingLineEntity.USERID,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
groutingLineEntity.MouldStatus,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
groutingLineEntity.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UserCount",OracleDbType.Int32,
detailUserList.Count,ParameterDirection.Input),
};
//执行插入成型线SQL语句
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//此处添加明细信息(循环)
foreach (GroutingLineDetailEntity detailInfo in detailList)
{
//查看该成型线明细编号是否存在
if (GroutingLineDetailCodeIsRepeat(detailInfo.GROUTINGMOULDCODE, user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -2;
}
//获取成型线明细索引
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//插入成型线明细信息
sbSql.Append("Insert into TP_PC_GroutingLineDetail");
sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailInfo.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailInfo.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailInfo.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
detailInfo.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
DateTime.Now,ParameterDirection.Input)
};
//执行插入语句并累加成功插入次数
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
// 添加成型工号
foreach (GroutingLineUserEntity detailInfo in detailUserList)
{
//插入成型线明细信息
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GroutingUser");
sbSql.Append("(GroutingLineID,UserID,Remarks)");
sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
detailInfo.USERID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo.REMARK,ParameterDirection.Input),
};
//执行插入语句并累加成功插入次数
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
//如果有插入不成功的情况,回滚事务,否则提交
if (returnRows == 0 || detailReturn == 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 returnRows;
}
///
/// 修改成型线信息
///
/// 成型线实体
/// 明细实体集合
/// 用户基本信息
/// int返回受影响行数
///
/// 庄天威 2014.09.10 新建
///
public static int UpdateGroutingLine_New(GroutingLineEntity groutingLineEntity,
List detailList, List detailUserList, List UpdatedetailList, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//修改成型线信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLine");
sbSql.Append(" set BuildingNo=:BuildingNo,");
sbSql.Append("FloorNo=:FloorNo,");
sbSql.Append("GroutingLineNo=:GroutingLineNo,");
sbSql.Append("GroutingLineCode=:GroutingLineCode,");
sbSql.Append("GroutingLineName=:GroutingLineName,");
sbSql.Append("MouldQuantity=:MouldQuantity,");
sbSql.Append("GMouldTypeID=:GMouldTypeID,");
sbSql.Append("UserID=:UserID,");
sbSql.Append("BeginUsedDate=:BeginUsedDate,");
sbSql.Append("EndUsedDate=:EndUsedDate,");
sbSql.Append("GMouldStatus=:GMouldStatus,");
sbSql.Append("Remarks=:Remarks,");
sbSql.Append("AccountID=:AccountID,");
//sbSql.Append("ValueFlag=:ValueFlag,");
sbSql.Append("UpdateTime=:UpdateTime,");
sbSql.Append("UpdateUserID=:UpdateUserID,");
sbSql.Append("UserCount=:UserCount");
sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp");
if (groutingLineEntity.VALUEFLAG == 0)
{
groutingLineEntity.ENDUSEDDATE = DateTime.Now;
}
else
{
groutingLineEntity.ENDUSEDDATE = null;
}
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
groutingLineEntity.FLOORNO,ParameterDirection.Input),
new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
groutingLineEntity.USERID,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
groutingLineEntity.BEGINUSEDDATE,ParameterDirection.Input),
new OracleParameter(":EndUsedDate",OracleDbType.Date,
groutingLineEntity.ENDUSEDDATE,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
groutingLineEntity.MouldStatus,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
groutingLineEntity.ACCOUNTID,ParameterDirection.Input),
//new OracleParameter(":ValueFlag",OracleDbType.Int32,
// groutingLineEntity.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
groutingLineEntity.OPTIMESTAMP,ParameterDirection.Input),
new OracleParameter(":UserCount",OracleDbType.Int32,
detailUserList.Count,ParameterDirection.Input),
};
//执行修改语句
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//时间戳无法匹配
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -500;
}
int detailReturn = 0;
//添加修改时新建的模具信息
foreach (GroutingLineDetailEntity detailInfo in UpdatedetailList)
{
sbSql.Clear();
sbSql.Append("Update TP_PC_GroutingLineDetail set Remarks=:Remarks,UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailInfo.GROUTINGLINEDETAILID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo.REMARKS,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
};
//执行
detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
//添加修改时新建的模具信息
foreach (GroutingLineDetailEntity detailInfo in detailList)
{
//模具明细编号唯一
if (GroutingLineDetailCodeIsRepeat(detailInfo.GROUTINGMOULDCODE, user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return -2;
}
//获取模具明细索引
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//插入新增的模具信息
sbSql.Append("Insert into TP_PC_GroutingLineDetail");
sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailInfo.MOULDCODE,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailInfo.GOODSID,ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailInfo.MOULDSTATUS,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":ValueFlag",OracleDbType.Int32,
detailInfo.VALUEFLAG,ParameterDirection.Input),
new OracleParameter(":CreateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
DateTime.Now,ParameterDirection.Input)
};
//执行
detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
string sqlDelete = "delete from TP_PC_GroutingUser where GroutingLineID=" + groutingLineEntity.GROUTINGLINEID.ToString();
detailReturn += oracleTrConn.ExecuteNonQuery(sqlDelete);
// 添加成型工号
foreach (GroutingLineUserEntity detailInfo in detailUserList)
{
sbSql.Clear();
//插入成型线明细信息
sbSql.Append("Insert into TP_PC_GroutingUser");
sbSql.Append("(GroutingLineID,UserID,Remarks)");
sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
detailInfo.USERID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo.REMARK,ParameterDirection.Input),
};
//执行插入语句并累加成功插入次数
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
//提交事务
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 returnRows;
}
#endregion
///
/// 停用成型线明细
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static int StopGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
int GMouldRecordID = 0;
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows = -500;
}
}
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
sbSql.Clear();
// 1.插入变更履历
sbSql.Append("insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,");
sbSql.Append("Remarks,AccountID,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
sbSql.Append(")");
sbSql.Append("select :GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append(":GMouldRecordType,trunc(sysdate),");
sbSql.Append(":Remarks,:AccountID,sysdate,");
sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
Paras = new OracleParameter[] {
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
0,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//2.更新成型线模具状态
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=0,LastGMouldRecordID=:LastGMouldRecordID, ");
sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
}
//更新明细信息
if (isError)
{
returnRows = -500;
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 returnRows;
}
///
/// 启用成型线明细
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static int StartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
//// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows = -500;
}
}
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
//1查出注浆明细最后变更履历ID,进行更新
sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
};
DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
int? LastGMouldRecordID = null;
if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
{
LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
}
sbSql.Clear();
sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID where GMouldRecordID=:GMouldRecordID");
Paras = new OracleParameter[] {
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
LastGMouldRecordID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//2.更新成型线模具状态
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=1,EndUsedDate=null,");
sbSql.Append("UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=0");
Paras = new OracleParameter[] {
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
}
//更新明细信息
if (isError)
{
returnRows = -500;
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 returnRows;
}
///
/// 维修开始
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static int RepairStartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
int GMouldRecordID = 0;
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows = -500;
}
}
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
sbSql.Clear();
// 1.插入变更履历
sbSql.Append("insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,");
sbSql.Append("Remarks,AccountID,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
sbSql.Append(")");
sbSql.Append("select :GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append(":GMouldRecordType,trunc(sysdate),");
sbSql.Append(":Remarks,:AccountID,sysdate,");
sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
Paras = new OracleParameter[] {
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
1,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//2.更新成型线模具状态
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=2,LastGMouldRecordID=:LastGMouldRecordID, ");
//sbSql.Append("UpdateUserID=:UpdateUserID,BeginUsedDate=trunc(sysdate),EndUsedDate=null where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=null where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:mouldid\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,-3 OPERATIONTYPE\n" +
" ,m.GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,m.mouldstatus\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,'0' CHANGEFLAG\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :mouldid";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.RepairFlag = '1'\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
//更新明细信息
if (isError)
{
returnRows = -500;
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 returnRows;
}
///
/// 维修结束
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static int RepairEndGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows = -500;
}
}
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
//1查出注浆明细最后变更履历ID,进行更新
sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
};
DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
int? LastGMouldRecordID = null;
if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
{
LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
}
sbSql.Clear();
sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID where GMouldRecordID=:GMouldRecordID");
Paras = new OracleParameter[] {
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
LastGMouldRecordID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//2.更新成型线模具状态
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=1,");
sbSql.Append("UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=2");
Paras = new OracleParameter[] {
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:mouldid\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,-4 OPERATIONTYPE\n" +
" ,m.GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,m.mouldstatus\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,'0' CHANGEFLAG\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :mouldid";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.RepairFlag = '0'\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
//更新明细信息
if (isError)
{
returnRows = -500;
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 returnRows;
}
///
/// 换模开始
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static int ChangeGMouldStartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
int GMouldRecordID = 0;
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows = -500;
}
}
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
sbSql.Clear();
// 1.插入变更履历
sbSql.Append("insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,");
sbSql.Append("Remarks,AccountID,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
sbSql.Append(")");
sbSql.Append("select :GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append(":GMouldRecordType,trunc(sysdate),");
sbSql.Append(":Remarks,:AccountID,sysdate,");
sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
Paras = new OracleParameter[] {
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
3,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//2.更新成型线模具状态
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=3,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, ");
sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
//object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
//if (mOutputNo != null && mOutputNo != DBNull.Value)
//{
// string sql = "UPDATE tp_pc_mouldoutput m\n" +
// " SET m.GroutingLineDetailID = null\n" +
// " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
// OracleParameter[] oparas = new OracleParameter[]
// {
// new OracleParameter(":OutputNo", OracleDbType.Int32,
// mOutputNo, ParameterDirection.Input),
// new OracleParameter(":mouldid", OracleDbType.Int32,
// mID, ParameterDirection.Input),
// };
// row += oracleTrConn.ExecuteNonQuery(sql, oparas);
//}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = null\n" +
" WHERE m.mouldid = :mouldid\n";
//" and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
//new OracleParameter(":OutputNo", OracleDbType.Int32,
// mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
};
row += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ScrapReason\n" +
" ,ScrapResponsibility\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:MouldID\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
" ,m.GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,:mouldstatus\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
" ,:ScrapReason\n" +
" ,:ScrapResponsibility\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :MouldID";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
new OracleParameter(":ScrapReason", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = null\n" +
" ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
" ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
" ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
" ,m.ScrapReason = :ScrapReason\n" +
" ,m.ScrapResponsibility = :ScrapResponsibility\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
new OracleParameter(":ScrapReason", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":usercode", OracleDbType.NVarchar2,
user.UserCode, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
//更新明细信息
if (isError)
{
returnRows = -500;
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 returnRows;
}
///
/// 换模结束
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static ServiceResultEntity ChangeGMouldEndGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
{
ServiceResultEntity sre = new ServiceResultEntity();
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 验证模具条码
DataRow[] moulds = dtGroutingLineDetail.Select("MouldID is not null");
if (moulds != null && moulds.Length > 0)
{
List ids = new List();
foreach (DataRow item in moulds)
{
string id = item["MouldID"].ToString();
if (!ids.Contains(id))
{
ids.Add(id);
}
}
string idswhere = string.Join(",", ids);
string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
oracleTrConn.GetSqlResultToDt(sql);
sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
if (dt != null && dt.Rows.Count > 0)
{
ids.Clear();
foreach (DataRow item in dt.Rows)
{
ids.Add(item["mouldbarcode"].ToString());
}
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -100;
sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
+ string.Join(",", ids);
return sre;
}
}
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -500;
return sre;
}
}
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
int? GroutingLineDetailID = null;
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set valueflag='0', UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and valueflag = '1' and GMouldStatus=3");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
//1查出注浆明细最后变更履历ID,进行更新
sbSql.Clear();
sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
};
DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
int? LastGMouldRecordID = null;
if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
{
LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
}
// 插入新明细
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
GroutingLineDetailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
dtGroutingLineDetail.Rows[i]["MouldSource"] = "0";
dtGroutingLineDetail.Rows[i]["MouldCode"] = System.Guid.NewGuid().ToString();
}
object groutingCount = dtGroutingLineDetail.Rows[i]["GroutingCount"];
//string guid = System.Guid.NewGuid().ToString();
sbSql.Clear();
sbSql.Append("insert into TP_PC_GroutingLineDetail");
sbSql.Append("(");
sbSql.Append("GroutingLineDetailID");
sbSql.Append(",GroutingLineID");
sbSql.Append(",GroutingMouldCode");
sbSql.Append(",MouldSource");
sbSql.Append(",MouldID");
sbSql.Append(",MouldCode");
sbSql.Append(",MouldOutputNo");
sbSql.Append(",GoodsID");
sbSql.Append(",StandardGroutingCount");
sbSql.Append(",GroutingCount");
sbSql.Append(",GMouldStatus");
sbSql.Append(",BeginUsedDate");
sbSql.Append(",EndUsedDate");
sbSql.Append(",LastGMouldRecordID");
sbSql.Append(",Remarks");
sbSql.Append(",AccountID");
sbSql.Append(",ValueFlag");
sbSql.Append(",CreateUserID");
sbSql.Append(",UpdateUserID");
sbSql.Append(") ");
//sbSql.Append("select");
sbSql.Append("Values (");
sbSql.Append(" :GroutingLineDetailIDNew");
sbSql.Append(",:GroutingLineID");
sbSql.Append(",:GroutingMouldCode");
sbSql.Append(",:MouldSource");
sbSql.Append(",:MouldID");
sbSql.Append(",:MouldCode");
sbSql.Append(",:MouldOutputNo");
sbSql.Append(",:GoodsID");
sbSql.Append(",:StandardGroutingCount");
sbSql.Append(",:GroutingCount");
sbSql.Append(",1");
sbSql.Append(",trunc(sysdate)");
sbSql.Append(",null");
sbSql.Append(",:LastGMouldRecordID");
sbSql.Append(",:Remarks");
sbSql.Append(",:AccountID");
sbSql.Append(",1");
sbSql.Append(",:CreateUserID");
sbSql.Append(",:UpdateUserID");
sbSql.Append(" )");
//sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailIDNew",OracleDbType.Int32,
GroutingLineDetailID,ParameterDirection.Input),
//new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
// dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineID"],ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":MouldSource",OracleDbType.Char,
dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
new OracleParameter(":MouldID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["RreasonRemarks"],ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Int32,
((groutingCount == null || groutingCount == DBNull.Value) ? 0 : groutingCount),ParameterDirection.Input),
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
//dtGroutingLineDetail.Rows[i]["LastGMouldRecordID"],ParameterDirection.Input),
LastGMouldRecordID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
sbSql.Clear();
sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID,ChangedMouldCode=:ChangedMouldCode, ChangedDetailID=:GroutingLineDetailID where GMouldRecordID=:GMouldRecordID");
Paras = new OracleParameter[] {
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
LastGMouldRecordID,ParameterDirection.Input),
new OracleParameter(":ChangedMouldCode",OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
GroutingLineDetailID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value)
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
new OracleParameter(":OutputNo", OracleDbType.Int32,
mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:mouldid\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
" ,:GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,2\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :mouldid";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
(int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
// 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
string sqlUpdate ="update TP_PC_GROUTINGLINE l " +
" set l.beginuseddate =" +
" (select min(ld.beginuseddate)" +
" from TP_PC_GROUTINGLINEDETAIL ld" +
" where ld.groutinglineid = l.groutinglineid" +
" and ld.valueflag = '1')" +
" where l.groutinglineid = " + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
oracleTrConn.ExecuteNonQuery(sqlUpdate, null);
//更新明细信息
if (isError)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -500;
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;
}
///
/// 变产开始
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static int UpdateLineStartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
int GMouldRecordID = 0;
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows = -500;
}
}
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
sbSql.Clear();
// 1.插入变更履历
sbSql.Append("insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,");
sbSql.Append("Remarks,AccountID,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
sbSql.Append(")");
sbSql.Append("select :GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append(":GMouldRecordType,trunc(sysdate),");
sbSql.Append(":Remarks,:AccountID,sysdate,");
sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
Paras = new OracleParameter[] {
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
5,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//2.更新成型线模具状态
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=4,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, ");
sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
//object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
//if (mOutputNo != null && mOutputNo != DBNull.Value)
//{
// string sql = "UPDATE tp_pc_mouldoutput m\n" +
// " SET m.GroutingLineDetailID = null\n" +
// " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
// OracleParameter[] oparas = new OracleParameter[]
// {
// new OracleParameter(":OutputNo", OracleDbType.Int32,
// mOutputNo, ParameterDirection.Input),
// new OracleParameter(":mouldid", OracleDbType.Int32,
// mID, ParameterDirection.Input),
// };
// row += oracleTrConn.ExecuteNonQuery(sql, oparas);
//}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = null\n" +
" WHERE m.mouldid = :mouldid\n";
//" and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
//new OracleParameter(":OutputNo", OracleDbType.Int32,
// mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
};
row += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ScrapReason\n" +
" ,ScrapResponsibility\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:MouldID\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
" ,m.GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,:mouldstatus\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
" ,:ScrapReason\n" +
" ,:ScrapResponsibility\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :MouldID";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
new OracleParameter(":ScrapReason", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = null\n" +
" ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
" ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
" ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
" ,m.ScrapReason = :ScrapReason\n" +
" ,m.ScrapResponsibility = :ScrapResponsibility\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
new OracleParameter(":ScrapReason", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":usercode", OracleDbType.NVarchar2,
user.UserCode, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
//更新明细信息
if (isError)
{
returnRows = -500;
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 returnRows;
}
///
/// 变产结束
///
/// 明细实体
/// 变产产品ID
/// 用户基本信息
/// int受影响行数
///
///
///
public static ServiceResultEntity UpdateLineEndGroutingLineDetail(DataTable dtGroutingLineDetail, int goodsID, SUserInfo user)
{
ServiceResultEntity sre = new ServiceResultEntity();
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 验证模具条码
DataRow[] moulds = dtGroutingLineDetail.Select("MouldID is not null");
if (moulds != null && moulds.Length > 0)
{
List ids = new List();
foreach (DataRow item in moulds)
{
string id = item["MouldID"].ToString();
if (!ids.Contains(id))
{
ids.Add(id);
}
}
string idswhere = string.Join(",", ids);
string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
oracleTrConn.GetSqlResultToDt(sql);
sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
if (dt != null && dt.Rows.Count > 0)
{
ids.Clear();
foreach (DataRow item in dt.Rows)
{
ids.Add(item["mouldbarcode"].ToString());
}
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -100;
sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
+ string.Join(",", ids);
return sre;
}
}
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -500;
return sre;
}
}
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
int? GroutingLineDetailID = null;
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set valueflag='0', UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and valueflag='1' and GMouldStatus=4");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
//1查出注浆明细最后变更履历ID,进行更新
sbSql.Clear();
sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
};
DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
int? LastGMouldRecordID = null;
if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
{
LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
}
// 插入新明细
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
GroutingLineDetailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
if (dtGroutingLineDetail.Rows[i]["MouldCode"] + "" == "")
{
dtGroutingLineDetail.Rows[i]["MouldCode"] = System.Guid.NewGuid().ToString();
}
//string guid = System.Guid.NewGuid().ToString();
sbSql.Clear();
sbSql.Append("insert into TP_PC_GroutingLineDetail");
sbSql.Append("(");
sbSql.Append("GroutingLineDetailID");
sbSql.Append(",GroutingLineID");
sbSql.Append(",GroutingMouldCode");
sbSql.Append(",MouldSource");
sbSql.Append(",MouldID");
sbSql.Append(",MouldCode");
sbSql.Append(",MouldOutputNo");
sbSql.Append(",GoodsID");
sbSql.Append(",StandardGroutingCount");
sbSql.Append(",GroutingCount");
sbSql.Append(",GMouldStatus");
sbSql.Append(",BeginUsedDate");
sbSql.Append(",EndUsedDate");
sbSql.Append(",LastGMouldRecordID");
sbSql.Append(",Remarks");
sbSql.Append(",AccountID");
sbSql.Append(",ValueFlag");
sbSql.Append(",CreateUserID");
sbSql.Append(",UpdateUserID");
sbSql.Append(") ");
//sbSql.Append("select");
sbSql.Append("Values (");
sbSql.Append(" :GroutingLineDetailIDNew");
sbSql.Append(",:GroutingLineID");
sbSql.Append(",:GroutingMouldCode");
sbSql.Append(",:MouldSource");
sbSql.Append(",:MouldID");
sbSql.Append(",:MouldCode");
sbSql.Append(",:MouldOutputNo");
sbSql.Append(",:GoodsID");
sbSql.Append(",:StandardGroutingCount");
sbSql.Append(",:GroutingCount");
sbSql.Append(",1");
sbSql.Append(",trunc(sysdate)");
sbSql.Append(",null");
sbSql.Append(",:LastGMouldRecordID");
sbSql.Append(",:Remarks");
sbSql.Append(",:AccountID");
sbSql.Append(",1");
sbSql.Append(",:CreateUserID");
sbSql.Append(",:UpdateUserID");
sbSql.Append(" )");
//sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailIDNew",OracleDbType.Int32,
GroutingLineDetailID,ParameterDirection.Input),
//new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
// dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineID"],ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
//new OracleParameter(":GoodsID",OracleDbType.Int32,
// goodsID,ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":MouldSource",OracleDbType.Char,
dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
new OracleParameter(":MouldID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["RREASONRemarks"],ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingCount"],ParameterDirection.Input),
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
//dtGroutingLineDetail.Rows[i]["LastGMouldRecordID"],ParameterDirection.Input),
LastGMouldRecordID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
sbSql.Clear();
sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID,ChangedMouldCode=:ChangedMouldCode,ChangedGoodsID=:GoodsID,ChangedDetailID=:GroutingLineDetailID where GMouldRecordID=:GMouldRecordID");
Paras = new OracleParameter[] {
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
LastGMouldRecordID,ParameterDirection.Input),
new OracleParameter(":ChangedMouldCode",OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
GroutingLineDetailID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value)
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
new OracleParameter(":OutputNo", OracleDbType.Int32,
mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:mouldid\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
" ,:GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,2\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :mouldid";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
(int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
// 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
string sqlUpdate = "update TP_PC_GROUTINGLINE l " +
" set l.beginuseddate =" +
" (select min(ld.beginuseddate)" +
" from TP_PC_GROUTINGLINEDETAIL ld" +
" where ld.groutinglineid = l.groutinglineid" +
" and ld.valueflag = '1')" +
" where l.groutinglineid = " + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
oracleTrConn.ExecuteNonQuery(sqlUpdate, null);
//更新明细信息
if (isError)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -500;
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;
}
///
/// 整线变产开始
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static int UpdateAllLineStartGroutingLineDetail(DataTable dtGroutingLineDetail,
int groutingLineID, DateTime lineOPTimeStamp, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
int GMouldRecordID = 0;
bool isError = false;
// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + ",GMouldStatus=4 where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + ",GMouldStatus=4,ENDUSEDDATE=trunc(sysdate) where GroutingLineID=" + groutingLineID + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
lineOPTimeStamp,ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows = -500;
}
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
sbSql.Clear();
// 1.插入变更履历
sbSql.Append("insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,");
sbSql.Append("Remarks,AccountID,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
sbSql.Append(")");
sbSql.Append(" values (:GMouldRecordID,");
sbSql.Append(":GroutingLineID,null,null,");
sbSql.Append("null,null,null,");
sbSql.Append(":GMouldRecordType,trunc(sysdate),");
sbSql.Append(":Remarks,:AccountID,sysdate,");
sbSql.Append(":CreateUserID,sysdate,:UpdateUserID)");
// sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineID=:GroutingLineID ");
Paras = new OracleParameter[] {
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
6,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
(dtGroutingLineDetail.Rows.Count > 0 ? dtGroutingLineDetail.Rows[0]["RecordRemarks"].ToString() : "[整线变产]")
,ParameterDirection.Input),//0没有写i,是因为整体变产,只在第一行添加了操作备注
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
//2.更新成型线模具状态
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=4,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, ");
sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus in (0,1)");
Paras = new OracleParameter[] {
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
//object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
//if (mOutputNo != null && mOutputNo != DBNull.Value)
//{
// string sql = "UPDATE tp_pc_mouldoutput m\n" +
// " SET m.GroutingLineDetailID = null\n" +
// " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
// OracleParameter[] oparas = new OracleParameter[]
// {
// new OracleParameter(":OutputNo", OracleDbType.Int32,
// mOutputNo, ParameterDirection.Input),
// new OracleParameter(":mouldid", OracleDbType.Int32,
// mID, ParameterDirection.Input),
// };
// row += oracleTrConn.ExecuteNonQuery(sql, oparas);
//}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = null\n" +
" WHERE m.mouldid = :mouldid\n";
//" and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
//new OracleParameter(":OutputNo", OracleDbType.Int32,
// mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
};
row += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ScrapReason\n" +
" ,ScrapResponsibility\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:MouldID\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
" ,m.GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,:mouldstatus\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
" ,:ScrapReason\n" +
" ,:ScrapResponsibility\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :MouldID";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
new OracleParameter(":ScrapReason", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = null\n" +
" ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
" ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
" ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
" ,m.ScrapReason = :ScrapReason\n" +
" ,m.ScrapResponsibility = :ScrapResponsibility\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
new OracleParameter(":ScrapReason", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":usercode", OracleDbType.NVarchar2,
user.UserCode, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
//更新明细信息
if (isError)
{
returnRows = -500;
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;
}
return returnRows;
}
///
/// 整线变产结束
///
/// 明细实体
/// 变产产品ID
/// 用户基本信息
/// int受影响行数
///
///
///
public static ServiceResultEntity UpdateAllLineEndGroutingLineDetail(DataTable dtGroutingLineDetail,
DataTable oldDetail, int groutingLineID, DateTime lineOPTimeStamp, SUserInfo user)
{
ServiceResultEntity sre = new ServiceResultEntity();
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
int MouldQuantity = 0;
if (dtGroutingLineDetail != null)
{
MouldQuantity = dtGroutingLineDetail.Rows.Count;
// 验证模具条码
DataRow[] moulds = dtGroutingLineDetail.Select("MouldID is not null");
if (moulds != null && moulds.Length > 0)
{
List ids = new List();
foreach (DataRow item in moulds)
{
string id = item["MouldID"].ToString();
if (!ids.Contains(id))
{
ids.Add(id);
}
}
string idswhere = string.Join(",", ids);
string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
oracleTrConn.GetSqlResultToDt(sql);
sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
if (dt != null && dt.Rows.Count > 0)
{
ids.Clear();
foreach (DataRow item in dt.Rows)
{
ids.Add(item["mouldbarcode"].ToString());
}
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -100;
sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
+ string.Join(",", ids);
return sre;
}
}
}
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
bool isError = false;
//DataRow[] drMouldQuantity = dtGroutingLineDetail.Select("NewFlag=1");
//if(drMouldQuantity.Length>0)
//{
// MouldQuantity = drMouldQuantity.Length;
//}
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + ",GMouldStatus=1,ENDUSEDDATE=null, MouldQuantity= " + MouldQuantity + " where GroutingLineID=" + groutingLineID + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=4");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
lineOPTimeStamp,ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -500;
return sre;
}
//for (int i = 0; i < oldDetail.Rows.Count; i++)
//{
// sbSql.Clear();
// sbSql.Append("update TP_PC_GroutingLineDetail set valueflag=0, UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID");
// Paras = new OracleParameter[] {
// new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
// oldDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
// new OracleParameter(":UpdateUserID",OracleDbType.Int32,
// user.UserID,ParameterDirection.Input)
// };
// returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//}
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set valueflag='0', UpdateUserID=:UpdateUserID where GroutingLineID=:GroutingLineID and valueflag='1' and GMouldStatus=4");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input)
};
row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
// 无模具明细,结束变产
//if (row == 0)
//{
// oracleTrConn.Rollback();
// oracleTrConn.Disconnect();
// sre.Status = Constant.ServiceResultStatus.Other;
// sre.OtherStatus = -500;
// return sre;
//}
//1查出注浆明细最后变更履历ID,进行更新
sbSql.Clear();
sbSql.Append("select nvl(max(GMouldRecordID),0) as LastGMouldRecordID from TP_PC_GMouldRecord where GroutingLineID=:GroutingLineID and GroutingLineDetailID is null");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineID,ParameterDirection.Input)
};
DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
int? LastGMouldRecordID = null;
if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
{
LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
}
sbSql.Clear();
sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID where GMouldRecordID=:GMouldRecordID");
Paras = new OracleParameter[] {
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
//"[结束整线变产]"
((dtGroutingLineDetail != null && dtGroutingLineDetail.Rows.Count > 0) ? dtGroutingLineDetail.Rows[0]["RecordRemarks"].ToString() : "[结束整线变产]")
,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
LastGMouldRecordID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
int? GroutingLineDetailID = null;
if (dtGroutingLineDetail != null)
{
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
// 插入新明细
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
GroutingLineDetailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
if (dtGroutingLineDetail.Rows[i]["MouldCode"] + "" == "")
{
dtGroutingLineDetail.Rows[i]["MouldCode"] = System.Guid.NewGuid().ToString();
}
//string guid = System.Guid.NewGuid().ToString();
sbSql.Clear();
sbSql.Append("insert into TP_PC_GroutingLineDetail");
sbSql.Append("(");
sbSql.Append("GroutingLineDetailID");
sbSql.Append(",GroutingLineID");
sbSql.Append(",GroutingMouldCode");
sbSql.Append(",MouldSource");
sbSql.Append(",MouldID");
sbSql.Append(",MouldCode");
sbSql.Append(",MouldOutputNo");
sbSql.Append(",GoodsID");
sbSql.Append(",StandardGroutingCount");
sbSql.Append(",GroutingCount");
sbSql.Append(",GMouldStatus");
sbSql.Append(",BeginUsedDate");
sbSql.Append(",EndUsedDate");
sbSql.Append(",LastGMouldRecordID");
sbSql.Append(",Remarks");
sbSql.Append(",AccountID");
sbSql.Append(",ValueFlag");
sbSql.Append(",CreateUserID");
sbSql.Append(",UpdateUserID");
sbSql.Append(") ");
sbSql.Append("values(");
sbSql.Append(" :GroutingLineDetailID");
sbSql.Append(",:GroutingLineID");
sbSql.Append(",:GroutingMouldCode");
sbSql.Append(",:MouldSource");
sbSql.Append(",:MouldID");
sbSql.Append(",:MouldCode");
sbSql.Append(",:MouldOutputNo");
sbSql.Append(",:GoodsID");
sbSql.Append(",:StandardGroutingCount");
sbSql.Append(",:GroutingCount");
sbSql.Append(",1");
sbSql.Append(",trunc(sysdate)");
sbSql.Append(",null");
sbSql.Append(",:LastGMouldRecordID");
sbSql.Append(",:Remarks");
sbSql.Append(",:AccountID");
sbSql.Append(",1");
sbSql.Append(",:CreateUserID");
sbSql.Append(",:UpdateUserID");
sbSql.Append(" )");
Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
GroutingLineDetailID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
new OracleParameter(":MouldSource",OracleDbType.Char,
dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
new OracleParameter(":MouldID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingCount"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["Remarks"],ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
LastGMouldRecordID,ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value)
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
new OracleParameter(":OutputNo", OracleDbType.Int32,
mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:mouldid\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
" ,:GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,2\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :mouldid";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
(int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
GroutingLineDetailID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
}
// 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
string sqlupdate = "update TP_PC_GROUTINGLINE l " +
" set l.beginuseddate =" +
" nvl((select min(ld.beginuseddate)" +
" from TP_PC_GROUTINGLINEDETAIL ld" +
" where ld.groutinglineid = l.groutinglineid" +
" and ld.valueflag = '1'), l.beginuseddate)" +
" where l.groutinglineid = " + groutingLineID;
oracleTrConn.ExecuteNonQuery(sqlupdate, null);
//更新明细信息
if (isError)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -500;
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;
}
///
/// 卸模
///
/// 明细实体
/// 用户基本信息
/// int受影响行数
///
///
///
public static int UnloadGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
{
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
OracleParameter[] Paras = null;
StringBuilder sbSql = new StringBuilder();
int GMouldRecordID = 0;
bool isError = false;
if (dtGroutingLineDetail.Rows.Count > 0)
{
// 更新成型线UpdateUserID
//sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
// 更新成型线UpdateUserID
sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
};
//oracleTrConn.ExecuteNonQuery(sbSql.ToString());
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
return returnRows = -500;
}
}
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
{
sbSql.Clear();
sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
// 1.插入变更履历
sbSql.Append("insert into TP_PC_GMouldRecord");
sbSql.Append("(GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append("GMouldRecordType,BeginDate,EndDate,");
sbSql.Append("Remarks,AccountID,CreateTime,");
sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
sbSql.Append(")");
sbSql.Append("select :GMouldRecordID,");
sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
sbSql.Append(":GMouldRecordType,trunc(sysdate),trunc(sysdate),");
sbSql.Append(":Remarks,:AccountID,sysdate,");
sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
Paras = new OracleParameter[] {
new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
7,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input)
};
returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//2.更新成型线模具状态
sbSql.Clear();
sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=6,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, Valueflag = '0', ");
sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
Paras = new OracleParameter[] {
new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
GMouldRecordID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
};
int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
if (row == 0)
{
isError = true; //即更新了,也可以用这个判断时间戳
break;
}
returnRows += row;
// 非条码模具
if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
//object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
//if (mOutputNo != null && mOutputNo != DBNull.Value)
//{
// string sql = "UPDATE tp_pc_mouldoutput m\n" +
// " SET m.GroutingLineDetailID = null\n" +
// " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
// OracleParameter[] oparas = new OracleParameter[]
// {
// new OracleParameter(":OutputNo", OracleDbType.Int32,
// mOutputNo, ParameterDirection.Input),
// new OracleParameter(":mouldid", OracleDbType.Int32,
// mID, ParameterDirection.Input),
// };
// row += oracleTrConn.ExecuteNonQuery(sql, oparas);
//}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = null\n" +
" WHERE m.mouldid = :mouldid\n";
//" and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
//new OracleParameter(":OutputNo", OracleDbType.Int32,
// mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
};
row += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ScrapReason\n" +
" ,ScrapResponsibility\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:MouldID\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
" ,m.GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,:mouldstatus\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
" ,:ScrapReason\n" +
" ,:ScrapResponsibility\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :MouldID";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
new OracleParameter(":ScrapReason", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = null\n" +
" ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
" ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
" ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
" ,m.ScrapReason = :ScrapReason\n" +
" ,m.ScrapResponsibility = :ScrapResponsibility\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
new OracleParameter(":ScrapReason", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":usercode", OracleDbType.NVarchar2,
user.UserCode, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
//更新明细信息
if (isError)
{
returnRows = -500;
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
else
{
// 更新成型线模具个数
string sqlupdate = "update TP_PC_GroutingLine set MouldQuantity = MouldQuantity - "
+ dtGroutingLineDetail.Rows.Count
+ " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
returnRows = oracleTrConn.ExecuteNonQuery(sqlupdate);
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 returnRows;
}
///
/// 新建成型线信息
///
/// 成型线实体
/// 明细实体集合
/// 用户基本信息
/// 返回受影响行数
///
/// 庄天威 2014.09.10 新建
///
public static ServiceResultEntity AddGroutingLine_NewLine(GroutingLineEntity groutingLineEntity,
DataTable detailList, DataTable detailUserList, SUserInfo user)
{
ServiceResultEntity sre = new ServiceResultEntity();
int returnRows = 0;
int detailReturn = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
if (GroutingLineCodeIsRepeat(groutingLineEntity.GROUTINGLINECODE, user.AccountID) == false)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -50;
return sre;
}
oracleTrConn.Connect();
// 验证模具条码
DataRow[] moulds = detailList.Select("MouldID is not null");
if (moulds != null && moulds.Length > 0)
{
List ids = new List();
foreach (DataRow item in moulds)
{
ids.Add(item["MouldID"].ToString());
}
string idswhere = string.Join(",", ids);
string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
oracleTrConn.GetSqlResultToDt(sql);
sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
if (dt != null && dt.Rows.Count > 0)
{
ids.Clear();
foreach (DataRow item in dt.Rows)
{
ids.Add(item["mouldbarcode"].ToString());
}
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -100;
sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
+ string.Join(",", ids);
return sre;
}
}
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//获取成型线ID索引
StringBuilder sbSql = new StringBuilder();
sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//添加成型线信息
sbSql.Append("Insert into TP_PC_GroutingLine");
sbSql.Append("(GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,");
//xuwei add 2019-11-13 高压注浆
sbSql.Append("HighPressureFlag,");
//xuwei end
sbSql.Append("GroutingLineName,MouldQuantity,GMouldTypeID,UserID,MonitorID,");
sbSql.Append("BeginUsedDate,GMouldStatus,Remarks,AccountID,");
sbSql.Append("CreateUserID,UpdateUserID,UserCount)");
sbSql.Append("values(:GroutingLineID,:BuildingNo,:FloorNo,:GroutingLineNo,:GroutingLineCode,");
//xuwei add 2019-11-13 高压注浆
sbSql.Append(":HighPressureFlag,");
//xuwei end
sbSql.Append(":GroutingLineName,:MouldQuantity,:GMouldTypeID,:UserID,:MonitorID,");
sbSql.Append(":BeginUsedDate,:GMouldStatus,:Remarks,:AccountID,");
sbSql.Append(":CreateUserID,:UpdateUserID,:UserCount)");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
groutingLineEntity.FLOORNO,ParameterDirection.Input),
new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
//xuwei add 2019-11-13 高压注浆
new OracleParameter(":HighPressureFlag",OracleDbType.Char,
groutingLineEntity.HIGHPRESSUREFLAG,ParameterDirection.Input),
//xuwei end
new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
groutingLineEntity.USERID,ParameterDirection.Input),
new OracleParameter(":MonitorID",OracleDbType.Int32,
groutingLineEntity.MonitorID,ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
groutingLineEntity.MouldStatus,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UserCount",OracleDbType.Int32,
detailUserList.Rows.Count,ParameterDirection.Input),
};
//执行插入成型线SQL语句
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
//此处添加明细信息(循环)
foreach (DataRow detailInfo in detailList.Rows)
{
//查看该成型线明细编号是否存在
if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -2;
return sre;
}
//获取成型线明细索引
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//插入成型线明细信息
sbSql.Append("Insert into TP_PC_GroutingLineDetail");
sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,GroutingCount,StandardGroutingCount,");
sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
sbSql.Append("CreateUserID,UpdateUserID)");
sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:GroutingCount,:StandardGroutingCount,");
sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,");
sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
sbSql.Append(":CreateUserID,:UpdateUserID)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailInfo["GOODSID"],ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Int32,
detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
detailInfo["StandardGroutingCount"],ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
detailInfo["MOULDSTATUS"],ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo["REMARKS"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":MouldSource",OracleDbType.Char,
detailInfo["MouldSource"],ParameterDirection.Input),
new OracleParameter(":MouldID",OracleDbType.Int32,
detailInfo["MouldID"],ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailInfo["MouldCode"],ParameterDirection.Input),
new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
detailInfo["MouldOutputNo"],ParameterDirection.Input),
};
//执行插入语句并累加成功插入次数
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
// 非条码模具
if (detailInfo["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(detailInfo["MouldID"]);
object mOutputNo = detailInfo["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value)
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
new OracleParameter(":OutputNo", OracleDbType.Int32,
mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailId, ParameterDirection.Input),
};
detailReturn += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:mouldid\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
" ,:GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,2\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :mouldid";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailId, ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
detailInfo["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
detailInfo["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
detailInfo["Remarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
(int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
detailInfo["MouldID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailId, ParameterDirection.Input),
};
detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
// 添加成型工号
foreach (DataRow detailInfo in detailUserList.Rows)
{
//插入成型线明细信息
sbSql.Clear();
sbSql.Append("Insert into TP_PC_GroutingUser");
sbSql.Append("(GroutingLineID,UserID,Remarks)");
sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
id,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
detailInfo["USERID"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo["REMARK"],ParameterDirection.Input),
};
//执行插入语句并累加成功插入次数
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
//如果有插入不成功的情况,回滚事务,否则提交
if (returnRows == 0 || detailReturn == 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;
}
///
/// 修改成型线信息
///
/// 成型线实体
/// 明细实体集合
/// 用户基本信息
/// int返回受影响行数
///
/// 庄天威 2014.09.10 新建
///
public static ServiceResultEntity UpdateGroutingLine_NewLine(GroutingLineEntity groutingLineEntity,
DataTable detailList, DataTable detailUserList, DataTable UpdatedetailList, SUserInfo user)
{
ServiceResultEntity sre = new ServiceResultEntity();
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//修改成型线信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLine SET ");
sbSql.Append("MouldQuantity=:MouldQuantity,");
sbSql.Append("GMouldTypeID=:GMouldTypeID,");
sbSql.Append("UserID=:UserID,");
sbSql.Append("MonitorID=:MonitorID,");
//xuwei add 2019-11-13 高压注浆
sbSql.Append("HighPressureFlag=:HighPressureFlag,");
//xuwei end
sbSql.Append("Remarks=:Remarks,");
sbSql.Append("AccountID=:AccountID,");
sbSql.Append("ValueFlag=:ValueFlag2,");
sbSql.Append("UpdateTime=:UpdateTime,");
sbSql.Append("UpdateUserID=:UpdateUserID,");
sbSql.Append("UserCount=:UserCount");
sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
if (groutingLineEntity.VALUEFLAG == 0)
{
groutingLineEntity.ENDUSEDDATE = DateTime.Now;
}
else
{
groutingLineEntity.ENDUSEDDATE = null;
}
int MouldQuantity_temp = 0;
if (detailList != null)
{
// 验证模具条码
DataRow[] moulds = detailList.Select("MouldID is not null");
if (moulds != null && moulds.Length > 0)
{
List ids = new List();
foreach (DataRow item in moulds)
{
string id = item["MouldID"].ToString();
if (!ids.Contains(id))
{
ids.Add(id);
}
}
string idswhere = string.Join(",", ids);
string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
oracleTrConn.GetSqlResultToDt(sql);
sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
if (dt != null && dt.Rows.Count > 0)
{
ids.Clear();
foreach (DataRow item in dt.Rows)
{
ids.Add(item["mouldbarcode"].ToString());
}
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -100;
sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
+ string.Join(",", ids);
return sre;
}
}
MouldQuantity_temp = detailList.Rows.Count;
}
if (UpdatedetailList != null)
{
MouldQuantity_temp += UpdatedetailList.Rows.Count;
}
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
MouldQuantity_temp,ParameterDirection.Input),
new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
//Convert.ToInt32(detailUserList.Rows[0]["userid"]),ParameterDirection.Input),
groutingLineEntity.USERID,ParameterDirection.Input),
new OracleParameter(":MonitorID",OracleDbType.Int32,
groutingLineEntity.MonitorID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
groutingLineEntity.REMARKS,ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
groutingLineEntity.ACCOUNTID,ParameterDirection.Input),
new OracleParameter(":ValueFlag2",OracleDbType.Char,
groutingLineEntity.ValueFlag2,ParameterDirection.Input),
//xuwei add 2019-11-13 高压注浆
new OracleParameter(":HighPressureFlag",OracleDbType.Char,
groutingLineEntity.HIGHPRESSUREFLAG,ParameterDirection.Input),
//xuwei end
new OracleParameter(":UpdateTime",OracleDbType.Date,
DateTime.Now,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
groutingLineEntity.OPTIMESTAMP,ParameterDirection.Input),
new OracleParameter(":UserCount",OracleDbType.Int32,
detailUserList.Rows.Count,ParameterDirection.Input),
};
//执行修改语句
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//时间戳无法匹配
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -500;
return sre;
}
int detailReturn = 0;
if (UpdatedetailList != null)
{
//添加修改时新建的模具信息
foreach (DataRow detailInfo in UpdatedetailList.Rows)
{
sbSql.Clear();
sbSql.Append("Update TP_PC_GroutingLineDetail set Remarks=:Remarks,UpdateUserID=:UpdateUserID,StandardGroutingCount=:StandardGroutingCount where GroutingLineDetailID=:GroutingLineDetailID");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailInfo["GROUTINGLINEDETAILID"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo["REMARKS"],ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
detailInfo["StandardGroutingCount"],ParameterDirection.Input),
};
//执行
detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
}
if (detailList != null)
{
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
//添加修改时新建的模具信息
foreach (DataRow detailInfo in detailList.Rows)
{
//模具明细编号唯一
if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -2;
return sre;
}
//获取模具明细索引
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
sbSql.Clear();
//插入新增的模具信息
sbSql.Append("Insert into TP_PC_GroutingLineDetail");
sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,StandardGroutingCount,GroutingCount,");
sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
sbSql.Append("CreateUserID,UpdateUserID)");
sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:StandardGroutingCount,:GroutingCount,");
sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,");
sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
sbSql.Append(":CreateUserID,:UpdateUserID)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailId,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailInfo["GOODSID"],ParameterDirection.Input),
new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
detailInfo["StandardGroutingCount"],ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
1, ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo["REMARKS"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":MouldSource",OracleDbType.Char,
detailInfo["MouldSource"],ParameterDirection.Input),
new OracleParameter(":MouldID",OracleDbType.Int32,
detailInfo["MouldID"],ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailInfo["MouldCode"],ParameterDirection.Input),
new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
detailInfo["MouldOutputNo"],ParameterDirection.Input),
};
//执行
detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
// 非条码模具
if (detailInfo["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(detailInfo["MouldID"]);
object mOutputNo = detailInfo["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value)
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
new OracleParameter(":OutputNo", OracleDbType.Int32,
mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailId, ParameterDirection.Input),
};
detailReturn += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:mouldid\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
" ,:GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,2\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :mouldid";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailId, ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
detailInfo["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
detailInfo["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
detailInfo["Remarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
(int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
detailInfo["MouldID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailId, ParameterDirection.Input),
};
detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
}
if (groutingLineEntity.GROUTINGLINEIDS == null)
{
string sqlDelete = "delete from TP_PC_GroutingUser where GroutingLineID=" + groutingLineEntity.GROUTINGLINEID.ToString();
detailReturn += oracleTrConn.ExecuteNonQuery(sqlDelete);
// 添加成型工号
foreach (DataRow detailInfo in detailUserList.Rows)
{
sbSql.Clear();
//插入成型线明细信息
sbSql.Append("Insert into TP_PC_GroutingUser");
sbSql.Append("(GroutingLineID,UserID,Remarks)");
sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
new OracleParameter(":UserID",OracleDbType.Int32,
detailInfo["USERID"],ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo["REMARK"],ParameterDirection.Input),
};
//执行插入语句并累加成功插入次数
detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
}
}
// 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
string sqlLine = "update TP_PC_GROUTINGLINE l " +
" set l.beginuseddate =" +
" nvl((select min(ld.beginuseddate)" +
" from TP_PC_GROUTINGLINEDETAIL ld" +
" where ld.groutinglineid = l.groutinglineid" +
" and ld.valueflag = '1'),l.beginuseddate)" +
" where l.groutinglineid = " + groutingLineEntity.GROUTINGLINEID;
oracleTrConn.ExecuteNonQuery(sqlLine, null);
//提交事务
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
return sre;
}
///
/// 上模
///
public static ServiceResultEntity UpdateGroutingLine_AddMould(int groutingLineID, string groutingLineCode, DateTime lineTimeStamp,
DataTable detailList, SUserInfo user)
{
ServiceResultEntity sre = new ServiceResultEntity();
int returnRows = 0;
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
oracleTrConn.Connect();
if (detailList != null)
{
// 验证模具条码
DataRow[] moulds = detailList.Select("MouldID is not null and GroutingLineDetailID = 0");
if (moulds != null && moulds.Length > 0)
{
List ids = new List();
foreach (DataRow item in moulds)
{
//ids.Add(item["MouldID"].ToString());
string id = item["MouldID"].ToString();
if (!ids.Contains(id))
{
ids.Add(id);
}
}
string idswhere = string.Join(",", ids);
string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
oracleTrConn.GetSqlResultToDt(sql);
sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
if (dt != null && dt.Rows.Count > 0)
{
ids.Clear();
foreach (DataRow item in dt.Rows)
{
ids.Add(item["mouldbarcode"].ToString());
}
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -100;
sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
+ string.Join(",", ids);
return sre;
}
}
}
//修改成型线信息
StringBuilder sbSql = new StringBuilder();
sbSql.Append("update TP_PC_GroutingLine SET ");
sbSql.Append("MouldQuantity=MouldQuantity+:MouldQuantity,");
sbSql.Append("UpdateUserID=:UpdateUserID");
sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp");
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
(detailList == null ? 0 : detailList.Rows.Count), ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineID,ParameterDirection.Input),
new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
lineTimeStamp,ParameterDirection.Input),
};
//执行修改语句
returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
//时间戳无法匹配
if (returnRows == 0)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -500;
return sre;
}
int detailReturn = 0;
if (detailList != null && detailList.Rows.Count > 0)
{
// 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
List mouldIDs = new List();
// 获得账务日期
DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
//添加修改时新建的模具信息
foreach (DataRow detailInfo in detailList.Rows)
{
int detailID = Convert.ToInt32(detailInfo["GroutingLineDetailID"]);
// 编辑
if (detailID > 0)
{
sbSql.Clear();
sbSql.Append("Update TP_PC_GroutingLineDetail set Remarks=:Remarks,UpdateUserID=:UpdateUserID,StandardGroutingCount=:StandardGroutingCount where GroutingLineDetailID=:GroutingLineDetailID");
OracleParameter[] DetailUpdateParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailID,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo["REMARKS"],ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
detailInfo["StandardGroutingCount"],ParameterDirection.Input),
};
//执行
detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailUpdateParas);
continue;
}
//模具明细编号唯一
if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -2;
sre.Message = "成型模具号【" + detailInfo["GROUTINGMOULDCODE"] + "】已存在,请确认。";
return sre;
}
//获取模具明细索引
sbSql.Clear();
sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
detailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
if (detailInfo["MouldID"] + "" == "" && detailInfo["MouldCode"] + "" == "")
{
detailInfo["MouldCode"] = System.Guid.NewGuid().ToString();
}
sbSql.Clear();
//插入新增的模具信息
sbSql.Append("Insert into TP_PC_GroutingLineDetail");
sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,StandardGroutingCount,GroutingCount,");
sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
sbSql.Append("CreateUserID,UpdateUserID)");
sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:StandardGroutingCount,:GroutingCount,");
sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,");
sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
sbSql.Append(":CreateUserID,:UpdateUserID)");
OracleParameter[] DetailParas = new OracleParameter[] {
new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
detailID,ParameterDirection.Input),
new OracleParameter(":GroutingLineID",OracleDbType.Int32,
groutingLineID,ParameterDirection.Input),
new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
new OracleParameter(":GoodsID",OracleDbType.Int32,
detailInfo["GOODSID"],ParameterDirection.Input),
new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
detailInfo["StandardGroutingCount"],ParameterDirection.Input),
new OracleParameter(":GroutingCount",OracleDbType.Decimal,
detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
new OracleParameter(":GMouldStatus",OracleDbType.Int32,
1, ParameterDirection.Input),
new OracleParameter(":BeginUsedDate",OracleDbType.Date,
accountDate,ParameterDirection.Input),
new OracleParameter(":Remarks",OracleDbType.NVarchar2,
detailInfo["REMARKS"],ParameterDirection.Input),
new OracleParameter(":AccountID",OracleDbType.Int32,
user.AccountID,ParameterDirection.Input),
new OracleParameter(":CreateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":UpdateUserID",OracleDbType.Int32,
user.UserID,ParameterDirection.Input),
new OracleParameter(":MouldSource",OracleDbType.Char,
detailInfo["MouldSource"],ParameterDirection.Input),
new OracleParameter(":MouldID",OracleDbType.Int32,
detailInfo["MouldID"],ParameterDirection.Input),
new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
detailInfo["MouldCode"],ParameterDirection.Input),
new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
detailInfo["MouldOutputNo"],ParameterDirection.Input),
};
//执行
detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
// 非条码模具
if (detailInfo["MouldID"] + "" == "")
{
continue;
}
// 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
int mID = Convert.ToInt32(detailInfo["MouldID"]);
object mOutputNo = detailInfo["MouldOutputNo"];
if (mOutputNo != null && mOutputNo != DBNull.Value)
{
string sql = "UPDATE tp_pc_mouldoutput m\n" +
" SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
OracleParameter[] oparas = new OracleParameter[]
{
new OracleParameter(":OutputNo", OracleDbType.Int32,
mOutputNo, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
mID, ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailID, ParameterDirection.Input),
};
returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
}
if (mouldIDs.Contains(mID))
{
continue;
}
mouldIDs.Add(mID);
// 添加模具履历
int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
string sqlString =
"INSERT INTO tp_pc_mouldchangehistory\n" +
" (CHANGEID\n" +
" ,MOULDID\n" +
" ,MOULDCODE\n" +
" ,MOULDBARCODE\n" +
" ,GOODSID\n" +
" ,GOODSCODE\n" +
" ,OPERATIONTYPE\n" +
" ,GroutingLineDetailID\n" +
" ,MOULDSTATUS\n" +
" ,MOULDSTATUSAFTER\n" +
" ,GROUTINGNUM\n" +
" ,REMARKS\n" +
" ,CHANGEFLAG\n" +
" ,ACCOUNTID\n" +
" ,CREATEUSERID)\n" +
" SELECT :changeID\n" +
" ,:mouldid\n" +
" ,:MOULDCODE\n" +
" ,m.mouldbarcode\n" +
" ,m.goodsid\n" +
" ,m.goodscode\n" +
" ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
" ,:GroutingLineDetailID\n" +
" ,m.mouldstatus\n" +
" ,2\n" +
" ,m.groutingnum\n" +
" ,:REMARKS\n" +
" ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
" ,:ACCOUNTID\n" +
" ,:USERID\n" +
" FROM tp_pc_mould m\n" +
" WHERE m.mouldid = :mouldid";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailID, ParameterDirection.Input),
new OracleParameter(":changeID", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":MouldID", OracleDbType.Int32,
detailInfo["MouldID"], ParameterDirection.Input),
new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
detailInfo["MOULDCODE"], ParameterDirection.Input),
new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
detailInfo["Remarks"], ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
user.AccountID, ParameterDirection.Input),
new OracleParameter(":USERID", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
};
detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
// 修改模具状态
sqlString = "UPDATE tp_pc_mould m\n" +
" SET m.premouldstatus = m.mouldstatus\n" +
" ,m.mouldstatus = :mouldstatus\n" +
" ,m.updateuserid = :userid\n" +
" ,m.lastchangehistoryid = :changeid\n" +
" ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
" WHERE m.mouldid = :mouldid";
paras = new OracleParameter[]
{
new OracleParameter(":mouldstatus", OracleDbType.Int32,
(int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
new OracleParameter(":changeid", OracleDbType.Int32,
mouldHistoryID, ParameterDirection.Input),
new OracleParameter(":userid", OracleDbType.Int32,
user.UserID, ParameterDirection.Input),
new OracleParameter(":mouldid", OracleDbType.Int32,
detailInfo["MouldID"], ParameterDirection.Input),
new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
detailID, ParameterDirection.Input),
};
detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
}
}
// 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
string sqlLine = "update TP_PC_GROUTINGLINE l " +
" set l.beginuseddate =" +
" nvl((select min(ld.beginuseddate)" +
" from TP_PC_GROUTINGLINEDETAIL ld" +
" where ld.groutinglineid = l.groutinglineid" +
" and ld.valueflag = '1'),l.beginuseddate)" +
" where l.groutinglineid = " + groutingLineID;
oracleTrConn.ExecuteNonQuery(sqlLine, null);
//提交事务
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
return sre;
}
}
}