zrg
2025-01-08 bafdbac9abdfc9de05b211cf7f54a3f792cb8a74
WebAPI/Controllers/CJGL/Sc_ProcExchWorkBackBillController.cs
@@ -37,6 +37,46 @@
                    return objJsonResult;
                }
                string sql1 = "select * from h_v_Sc_ProcExchWorkBackBillList_Query where 1 = 1  ";
                string sql = sql1 + sWhere + " order by hmainid desc";
                ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcExchWorkBackBillList_Query");
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.list = columnNameList;
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工序返工申请单列表_编辑页面初始化
        [Route("Sc_ProcExchWorkBackBill/Sc_ProcExchWorkBackBillList_Edit")]
        [HttpGet]
        public object Sc_ProcExchWorkBackBillList_Edit(string sWhere, string user)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                string sql1 = "select * from h_v_Sc_ProcExchWorkBackBillList where 1 = 1  ";
                string sql = sql1 + sWhere + " order by hmainid desc";
                ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcExchWorkBackBillList");
@@ -49,7 +89,7 @@
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
@@ -279,11 +319,34 @@
                    return objJsonResult;
                }
                bool IsDete = oBill.DeleteBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo);
                //删除前控制=========================================
                string HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                string sql1 = "exec h_p_Sc_ProcExchWorkBackBill_BeforeDelCtrl " + HInterID + ",'" + HBillNo + "','" + user + "'";
                ds = oCN.RunProcReturn(sql1, "h_p_Sc_ProcExchWorkBackBill_BeforeDelCtrl");
                if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "删除失败!原因:删除前判断失败,请与网络管理人员联系";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "删除失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //==================================================================================
                bool IsDete = oBill.DeleteBill(lngBillKey,HBillNo, "h_p_Sc_ProcExchWorkBackBill_AfterDelCtrl", user, ref DBUtility.ClsPub.sExeReturnInfo);
                if (IsDete)
                {
                    objJsonResult.code = "0";
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = null;
@@ -311,125 +374,169 @@
        #endregion
        //#region 工序返工申请单 审核
        //[Route("Sc_ProcExchWorkBackBill/set_CheckBill")]
        //[HttpGet]
        //public object set_CheckBill(int HInterID, string CurUserName)
        //{
        //    try
        //    {
        //        //审核权限
        //        if (!DBUtility.ClsPub.Security_Log("Sc_ProcExchWorkBackBill_Check", 1, false, CurUserName))
        //        {
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 0;
        //            objJsonResult.Message = "审核失败!无权限!";
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        //        if (HInterID == 0)
        //        {
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 0;
        //            objJsonResult.Message = "单据ID为0,不能审核!";
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        [Route("Sc_ProcExchWorkBackBill/set_CheckBill")]
        [HttpGet]
        public object set_CheckBill(int HInterID, string CurUserName)
        {
            try
            {
                //审核权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ProcExchWorkBackBill_Check", 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "审核失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (HInterID == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据ID为0,不能审核!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
        //        DataSet Ds = oCN.RunProcReturn("Select * from Sc_ProcExchWorkBackBillMain Where HInterID=" + HInterID, "Sc_ProcExchWorkBackBillMain");
        //        if (Ds.Tables[0].Rows.Count > 0)
        //        {
        //            //查看是否已审核,关闭,作废
        //            if (Ds.Tables[0].Rows[0]["HChecker"].ToString() != "")
        //            {
        //                objJsonResult.code = "0";
        //                objJsonResult.count = 0;
        //                objJsonResult.Message = "单据已审核!不能再次审核";
        //                objJsonResult.data = null;
        //                return objJsonResult;
        //            }
                DataSet Ds = oCN.RunProcReturn("Select * from Sc_ProcExchWorkBackBillMain Where HInterID=" + HInterID, "Sc_ProcExchWorkBackBillMain");
                if (Ds.Tables[0].Rows.Count > 0)
                {
                    //查看是否已审核,关闭,作废
                    if (Ds.Tables[0].Rows[0]["HChecker"].ToString() != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据已审核!不能再次审核";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
        //            //审核
        //            if (Cj_StationInBillCheckBill(HInterID,int.Parse( Ds.Tables[0].Rows[0]["HProcExchInterID"].ToString()), CurUserName, ref DBUtility.ClsPub.sExeReturnInfo))
        //            {
        //                objJsonResult.code = "1";
        //                objJsonResult.count = 1;
        //                objJsonResult.Message = "审核成功!";
        //                objJsonResult.data = null;
        //                return objJsonResult;
        //            }
        //            else
        //            {
        //                objJsonResult.code = "0";
        //                objJsonResult.count = 0;
        //                objJsonResult.Message = "审核失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
        //                objJsonResult.data = null;
        //                return objJsonResult;
        //            }
                    //审核
                    if (Cj_StationInBillCheckBill(HInterID, int.Parse(Ds.Tables[0].Rows[0]["HProcExchInterID"].ToString()), CurUserName, Ds.Tables[0].Rows[0]["HBillOperationType"].ToString(), ref DBUtility.ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核成功!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "审核失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
        //        }
        //        else
        //        {
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 0;
        //            objJsonResult.Message = "单据未找到!";
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        //    }
        //    catch (Exception e)
        //    {
        //        objJsonResult.code = "0";
        //        objJsonResult.count = 0;
        //        objJsonResult.Message = "审核失败!" + e.ToString();
        //        objJsonResult.data = null;
        //        return objJsonResult;
        //    }
        //}
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据未找到!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "审核失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        ////审核
        //public bool Cj_StationInBillCheckBill(Int64 HInterID,int HProcExchInterID, string CurUserName, ref string sReturn)
        //{
        //    try
        //    {
        //        oCN.BeginTran();
        //        oCN.RunProc(" Update Sc_ProcExchWorkBackBillMain set HChecker='" + CurUserName + "',HBillStatus=2,HCheckDate=getdate() Where HInterID=" + HInterID.ToString());
        //        //回填工序流转卡
        //        oCN.RunProc("exec h_p_ProcExchWorkBackBill_Check_In " + HInterID.ToString());
        //        oCN.RunProc("exec h_p_Sc_ProcessExchangeBill_SetRemark " + HProcExchInterID.ToString()); //设置 备注 为 工艺流
        //        oCN.RunProc("exec h_p_Sc_ProcessExchangeBill_SetUpdate " + HProcExchInterID.ToString()); //设置 末道 首道 转 等信息   器具清单  工艺参数清单;
        //        DataSet ds = new DataSet();
        //        //设置条码号  回填 领料批次
        //        ds = oCN.RunProcReturn("exec h_p_Mes_ProcessExchangeBackBarCode " + HProcExchInterID.ToString(), "h_p_Mes_ProcessExchangeBackBarCode");
        //        if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
        //        {
        //            sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
        //            oCN.RollBack();
        //            return false;
        //        }
        //审核
        public bool Cj_StationInBillCheckBill(Int64 HInterID, int HProcExchInterID, string CurUserName,string HBillOperationType, ref string sReturn)
        {
            try
            {
                oCN.BeginTran();
                oCN.RunProc(" Update Sc_ProcExchWorkBackBillMain set HChecker='" + CurUserName + "',HBillStatus=2,HCheckDate=getdate() Where HInterID=" + HInterID.ToString());
                if (HBillOperationType == "1")
                {
                    //回填工序流转卡
                    oCN.RunProc("exec h_p_ProcExchWorkBackBill_Check_In " + HInterID.ToString());
                    oCN.RunProc("exec h_p_Sc_ProcessExchangeBill_SetRemark " + HProcExchInterID.ToString()); //设置 备注 为 工艺流
                    oCN.RunProc("exec h_p_Sc_ProcessExchangeBill_SetUpdate " + HProcExchInterID.ToString()); //设置 末道 首道 转 等信息   器具清单  工艺参数清单;
                    DataSet ds = new DataSet();
                    //设置条码号  回填 领料批次
                    ds = oCN.RunProcReturn("exec h_p_Mes_ProcessExchangeBackBarCode " + HProcExchInterID.ToString(), "h_p_Mes_ProcessExchangeBackBarCode");
                    if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
                    {
                        sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                        oCN.RollBack();
                        return false;
                    }
        //        //控制关联数量
        //        ds = null;
        //        ds = oCN.RunProcReturn("exec h_p_Sc_ProcessExchangeBill_Checkqty " + HProcExchInterID.ToString(), "h_p_Sc_ProcessExchangeBill_Checkqty");
        //        if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
        //        {
        //            sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
        //            oCN.RollBack();
        //            return false;
        //        }
        //        oCN.Commit();
        //        return true;
        //    }
        //    catch (Exception e)
        //    {
        //        sReturn = e.Message;
        //        oCN.RollBack();
        //        return false; ;
        //    }
        //}
                    //控制关联数量
                    ds = null;
                    ds = oCN.RunProcReturn("exec h_p_Sc_ProcessExchangeBill_Checkqty " + HProcExchInterID.ToString(), "h_p_Sc_ProcessExchangeBill_Checkqty");
                    if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
                    {
                        sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                        oCN.RollBack();
                        return false;
                    }
                    oCN.Commit();
                    return true;
                }
                else if(HBillOperationType == "2")
                {
                    //回填工序流转卡
                    DataSet ds0 = oCN.RunProcReturn("exec h_p_ProcExchWorkBackBill_Check_In_Delete " + HInterID.ToString(), "h_p_ProcExchWorkBackBill_Check_In_Delete");
                    if (ds0.Tables[0].Rows[0]["HBack"].ToString() != "0")
                    {
                        sReturn = ds0.Tables[0].Rows[0]["HBackRemark"].ToString();
                        oCN.RollBack();
                        return false;
                    }
                    oCN.RunProc("exec h_p_Sc_ProcessExchangeBill_SetRemark " + HProcExchInterID.ToString()); //设置 备注 为 工艺流
                    oCN.RunProc("exec h_p_Sc_ProcessExchangeBill_SetUpdate " + HProcExchInterID.ToString()); //设置 末道 首道 转 等信息   器具清单  工艺参数清单;
                    DataSet ds = new DataSet();
                    //设置条码号  回填 领料批次
                    ds = oCN.RunProcReturn("exec h_p_Mes_ProcessExchangeBackBarCode " + HProcExchInterID.ToString(), "h_p_Mes_ProcessExchangeBackBarCode");
                    if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
                    {
                        sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                        oCN.RollBack();
                        return false;
                    }
                    //控制关联数量
                    ds = null;
                    ds = oCN.RunProcReturn("exec h_p_Sc_ProcessExchangeBill_Checkqty " + HProcExchInterID.ToString(), "h_p_Sc_ProcessExchangeBill_Checkqty");
                    if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) != 0)
                    {
                        sReturn = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]).ToString();
                        oCN.RollBack();
                        return false;
                    }
                    oCN.Commit();
                    return true;
                }
                else
                {
                    sReturn = "未设置可识别的操作类型!";
                    oCN.RollBack();
                    return false;
                }
            }
            catch (Exception e)
            {
                sReturn = e.Message;
                oCN.RollBack();
                return false; ;
            }
        }
        //#endregion
        #region 工艺路线审核/反审核功能
        #region 工序返工申请单 审核/反审核功能
        [Route("Sc_ProcExchWorkBackBill/CheckSc_ProcExchWorkBackBill")]
        [HttpGet]
        public object CheckSc_ProcExchWorkBackBill(string HInterID, int Type, string user)
@@ -477,8 +584,32 @@
                            return objJsonResult;
                        }
                    }
                    //审核前控制
                    string HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                    sql = "exec h_p_Sc_ProcExchWorkBackBill_BeforeCheckCtrl " + int.Parse(HInterID) + ",'" + HBillNo + "','" + user + "'";
                    ds = oCN.RunProcReturn(sql, "h_p_Sc_ProcExchWorkBackBill_BeforeCheckCtrl");
                    if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核失败!原因:审核前判断失败,请与网络管理人员联系";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //审核单据
                    if (!BillOld.CheckBill(Int64.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    if (!BillOld.CheckBill(Int64.Parse(HInterID), HBillNo, "h_p_Sc_ProcExchWorkBackBill_AfterCheckCtrl", user, ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
@@ -504,8 +635,31 @@
                            return objJsonResult;
                        }
                    }
                    //反审核前控制
                    string HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                    sql = "exec h_p_Sc_ProcExchWorkBackBill_BeforeUnCheckCtrl " + int.Parse(HInterID) + ",'" + HBillNo + "','" + user + "'";
                    ds = oCN.RunProcReturn(sql, "h_p_Sc_ProcExchWorkBackBill_BeforeUnCheckCtrl");
                    if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反审核失败!原因:反审核前判断失败,请与网络管理人员联系";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反审核失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //反审核单据
                    if (BillOld.AbandonCheck(Int64.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    if (BillOld.AbandonCheck(Int64.Parse(HInterID), HBillNo, "h_p_Sc_ProcExchWorkBackBill_AfterUnCheckCtrl", user, ref ClsPub.sExeReturnInfo))
                    {
                        //SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                        //DataSet DSet = oCn.RunProcReturn("exec h_p_Sc_ICMOBill_AbandonCheckCtrl " + int.Parse(HInterID), "h_p_Sc_ICMOBill_AbandonCheckCtrl");
@@ -665,7 +819,7 @@
                DataTable dt2 = new DataTable("DataColor");
                List<object> columnNameList = new List<object>();
                string sql = "exec h_p_SingleRowWall  "+ sWhere;
                string sql = "exec h_p_Sc_SingleRowWall  " + sWhere;
                ds = oCN.RunProcReturn(sql, "DataSouce");
                //添加列名
@@ -678,7 +832,8 @@
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                if (ds.Tables.Count == 2) {
                if (ds.Tables.Count == 2)
                {
                    int[] num2 = new int[ds.Tables[0].Columns.Count];//记录每一列获取有值的行数
@@ -766,7 +921,7 @@
                                }
                            }
                        }
                        if (num == ds.Tables[0].Columns.Count||i==3)
                        if (num == ds.Tables[0].Columns.Count)
                        {
                            break;
                        }
@@ -776,7 +931,57 @@
                    ds.Tables.Clear();
                    ds.Tables.Add(dt1);
                    ds.Tables.Add(dt2);
                }
                }
                else {
                    int[] num2 = new int[ds.Tables[0].Columns.Count];//记录每一列获取有值的行数
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        int num = 0;//记录没有数据行的列数
                        int[] num3 = new int[ds.Tables[0].Columns.Count];//记录每一列没有数据的行数
                        DataRow dtrow = dt1.NewRow();
                        for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
                        {
                            int num1 = 0;//记录有多少次满足不为空的条件
                            DataColumn col = ds.Tables[0].Columns[j];
                            for (int k = 0; k < ds.Tables[0].Rows.Count; k++)
                            {
                                DataRow item = ds.Tables[0].Rows[k];
                                if (item[col.ColumnName.ToString()].ToString() != "")
                                {
                                    num1 += 1;
                                    if (num1 > num2[j])
                                    {
                                        dtrow[col.ColumnName.ToString()] = item[col.ColumnName.ToString()].ToString();
                                        num2[j] += 1;
                                        break;
                                    }
                                    else
                                    {
                                        num3[j] += 1;
                                    }
                                }
                                else
                                {
                                    num3[j] += 1;
                                }
                                if (num3[j] == ds.Tables[0].Rows.Count)
                                {
                                    num += 1;
                                }
                            }
                        }
                        if (num == ds.Tables[0].Columns.Count)
                        {
                            break;
                        }
                        dt1.Rows.Add(dtrow);
                    }
                    ds.Tables.Clear();
                    ds.Tables.Add(dt1);
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;