| using Newtonsoft.Json; | 
| using Newtonsoft.Json.Linq; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Data; | 
| using System.Linq; | 
| using System.Net; | 
| using System.Net.Http; | 
| using System.Web.Http; | 
| using WebAPI; | 
| using WebAPI.Models; | 
|   | 
| namespace WebAPI.Controllers | 
| { | 
|     public class Sc_AssemblyBillController : ApiController | 
|     { | 
|         public Int64 HInterID;                  //本单ID | 
|         public string HBillNo;                  //本单单号 | 
|         public string HBillType = "3727";       //单据类型 | 
|         public WebServer webserver =new WebServer(); | 
|         public DataSet ds =new DataSet(); | 
|         string sBillNo = ""; | 
|         Int64 sInterID = 0; | 
|         string sICMOBillNo = ""; | 
|         string sCPBarCode = ""; | 
|         Int64 sCPMaterID = 0; | 
|         string sCPMaterName = ""; | 
|         private json objjson = new json(); | 
|         SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); | 
|   | 
|         //扫描成品条码 | 
|         [Route("Assembly/Get_Assembly_CPBarCode_Json")] | 
|         [HttpGet] | 
|         public object Get_Assembly_CPBarCode_Json(string sBarCode,string sBillType) | 
|         { | 
|             try | 
|             { | 
|                 DataTable dt_Main = new DataTable("Json"); | 
|                 dt_Main.Columns.Add("sICMOBillNo", typeof(string)); | 
|                 dt_Main.Columns.Add("sCPBarCode", typeof(string)); | 
|                 dt_Main.Columns.Add("sCPMaterID", typeof(Int64)); | 
|                 dt_Main.Columns.Add("sCPMaterName", typeof(string)); | 
|                 dt_Main.Columns.Add("sInterID", typeof(Int64)); | 
|                 dt_Main.Columns.Add("sBillNo", typeof(string)); | 
|   | 
|   | 
|   | 
|                 if (webserver.Get_Assembly_CPBarCode(sBarCode, sBillType, ref sICMOBillNo, ref sCPBarCode, ref sCPMaterID, ref sCPMaterName, ref sBillNo, ref sInterID, ref DBUtility.ClsPub.sErrInfo)) | 
|                 { | 
|                     //---------创建新行------------------------ | 
|                     DataRow dr_main = dt_Main.NewRow();//创建新行  | 
|                     dt_Main.Rows.Add(dr_main);//将新行加入到表中 | 
|                     dr_main["sICMOBillNo"] = DBUtility.ClsPub.isStrNull(sICMOBillNo); | 
|                     dr_main["sCPBarCode"] = DBUtility.ClsPub.isStrNull(sCPBarCode); | 
|                     dr_main["sCPMaterID"] = DBUtility.ClsPub.isLong(sCPMaterID); | 
|                     dr_main["sCPMaterName"] = DBUtility.ClsPub.isStrNull(sCPMaterName); | 
|                     dr_main["sInterID"] = DBUtility.ClsPub.isLong(sInterID); | 
|                     dr_main["sBillNo"] = DBUtility.ClsPub.isStrNull(sBillNo); | 
|   | 
|                     objjson.code = "0"; | 
|                     objjson.count = 1; | 
|                     objjson.Message = "获取成功"; | 
|                     objjson.data = dt_Main; | 
|                     return objjson; | 
|                 } | 
|                 else | 
|                 { | 
|                     objjson.code = "0"; | 
|                     objjson.count = 0; | 
|                     objjson.Message = "获取失败" + DBUtility.ClsPub.sErrInfo; | 
|                     objjson.data = null; | 
|                     return objjson; | 
|                 } | 
|             } | 
|             catch (Exception e) | 
|             { | 
|   | 
|                 objjson.code = "0"; | 
|                 objjson.count = 0; | 
|                 objjson.Message = "获取失败" + e.ToString(); | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|                 | 
|         } | 
|         //扫描配件条码 | 
|         [Route("Assembly/Get_Assembly_PJBarCode_Json")] | 
|         [HttpGet] | 
|         public object Get_Assembly_PJBarCode_Json(string sPJCode, string sCPCode, long sInterID, string sBillNo, string sMaker, long HWorkerID, string HSNNumber) | 
|         { | 
|             try | 
|             { | 
|                 DataTable dt_Main = new DataTable("Json"); | 
|                 dt_Main.Columns.Add("sPJCode", typeof(string)); | 
|                 dt_Main.Columns.Add("sCPCode", typeof(string)); | 
|                 dt_Main.Columns.Add("sInterID", typeof(Int64)); | 
|                 dt_Main.Columns.Add("sBillNo", typeof(string)); | 
|                 dt_Main.Columns.Add("sMaker", typeof(string)); | 
|                 dt_Main.Columns.Add("HWorkerID", typeof(Int64)); | 
|                 dt_Main.Columns.Add("HSNNumber", typeof(string)); | 
|   | 
|                 if (webserver.Get_Assembly_PJBarCode(sPJCode, sCPCode, sInterID, sBillNo, sMaker, HWorkerID, HSNNumber, ref DBUtility.ClsPub.sErrInfo)) | 
|                 { | 
|                     //---------创建新行------------------------ | 
|                     DataRow dr_main = dt_Main.NewRow();//创建新行  | 
|                     dt_Main.Rows.Add(dr_main);//将新行加入到表中 | 
|                     dr_main["sPJCode"] = DBUtility.ClsPub.isStrNull(sPJCode); | 
|                     dr_main["sCPCode"] = DBUtility.ClsPub.isStrNull(sCPCode); | 
|                     dr_main["sInterID"] = DBUtility.ClsPub.isLong(sInterID); | 
|                     dr_main["sBillNo"] = DBUtility.ClsPub.isStrNull(sBillNo); | 
|                     dr_main["sMaker"] = DBUtility.ClsPub.isStrNull(sMaker); | 
|                     dr_main["HWorkerID"] = DBUtility.ClsPub.isLong(HWorkerID); | 
|                     dr_main["HSNNumber"] = DBUtility.ClsPub.isStrNull(HSNNumber); | 
|   | 
|                     objjson.code = "0"; | 
|                     objjson.count = 1; | 
|                     objjson.Message = "获取成功"; | 
|                     objjson.data = dt_Main; | 
|                     return objjson; | 
|                 } | 
|                 else | 
|                 { | 
|                     objjson.code = "0"; | 
|                     objjson.count = 0; | 
|                     objjson.Message = "获取失败" + DBUtility.ClsPub.sErrInfo; | 
|                     objjson.data = null; | 
|                     return objjson; | 
|                 } | 
|             } | 
|             catch (Exception e) | 
|             { | 
|   | 
|                 objjson.code = "0"; | 
|                 objjson.count = 0; | 
|                 objjson.Message = "获取失败" + e.ToString(); | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|                 | 
|         } | 
|   | 
|         [Route("Assembly/DisBillEntryList_Mate_Webs_Json")] | 
|         [HttpGet] | 
|         public object DisBillEntryList_Mate_Webs_Json(long HInterID, string sBillType, string sWhere) | 
|         { | 
|             try | 
|             { | 
|                 ds = webserver.GetSc_AssemblyBill(HInterID, sBillType, sWhere); | 
|                 if (ds == null || ds.Tables[0].Rows.Count <= 0) | 
|                 { | 
|   | 
|                     objjson.code = "0"; | 
|                     objjson.count = 0; | 
|                     objjson.Message = "没有返回任何记录!"; | 
|                     objjson.data = null; | 
|                     return objjson; | 
|                     //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning); | 
|                 } | 
|                 else | 
|                 { | 
|                     objjson.code = "0"; | 
|                     objjson.count = 1; | 
|                     objjson.Message = "获取信息成功!"; | 
|                     objjson.data = ds.Tables[0]; | 
|                     return objjson; | 
|                 } | 
|             } | 
|             catch (Exception e) | 
|             { | 
|   | 
|                 objjson.code = "0"; | 
|                 objjson.count = 0; | 
|                 objjson.Message = "没有返回任何记录!" + e.ToString(); | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|         } | 
|   | 
|   | 
|         #region  产线组装追溯单 | 
|         [Route("Sc_AssemblyBill/HBardCodeList")] | 
|         [HttpGet] | 
|         public object HBardCodeList(string HBarCode, string user,string HICMOBillNo) | 
|         { | 
|             try | 
|             { | 
|                 //查看权限 | 
|                 if (!DBUtility.ClsPub.Security_Log("Sc_AssemblyBill_Edit", 1, false, user)) | 
|                 { | 
|                     objjson.code = "0"; | 
|                     objjson.count = 0; | 
|                     objjson.Message = "无保存权限!"; | 
|                     objjson.data = null; | 
|                     return objjson; | 
|                 } | 
|                 if (HICMOBillNo == "" || HICMOBillNo == null) | 
|                 { | 
|                     ds = oCN.RunProcReturn(@"select  bard.HSourceInterID,bard.HSourceEntryID,b.FMUSTQTY,a.FMOBILLNO,FERPCLSID,t5.FNAME HMaterName_z,t5.FSPECIFICATION HMaterModel_z ,m.HItemID,b.FMATERIALID,m.HName HMaterName,m.HNumber HMaterNumber,m.HModel HMaterModel,m1.HItemID HMaterID | 
| from AIS20210811135644..T_PRD_PPBOM a | 
| join AIS20210811135644..T_PRD_PPBOMENTRY b on a.FID = b.FID | 
| join AIS20210811135644..T_BD_MATERIAL t3 on a.FMATERIALID = t3.FMATERIALID | 
| join AIS20210811135644..T_BD_MATERIAL t31 on b.FMATERIALID = t31.FMATERIALID | 
| join AIS20210811135644..T_BD_MATERIAL_L t5 on b.FMATERIALID = t5.FMATERIALID and FLOCALEID=2052 | 
| join AIS20210811135644..t_BD_MaterialBase t4 on t5.FMATERIALID = t4.FMATERIALID | 
| join Gy_BarCodeBill bard on a.FMOBILLNO=bard.HSourceBillNo  | 
| join Gy_Material m on bard.HMaterID=m.HItemID and t3.FNUMBER=m.HNumber | 
| join Gy_Material m1 on t31.FNUMBER=m1.HNumber and t31.FUSEORGID=m1.HUSEORGID | 
| where bard.HBarCode='" + HBarCode + "'  AND t4.FERPCLSID in ('1', '3')", "Gy_BarCodeBill"); | 
|                     if (ds.Tables[0].Rows.Count == 0) | 
|                     { | 
|                         objjson.code = "0"; | 
|                         objjson.count = 0; | 
|                         objjson.Message = "请先扫产品条码!"; | 
|                         objjson.data = null; | 
|                         return objjson; | 
|                     } | 
|                     else | 
|                     { | 
|                         objjson.code = "1"; | 
|                         objjson.count = 1; | 
|                         objjson.Message = ""; | 
|                         objjson.data = ds.Tables[0]; | 
|                     } | 
|                 } | 
|                 else | 
|                 { | 
|                     ds = oCN.RunProcReturn(@"select  a.FMOBILLNO,FERPCLSID ,t4.FMATERIALID, a.FMATERIALID from AIS20210811135644..T_PRD_PPBOM a | 
|                     join AIS20210811135644..T_PRD_PPBOMENTRY b on a.FID=b.FID | 
|                     JOIN AIS20210811135644..T_BD_MATERIAL T6 ON b.FMATERIALID = T6.FMATERIALID | 
|                     join AIS20210811135644..t_BD_MaterialBase t4 on b.FMATERIALID = t4.FMATERIALID | 
|                     left join Gy_Material m on t6.FNUMBER=m.HNumber and m.HUSEORGID=a.FPRDORGID | 
|                     where a.FMOBILLNO ='" + HICMOBillNo + "' and m.HItemID=(select HMaterID from Gy_BarCodeBill where HBarCode = '" + HBarCode + "' )", "ds2"); | 
|   | 
|                     if (ds.Tables[0].Rows.Count == 0) | 
|                     { | 
|                         objjson.code = "0"; | 
|                         objjson.count = 0; | 
|                         objjson.Message = "配件不属于该生产订单!"; | 
|                         objjson.data = null; | 
|                         return objjson; | 
|                     } | 
|   | 
|                     ds = oCN.RunProcReturn(@"select  HQty,HSourceBillNo,m.HName HMaterName,m.HItemID HMaterID from Gy_BarCodeBill bard | 
| join Gy_Material m on bard.HMaterID=m.HItemID  | 
| where  HBarCode='" + HBarCode + "'", "ds3"); | 
|   | 
|                     objjson.code = "1"; | 
|                     objjson.count = 1; | 
|                     objjson.Message = ""; | 
|                     objjson.data = ds.Tables[0]; | 
|                 } | 
|                 return objjson; | 
|             } | 
|             catch (Exception e) | 
|             { | 
|   | 
|                 objjson.code = "0"; | 
|                 objjson.count = 0; | 
|                 objjson.Message = "没有返回任何记录!" + e.ToString(); | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|         } | 
|         #endregion | 
|   | 
|         #region 产线组装追溯单保存 | 
|         [Route("Sc_AssemblyBill/AddBill")] | 
|         [HttpPost] | 
|         public object AddBill([FromBody] JObject sMainSub) | 
|         { | 
|             var _value = sMainSub["sMainSub"].ToString(); | 
|             string msg1 = _value.ToString(); | 
|             oCN.BeginTran(); | 
|             //保存主表 | 
|             objjson = AddBillMain(msg1); | 
|             if (objjson.code == "0") | 
|             { | 
|                 oCN.RollBack(); | 
|                 objjson.code = "0"; | 
|                 objjson.count = 0; | 
|                 objjson.Message = objjson.Message; | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|             oCN.Commit(); | 
|             objjson.code = "1"; | 
|             objjson.count = 1; | 
|             objjson.Message = "新增单据成功!"; | 
|             objjson.data = null; | 
|             return objjson; | 
|         } | 
|         Models.ClsSc_AssemblyBillMain omodel = new Models.ClsSc_AssemblyBillMain();//基本资料 | 
|         public json AddBillMain(string msg1) | 
|         { | 
|             string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); | 
|             string msg2 = sArray[0].ToString(); | 
|             string msg3 = sArray[1].ToString(); | 
|             int OperationType = int.Parse(sArray[2].ToString());//类型 | 
|             string user = sArray[3].ToString();//用户名 | 
|   | 
|             try | 
|             { | 
|                 //判断是否有编辑权限 | 
|                 if (!DBUtility.ClsPub.Security_Log("Sc_AssemblyBill_Edit", 1, false, user)) | 
|                 { | 
|                     objjson.code = "0"; | 
|                     objjson.count = 0; | 
|                     objjson.Message = "无权限编辑!"; | 
|                     objjson.data = null; | 
|                     return objjson; | 
|                 } | 
|                 omodel = Newtonsoft.Json.JsonConvert.DeserializeObject<ClsSc_AssemblyBillMain>(msg2); | 
|                 //JSON序列化转换字典集合 | 
|                 List<Dictionary<string, string>> list = new List<Dictionary<string, string>>(); | 
|                 List<object> jb = JsonConvert.DeserializeObject<List<object>>(msg3); | 
|                 foreach (JObject item in jb) | 
|                 { | 
|                     Dictionary<string, string> dic = new Dictionary<string, string>(); | 
|                     foreach (var itm in item.Properties()) | 
|                     { | 
|                         dic.Add(itm.Name, itm.Value.ToString()); | 
|                     } | 
|                     list.Add(dic); | 
|                 } | 
|   | 
|                 if (OperationType == 1)//新增临时表源单表 | 
|                 { | 
|                     for (int i = 0; i < list.Count; i++) | 
|                     { | 
|                         //临时配件表 | 
|                         oCN.RunProc("Insert Into Sc_AssemblyBill_BindSourceTemp   " + | 
|                         "(HInterID,HEntryID,HBillNo_bak,HSourceBillNo,HSourceInterID,HMaterID" + | 
|                         ",HQtyMust,HProdOrgID,HSourceEntryID,HSourceBillType,HAuxPropID,HProcID,HQty,HBatchNo,HMTONo,HPlanMode) " + | 
|                         " values(" + omodel.HInterID.ToString() + "," + (i+1) + ",'" + omodel.HBillNo.ToString() + "','" + omodel.HICMOBillNo.ToString() + "',0," + list[i]["HMaterID"].ToString() + | 
|                         ",'" + list[i]["HQty"].ToString() + "','" + list[i]["HPRDORGID"].ToString() + "',0,'',0,0,0,'','','') "); | 
|                     } | 
|                 } | 
|                 else if (OperationType == 2)//新增配件扫码表 | 
|                 { | 
|                     for (int i = 0; i < list.Count; i++) | 
|                     { | 
|                         if (list[i]["HBarCode"].ToString() != "") | 
|                         { | 
|                             ds = oCN.RunProcReturn("select * from Sc_AssemblyBill_BindBarCodeTemp where HSourceBillNo='" + omodel.HICMOBillNo.ToString() + "' and HBarCode='" + list[i]["HBarCode"].ToString() + "' and HBillNo_bak='" + omodel.HBillNo.ToString() + "'", "Sc_AssemblyBill_BindBarCodeTemp"); | 
|                             if (ds.Tables[0].Rows.Count > 0) { | 
|                                 objjson.code = "0"; | 
|                                 objjson.count = 0; | 
|                                 objjson.Message ="该条码已扫入,无须再扫!"; | 
|                                 objjson.data = null; | 
|                                 return objjson; | 
|                             } | 
|                             //临时记录表 | 
|                             oCN.RunProc("Insert Into Sc_AssemblyBill_BindBarCodeTemp   " + | 
|                             "(HInterID,HEntryID,HBillNo_bak,HSourceBillNo,HSourceInterID,HMaterID" + | 
|                             ",HBarCode,HQty,HProdOrgID,HSourceEntryID,HSourceBillType,HAuxPropID,HProcID,HBatchNo,HMTONo,HPlanMode) " + | 
|                             " values(" + omodel.HInterID.ToString() + "," + (i + 1) + ",'" + omodel.HBillNo.ToString() + "','" + omodel.HICMOBillNo.ToString() + "',0," + list[i]["HMaterID"].ToString() + | 
|                             ",'" + list[i]["HBarCode"].ToString() + "','" + list[i]["HEQty"].ToString() + "','" + list[i]["HPRDORGID"].ToString() + "',0,'',0,0,'','','') "); | 
|                         } | 
|                     } | 
|                 } | 
|                 else if (OperationType == 3)//新增主子表 | 
|                 { | 
|                     //保存生产组装单主表 | 
|                     string sql = $@"Insert Into Sc_AssemblyBillMain(HYear,HPeriod,HBillType,HBillSubType,HInterID,HDate | 
| ,HBillNo,HBillStatus,HMaker,HMakeDate,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo | 
| ,HICMOInterID,HICMOBillNo,HBarCode_P,HMaterID,HUnitID,HAssemblyStatus,HProdOrgID) | 
| values('{DateTime.Now.Year}','{DateTime.Now.Month}','3727','3727',{omodel.HInterID.ToString()},getdate() | 
| ,'{omodel.HBillNo.ToString()}','1','{user}',getdate(),{omodel.HICMOInterID.ToString()},{omodel.HICMOEntryID.ToString()},'{omodel.HICMOBillNo.ToString()}' | 
| ,{omodel.HICMOInterID.ToString()},'{omodel.HICMOBillNo.ToString()}','{omodel.HBarCode_P.ToString()}',{omodel.HMaterID},0,'{omodel.HAssemblyStatus}',{omodel.HProdOrgID})"; | 
|                     oCN.RunProc(sql); | 
|   | 
|                     ds = oCN.RunProcReturn("select * from Sc_AssemblyBill_BindBarCodeTemp where HSourceBillNo='" + omodel.HICMOBillNo.ToString() + "' and HInterID='" + omodel.HInterID + "' and HBillNo_bak='" + omodel.HBillNo.ToString() + "'", "Sc_AssemblyBill_BindBarCodeTemp"); | 
|   | 
|                     for (int i = 0; i < ds.Tables[0].Rows.Count; i++) | 
|                     { | 
|                         int HMaterID = int.Parse(ds.Tables[0].Rows[i]["HMaterID"].ToString()); | 
|                         double HQty = double.Parse(ds.Tables[0].Rows[i]["HQty"].ToString()); | 
|                         string HBarCode = ds.Tables[0].Rows[i]["HBarCode"].ToString(); | 
|                         string sq2 = $@"Insert Into Sc_AssemblyBillSub(HInterID,HBillNo_bak,HEntryID,HSourceInterID,HSourceEntryID,HSourceBillNo | 
| ,HSourceBillType,HMaterID,HSourceID,HEquipID,HUnitID,HQty | 
| ,HGroupID,HWorkerID,HScanDate,HBarCode,HBarCode_P,HSNNumber) | 
| values({omodel.HInterID},'{omodel.HBillNo}',{(i + 1)},0,0,'' | 
| ,'',{HMaterID},0,0,0,{HQty} | 
| ,0,0,getdate(),'{HBarCode}','{omodel.HBarCode_P}','') "; | 
|                         oCN.RunProc(sq2); | 
|                     } | 
|                 } | 
|   | 
|                 objjson.code = "1"; | 
|                 objjson.count = 1; | 
|                 objjson.Message = null; | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|             catch (Exception e) | 
|             { | 
|                 objjson.code = "0"; | 
|                 objjson.count = 0; | 
|                 objjson.Message = "Exception!" + e.ToString(); | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|         } | 
|         #endregion | 
|   | 
|         #region 产线组装追溯单 查询 | 
|         [Route("Sc_AssemblyBill/Sc_AssemblyBillAddList")] | 
|         [HttpGet] | 
|         public object Sc_AssemblyBillAddList(string sWhere) | 
|         { | 
|             try | 
|             { | 
|                 ds = oCN.RunProcReturn(@"select * from  h_v_Sc_AssemblyBillList where 1=1  " + sWhere, "h_v_Sc_AssemblyBillList"); | 
|   | 
|                 objjson.code = "1"; | 
|                 objjson.count = 1; | 
|                 objjson.Message = ""; | 
|                 objjson.data = ds.Tables[0]; | 
|                 return objjson; | 
|             } | 
|             catch (Exception e) | 
|             { | 
|   | 
|                 objjson.code = "0"; | 
|                 objjson.count = 0; | 
|                 objjson.Message = "没有返回任何记录!" + e.ToString(); | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|         } | 
|         #endregion | 
|   | 
|         [Route("Assembly/Delete_Json")] | 
|         [HttpGet] | 
|         public object Delete_Json(long sInterID,string sBarCode) | 
|         { | 
|             string sErrMsg=string.Empty; | 
|             try | 
|             { | 
|                 if (webserver.set_DelSc_AssemblyBill(sInterID, sBarCode,ref sErrMsg)) | 
|                 { | 
|                     objjson.code = "0"; | 
|                     objjson.count = 1; | 
|                     objjson.Message = "删除成功!"; | 
|                     objjson.data = null; | 
|                     return objjson; | 
|                 } | 
|                 else | 
|                 { | 
|                     objjson.code = "0"; | 
|                     objjson.count = 0; | 
|                     objjson.Message = "删除失败!"; | 
|                     objjson.data = null; | 
|                     return objjson; | 
|                 } | 
|             } | 
|             catch (Exception) | 
|             { | 
|   | 
|                 objjson.code = "0"; | 
|                 objjson.count = 0; | 
|                 objjson.Message = "删除失败!"; | 
|                 objjson.data = null; | 
|                 return objjson; | 
|             } | 
|   | 
|         } | 
|   | 
|     } | 
|   | 
|   | 
| } |