|
|
@@ -29,6 +29,8 @@ using Dongke.WinForm.Controls.InvoiceLayout;
|
|
|
|
|
|
using Oracle.ManagedDataAccess.Client;
|
|
|
using static Dongke.IBOSS.PRD.Service.SAPHegiiDataService.SAPDataLogic;
|
|
|
+using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
|
|
|
+using System.Linq;
|
|
|
|
|
|
namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
{
|
|
|
@@ -55,7 +57,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
{
|
|
|
procedureInfo = null;
|
|
|
if (barcodeTable == null || barcodeTable.Rows.Count == 0)
|
|
|
- {
|
|
|
+ {
|
|
|
return null;
|
|
|
}
|
|
|
// 实例返回的Talbe
|
|
|
@@ -10433,8 +10435,8 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
new OracleParameter(":LEAKFLAG7", productionData.LeakFlag7),
|
|
|
new OracleParameter(":groutingdailydetailid", groutingdailydetailid)
|
|
|
});
|
|
|
- if (productionData.LeakFlag1 != leakflag1.ToString())
|
|
|
- {
|
|
|
+ if (productionData.LeakFlag1 != leakflag1.ToString())
|
|
|
+ {
|
|
|
string sqlString = @"
|
|
|
INSERT INTO tp_pm_goodsleak
|
|
|
(BARCODE,
|
|
|
@@ -10468,7 +10470,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
new OracleParameter(":USERID", sUserInfo.UserID)
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
@@ -11070,15 +11072,15 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
ischanged = 1;
|
|
|
int returnRows = SetBarCodeLogo(oracleTrConn, productionData.Barcode, productionData.NewLogoID.ToNullableInt32().Value, sUserInfo);
|
|
|
|
|
|
- if (returnRows == -5)
|
|
|
- {
|
|
|
- return "该商标已超过生产计划允许变更数量,不能变更商标";
|
|
|
- }
|
|
|
- else if (returnRows == -6)
|
|
|
- {
|
|
|
+ if (returnRows == -5)
|
|
|
+ {
|
|
|
+ return "该商标已超过生产计划允许变更数量,不能变更商标";
|
|
|
+ }
|
|
|
+ else if (returnRows == -6)
|
|
|
+ {
|
|
|
return "该商标无生产计划,不允许变更商标";
|
|
|
}
|
|
|
- string canSaveIdnrks = ",";
|
|
|
+ string canSaveIdnrks = ",";
|
|
|
if (productionData.CanSaveIdnrkList != null && productionData.CanSaveIdnrkList.Count > 0)
|
|
|
{
|
|
|
foreach (IdnrkEntity entity in productionData.CanSaveIdnrkList)
|
|
|
@@ -11098,26 +11100,26 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
new OracleParameter(":CANSAVEIDNRKS", canSaveIdnrks)
|
|
|
});
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- ischanged = 0;
|
|
|
- //20240510 by qq 不需要商标变更的也要控制不是计划的不让保存
|
|
|
- #region 根据生产计划,判断商标数量
|
|
|
- //根据生控计划 固定工序,用户是否拥有高级权限,判断商标切换的剩余数量是否满足条件等 20240418 add by qq
|
|
|
- sql = @"SELECT PLANFLAG FROM TP_MST_User WHERE usercode = :usercode";
|
|
|
- //end
|
|
|
-
|
|
|
- DataTable userTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":usercode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input)
|
|
|
- });
|
|
|
- if (userTable != null && userTable.Rows.Count > 0)
|
|
|
- {
|
|
|
- if (userTable.Rows[0]["PLANFLAG"].ToString() == "0")
|
|
|
- {
|
|
|
- //等于0为低级权限,需要判断数量,等于1为高级权限,无需控制变更产品
|
|
|
-
|
|
|
- //再查询该产品所有商标有没有计划数量 ,查出来则为有
|
|
|
- sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,PP.BEGINTIME,PP.ENDTIME
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ischanged = 0;
|
|
|
+ //20240510 by qq 不需要商标变更的也要控制不是计划的不让保存
|
|
|
+ #region 根据生产计划,判断商标数量
|
|
|
+ //根据生控计划 固定工序,用户是否拥有高级权限,判断商标切换的剩余数量是否满足条件等 20240418 add by qq
|
|
|
+ sql = @"SELECT PLANFLAG FROM TP_MST_User WHERE usercode = :usercode";
|
|
|
+ //end
|
|
|
+
|
|
|
+ DataTable userTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":usercode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input)
|
|
|
+ });
|
|
|
+ if (userTable != null && userTable.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ if (userTable.Rows[0]["PLANFLAG"].ToString() == "0")
|
|
|
+ {
|
|
|
+ //等于0为低级权限,需要判断数量,等于1为高级权限,无需控制变更产品
|
|
|
+
|
|
|
+ //再查询该产品所有商标有没有计划数量 ,查出来则为有
|
|
|
+ sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,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
|
|
|
@@ -11126,14 +11128,14 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
AND PP.BEGINTIME <= SYSDATE
|
|
|
AND PP.ENDTIME > SYSDATE
|
|
|
AND PP.CONTROLRANGE = 1 ";
|
|
|
- DataTable planTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":BARCODE",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
|
|
|
- new OracleParameter(":LOGOID",OracleDbType.Varchar2, oldLogoID,ParameterDirection.Input),
|
|
|
- });
|
|
|
- //有计划,判断数量
|
|
|
- if (planTable != null && planTable.Rows.Count > 0)
|
|
|
- {
|
|
|
- sql = @"SELECT sum(changedata.CHANGENUM) CHANGENUM FROM (
|
|
|
+ DataTable planTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":BARCODE",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":LOGOID",OracleDbType.Varchar2, oldLogoID,ParameterDirection.Input),
|
|
|
+ });
|
|
|
+ //有计划,判断数量
|
|
|
+ if (planTable != null && planTable.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ sql = @"SELECT sum(changedata.CHANGENUM) CHANGENUM FROM (
|
|
|
--在装配环节变更数量
|
|
|
SELECT ip.goodsid,ip.logoid,COUNT(distinct l.barcode) CHANGENUM
|
|
|
FROM tp_pm_logochangedrecord l
|
|
|
@@ -11187,12 +11189,12 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
GROUP BY pd.goodsid,pd.logoid
|
|
|
) changedata
|
|
|
WHERE changedata.logoid = :logoid ";
|
|
|
- DataTable quantityTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
|
|
|
- new OracleParameter(":logoid",OracleDbType.Varchar2, oldLogoID,ParameterDirection.Input),
|
|
|
- });
|
|
|
- if (quantityTable != null && quantityTable.Rows.Count > 0)
|
|
|
- {
|
|
|
+ DataTable quantityTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":logoid",OracleDbType.Varchar2, oldLogoID,ParameterDirection.Input),
|
|
|
+ });
|
|
|
+ if (quantityTable != null && quantityTable.Rows.Count > 0)
|
|
|
+ {
|
|
|
if (!string.IsNullOrWhiteSpace(quantityTable.Rows[0]["CHANGENUM"].ToString()))
|
|
|
{
|
|
|
//实际变换商标的数量大于计划的数量,不能再变
|
|
|
@@ -11201,13 +11203,13 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
return "该商标已超过生产计划允许变更数量,不能保存";
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //这个品这个商标没有计划,查看这个品其他商标有没有计划,其他商标有计划,则控制不能变更这个商标
|
|
|
- sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,PP.BEGINTIME,PP.ENDTIME
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //这个品这个商标没有计划,查看这个品其他商标有没有计划,其他商标有计划,则控制不能变更这个商标
|
|
|
+ sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,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
|
|
|
@@ -11215,33 +11217,33 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
AND PP.BEGINTIME <= SYSDATE
|
|
|
AND PP.ENDTIME > SYSDATE
|
|
|
AND PP.CONTROLRANGE = 1";
|
|
|
- DataTable planTable1 = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":BARCODE",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
|
|
|
- });
|
|
|
- //其他商标有计划
|
|
|
- if (planTable1 != null && planTable1.Rows.Count > 0)
|
|
|
- {
|
|
|
- return "该商标无生产计划,不允许保存";
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- #endregion
|
|
|
- }
|
|
|
- }
|
|
|
+ DataTable planTable1 = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":BARCODE",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
|
|
|
+ });
|
|
|
+ //其他商标有计划
|
|
|
+ if (planTable1 != null && planTable1.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ return "该商标无生产计划,不允许保存";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 写入组件和报损组件
|
|
|
if (productionData.IdnrkList != null && productionData.IdnrkList.Count > 0)
|
|
|
{
|
|
|
//连体装配 校验或者保存
|
|
|
- if (procedure.ProcedureID == 121 && ischanged == 0)
|
|
|
- {
|
|
|
+ if (procedure.ProcedureID == 121 && ischanged == 0)
|
|
|
+ {
|
|
|
foreach (IdnrkEntity entity in productionData.IdnrkList)
|
|
|
{
|
|
|
- if (entity.RELATIONID == 0)
|
|
|
- {
|
|
|
+ if (entity.RELATIONID == 0)
|
|
|
+ {
|
|
|
string barcodeidnrkrel = @"
|
|
|
INSERT INTO TP_PM_BARCODEIDNRKREL
|
|
|
(PROCEDUREID,
|
|
|
@@ -11273,7 +11275,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
:USERID,
|
|
|
:USERID,
|
|
|
:CreateTime) ";
|
|
|
-
|
|
|
+
|
|
|
oracleTrConn.ExecuteNonQuery(barcodeidnrkrel,
|
|
|
new OracleParameter[]
|
|
|
{
|
|
|
@@ -11291,10 +11293,10 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
new OracleParameter(":USERID", sUserInfo.UserID),
|
|
|
new OracleParameter(":CreateTime", Convert.ToDateTime(entity.CREATETIME)),
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
+ else
|
|
|
+ {
|
|
|
//如果没有切换商标,则为校验更新功能,否则为正常保存
|
|
|
string barcodeidnrkrel = @"
|
|
|
UPDATE TP_PM_BARCODEIDNRKREL SET
|
|
|
@@ -11315,13 +11317,13 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
});
|
|
|
|
|
|
}
|
|
|
-
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
+ else
|
|
|
+ {
|
|
|
string barcodeidnrkrel = @"
|
|
|
INSERT INTO TP_PM_BARCODEIDNRKREL
|
|
|
(PROCEDUREID,
|
|
|
@@ -11490,7 +11492,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
#endregion
|
|
|
|
|
|
//三车间打印拆开后,通过工控屏装配后调用打印接口 152:3#条码打印
|
|
|
- if (procedure.ProcedureID == 152)
|
|
|
+ if (procedure.ProcedureID == 152)
|
|
|
{
|
|
|
string printerName = null;
|
|
|
int printtype = 0;
|
|
|
@@ -11509,7 +11511,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
|
|
|
List<OracleParameter> parameters = new List<OracleParameter>();
|
|
|
|
|
|
-
|
|
|
+
|
|
|
// 打印
|
|
|
//printWay = 1;
|
|
|
string sqlPrinterName =
|
|
|
@@ -11538,7 +11540,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
sre.Message = "此工号没有关联打印机类型";
|
|
|
return sre.Message;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
bool hasPrinter = false;
|
|
|
foreach (string item in installedPrinters)
|
|
|
{
|
|
|
@@ -11562,7 +11564,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
|
|
|
};
|
|
|
string barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
|
|
|
-
|
|
|
+
|
|
|
|
|
|
// 获取打印数据
|
|
|
parameters.Clear();
|
|
|
@@ -11621,14 +11623,14 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
//if (layoutID > 0)
|
|
|
//{
|
|
|
// string sqlString1 = @"SELECT
|
|
|
- // B.ITEMSTYLE
|
|
|
+ // B.ITEMSTYLE
|
|
|
// FROM
|
|
|
- // TP_MST_BARCODEPRINTLAYOUT P
|
|
|
- // LEFT JOIN TP_MST_BARCODEPRINTITEM T ON P.LAYOUTID = T.LAYOUTID
|
|
|
- // INNER JOIN TP_SYS_BARCODEPRINTITEM B ON T.ITEMCODE = B.ITEMCODE
|
|
|
- // AND B.ITEMCODE = 'OUTONLYCODE2'
|
|
|
+ // TP_MST_BARCODEPRINTLAYOUT P
|
|
|
+ // LEFT JOIN TP_MST_BARCODEPRINTITEM T ON P.LAYOUTID = T.LAYOUTID
|
|
|
+ // INNER JOIN TP_SYS_BARCODEPRINTITEM B ON T.ITEMCODE = B.ITEMCODE
|
|
|
+ // AND B.ITEMCODE = 'OUTONLYCODE2'
|
|
|
// WHERE
|
|
|
- // P.LAYOUTID = :LAYOUTID";
|
|
|
+ // P.LAYOUTID = :LAYOUTID";
|
|
|
// OracleParameter[] paras2 = new OracleParameter[]{
|
|
|
// new OracleParameter(":LAYOUTID",OracleDbType.Int16, layoutID,ParameterDirection.Input)
|
|
|
// };
|
|
|
@@ -11665,7 +11667,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return errMsg;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
@@ -15518,15 +15520,15 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
|
|
|
// 6 更正在产表最新商标 从注浆表取数据 由于变更商标后走了非工序的条码打印,pd表中的最后一条商标不是最新的 ;20240508 by qq
|
|
|
sql = "select LogoID from tp_pm_groutingdailydetail where barcode=:barcode and valueflag=1";
|
|
|
-
|
|
|
+
|
|
|
DataSet dset = oracleTrConn.GetSqlResultToDs(sql, Paras);
|
|
|
|
|
|
- if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
|
|
|
- {
|
|
|
+ if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
|
|
|
+ {
|
|
|
sql = "update TP_PM_InProduction set LogoID = " + dset.Tables[0].Rows[0]["LogoID"].ToString() + " where barcode=:barcode and valueflag=1";
|
|
|
returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (returnRows <= 0)
|
|
|
{
|
|
|
oracleTrConn.Rollback();
|
|
|
@@ -15676,7 +15678,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
try
|
|
|
{
|
|
|
goodsID = 0;
|
|
|
- goodsCode = null ;
|
|
|
+ goodsCode = null;
|
|
|
goodsName = null;
|
|
|
groutingUserCode = null;
|
|
|
GroutingDailyDetailID = 0;
|
|
|
@@ -19354,30 +19356,30 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- #region 根据生产计划,判断商标数量
|
|
|
- //根据生控计划 固定工序,用户是否拥有高级权限,判断商标切换的剩余数量是否满足条件等 20240418 add by qq
|
|
|
- sql = @"SELECT PLANFLAG FROM TP_MST_User WHERE usercode = :usercode";
|
|
|
- //end
|
|
|
-
|
|
|
- DataTable userTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":usercode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input)
|
|
|
- });
|
|
|
- if (userTable != null && userTable.Rows.Count > 0)
|
|
|
- {
|
|
|
- if (userTable.Rows[0]["PLANFLAG"].ToString() == "0")
|
|
|
- {
|
|
|
- //等于0为低级权限,需要判断数量,等于1为高级权限,无需控制变更产品
|
|
|
- //先查询该产品的所在工序,是否是成瓷库出、包装打印工序
|
|
|
- sql = @"select ProcedureID from tp_pm_inproduction where barcode=:barcode";
|
|
|
- object proid = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
|
|
|
- });
|
|
|
- int procedureid = Convert.ToInt32(proid);
|
|
|
- //符合条件的工序,进一步判断
|
|
|
- if (procedureid > 0 && (procedureid == 106 || procedureid == 107 || procedureid == 78 || procedureid == 126 || procedureid == 152))
|
|
|
- {
|
|
|
- //再查询该产品需要变更的商标有没有计划数量 ,查出来则为有
|
|
|
- sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,PP.BEGINTIME,PP.ENDTIME
|
|
|
+ #region 根据生产计划,判断商标数量
|
|
|
+ //根据生控计划 固定工序,用户是否拥有高级权限,判断商标切换的剩余数量是否满足条件等 20240418 add by qq
|
|
|
+ sql = @"SELECT PLANFLAG FROM TP_MST_User WHERE usercode = :usercode";
|
|
|
+ //end
|
|
|
+
|
|
|
+ DataTable userTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":usercode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input)
|
|
|
+ });
|
|
|
+ if (userTable != null && userTable.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ if (userTable.Rows[0]["PLANFLAG"].ToString() == "0")
|
|
|
+ {
|
|
|
+ //等于0为低级权限,需要判断数量,等于1为高级权限,无需控制变更产品
|
|
|
+ //先查询该产品的所在工序,是否是成瓷库出、包装打印工序
|
|
|
+ sql = @"select ProcedureID from tp_pm_inproduction where barcode=:barcode";
|
|
|
+ object proid = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
|
|
|
+ });
|
|
|
+ int procedureid = Convert.ToInt32(proid);
|
|
|
+ //符合条件的工序,进一步判断
|
|
|
+ if (procedureid > 0 && (procedureid == 106 || procedureid == 107 || procedureid == 78 || procedureid == 126 || procedureid == 152))
|
|
|
+ {
|
|
|
+ //再查询该产品需要变更的商标有没有计划数量 ,查出来则为有
|
|
|
+ sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,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
|
|
|
@@ -19386,11 +19388,11 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
AND PP.BEGINTIME <= SYSDATE
|
|
|
AND PP.ENDTIME > SYSDATE
|
|
|
AND PP.CONTROLRANGE = 2 ";
|
|
|
- DataTable planTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
- new OracleParameter(":LOGOID",OracleDbType.Varchar2, logoid,ParameterDirection.Input),
|
|
|
+ DataTable planTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":LOGOID",OracleDbType.Varchar2, logoid,ParameterDirection.Input),
|
|
|
|
|
|
- });
|
|
|
+ });
|
|
|
//有计划,判断数量
|
|
|
if (planTable != null && planTable.Rows.Count > 0)
|
|
|
{
|
|
|
@@ -19464,21 +19466,21 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
});
|
|
|
if (quantityTable != null && quantityTable.Rows.Count > 0)
|
|
|
{
|
|
|
- if (!string.IsNullOrWhiteSpace(quantityTable.Rows[0]["CHANGENUM"].ToString()))
|
|
|
- {
|
|
|
+ if (!string.IsNullOrWhiteSpace(quantityTable.Rows[0]["CHANGENUM"].ToString()))
|
|
|
+ {
|
|
|
//实际变换商标的数量大于计划的数量,不能再变
|
|
|
if (Convert.ToDecimal(quantityTable.Rows[0]["CHANGENUM"]) >= Convert.ToDecimal(planTable.Rows[0]["quantity"]))
|
|
|
{
|
|
|
return -5;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- //这个品这个商标没有计划,查看这个品其他商标有没有计划,其他商标有计划,则控制不能变更这个商标
|
|
|
- sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,PP.BEGINTIME,PP.ENDTIME
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //这个品这个商标没有计划,查看这个品其他商标有没有计划,其他商标有计划,则控制不能变更这个商标
|
|
|
+ sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,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
|
|
|
@@ -19486,38 +19488,38 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
AND PP.BEGINTIME <= SYSDATE
|
|
|
AND PP.ENDTIME > SYSDATE
|
|
|
AND PP.CONTROLRANGE = 2 ";
|
|
|
- DataTable planTable1 = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
- });
|
|
|
- //其他商标有计划
|
|
|
- if (planTable1 != null && planTable1.Rows.Count > 0)
|
|
|
- {
|
|
|
- return -6;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- #endregion
|
|
|
-
|
|
|
- #region 先查询sap数据
|
|
|
- //DataSet sapDataSet = new DataSet();
|
|
|
-
|
|
|
- ////查询变更的型号信息
|
|
|
- //OracleParameter[] paras = new OracleParameter[]
|
|
|
- //{
|
|
|
- // new OracleParameter("IN_BARCODE", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
|
|
|
- // new OracleParameter("IN_GOODSID", OracleDbType.Int32, 0, ParameterDirection.Input),
|
|
|
- // new OracleParameter("IN_LOGOID", OracleDbType.Int32, logoid, ParameterDirection.Input),
|
|
|
- // new OracleParameter("OUT_RESULT", OracleDbType.RefCursor, null, ParameterDirection.Output),
|
|
|
- //};
|
|
|
- //sapDataSet = oracleTrConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG_BIANGENG", paras);
|
|
|
-
|
|
|
- #endregion
|
|
|
-
|
|
|
- // 1.更新注浆明细
|
|
|
- sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
|
|
|
+ DataTable planTable1 = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
+ });
|
|
|
+ //其他商标有计划
|
|
|
+ if (planTable1 != null && planTable1.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ return -6;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 先查询sap数据
|
|
|
+ //DataSet sapDataSet = new DataSet();
|
|
|
+
|
|
|
+ ////查询变更的型号信息
|
|
|
+ //OracleParameter[] paras = new OracleParameter[]
|
|
|
+ //{
|
|
|
+ // new OracleParameter("IN_BARCODE", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
|
|
|
+ // new OracleParameter("IN_GOODSID", OracleDbType.Int32, 0, ParameterDirection.Input),
|
|
|
+ // new OracleParameter("IN_LOGOID", OracleDbType.Int32, logoid, ParameterDirection.Input),
|
|
|
+ // new OracleParameter("OUT_RESULT", OracleDbType.RefCursor, null, ParameterDirection.Output),
|
|
|
+ //};
|
|
|
+ //sapDataSet = oracleTrConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG_BIANGENG", paras);
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ // 1.更新注浆明细
|
|
|
+ sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
|
|
|
Paras = new OracleParameter[] {
|
|
|
new OracleParameter(":logoid",OracleDbType.Int32,
|
|
|
logoid,ParameterDirection.Input),
|
|
|
@@ -20370,9 +20372,9 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
/// 商标变更后插入sap数据
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- public static int SaveLogoSAPData(string barcode, int newlogoid,string oldMatnr)
|
|
|
+ public static int SaveLogoSAPData(string barcode, int newlogoid, string oldMatnr)
|
|
|
{
|
|
|
- int returnRows = 0;
|
|
|
+ int returnRows = 0;
|
|
|
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
try
|
|
|
{
|
|
|
@@ -20390,7 +20392,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
|
|
|
sapDataSet = oracleTrConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG_BIANGENG", paras);
|
|
|
|
|
|
#endregion
|
|
|
-
|
|
|
+
|
|
|
//变更型号成功后 SAP报工数据同步,一正一负
|
|
|
#region sap报工
|
|
|
if (sapDataSet != null && sapDataSet.Tables.Count > 0 && sapDataSet.Tables[0].Rows.Count > 0 && !string.IsNullOrEmpty(oldMatnr))
|
|
|
@@ -29345,7 +29347,7 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
{
|
|
|
new OracleParameter(":BARCODE", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
|
|
|
};
|
|
|
- oracleTrConn.ExecuteNonQuery(sqlUpdateGoodsLevel, parasUpdateGoodsLevel);
|
|
|
+ oracleTrConn.ExecuteNonQuery(sqlUpdateGoodsLevel, parasUpdateGoodsLevel);
|
|
|
#endregion
|
|
|
}
|
|
|
logoName = logoName_Temp;
|
|
|
@@ -29645,7 +29647,7 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
// 无效条件
|
|
|
errorMessage = "条码[" + barcode + "]:已回收过一次,不允许再次回收";
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
#endregion
|
|
|
return errorMessage;
|
|
|
}
|
|
|
@@ -29772,22 +29774,22 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
oldMatnr = dt.Rows[0]["materialcode"] + "";
|
|
|
}
|
|
|
|
|
|
- #region 根据生产计划,判断商标数量
|
|
|
- //根据生控计划 固定工序,用户是否拥有高级权限,判断商标切换的剩余数量是否满足条件等 20240418 add by qq
|
|
|
- sql = @"SELECT PLANFLAG FROM TP_MST_User WHERE usercode = :usercode";
|
|
|
- //end
|
|
|
+ #region 根据生产计划,判断商标数量
|
|
|
+ //根据生控计划 固定工序,用户是否拥有高级权限,判断商标切换的剩余数量是否满足条件等 20240418 add by qq
|
|
|
+ sql = @"SELECT PLANFLAG FROM TP_MST_User WHERE usercode = :usercode";
|
|
|
+ //end
|
|
|
|
|
|
- DataTable userTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":usercode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input)
|
|
|
- });
|
|
|
- if (userTable != null && userTable.Rows.Count > 0)
|
|
|
- {
|
|
|
- if (userTable.Rows[0]["PLANFLAG"].ToString() == "0")
|
|
|
- {
|
|
|
- //等于0为低级权限,需要判断数量,等于1为高级权限,无需控制变更产品
|
|
|
+ DataTable userTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":usercode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input)
|
|
|
+ });
|
|
|
+ if (userTable != null && userTable.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ if (userTable.Rows[0]["PLANFLAG"].ToString() == "0")
|
|
|
+ {
|
|
|
+ //等于0为低级权限,需要判断数量,等于1为高级权限,无需控制变更产品
|
|
|
|
|
|
- //再查询该产品所有商标有没有计划数量 ,查出来则为有
|
|
|
- sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,PP.BEGINTIME,PP.ENDTIME
|
|
|
+ //再查询该产品所有商标有没有计划数量 ,查出来则为有
|
|
|
+ sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,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
|
|
|
@@ -29796,14 +29798,14 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
AND PP.BEGINTIME <= SYSDATE
|
|
|
AND PP.ENDTIME > SYSDATE
|
|
|
AND PP.CONTROLRANGE = 1 ";
|
|
|
- DataTable planTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
- new OracleParameter(":LOGOID",OracleDbType.Varchar2, logoid,ParameterDirection.Input),
|
|
|
- });
|
|
|
- //有计划,判断数量
|
|
|
- if (planTable != null && planTable.Rows.Count > 0)
|
|
|
- {
|
|
|
- sql = @"SELECT sum(changedata.CHANGENUM) CHANGENUM FROM (
|
|
|
+ DataTable planTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":LOGOID",OracleDbType.Varchar2, logoid,ParameterDirection.Input),
|
|
|
+ });
|
|
|
+ //有计划,判断数量
|
|
|
+ if (planTable != null && planTable.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ sql = @"SELECT sum(changedata.CHANGENUM) CHANGENUM FROM (
|
|
|
--在装配环节变更数量
|
|
|
SELECT ip.goodsid,ip.logoid,COUNT(distinct l.barcode) CHANGENUM
|
|
|
FROM tp_pm_logochangedrecord l
|
|
|
@@ -29857,12 +29859,12 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
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),
|
|
|
- });
|
|
|
- if (quantityTable != null && quantityTable.Rows.Count > 0)
|
|
|
- {
|
|
|
+ DataTable quantityTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":logoid",OracleDbType.Varchar2, logoid,ParameterDirection.Input),
|
|
|
+ });
|
|
|
+ if (quantityTable != null && quantityTable.Rows.Count > 0)
|
|
|
+ {
|
|
|
if (!string.IsNullOrWhiteSpace(quantityTable.Rows[0]["CHANGENUM"].ToString()))
|
|
|
{
|
|
|
//实际变换商标的数量大于计划的数量,不能再变
|
|
|
@@ -29871,14 +29873,14 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
return -5;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //这个品这个商标没有计划,查看这个品其他商标有没有计划,其他商标有计划,则控制不能变更这个商标
|
|
|
- sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,PP.BEGINTIME,PP.ENDTIME
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //这个品这个商标没有计划,查看这个品其他商标有没有计划,其他商标有计划,则控制不能变更这个商标
|
|
|
+ sql = @"SELECT PP.GOODSID,PP.LOGOID,PP.QUANTITY,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
|
|
|
@@ -29886,37 +29888,37 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
AND PP.BEGINTIME <= SYSDATE
|
|
|
AND PP.ENDTIME > SYSDATE
|
|
|
AND PP.CONTROLRANGE = 1";
|
|
|
- DataTable planTable1 = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
- new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
- });
|
|
|
- //其他商标有计划
|
|
|
- if (planTable1 != null && planTable1.Rows.Count > 0)
|
|
|
- {
|
|
|
- return -6;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- #endregion
|
|
|
-
|
|
|
- #region 先查询sap数据
|
|
|
- //DataSet sapDataSet = new DataSet();
|
|
|
-
|
|
|
- ////查询变更的型号信息
|
|
|
- //OracleParameter[] paras = new OracleParameter[]
|
|
|
- //{
|
|
|
- // new OracleParameter("IN_BARCODE", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
|
|
|
- // new OracleParameter("IN_GOODSID", OracleDbType.Int32, 0, ParameterDirection.Input),
|
|
|
- // new OracleParameter("IN_LOGOID", OracleDbType.Int32, logoid, ParameterDirection.Input),
|
|
|
- // new OracleParameter("OUT_RESULT", OracleDbType.RefCursor, null, ParameterDirection.Output),
|
|
|
- //};
|
|
|
- //sapDataSet = oracleTrConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG_BIANGENG", paras);
|
|
|
-
|
|
|
- #endregion
|
|
|
-
|
|
|
- // 1.更新注浆明细
|
|
|
- sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
|
|
|
+ DataTable planTable1 = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
|
|
|
+ });
|
|
|
+ //其他商标有计划
|
|
|
+ if (planTable1 != null && planTable1.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ return -6;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 先查询sap数据
|
|
|
+ //DataSet sapDataSet = new DataSet();
|
|
|
+
|
|
|
+ ////查询变更的型号信息
|
|
|
+ //OracleParameter[] paras = new OracleParameter[]
|
|
|
+ //{
|
|
|
+ // new OracleParameter("IN_BARCODE", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
|
|
|
+ // new OracleParameter("IN_GOODSID", OracleDbType.Int32, 0, ParameterDirection.Input),
|
|
|
+ // new OracleParameter("IN_LOGOID", OracleDbType.Int32, logoid, ParameterDirection.Input),
|
|
|
+ // new OracleParameter("OUT_RESULT", OracleDbType.RefCursor, null, ParameterDirection.Output),
|
|
|
+ //};
|
|
|
+ //sapDataSet = oracleTrConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG_BIANGENG", paras);
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ // 1.更新注浆明细
|
|
|
+ sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
|
|
|
Paras = new OracleParameter[]
|
|
|
{
|
|
|
new OracleParameter(":logoid",OracleDbType.Int32, logoid,ParameterDirection.Input),
|
|
|
@@ -30986,5 +30988,214 @@ updateuserid=:updateuserid where barcode=:barcode";
|
|
|
//}
|
|
|
return returnRows;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ ///
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="Lgort"></param>
|
|
|
+ /// <param name="sendoutgoodslogid"></param>
|
|
|
+ /// <param name="sUserInfo"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static DataSet GetSendOutGoodsLogs(string lgort, string sendoutgoodslogid, SUserInfo sUserInfo)
|
|
|
+ {
|
|
|
+
|
|
|
+ IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
+ string mes = "";
|
|
|
+
|
|
|
+ var dt = SapApi.ZMM_WMS016("", null, lgort, out mes);
|
|
|
+
|
|
|
+
|
|
|
+ string sql = @"select TP_PM_SENDOUTGOODSLOGDETAIL.* from TP_PM_SENDOUTGOODSLOGDETAIL INNER JOIN TP_PM_SENDOUTGOODSLOG on TP_PM_SENDOUTGOODSLOG.SENDOUTGOODSLOGID=TP_PM_SENDOUTGOODSLOGDETAIL.SENDOUTGOODSLOGID where TP_PM_SENDOUTGOODSLOGDETAIL.SENDOUTGOODSLOGID=:sendoutgoodslogid and TP_PM_SENDOUTGOODSLOG.WAREHOUSINGID= :Lgort";
|
|
|
+ var ds = oracleTrConn.GetSqlResultToDs(sql, new OracleParameter[]{
|
|
|
+ new OracleParameter(":sendoutgoodslogid",OracleDbType.Varchar2, sendoutgoodslogid,ParameterDirection.Input),
|
|
|
+ new OracleParameter(":Lgort",OracleDbType.Varchar2, lgort,ParameterDirection.Input)
|
|
|
+ });
|
|
|
+ ds.Tables.Add(dt);
|
|
|
+ return ds;
|
|
|
+ }
|
|
|
+ public class SnedSendOutGoods
|
|
|
+ {
|
|
|
+ public string MESNO;
|
|
|
+ public string MESLINENO;
|
|
|
+ public string ZID;
|
|
|
+ public string BUDAT;
|
|
|
+ public string HEADER_TXT;
|
|
|
+ public string BWART;
|
|
|
+ public string SOBKZ;
|
|
|
+ public string MOVE_REAS;
|
|
|
+ public string WERKS;
|
|
|
+ public string MATNR;
|
|
|
+ public int PSMNG;
|
|
|
+ public string MEINS;
|
|
|
+ public string LGORT;
|
|
|
+ public string CHARG;
|
|
|
+ public string KDAUF;
|
|
|
+ public int KDPOS;
|
|
|
+ public string MOVE_MAT;
|
|
|
+ public string MOVE_STLOC;
|
|
|
+ public string MOVE_BATCH;
|
|
|
+ public string VAL_SALES_ORD;
|
|
|
+ public int VAL_S_ORD_ITEM;
|
|
|
+ public string CARID;
|
|
|
+ }
|
|
|
+ public static string SaveSendOutGoodsLogs(Dictionary<string, object> data, SUserInfo sUserInfo,out string MSG)
|
|
|
+ {
|
|
|
+ SendOutGoodsEntity send = JsonHelper.FromJson<SendOutGoodsEntity>(data.ElementAt(0).Value.ToString());
|
|
|
+ var sendDetail = JsonHelper.FromJson<List<SendOutGoodsDetailEntity>>(data.ElementAt(1).Value.ToString());
|
|
|
+ StringBuilder where = new StringBuilder();
|
|
|
+ sendDetail.ForEach(m => where.Append("'" + m.FINISHEDLOADBATCHNO + "',"));
|
|
|
+ string SENDOUTCODE = send.SENDOUTCODE;
|
|
|
+ string lgotr = send.WAREHOUSINGID;
|
|
|
+ string WAREHOUSINGID = "";
|
|
|
+ string usercode = send.USERCODE;
|
|
|
+ bool isCrete = false;
|
|
|
+ string WERKS = "5000";
|
|
|
+ string LGORT = "1350";
|
|
|
+ int resultNumber = 0;
|
|
|
+ MSG = "";
|
|
|
+ OracleParameter[] parmetersSql = new OracleParameter[]
|
|
|
+ {
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ if (SENDOUTCODE == null || string.IsNullOrEmpty(SENDOUTCODE))
|
|
|
+ {
|
|
|
+ isCrete = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<string> matnr = sendDetail.Select(m => m.MATERIALCODE).Distinct().ToList();
|
|
|
+ List<SnedSendOutGoods> SnedSendOutGoodsList = new List<SnedSendOutGoods>();
|
|
|
+ //判断发货单号添加或者编辑 删与不删明细 生不生成发货单号
|
|
|
+ if (sendDetail.Count==0)//明细有没有数据
|
|
|
+ {
|
|
|
+
|
|
|
+ //生成发货单号
|
|
|
+ if (isCrete)
|
|
|
+ {
|
|
|
+ SENDOUTCODE = DateTime.Now.ToString("yyyyMMddHHmmsss") + usercode;
|
|
|
+ }
|
|
|
+
|
|
|
+ IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
+ var isSend = oracleTrConn.GetSqlResultToDt("select FINISHEDLOADBATCHNO from TP_PM_FINISHEDPRODUCT where SENDOUTFLAG=1 and FINISHEDLOADBATCHNO in (" + where.ToString().TrimEnd(',') + ")", parmetersSql);
|
|
|
+ if (isSend!=null && isSend.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ MSG = "存在已发货产品";
|
|
|
+ string res = "";
|
|
|
+ foreach (DataRow dr in isSend.Rows)
|
|
|
+ {
|
|
|
+ res += "'" + dr["FINISHEDLOADBATCHNO"] + "',";
|
|
|
+ }
|
|
|
+ return res.TrimEnd(',');
|
|
|
+ }
|
|
|
+ //调用sap筛选库存不足变黄 物料编码够不够 生成sap同步数据
|
|
|
+ string message = "";
|
|
|
+ var dt = SapApi.ZMM_WMS016(WERKS, matnr, LGORT, out message);
|
|
|
+ //dt = "批号 ASC";
|
|
|
+ List<string> countList = new List<string>();
|
|
|
+ for (int i = 0; i < matnr.Count; i++)
|
|
|
+ {
|
|
|
+ var rows = dt.Select("物料='" + matnr[i] + "'");
|
|
|
+ var sapCount = rows.Sum(m => Convert.ToDecimal(m["库存数"]));
|
|
|
+ var apps = sendDetail.Where(m => m.MATERIALCODE == matnr[i]);
|
|
|
+ var appCount = apps.Sum(m => Convert.ToDecimal(m.BINDINGCount));
|
|
|
+ if (appCount > sapCount)
|
|
|
+ {
|
|
|
+ countList.Add(matnr[i]);
|
|
|
+ }
|
|
|
+ else//添加同步信息
|
|
|
+ {
|
|
|
+
|
|
|
+ for (int j = 0; j < rows.Length; j++)
|
|
|
+ {
|
|
|
+ decimal tmp = 0;
|
|
|
+ if (appCount >= Convert.ToDecimal(rows[j]["库存数"]))
|
|
|
+ {
|
|
|
+ tmp = Convert.ToDecimal(rows[j]["库存数"]);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ tmp = appCount;
|
|
|
+ }
|
|
|
+ appCount = appCount - Convert.ToDecimal(rows[j]["库存数"]);
|
|
|
+ SnedSendOutGoods ss = new SnedSendOutGoods()
|
|
|
+ {
|
|
|
+ LGORT = rows[j]["物料"].ToString(),
|
|
|
+ MATNR = rows[j]["物料"].ToString(),
|
|
|
+ CHARG = rows[j]["批号"].ToString(),
|
|
|
+ CARID = rows[j]["车辆"].ToString(),
|
|
|
+ };
|
|
|
+ SnedSendOutGoodsList.Add(ss);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (countList.Count > 0)//返回哪些库存不够(包装批次)
|
|
|
+ {
|
|
|
+ MSG = "库存不足";
|
|
|
+ return string.Join(",", countList).TrimEnd(',');
|
|
|
+ }
|
|
|
+ //成功
|
|
|
+ //同步sap(SnedSendOutGoodsList) 修改产成品sendflag 返回成功失败
|
|
|
+ var result = SapApi.ZMM_WMS016("", null, lgotr, out message);
|
|
|
+ var SYNCSTATUS = 1;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ oracleTrConn.Connect();
|
|
|
+ string sql = "";
|
|
|
+ if (isCrete)
|
|
|
+ {
|
|
|
+ sql = "INSERT INTO TP_PM_SENDOUTGOODSLOG( SENDOUTCODE, USERID, USERCODE, WAREHOUSINGID, WAREHOUSINGNAME, RECEIVEID, RECEIVENAME, CARPLATEID, CARPLATENAME, ACCOUNTDATE, DELIVERDATE, SYNCSTATUS, SYNCTIME, ACCOUNTID, VALUEFLAG, CREATETIME, CREATEUSERID , MBLNR) select '" + SENDOUTCODE + "', (select USERID from TP_MST_USER where USERCODE= '" + usercode + "'), '" + usercode + "', '" + WAREHOUSINGID + "', (select DICTIONARYVALUE from TP_MST_DATADICTIONARY where DICTIONARYid = '" + WAREHOUSINGID + "'), '" + send.RECEIVEID + "', (select DICTIONARYVALUE from TP_MST_DATADICTIONARY where DICTIONARYid= '" + send.RECEIVEID + "'), '" + send.CARPLATEID + "', (select DICTIONARYVALUE from TP_MST_DATADICTIONARY where DICTIONARYid= '" + send.CARPLATEID + "'), '" + send.ACCOUNTDATE + "', '" + send.DELIVERDATE + "', '" + SYNCSTATUS + "', SYSDATE, '1','1', SYSDATE,(select USERID from TP_MST_USER where USERCODE= '" + usercode + "'),NULL from dual;";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sql = "UPDATE TP_PM_SENDOUTGOODSLOG SET WAREHOUSINGID = '" + WAREHOUSINGID + "', WAREHOUSINGNAME = (select DICTIONARYVALUE from TP_MST_DATADICTIONARY where DICTIONARYid = '" + WAREHOUSINGID + "'), RECEIVEID = '" + send.RECEIVEID + "', RECEIVENAME = (select DICTIONARYVALUE from TP_MST_DATADICTIONARY where DICTIONARYid= '" + send.RECEIVEID + "'), CARPLATEID = '" + send.CARPLATEID + "', CARPLATENAME = (select DICTIONARYVALUE from TP_MST_DATADICTIONARY where DICTIONARYid= '" + send.CARPLATEID + "'), ACCOUNTDATE = '" + send.ACCOUNTDATE + "', DELIVERDATE = '" + send.DELIVERDATE + "', SYNCSTATUS = '" + SYNCSTATUS + "', UPDATETIME =SYSDATE, UPDATEUSERID = (select USERID from TP_MST_USER where USERCODE= '" + usercode + "'),MBLNR = NULL WHERE SENDOUTCODE = '" + SENDOUTCODE + "';";
|
|
|
+ }
|
|
|
+ resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
|
|
|
+ if (!isCrete)
|
|
|
+ {
|
|
|
+ sql = "UPDATE TP_PM_SENDOUTGOODSLOGDETAIL set valueflag=0 where SENDOUTCODE='" + SENDOUTCODE + "';";
|
|
|
+ resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (var item in sendDetail)
|
|
|
+ {
|
|
|
+ sql = "INSERT INTO TP_PM_SENDOUTGOODSLOGDETAIL( SENDOUTGOODSLOGID, FINISHEDLOADBATCHNO, GOODSCODE, MATERIALCODE, MATERIALREMARK, BINDINGCOUNT, BANMA, ACCOUNTID, VALUEFLAG, CREATETIME, CREATEUSERID, UPDATETIME, UPDATEUSERID) VALUES ((select SENDOUTGOODSLOGID from TP_PM_SENDOUTGOODSLOG where SENDOUTCODE='" + SENDOUTCODE + "'), '" + item.FINISHEDLOADBATCHNO + "', '" + item.GOODSCODE + "', '" + item.MATERIALCODE + "', '" + item.MATERIALREMARK + "', '" + item.BINDINGCount + "', '" + item.Banma + "', 1, 1, SYSDATE, (select USERID from TP_MST_USER where USERCODE= '" + usercode + "'));";
|
|
|
+ resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
|
|
|
+ }
|
|
|
+ //修改产成品
|
|
|
+ sql = "update TP_PM_FINISHEDPRODUCT set SENDOUTFLAG=1 where FINISHEDLOADBATCHNO in (" + where.ToString().TrimEnd(',') + ")";
|
|
|
+ resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
|
|
|
+ // 没有错误 提交事务
|
|
|
+ if (resultNumber != 0)
|
|
|
+ {
|
|
|
+ oracleTrConn.Rollback();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
|
|
|
+ {
|
|
|
+ oracleTrConn.Rollback();
|
|
|
+ oracleTrConn.Disconnect();
|
|
|
+ }
|
|
|
+ throw ex;
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ if (oracleTrConn.ConnState == ConnectionState.Open)
|
|
|
+ {
|
|
|
+ oracleTrConn.Disconnect();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 插入发货表明细表删除明细 添加新的明细
|
|
|
+
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|