using Newtonsoft.Json.Linq; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using Pub_Class; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Runtime.InteropServices; using System.Web; using System.Web.Http; using System.Windows.Forms; using WebAPI.Models; namespace WebAPI.Controllers.基础资料.基础资料 { public class Gy_SOPBillEditController : ApiController { public DBUtility.ClsPub.Enum_BillStatus BillStatus; private json objJsonResult = new json(); SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds; public DAL.ClsGy_SOPBill BillNew = new DAL.ClsGy_SOPBill(); public DAL.ClsGy_SOPBill BillOld = new DAL.ClsGy_SOPBill(); public bool BillChange; // public DataGridView grdMain = new System.Windows.Forms.DataGridView(); ClsGridViewSum oSumGrid = new ClsGridViewSum(); //获取系统参数 Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); //定义 public const Int16 HTagCol = 0; public const Int16 HSnoCol = 1; public const Int16 HProcNoCol = 2; public const Int16 HProcIDCol = 3; public const Int16 HProcNumberCol = 4; public const Int16 HProcNameCol = 5; public const Int16 HWorkStationIDCol = 6; public const Int16 HWorkStationNumberCol = 7; public const Int16 HWorkStationNameCol = 8; public const Int16 HCenterIDCol = 9; public const Int16 HCenterNumberCol = 10; public const Int16 HCenterNameCol = 11; public const Int16 HRemarkCol = 12; public const Int16 HEntryIDCol = 13; DAL.ClsIF_Material_View oMater = new DAL.ClsIF_Material_View(); DAL.ClsIF_Unit_View oUnit = new DAL.ClsIF_Unit_View(); DAL.ClsIF_Process_View oProc = new DAL.ClsIF_Process_View(); DAL.ClsGy_WorkStation_View oStation = new DAL.ClsGy_WorkStation_View(); DAL.ClsGy_WorkCenter_View oCenter = new DAL.ClsGy_WorkCenter_View(); #region 读写类 //显示单据 public void Sub_ShowBill() { DAL.ClsIF_Material_View oMater = new DAL.ClsIF_Material_View(); DAL.ClsIF_Unit_View oUnit = new DAL.ClsIF_Unit_View(); DAL.ClsIF_Process_View oProc = new DAL.ClsIF_Process_View(); DAL.ClsGy_WorkStation_View oStation = new DAL.ClsGy_WorkStation_View(); DAL.ClsGy_WorkCenter_View oCenter = new DAL.ClsGy_WorkCenter_View(); //ClsGy_SourceHlp oSource = new ClsGy_SourceHlp(); //判断是否存在单据 if (BillOld.ShowBill(BillOld.omodel.HInterID, ref ClsPub.sExeReturnInfo) == false) { MessageBox.Show(ClsPub.sExeReturnInfo, "提示"); return; } //grid禁止刷新 //加载表体 int i = 0; foreach (Model.ClsGy_SOPBillSub oSub in BillOld.DetailColl) { if (i >= grdMain.RowCount - 1) grdMain.Rows.Add(); grdMain.Rows[i].Cells[HTagCol].Value = "*"; grdMain.Rows[i].Cells[HProcIDCol].Value = oSub.HProcID.ToString(); if (oProc.GetInfoByID(oSub.HProcID)) { grdMain.Rows[i].Cells[HProcNumberCol].Value = oProc.omodel.HNumber; grdMain.Rows[i].Cells[HProcNameCol].Value = oProc.omodel.HName; } else { grdMain.Rows[i].Cells[HProcNumberCol].Value = ""; grdMain.Rows[i].Cells[HProcNameCol].Value = ""; } // grdMain.Rows[i].Cells[HCenterIDCol].Value = oSub.HCenterID.ToString(); if (oCenter.GetInfoByID(oSub.HCenterID)) { grdMain.Rows[i].Cells[HCenterNumberCol].Value = oCenter.omodel.HNumber; grdMain.Rows[i].Cells[HCenterNameCol].Value = oCenter.omodel.HName; } else { grdMain.Rows[i].Cells[HCenterNameCol].Value = ""; grdMain.Rows[i].Cells[HCenterNumberCol].Value = ""; } // grdMain.Rows[i].Cells[HWorkStationIDCol].Value = oSub.HWorkStationID.ToString(); if (oStation.GetInfoByID(oSub.HWorkStationID)) { grdMain.Rows[i].Cells[HWorkStationNumberCol].Value = oStation.omodel.HNumber; grdMain.Rows[i].Cells[HWorkStationNameCol].Value = oStation.omodel.HName; } else { grdMain.Rows[i].Cells[HWorkStationNumberCol].Value = ""; grdMain.Rows[i].Cells[HWorkStationNameCol].Value = ""; } // grdMain.Rows[i].Cells[HProcNoCol].Value = oSub.HProcNo.ToString(); grdMain.Rows[i].Cells[HRemarkCol].Value = oSub.HRemark; grdMain.Rows[i].Cells[HEntryIDCol].Value = oSub.HEntryID; i = i + 1; } //GRID允许刷新 DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid); // //Sub_OperStatus(); } #endregion #region 保存单据 [Route("Gy_SOPBill/ModifyByID")] [HttpPost] public object Sub_SaveBill([FromBody] JObject oMain) { try { var _value = oMain["oMain"].ToString(); string msg1 = _value.ToString(); string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string msg2 = sArray[0].ToString(); string msg3 = sArray[2].ToString();//当前人 //反序列化 msg2 = "[" + msg2.ToString() + "]"; List list = Newtonsoft.Json.JsonConvert.DeserializeObject>(msg2); string HBillNo = list[0].HBillNo; int HInterID = list[0].HInterID; DateTime HDate = list[0].HDate; string HName = list[0].HName; int HMaterID = list[0].HMaterID; string HMaterNumber = list[0].HMaterNumber; string HMaterName = list[0].HMaterName; string HMaterModel = list[0].HMaterModel; int HUnitID = list[0].HUnitID; string HUnitNumber = list[0].HUnitNumber; string HUnitName = list[0].HUnitName; string HRemark = list[0].HRemark; bool HStandard = list[0].HStandard; bool HUse = list[0].HUse; string HMaker = msg3; int HMaterTypeID = list[0].HMaterTypeID; //子表 List list2 = Newtonsoft.Json.JsonConvert.DeserializeObject>(msg2); int HProcNo = list2[0].HProcNo; long HProcID = list2[0].HProcID; long HWorkStationID = list2[0].HWorkStationID; long HCenterID = list2[0].HCenterID; string HRemark2 = list2[0].HRemark; //判断权限 //if (!ClsPub.Security_Log("Gy_Repair_Edit", 1, false, msg3)) //{ // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "没有找到该功能模块!"; // objJsonResult.data = null; // return objJsonResult; //} DataSet CS; Int64 lID = 0; string BillType = ""; CS = oCN.RunProcReturn("select * from Gy_BillNumber with (nolock) where BillCode='" + 3305 + "'", "Gy_BillNumber"); if (CS.Tables[0].Rows.Count != 0) { lID = ClsPub.isLong(CS.Tables[0].Rows[0]["IDNow"].ToString()); BillType = CS.Tables[0].Rows[0]["BillType"].ToString().Trim(); } //若MAINDI重复则重新获取 oCN.BeginTran(); //主表 oCN.RunProc("Insert Into Gy_SOPBillMain " + "(HBillType,HInterID,HBillNo,HDate" + ",HYear,HPeriod,HRemark,HMaker,Hmakedate,HMaterID,HName,HMaterTypeID" + ",HUnitID,HMaterNumber,HUnitNumber,HStandard" + ") " + " values('" + 3305 + "'," + HInterID + ",'" + HBillNo + "'," + "getdate()" + "," + "datepart(yyyy,GETDATE())" + "," + "datepart(mm,getdate())" + ",'" + HRemark + "','" + HMaker + "'," + "getdate()" + "," + HMaterID.ToString() + ",'" + HName + "'," + HMaterTypeID + "," + HUnitID.ToString() + ",'" + HMaterNumber + "','" + HUnitNumber + "','" + HStandard.ToString() + "') "); //oCN.RunProc("update Gy_BillNumber set IDNow=IDNow+1 where BillType='" + BillType.Trim() + "'"); //" values(" + 3305 + "','" + 12333 + "','" + "test" + "','" + HDate + "','" + //2022 + "','" + 11 + "','" + HRemark + "','" + "Test" + "','" + "2022-11-04" + "','" + HMaterID.ToString() + "','" + HName + "','" + "656" + //"','" + HUnitID.ToString() + "','" + HMaterNumber + "','" + HUnitNumber + "','" + HStandard.ToString() + //") "); //修改上级为非末级代码 //oCN.RunProc("Update Gy_MouldType set HEndflag=0 where HItemID=" + HParentID, ref DBUtility.ClsPub.sExeReturnInfo); //插入子表 oCN.RunProc("Insert into Gy_SOPBillSub " + "(HInterID,HEntryID,HProcID,HProcNO" + ",HWorkStationID,HCenterID,HRemark" + ") values(" + HInterID + "," + 1 + "," + HProcID + "," + HProcNo + "," + HWorkStationID + "," + HCenterID + ",'" + HRemark2 + "'" + ") "); oCN.Commit(); objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "新增成功!"; return objJsonResult; } catch (Exception e) { oCN.RollBack(); objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.Message; objJsonResult.data = null; return objJsonResult; } } #endregion #region 保存单据 [Route("Gy_SOPBill/Save")] [HttpPost] public object Save([FromBody] JObject oMain) { try { var _value = oMain["oMain"].ToString(); string msg1 = _value.ToString(); string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string msgMain = sArray[0].ToString(); //表头信息 string msgSub = sArray[1].ToString(); //表体信息 string OperationType = sArray[2].ToString(); //操作类型 string user = sArray[3].ToString(); //用户 DBUtility.ClsPub.CurUserName = user; ListModels oListModels = new ListModels(); DAL.ClsGy_SOPBill oBill = new DAL.ClsGy_SOPBill(); List lsmain = new List(); msgMain = msgMain.Replace("\\", ""); msgMain = msgMain.Replace("\n", ""); //\n lsmain = oListModels.getObjectByJson_Gy_SOPBillMain(msgMain); foreach (Model.ClsGy_SOPBillMain oItem in lsmain) { oBill.omodel = oItem; } //表体数据 //按 },{来拆分数组 //去掉【和】 msgSub = msgSub.Substring(1, msgSub.Length - 2); msgSub = msgSub.Replace("\\", ""); msgSub = msgSub.Replace("\n", ""); //\n //msg2 = msg2.Replace("'", "’"); List ls = new List(); ls = oListModels.getObjectByJson_Gy_SOPBillSub(msgSub); int i = 0; foreach (Model.ClsGy_SOPBillSub oItemSub in ls) { i++; oItemSub.HEntryID = i; oBill.DetailColl.Add(oItemSub); } //保存 //保存完毕后处理 bool bResult; if (OperationType == "1" || OperationType == "2") { // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); } else { bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo); } if (bResult) { objJsonResult.code = "0"; objJsonResult.count = 1; objJsonResult.Message = "保存成功!"; //WebAPIController.Add_Log("送货单下推", UserName, "生成送货单"); objJsonResult.data = 1; return objJsonResult; } else { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo; objJsonResult.data = 1; return objJsonResult; } } catch (Exception e) { oCN.RollBack(); objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.Message; objJsonResult.data = null; return objJsonResult; } } #endregion [Route("Gy_SOPBill/Use")] [HttpGet] public object sy_Click() { if (BillOld.omodel.HInterID == 0) { objJsonResult.Message = "使用失败!当前作业指导书不是浏览状态!"; return objJsonResult; } if (BillOld.Sub_RoutingCheckAndUsed(BillOld.omodel.HInterID)) { objJsonResult.count = 1; objJsonResult.Message = "使用成功!"; return objJsonResult; } else { objJsonResult.Message = "使用失败!"; return objJsonResult; } } [Route("Gy_SOPBill/Cancel")] [HttpGet] public object fsy_Click() { if (BillOld.omodel.HInterID == 0) { objJsonResult.Message = "反使用失败!当前作业指导书不是浏览状态!"; return objJsonResult; } if (BillOld.Sub_RoutingUsed_Back(BillOld.omodel.HInterID)) { objJsonResult.count = 1; objJsonResult.Message = "反使用成功!"; return objJsonResult; } else { objJsonResult.Message = "反使用失败!"; return objJsonResult; } } [Route("Gy_SOPBill/UploadFile1")] [HttpPost] public object UploadFile1() { string path=""; string HBillNo = HttpContext.Current.Request.Params["HBillNo"]; //单据号 string HUserName = HttpContext.Current.Request.Params["HUserName"]; //创建人 string HInterID = HttpContext.Current.Request.Params["HInterID"]; //单据内码 HttpPostedFile files = HttpContext.Current.Request.Files["file"]; //文件 string Ret = ""; if (oSystemParameter.ShowBill(ref Ret)) { if (oSystemParameter.omodel.WMS_CampanyName == "杭州斯莫尔") { path = "D:/网站发布/MES/MES测试/LAYUI/Files/SOP/" + HBillNo; } else { path = HttpContext.Current.Server.MapPath("~/../Files/SOP/" + HBillNo); } } //string path = @"D:\\Files\\"+ HBillNo; Int64 HEntryID = Convert.ToInt64(HttpContext.Current.Request.Params["HEntryID"]); //子内码 dynamic dyResult = UpLoadFile(files, path, HBillNo, HInterID, HUserName, HEntryID); if (dyResult != null && dyResult.result == 1) { objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "上传成功!"; objJsonResult.data = null; return objJsonResult; } else { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = dyResult.returnval; objJsonResult.data = null; return objJsonResult; } } public dynamic UpLoadFile(HttpPostedFile files, string path, string HBillNo, string HInterID, string HUserName,Int64 HEntryID) { dynamic Result_Ob = new { result = 1, returnval = "上传成功!" }; string filePath = Path.GetFullPath(files.FileName);//文件上传路径 string fileExtension = Path.GetExtension(files.FileName);// 文件扩展名 string filename = files.FileName;//文件名 string fileSavePath = path;// 上传保存路径 int filesize = files.ContentLength;//获取上传文件的大小单位为字节byte int Maxsize = 40000 * 1024;//定义上传文件的最大空间大小为40M DataSet CS; Int64 lID = 0; string BillType = ""; CS = oCN.RunProcReturn("select * from Gy_BillNumber with (nolock) where BillCode='" + 3305 + "'", "Gy_BillNumber"); if (CS.Tables[0].Rows.Count != 0) { lID = ClsPub.isLong(CS.Tables[0].Rows[0]["IDNow"].ToString())-1; BillType = CS.Tables[0].Rows[0]["BillType"].ToString().Trim(); } DataSet Ds; Int64 Sno = 1; Ds = oCN.RunProcReturn("select MAX(HSno) HSno from Gy_SOPBillSub2" , "Gy_SOPBillSub2"); if (Ds.Tables[0].Rows.Count != 0 && ClsPub.isLong(Ds.Tables[0].Rows[0]["HSno"].ToString())!= 0) { Sno = ClsPub.isLong(Ds.Tables[0].Rows[0]["HSno"].ToString()); Sno += 1; } try { if (files == null || files.ContentLength <= 0) { Result_Ob = new { result = 0, returnval = "文件不能为空!" }; return Result_Ob; } if (filesize >= Maxsize) { Result_Ob = new { result = 0, returnval = "上传文件超过40M,不能上传!" }; return Result_Ob; } string fileurl = Path.Combine(fileSavePath, filename); if (Directory.Exists(fileurl) == true) //如果存在重名文件就提示 { Result_Ob = new { result = 0, returnval = "存在同名文件!" }; return Result_Ob; } //删除数据表数据 ds = oCN.RunProcReturn("delete from Gy_SOPBillSub2 where HFileName='" + filename + "'", "Gy_SOPBillSub2"); if (Directory.Exists(path)) { File.Delete(fileurl); //删除指定文件 files.SaveAs(fileurl); string StrPath = ""; string Ret = ""; if (oSystemParameter.ShowBill(ref Ret)) { if (oSystemParameter.omodel.WMS_CampanyName == "杭州斯莫尔") { StrPath = "D:/网站发布/MES/MES测试/LAYUI/Files/SOP/" + HBillNo + "/" + filename; } else { StrPath = "/files/SOP/" + HBillNo + "/" + filename; } } if (File.Exists(fileurl)) { //这里可以执行一些其它的操作,比如更新数据库 //写入数据表 oCN.RunProc("Insert into Gy_SOPBillSub2 (HFileName,HPath,HFileType" + ",HUpMan,HUpTime,HInterID,HEntryID,HSno,HFileID,HFileSize" + ") values('" + filename.ToString() + "','" + StrPath.ToString() + "','" + fileExtension.ToString() + "'" + ",'" + HUserName + "',getdate()" + ",'" + HInterID + "','" + HEntryID + "','" + Sno + "','" + lID + "','" + filesize + "') "); } else { Result_Ob = new { result = 0, returnval = "上传失败!此文件为恶意文件" }; } } else { Directory.CreateDirectory(fileSavePath); //添加文件夹 files.SaveAs(fileurl); string StrPath = ""; string Ret = ""; //if (oSystemParameter.ShowBill(ref Ret)) //{ // if (oSystemParameter.omodel.WMS_CampanyName == "杭州斯莫尔") // { // StrPath = "D:/网站发布/MES/MES测试/LAYUI/Files/SOP/" + HBillNo + "/" + filename; // } // else // { // StrPath = "/files/SOP/" + HBillNo + "/" + filename; // } //} StrPath = "/files/SOP/" + HBillNo + "/" + filename; if (File.Exists(fileurl)) { //这里可以执行一些其它的操作,比如更新数据库 //写入数据表 oCN.RunProc("Insert into Gy_SOPBillSub2 (HFileName,HPath,HFileType" + ",HUpMan,HUpTime,HInterID,HEntryID,HSno,HFileID,HFileSize" + ") values('" + filename.ToString() + "','" + StrPath.ToString() + "','" + fileExtension.ToString() + "'" + ",'" + HUserName + "',getdate()" + ",'" + HInterID + "','" + HEntryID + "','" + Sno + "','" + lID + "','" + filesize + "') "); } else { Result_Ob = new { result = 0, returnval = "上传失败!此文件为恶意文件" }; } } } catch (Exception e) { Result_Ob = new { result = 0, returnval = e.Message }; } return Result_Ob; } } }