|
|
@@ -32,7 +32,8 @@ using static Dongke.IBOSS.PRD.Service.SAPHegiiDataService.SAPDataLogic;
|
|
|
using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
|
|
|
using System.Linq;
|
|
|
using Dongke.IBOSS.PRD.WCF.DataModels.PDAModule;
|
|
|
-using Dongke.IBOSS.PRD.Service.SAPHegiiDataService;
|
|
|
+using Dongke.IBOSS.PRD.Service.SAPHegiiDataService;
|
|
|
+using Dongke.IBOSS.PRD.Service.PMModuleService;
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
@@ -151,6 +152,91 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
}
|
|
|
//if (nodeBegin == -1) errMsg = "条码不正确,请检查!";
|
|
|
|
|
|
+ #region 校验是否需要半成品卡控及卡控数量是否允许交坯操作 20251218 add by qq
|
|
|
+ DataTable resultTable = new DataTable();
|
|
|
+ DataTable gddIDTable = new DataTable();
|
|
|
+ int systemSetvalue = 0;
|
|
|
+ //获取当前日期
|
|
|
+ object date = CMNModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
|
|
|
+ DateTime accountDatejp = Convert.ToDateTime(date).Date;
|
|
|
+ if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)
|
|
|
+ {
|
|
|
+ //查询系统参数,是否交坯卡控
|
|
|
+ systemSetvalue = PMModuleService.PMModuleLogic.getSystemSet(oracleTrConn, "S_PC_004", sUserInfo);
|
|
|
+
|
|
|
+ //拼接交坯产品条码
|
|
|
+ string barcodeCodes = "";
|
|
|
+ for (int i = 0; i < barcodeTable.Rows.Count; i++)
|
|
|
+ {
|
|
|
+ barcodeCodes += "'" + barcodeTable.Rows[i]["BARCODE"].ToString() + "',";
|
|
|
+ }
|
|
|
+ //查询产品商标汇总数量
|
|
|
+ string barcodesDetailsql = $@"SELECT D.GOODSCODE, D.LOGOID , COUNT(D.GROUTINGDAILYDETAILID) COUNT ,'' MAT20,0 PRODPLANID
|
|
|
+ FROM tp_pm_groutingdailydetail D
|
|
|
+ WHERE D.ACCOUNTID = { sUserInfo.AccountID}
|
|
|
+ AND D.VALUEFLAG = '1'
|
|
|
+ AND D.BARCODE IN ({ barcodeCodes.Substring(0,barcodeCodes.Length - 1) })
|
|
|
+ GROUP BY D.GOODSCODE,D.LOGOID ";
|
|
|
+
|
|
|
+ resultTable = oracleTrConn.GetSqlResultToDt(barcodesDetailsql);
|
|
|
+
|
|
|
+ //查询产品注浆信息
|
|
|
+ string groutingdailyDetailsql = $@"SELECT D.GOODSCODE, D.LOGOID , D.GROUTINGDAILYDETAILID
|
|
|
+ FROM tp_pm_groutingdailydetail D
|
|
|
+ WHERE D.ACCOUNTID = { sUserInfo.AccountID}
|
|
|
+ AND D.VALUEFLAG = '1'
|
|
|
+ AND D.BARCODE IN ({ barcodeCodes.Substring(0,barcodeCodes.Length - 1) }) ";
|
|
|
+
|
|
|
+ gddIDTable = oracleTrConn.GetSqlResultToDt(groutingdailyDetailsql);
|
|
|
+
|
|
|
+ //S_PC_004为1时,需要校验当月该半成品物料的计划数量
|
|
|
+ if (systemSetvalue == 1)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < resultTable.Rows.Count; i++)
|
|
|
+ {
|
|
|
+ //查询对应半成品物料(根据注浆的产品及商标)
|
|
|
+ string mat20 = PMModuleService.PMModuleLogic.getmaterialcodeMat20(oracleTrConn, resultTable.Rows[i]["GOODSCODE"].ToString(), Convert.ToInt32(resultTable.Rows[i]["LOGOID"]));
|
|
|
+
|
|
|
+ if (!string.IsNullOrWhiteSpace(mat20))
|
|
|
+ {
|
|
|
+ resultTable.Rows[i]["MAT20"] = mat20;
|
|
|
+ //查询半成品物料当月对应的计划数量,类型为交坯,第二个参数:2
|
|
|
+ DataTable planTabel = PMModuleService.PMModuleLogic.getPlanDetail(oracleTrConn, 2, mat20, accountDatejp);
|
|
|
+
|
|
|
+ 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)
|
|
|
+ {
|
|
|
+ errMsg = "无法交坯:此次交坯超过产销卡控计划交坯数量,请核实。";
|
|
|
+ dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
|
|
|
+ dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
|
|
|
+ dtBarCode.Rows.Add(dr);
|
|
|
+ return dtBarCode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //无计划,无法交坯
|
|
|
+ errMsg = "无法交坯:该物料无产销计划,请核实。";
|
|
|
+ dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
|
|
|
+ dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
|
|
|
+ dtBarCode.Rows.Add(dr);
|
|
|
+ return dtBarCode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
|
|
|
#region 标准计件和坯库
|
|
|
if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal
|
|
|
@@ -367,6 +453,68 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
+
|
|
|
+ #region 交坯之后反写半成品卡控计划物料计划交坯数量 add by qq 20251218
|
|
|
+ for (int i = 0; i < resultTable.Rows.Count; i++)
|
|
|
+ {
|
|
|
+ int proPlanID = 0;
|
|
|
+ //S_PC_003为0时,需要查找每个产品对应的当月该半成品物料的计划ID
|
|
|
+ //为1时,校验时已经查询过,无须再查
|
|
|
+ if (systemSetvalue == 0)
|
|
|
+ {
|
|
|
+ //查询对应半成品物料(根据注浆的产品及商标)
|
|
|
+ string mat20 = PMModuleService.PMModuleLogic.getmaterialcodeMat20(oracleTrConn, resultTable.Rows[i]["GOODSCODE"].ToString(), Convert.ToInt32(resultTable.Rows[i]["LOGOID"]));
|
|
|
+
|
|
|
+ if (!string.IsNullOrWhiteSpace(mat20))
|
|
|
+ {
|
|
|
+ resultTable.Rows[i]["MAT20"] = mat20;
|
|
|
+ //查询半成品物料当月对应的计划数量
|
|
|
+ DataTable planTabel = PMModuleService.PMModuleLogic.getPlanDetail(oracleTrConn, 2, mat20, accountDatejp);
|
|
|
+
|
|
|
+ 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 = oracleTrConn.ExecuteNonQuery(proSql, proParas);
|
|
|
+
|
|
|
+ //查找注浆明细中该产品商标都有哪些,插入关联表
|
|
|
+ DataRow[] groutingDailyDetailRows = gddIDTable.Select("GOODSCODE = '" + resultTable.Rows[i]["GOODSCODE"].ToString()
|
|
|
+ + "' and LOGOID = " + resultTable.Rows[i]["LOGOID"].ToString());
|
|
|
+ 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, sUserInfo.AccountID, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":CREATEUSERID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ executeResult = oracleTrConn.ExecuteNonQuery(proSql, proParas);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
@@ -11167,8 +11315,8 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
UNION ALL
|
|
|
--生产数据该产品商标在装配环节保存的数量(装配环节没有变更商标)
|
|
|
SELECT pd.goodsid ,pd.logoid ,COUNT(distinct pd.barcode) changenum
|
|
|
- FROM tp_pm_productiondata pd
|
|
|
- LEFT JOIN tp_pc_procedure p ON pd.procedureid = p.procedureid
|
|
|
+ FROM TP_PM_FINISHEDPRODUCT pd
|
|
|
+ -- LEFT JOIN tp_pc_procedure p ON pd.procedureid = p.procedureid
|
|
|
left join (SELECT pp.goodsid,pp.logoid,pp.quantity,gdd.materialcode,pp.begintime ,pp.endtime
|
|
|
FROM tp_pm_production_plan pp
|
|
|
LEFT JOIN tp_pm_groutingdailydetail gdd ON pp.goodsid = gdd.goodsid
|
|
|
@@ -11176,11 +11324,11 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
and pp.logoid = :logoid
|
|
|
AND pp.begintime <= SYSDATE
|
|
|
AND pp.endtime > SYSDATE AND pp.CONTROLRANGE = 1 AND pp.VALUEFLAG = 1 ) plans1 on plans1.goodsid = pd.goodsid and plans1.logoid = pd.logoid
|
|
|
- WHERE pd.createtime >= plans1.begintime
|
|
|
- and pd.createtime < plans1.endtime
|
|
|
+ WHERE pd.fhtime >= trunc(plans1.begintime)
|
|
|
+ and pd.fhtime < trunc(plans1.endtime)
|
|
|
and pd.valueflag = 1
|
|
|
- and p.modeltype = '-5'
|
|
|
- and p.procedureid not in(126,152)
|
|
|
+ --and p.modeltype = '-5'
|
|
|
+ --and p.procedureid not in(126,152)
|
|
|
AND NOT EXISTS (SELECT s.barcode
|
|
|
FROM tp_pm_logochangedrecord s
|
|
|
LEFT JOIN tp_pc_procedure p ON s.procedureid = p.procedureid
|
|
|
@@ -11189,6 +11337,14 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
and p.procedureid not in(126,152)
|
|
|
--AND s.oldlogoid = pd.logoid
|
|
|
AND s.oldlogoid <> s.newlogoid)
|
|
|
+ AND EXISTS (SELECT pdd.barcode
|
|
|
+ FROM tp_pm_productiondata pdd
|
|
|
+ LEFT JOIN tp_pc_procedure p ON pdd.procedureid = p.procedureid
|
|
|
+ WHERE pdd.barcode = pd.barcode
|
|
|
+ AND p.modeltype = '-5'
|
|
|
+ AND pdd.valueflag = 1
|
|
|
+ and p.procedureid not in(126,152)
|
|
|
+ and pdd.createtime >=plans1.begintime )
|
|
|
GROUP BY pd.goodsid,pd.logoid
|
|
|
) changedata
|
|
|
WHERE changedata.logoid = :logoid ";
|
|
|
@@ -18824,6 +18980,61 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
rutenRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
|
|
|
returnRows += rutenRows;
|
|
|
|
|
|
+ #region 编辑时,撤销交坯对应减去计划中实际交坯数及关联数据 20251218
|
|
|
+ //获取当前日期
|
|
|
+ object date = CMNModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
|
|
|
+ DateTime accountDatejp = Convert.ToDateTime(date).Date;
|
|
|
+
|
|
|
+ //查询产品注浆信息
|
|
|
+ string groutingdailyDetailsql = $@"SELECT D.GOODSCODE, D.LOGOID , D.GROUTINGDAILYDETAILID
|
|
|
+ FROM tp_pm_groutingdailydetail D
|
|
|
+ WHERE D.ACCOUNTID = { sUserInfo.AccountID}
|
|
|
+ AND D.VALUEFLAG = '1'
|
|
|
+ AND D.BARCODE IN ('{barcode}')";
|
|
|
+
|
|
|
+ DataTable gddIDTable = oracleTrConn.GetSqlResultToDt(groutingdailyDetailsql);
|
|
|
+ //撤销交坯
|
|
|
+ //查询对应半成品物料(根据注浆的产品及商标)
|
|
|
+ string mat20 = PMModuleService.PMModuleLogic.getmaterialcodeMat20(oracleTrConn, gddIDTable.Rows[0]["GOODSCODE"].ToString(), Convert.ToInt32(gddIDTable.Rows[0]["LOGOID"]));
|
|
|
+ int proPlanID = 0;
|
|
|
+ if (!string.IsNullOrWhiteSpace(mat20))
|
|
|
+ {
|
|
|
+ //查询半成品物料当月对应的计划数量
|
|
|
+ DataTable planTabel = PMModuleService.PMModuleLogic.getPlanDetail(oracleTrConn, 2, mat20, accountDatejp);
|
|
|
+
|
|
|
+ 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( gddIDTable.Rows[0]["GROUTINGDAILYDETAILID"]), ParameterDirection.Input),
|
|
|
+ new OracleParameter(":ACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":CREATEUSERID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ int executeResult = oracleTrConn.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 = oracleTrConn.ExecuteNonQuery(proSql, proParas);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
if (returnRows <= 0)
|
|
|
{
|
|
|
oracleTrConn.Rollback();
|
|
|
@@ -19302,7 +19513,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
/// 设置条码商标
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- public static int SaveBarCodeLogo(string barcode, int logoid, SUserInfo sUserInfo, out string returnMessage)
|
|
|
+ public static int SaveBarCodeLogo(string barcode, int logoid, SUserInfo sUserInfo, out string returnMessage,int cckflag=0)
|
|
|
{
|
|
|
int returnRows = 0;
|
|
|
returnMessage = "";
|
|
|
@@ -19337,7 +19548,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
//sql = @"select g.logoid, f.fhuserid from tp_pm_groutingdailydetail g
|
|
|
// left join tp_pm_finishedproduct f on g.barcode = f.barcode
|
|
|
// where g.barcode=:barcode";
|
|
|
- sql = @"select g.logoid,g.GROUTINGDAILYDETAILID,g.materialcode,f.fhuserid from tp_pm_groutingdailydetail g
|
|
|
+ sql = @"select g.logoid,g.GROUTINGDAILYDETAILID,g.materialcode,f.fhuserid,f.barcode from tp_pm_groutingdailydetail g
|
|
|
left join tp_pm_finishedproduct f on g.barcode = f.barcode
|
|
|
where g.barcode=:barcode";
|
|
|
//end
|
|
|
@@ -19349,6 +19560,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
{
|
|
|
oldLogoID = dt.Rows[0]["logoid"];
|
|
|
object fhuserid = dt.Rows[0]["fhuserid"];
|
|
|
+ string fhbarcode = dt.Rows[0]["barcode"].ToString();
|
|
|
//lsq 20210723 已注浆非产成品没有商标可以变更商标
|
|
|
//begin
|
|
|
pdid = dt.Rows[0]["GROUTINGDAILYDETAILID"];
|
|
|
@@ -19365,6 +19577,11 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
// "已交接的产品不能变更商标";
|
|
|
return -3;
|
|
|
}
|
|
|
+ if (!string.IsNullOrWhiteSpace(fhbarcode))
|
|
|
+ {
|
|
|
+ // "成品不能变更商标";
|
|
|
+ return -3;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#region 根据生产计划,判断商标数量
|
|
|
@@ -19459,8 +19676,8 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
and pp.logoid = :logoid
|
|
|
AND pp.begintime <= SYSDATE
|
|
|
AND pp.endtime > SYSDATE AND pp.CONTROLRANGE = 2 AND pp.VALUEFLAG = 1) plans1 on plans1.goodsid = fp.goodsid and plans1.logoid = fp.logoid
|
|
|
- WHERE fp.createtime >= plans1.begintime
|
|
|
- AND fp.createtime < plans1.endtime
|
|
|
+ WHERE fp.FHTIME >= plans1.begintime
|
|
|
+ AND fp.FHTIME < plans1.endtime
|
|
|
and fp.valueflag = 1
|
|
|
AND NOT EXISTS (SELECT s.barcode
|
|
|
FROM tp_pm_logochangedrecord s
|
|
|
@@ -19480,7 +19697,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
if (!string.IsNullOrWhiteSpace(quantityTable.Rows[0]["CHANGENUM"].ToString()))
|
|
|
{
|
|
|
//实际变换商标的数量大于计划的数量,不能再变
|
|
|
- if (Convert.ToDecimal(quantityTable.Rows[0]["CHANGENUM"]) >= Convert.ToDecimal(planTable.Rows[0]["quantity"]))
|
|
|
+ if (Convert.ToDecimal(quantityTable.Rows[0]["CHANGENUM"])- Convert.ToDecimal(cckflag) >= Convert.ToDecimal(planTable.Rows[0]["quantity"]))
|
|
|
{
|
|
|
return -5;
|
|
|
}
|
|
|
@@ -31027,33 +31244,41 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
AND s.valueflag = 1 AND s.createtime >= l.createtime)
|
|
|
GROUP BY ip.goodsid ,ip.logoid
|
|
|
UNION ALL
|
|
|
- --生产数据该产品商标在装配环节保存的数量(装配环节没有变更商标)
|
|
|
- SELECT pd.goodsid ,pd.logoid ,COUNT(distinct pd.barcode) changenum
|
|
|
- FROM tp_pm_productiondata pd
|
|
|
- LEFT JOIN tp_pc_procedure p ON pd.procedureid = p.procedureid
|
|
|
- left join (SELECT pp.goodsid,pp.logoid,pp.quantity,gdd.materialcode,pp.begintime ,pp.endtime
|
|
|
- FROM tp_pm_production_plan pp
|
|
|
- LEFT JOIN tp_pm_groutingdailydetail gdd ON pp.goodsid = gdd.goodsid
|
|
|
- WHERE gdd.barcode = :barcode
|
|
|
- and pp.logoid = :logoid
|
|
|
- AND pp.begintime <= SYSDATE
|
|
|
- AND pp.endtime > SYSDATE AND pp.CONTROLRANGE = 1 AND pp.VALUEFLAG = 1 ) plans1 on plans1.goodsid = pd.goodsid and plans1.logoid = pd.logoid
|
|
|
- WHERE pd.createtime >= plans1.begintime
|
|
|
- and pd.createtime < plans1.endtime
|
|
|
- and pd.valueflag = 1
|
|
|
- and p.modeltype = '-5'
|
|
|
- and p.procedureid not in(126,152)
|
|
|
- AND NOT EXISTS (SELECT s.barcode
|
|
|
- FROM tp_pm_logochangedrecord s
|
|
|
- LEFT JOIN tp_pc_procedure p ON s.procedureid = p.procedureid
|
|
|
- WHERE s.barcode = pd.barcode
|
|
|
- AND p.modeltype = '-5'
|
|
|
- and p.procedureid not in(126,152)
|
|
|
- --AND s.oldlogoid = pd.logoid
|
|
|
- AND s.oldlogoid <> s.newlogoid)
|
|
|
- GROUP BY pd.goodsid,pd.logoid
|
|
|
- ) changedata
|
|
|
- WHERE changedata.logoid = :logoid ";
|
|
|
+ --生产数据该产品商标在装配环节保存的数量(装配环节没有变更商标)
|
|
|
+ SELECT pd.goodsid ,pd.logoid ,COUNT(distinct pd.barcode) changenum
|
|
|
+ FROM TP_PM_FINISHEDPRODUCT pd
|
|
|
+ -- LEFT JOIN tp_pc_procedure p ON pd.procedureid = p.procedureid
|
|
|
+ left join (SELECT pp.goodsid,pp.logoid,pp.quantity,gdd.materialcode,pp.begintime ,pp.endtime
|
|
|
+ FROM tp_pm_production_plan pp
|
|
|
+ LEFT JOIN tp_pm_groutingdailydetail gdd ON pp.goodsid = gdd.goodsid
|
|
|
+ WHERE gdd.barcode = :barcode
|
|
|
+ and pp.logoid = :logoid
|
|
|
+ AND pp.begintime <= SYSDATE
|
|
|
+ AND pp.endtime > SYSDATE AND pp.CONTROLRANGE = 1 AND pp.VALUEFLAG = 1 ) plans1 on plans1.goodsid = pd.goodsid and plans1.logoid = pd.logoid
|
|
|
+ WHERE pd.fhtime >= trunc(plans1.begintime)
|
|
|
+ and pd.fhtime < trunc(plans1.endtime)
|
|
|
+ and pd.valueflag = 1
|
|
|
+ --and p.modeltype = '-5'
|
|
|
+ --and p.procedureid not in(126,152)
|
|
|
+ AND NOT EXISTS (SELECT s.barcode
|
|
|
+ FROM tp_pm_logochangedrecord s
|
|
|
+ LEFT JOIN tp_pc_procedure p ON s.procedureid = p.procedureid
|
|
|
+ WHERE s.barcode = pd.barcode
|
|
|
+ AND p.modeltype = '-5'
|
|
|
+ and p.procedureid not in(126,152)
|
|
|
+ --AND s.oldlogoid = pd.logoid
|
|
|
+ AND s.oldlogoid <> s.newlogoid)
|
|
|
+ AND EXISTS (SELECT pdd.barcode
|
|
|
+ FROM tp_pm_productiondata pdd
|
|
|
+ LEFT JOIN tp_pc_procedure p ON pdd.procedureid = p.procedureid
|
|
|
+ WHERE pdd.barcode = pd.barcode
|
|
|
+ AND p.modeltype = '-5'
|
|
|
+ AND pdd.valueflag = 1
|
|
|
+ and p.procedureid not in(126,152)
|
|
|
+ and pdd.createtime >=plans1.begintime )
|
|
|
+ GROUP BY pd.goodsid,pd.logoid
|
|
|
+ ) changedata
|
|
|
+ WHERE changedata.logoid = :logoid ";
|
|
|
DataTable quantityTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
new OracleParameter(":logoid",OracleDbType.Varchar2, logoid,ParameterDirection.Input),
|
|
|
@@ -33067,7 +33292,7 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
for (int i = 0; i < dtData.Rows.Count; i++)
|
|
|
{
|
|
|
#region 产品是否在产成表中
|
|
|
- sql = "select FHUserCode,LCFHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode";
|
|
|
+ sql = "select FHUserCode,LCFHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode for update";
|
|
|
Paras = new OracleParameter[]{
|
|
|
new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
|
|
|
};
|
|
|
@@ -33101,73 +33326,130 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
}
|
|
|
|
|
|
#region 更新产成品相关信息
|
|
|
- sql = @"update TP_PM_FinishedProduct
|
|
|
- set LCFHUserID=:LCFHUserID,
|
|
|
- LCFHUserCode=:LCFHUserCode,
|
|
|
- LCFHBatchNo=:LCFHBatchNo,
|
|
|
- LCFHTime=sysdate,
|
|
|
- UpdateUserID=:UpdateUserID
|
|
|
- where Barcode=:Barcode";
|
|
|
- Paras = new OracleParameter[]{
|
|
|
- new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
|
|
|
- new OracleParameter(":LCFHUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
|
|
|
- new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
|
|
|
- new OracleParameter(":LCFHUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
|
|
|
- new OracleParameter(":LCFHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
|
|
|
- };
|
|
|
- oracleTrConn2.ExecuteNonQuery(sql, Paras);
|
|
|
+ //sql = @"update TP_PM_FinishedProduct
|
|
|
+ // set LCFHUserID=:LCFHUserID,
|
|
|
+ // LCFHUserCode=:LCFHUserCode,
|
|
|
+ // LCFHBatchNo=:LCFHBatchNo,
|
|
|
+ // LCFHTime=sysdate,
|
|
|
+ // UpdateUserID=:UpdateUserID
|
|
|
+ // where Barcode=:Barcode";
|
|
|
+ //Paras = new OracleParameter[]{
|
|
|
+ // new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
|
|
|
+ // new OracleParameter(":LCFHUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
|
|
|
+ // new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
|
|
|
+ // new OracleParameter(":LCFHUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
|
|
|
+ // new OracleParameter(":LCFHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
|
|
|
+ // };
|
|
|
+ //oracleTrConn2.ExecuteNonQuery(sql, Paras);
|
|
|
#endregion
|
|
|
|
|
|
- //查询最近一次裸瓷保存的生产数据ID
|
|
|
- sql = "select MAX(productionDataID) productionDataID from TP_PM_PRODUCTIONDATA where Barcode=:Barcode AND PROCEDUREID = 159 ";
|
|
|
- Paras = new OracleParameter[]{
|
|
|
- new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
|
|
|
- };
|
|
|
- DataTable productionDataIDdt = oracleTrConn2.GetSqlResultToDt(sql, Paras);
|
|
|
-
|
|
|
- sql = "select MATERIALCODE from tp_pm_groutingdailydetail where Barcode=:Barcode ";
|
|
|
- Paras = new OracleParameter[]{
|
|
|
- new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
|
|
|
- };
|
|
|
- DataTable materialcodedt = oracleTrConn2.GetSqlResultToDt(sql, Paras);
|
|
|
+ ////查询最近一次裸瓷保存的生产数据ID
|
|
|
+ //sql = "select MAX(productionDataID) productionDataID from TP_PM_PRODUCTIONDATA where Barcode=:Barcode AND PROCEDUREID = 159 ";
|
|
|
+ //Paras = new OracleParameter[]{
|
|
|
+ // new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
|
|
|
+ //};
|
|
|
+ //DataTable productionDataIDdt = oracleTrConn2.GetSqlResultToDt(sql, Paras);
|
|
|
|
|
|
- // 交接记录
|
|
|
- sql = " INSERT INTO TP_PM_LCFHDO\n" +
|
|
|
- " (GroutingDailyDetailID\n" +
|
|
|
- " ,LCFHUserID\n" +
|
|
|
- " ,LCFHUserCode\n" +
|
|
|
- " ,LCFHBatchNo\n" +
|
|
|
- " ,LCFHTime\n" +
|
|
|
- " ,OnlyCode\n" +
|
|
|
- " ,FINISHEDLOADBATCHNO\n" +
|
|
|
- " ,MATERIALCODE\n" +
|
|
|
- " ,PRODUCTIONDATAID\n" +
|
|
|
- " ,AccountID\n" +
|
|
|
- " ,CreateUserID)\n" +
|
|
|
- " SELECT t.groutingdailydetailid\n" +
|
|
|
- " ,t.lcfhuserid\n" +
|
|
|
- " ,t.lcfhusercode\n" +
|
|
|
- " ,t.lcfhbatchno\n" +
|
|
|
- " ,t.lcfhtime\n" +
|
|
|
- " ,t.onlycode\n" +
|
|
|
- " ,t.FINISHEDLOADBATCHNO\n" +
|
|
|
- " ,:MATERIALCODE\n" +
|
|
|
- " ,:PRODUCTIONDATAID\n" +
|
|
|
- " ,t.AccountID\n" +
|
|
|
- " ,:UpdateUserID\n" +
|
|
|
- " FROM TP_PM_FinishedProduct t\n" +
|
|
|
- " WHERE t.barcode = :BarCode";
|
|
|
- Paras = new OracleParameter[]
|
|
|
- {
|
|
|
- new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
|
|
|
- new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
|
|
|
- new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,Convert.ToInt32( productionDataIDdt.Rows[0]["productionDataID"]),ParameterDirection.Input),
|
|
|
- new OracleParameter(":MATERIALCODE",OracleDbType.NVarchar2, materialcodedt.Rows[0]["MATERIALCODE"].ToString(),ParameterDirection.Input),
|
|
|
- };
|
|
|
- int resultRow = oracleTrConn2.ExecuteNonQuery(sql, Paras);
|
|
|
+ //sql = "select MATERIALCODE from tp_pm_groutingdailydetail where Barcode=:Barcode ";
|
|
|
+ //Paras = new OracleParameter[]{
|
|
|
+ // new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
|
|
|
+ //};
|
|
|
+ //DataTable materialcodedt = oracleTrConn2.GetSqlResultToDt(sql, Paras);
|
|
|
+
|
|
|
+ //// 交接记录
|
|
|
+ //sql = " INSERT INTO TP_PM_LCFHDO\n" +
|
|
|
+ //" (GroutingDailyDetailID\n" +
|
|
|
+ //" ,LCFHUserID\n" +
|
|
|
+ //" ,LCFHUserCode\n" +
|
|
|
+ //" ,LCFHBatchNo\n" +
|
|
|
+ //" ,LCFHTime\n" +
|
|
|
+ //" ,OnlyCode\n" +
|
|
|
+ //" ,FINISHEDLOADBATCHNO\n" +
|
|
|
+ //" ,MATERIALCODE\n" +
|
|
|
+ //" ,PRODUCTIONDATAID\n" +
|
|
|
+ //" ,AccountID\n" +
|
|
|
+ //" ,CreateUserID)\n" +
|
|
|
+ //" SELECT t.groutingdailydetailid\n" +
|
|
|
+ //" ,t.lcfhuserid\n" +
|
|
|
+ //" ,t.lcfhusercode\n" +
|
|
|
+ //" ,t.lcfhbatchno\n" +
|
|
|
+ //" ,t.lcfhtime\n" +
|
|
|
+ //" ,t.onlycode\n" +
|
|
|
+ //" ,t.FINISHEDLOADBATCHNO\n" +
|
|
|
+ //" ,:MATERIALCODE\n" +
|
|
|
+ //" ,:PRODUCTIONDATAID\n" +
|
|
|
+ //" ,t.AccountID\n" +
|
|
|
+ //" ,:UpdateUserID\n" +
|
|
|
+ //" FROM TP_PM_FinishedProduct t\n" +
|
|
|
+ //" WHERE t.barcode = :BarCode";
|
|
|
+ //Paras = new OracleParameter[]
|
|
|
+ //{
|
|
|
+ // new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
|
|
|
+ // new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
|
|
|
+ // new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,Convert.ToInt32( productionDataIDdt.Rows[0]["productionDataID"]),ParameterDirection.Input),
|
|
|
+ // new OracleParameter(":MATERIALCODE",OracleDbType.NVarchar2, materialcodedt.Rows[0]["MATERIALCODE"].ToString(),ParameterDirection.Input),
|
|
|
+ //};
|
|
|
+ //int resultRow = oracleTrConn2.ExecuteNonQuery(sql, Paras);
|
|
|
#endregion
|
|
|
}
|
|
|
|
|
|
+ #region 批量更新交接表。一板产品的交接时间不一致 add qq 20260126
|
|
|
+ // 获取一个时间
|
|
|
+ string fixedTimeSql = "SELECT SYSDATE FROM DUAL";
|
|
|
+ DataTable dt = oracleTrConn2.GetSqlResultToDt(fixedTimeSql);
|
|
|
+ DateTime fixedTime = Convert.ToDateTime(dt.Rows[0][0]);
|
|
|
+
|
|
|
+ sql = @" UPDATE TP_PM_FinishedProduct bar
|
|
|
+ SET bar.LCFHUserID = :LCFHUserID,
|
|
|
+ bar.LCFHUserCode = :LCFHUserCode,
|
|
|
+ bar.LCFHBatchNo = :LCFHBatchNo,
|
|
|
+ bar.LCFHTime = :LCFHTime,
|
|
|
+ bar.UpdateUserID = :UpdateUserID
|
|
|
+ WHERE 1 = 1 " + fifter;
|
|
|
+ Paras = new OracleParameter[]{
|
|
|
+ new OracleParameter(":LCFHUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":LCFHUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":LCFHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":LCFHTime",OracleDbType.Date, fixedTime,ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ oracleTrConn2.ExecuteNonQuery(sql, Paras);
|
|
|
+
|
|
|
+ //交接记录
|
|
|
+ sql = @" INSERT INTO TP_PM_LCFHDO
|
|
|
+ (GroutingDailyDetailID, LCFHUserID, LCFHUserCode, LCFHBatchNo,
|
|
|
+ LCFHTime, OnlyCode, FINISHEDLOADBATCHNO, MATERIALCODE,
|
|
|
+ PRODUCTIONDATAID, AccountID, CreateUserID)
|
|
|
+ SELECT bar.groutingdailydetailid,
|
|
|
+ bar.LCFHUserID,
|
|
|
+ bar.LCFHUserCode,
|
|
|
+ bar.LCFHBatchNo,
|
|
|
+ bar.LCFHTime,
|
|
|
+ bar.onlycode,
|
|
|
+ bar.FINISHEDLOADBATCHNO,
|
|
|
+ gdd.MATERIALCODE,
|
|
|
+ pd.PRODUCTIONDATAID,
|
|
|
+ bar.AccountID,
|
|
|
+ :UpdateUserID
|
|
|
+ FROM TP_PM_FinishedProduct bar
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT bar.Barcode, MAX(bar.PRODUCTIONDATAID) as PRODUCTIONDATAID
|
|
|
+ FROM TP_PM_PRODUCTIONDATA bar
|
|
|
+ WHERE bar.PROCEDUREID = 159 "
|
|
|
+ + fifter + @" GROUP BY bar.Barcode
|
|
|
+ ) pd ON bar.Barcode = pd.Barcode
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT bar.Barcode, bar.MATERIALCODE
|
|
|
+ FROM tp_pm_groutingdailydetail bar
|
|
|
+ WHERE 1 = 1 " + fifter + @" ) gdd ON bar.Barcode = gdd.Barcode
|
|
|
+ WHERE 1 = 1 " + fifter;
|
|
|
+
|
|
|
+ Paras = new OracleParameter[]{
|
|
|
+ new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ int resultRow = oracleTrConn2.ExecuteNonQuery(sql, Paras);
|
|
|
+ #endregion
|
|
|
+
|
|
|
#region 同步美云接口
|
|
|
//查询该板数据
|
|
|
sql = @"SELECT BAR.BARCODE,GDD.MATERIALCODE,NVL(BAR.BANMA,BAR.FINISHEDLOADBATCHNO) BANMA,BAR.LCFHTIME,BAR.LCFHUSERCODE,BAR.LCFHBATCHNO,BAR.FINISHEDLOADBATCHNO
|
|
|
@@ -33211,6 +33493,8 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
//调用接口
|
|
|
try
|
|
|
{
|
|
|
+ // 插入日志记录调用美云接口开始时间
|
|
|
+ OutputLog.TraceLog(LogPriority.Information, "美云接口调用开始时间", "POST", postString, LocalPath.LogExePath + "SAP_HEGII\\Info_030");
|
|
|
result = SAPDataLogic.PostData(urlmy, postString, "POST");
|
|
|
}
|
|
|
catch (Exception ex)
|