| using Newtonsoft.Json.Linq; | 
| using Pub_Class; | 
| using System; | 
| using System.Collections; | 
| using System.Collections.Generic; | 
| using System.Data; | 
| using System.Data.SqlClient; | 
| using System.Web.Http; | 
| using WebAPI.Models; | 
| using Newtonsoft.Json; | 
| using DBUtility; | 
| namespace WebAPI.Controllers.SCGL | 
| { | 
|     public class Sc_ComplementGoodsController : ApiController | 
|     { | 
|         private json objJsonResult = new json(); | 
|         public DataSet ds = new DataSet(); | 
|         public WebServer webserver = new WebServer(); | 
|         SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); | 
|   | 
|         #region 拣料配送单列表 | 
|         public class ComplementGoods | 
|         { | 
|             public string MaterialNumber { get; set; }//物料代码 | 
|             public string MaterialName { get; set; }//物料名称 | 
|             public string MaterialModel { get; set; }//规格型号 | 
|             public string HGD { get; set; }//工段 | 
|             public string HWHName { get; set; }//仓库 | 
|             public string Organization { get; set; }//组织 | 
|             public DateTime HBeginDate { get; set; }//开始时间 | 
|             public DateTime HEndDate { get; set; }//结束时间 | 
|             public string HDeptName { get; set; }//部门 | 
|             public string HJLStatus { get; set; }//拣料状态 | 
|             public string user { get; set; }//制单人 | 
|         } | 
|   | 
|         [Route("Sc_ComplementGoods/ComplementGoodsList")] | 
|         [HttpGet] | 
|         public object ComplementGoodBillList(string sWhere, string user) | 
|         { | 
|             try | 
|             { | 
|                 //查看权限 | 
|                 if (!DBUtility.ClsPub.Security_Log("Cj_ComplementGoodsBill_Query", 1, false, user)) | 
|                 { | 
|                     objJsonResult.code = "0"; | 
|                     objJsonResult.count = 0; | 
|                     objJsonResult.Message = "无查看权限!"; | 
|                     objJsonResult.data = null; | 
|                     return objJsonResult; | 
|                 } | 
|                 if (sWhere == null || sWhere.Equals("")) | 
|                 { | 
|                     objJsonResult.code = "1"; | 
|                     objJsonResult.count = 1; | 
|                     objJsonResult.Message = "Sucess!"; | 
|                     objJsonResult.data = new DataTable(); | 
|                     return objJsonResult; | 
|                 } | 
|                 //反序列化传递的值 | 
|                 ComplementGoods com = JsonConvert.DeserializeObject<ComplementGoods>(sWhere.ToString()); | 
|   | 
|   | 
|                 ds = oCN.RunProcReturn($"exec h_p_JIT_ComplementGoodsBillList_Query '{com.MaterialNumber}','{com.MaterialName}','{com.MaterialModel}','{com.HGD}'," + | 
|                     $"'{com.HWHName}','{com.HDeptName}','{com.Organization}','{com.user}','{com.HJLStatus}','{com.HBeginDate}','{com.HEndDate}'", "h_p_JIT_ComplementGoodsBillList_Query"); | 
|   | 
|                 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 拣料配送单 删除 | 
|         [Route("Sc_ComplementGoods/DelComplementGoodsList")] | 
|         [HttpGet] | 
|         public object DelComplementGoodsList(string HInterID, string HEntryID, string HOrgID, string user) | 
|         { | 
|             try | 
|             { | 
|                 //删除权限 | 
|                 if (!DBUtility.ClsPub.Security_Log("Cj_ComplementGoodsBill_Drop", 1, false, user)) | 
|                 { | 
|                     objJsonResult.code = "0"; | 
|                     objJsonResult.count = 0; | 
|                     objJsonResult.Message = "无删除权限!"; | 
|                     objJsonResult.data = null; | 
|                     return objJsonResult; | 
|                 } | 
|   | 
|                 ds = oCN.RunProcReturn($"select HISCheck from JIT_SendGoodsBillMain where HMainSourceInterID={HInterID} ", "JIT_SendGoodsBillMain"); | 
|   | 
|                 if (ds.Tables[0].Rows.Count > 0) | 
|                 { | 
|                     objJsonResult.code = "0"; | 
|                     objJsonResult.count = 0; | 
|                     objJsonResult.Message = "当前单据已配送,不能删除!"; | 
|                     objJsonResult.data = null; | 
|                     return objJsonResult; | 
|                 } | 
|   | 
|                 oCN.RunProc($"exec Del_ComplementGoodsBillInfo {HInterID},{HEntryID},{HOrgID}"); | 
|   | 
|                 objJsonResult.code = "1"; | 
|                 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 | 
|   | 
|         #region 配料单列表 | 
|         [Route("Sc_ComplementGoods/ComplementGoodsBill")] | 
|         [HttpGet] | 
|         public object ComplementGoodsBill(string sWhere) | 
|         { | 
|             try | 
|             { | 
|                 if (sWhere == null || sWhere.Equals("")) | 
|                 { | 
|                     objJsonResult.code = "1"; | 
|                     objJsonResult.count = 1; | 
|                     objJsonResult.Message = "Sucess!"; | 
|                     objJsonResult.data = new DataTable(); | 
|                     return objJsonResult; | 
|                 } | 
|   | 
|                 ds = oCN.RunProcReturn($"exec h_p_JIT_ComplementGoods_Load '{sWhere}'", "h_p_JIT_ComplementGoods_Load"); | 
|   | 
|                 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 匹配库存 | 
|         [Route("Sc_ComplementGoods/ComplementGoodsBill_C")] | 
|         [HttpGet] | 
|         public object ComplementGoodsBill_C(string sWhere) | 
|         { | 
|             try | 
|             { | 
|                 if (sWhere == null || sWhere.Equals("")) | 
|                 { | 
|                     objJsonResult.code = "1"; | 
|                     objJsonResult.count = 1; | 
|                     objJsonResult.Message = "Sucess!"; | 
|                     objJsonResult.data = new DataTable(); | 
|                     return objJsonResult; | 
|                 } | 
|   | 
|                 oCN.RunProc($"exec h_p_JIT_ComplementGoodsBill_C_Add '{sWhere}'"); | 
|   | 
|                 ds = oCN.RunProcReturn("exec h_p_JIT_GetComplementGoodsBill_C  " + sWhere, "h_p_JIT_GetComplementGoodsBill_C"); | 
|   | 
|                 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 仓库发料 | 
|         //参数 | 
|         public class SendGoodsBill | 
|         { | 
|             public int? 未拣料数量 = 0; | 
|             public int? 最大拣料数量 = 0; | 
|             public int? 本次拣料数量 = 0; | 
|             public int? HEntryID = 0; | 
|             public int? HMaterID = 0; | 
|             public int? HWHID = 0; | 
|             public int? HSPID = 0; | 
|         } | 
|   | 
|         [Route("Sc_ComplementGoods/JIT_SendGoodsBill")] | 
|         [HttpPost] | 
|         public object JIT_SendGoodsBill([FromBody] JObject msg) | 
|         { | 
|             var _value = msg["msg"].ToString(); | 
|             string[] sArray = _value.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); | 
|             string msg2 = sArray[0].ToString(); | 
|             string user = sArray[1].ToString(); | 
|             string SourceInterID = sArray[2].ToString(); | 
|             string SourceBillNo = sArray[3].ToString(); | 
|             try | 
|             { | 
|                 msg2 = msg2.Replace("\\", ""); | 
|                 msg2 = msg2.Replace("\n", ""); | 
|   | 
|                 List<SendGoodsBill> listCa = new List<SendGoodsBill>(); | 
|                 //获取表格数据集合 | 
|                 listCa = JsonConvert.DeserializeObject<List<SendGoodsBill>>(msg2.ToString()); | 
|   | 
|                 for (int i = 0; i < listCa.Count; i++) | 
|                 { | 
|                     if (listCa[i].本次拣料数量 > listCa[i].最大拣料数量) | 
|                     { | 
|                         objJsonResult.code = "0"; | 
|                         objJsonResult.count = 0; | 
|                         objJsonResult.Message = "本次拣料数量超过最大拣料数量!"; | 
|                         objJsonResult.data = null; | 
|                         return objJsonResult; | 
|                     } | 
|                     if (listCa[i].本次拣料数量 > listCa[i].未拣料数量) | 
|                     { | 
|                         objJsonResult.code = "0"; | 
|                         objJsonResult.count = 0; | 
|                         objJsonResult.Message = "本次拣料数量超过未拣料数量!"; | 
|                         objJsonResult.data = null; | 
|                         return objJsonResult; | 
|                     } | 
|                 } | 
|   | 
|                 bool flag = false; | 
|                 flag = AddSendGoodsBill(listCa, SourceInterID, SourceBillNo, user, ref DBUtility.ClsPub.sExeReturnInfo); | 
|   | 
|   | 
|                 if (flag) | 
|                 { | 
|                     objJsonResult.code = "1"; | 
|                     objJsonResult.count = 1; | 
|                     objJsonResult.Message = "配送成功!"; | 
|                     objJsonResult.data = null; | 
|                     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 = "Exception!" + e.ToString(); | 
|                 objJsonResult.data = null; | 
|                 return objJsonResult; | 
|             } | 
|         } | 
|         //新增 | 
|         public bool AddSendGoodsBill(List<SendGoodsBill> listCa, string SourceInterID, string SourceBillNo, string user, ref string sReturn) | 
|         { | 
|             try | 
|             { | 
|                 oCN.BeginTran(); | 
|   | 
|                 //oCN.RunProc($"delete from JIT_SendGoodsBillMain where HMainSourceInterID={SourceInterID} and HMainSourceBillNo='{SourceBillNo}' and HBillStatus=1"); | 
|   | 
|                 //oCN.RunProc($"delete from JIT_SendGoodsBillSub where HInterID in (select HInterID from JIT_SendGoodsBillMain where HMainSourceInterID={SourceInterID} and HMainSourceBillNo='{SourceBillNo}' and HBillStatus=1)"); | 
|   | 
|                 ds = oCN.RunProcReturn($"select a.HMainSourceEntryID,b.HMaterID  from JIT_SendGoodsBillMain a  with(nolock) inner join JIT_SendGoodsBillSub b with(nolock) on a.HInterID = b.HInterID where a.HMainSourceInterID={SourceInterID} and a.HBillStatus=1", "JIT_SendGoodsBillMain"); | 
|   | 
|                 for (int i = 0; i < listCa.Count; i++) | 
|                 { | 
|                     int a = -1; | 
|                     for (int j = 0; j < ds.Tables[0].Rows.Count; j++) | 
|                     { | 
|                         if (ds.Tables[0].Rows[j]["HMaterID"].ToString() == listCa[i].HMaterID.ToString()&& ds.Tables[0].Rows[j]["HMainSourceEntryID"].ToString() == listCa[i].HEntryID.ToString()) | 
|                         { | 
|                             a = j; | 
|                             break; | 
|                         } | 
|                     } | 
|   | 
|                     //a=0  则代表配送单没有数据  需要添加数据 | 
|                     if (a == -1 ) | 
|                     { | 
|                         long InterID = DBUtility.ClsPub.CreateBillID_Prod("460201", ref DBUtility.ClsPub.sExeReturnInfo); | 
|                         string HBillNo = DBUtility.ClsPub.CreateBillCode_Prod("460201", ref DBUtility.ClsPub.sExeReturnInfo, true); | 
|   | 
|                         //添加主表数据 | 
|                         oCN.RunProc("insert into JIT_SendGoodsBillMain(HYear,HPeriod,HBillType,HBillSubType,HInterID,HDate" + | 
|                             ",HBillNo,HBillStatus,HMaker,HMakeDate,HISCheck, HMainSourceInterID, HMainSourceEntryID" + | 
|                             ", HMainSourceBillNo, HMainSourceBillType)" + | 
|                            $"values({DateTime.Now.Year},{DateTime.Now.Month},'460201','460201',{InterID}, GETDATE(), '{HBillNo}'," + | 
|                            $" 1,'{user}', GETDATE(), 0, {SourceInterID}, {listCa[i].HEntryID}, '{SourceBillNo}', '4602')"); | 
|   | 
|                         //添加子表数据 | 
|                         oCN.RunProc("insert into JIT_SendGoodsBillSub(HInterID,HBillNo_bak,HEntryID" + | 
|                             ",HMaterID,HQty,HWHID,HSPID,HISCheck,HCheckSubMan,HCheckSubDate)" + | 
|                             $"values({InterID},'{HBillNo}',{i + 1}, {listCa[i].HMaterID},{listCa[i].本次拣料数量}," + | 
|                             $" {listCa[i].HWHID},{listCa[i].HSPID},0,'{user}', GETDATE())"); | 
|                     } | 
|                     else | 
|                     { | 
|                         //修改配送单的配送数量 | 
|                         oCN.RunProc($"update b  set b.HQty=b.HQty+{listCa[i].本次拣料数量} from JIT_SendGoodsBillMain a  with(nolock) inner join JIT_SendGoodsBillSub b with(nolock) on a.HInterID = b.HInterID  " + | 
|                             $"where  HMainSourceInterID ={SourceInterID} and b.HMaterID ={listCa[i].HMaterID} and a.HBillStatus =1 "); | 
|                     } | 
|                     //修改调拨数量 | 
|                     oCN.RunProc($"update JIT_ComplementGoodsBillSub_LK set HSendQTY=HSendQTY+{listCa[i].本次拣料数量} where HMaterID={listCa[i].HMaterID} " + | 
|                         $" and HSourceInterID=(select top 1 HSourceInterID from JIT_ComplementGoodsBillSub_LK " + | 
|                         $"where HMaterID={listCa[i].HMaterID}  and HInterID={SourceInterID} order by HSourceInterID )  and HInterID={SourceInterID} "); | 
|                 } | 
|   | 
|                 sReturn = "新增单据成功!"; | 
|                 oCN.Commit(); | 
|                 return true; | 
|             } | 
|             catch (Exception e) | 
|             { | 
|                 oCN.RollBack(); | 
|                 sReturn = e.Message; | 
|                 throw (e); | 
|             } | 
|         } | 
|         #endregion | 
|   | 
|         #region 上查 | 
|         [Route("Sc_ComplementGoods/ComplementGoodsList_Sc")] | 
|         [HttpGet] | 
|         public object ComplementGoodsList_Sc(string HInterID, string HMaterID) | 
|         { | 
|             try | 
|             { | 
|   | 
|                 ds = oCN.RunProcReturn($"exec h_p_JIT_ComplementGoodsBillList_UpQuery '{HInterID}',{HMaterID}", "h_p_JIT_ComplementGoodsBillList_UpQuery"); | 
|   | 
|                 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 下查 | 
|         [Route("Sc_ComplementGoods/JIT_SendGoodsBillList_Xc")] | 
|         [HttpGet] | 
|         public object JIT_SendGoodsBillList_Xc(string HInterID, string HMaterID) | 
|         { | 
|             try | 
|             { | 
|   | 
|                 ds = oCN.RunProcReturn($"exec h_p_JIT_ComplementGoodsBillList_DownQuery '{HInterID}',{HMaterID}", "h_p_JIT_ComplementGoodsBillList_DownQuery"); | 
|   | 
|                 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 | 
|     } | 
| } |