WebAPI/Controllers/JHGL/Gy_RoutingBillController.cs
@@ -292,7 +292,7 @@
                        DataSet dss;
                        dss = oCN.RunProcReturn("select * from Gy_RoutingBillMain where HInterID=" + HInterID + " and HBillNo='" + HBillNo + "'", "Gy_RoutingBillMain");
                        //判断是否可编辑
                        if ((dss.Tables[0].Rows[0]["HChecker"].ToString() != "" && dss.Tables[0].Rows[0]["HChecker"] != null) || (dss.Tables[0].Rows[0]["HBillStatus"].ToString() != "1" && dss.Tables[0].Rows[0]["HBillStatus"].ToString() != "0"))
                        if ((dss.Tables[0].Rows[0]["HChecker"].ToString() != "" && dss.Tables[0].Rows[0]["HChecker"] != null) || (dss.Tables[0].Rows[0]["HBillStatus"].ToString() != "1" && dss.Tables[0].Rows[0]["HBillStatus"].ToString() != "0" && dss.Tables[0].Rows[0]["HBillStatus"].ToString() != "5"))
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
@@ -379,14 +379,16 @@
                }
                //是否勾选默认工艺路线
                if (HStandard)
                if (oSystemParameter.omodel.WMS_CampanyName == "乔一")
                {
                    //设置默认工艺路线
                    oCN.RunProc("exec h_p_Gy_RoutingBillCheck " + HInterID + ",'" + user + "'");
                    //是否勾选默认工艺路线
                    if (HStandard)
                    {
                        //设置默认工艺路线
                        oCN.RunProc("exec h_p_Gy_RoutingBillCheck " + HInterID + ",'" + user + "'");
                    }
                }
                //判断是否重复工序号
                ds = oCN.RunProcReturn("exec h_p_Gy_RoutingCtrl " + HInterID, "h_p_Gy_RoutingCtrl");
