/*******************************************************************************
* Copyright(c) 2019 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:PDAModuleLogicWorkShop3.cs
* 2.功能描述:PDA相关处理(三车间专用)。
* 编辑履历:
* 作者 日期 版本 修改内容
* 徐伟 2019/11/05 1.00 新建
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Text;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.Basics.DataAccess;
using Dongke.IBOSS.PRD.Basics.Library;
using Dongke.IBOSS.PRD.Service.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels.HRModule;
using Dongke.IBOSS.PRD.WCF.DataModels.PCModule;
using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
using Oracle.ManagedDataAccess.Client;
using Newtonsoft.Json.Linq;
using Dongke.IBOSS.PRD.Service.CMNModuleService;
using Dongke.IBOSS.PRD.Service.PMModuleService;
using System.Collections;
using System.Linq;
namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
{
///
/// 三车间专用接口
///
public partial class PDAModuleLogic
{
#region xuwei add 2019-10-28 三车间接口
///
/// 用于方法互调,并且附加返回结果
///
/// 原SRE
/// 添加SRE
public static void AddServiceResultEntity(ServiceResultEntity sre, ServiceResultEntity addSre)
{
for (int i = 0; i < addSre.Data.Tables.Count; i++)
sre.Data.Tables.Add(addSre.Data.Tables[i].Copy());
sre.Status = addSre.Status;
sre.Message = addSre.Message;
}
///
/// 替换成型线的当前生产工号 查询方法 ok
///
///
///
///
public static ServiceResultEntity GetGroutingLineUserCode(string groutingLineCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//检查成型线是否存在
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
l.GROUTINGLINECODE, -- AS 成型线编码,
c.USERCODE -- AS 用户编码
FROM
TP_PC_GROUTINGLINE l
LEFT JOIN TP_MST_USER c ON l.USERID = c.USERID
WHERE
l.VALUEFLAG = '1'
AND l.ACCOUNTID = {sUser.AccountID}
AND l.GROUTINGLINECODE = '{groutingLineCode}'
";
DataTable groutingLine = conn.GetSqlResultToDt(sqlStr);
groutingLine.TableName = "GroutingLine";
sre.Data.Tables.Add(groutingLine);
if (groutingLine.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
//检查成型线是否包含当前登录的成型工号
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
l.GROUTINGLINECODE, -- AS 成型线编码,
c.USERCODE -- AS 用户编码
FROM
TP_PC_GROUTINGLINE l
INNER JOIN TP_PC_GROUTINGUSER u ON l.GROUTINGLINEID = u.GROUTINGLINEID
LEFT JOIN TP_MST_USER c ON u.USERID = c.USERID
WHERE
l.VALUEFLAG = '1'
AND l.ACCOUNTID = {sUser.AccountID}
AND l.GROUTINGLINECODE = '{groutingLineCode}'
";
DataTable groutingLineUser = conn.GetSqlResultToDt(sqlStr);
groutingLineUser.TableName = "GroutingLineUser";
sre.Data.Tables.Add(groutingLineUser);
bool isUser = false;
for (int i = 0; i < groutingLineUser.Rows.Count; i++)
if (groutingLineUser.Rows[i]["USERCODE"].ToString() == sUser.UserCode)
isUser = true;
if (groutingLineUser.Rows.Count == 0 || !isUser)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "成型线不包含当前生产工号!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 替换成型线的当前生产工号 替换方法 ok
///
///
///
///
public static ServiceResultEntity SetGroutingLineUserCode(string groutingLineCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//校验替换合法性
if (sre.Status == Constant.ServiceResultStatus.Success)
{
AddServiceResultEntity(sre, GetGroutingLineUserCode(groutingLineCode, sUser));
}
//替换成型线当前的成型工号
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
UPDATE
TP_PC_GROUTINGLINE
SET
USERID = {sUser.UserID}
WHERE
GROUTINGLINECODE = '{groutingLineCode}'
AND ACCOUNTID = {sUser.AccountID}
";
int execute = conn.ExecuteNonQuery(sqlStr);
if (execute > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作完成!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "操作失败,没有更新任何数据!";
}
conn.Commit();
}
}
catch (Exception ex)
{
conn.Rollback();
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 成型线注浆批次查询 ok
///
///
///
///
///
public static ServiceResultEntity GetGroutingLineBatchNo(string groutingLineCode, string groutingDay, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//成型线注浆批次查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT DISTINCT
d.GROUTINGBATCHNO --AS 注浆批次
FROM
TP_PM_GROUTINGDAILY d
WHERE
d.VALUEFLAG = '1'
AND d.ACCOUNTID = {sUser.AccountID}
AND d.GROUTINGLINECODE = '{groutingLineCode}'
AND d.GROUTINGDATE = date'{groutingDay}'
ORDER BY
d.GROUTINGBATCHNO
";
DataTable GroutingLineBatchNo = conn.GetSqlResultToDt(sqlStr);
GroutingLineBatchNo.TableName = "GroutingLineBatchNo";
sre.Data.Tables.Add(GroutingLineBatchNo);
if (GroutingLineBatchNo.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 成型线信息查询 ok
///
///
///
///
///
public static ServiceResultEntity GetGroutingLineInfo(string groutingLineCode, string groutingDay, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
string sqlStrNext = "";
try
{
conn.Connect();
//成型线注浆查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
1
FROM
TP_MST_USERPURVIEW p
INNER JOIN tp_mst_user u ON u.USERID = p.USERID
WHERE
p.PURVIEWTYPE = '6'
AND ( p.PURVIEWID = - 1 OR p.PURVIEWID = ( SELECT GROUTINGLINEID FROM TP_PC_GROUTINGLINE WHERE GROUTINGLINECODE = :groutingLineCode ) )
AND u.USERCODE = :usercode
";
OracleParameter[] Paras = new OracleParameter[] {
new OracleParameter(":groutingLineCode",OracleDbType.Varchar2, groutingLineCode,ParameterDirection.Input),
new OracleParameter(":usercode",OracleDbType.Varchar2, sUser.UserCode,ParameterDirection.Input),
};
DataTable purview = conn.GetSqlResultToDt(sqlStr, Paras);
//purview.TableName = "UserPurview";
//sre.Data.Tables.Add(purview);
if (purview.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "成型线信息不正确或用户无权限操作该成型线!";
}
else
{
sqlStrNext = $@"
SELECT
l.GROUTINGLINECODE ,-- AS 成型线号,
l.LASTGROUTINGDATE ,-- AS 已注浆日期,
l.LASTGROUTINGBATCHNO ,-- AS 已注浆批次,
u.USERCODE ,-- AS 成型工号,
m.USERCODE AS MONITORUSERCODE,-- AS 成型班长,
l.MOULDQUANTITY, -- AS 模具数量,
t.CANMANYTIMES -- AS 允许多次注浆
FROM
TP_PC_GROUTINGLINE l
LEFT JOIN TP_MST_USER u ON l.USERID = u.USERID
LEFT JOIN TP_MST_USER m ON l.USERID = m.USERID
LEFT JOIN TP_MST_GMOULDTYPE t ON l.GMOULDTYPEID = t.GMOULDTYPEID
WHERE
l.VALUEFLAG = '1' --有效标识
AND l.ACCOUNTID = :ACCOUNTID
AND l.GMOULDSTATUS = 1 --成型线正常状态
AND t.CANMANYTIMES = '1' --允许多次注浆
AND EXISTS ( SELECT 1 FROM TP_PC_GROUTINGLINEDETAIL d WHERE l.GROUTINGLINEID = d.GROUTINGLINEID AND d.VALUEFLAG = '1' AND d.GMOULDSTATUS = 1 ) --有正常状态的模具
AND l.GROUTINGLINECODE = :groutingLineCode
";
OracleParameter[] par = new OracleParameter[] {
new OracleParameter(":groutingLineCode",OracleDbType.Varchar2, groutingLineCode,ParameterDirection.Input),
new OracleParameter(":ACCOUNTID",OracleDbType.Varchar2, sUser.AccountID,ParameterDirection.Input),
};
DataTable groutingLine = conn.GetSqlResultToDt(sqlStrNext, par);
groutingLine.TableName = "GroutingLine";
sre.Data.Tables.Add(groutingLine);
if (groutingLine.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 成型线模具查询方法 E37 2#0101 2019-08-12 应用于 注浆登记
///
///
///
///
///
public static ServiceResultEntity GetGroutingLineDetail(string groutingLineCode, string groutingDay, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//查找成型线
if (sre.Status == Constant.ServiceResultStatus.Success)
{
//if (!string.IsNullOrWhiteSpace(groutingLineCode) && groutingLineCode.Contains("'"))
//{
// sre.Status = Constant.ServiceResultStatus.Other;
// sre.OtherStatus = -1;
// sre.Message = "成型线输入错误,包含其他字符,请核对!";
// return sre;
//}
AddServiceResultEntity(sre, GetGroutingLineInfo(groutingLineCode, groutingDay, sUser));
}
//校验注浆日期 允许多次注浆:>= 最后注浆日期 不允许多次 > 最后注浆日期 同时小于等于今天
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
l.LASTGROUTINGDATE,
t.CANMANYTIMES
FROM
TP_PC_GROUTINGLINE l
LEFT JOIN TP_MST_GMOULDTYPE t ON l.GMOULDTYPEID = t.GMOULDTYPEID
WHERE
l.VALUEFLAG = '1'
AND l.ACCOUNTID = {sUser.AccountID}
AND l.GROUTINGLINECODE = '{groutingLineCode}'
";
DataTable groutingLine = conn.GetSqlResultToDt(sqlStr);
if (groutingLine.Rows.Count>0 && !string.IsNullOrEmpty(groutingLine.Rows[0]["LASTGROUTINGDATE"].ToString()))
{
DateTime groutingDate = Convert.ToDateTime(groutingDay);
DateTime lastGroutingDate = Convert.ToDateTime(groutingLine.Rows[0]["LASTGROUTINGDATE"].ToString());
string canManyTimes = groutingLine.Rows[0]["CANMANYTIMES"].ToString();
if (!(
groutingDate >= lastGroutingDate && canManyTimes == "1" && groutingDate <= DateTime.Now.Date
|| groutingDate > lastGroutingDate && canManyTimes == "0" && groutingDate <= DateTime.Now.Date
))
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = "当前日期不允许注浆!";
}
}
}
//检查注浆限制天数 'S_PM_021'
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
NVL(SETTINGVALUE,'0')
FROM
TP_MST_SYSTEMSETTING
WHERE
SETTINGCODE = 'S_PM_021'
AND ACCOUNTID = {sUser.AccountID}
";
int day = Convert.ToInt32(conn.GetSqlResultToStr(sqlStr));
if (day != 0)
{
DateTime groutingDate = Convert.ToDateTime(groutingDay);
DateTime beginDay = DateTime.Now.Date;
DateTime endDay = beginDay.AddDays(1 - day);
if (groutingDate < endDay || groutingDate > beginDay)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = string.Format("允许注浆登记的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", endDay, beginDay);
}
}
}
//成型线模具查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
l.GROUTINGLINECODE,--AS 生产线编号,
d.GROUTINGMOULDCODE,--AS 模具编号,
g.GOODSCODE,--AS 产品编码,
--o.LOGONAME--AS 产品商标
CASE WHEN d.LOGOID IS NULL THEN o.LOGONAME
ELSE (SELECT LOGONAME FROM TP_MST_LOGO WHERE LOGOID=d.LOGOID ) END AS LOGONAME --AS 产品商标
FROM
TP_PC_GROUTINGLINEDETAIL d
LEFT JOIN TP_PC_GROUTINGLINE l ON l.GROUTINGLINEID = d.GROUTINGLINEID
LEFT JOIN TP_MST_GOODS g ON g.GOODSID = d.GOODSID
LEFT JOIN TP_MST_LOGO o ON o.LOGOID = g.LOGOID
WHERE
d.VALUEFLAG = '1'
AND l.ACCOUNTID = {sUser.AccountID}
AND d.GMOULDSTATUS = 1
AND l.GROUTINGLINECODE = '{groutingLineCode}'
ORDER BY
d.GROUTINGMOULDCODE
";
DataTable groutingLineDetail = conn.GetSqlResultToDt(sqlStr);
groutingLineDetail.TableName = "GroutingLineDetail";
sre.Data.Tables.Add(groutingLineDetail);
if (groutingLineDetail.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 成型线注浆查询方法 ok 应用于 注浆编辑
///
///
///
///
///
///
public static ServiceResultEntity GetGroutingLineGrouting(string groutingLineCode, string groutingDay, string groutingBatchNo, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//查找成型线
if(sre.Status == Constant.ServiceResultStatus.Success)
{
//if (!string.IsNullOrWhiteSpace(groutingLineCode) && groutingLineCode.Contains("'"))
//{
// sre.Status = Constant.ServiceResultStatus.Other;
// sre.OtherStatus = -1;
// sre.Message = "成型线输入错误,包含其他字符,请核对!";
// return sre;
// }
AddServiceResultEntity(sre, GetGroutingLineInfo(groutingLineCode, groutingDay, sUser));
}
//检查注浆限制天数 'S_PM_022'
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
NVL(SETTINGVALUE,'0')
FROM
TP_MST_SYSTEMSETTING
WHERE
SETTINGCODE = 'S_PM_022'
AND ACCOUNTID = {sUser.AccountID}
";
int day = Convert.ToInt32(conn.GetSqlResultToStr(sqlStr));
if (day != 0)
{
DateTime groutingDate = Convert.ToDateTime(groutingDay);
DateTime beginDay = DateTime.Now.Date;
DateTime endDay = beginDay.AddDays(1 - day);
if (groutingDate < endDay || groutingDate > beginDay)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = string.Format("允许注浆编辑的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", endDay, beginDay);
}
}
}
//成型线模具查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
d.GROUTINGDAILYID,-- AS 注浆ID,
d.GROUTINGDAILYDETAILID, -- AS 注浆日报明细ID
l.GROUTINGLINECODE,-- AS 生产线编号,
l.LASTGROUTINGDATE,-- AS 最后注浆日期,
l.LASTGROUTINGBATCHNO,-- AS 最后注浆批次,
d.GROUTINGMOULDCODE,-- AS 模具编号,
g.GOODSCODE,-- AS 产品编码,
o.LOGONAME,-- AS 产品商标,
d.GROUTINGFLAG,-- AS 注浆标识,
d.NOGROUTINGRREASON AS NOGROUTINGRREASONID, -- 未注浆原因ID
y.DICTIONARYVALUE AS NOGROUTINGRREASON, -- AS 未注浆原因
d.BARCODE,-- AS 绑定条码,
d.SCRAPFLAG -- AS 损坯标识
FROM
TP_PM_GROUTINGDAILYDETAIL d
LEFT JOIN TP_MST_GOODS g ON g.GOODSID = d.GOODSID
LEFT JOIN TP_MST_LOGO o ON o.LOGOID = d.LOGOID
LEFT JOIN TP_PC_GROUTINGLINE l on l.GROUTINGLINEID = d.GROUTINGLINEID
LEFT JOIN TP_MST_DATADICTIONARY y ON y.DICTIONARYID = d.NOGROUTINGRREASON
WHERE
d.VALUEFLAG = '1'
AND d.ACCOUNTID = {sUser.AccountID}
AND d.GROUTINGLINECODE = '{groutingLineCode}'
AND d.GROUTINGDATE = DATE '{groutingDay}'
AND d.GROUTINGBATCHNO = {groutingBatchNo}
ORDER BY
d.GROUTINGMOULDCODE
";
DataTable groutingLineDetail = conn.GetSqlResultToDt(sqlStr);
groutingLineDetail.TableName = "GroutingLineDetail";
sre.Data.Tables.Add(groutingLineDetail);
if (groutingLineDetail.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 未注浆原因查询方法 TP_MST_DataDictionary.DictionaryType = TPC004 ok
///
///
///
///
///
public static ServiceResultEntity GetGroutingNoGroutingReason(SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//成型线注浆批次查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
DICTIONARYID,
DISPLAYNO,
DICTIONARYVALUE
FROM
TP_MST_DATADICTIONARY
WHERE
VALUEFLAG = '1'
AND ACCOUNTID = {sUser.AccountID}
AND DICTIONARYTYPE = 'TPC004'
ORDER BY
DISPLAYNO
";
DataTable GroutingNoGroutingReason = conn.GetSqlResultToDt(sqlStr);
GroutingNoGroutingReason.TableName = "GroutingNoGroutingReason";
sre.Data.Tables.Add(GroutingNoGroutingReason);
if (GroutingNoGroutingReason.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 注浆登记保存 ok
///
///
/*
"groutingData": {
"GROUTINGDATE": "注浆日期",
"GROUTINGLINECODE": "成型线号",
"GROUTINGTIMES": "注浆次数",
"GROUTINGLINEDETAIL": [
{
"GROUTINGMOULDCODE": "注浆模具编1号",
"GROUTINGFLAG": "注浆标识1",
"NOGROUTINGRREASON": "未注浆原因1"
},
{
"GROUTINGMOULDCODE": "注浆模具编号2",
"GROUTINGFLAG": "注浆标识2",
"NOGROUTINGRREASON": "未注浆原因2"
}
]
}
*/
///
///
///
public static ServiceResultEntity SetGroutingLineDetail(string groutingData, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
int result = -1;
int classesSettingId = -1;
string groutingBatchNoBegin = "";
try
{
conn.Connect();
#region 多条成型线绑定注浆(成型线组) 20260313
int spm33value = PMModuleLogic.getSystemSet(conn, "S_PM_033", sUser);
// 创建列表存储 【主线 + 辅线】 的所有独立 JSON
List allGroutingJsons = new List();
// 先把【原始主线JSON】加入列表(结构完全不变)
allGroutingJsons.Add(groutingData);
if (spm33value == 1)
{
// 解析原始主线 JSON
JObject mainJson = JObject.Parse(groutingData);
string mainLineCode = mainJson["GROUTINGLINECODE"].ToString();
JArray mainDetail = (JArray)mainJson["GROUTINGLINEDETAIL"];
// 根据主线编码 → 查询数据库 → 拿到 2 条辅成型线编码
DataTable slaveLines = conn.GetSqlResultToDt($@"
SELECT GroutingLineCode ,GroutingLineID
FROM TP_PC_GroutingLine
WHERE H_LINECODE = '{mainLineCode}'
AND ValueFlag = 1 AND GroutingLineCode <> H_LINECODE
");
// 给每条辅线生成【结构完全一样】的独立 JSON
foreach (DataRow row in slaveLines.Rows)
{
// 查询辅成型线模具明细(校验用)
DataTable hlinedetaildt = conn.GetSqlResultToDt($@"
SELECT * FROM TP_PC_GROUTINGLINEDETAIL
WHERE VALUEFLAG = 1 AND GMouldStatus = '1' AND GROUTINGLINEID = {row["GROUTINGLINEID"]}
");
// 模具个数校验(和主线明细数量对比)
if (hlinedetaildt == null || hlinedetaildt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = $"注浆失败:辅注浆成型线【{row["GroutingLineCode"]}】无正常模具";
}
// ldetaildt 是主线的正常模具数量,你原来的逻辑
if (hlinedetaildt.Rows.Count != mainDetail.Count)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = $"注浆失败,请联系管理员核实【辅注浆成型线正常模具个数】是否准确-【{row["GroutingLineCode"]}】";
}
string slaveLineCode = row["GroutingLineCode"].ToString();
// 克隆主线 JSON(深度克隆,结构100%一致)
JObject slaveJson = JObject.Parse(mainJson.ToString());
// 只改 成型线编码
slaveJson["GROUTINGLINECODE"] = slaveLineCode;
// 模具编码自动替换:C05A02-001 → 辅线编码-001
JArray slaveDetail = (JArray)slaveJson["GROUTINGLINEDETAIL"];
//查询辅线模具编码是否与主线一致
foreach (JObject item in slaveDetail)
{
string mouldCode = item["GROUTINGMOULDCODE"].ToString();
string suffix = mouldCode.Trim().Split('-').Last();
DataRow[] drows = hlinedetaildt.Select("GROUTINGMOULDCODE='" + slaveLineCode + "-" + suffix + "'");
if (drows == null)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = $"注浆失败:辅线{slaveLineCode}模具未匹配主成型线模具位置";
}
item["MAINGROUTINGFLAG"] = mouldCode; // 主线模具号
item["MAINGROUTINGDAILYDETAILID"] = 0; // 默认为0
item["GROUTINGMOULDCODE"] = $"{slaveLineCode}-{suffix}";
}
// 加入列表 → 得到独立的、可直接使用的辅线 JSON
allGroutingJsons.Add(slaveJson.ToString());
}
}
#endregion
//foreach (string allGroutingJson in allGroutingJsons)
for (int z = 0; z < allGroutingJsons.Count; z++)
{
string allGroutingJson = allGroutingJsons[z];
JObject jsonL = JObject.Parse(allGroutingJson);
//jsonL["GROUTINGDATE"].ToString(); 注浆日期
//jsonL["GROUTINGLINECODE"].ToString();成型线号
//jsonL["GROUTINGTIMES"].ToString();注浆次数
//注浆批次处理 当注浆日期 等于 当前日期 时 注浆批次 为最后注浆批次 加1 处理
//当注浆日期 不等于 当前日期 时 注浆批数 从0开始 加1 处理
//if (DateTime.Now.ToString("yyyy-MM-dd") == jsonL["GROUTINGDATE"].ToString())
// groutingBatchNoBegin = "l.LASTGROUTINGBATCHNO";
//else
// groutingBatchNoBegin = "0";
sqlStr = $@"
SELECT
LASTGROUTINGBATCHNO
FROM
TP_PC_GROUTINGLINE l
WHERE
l.VALUEFLAG = '1'
AND l.ACCOUNTID = {sUser.AccountID}
AND l.LASTGROUTINGDATE = DATE '{jsonL["GROUTINGDATE"].ToString()}'
AND l.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}'
";
object obj = conn.GetSqlResultToObj(sqlStr);
//result = Convert.ToInt32(conn.GetSqlResultToStr(sqlStr));
if (obj == null || obj == DBNull.Value || Convert.ToInt32(obj) == 0)
{
groutingBatchNoBegin = "0";
}
else
{
groutingBatchNoBegin = "l.LASTGROUTINGBATCHNO";
}
// TODO 高压自动注浆不验证成型工号
/*
//校验工号 成型线工号配置的工号 必须包含当前用户
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
COUNT(c.USERID)
FROM
TP_PC_GROUTINGLINE l
INNER JOIN TP_PC_GROUTINGUSER u ON l.GROUTINGLINEID = u.GROUTINGLINEID
LEFT JOIN TP_MST_USER c ON u.USERID = c.USERID
WHERE
l.VALUEFLAG = '1'
AND l.ACCOUNTID = {sUser.AccountID}
AND l.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}'
AND c.USERCODE = '{sUser.UserCode}'
";
obj = conn.GetSqlResultToObj(sqlStr);
//result = Convert.ToInt32(conn.GetSqlResultToStr(sqlStr));
if (obj == null || obj == DBNull.Value || Convert.ToInt32(obj) == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "当前成型线没有配置当前员工!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
*/
//-----------------------------------------------------------------------
// 校验是否需要半成品卡控及卡控数量是否允许注浆操作 add by qq 20251216
#region 校验是否需要半成品卡控及卡控数量是否允许注浆操作
int systemSetvalue = PMModuleLogic.getSystemSet(conn, "S_PC_003", sUser);
#region 无论是否需要校验,都需要此表,注浆成功后需要反写计划表中的实际注浆量
string groutingMouldCodes = "";
JArray detailsarray = JArray.Parse(jsonL["GROUTINGLINEDETAIL"].ToString());
for (int i= 0; i < detailsarray.Count; i++)
{
if (detailsarray[i]["GROUTINGFLAG"].ToString() == "1")
{
groutingMouldCodes += "'" + detailsarray[i]["GROUTINGMOULDCODE"].ToString() + "',";
}
}
string groutingdailyDetailsql = $@"SELECT G.GOODSCODE, O.LOGOID , COUNT(D.GROUTINGLINEDETAILID)*{jsonL["GROUTINGTIMES"]} COUNT ,'' MAT20,0 PRODPLANID
FROM TP_PC_GROUTINGLINEDETAIL D
LEFT JOIN TP_PC_GROUTINGLINE L ON L.GROUTINGLINEID = D.GROUTINGLINEID
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = D.GOODSID
LEFT JOIN TP_MST_LOGO O ON O.LOGOID = G.LOGOID
WHERE
D.ACCOUNTID = { sUser.AccountID}
AND D.VALUEFLAG = '1'
AND D.GMOULDSTATUS = 1
AND L.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"]}'
AND D.GROUTINGMOULDCODE IN ({ groutingMouldCodes.Substring(0,groutingMouldCodes.Length -1) })
AND G.SCRAPSUMFLAG = 1
GROUP BY G.GOODSCODE,O.LOGOID ";
DataTable resultTable = conn.GetSqlResultToDt(groutingdailyDetailsql);
#endregion
//S_PC_003为1时,需要校验当月该半成品物料的计划数量
if (systemSetvalue == 1)
{
for (int i = 0; i < resultTable.Rows.Count; i++)
{
//查询对应半成品物料(根据注浆的产品及商标)
string mat20 = PMModuleLogic.getmaterialcodeMat20(conn, resultTable.Rows[i]["GOODSCODE"].ToString(), Convert.ToInt32(resultTable.Rows[i]["LOGOID"]));
if (!string.IsNullOrWhiteSpace(mat20))
{
resultTable.Rows[i]["MAT20"] = mat20;
//查询半成品物料当月对应的计划数量
DataTable planTabel = PMModuleLogic.getPlanDetail(conn, 1, mat20, Convert.ToDateTime(jsonL["GROUTINGDATE"].ToString()));
if (planTabel != null && planTabel.Rows.Count > 0)
{
resultTable.Rows[i]["PRODPLANID"] = Convert.ToInt32(planTabel.Rows[0]["PRODPLANID"]);
//有计划,计划数量
decimal planCount = Convert.ToDecimal(planTabel.Rows[0]["PLANCOUNT"]);
//已完成数量
decimal completedCount = 0;
if (!string.IsNullOrWhiteSpace(planTabel.Rows[0]["COMPLETEDCOUNT"].ToString()))
{
completedCount = Convert.ToDecimal(planTabel.Rows[0]["COMPLETEDCOUNT"]);
}
if (Convert.ToDecimal(resultTable.Rows[i]["Count"]) > planCount - completedCount)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无法注浆:此次注浆超过产销卡控计划注浆数量,请核实。";
}
}
else
{
//无计划,无法注浆
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无法注浆:该物料无产销计划,请核实。";
}
}
}
}
#region 创建表存储每个新建的注浆明细ID
DataTable gddIDTable = new DataTable();
gddIDTable.Columns.Add("GOODSCODE", typeof(string));
gddIDTable.Columns.Add("LOGOID", typeof(int));
gddIDTable.Columns.Add("GROUTINGDAILYDETAILID", typeof(int));
gddIDTable.Columns.Add("GROUTINGFLAG", typeof(int));
#endregion
#endregion
//-----------------------------------------------------------------------
//获取是否有班次 设置 classesSettingId
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
NVL(MAX(CLASSESSETTINGID),0) AS CLASSESSETTINGID
FROM
TP_PC_CLASSESSETTING
WHERE
ACCOUNTID = {sUser.AccountID}
AND VALUEFLAG = '1'
AND ACCOUNTDATE = DATE '{jsonL["GROUTINGDATE"].ToString()}'
AND USERCODE = '{sUser.UserCode}'
";
obj = conn.GetSqlResultToObj(sqlStr);
if (obj == null || obj == DBNull.Value || Convert.ToInt32(obj) == 0)
{
classesSettingId = 0;
}
else
{
classesSettingId = Convert.ToInt32(obj);
}
if (classesSettingId > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有班次配置!";
}
}
//没有班次的 自动配置班次
if (classesSettingId == 0)
{
try
{
//从序列中生成新的班次ID
classesSettingId = Convert.ToInt32(
conn.GetSqlResultToStr("SELECT SEQ_PC_ClASSESSETTING_ID.NEXTVAL FROM DUAL"));
sqlStr = "BEGIN";
//插入班次SQL
sqlStr += $@"
INSERT INTO TP_PC_CLASSESSETTING
(
CLASSESSETTINGID, ACCOUNTDATE, USERID, USERCODE,
ACCOUNTID, CREATEUSERID, UPDATEUSERID
)
VALUES
(
{classesSettingId},-- CLASSESSETTINGID select SEQ_PC_ClASSESSETTING_ID.Nextval FROM DUAL;
to_date('{jsonL["GROUTINGDATE"].ToString()}','yyyy-mm-dd'),-- ACCOUNTDATE
{sUser.UserID},--USERID
'{sUser.UserCode}',-- USERCODE
{sUser.AccountID},--ACCOUNTID
{sUser.UserID},--CREATEUSERID
{sUser.UserID} --UPDATEUSERID
);
";
//插入班次详细SQL
sqlStr += $@"
INSERT INTO TP_PC_CLASSESDETAIL (
CLASSESSETTINGID,ACCOUNTDATE,
USERID,USERCODE,STAFFID,STAFFSTATUS,ACCOUNTID,
VALUEFLAG,CREATEUSERID,UPDATEUSERID,
UJOBSID,SJOBSID,UJOBSNUM
)
SELECT
{classesSettingId},--CLASSESSETTINGID 班次ID
to_date('{jsonL["GROUTINGDATE"].ToString()}','yyyy-mm-dd'),-- ACCOUNTDATE
{sUser.UserID},--USERID
'{sUser.UserCode}',--USERCODE
s.STAFFID,--STAFFID
h.STAFFSTATUS,--STAFFSTATUS 员工状态
{sUser.AccountID},--ACCOUNTID
'1',--VALUEFLAG
{sUser.UserID},--CREATEUSERID
{sUser.UserID},--UPDATEUSERID
s.UJOBSID,--UJOBSID 工号工种ID
h.JOBS,--SJOBSID 员工工种ID
( SELECT COUNT( DISTINCT UJOBSID ) FROM TP_MST_USERSTAFF WHERE USERID = '{sUser.UserID}' ) -- UJOBSNUM 工号工种个数
FROM
TP_MST_USERSTAFF s
LEFT JOIN TP_HR_STAFF h ON h.STAFFID = s.STAFFID
WHERE
s.USERID = {sUser.UserID}
;
";
sqlStr += "END;";
conn.ExecuteNonQuery(sqlStr);
//多条语句执行,只返回-1,不报异常就是执行成功
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
catch (Exception ex)
{
sre.Status = Constant.ServiceResultStatus.SystemError;
sre.Message = "自动配置班次失败!";
}
}
//插入 注浆记录
if (sre.Status == Constant.ServiceResultStatus.Success)
{
try
{
sqlStr = "BEGIN";
string proSql = "";
//按注浆次数循环 保存注浆记录
for (int i = 0; i < Convert.ToInt32(jsonL["GROUTINGTIMES"].ToString()); i++)
{
//获取注浆ID
int groutingDailyId = Convert.ToInt32(
conn.GetSqlResultToStr(@"SELECT SEQ_PM_GROUTINGDAILY_ID.NEXTVAL FROM DUAL"));
//插入注浆记录 TP_PM_GROUTINGDAILY
sqlStr += $@"
INSERT INTO TP_PM_GROUTINGDAILY (
GROUTINGDAILYID,
GROUTINGLINEID,GROUTINGLINECODE,GROUTINGLINENAME,GROUTINGDATE,
USERID,MOULDQUANTITY,GMOULDTYPEID,CANMANYTIMES,ACCOUNTID,VALUEFLAG,
CREATEUSERID,UPDATEUSERID,USERCODE,GMOULDSTATUS,
CLASSESSETTINGID,GROUTINGBATCHNO,MONITORID,MONITORCODE,HIGHPRESSUREFLAG
)
SELECT
{groutingDailyId},
l.GROUTINGLINEID,
l.GROUTINGLINECODE,
l.GROUTINGLINENAME,
DATE '{jsonL["GROUTINGDATE"].ToString()}',-- GROUTINGDATE 注浆日期
{sUser.UserID},-- USERID 用户ID
l.MOULDQUANTITY,
l.GMOULDTYPEID,
t.CANMANYTIMES, -- CANMANYTIMES 关联 TP_MST_GMOULDTYPE 查询
{sUser.AccountID},-- ACCOUNTID
'1',--VALUEFLAG
{sUser.UserID},--CREATEUSERID
{sUser.UserID},--UPDATEUSERID
'{sUser.UserCode}',-- USERCODE
l.GMOULDSTATUS,
{classesSettingId}, -- 从 CLASSESSETTINGID 查询
{groutingBatchNoBegin} + {i} + 1, --LASTGROUTINGBATCHNO 批次号 每注一次加1
l.MONITORID,
m.USERCODE AS MONITORCODE, --MONITORCODE 关联 TP_MST_USER 查询
l.HIGHPRESSUREFLAG
FROM
TP_PC_GROUTINGLINE l
LEFT JOIN TP_MST_GMOULDTYPE t ON l.GMOULDTYPEID = t.GMOULDTYPEID
LEFT JOIN TP_MST_USER m ON l.MONITORID = m.USERID
WHERE
GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}' --成型线号
AND l.VALUEFLAG = '1'
AND l.GMOULDSTATUS = 1
;";
//按成型线模具循环插入注浆记录明细 TP_PM_GROUTINGDAILYDETAIL
JArray jsonM = JArray.Parse(jsonL["GROUTINGLINEDETAIL"].ToString());
for (int j = 0; j < jsonM.Count; j++)
{
//jsonM[j]["GROUTINGMOULDCODE"].ToString(); 注浆模具编号
//jsonM[j]["GROUTINGFLAG"].ToString(); 注浆标识
//jsonM[j]["NOGROUTINGRREASON"].ToString(); 未注浆原因
//验证注浆原因,如果没给数据,置为空
if (!(jsonM[j]["NOGROUTINGRREASON"] is object))
jsonM[j]["NOGROUTINGRREASON"] = "null";
//注浆明细ID
int seqGroutingDailyDetailID = Convert.ToInt32( conn.GetSqlResultToStr(@"SELECT SEQ_PM_GroutingDailyD_ID.Nextval FROM DUAL"));
//插入注浆记录明细
sqlStr += $@"
INSERT INTO TP_PM_GROUTINGDAILYDETAIL (
GROUTINGDAILYID,GROUTINGDAILYDETAILID,GROUTINGLINEID,GROUTINGLINECODE,GROUTINGLINENAME,GROUTINGLINEDETAILID,
GROUTINGDATE,GROUTINGMOULDCODE,MOULDCODE,GOODSID,GOODSCODE,GOODSNAME,GMOULDSTATUS,
GROUTINGCOUNT,GROUTINGFLAG,NOGROUTINGRREASON,ACCOUNTID,VALUEFLAG,CREATEUSERID,
UPDATEUSERID,USERID,USERCODE,SCRAPFLAG,SPECIALREPAIRFLAG,BARCODE,CLASSESSETTINGID,
ISPUBLICBODY,DELIVERFLAG,GMOULDTYPEID,CANMANYTIMES,GROUTINGBATCHNO,LOGOID,glazetypeid,
SCRAPTIME,SCRAPUSER,SCRAPREASONID,SCRAPREASON,MOULDID,SREASONID,SCRAPTYPE,BEGINNINGFLAG
-- 20220308 add 记录光瓷重量
,LUSTERWAREWEIGHT
-- 20220308 add 记录光瓷重量 end
-- 20220325 by feiy add 试验线
,TESTFLAG
-- 20220325 by feiy add 试验线 end
-- 20220812 by LSQ add 模具试验标识
,TESTMOULDFLAG
-- 20220812 by LSQ add 模具试验标识 end
) SELECT
{groutingDailyId},--GROUTINGDAILYID
{seqGroutingDailyDetailID},--GROUTINGDAILYDETAILID
d.GROUTINGLINEID,--GROUTINGLINEID
l.GROUTINGLINECODE,--GROUTINGLINECODE
l.GROUTINGLINENAME,--GROUTINGLINENAME
d.GROUTINGLINEDETAILID,--GROUTINGLINEDETAILID
to_date( '{jsonL["GROUTINGDATE"].ToString()}', 'yyyy-mm-dd' ),--GROUTINGDATE
d.GROUTINGMOULDCODE,--GROUTINGMOULDCODE
d.MOULDCODE,--MOULDCODE
d.GOODSID,--GOODSID
g.GOODSCODE,--GOODSCODE
g.GOODSNAME,--GOODSNAME
d.GMOULDSTATUS,--GMOULDSTATUS
d.GROUTINGCOUNT + {jsonM[j]["GROUTINGFLAG"].ToString()},--GROUTINGCOUNT
'{jsonM[j]["GROUTINGFLAG"].ToString()}',--GROUTINGFLAG
{jsonM[j]["NOGROUTINGRREASON"].ToString()}, --NOGROUTINGRREASON 未注浆原因
{sUser.AccountID},--ACCOUNTID
'1',--VALUEFLAG
{sUser.UserID},--CREATEUSERID
{sUser.UserID},--UPDATEUSERID
{sUser.UserID},--USERID
'{sUser.UserCode}',--USERCODE
'0',--SCRAPFLAG
'0',--SPECIALREPAIRFLAG
null,--BARCODE
{classesSettingId},--CLASSESSETTINGID
'0',--ISPUBLICBODY
'0',--DELIVERFLAG
l.GMOULDTYPEID,--GMOULDTYPEID
t.CANMANYTIMES,--CANMANYTIMES
{groutingBatchNoBegin} + {i} + 1, --LASTGROUTINGBATCHNO 批次号 每注一次加1
o.LOGOID,--LOGOID
g.glazetypeid,
NULL,--SCRAPTIME
NULL,--SCRAPUSER
NULL,--SCRAPREASONID
NULL,--SCRAPREASON
d.MOULDID,--MOULDID
NULL,--SREASONID
NULL,--SCRAPTYPE
'0' --BEGINNINGFLAG
-- 20220308 add 记录光瓷重量
,NVL(g.LUSTERWAREWEIGHT,0)
-- 20220308 add 记录光瓷重量 end
-- 20220325 by feiy add 试验线
,l.TESTFLAG
-- 20220325 by feiy add 试验线 end
-- 20220812 by LSQ add 模具试验标识
,M.TESTMOULDFLAG
-- 20220812 by LSQ add 模具试验标识 end
FROM
TP_PC_GROUTINGLINEDETAIL d
LEFT JOIN TP_PC_GROUTINGLINE l ON l.GROUTINGLINEID = d.GROUTINGLINEID
LEFT JOIN TP_PC_MOULD M ON d.MOULDID = M.MOULDID
LEFT JOIN TP_MST_GOODS g ON g.GOODSID = d.GOODSID
LEFT JOIN TP_MST_LOGO o ON o.LOGOID = g.LOGOID
LEFT JOIN TP_MST_GMOULDTYPE t ON t.GMOULDTYPEID = l.GMOULDTYPEID
WHERE
d.ACCOUNTID = {sUser.AccountID}
AND d.VALUEFLAG = '1'
AND d.GMOULDSTATUS = 1
AND l.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}' --成型线号
AND d.GROUTINGMOULDCODE = '{jsonM[j]["GROUTINGMOULDCODE"].ToString()}'
;";
//更新注浆次数
//sqlStr += $@"
//UPDATE
// TP_PC_GROUTINGLINEDETAIL
//SET
// GROUTINGCOUNT = GROUTINGCOUNT + {jsonM[j]["GROUTINGFLAG"].ToString()}
//WHERE
// ACCOUNTID = {sUser.AccountID}
// AND VALUEFLAG = '1'
// AND GMOULDSTATUS = 1
// --AND GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}' --成型线号
// AND GROUTINGMOULDCODE = '{jsonM[j]["GROUTINGMOULDCODE"].ToString()}'
//;";
#region 有主线标识并且没有数据的 为绑定注浆里的主注浆线 20260313
// 生成的 主线明细ID
int mainGroutingDailyDetailID = Convert.ToInt32(seqGroutingDailyDetailID);
//绑定注浆
if (allGroutingJsons.Count > 1)
{
//主线的明细,MAINGROUTINGFLAG值为空
if (!allGroutingJson.Contains("MAINGROUTINGFLAG"))
{
// 找到所有辅线,更新主线ID
for (int m = 1; m < allGroutingJsons.Count; m++) // 跳过主线,从第2条开始(辅线)
{
// 取出来
string jsonStr = allGroutingJsons[m];
JObject jObj = JObject.Parse(jsonStr);
JArray detail = (JArray)jObj["GROUTINGLINEDETAIL"];
// 查找匹配项
JObject matchItem = detail.FirstOrDefault(d =>
d["MAINGROUTINGFLAG"]?.ToString() == jsonM[j]["GROUTINGMOULDCODE"]?.ToString()
) as JObject;
if (matchItem != null)
{
// 修改 如果找到,直接更新主线ID
matchItem["MAINGROUTINGDAILYDETAILID"] = mainGroutingDailyDetailID;
}
// 👇 关键:把改完的 JSON 重新放回列表里
allGroutingJsons[m] = jObj.ToString();
}
}
else
{
//辅成型线,更新MAINGROUTINGDAILYDETAILID 为主成型线注浆明细ID
proSql += $@"UPDATE TP_PM_GroutingDailyDetail SET MAINGROUTINGDAILYDETAILID = {Convert.ToInt32(jsonM[j]["MAINGROUTINGDAILYDETAILID"])} WHERE GROUTINGDAILYDETAILID = {seqGroutingDailyDetailID};";
//OracleParameter[] proParas = new OracleParameter[]
//{
// new OracleParameter(":MAINGROUTINGDAILYDETAILID", OracleDbType.Int32, Convert.ToInt32(jsonM[j]["MAINGROUTINGDAILYDETAILID"]), ParameterDirection.Input),
// new OracleParameter(":GROUTINGDAILYDETAILID", OracleDbType.Int32, seqGroutingDailyDetailID, ParameterDirection.Input),
//};
//conn.ExecuteNonQuery(proSql, proParas);
}
}
#endregion
#region 插入注浆ID表
groutingdailyDetailsql = $@"SELECT G.GOODSCODE, O.LOGOID
FROM TP_PC_GROUTINGLINEDETAIL D
LEFT JOIN TP_PC_GROUTINGLINE L ON L.GROUTINGLINEID = D.GROUTINGLINEID
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = D.GOODSID
LEFT JOIN TP_MST_LOGO O ON O.LOGOID = G.LOGOID
WHERE
D.ACCOUNTID = { sUser.AccountID}
AND D.VALUEFLAG = '1'
AND D.GMOULDSTATUS = 1
AND L.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"]}'
AND D.GROUTINGMOULDCODE = '{jsonM[j]["GROUTINGMOULDCODE"]}'
GROUP BY G.GOODSCODE,O.LOGOID ";
DataTable goodsTable = conn.GetSqlResultToDt(groutingdailyDetailsql);
if (goodsTable != null && goodsTable.Rows.Count > 0)
{
DataRow newRow = gddIDTable.NewRow();
newRow["GOODSCODE"] = goodsTable.Rows[0]["GOODSCODE"].ToString();
newRow["LOGOID"] = Convert.ToInt32(goodsTable.Rows[0]["LOGOID"]);
newRow["GROUTINGDAILYDETAILID"] = Convert.ToInt32(seqGroutingDailyDetailID);
newRow["GROUTINGFLAG"] = Convert.ToInt32(jsonM[j]["GROUTINGFLAG"].ToString());
gddIDTable.Rows.Add(newRow);
}
#endregion
}
sre.Result = groutingDailyId;
}
sqlStr += "END;";
result = conn.ExecuteNonQuery(sqlStr);
if (!string.IsNullOrWhiteSpace(proSql))
{
result += conn.ExecuteNonQuery("BEGIN " +proSql+ " END;");
}
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
//2022年8月24日09:32:29 注浆次数
sqlStr = "BEGIN";
for (int i = 0; i < Convert.ToInt32(jsonL["GROUTINGTIMES"].ToString()); i++)
{
JArray jsonM = JArray.Parse(jsonL["GROUTINGLINEDETAIL"].ToString());
for (int j = 0; j < jsonM.Count; j++)
{
//更新注浆次数
sqlStr += $@"
UPDATE
TP_PC_GROUTINGLINEDETAIL
SET
GROUTINGCOUNT = GROUTINGCOUNT + {jsonM[j]["GROUTINGFLAG"].ToString()}
WHERE
ACCOUNTID = {sUser.AccountID}
AND VALUEFLAG = '1'
AND GMOULDSTATUS = 1
--AND GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}' --成型线号
AND GROUTINGMOULDCODE = '{jsonM[j]["GROUTINGMOULDCODE"].ToString()}'
;";
}
}
sqlStr += "END;";
result = conn.ExecuteNonQuery(sqlStr);
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
//2022年8月24日09:32:48 结束
}
catch (Exception ex)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "注浆记录写入失败!";
}
}
//更新 成型线 最后注浆日期 注浆批次
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
UPDATE
TP_PC_GROUTINGLINE l
SET
l.LASTGROUTINGDATE = DATE '{jsonL["GROUTINGDATE"].ToString()}',
l.LASTGROUTINGBATCHNO = {groutingBatchNoBegin} + {jsonL["GROUTINGTIMES"].ToString()},
l.H_BatchIndex = l.H_BatchIndex+1
WHERE
l.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}'
";
result = conn.ExecuteNonQuery(sqlStr);
if (result > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "成型线最后注浆日期和注浆批次更新失败!";
}
}
#region 注浆之后反写半成品卡控计划物料计划数量
for (int i = 0; i < resultTable.Rows.Count; i++)
{
int proPlanID = 0;
//S_PC_003为0时,需要查找每个产品对应的当月该半成品物料的计划ID
//为1时,校验时已经查询过,无须再查
if (systemSetvalue == 0)
{
//查询对应半成品物料(根据注浆的产品及商标)
string mat20 = PMModuleLogic.getmaterialcodeMat20(conn, resultTable.Rows[i]["GOODSCODE"].ToString(), Convert.ToInt32(resultTable.Rows[i]["LOGOID"]));
if (!string.IsNullOrWhiteSpace(mat20))
{
resultTable.Rows[i]["MAT20"] = mat20;
//查询半成品物料当月对应的计划数量
DataTable planTabel = PMModuleLogic.getPlanDetail(conn, 1, mat20, Convert.ToDateTime(jsonL["GROUTINGDATE"].ToString()));
if (planTabel != null && planTabel.Rows.Count > 0)
{
//有计划,计划ID
proPlanID = Convert.ToInt32(planTabel.Rows[0]["PRODPLANID"]);
}
}
}
else
{
if (!string.IsNullOrWhiteSpace(resultTable.Rows[i]["PRODPLANID"].ToString()))
{
proPlanID = Convert.ToInt32(resultTable.Rows[i]["PRODPLANID"]);
}
}
if (proPlanID > 0)
{
string proSql = "UPDATE TP_SEMIFINISHED_PRODPLAN SET COMPLETEDCOUNT = COMPLETEDCOUNT + :PLANCOUNT WHERE PRODPLANID = :PRODPLANID AND MATERIALCODE = :MAT20";
OracleParameter[] proParas = new OracleParameter[]
{
new OracleParameter(":PLANCOUNT", OracleDbType.Int32, Convert.ToInt32(resultTable.Rows[i]["Count"]), ParameterDirection.Input),
new OracleParameter(":PRODPLANID", OracleDbType.Int32, proPlanID, ParameterDirection.Input),
new OracleParameter(":MAT20", OracleDbType.Varchar2, resultTable.Rows[i]["MAT20"].ToString(), ParameterDirection.Input),
};
int executeResult = conn.ExecuteNonQuery(proSql, proParas);
//查找注浆明细中该产品商标都有哪些,插入关联表
DataRow[] groutingDailyDetailRows = gddIDTable.Select("GOODSCODE = '" + resultTable.Rows[i]["GOODSCODE"].ToString()
+ "' and LOGOID = " + resultTable.Rows[i]["LOGOID"].ToString() + " and GROUTINGFLAG = 1");
foreach (DataRow dailydetailDataRow in groutingDailyDetailRows)
{
proSql = "INSERT INTO TP_SEMIFINISHED_PRODPLANBAR (PRODPLANID,GROUTINGDAILYDETAILID,ACCOUNTID,CREATEUSERID) VALUES(:PRODPLANID,:GROUTINGDAILYDETAILID,:ACCOUNTID,:CREATEUSERID)";
proParas = new OracleParameter[]
{
new OracleParameter(":PRODPLANID", OracleDbType.Int32, proPlanID, ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYDETAILID", OracleDbType.Int32, Convert.ToInt32( dailydetailDataRow["GROUTINGDAILYDETAILID"]), ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32, sUser.AccountID, ParameterDirection.Input),
new OracleParameter(":CREATEUSERID", OracleDbType.Int32, sUser.UserID, ParameterDirection.Input),
};
executeResult = conn.ExecuteNonQuery(proSql, proParas);
}
}
}
#endregion
}
//提交
if (sre.Status == Constant.ServiceResultStatus.Success)
conn.Commit();
else
conn.Rollback();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 编辑注浆记录保存 ok
///
///
/*
"groutingData": [
{
"GROUTINGDAILYDETAILID": "注浆日报ID1",
"GROUTINGFLAG": "注浆标识1",
"NOGROUTINGRREASON": "未注浆原因1"
},
{
"GROUTINGDAILYDETAILID": "注浆日报ID2",
"GROUTINGFLAG": "注浆标识2",
"NOGROUTINGRREASON": "未注浆原因2"
}
]
*/
///
///
///
public static ServiceResultEntity SetGroutingLineGrouting(string groutingData, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
int result = 0;
try
{
conn.Connect();
//一定要先更新注浆次数 如果先更新的注浆记录 将无法分辨 注浆标识
//更新 成型线明细 注浆日报明细 注浆次数
if (sre.Status == Constant.ServiceResultStatus.Success && groutingData != "")
{
try
{
JArray json = JArray.Parse(groutingData);
string updateOne = $@"
UPDATE TP_PC_GROUTINGLINEDETAIL
SET GROUTINGCOUNT = GROUTINGCOUNT + :GROUTINGCOUNT
WHERE GROUTINGLINEDETAILID IN (
SELECT GroutingLineDetailID
FROM tp_pm_groutingdailydetail
WHERE GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID
UNION
SELECT GroutingLineDetailID
FROM tp_pm_groutingdailydetail
WHERE MAINGROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID ) ;
UPDATE TP_PM_GROUTINGDAILYDETAIL
SET GROUTINGCOUNT = GROUTINGCOUNT + :GROUTINGCOUNT
WHERE (GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID
OR MAINGROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID ) ;
";
sqlStr = "BEGIN";
DataTable dt = new DataTable();
for (int i = 0; i < json.Count; i++)
{
//读取原注浆记录进行比对,原来 注浆标识 为1 现在 注浆标识 为0 要-1 反之加1
dt = conn.GetSqlResultToDt($@"
SELECT
GROUTINGDAILYDETAILID,
GROUTINGLINEDETAILID,
GROUTINGFLAG
FROM
TP_PM_GROUTINGDAILYDETAIL
WHERE
GROUTINGDAILYDETAILID = {json[i]["GROUTINGDAILYDETAILID"].ToString()}
");
string groutingCount = "";
//注浆标识改变 才更新 注浆次数
if (json[i]["GROUTINGFLAG"].ToString() != dt.Rows[0]["GROUTINGFLAG"].ToString())
{
groutingCount = json[i]["GROUTINGFLAG"].ToString() == "1" ? "1" : "-1";
sqlStr += updateOne
.Replace(":GROUTINGCOUNT", groutingCount)
.Replace(":GROUTINGLINEDETAILID", dt.Rows[0]["GROUTINGLINEDETAILID"].ToString())
.Replace(":GROUTINGDAILYDETAILID", dt.Rows[0]["GROUTINGDAILYDETAILID"].ToString());
}
}
sqlStr += "END;";
result = conn.ExecuteNonQuery(sqlStr);
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
for (int i = 0; i < json.Count; i++)
{
object date = CMNModuleLogic.GetAccountDate(conn, sUser);
DateTime groutingDate = Convert.ToDateTime(date).Date;
#region 编辑时,取消注浆对应减去计划中实际注浆数及关联数据,修改为注浆对应判断是否允许注浆,允许时对应计划增加实际注浆数 20251216
//读取原注浆记录进行比对,原来 注浆标识 为1 现在 注浆标识 为0 要-1 反之加1
dt = conn.GetSqlResultToDt($@"
SELECT
GDD.GROUTINGDAILYDETAILID,
GDD.GROUTINGLINEDETAILID,
GDD.GOODSCODE,
GDD.LOGOID,
GDD.GROUTINGDATE,
GDD.GROUTINGFLAG
FROM
TP_PM_GROUTINGDAILYDETAIL GDD
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
WHERE G.SCRAPSUMFLAG = 1 AND
GDD.GROUTINGDAILYDETAILID = {json[i]["GROUTINGDAILYDETAILID"].ToString()}
");
if (json[i]["GROUTINGFLAG"].ToString() != dt.Rows[0]["GROUTINGFLAG"].ToString())
{
if (json[i]["GROUTINGFLAG"].ToString() == "0")
{
//取消注浆
//查询对应半成品物料(根据注浆的产品及商标)
string mat20 = PMModuleLogic.getmaterialcodeMat20(conn, dt.Rows[0]["GOODSCODE"].ToString(), Convert.ToInt32(dt.Rows[0]["LOGOID"]));
int proPlanID = 0;
if (!string.IsNullOrWhiteSpace(mat20))
{
//查询半成品物料当月对应的计划数量
DataTable planTabel = PMModuleLogic.getPlanDetail(conn, 1, mat20, groutingDate);
if (planTabel != null && planTabel.Rows.Count > 0)
{
proPlanID = Convert.ToInt32(planTabel.Rows[0]["PRODPLANID"]);
}
}
if (proPlanID > 0)
{
string proSql = "DELETE FROM TP_SEMIFINISHED_PRODPLANBAR WHERE PRODPLANID = :PRODPLANID and GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID";
OracleParameter[] proParas = new OracleParameter[]
{
new OracleParameter(":PRODPLANID", OracleDbType.Int32, proPlanID, ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYDETAILID", OracleDbType.Int32, Convert.ToInt32( dt.Rows[0]["GROUTINGDAILYDETAILID"]), ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32, sUser.AccountID, ParameterDirection.Input),
new OracleParameter(":CREATEUSERID", OracleDbType.Int32, sUser.UserID, ParameterDirection.Input),
};
int executeResult = conn.ExecuteNonQuery(proSql, proParas);
//确保之前的注浆数据绑定在该月计划单上
if (executeResult > 0)
{
proSql = "UPDATE TP_SEMIFINISHED_PRODPLAN SET COMPLETEDCOUNT = COMPLETEDCOUNT - :PLANCOUNT WHERE PRODPLANID = :PRODPLANID ";
proParas = new OracleParameter[]
{
new OracleParameter(":PLANCOUNT", OracleDbType.Int32, 1, ParameterDirection.Input),
new OracleParameter(":PRODPLANID", OracleDbType.Int32, proPlanID, ParameterDirection.Input),
};
executeResult = conn.ExecuteNonQuery(proSql, proParas);
}
}
}
else
{
//注浆
int systemSetvalue = PMModuleLogic.getSystemSet(conn, "S_PC_003", sUser);
int proPlanID = 0;
//查询对应半成品物料(根据注浆的产品及商标)
string mat20 = PMModuleLogic.getmaterialcodeMat20(conn, dt.Rows[0]["GOODSCODE"].ToString(), Convert.ToInt32(dt.Rows[0]["LOGOID"]));
if (!string.IsNullOrWhiteSpace(mat20))
{
//查询半成品物料当月对应的计划数量
DataTable planTabel = PMModuleLogic.getPlanDetail(conn, 1, mat20, groutingDate);
if (planTabel != null && planTabel.Rows.Count > 0)
{
proPlanID = Convert.ToInt32(planTabel.Rows[0]["PRODPLANID"]);
//有计划,计划数量
decimal planCount = Convert.ToDecimal(planTabel.Rows[0]["PLANCOUNT"]);
//已完成数量
decimal completedCount = 0;
if (!string.IsNullOrWhiteSpace(planTabel.Rows[0]["COMPLETEDCOUNT"].ToString()))
{
completedCount = Convert.ToDecimal(planTabel.Rows[0]["COMPLETEDCOUNT"]);
}
if (systemSetvalue == 1 && 1 > planCount - completedCount)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无法注浆:此次编辑注浆超过产销卡控计划注浆数量,请核实。";
break;
}
}
else
{
if (systemSetvalue == 1)
{
//无计划,无法注浆
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无法注浆:该物料无产销计划,请核实。";
}
}
}
if (proPlanID > 0)
{
string proSql = "UPDATE TP_SEMIFINISHED_PRODPLAN SET COMPLETEDCOUNT = COMPLETEDCOUNT + :PLANCOUNT WHERE PRODPLANID = :PRODPLANID ";
OracleParameter[] proParas = new OracleParameter[]
{
new OracleParameter(":PLANCOUNT", OracleDbType.Int32, 1, ParameterDirection.Input),
new OracleParameter(":PRODPLANID", OracleDbType.Int32, proPlanID, ParameterDirection.Input),
};
int executeResult = conn.ExecuteNonQuery(proSql, proParas);
proSql = "INSERT INTO TP_SEMIFINISHED_PRODPLANBAR (PRODPLANID,GROUTINGDAILYDETAILID,ACCOUNTID,CREATEUSERID) VALUES(:PRODPLANID,:GROUTINGDAILYDETAILID,:ACCOUNTID,:CREATEUSERID)";
proParas = new OracleParameter[]
{
new OracleParameter(":PRODPLANID", OracleDbType.Int32, proPlanID, ParameterDirection.Input),
new OracleParameter(":GROUTINGDAILYDETAILID", OracleDbType.Int32, Convert.ToInt32( dt.Rows[0]["GROUTINGDAILYDETAILID"]), ParameterDirection.Input),
new OracleParameter(":ACCOUNTID", OracleDbType.Int32, sUser.AccountID, ParameterDirection.Input),
new OracleParameter(":CREATEUSERID", OracleDbType.Int32, sUser.UserID, ParameterDirection.Input),
};
executeResult = conn.ExecuteNonQuery(proSql, proParas);
}
}
}
#endregion
}
}
catch
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "注浆次数更新失败!";
}
}
//更新注浆记录数据 不可以在更新 注浆次数 之前 执行
if (sre.Status == Constant.ServiceResultStatus.Success && groutingData != "")
{
try
{
JArray json = JArray.Parse(groutingData);
string updateOne = $@"
UPDATE
TP_PM_GROUTINGDAILYDETAIL
SET
GROUTINGFLAG = ':GROUTINGFLAG',
NOGROUTINGRREASON = :NOGROUTINGRREASON
WHERE
( GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID OR MAINGROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID )
;
";
sqlStr = "BEGIN";
for (int i=0;i
/// 模具注浆批次查询 ok
///
///
///
///
///
public static ServiceResultEntity GetGroutingMouldBatchNo(string groutingMouldCode, string groutingDay, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//成型线注浆批次查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT DISTINCT
d.GROUTINGBATCHNO --AS 注浆批次
FROM
TP_PM_GROUTINGDAILYDETAIL d
WHERE
d.VALUEFLAG = '1'
AND d.ACCOUNTID = {sUser.AccountID}
AND d.GROUTINGMOULDCODE = '{groutingMouldCode}'
AND d.GROUTINGDATE = DATE '{groutingDay}'
ORDER BY
d.GROUTINGBATCHNO DESC
";
DataTable GroutingMouldBatchNo = conn.GetSqlResultToDt(sqlStr);
GroutingMouldBatchNo.TableName = "GroutingMouldBatchNo";
sre.Data.Tables.Add(GroutingMouldBatchNo);
if (GroutingMouldBatchNo.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 模具注浆查询 ok
///
///
///
///
///
///
public static ServiceResultEntity GetGroutingMouldGrouting(string groutingMouldCode, string groutingDay, string groutingBatchNo, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//模具注浆查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
d.GROUTINGDAILYID , --AS 注浆ID,
d.GROUTINGDAILYDETAILID, -- AS 注浆日报明细ID
d.GROUTINGBATCHNO ,-- AS 注浆批次,
m.USERCODE ,-- AS 成型工号,
m.MONITORCODE ,-- AS 成型班长,
d.GROUTINGMOULDCODE,-- AS 模具编号,
g.GOODSCODE,-- AS 产品编码,
o.LOGONAME,-- AS 产品商标,
d.GROUTINGFLAG,-- AS 注浆标识,
d.NOGROUTINGRREASON AS NOGROUTINGRREASONID, -- 未注浆原因ID
y.DICTIONARYVALUE AS NOGROUTINGRREASON, -- AS 未注浆原因
d.BARCODE,-- AS 绑定条码,
d.SCRAPFLAG,-- AS 损坯标识,
d.BEGINNINGFLAG -- AS 在产标识
FROM
TP_PM_GROUTINGDAILYDETAIL d
LEFT JOIN TP_MST_GOODS g ON g.GOODSID = d.GOODSID
LEFT JOIN TP_MST_LOGO o ON o.LOGOID = d.LOGOID
LEFT JOIN TP_PM_GROUTINGDAILY m ON m.GROUTINGDAILYID = d.GROUTINGDAILYID
LEFT JOIN TP_MST_DATADICTIONARY y ON y.DICTIONARYID = d.NOGROUTINGRREASON
WHERE
d.VALUEFLAG = '1'
AND d.ACCOUNTID = {sUser.AccountID}
AND d.GROUTINGMOULDCODE = '{groutingMouldCode}'
AND d.GROUTINGDATE = DATE '{groutingDay}'
";
//如果指定批次号查询指定批次
if (!string.IsNullOrEmpty(groutingBatchNo)) sqlStr += $@" AND d.GROUTINGBATCHNO = {groutingBatchNo}";
DataTable GroutingMouldDetail = conn.GetSqlResultToDt(sqlStr);
GroutingMouldDetail.TableName = "GroutingMouldDetail";
sre.Data.Tables.Add(GroutingMouldDetail);
if (GroutingMouldDetail.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 读取下一个模具注浆信息 ok
///
///
///
///
///
///
///
public static ServiceResultEntity GetGroutingMouldGroutingNext(string groutingMouldCode, string groutingDay, string groutingBatchNo, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
//string sqlStr = "";
string groutingMouldCodeNext = ""; //下一个模具号
try
{
conn.Connect();
//读取模具批次列表
if (sre.Status == Constant.ServiceResultStatus.Success)
{
AddServiceResultEntity(sre, GetGroutingMouldBatchNo(groutingMouldCode, groutingDay, sUser));
}
//读取模具列表 记录下一个模具号 读最后一个时 返回第一个
//读取条件 注浆的 未报损的 无码的
if (sre.Status == Constant.ServiceResultStatus.Success)
{
//sqlStr = $@"
// SELECT
// d.GROUTINGMOULDCODE -- AS 模具编号
// FROM
// TP_PM_GROUTINGDAILYDETAIL d
// LEFT JOIN TP_PC_GROUTINGLINE l ON l.GROUTINGLINEID = d.GROUTINGLINEID
// WHERE
// d.VALUEFLAG = '1'
// AND d.ACCOUNTID = {sUser.AccountID}
// AND d.GROUTINGLINECODE = ( SELECT GROUTINGLINECODE FROM TP_PM_GROUTINGDAILYDETAIL WHERE GROUTINGMOULDCODE = '{groutingMouldCode}' AND GROUTINGDATE = DATE '{groutingDay}' AND GROUTINGBATCHNO = {groutingBatchNo} and valueflag = '1' )
// AND d.GROUTINGDATE = DATE '{groutingDay}'
// AND d.GROUTINGBATCHNO = {groutingBatchNo}
// AND d.GROUTINGFLAG = '1' -- 注浆标识
// AND d.SCRAPFLAG = '0' -- 损坯标识
// AND d.BARCODE is null
// ";
string sqlString = "SELECT D.GROUTINGMOULDCODE -- AS 模具编号\n" +
" FROM TP_PM_GROUTINGDAILYDETAIL D\n" +
" LEFT JOIN TP_PC_GROUTINGLINE L\n" +
" ON L.GROUTINGLINEID = D.GROUTINGLINEID\n" +
" WHERE D.VALUEFLAG = '1'\n" +
" AND D.ACCOUNTID = :ACCOUNTID\n" +
" AND D.GROUTINGLINEID = (SELECT MAX(GROUTINGLINEID)\n" +
" FROM TP_PC_GROUTINGLINEDETAIL GL\n" +
" WHERE GL.GROUTINGMOULDCODE = :GROUTINGMOULDCODE\n" +
" AND GL.VALUEFLAG = '1')\n" +
" AND D.GROUTINGDATE = :GROUTINGDATE\n" +
" AND D.GROUTINGBATCHNO = :GROUTINGBATCHNO\n" +
" AND D.GROUTINGFLAG = '1' -- 注浆标识\n" +
" AND D.SCRAPFLAG = '0' -- 损坯标识\n" +
" AND D.BARCODE IS NULL\n" +
" ORDER BY D.GROUTINGMOULDCODE";
OracleParameter[] ps = new OracleParameter[]
{
new OracleParameter("ACCOUNTID", sUser.AccountID),
new OracleParameter("GROUTINGMOULDCODE", groutingMouldCode),
new OracleParameter("GROUTINGDATE", Convert.ToDateTime(groutingDay)),
new OracleParameter("GROUTINGBATCHNO", Convert.ToInt32(groutingBatchNo)),
};
DataTable GroutingMouldCodeList = conn.GetSqlResultToDt(sqlString, ps);
//GroutingMouldCodeList.TableName = "GroutingMouldCodeList";
//sre.Data.Tables.Add(GroutingMouldCodeList);
if (GroutingMouldCodeList.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
//查找下一个模具号
groutingMouldCodeNext = GroutingMouldCodeList.Rows[0]["GROUTINGMOULDCODE"].ToString();
for (int i = 0; i < GroutingMouldCodeList.Rows.Count; i++)
{
if (string.Compare(GroutingMouldCodeList.Rows[i]["GROUTINGMOULDCODE"].ToString(), groutingMouldCode) > 0)
{
groutingMouldCodeNext = GroutingMouldCodeList.Rows[i]["GROUTINGMOULDCODE"].ToString();
break;
}
}
}
}
//读取下一个模具信息
if (sre.Status == Constant.ServiceResultStatus.Success && groutingMouldCodeNext != "")
{
//读取模具信息
AddServiceResultEntity(sre, GetGroutingMouldGrouting(groutingMouldCodeNext, groutingDay, groutingBatchNo, sUser));
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 绑定条码 id 26219 barcode 8000027063
///
///
///
///
///
public static ServiceResultEntity BindGroutingBarCode(string groutingDailyDetailId, string barCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
int result = -1;
try
{
conn.Connect();
int gl_id = Convert.ToInt32(conn.GetSqlResultToStr($"select g.groutinglineid from tp_pm_groutingdailydetail g where g.GROUTINGDAILYDETAILID = {groutingDailyDetailId}"));
//检查注浆限制天数 'S_PM_023'
if (sre.Status == Constant.ServiceResultStatus.Success)
{
//读取注浆日期
sqlStr = $@"
SELECT
to_char( GROUTINGDATE, 'yyyy-mm-dd' )
FROM
TP_PM_GROUTINGDAILYDETAIL
WHERE
GROUTINGDAILYDETAILID = {groutingDailyDetailId}
";
string groutingDay = conn.GetSqlResultToStr(sqlStr);
//读取限定日期
sqlStr = $@"
SELECT
NVL(SETTINGVALUE,'0')
FROM
TP_MST_SYSTEMSETTING
WHERE
SETTINGCODE = 'S_PM_023'
AND ACCOUNTID = {sUser.AccountID}
";
int day = Convert.ToInt32(conn.GetSqlResultToStr(sqlStr));
if (day != 0)
{
DateTime groutingDate = Convert.ToDateTime(groutingDay);
DateTime beginDay = DateTime.Now.Date;
DateTime endDay = beginDay.AddDays(1 - day);
if (groutingDate < endDay || groutingDate > beginDay)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.OtherStatus = -1;
sre.Message = string.Format("允许绑码的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", endDay, beginDay);
}
}
}
//验证条码是否被使用
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
count( BARCODE )
FROM
TP_PM_USEDBARCODE
WHERE
ACCOUNTID = {sUser.AccountID}
AND BARCODE = '{barCode}'
";
result = Convert.ToInt32(conn.GetSqlResultToStr(sqlStr));
if (result == 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.ValidationFailed;
sre.Message = "条码已被使用!";
}
}
//绑定条码处理 写入注浆表 有条码必须先解绑 绑定条件 无码 已注浆 未报损
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
UPDATE
TP_PM_GROUTINGDAILYDETAIL
SET
BARCODE = '{barCode}'
WHERE
ACCOUNTID = {sUser.AccountID}
AND GROUTINGDAILYDETAILID = {groutingDailyDetailId}
AND SCRAPFLAG = '0' -- 损坯不允许绑码
AND GROUTINGFLAG = '1' --只有注浆的才可以绑码
AND BARCODE IS NULL
";
result = conn.ExecuteNonQuery(sqlStr);
if (result == 1)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "条码绑定失败!条码重复/未注浆/损坯 不可以绑码!";
}
}
//绑定条码处理 写入条码使用记录
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
INSERT INTO TP_PM_USEDBARCODE
(BARCODE,
ACCOUNTID,
CREATETIME,
CREATEUSERID,
GROUTINGDAILYDETAILID,
BARCODESTATUS,
CLEARFLAG)
VALUES
(
'{barCode}', --条码
{sUser.AccountID}, --账套
DATE'{DateTime.Now.ToString("yyyy-MM-dd")}', --创建时间
{sUser.UserID}, --创建人
{groutingDailyDetailId}, --注浆ID
1, --注浆
0 --正常
)
";
result = conn.ExecuteNonQuery(sqlStr);
if (result == 1)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "条码使用记录写入失败!";
}
}
//提交
if (sre.Status == Constant.ServiceResultStatus.Success)
{
conn.Commit();
}
else
{
conn.Rollback();
return sre;
}
// 写入放行PLC
Hashtable plcPara = new Hashtable();
plcPara.Add("finishflag", 1);
ServiceResultEntity sre_plc = PLCModuleLogic.PlcWrite_GL(3501, gl_id, plcPara, sUser.UserCode);
}
catch (Exception ex)
{
conn.Rollback();
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 解绑条码 id 26219 barcode 8000027063
///
///
///
///
///
public static ServiceResultEntity UnBindGroutingBarCode(string groutingDailyDetailId, string barCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
int result = -1;
try
{
conn.Connect();
//判断条码产品是否在产
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
COUNT(GROUTINGDAILYDETAILID)
FROM
TP_PM_GROUTINGDAILYDETAIL
WHERE
ACCOUNTID = {sUser.AccountID}
AND BEGINNINGFLAG = '1'
AND GROUTINGDAILYDETAILID = {groutingDailyDetailId}
";
result = Convert.ToInt32(conn.GetSqlResultToStr(sqlStr));
if(result == 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.ValidationFailed;
sre.Message = "在产状态的条码不允许解绑!";
}
}
//解绑条码处理 更新 注资日报表
if (sre.Status == Constant.ServiceResultStatus.Success)
{
//条码写入注浆表
sqlStr = $@"
UPDATE
TP_PM_GROUTINGDAILYDETAIL
SET
BARCODE = null
WHERE
ACCOUNTID = {sUser.AccountID}
AND GROUTINGDAILYDETAILID = {groutingDailyDetailId}
";
result = conn.ExecuteNonQuery(sqlStr);
if (result == 1)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "条码更新失败!";
}
}
//解绑条码处理 删除 条码使用记录
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
DELETE
TP_PM_USEDBARCODE
WHERE
ACCOUNTID = {sUser.AccountID}
AND BARCODE = '{barCode}'
AND GROUTINGDAILYDETAILID = {groutingDailyDetailId}
";
result = conn.ExecuteNonQuery(sqlStr);
//严谨的逻辑是 result == 1 才对 偶尔存在错误数据,没找到原因,为调试方便改为>=0
if (result >= 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "条码使用记录删除失败!";
}
}
//提交
if (sre.Status == Constant.ServiceResultStatus.Success)
conn.Commit();
else
conn.Rollback();
}
catch (Exception ex)
{
conn.Rollback();
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 整条成型线解绑条码
///
///
///
///
///
///
public static ServiceResultEntity UnBindGroutingLineBarCode(string groutingLineCode, string groutingDay, string groutingBatchNo, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
int result = -1;
DataTable groutingTable=new DataTable();
try
{
conn.Connect();
//读取全线注浆记录,并判定是否有在产产品
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
GROUTINGDAILYID, -- AS 注浆ID,
GROUTINGDAILYDETAILID, -- AS 注浆日报明细ID
BARCODE, -- AS 产品条码,
BEGINNINGFLAG -- AS 在产标识
FROM
TP_PM_GROUTINGDAILYDETAIL
WHERE
VALUEFLAG = '1'
AND ACCOUNTID = {sUser.AccountID}
AND GROUTINGLINECODE = '{groutingLineCode}'
AND GROUTINGDATE = DATE '{groutingDay}'
AND GROUTINGBATCHNO = {groutingBatchNo}
ORDER BY
GROUTINGMOULDCODE
";
groutingTable = conn.GetSqlResultToDt(sqlStr);
if (groutingTable.Rows.Count > 0)
{
//判断是否有在产标识的记录
if(groutingTable.Select(" BEGINNINGFLAG = '1' ").Length==0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.ValidationFailed;
sre.Message = "成型线中有在产产品!";
}
}
else
{
sre.Status = Constant.ServiceResultStatus.ValidationFailed;
sre.Message = "成型线没找到注浆记录!";
}
}
//全线解绑条码处理 更新 注资日报表
if (sre.Status == Constant.ServiceResultStatus.Success)
{
//条码写入注浆表
sqlStr = $@"
UPDATE
TP_PM_GROUTINGDAILYDETAIL
SET
BARCODE = null
WHERE
ACCOUNTID = {sUser.AccountID}
AND GROUTINGLINECODE = '{groutingLineCode}'
AND GROUTINGDATE = DATE '{groutingDay}'
AND GROUTINGBATCHNO = {groutingBatchNo}
";
result = conn.ExecuteNonQuery(sqlStr);
if (result == groutingTable.Rows.Count)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "条码更新失败!";
}
}
//解绑条码处理 删除 条码使用记录
if (sre.Status == Constant.ServiceResultStatus.Success)
{
string barCodes = "";
string groutingDailyDetailIds = "";
for (int i = 0; i < groutingTable.Rows.Count; i++)
{
if (i > 0)
{
barCodes += ",";
groutingDailyDetailIds += ",";
};
barCodes += "'" + groutingTable.Rows[i]["BARCODE"].ToString() + "'";
groutingDailyDetailIds += groutingTable.Rows[i]["GROUTINGDAILYDETAILID"].ToString();
}
sqlStr = $@"
DELETE
TP_PM_USEDBARCODE
WHERE
ACCOUNTID = {sUser.AccountID}
AND BARCODE IN ({barCodes})
AND GROUTINGDAILYDETAILID IN ({groutingDailyDetailIds})
";
result = conn.ExecuteNonQuery(sqlStr);
//有条码的解码,允许存在没绑码的记录
if (result > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "条码使用记录删除失败!";
}
}
//提交
if (sre.Status == Constant.ServiceResultStatus.Success)
conn.Commit();
else
conn.Rollback();
}
catch (Exception ex)
{
conn.Rollback();
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 报损/取消报损处理
///
///
///
///
///
public static ServiceResultEntity SetGroutingScrap(string groutingDailyDetailId, string scrapFlag, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
int result = -1;
try
{
conn.Connect();
int gl_id = Convert.ToInt32(conn.GetSqlResultToStr($"select g.groutinglineid from tp_pm_groutingdailydetail g where g.GROUTINGDAILYDETAILID = {groutingDailyDetailId}"));
//未注浆/在产/已报损(不能重复操作)/撤销报损(不能重复操作) xuwei modify 2019-11-25
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
COUNT(GROUTINGDAILYDETAILID)
FROM
TP_PM_GROUTINGDAILYDETAIL
WHERE
ACCOUNTID = {sUser.AccountID}
AND (BEGINNINGFLAG = '1' OR SCRAPFlAG = '{scrapFlag}' OR GROUTINGFLAG = '0' )
AND GROUTINGDAILYDETAILID = {groutingDailyDetailId}
";
result = Convert.ToInt32(conn.GetSqlResultToStr(sqlStr));
if (result == 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.ValidationFailed;
sre.Message = "未注浆/在产/报损/的产品不能操作!";
}
}
//更新条码使用表
if (sre.Status == Constant.ServiceResultStatus.Success)
{
//报损 BARCODESTATUS = 2 撤销报损 BARCODESTATUS = 1
int barCodeStatus = scrapFlag == "1" ? 2 : 1;
sqlStr = $@"
UPDATE
TP_PM_USEDBARCODE
SET
BARCODESTATUS = {barCodeStatus}
WHERE
ACCOUNTID = {sUser.AccountID}
AND BARCODESTATUS <> -1
AND GROUTINGDAILYDETAILID = {groutingDailyDetailId}
";
result = conn.ExecuteNonQuery(sqlStr);
//result=1 是绑定条码的产品,result=0 是没绑条码的产品
if (result == 1 || result == 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "条码使用记录更新失败!";
}
}
//更新注浆表的SCRAPFlAG 损坯标记 SCRAPTYPE 损坏类型 0 开模损 null 正常
if (sre.Status == Constant.ServiceResultStatus.Success)
{
string scrapType = scrapFlag == "1" ? "'0'" : "null";
string ScrapTime = scrapFlag == "1" ? "sysdate" : "null";
sqlStr = $@"
UPDATE
TP_PM_GROUTINGDAILYDETAIL
SET
SCRAPFlAG = '{scrapFlag}',
SCRAPTYPE = {scrapType},
ScrapTime = {ScrapTime}
WHERE
ACCOUNTID = {sUser.AccountID}
AND GROUTINGDAILYDETAILID = {groutingDailyDetailId}
";
result = conn.ExecuteNonQuery(sqlStr);
if (result == 1)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "没有更新任何数据!";
}
}
//提交
if (sre.Status == Constant.ServiceResultStatus.Success)
{
conn.Commit();
}
else
{
conn.Rollback();
return sre;
}
// 写入放行PLC
if (scrapFlag == "1")
{
Hashtable plcPara = new Hashtable();
plcPara.Add("finishflag", 1);
ServiceResultEntity sre_plc = PLCModuleLogic.PlcWrite_GL(3501, gl_id, plcPara, sUser.UserCode);
}
}
catch (Exception ex)
{
conn.Rollback();
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 按条码查询注浆日报详细信息
///
///
///
///
public static ServiceResultEntity GetGroutingDailyDetail(string barCode,SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//成型线注浆查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
d.GROUTINGLINECODE, --AS 成型线编码,
d.GROUTINGDATE, --AS 注浆日期,
d.GROUTINGDAILYID , --AS 注浆ID,
d.GROUTINGDAILYDETAILID, -- AS 注浆日报明细ID
d.GROUTINGBATCHNO ,-- AS 注浆批次,
m.USERCODE ,-- AS 成型工号,
m.MONITORCODE ,-- AS 成型班长,
d.GROUTINGMOULDCODE,-- AS 模具编号,
g.GOODSCODE,-- AS 产品编码,
o.LOGONAME,-- AS 产品商标,
d.GROUTINGFLAG,-- AS 注浆标识,
d.NOGROUTINGRREASON AS NOGROUTINGRREASONID, -- 未注浆原因ID
y.DICTIONARYVALUE AS NOGROUTINGRREASON, -- AS 未注浆原因
d.BARCODE,-- AS 绑定条码,
d.SCRAPFLAG,-- AS 损坯标识,
d.BEGINNINGFLAG -- AS 在产标识
FROM
TP_PM_GROUTINGDAILYDETAIL d
LEFT JOIN TP_MST_GOODS g ON g.GOODSID = d.GOODSID
LEFT JOIN TP_MST_LOGO o ON o.LOGOID = d.LOGOID
LEFT JOIN TP_PM_GROUTINGDAILY m ON m.GROUTINGDAILYID = d.GROUTINGDAILYID
LEFT JOIN TP_MST_DATADICTIONARY y ON y.DICTIONARYID = d.NOGROUTINGRREASON
WHERE
d.VALUEFLAG = '1'
AND d.ACCOUNTID = {sUser.AccountID}
AND d.BARCODE = '{barCode}'
";
DataTable GroutingDailyDetail = conn.GetSqlResultToDt(sqlStr);
GroutingDailyDetail.TableName = "GroutingDailyDetail";
sre.Data.Tables.Add(GroutingDailyDetail);
if (GroutingDailyDetail.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
//成型线信息查询 查询参数使用了sre.data中的GroutingDailyDetail表中的数据
if (sre.Status == Constant.ServiceResultStatus.Success)
{
string groutingLineCode = sre.Data.Tables["GroutingDailyDetail"].Rows[0]["GROUTINGLINECODE"].ToString();
sqlStr = $@"
SELECT
l.GROUTINGLINECODE ,-- AS 成型线号,
l.LASTGROUTINGDATE ,-- AS 已注浆日期,
l.LASTGROUTINGBATCHNO ,-- AS 已注浆批次,
u.USERCODE ,-- AS 成型工号,
m.USERCODE AS MONITORUSERCODE,-- AS 成型班长,
l.MOULDQUANTITY, -- AS 模具数量,
t.CANMANYTIMES -- AS 允许多次注浆
FROM
TP_PC_GROUTINGLINE l
LEFT JOIN TP_MST_USER u ON l.USERID = u.USERID
LEFT JOIN TP_MST_USER m ON l.USERID = m.USERID
LEFT JOIN TP_MST_GMOULDTYPE t ON l.GMOULDTYPEID = t.GMOULDTYPEID
WHERE
l.VALUEFLAG = '1' --有效标识
AND l.ACCOUNTID = {sUser.AccountID}
AND l.GROUTINGLINECODE = '{groutingLineCode}'
";
DataTable groutingLine = conn.GetSqlResultToDt(sqlStr);
groutingLine.TableName = "GroutingLine";
sre.Data.Tables.Add(groutingLine);
if (groutingLine.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 按条码查询成检交接信息 2020-06-26 xuwei
///
///
///
///
public static ServiceResultEntity GetPreProductCheck(string barCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
//成型线注浆查询
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
i.GOODSLEVELTYPEID,
i.REWORKPROCEDUREID
FROM
TP_PM_INPRODUCTION i
WHERE
i.BARCODE = {barCode}
AND i.MODELTYPE = -4
";
DataTable PreProductCheck = conn.GetSqlResultToDt(sqlStr);
PreProductCheck.TableName = "PreProductCheck";
sre.Data.Tables.Add(PreProductCheck);
if (PreProductCheck.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 读取旧的防伪码 xuwei edit 2021-09-11 多读取一些产品信息
///
/// 产品条码ram>
/// 陈强 2021-08-9 新建
/// int
public static ServiceResultEntity GetSecurityCodeByBarcode(string barCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
conn.Connect();
//读取防伪码
if (sre.Status == Constant.ServiceResultStatus.Success)
{
string sqlString = @"
SELECT
GD.BARCODE,
GD.SECURITYCODE,
GD.GOODSCODE,
GT.GOODSTYPECODE
FROM
TP_PM_GROUTINGDAILYDETAIL GD
LEFT JOIN TP_MST_GOODS G ON GD.GOODSID = G.GOODSID
LEFT JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
WHERE
GD.BARCODE =:BARCODE
AND GD.VALUEFLAG =1
";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BARCODE",OracleDbType.Varchar2, barCode,ParameterDirection.Input),
};
DataTable data = conn.GetSqlResultToDt(sqlString, paras);
data.TableName = "Data";
sre.Data.Tables.Add(data);
if (data != null && data.Rows.Count > 0 && data.Rows[0]["SecurityCode"].ToString() != "")
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "防伪码读取成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
return sre;
}
///
/// 绑定防伪码
///
/// 产品条码ram>
/// 工序IDram>
/// 防伪码
/// 2021-08-9 新建
/// int
public static ServiceResultEntity UpdateSecurityCodeByBarcode(string barCode, string securityCode, string procedureID, SUserInfo sUser)
{
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
int retnrnRows = 0;
int retnrnRows2 = 0;
string sqlString = null;
bool b = true;//true 有防伪码 false 无防伪码
try
{
oracleTrConn.Connect();
//防伪码位数校验
if (!string.IsNullOrEmpty(securityCode) ) {
if (securityCode.Length != 12)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "防伪码位数不对!";
return sre;
}
};
#region 查此件原来有没有防伪码
sqlString = @"SELECT
SECURITYCODE
FROM
TP_PM_GROUTINGDAILYDETAIL
WHERE
BARCODE =:BARCODE
AND VALUEFLAG =1";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BARCODE",OracleDbType.Varchar2, barCode,ParameterDirection.Input)
};
DataTable SecurityCode = oracleTrConn.GetSqlResultToDt(sqlString, paras);
if (SecurityCode != null && SecurityCode.Rows.Count > 0 && SecurityCode.Rows[0]["SecurityCode"].ToString() != "")
{
//有防伪码 —— 防伪码变更
b = true;
}
else {
//无防伪码 —— 防伪码绑定
b = false;
}
#region 检验输入的防伪码是否被使用过
sqlString = @"SELECT
1
FROM
TP_PM_GROUTINGDAILYDETAIL
WHERE
VALUEFLAG = 1
AND SECURITYCODE = :SECURITYCODE";
paras = new OracleParameter[]{
new OracleParameter(":SECURITYCODE",OracleDbType.Varchar2, securityCode,ParameterDirection.Input),
};
DataTable dt = oracleTrConn.GetSqlResultToDt(sqlString, paras);
// 被使用过则不能被再次使用
if (dt != null && dt.Rows.Count > 0)
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "防伪码被使用过!";
return sre;
}
#endregion
#region 写防伪码(变更和绑定都走这个)
sqlString = @"UPDATE
TP_PM_GROUTINGDAILYDETAIL
SET
SECURITYCODE = :SECURITYCODE
WHERE
BARCODE =:BARCODE
AND VALUEFLAG =1";
paras = new OracleParameter[]{
new OracleParameter(":BARCODE",OracleDbType.Varchar2, barCode,ParameterDirection.Input),
new OracleParameter(":SECURITYCODE",OracleDbType.Varchar2, securityCode,ParameterDirection.Input),
};
retnrnRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
#endregion
#endregion
// 防伪码变更
if (b)
{
#region 记录变更日志
// 成功
if (retnrnRows > 0)
{
sqlString = @"INSERT INTO TP_MST_SECURITYCODELOG
( USERID, BARCODE, OLDSECURITYCODE, NEWSECURITYCODE, CREATETIME, OPERATION, REMARKS, PROCEDUREID )
VALUES (:USERID, :BARCODE, :OLDSECURITYCODE, :NEWSECURITYCODE, SYSDATE, :OPERATION, :REMARKS, :PROCEDUREID )";
paras = new OracleParameter[]{
new OracleParameter(":USERID",OracleDbType.Int32, sUser.UserID,ParameterDirection.Input),
new OracleParameter(":BARCODE",OracleDbType.Varchar2, barCode,ParameterDirection.Input),
new OracleParameter(":OLDSECURITYCODE",OracleDbType.Varchar2, null,ParameterDirection.Input),
new OracleParameter(":NEWSECURITYCODE",OracleDbType.Varchar2, securityCode,ParameterDirection.Input),
new OracleParameter(":OPERATION",OracleDbType.Int32, 2,ParameterDirection.Input),
new OracleParameter(":REMARKS",OracleDbType.Varchar2," 【时间】 "+DateTime.Now.ToString() + " 【用户】 " + sUser.UserName+ " 【操作条码】 "+ barCode +" 【变更防伪码】 "+ SecurityCode.Rows [ 0 ][ "SecurityCode" ] + " 更改为 " + securityCode ,ParameterDirection.Input),
new OracleParameter(":PROCEDUREID",OracleDbType.Int32, Convert.ToInt32(procedureID) ,ParameterDirection.Input)
};
retnrnRows2 = oracleTrConn.ExecuteNonQuery(sqlString, paras);
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "防伪码变更成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "防伪码变更失败!";
}
}
//防伪码绑定
else {
#region 记录操作日志
// 成功
if (retnrnRows > 0)
{
sqlString = @"INSERT INTO TP_MST_SECURITYCODELOG
( USERID, BARCODE, OLDSECURITYCODE, NEWSECURITYCODE, CREATETIME, OPERATION, REMARKS, PROCEDUREID )
VALUES (:USERID, :BARCODE, :OLDSECURITYCODE, :NEWSECURITYCODE, SYSDATE, :OPERATION, :REMARKS, :PROCEDUREID )";
paras = new OracleParameter[]{
new OracleParameter(":USERID",OracleDbType.Int32, sUser.UserID,ParameterDirection.Input),
new OracleParameter(":BARCODE",OracleDbType.Varchar2, barCode,ParameterDirection.Input),
new OracleParameter(":OLDSECURITYCODE",OracleDbType.Varchar2, null,ParameterDirection.Input),
new OracleParameter(":NEWSECURITYCODE",OracleDbType.Varchar2, securityCode,ParameterDirection.Input),
new OracleParameter(":OPERATION",OracleDbType.Int32, 1,ParameterDirection.Input),
new OracleParameter(":REMARKS",OracleDbType.Varchar2," 【时间】 "+DateTime.Now.ToString() + " 【用户】 " + sUser.UserName+ " 【操作条码】 "+ barCode +" 【绑定防伪码】 "+ securityCode ,ParameterDirection.Input),
new OracleParameter(":PROCEDUREID",OracleDbType.Int32, Convert.ToInt32(procedureID) ,ParameterDirection.Input),
};
retnrnRows2 = oracleTrConn.ExecuteNonQuery(sqlString, paras);
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "防伪码绑定成功!";
}
#endregion
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "防伪码绑定失败!";
}
}
#endregion
oracleTrConn.Commit();
}
catch (Exception ex)
{
oracleTrConn.Rollback();
throw ex;
}
finally
{
// 释放资源
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Disconnect();
}
}
return sre;
}
///
/// 校验防伪码
///
/// 产品条码
/// 防伪码
/// 陈强 2021-08-11 新建
/// int
public static ServiceResultEntity CheckSecurityCodeByBarcode(string barCode, string securityCode, SUserInfo sUser)
{
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
string sqlString = null;
try
{
conn.Connect();
#region 验证防伪码处理
sqlString = @" SELECT
1
FROM
TP_PM_GROUTINGDAILYDETAIL
WHERE
BARCODE = :BARCODE
AND VALUEFLAG = 1
AND SECURITYCODE = :SECURITYCODE";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BARCODE",OracleDbType.Varchar2, barCode,ParameterDirection.Input),
new OracleParameter(":SECURITYCODE",OracleDbType.Varchar2, securityCode,ParameterDirection.Input),
};
DataTable dt = conn.GetSqlResultToDt(sqlString, paras);
if (dt !=null && dt.Rows.Count>0 )
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "防伪码验证成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "防伪码验证失败!";
}
#endregion
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
return sre;
}
///
/// 读取防伪码设置 xuwei add 2021-09-10
///
///
///
public static ServiceResultEntity GetSecurityCodeSetting(SUserInfo sUser)
{
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
string sqlString = null;
try
{
conn.Connect();
#region 读系统参数
sqlString = @"
SELECT
T1.BINDPROCEDUREID,
T1.CHECKROCEDUREID,
T1.GOODSTYPECODE,
T2.GOODSLISTBIND,
T3.GOODSLISTCHECK
FROM
(
SELECT
B.SETTINGVALUE AS BINDPROCEDUREID,
C.SETTINGVALUE AS CHECKROCEDUREID,
V.SETTINGVALUE AS GOODSTYPECODE,
1 AS WJ
FROM
TP_MST_SYSTEMSETTING V
LEFT JOIN TP_MST_SYSTEMSETTING B ON B.SETTINGCODE = 'S_PM_030'
LEFT JOIN TP_MST_SYSTEMSETTING C ON C.SETTINGCODE = 'S_PM_031'
WHERE
V.SETTINGCODE = 'S_PM_032'
) T1
INNER JOIN (
SELECT
1 AS WJ,
SECURITYCODEBINDFLAG,
LISTAGG ( TO_CHAR(GOODSCODE), ',' ) WITHIN GROUP ( ORDER BY GOODSID ) AS GOODSLISTBIND
FROM
TP_MST_GOODS
WHERE
SECURITYCODEBINDFLAG = 1
GROUP BY
SECURITYCODEBINDFLAG
) T2 ON T1.WJ = T2.WJ
LEFT JOIN (
SELECT
1 AS WJ,
SECURITYCODECHECKFLAG,
LISTAGG ( TO_CHAR(GOODSCODE), ',' ) WITHIN GROUP ( ORDER BY GOODSID ) AS GOODSLISTCHECK
FROM
TP_MST_GOODS
WHERE
SECURITYCODECHECKFLAG = 1
GROUP BY
SECURITYCODECHECKFLAG
) T3 ON T1.WJ = T3.WJ
";
DataTable dt = conn.GetSqlResultToDt(sqlString);
dt.TableName = "SETTING";
if (dt.Rows.Count > 0)
{
sre.Data = new DataSet();
sre.Data.Tables.Add(dt);
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "系统参数读取成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.SystemError;
sre.Message = "系统参数不存在!";
}
#endregion
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
return sre;
}
///
/// 通过条码和工序判断是绑定、验证还是普通处理
///
/// 产品条码ram>
/// 工序IDram>
/// lsq 2021-11-22
/// int
public static ServiceResultEntity GetStatusByBarcode(string barCode, string procedureID, SUserInfo sUser){
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
conn.Connect();
//读取防伪码
if (sre.Status == Constant.ServiceResultStatus.Success)
{
string sqlString = @"
SELECT
CASE
WHEN
INSTR( ',' || T2.GOODSLISTBIND || ',', ',' || T0.GOODSCODE || ',' ) > 0
AND INSTR( ',' || T1.BINDPROCEDUREID || ',', ',' || :PROCEDUREID || ',' ) > 0
AND T4.COLLECTTYPE = 2
AND T4.MODELTYPE = 0
THEN
1
WHEN
INSTR( ',' || T3.GOODSLISTCHECK || ',', ',' || T0.GOODSCODE || ',' ) > 0
AND INSTR( ',' || T1.CHECKROCEDUREID || ',', ',' || :PROCEDUREID || ',' ) > 0
AND T4.COLLECTTYPE = 2
AND T4.MODELTYPE = 0
-- AND EXISTS(SELECT 1 FROM TP_PM_PRODUCTIONDATA WHERE VALUEFLAG = 1 AND PROCEDUREID = 3 AND BARCODE = :BARCODE AND CREATETIME >= TO_DATE('2021-12-16 11:00:00', 'YYYY-MM-DD HH24:MI:SS'))
THEN
2
ELSE
0
END AS STATUS
FROM
(
SELECT
GD.GOODSCODE,
1 AS WJ
FROM
TP_PM_GROUTINGDAILYDETAIL GD
LEFT JOIN TP_MST_GOODS G ON GD.GOODSID = G.GOODSID
WHERE
GD.BARCODE = :BARCODE
AND GD.VALUEFLAG = 1
) T0
INNER JOIN (
SELECT
B.SETTINGVALUE AS BINDPROCEDUREID,
C.SETTINGVALUE AS CHECKROCEDUREID,
1 AS WJ
FROM
TP_MST_SYSTEMSETTING B
LEFT JOIN TP_MST_SYSTEMSETTING C ON C.SETTINGCODE = 'S_PM_031'
WHERE
B.SETTINGCODE = 'S_PM_030'
) T1 ON T0.WJ = T1.WJ
INNER JOIN (
SELECT
1 AS WJ,
SECURITYCODEBINDFLAG,
LISTAGG ( TO_CHAR( GOODSCODE ), ',' ) WITHIN GROUP ( ORDER BY GOODSID ) AS GOODSLISTBIND
FROM
TP_MST_GOODS
WHERE
SECURITYCODEBINDFLAG = 1
GROUP BY
SECURITYCODEBINDFLAG
) T2 ON T1.WJ = T2.WJ
LEFT JOIN (
SELECT
1 AS WJ,
SECURITYCODECHECKFLAG,
LISTAGG ( TO_CHAR( GOODSCODE ), ',' ) WITHIN GROUP ( ORDER BY GOODSID ) AS GOODSLISTCHECK
FROM
TP_MST_GOODS
WHERE
SECURITYCODECHECKFLAG = 1
GROUP BY
SECURITYCODECHECKFLAG
) T3 ON T1.WJ = T3.WJ
INNER JOIN (
SELECT
1 AS WJ,
COLLECTTYPE,
MODELTYPE
FROM
TP_PC_PROCEDURE
WHERE
PROCEDUREID = :PROCEDUREID
) T4 ON T1.WJ = T4.WJ
";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BARCODE",OracleDbType.Varchar2, barCode,ParameterDirection.Input),
new OracleParameter(":PROCEDUREID",OracleDbType.Int32, Convert.ToInt32(procedureID),ParameterDirection.Input),
};
DataTable dt = conn.GetSqlResultToDt(sqlString, paras);
dt.TableName = "data";
sre.Data.Tables.Add(dt);
if (dt.Rows.Count > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "读取成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
return sre;
}
///
/// pda端注浆登记验证工号的注浆权限
///
/// 注浆信息
/// lsq 2021-08-25 新建
/// int
public static ServiceResultEntity CheckGroutingPower(string groutingData, SUserInfo sUser)
{
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
ServiceResultEntity sre1 = new ServiceResultEntity();
string sqlString = null;
try
{
conn.Connect();
JObject jsonL = JObject.Parse(groutingData);
#region pda端注浆登记验证工号的注浆权限
sqlString = $@" SELECT
1
FROM
TP_PC_GROUTINGLINE GL
INNER JOIN
TP_PC_GROUTINGUSER GU
ON
GL.GROUTINGLINEID = GU.GROUTINGLINEID
WHERE
GL.ACCOUNTID = {sUser.AccountID}
AND GU.USERID = {sUser.UserID}
AND GL.VALUEFLAG = 1
AND GL.GROUTINGLINECODE = '{jsonL["GROUTINGLINECODE"].ToString()}'
";
string str = conn.GetSqlResultToStr(sqlString);
if (str == "1" )
{
sre1 = SetGroutingLineDetail(groutingData, sUser);
sre.Status = sre1.Status;
sre.Message = sre1.Message;
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "无注浆权限!";
}
#endregion
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
return sre;
}
///
/// 通用读取系统设置参数方法 xuwei add 2021-09-11
///
///
///
///
public static ServiceResultEntity GetSystemSetting(string SettingCode, SUserInfo sUser)
{
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
string sqlString = null;
try
{
conn.Connect();
#region 读系统参数
sqlString = @"
SELECT
*
FROM
TP_MST_SYSTEMSETTING
WHERE
SETTINGCODE = :SETTINGCODE
";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":SETTINGCODE",OracleDbType.Varchar2, SettingCode,ParameterDirection.Input),
};
DataTable dt = conn.GetSqlResultToDt(sqlString, paras);
dt.TableName = "SETTING";
if (dt.Rows.Count > 0)
{
sre.Data.Tables.Add(dt);
sre.Result = dt.Rows[0]["SETTINGVALUE"].ToString();
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "系统参数读取成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.SystemError;
sre.Message = "系统参数不存在!";
}
#endregion
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
return sre;
}
///
/// 通用读取产品信息方法 xuwei add 2021-09-14
/// barCode可以接受防伪码进行查询 xuwei modi 2021-09-15
///
///
///
///
public static ServiceResultEntity GetGoodsByBarcode(string barCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
conn.Connect();
//读取防伪码
if (sre.Status == Constant.ServiceResultStatus.Success)
{
string sqlString = @"
SELECT
GD.BARCODE,
GD.SECURITYCODE,
GD.GOODSCODE,
GT.GOODSTYPECODE
FROM
TP_PM_GROUTINGDAILYDETAIL GD
LEFT JOIN TP_MST_GOODS G ON GD.GOODSID = G.GOODSID
LEFT JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
WHERE
(GD.BARCODE =:BARCODE OR GD.SECURITYCODE =:BARCODE )
AND GD.VALUEFLAG =1
";
OracleParameter[] paras = new OracleParameter[]{
new OracleParameter(":BARCODE",OracleDbType.Varchar2, barCode,ParameterDirection.Input),
};
DataTable dt = conn.GetSqlResultToDt(sqlString, paras);
dt.TableName = "Goods";
sre.Data.Tables.Add(dt);
if (dt.Rows.Count>0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "产品信息读取成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "没有查询结果!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
return sre;
}
#endregion
}
}