ch
2022-08-15 4bf3ca7fc8e3cceba62d6617724cac3cbc919746
WebAPI/Controllers/Éú²ú¹ÜÀí/±¨¹¤Ì¨¹¤Ðò/Sc_MESBeginStepWorkBillController.cs
@@ -1,4 +1,5 @@
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using Pub_Class;
@@ -40,10 +41,11 @@
        [Route("Sc_MESBeginStepWorkBill/GetMESBeginStepWorkBill")]
        [HttpGet]
        public object GetMESBeginStepWorkBill(string sWhere,string user)
        public object GetMESBeginStepWorkBill(string sWhere, string user)
        {
            try
            {
                LogService.Write("执行了0");
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("MES_MESBeginWorkBill_Query", 1, false, user))
                {
@@ -53,7 +55,7 @@
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                LogService.Write("执行了");
                ds = Sc_GetMESBeginStepWorkBill(sWhere);
                objJsonResult.code = "1";
@@ -80,8 +82,9 @@
            }
            else
            {
                LogService.Write("执行了1");
                string sql1 = "select * from h_v_Sc_MESBeginWorkBillList_NEW where 1 = 1 ";
                string sql = sql1 + sWhere+ " order by hmainid desc ";
                string sql = sql1 + sWhere + " order by hmainid desc ";
                return new SQLHelper.ClsCN().RunProcReturn(sql, "h_v_Sc_MESBeginWorkBillList_NEW");
            }
@@ -799,7 +802,7 @@
                    oItemSub.HOtherItem4 = "";
                    oItemSub.HOtherItem5 = "";
                    oItemSub.HPackType = "";
                    oItemSub.HBatchNo="";
                    oItemSub.HBatchNo = "";
                    //oItemSub.HRelationMoney = 0;   //关联金额
                    //oItemSub.HRepairID = 0;       //维修项目
                    //oItemSub.HRepairExplanation ="";   //维修要求
@@ -1024,11 +1027,9 @@
                }
                oCN.BeginTran();
                //删除工序汇报子表
                string sql1 = string.Format(@"delete Sc_ProcessReportSub  where HInterID='"+HInterID+"' and   HICMOInterID='" + HICMOInterID + "' and HICMOEntryID='" + HICMOEntryID + "'");
                oCN.RunProc(sql1);
                //删除工序汇报主表
                string sql = string.Format(@"delete Sc_ProcessReportMain  where HInterID='" + HInterID + "'");
                //删除产量汇报表
                string sql = string.Format(@"delete Sc_ICMOBillWorkQtyStatus_Tmp  where HInterID='" + HInterID + "'");
                oCN.RunProc(sql);
                oCN.Commit();
