zrg
2024-08-02 b34f4ee212f32e35809cbc875288154a39650dc0
WebAPI/Controllers/BaseSet/Gy_MaterialController.cs
@@ -13,6 +13,7 @@
using System.Windows.Forms;
using WebAPI.Models;
using WebAPI.Service;
using System.Text.RegularExpressions;
namespace WebAPI.Controllers
{
@@ -113,6 +114,84 @@
                return objJsonResult;
            }
        }
        #region 物料根据分类获取最大物料编码
        [Route("Gy_Material/getMaxNum")]
        [HttpGet]
        public object getMaxNum(int HMaterTypeID, string user, string Organization)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                //编辑权限
                if (!DBUtility.ClsPub.Security_Log_second("Gy_Material", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (HMaterTypeID == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有选择具体分类!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    ds = oCN.RunProcReturn(@"select * from h_v_Gy_MaterialList where 组织名称='" + Organization + "'" + "and HMaterTypeID = '"+ HMaterTypeID + "'" + " order by 物料代码 desc", "h_v_Gy_MaterialList");
                    if (ds == null || ds.Tables[0].Rows.Count == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "没有找到该分类的物料编码请使用普通新增";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    string HNumber = ds.Tables[0].Rows[0]["物料代码"].ToString();
                    // 使用正则表达式找到数字部分  (?<=\D)是一个零宽断言,表示前面的字符不是数字 (\d+)$表示后面跟着一连串字符串知道末尾
                    Match match = Regex.Match(HNumber, @"(?<=\D)(\d+)$");
                    if (match.Success)
                    {
                        string prefix = HNumber.Substring(0, HNumber.Length - match.Length); // 提取前缀
                        int number = int.Parse(match.Value); // 解析数字
                        // 数字+1
                        number++;
                        // 格式化数字,保持原长度
                        string formattedNumber = number.ToString().PadLeft(match.Length, '0');
                        // 重新组合字符串
                        string result = prefix + formattedNumber;
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "success";
                        objJsonResult.data = result;
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "此分类物料编码格式有误";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        /// <summary>
        /// 物料设置获取信息
@@ -852,7 +931,7 @@
                    return objJsonResult;
                }
                string sql1 = "select top 1000 * from h_v_IF_BarCodeBillList where 1 = 1 ";
                string sql1 = "select top 5000 * from h_v_IF_BarCodeBillList where 1 = 1 ";
                string sql = sql1 + sWhere + " order by hmainid desc";
                ds = oCN.RunProcReturn(sql, "h_v_IF_BarCodeBillList");
@@ -938,7 +1017,18 @@
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //进行 会计期间 结账 的判断和控制
                string s = "";
                int sYear = 0;
                int sPeriod = 0;
                DateTime HDate = DateTime.Now;
                if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(HDate, ref sYear, ref sPeriod, ref s) == false)
                {
                    objJsonResult.Message = s;
                    return objJsonResult;
                }
                Ds = oCN.RunProcReturn("Select * from h_v_IF_BarCodeBillList Where HItemID in (" + HInterID + ")", "h_v_IF_BarCodeBillList");
                if (Ds.Tables[0].Rows.Count != 0)
                {
@@ -993,7 +1083,186 @@
        }
        #endregion
        #region 条码主档维护 作废/反作废
        /// <summary>
        /// </summary>
        /// <param name="HInterID">单据ID</param>
        /// <param name="IsAudit">作废(0),反作废(1)</param>
        /// <param name="CurUserName">作废人</param>
        /// <returns></returns>
        [Route("Gy_BarCodeBillList/DeleteGy_BarCodeBillList")]
        [HttpGet]
        public object DeleteGy_BarCodeBillList(int HInterID, int IsAudit, string CurUserName)
        {
            string ModRightNameCheck = "Gy_BarCodeBillList_Delete";
            DBUtility.ClsPub.CurUserName = CurUserName;
            try
            {
                //检查权限
                if (!DBUtility.ClsPub.Security_Log_second(ModRightNameCheck, 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "作废失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //HInterID数据判断
                if (HInterID <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID小于0!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                Int64 lngBillKey = 0;
                lngBillKey = DBUtility.ClsPub.isLong(HInterID);                                         //对HInterID进行类型的转换
                //进行需要进行的作废/反作废操作
                if (IsAudit == 0) //作废提交
                {
                    oCN.BeginTran();
                    //作废条码
                    oCN.RunProc("update Gy_BarCodeBill set HStopflag=1,HDeleteMan='" + CurUserName + "',HDeleteDate=getdate() where HItemID in (" + HInterID + ")", ref DBUtility.ClsPub.sExeReturnInfo);
                    string sql = "select * from Gy_BarCodeBill where HItemID = " + HInterID;
                    ds = oCN.RunProcReturn(sql, "Gy_BarCodeBill");
                    if(ds!=null && ds.Tables[0].Rows.Count > 0)
                    {
                        string HBarCode = ds.Tables[0].Rows[0]["HBarCode"].ToString();
                        //添加操作日志
                        oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + CurUserName + "','" + DBUtility.ClsPub.ComputerName + "','作废条码:" + HBarCode + "','WMS系统-条码档案列表模块','" + DBUtility.ClsPub.IPAddress + "','作废'", ref DBUtility.ClsPub.sExeReturnInfo);
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "作废成功";
                        objJsonResult.data = null;
                        oCN.Commit();
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "作废失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        oCN.RollBack();
                    }
                    return objJsonResult;
                }
                if (IsAudit == 1) //反关闭提交
                {
                    oCN.BeginTran();
                    #region 反作废条码前进行判断
                    //反作废条码前进行判断------------------------------------------------------------------------------------------------------------------------------------------------------
                    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                    DataSet DS = oCN.RunProcReturn("exec h_p_Gy_BarCodeBill_UnCancelltion '" + HInterID + "','N'", "h_p_Gy_BarCodeBill_UnCancelltion", ref DBUtility.ClsPub.sExeReturnInfo);
                    if (DS == null || DS.Tables[0].Rows.Count <= 0)
                    {
                        oCN.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "反作废失败,原因:反作废条码前判断发生错误!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        if (DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0][0]) == "1")
                        {
                            oCN.RollBack();
                            objJsonResult.code = "1";
                            objJsonResult.count = 1;
                            objJsonResult.Message = "反作废失败,原因:" + DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HRemark"]);
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                    #endregion
                    //反作废条码
                    oCN.RunProc("update Gy_BarCodeBill set HStopflag=0,HDeleteMan='',HDeleteDate=null where HItemID in (" + HInterID + ")", ref DBUtility.ClsPub.sExeReturnInfo);
                    //增加操作日志
                    string sql = "select * from Gy_BarCodeBill where HItemID = " + HInterID;
                    ds = oCN.RunProcReturn(sql, "Gy_BarCodeBill");
                    if (ds != null && ds.Tables[0].Rows.Count > 0)
                    {
                        string HBarCode = ds.Tables[0].Rows[0]["HBarCode"].ToString();
                        oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + CurUserName + "','" + DBUtility.ClsPub.ComputerName + "','反作废条码:" + HBarCode + "','WMS系统-条码档案列表模块','" + DBUtility.ClsPub.IPAddress + "','反作废'", ref DBUtility.ClsPub.sExeReturnInfo);
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反作废成功";
                        objJsonResult.data = null;
                        oCN.Commit();
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "反作废失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        oCN.RollBack();
                        return objJsonResult;
                    }
                }
                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_MouldFileMain/Gy_MouldFileSubDetai")]
        [HttpGet]
        public object Gy_MouldFileSubDetai(long HInterID)
        {
            try
            {
                List<DataTable> tableList = new List<DataTable>();
                ds = oCN.RunProcReturn("select a.*,b.HBillNo from Gy_MouldFileSub_MaintainRule AS a left join Sc_MouldMaintainRuleBillMain as b on b.HInterID = a.HMaintainRuleID where a.HInterID = " + HInterID, "Gy_MouldFileBill_MaintainRule");
                tableList.Add(ds.Tables[0]);
                ds = oCN.RunProcReturn("select a.*,b.HBillNo from Gy_MouldFileSub_DotCheckRule AS a left join Sc_MouldDotCheckRuleBillMain as b on b.HInterID = a.HDotCheckRuleID where a.HInterID = " + HInterID, "Gy_MouldFileBill_DotCheckRule");
                tableList.Add(ds.Tables[0]);
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "";
                objJsonResult.data = tableList;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        /// <summary>
        /// 新增模具档案-保存按钮
        ///参数:string sql。
@@ -1020,10 +1289,9 @@
                return objJsonResult;
            }
            //保存主表
            objJsonResult = AddBillMain(msg2);
            objJsonResult = AddBillMain(msg1);
            if (objJsonResult.code == "0")
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = objJsonResult.Message;
@@ -1037,8 +1305,15 @@
            return objJsonResult;
        }
        public json AddBillMain(string msg2)
        public json AddBillMain(string msg1)
        {
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();//模块权限
            string msg4 = sArray[2].ToString();//当前人
            string msg5 = sArray[3].ToString();//子表数据
            string msg6 = sArray[4].ToString();//子表1数据
            string msg7 = sArray[5].ToString();//子表2数据
            try
            {
                msg2 = "[" + msg2.ToString() + "]";
@@ -1119,7 +1394,6 @@
                ",'" + HUseLife + "','" + HLeaveLife + "','" + HProdQty + "','" + HProdWeight + "','" + HMouldOWNER + "','" + HSaveLife + "','" + HMouldDotCheckRuleInterID + "','" + HMouldMaintainRuleInterID + "','" + HBarCode + "'," + HMadeSupID +
                ",'"+ HMouldClass + "'," + HNowWHID + "," + HNowSPID + ") ");
                //子表
                oCN.RunProc("Insert into Gy_MouldFileSub " +
                    " (HInterID,HEntryID,HRemark" +
@@ -1128,6 +1402,8 @@
                " values('" + HInterID + "',0,''" +
                ",0,0,'','',0,0 " +
                ") ");
                objJsonResult = AddBillSub(msg5,msg6,msg7,HInterID, HBillNo);
                if (objJsonResult.code == "0")
                {
@@ -1146,6 +1422,7 @@
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
@@ -1170,6 +1447,9 @@
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();//模块权限
            string msg4 = sArray[2].ToString();//当前人
            string msg5 = sArray[3].ToString();//子表数据
            string msg6 = sArray[4].ToString();//子表2数据
            string msg7 = sArray[5].ToString();//子表3数据
            try
            {
                if (!DBUtility.ClsPub.Security_Log(msg3, 1, false, msg4))
@@ -1300,7 +1580,12 @@
                //oCN.RunProc("exec h_p_Gy_UpdateNumber Gy_Department,'" + HNumber + ".','" + this.HOldNumber + ".'", ref DBUtility.ClsPub.sExeReturnInfo);
                //将上级 为非末级
                // oCN.RunProc("Update Gy_Department set HEndflag=0 where HItemID=" + HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                //
                oCN.RunProc("delete from Gy_MouldFileSub_SubMater where HInterID='" + HInterID + "'");
                oCN.RunProc("delete from Gy_MouldFileSub_MaintainRule where HInterID='" + HInterID + "'");
                oCN.RunProc("delete from Gy_MouldFileSub_DotCheckRule where HInterID='" + HInterID + "'");
                objJsonResult = AddBillSub(msg5, msg6, msg7, HInterID, HBillNo);
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
@@ -1319,6 +1604,86 @@
            }
        }
        public json AddBillSub(string msg5, string msg6, string msg7, long HInterID, string HBillNo)
        {
            List<Gy_MouldFileSub_SubMater> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Gy_MouldFileSub_SubMater>>(msg5);
            List<ClsGy_MouldFileBillSub_MaintainRule> MaintainRuleColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsGy_MouldFileBillSub_MaintainRule>>(msg6);
            List<ClsGy_MouldFileBillSub_DotCheckRule> DotCheckRuleColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsGy_MouldFileBillSub_DotCheckRule>>(msg7);
            int i = 0;                                          //作为子表内码
            foreach (Gy_MouldFileSub_SubMater oSub in DetailColl)
            {
                i++;                                            //同一个主表下的子表的内码自增
                int HEntryID = i;
                string HRemark = oSub.HRemark;
                int HMouldFileID = oSub.HMouldFileID;
                DateTime HUnionDate = oSub.HUnionDate;
                string sql = "insert into Gy_MouldFileSub_SubMater" +
                    "(HInterID,HBillNo_bak,HEntryID,HRemark,HMouldFileID,HUnionDate) " +
                    "values(" +
                    "" + HInterID +
                    ",'" + HBillNo +
                    "'," + HEntryID +
                    ",'" + HRemark +
                    "','" + HMouldFileID +
                    "','" + HUnionDate +
                    "')";
                oCN.RunProc(sql);
            }
            i = 0;
            //保存保养规格
            foreach (ClsGy_MouldFileBillSub_MaintainRule oSub in MaintainRuleColl)
            {
                i++;
                Int64 NewHEntryID = i;
                Int64 newHFlag = 1;
                if (oSub.HStdFlag == true)
                {
                    newHFlag = 1;
                }
                else
                {
                    newHFlag = 0;
                }
                oCN.RunProc($@"Insert into Gy_MouldFileSub_MaintainRule
                (HInterID,HBillNo_bak,HEntryID,HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney,
                 HMaintainRuleID,HStdFlag
               )
                 values({HInterID},'{HBillNo}',{NewHEntryID},'{oSub.HRemark}',{oSub.HSourceInterID},{oSub.HSourceEntryID},'{oSub.HSourceBillNo}','{oSub.HSourceBillType}',{oSub.HRelationQty},{oSub.HRelationMoney}
                ,{oSub.HMaintainRuleID},{newHFlag})");
            }
            i = 0;
            //保存点检规程
            foreach (ClsGy_MouldFileBillSub_DotCheckRule oSub in DotCheckRuleColl)
            {
                i++;
                Int64 NewHEntryID = i;
                Int64 newHFlag = 1;
                if (oSub.HStdFlag == true)
                {
                    newHFlag = 1;
                }
                else
                {
                    newHFlag = 0;
                }
                oCN.RunProc($@"Insert into Gy_MouldFileSub_DotCheckRule
                (HInterID,HBillNo_bak,HEntryID,HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney,
                 HDotCheckRuleID,HStdFlag
               )
                 values({HInterID},'{HBillNo}',{NewHEntryID},'{oSub.HRemark}',{oSub.HSourceInterID},{oSub.HSourceEntryID},'{oSub.HSourceBillNo}','{oSub.HSourceBillType}',{oSub.HRelationQty},{oSub.HRelationMoney}
                ,{oSub.HDotCheckRuleID},{newHFlag})");
            }
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = null;
            objJsonResult.data = null;
            return objJsonResult;
        }
        /// <summary>
        /// 磨具档案修改按钮方法-计算下次保养/校正日期-获取档案最近一次的保养记录
@@ -1406,6 +1771,8 @@
                }
                if (oBill.DeleteBill(hmainid, ref DBUtility.ClsPub.sExeReturnInfo))
                {
                    oCN.RunProc("Delete From Gy_MouldFileSub_MaintainRule  where HInterID=" + hmainid);
                    oCN.RunProc("Delete From Gy_MouldFileSub_DotCheckRule  where HInterID=" + hmainid);
                    //写入日志
                    ClsPub.Add_Log("", "删除项目,代码:" + oBill.omodel.HMouldNo + ",名称:" + oBill.omodel.HName, ClsPub.CurUserName);
                    //更新上级为 末级
@@ -1663,7 +2030,7 @@
                ,HPERUNITSTANDHOUR,HSTDLABORPREPARETIME,HSTDMACHINEPREPARETIME
                 )
                values
                ({jsonData.HItemID},{jsonData.HERPItemID},'{jsonData.HNumber}','{jsonData.HName}','{jsonData.HModel}',
                ({jsonData.HItemID},{jsonData.HItemID},'{jsonData.HNumber}','{jsonData.HName}','{jsonData.HModel}',
                '{jsonData.HShortNumber}',{jsonData.HParentID},{jsonData.HLevel},{jsonData.HEndFlag},{jsonData.HStopflag},'{jsonData.HRemark}',{jsonData.HMaterClsID},{jsonData.HUnitID},{jsonData.HUnitGroupID},{jsonData.HLength},{jsonData.HWidth},{jsonData.HHeight},{jsonData.HJQty},{jsonData.HMQty},'{jsonData.HOldMaterNumber}',{jsonData.HWHID},{jsonData.HSPID},'{jsonData.HPlanMode}','{jsonData.HUseFlag}','{jsonData.HMakeTime}',{jsonData.HMinPickQty},{jsonData.HCREATEORGID},{jsonData.HUSEORGID},'{jsonData.HBatchManager}',{jsonData.HCHECKINCOMING},{jsonData.HAuxPropFlag},{jsonData.HISKFPERIOD},{jsonData.HAuxUnitID},{jsonData.HSNUnitID},{jsonData.HBASEUNITID},{jsonData.HSALEUNITID},{jsonData.HSALEPRICEUNITID},{jsonData.HPERUNITSTANDHOUR},'{jsonData.HSTDLABORPREPARETIME}','{jsonData.HSTDMACHINEPREPARETIME}')";
                    oCN.RunProc(sql);