@@ -567,6 +569,107 @@
            return objJsonResult;
        }
        //工艺路线孙表 新增
        [Route("Gy_RoutingBillSub/AddWorkQty")]
        [HttpPost]
        public object AddWorkQty([FromBody] JObject sMainSub)
        {
            try
            {
                var _value = sMainSub["sMainSub"].ToString();
                string msg1 = _value.ToString();
                string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                string msg2 = sArray[0].ToString();
                string user = sArray[1].ToString();
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("Gy_RoutingBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "工艺路线无权限编辑!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                List<Gy_RoutingBillSub_WorkQty> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Gy_RoutingBillSub_WorkQty>>(msg2);
                int i = 0;
                oCN.BeginTran();//开始事物
                foreach (Gy_RoutingBillSub_WorkQty oSub in DetailColl)
                {
                    i++;
                    if (i == 1)
                    {
                        //先删除历史绑定数据后在重新保存
                        oCN.RunProc("delete from Gy_RoutingBillSub_WorkQty where HInterID = " + oSub.HInterID + " and HEntryID = " + oSub.HEntryID);
                    };
                    oCN.RunProc($"insert into Gy_RoutingBillSub_WorkQty" +
                        $"(HInterID,HEntryID,HEntrySubID,HSourceID,HWorkQty_Source,HEntryStdEmpQty,HEntryStdEmpAvg,HSortNum,HRemark)" +
                        $"values({oSub.HInterID},{oSub.HEntryID},{i},{oSub.HSourceID},{oSub.HWorkQty_Source},{oSub.HEntryStdEmpQty}" +
                        $",{oSub.HEntryStdEmpAvg},{oSub.HSortNum},'{oSub.HRemark}')");
                }
                oCN.Commit();//提交事物
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();//回滚事物
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工艺路线孙表编辑获取数据
        [Route("Gy_RoutingBill/EditWorkQty")]
        [HttpGet]
        public object EditWorkQty(long HInterID,long HEntryID)
        {
            try
            {
                ds = oCN.RunProcReturn($"select * from h_v_Gy_RoutingBillSub_WorkQtyEdit where hmainid={HInterID} and hsubid={HEntryID} order by HEntrySubID asc", "h_v_Gy_RoutingBillSub_WorkQtyEdit");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "false!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    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 临时定额报表
@@ -1348,6 +1451,16 @@
                var ds = oCN.RunProcReturn("select * from Gy_RoutingBillMain where HInterID=" + HInterID, "Gy_RoutingBillMain");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    string HBillStatus = Convert.ToString(ds.Tables[0].Rows[0]["HBillStatus"]);
                    //string hdeleteman = Convert.ToString(ds.Tables[0].Rows[0]["hdeleteman"]);
                    if (HBillStatus == "6")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据在审核中,不能关闭!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (IsAudit == 0)  //关闭判断
                    {
                        if (ds.Tables[0].Rows[0]["HCloseMan"].ToString() != "")
@@ -1576,7 +1689,7 @@
                    " LEFT JOIN Gy_RoutingBillMain as po ON a.hmainid = po.HInterID" +
                    " LEFT JOIN Xt_CheckItem as i ON i.HItemID = c.HCheckItemID" +
                    " LEFT JOIN Xt_CheckUserRight as cr ON cr.HCheckItemID = i.HItemID and cr.HCheckFlowInterID = m.HInterID" +
                    " where po.HBillStatus = 6 and po.HCheckItemNowID = i.HItemID  and cr.HUserID = '" + userid + "'";
                    " where 工序代码 != '9999' and a.HBillSubType<>'SUB' and po.HBillStatus = 6 and po.HCheckItemNowID = i.HItemID  and cr.HUserID = '" + userid + "'";
                ds = oCN.RunProcReturn(sql, "h_v_Gy_RoutingBillList");
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
@@ -1623,10 +1736,11 @@
                    return objJsonResult;
                }
                //搜索需要审核的
                string sql = "  select DISTINCT a.*,c.HItemID as HCheckFlowStatusID,m.HName as 审批流,c.HCheckFlowID,i.HName as 审批项目名称,c.HCheckItemID,c.HChecker as 项目审核人,c.HCheckNote as 审批流审核建议,c.HCheckDate 审批流审核日期   from h_v_Gy_RoutingBillList AS a LEFT JOIN Xt_BillCheckFlowStatus AS c ON a.hmainid = c.HBillInterID and a.单据类型 = c.HBillTypeID" +
                string sql = "select TOP 1000 a.*,c.HItemID as HCheckFlowStatusID,m.HName as 审批流,c.HCheckFlowID,i.HName as 审批项目名称,c.HCheckItemID,c.HChecker as 项目审核人,c.HCheckNote as 审批流审核建议,c.HCheckDate 审批流审核日期   from h_v_Gy_RoutingBillList AS a LEFT JOIN Xt_BillCheckFlowStatus AS c ON a.hmainid = c.HBillInterID and a.单据类型 = c.HBillTypeID" +
                    " LEFT JOIN Xt_CheckFlowMain as m ON m.HInterID = c.HCheckFlowID" +
                    " LEFT JOIN Xt_CheckItem as i ON i.HItemID = c.HCheckItemID" +
                    " where c.HCheckDate is  not NUll and c.HChecker = '" + user + "'";
                    " where 工序代码 != '9999' and a.HBillSubType<>'SUB' and c.HCheckDate is  not NUll and c.HChecker = '" + user + "'"+
                    " ORDER BY a.hmainid DESC;";
                ds = oCN.RunProcReturn(sql, "h_v_Gy_RoutingBillList");
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
@@ -2046,6 +2160,17 @@
                            objJsonResult.count = CountConstant.SUCCEED;
                            objJsonResult.Message = "审核成功";
                            objJsonResult.data = null;
                            //获取系统参数
                            string Ret = "";
                            if (oSystemParameter.ShowBill(ref Ret))
                            {
                                //判断客户
                                if (oSystemParameter.omodel.WMS_CampanyName == "添康科技") //系统参数
                                {
                                    //刷新默认工艺路线
                                    oCN.RunProc("exec h_p_Gy_RoutingBillCheck " + HInterID + ",'" + CurUserName + "'");
                                }
                            }
                        }
                        else
                        {
@@ -2301,7 +2426,7 @@
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                ds = oCN.RunProcReturn("select * from h_v_Gy_RoutingBillList  where 定额类型 = '临时定额' and 失效时间 BETWEEN NOW() - INTERVAL 15 DAY AND NOW() " + sWhere + " order by hmainid desc", "h_v_Gy_RoutingBillList");
                ds = oCN.RunProcReturn("select * from h_v_Gy_RoutingBillList  where 定额类型 = '临时定额' and 状态!= '关闭' and 失效时间 BETWEEN  CAST(GETDATE() AS DATE) AND DATEADD(DAY, 15, GETDATE()) " + sWhere + " order by hmainid desc", "h_v_Gy_RoutingBillList");
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
@@ -2329,5 +2454,211 @@
        }
        #endregion
        #region 工艺路线(集体) 批量多级审核
        [Route("Gy_Routing/CheckAllFlow")]
        [HttpGet]
        public object CheckAll(string HInterIDS, int IsAudit, string CurUserName, string CurUserID)
        {
            try
            {
                //处理字符串
                if (!string.IsNullOrEmpty(HInterIDS))
                {
                    int[] idArray = Array.ConvertAll(HInterIDS.Split(','), int.Parse);
                    // 处理idArray...
                    for (int i = 0; i < idArray.Length; i++)
                    {
                        objJsonResult = (json)AuditGy_Routing_Flow(idArray[i], IsAudit, CurUserName, CurUserID);//审核执行
                        if (objJsonResult.count == 0)
                        {
                            objJsonResult.Message += "第" + (i + 1) + "行出现问题无法继续完成";
                            return objJsonResult;
                        }
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "请选择正确行";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = CodeConstant.SUCCEED;
                objJsonResult.count = CountConstant.SUCCEED;
                objJsonResult.Message = "执行成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "审核或反审核工艺路线失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工艺路线 批量驳回
        [Route("Gy_Routing/RejectAllCheckFlow")]
        [HttpGet]
        public object RejectAllCheckFlow(string HInterIDS,string CurUserID)
        {
            try
            {
                //处理字符串
                if (!string.IsNullOrEmpty(HInterIDS))
                {
                    int[] idArray = Array.ConvertAll(HInterIDS.Split(','), int.Parse);
                    // 处理idArray...
                    for (int i = 0; i < idArray.Length; i++)
                    {
                        objJsonResult = (json)RejectCheckFlow(idArray[i].ToString(),CurUserID);//审核执行
                        if (objJsonResult.count == 0)
                        {
                            objJsonResult.Message += "第" + (i + 1) + "行出现问题无法继续完成";
                            return objJsonResult;
                        }
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "请选择正确行";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = CodeConstant.SUCCEED;
                objJsonResult.count = CountConstant.SUCCEED;
                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;
            }
        }
        #endregion
        #region 工艺路线撤回
        [Route("Gy_Routing/WithdrawCheckFlow")]
        [HttpGet]
        public object WithdrawCheckFlow(string HInterID, string user)
        {
            try
            {
                Int64 lngBillKey = 0;
                lngBillKey = DBUtility.ClsPub.isLong(HInterID);      //对HInterID进行类型的转换
                DAL.ClsGy_RoutingBill oBill = new DAL.ClsGy_RoutingBill();                              //实例化单据操作类,用于进行相关操作
                //获取系统参数判断工艺路线是否启用多级审批禁用
                Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
                string sReturn = "";
                if (oSystemParameter.ShowBill(ref sReturn) == true)
                {
                    if (oSystemParameter.omodel.Gy_RoutingBill_EnableMultiLevel.ToUpper() == "N") //系统参数  未启用自动审核
                    {
                        objJsonResult.code = CodeConstant.FAIL;
                        objJsonResult.count = CountConstant.FAIL;
                        objJsonResult.Message = "工艺路线未启用多级审批禁用";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo))                    //根据HInterID获取该单据的数据
                {
                    if (oBill.omodel.HBillStatus != 6)
                    {
                        objJsonResult.code = CodeConstant.FAIL;
                        objJsonResult.count = CountConstant.FAIL;
                        objJsonResult.Message = "单据未在审核中不能撤回";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //判断是否有编辑权限
                    if (!DBUtility.ClsPub.Security_Log("Gy_RoutingBill_Edit", 1, false, user))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "工艺路线无权限撤回!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else
                {
                    objJsonResult.code = CodeConstant.FAIL;
                    objJsonResult.count = CountConstant.FAIL;
                    objJsonResult.Message = "单据不存在!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //判断是否存在审核过的项目
                string sql0 = "select * from Xt_BillCheckFlowStatus where HBillInterID = " + lngBillKey + " and HBillTypeID = '" + oBill.BillType + "' and ISNULL(HChecker,'') <> ''";
                DataSet ds0 = oCN.RunProcReturn(sql0, "Xt_BillCheckFlowStatus");
                if (ds0 != null && ds0.Tables[0].Rows.Count == 0)
                {
                    oCN.BeginTran();
                    //获取需要驳回的审核项目
                    string sql1 = "select c.* from Xt_CheckFlowMain as a " +
                                  "inner join Xt_CheckFlowSub as b on a.HInterID = b.HInterID " +
                                  "inner join Xt_BillCheckFlowStatus as c on a.HBillTypeID = c.HBillTypeID and b.HCheckItemID = c.HCheckItemID " +
                                  "where c.HBillTypeID = '" + this.BillType + "' and c.HBillInterID = " + lngBillKey + " " +
                                  "order by b.HFlowNo asc";
                    DataSet ds1= oCN.RunProcReturn(sql1, "Xt_BillCheckFlowStatus");
                    if (ds1 == null || ds1.Tables[0].Rows.Count == 0)
                    {
                        sReturn = "撤回失败!原因:未发起审批!!";
                        return false;
                    }
                    //获取当前审核项目
                    string HCheckFlowID = ds1.Tables[0].Rows[0]["HCheckFlowID"].ToString();             //审批流内码
                    sql0 = "select * from Gy_RoutingBillMain " + " where HInterID = " + lngBillKey;
                    ds0 = oCN.RunProcReturn(sql0, "Gy_RoutingBillMain");
                    string HCheckItemNowID = ds0.Tables[0].Rows[0]["HCheckItemNowID"].ToString();       //当前审批项目内码
                    //更新 驳回删除审核流状态表
                    string sql02 = "Delete Xt_BillCheckFlowStatus where HBillTypeID = '" + this.BillType + "' and HBillInterID=" + lngBillKey + " and HCheckFlowID=" + HCheckFlowID;
                    oCN.RunProc(sql02);
                    oCN.RunProc(" Update Gy_RoutingBillMain" + " set HChecker='',HCheckDate=null,HBillStatus=1,HCheckItemNowID = 0,HCheckItemNextID = 0 Where HInterID=" + lngBillKey.ToString());
                    oCN.Commit();
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "撤回成功!";
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
                else
                {
                    objJsonResult.code = CodeConstant.FAIL;
                    objJsonResult.count = CountConstant.FAIL;
                    objJsonResult.Message = "撤回失败!原因:单据存在已经审核的项目!!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = CodeConstant.FAIL;
                objJsonResult.count = CountConstant.FAIL;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}