@@ -1054,7 +1055,7 @@
        #region æŠ¥å·¥å¹³å°æŠ¥æ£€ç”³è¯·ä¿å­˜
        [Route("Sc_MESBeginStepWorkBill/SaveGetMESProductReportBillList")]
        [HttpGet]
        public object SaveGetMESProductReportBillList(string ScMaxWork, string HSourceBillType, string workcode, int HSourceID, int HICMOInterID, int HICMOEntryID, string HMaker, string Czybm,string HProcID)
        public object SaveGetMESProductReportBillList(string ScMaxWork, string HSourceBillType, string workcode, int HSourceID, int HICMOInterID, int HICMOEntryID, string HMaker, string Czybm, string HProcID)
        {
            ListModels oListModels = new ListModels();
            try
@@ -1122,7 +1123,7 @@
                //model.HPRDORGID = DBUtility.ClsPub.isLong(ds0.Tables[0].Rows[0]["HPRDORGID"]);
                model.HMainSourceInterID = HICMOInterID;
                model.HMainSourceEntryID = HICMOEntryID;
                //oWebs.Timeout = 30000;
                bool flag = oWebs.set_SaveICMOProductReportBill_LayuiYqn(model, workcode, HSourceID, sHSourceType, HProcID, ref DBUtility.ClsPub.sErrInfo);
@@ -1179,7 +1180,7 @@
            try
            {
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("MES_ProcExchReport_Edit",1,false,user))
                if (!DBUtility.ClsPub.Security_Log("MES_ProcExchReport_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
@@ -1455,5 +1456,234 @@
            }
        }
        #endregion
        #region  æŠ¥å·¥å¹³å°å¼€å·¥å•扫二维码查询
        [Route("Sc_MESBeginStepWorkBill/GetMESBeginStepWorkBillByEWM")]
        [HttpGet]
        public object GetMESBeginStepWorkBillByEWM(string sBillBarCode)
        {
            try
            {
                //根据选择资源ID获取当前生产工单、责任人
                ds = oCN.RunProcReturn("select f1.F_YQN_XSDD é”€å”®è®¢å•编号, f1.F_zzzz_Text4 é”€å”®ç‰©æ–™åç§°,* from h_v_IF_ICMOBillList a left join AIS20200908101915zs..T_PRD_MOENTRY f1 on a.HERPEntryID=f1.FENTRYID where convert(varchar(50),a.hmainid)+'-'+convert(varchar(50),a.HEntryID)='" + sBillBarCode + "'", "h_v_IF_ICMOBillList");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "返回源单成功!";
                    objJsonResult.data = ds;
                    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.Message.ToString();
                objJsonResult.data = null;
            }
            return objJsonResult;
        }
        #endregion
        #region  æŠ¥å·¥å¹³å°å¼€å·¥å•无源单保存
        [Route("Sc_MESBeginStepWorkBill/SaveGetMESBeginStepWorkBillByEWM")]
        [HttpPost]
        public object SaveGetMESBeginStepWorkBillByEWM([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string UserName = sArray[1].ToString();
            string refSav = sArray[2].ToString();
            DBUtility.ClsPub.CurUserName = UserName;
            //保存权限
            if (!DBUtility.ClsPub.Security_Log_second("MES_MESBeginWorkBill_Edit", 1, false, DBUtility.ClsPub.CurUserName))
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "无保存权限!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            //判断会计期是否合理
            string s = "";
            int sYear = 0;
            int sPeriod = 0;
            string BillNo = "";
            long MainId = 0;
            string EntyID = "";
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(DateTime.Now, ref sYear, ref sPeriod, ref s) == false)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = s;
                objJsonResult.data = null;
                return objJsonResult;
            }
            ListModels oListModels = new ListModels();
            try
            {
                DLL.ClsSc_MESBeginWorkBill oBill = new DLL.ClsSc_MESBeginWorkBill();
                List<Models.ClsSc_MESBeginWorkBillMain> lsmain = new List<Models.ClsSc_MESBeginWorkBillMain>();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                lsmain = oListModels.getObjectByJson_Gy_MESBeginWorkFrom(msg2);
                foreach (Models.ClsSc_MESBeginWorkBillMain oItem in lsmain)
                {
                    if (refSav == "Add")
                    {
                        //单据号是否重复
                        if (BillNew.IsExistBillNo(ref ClsPub.sExeReturnInfo, oItem.HBillNo, BillStatus, BillOld.omodel.HInterID))
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据号重复!不允许保存!";
                            objJsonResult.data = 1;
                            return objJsonResult;
                        }
                    }
                    //生产订单编号、生产订单主ID、生产订单主ID+子ID
                    BillNo = oItem.HMainSourceBillNo;
                    MainId = oItem.HMainSourceInterID;
                    EntyID = oItem.HMainSourceEntryID;
                    DBUtility.ClsPub.CurUserName = oItem.HMaker;
                    oItem.HBillType = "3787";
                    oItem.HBillSubType = "3787";
                    oItem.HBillStatus = 1;   //单据状态(1未审,2审核通过,3关闭,4作废,5审核退回,6审核中,7已阅,8已回复,9结案,10验证,11下达,12开工,13申请审批,15申请检验,16 åˆ¤å®šåˆæ ¼ï¼Œ17判定不合格)
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HBarCodeMakeDate = Convert.ToDateTime(DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"))); //扫描日期(年-月-日-时-分-秒)
                    if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没有单据日期,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oBill.omodel = oItem;
                }
                bool bResult;
                if (oBill.omodel.HInterID == 0)
                {
                    oCN.BeginTran();
                    //根据生产订单子ID找对应的生产用料清单
                    DataSet Ds = oCN.RunProcReturn("select b.FID,b.FBILLNO,b.FDOCUMENTSTATUS from  Sc_ICMOBillSub a left join AIS20200908101915zs..T_PRD_PPBOM b on a.HERPEntryID=b.FMOENTRYID where a.HEntryID=" + (EntyID).Split('-')[1], "Sc_ICMOBillSub");
                    //查找当前生产订单明细状态
                    DataSet Dss = oCN.RunProcReturn("select FSTATUS from AIS20200908101915zs..T_PRD_MOENTRY_A where FENTRYID=" + (EntyID).Split('-')[1], "AIS20200908101915zs..T_PRD_MOENTRY_A");
                    //判断金蝶生产单的状态不为4则执行开工
                    if (Dss.Tables[0].Rows[0][0].ToString() != "4")
                    {
                        oCN.RunProc("update AIS20200908101915zs..T_PRD_MOENTRY_A set FSTATUS=4,FCONVEYDATE=getdate() where FENTRYID=" + (EntyID).Split('-')[1]);
                    }
                    else
                    {
                        oCN.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据已开工!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //访问金蝶
                    var loginRet = InvokeHelper.Login();
                    var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                    if (isSuccess == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "操作失败,金蝶账号登录异常。" + loginRet;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    var json = new
                    {
                        //CreateOrgId = 0,
                        //Numbers = BillNo,
                        Ids = Ds.Tables[0].Rows[0][0].ToString(),
                        //PkEntryIds = (EntyID).Split('-')[1]
                    };
                    //LogService.Write("json=" + json);
                    string result1 = string.Empty;
                    string result2 = string.Empty;
                    //判断当前用生产料清单单状态——已创建则先提交再审核、以提交则只审核--A:创建,B:提交,C:审核,D:重新审核
                    if (Ds.Tables[0].Rows[0][2].ToString() == "A"|| Ds.Tables[0].Rows[0][2].ToString() == "D")
                    {
                        result1 = InvokeHelper.Submit("PRD_PPBOM", JsonConvert.SerializeObject(json));
                        result2 = InvokeHelper.Audit("PRD_PPBOM", JsonConvert.SerializeObject(json));
                    }
                    if (Ds.Tables[0].Rows[0][2].ToString() == "B")
                    {
                        result2 = InvokeHelper.Audit("PRD_PPBOM", JsonConvert.SerializeObject(json));
                    }
                    LogService.Write("result2=" + result2);
                    //判断审核是否成功
                    if (JObject.Parse(result2)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                    {
                        oCN.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"对应生产用料清单,单号{Ds.Tables[0].Rows[0][1].ToString()},审核失败!" + result2;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //保存
                    ////执行保存
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    if (bResult)
                    {
                        objJsonResult.HInterID = DBUtility.ClsPub.sExeReturnInfo; //返回主ID
                        //系统参数  è‡ªåŠ¨å®¡æ ¸
                        string sReturn = "";
                        if (oSystemParameter.ShowBill(ref sReturn) == true)
                        {
                            if (oSystemParameter.omodel.Sc_ICMOBillWorkQtyStatus_AutoCheck == "Y") //系统参数  è‡ªåŠ¨å®¡æ ¸
                            {
                                objJsonResult.Verify = "Y";
                            }
                            else
                            {
                                objJsonResult.Verify = "N";
                            }
                        }
                    }
                }
                oCN.Commit();
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = e.Message;
                objJsonResult.data = 1;
                return objJsonResult;
            }
        }
        #endregion
    }
}
}