diff --git a/ICSSoft.ERP.WebAPI/ICSSoft.DataProject/ICSSoft.DataProject.csproj b/ICSSoft.ERP.WebAPI/ICSSoft.DataProject/ICSSoft.DataProject.csproj index f4e2dc9..748ed6b 100644 --- a/ICSSoft.ERP.WebAPI/ICSSoft.DataProject/ICSSoft.DataProject.csproj +++ b/ICSSoft.ERP.WebAPI/ICSSoft.DataProject/ICSSoft.DataProject.csproj @@ -69,6 +69,7 @@ + diff --git a/ICSSoft.ERP.WebAPI/ICSSoft.DataProject/ManufactureOrderPick.cs b/ICSSoft.ERP.WebAPI/ICSSoft.DataProject/ManufactureOrderPick.cs new file mode 100644 index 0000000..aa126f7 --- /dev/null +++ b/ICSSoft.ERP.WebAPI/ICSSoft.DataProject/ManufactureOrderPick.cs @@ -0,0 +1,169 @@ +using ICSSoft.Common; +using ICSSoft.Entity; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ICSSoft.DataProject +{ + /// + /// 生产订单备料表 + /// + public class ManufactureOrderPick + { + private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private static string connString = System.Configuration.ConfigurationManager.AppSettings["ERPConnStr"]; + private static string ERPDB = System.Configuration.ConfigurationManager.AppSettings["ERPDB"]; + private static string Type = System.Configuration.ConfigurationManager.AppSettings["Type"]; + /// + /// 创建生产订单备料表 + /// + /// + /// + public string CreateManufactureOrderPick(List Bills) + { + string msg = ""; + string connS = ""; + if (Bills.Count <= 0) + { + throw new Exception("传送数据为空!"); + } + string res = string.Empty; + SqlConnection conn = new SqlConnection(); + SqlCommand cmd = new SqlCommand(); + List result = Bills.Select(t => t.WorkPoint).Distinct().ToList(); + + foreach (string WorkPoint in result) + { + try + { + connS = string.Format(connString, WorkPoint); + conn = new System.Data.SqlClient.SqlConnection(connS); + conn.Open(); + SqlTransaction sqlTran = conn.BeginTransaction(); + cmd = new SqlCommand(); + cmd.Transaction = sqlTran; + cmd.Connection = conn; + var list = Bills.Where(a => a.WorkPoint == WorkPoint); + foreach (ICSManufactureOrderPick head in list) + { + ICSUserInfo userInfo = new ICSUserInfo(); + userInfo = DBHelper.GetPersonInfo(head.User, cmd); + string[] ss = head.WorkPoint.Split('_'); + ERPDB = ss[1]; + Dictionary dic; + string sql = ""; + #region 备料表 + foreach (ICSManufactureOrderPicks body in head.details) + { + dic = DBHelper.GetAllCode(ERPDB, "mom_moallocate", "1", head.WorkPoint); + int iFatherId = Convert.ToInt32(dic["iFatherId"].ToString()); + int iChildId = Convert.ToInt32(dic["iChildId"].ToString()); + #region 生产备料表 + sql = @"SELECT '{6}' AS AllocateId,d.MoDId,'{2}' AS SortSeq,ISNULL(a.OpSeq, '0000') AS OpSeq,ISNULL(a.ComponentId,c.PartId) AS ComponentId, + ISNULL(a.FVFlag,'1') AS FVFlag,'{3}' AS BaseQtyN,'{4}' AS BaseQtyD,'0' AS ParentScrap,ISNULL(a.CompScrap,'0') AS CompScrap, + '{5}' AS Qty,'0' AS IssQty,'0' AS DeclaredQty, GETDATE() AS StartDemDate, GETDATE() AS EndDemDate, + '{7}' AS WhCode,NULL AS LotNo,'{8}' AS WIPType,ISNULL(a.ByproductFlag,'0') AS ByproductFlag,'0' AS QcFlag, + '0' AS Offset,ISNULL(a.Free1,'') AS Free1,ISNULL(a.Free2,'') AS Free2,ISNULL(a.Free3,'') AS Free3 + ,ISNULL(a.Free4,'') AS Free4,ISNULL(a.Free5,'') AS Free5,ISNULL(a.Free6,'') AS Free6,ISNULL(a.Free7,'') AS Free7,ISNULL(a.Free8,'') AS Free8 + ,ISNULL(a.Free9,'') AS Free9,ISNULL(a.Free10,'') AS Free10,ISNULL(a.OpComponentId,'0') AS OpComponentId,a.Define22,a.Define23, + a.Define24,a.Define25,a.Define26,a.Define27,a.Define28, + a.Define29,a.Define30,a.Define31,a.Define32,a.Define33, + a.Define34,a.Define35,a.Define36,a.Define37,'0' AS ReplenishQty, + a.Remark,'0' AS TransQty,ISNULL(a.ProductType,'1') AS ProductType,'0' AS SoType,NULL AS SoDId, + NULL AS SoCode,NULL AS SoSeq,NULL AS DemandCode,'0' AS QmFlag,'0' AS OrgQty, + '0' AS OrgAuxQty,NULL AS CostItemCode,NULL AS CostItemName,'0' AS RequisitionFlag,'0' AS RequisitionQty, + '0' AS RequisitionIssQty,'0' AS CostWIPRel,NULL AS MoallocateSubId,NULL AS cSubSysBarCode,'0' AS PickingQty, + '0' AS PickingAuxQty,'0' AS UpperMoQty,'0' AS InvAlloeFlag,NULL AS FactoryCode + INTO #TempBOMP + FROM mom_orderdetail d + INNER JOIN bas_part p on d.InvCode = p.InvCode + LEFT JOIN bom_parent q on q.ParentId = p.PartId + LEFT JOIN bom_bom b ON q.BomId=b.BomId AND a.VersionEndDate>=CONVERT(VARCHAR(10),GETDATE(),23) + --子料 + INNER JOIN bas_part c ON c.InvCode='{1}' + LEFT JOIN bom_opcomponent a ON a.ComponentId = c.PartId AND a.BomId=b.BomId + LEFT JOIN bom_opcomponentopt e ON a.OptionsId=e.OptionsId + WHERE d.MoDId='{0}' + ORDER BY d.MoDId"; + sql = string.Format(sql, head.DetailID, body.InvCode, body.Sequence, body.BaseQtyN, body.BaseQtyD, body.Quantity, iChildId, body.WHCode, body.SupplyType); + sql += @" INSERT INTO mom_moallocate (AllocateId,MoDId,SortSeq,OpSeq,ComponentId, + FVFlag,BaseQtyN,BaseQtyD,ParentScrap,CompScrap, + Qty,IssQty,DeclaredQty,StartDemDate,EndDemDate, + WhCode,LotNo,WIPType,ByproductFlag,QcFlag, + Offset,InvCode,Free1,Free2,Free3, + Free4,Free5,Free6,Free7,Free8, + Free9,Free10,OpComponentId,Define22,Define23, + Define24,Define25,Define26,Define27,Define28, + Define29,Define30,Define31,Define32,Define33, + Define34,Define35,Define36,Define37,ReplenishQty, + Remark,TransQty,ProductType,SoType,SoDId, + SoCode,SoSeq,DemandCode,QmFlag,OrgQty, + OrgAuxQty,CostItemCode,CostItemName,RequisitionFlag,RequisitionQty, + RequisitionIssQty,CostWIPRel,cSubSysBarCode,PickingQty, + PickingAuxQty,UpperMoQty,InvAlloeFlag,FactoryCode) + + SELECT AllocateId,MoDId,SortSeq,OpSeq,ComponentId, + FVFlag,BaseQtyN,BaseQtyD,ParentScrap,CompScrap, + Qty,IssQty,DeclaredQty,StartDemDate,EndDemDate, + WhCode,LotNo,WIPType,ByproductFlag,QcFlag, + Offset,InvCode,Free1,Free2,Free3, + Free4,Free5,Free6,Free7,Free8, + Free9,Free10,OpComponentId,Define22,Define23, + Define24,Define25,Define26,Define27,Define28, + Define29,Define30,Define31,Define32,Define33, + Define34,Define35,Define36,Define37,ReplenishQty, + Remark,TransQty,ProductType,SoType,SoDId, + SoCode,SoSeq,DemandCode,QmFlag,OrgQty, + OrgAuxQty,CostItemCode,CostItemName,RequisitionFlag,RequisitionQty, + RequisitionIssQty,CostWIPRel,cSubSysBarCode,PickingQty, + PickingAuxQty,UpperMoQty,InvAlloeFlag,FactoryCode + FROM #TempMOAll"; + + sql += @" DROP TABLE #TempMOAll" + iFatherId + Environment.NewLine; + cmd.CommandText = sql; + try + { + int count = cmd.ExecuteNonQuery(); + if (count <= 0) + { + throw new Exception("生成生产订单备料表失败,受影响行数<=0;"); + } + } + catch (Exception ex) + { + log.Error("生成生产订单备料表失败!异常:" + ex.Message + ";SQL:\r\n" + sql, ex); + throw new Exception("生成生产订单备料表失败!异常:" + ex.Message + ";SQL:\r\n" + sql, ex); + } + #endregion + } + #endregion + } + cmd.Transaction.Commit(); + } + catch (Exception ex) + { + cmd.Transaction.Rollback(); + log.Error(ex.Message); + throw new Exception(ex.Message); + } + finally + { + if (conn.State == ConnectionState.Open) + { + conn.Close(); + } + conn.Dispose(); + } + } + return msg; + } + + } +} + diff --git a/ICSSoft.ERP.WebAPI/ICSSoft.ERP.WebAPI/Controllers/ValuesController.cs b/ICSSoft.ERP.WebAPI/ICSSoft.ERP.WebAPI/Controllers/ValuesController.cs index 538b5f9..8ea8906 100644 --- a/ICSSoft.ERP.WebAPI/ICSSoft.ERP.WebAPI/Controllers/ValuesController.cs +++ b/ICSSoft.ERP.WebAPI/ICSSoft.ERP.WebAPI/Controllers/ValuesController.cs @@ -2222,7 +2222,81 @@ namespace ICSSoft.WebAPI.Controllers } #endregion #region 生产订单备料表 + /// + /// 更新生产订单备料表 + /// + /// + /// + [Route("api/ManufactureOrderPick/Create")] + [HttpPost] + public HttpResponseMessage CreateManufactureOrderPick([FromBody]object JsonData) + { + log.Info("接口:api/ManufactureOrderPick/Create"); + log.Info("创建生产订单备料表传入值:" + JsonData); + HttpResponseMessage result = new HttpResponseMessage(); + Result res = new Result(); + string str = string.Empty; + try + { + if (JsonData != null && !string.IsNullOrWhiteSpace(JsonData.ToString()) && JsonData.ToString() != "[]") + { + try + { + List infos = new List(); + try + { + infos = JsonConvert.DeserializeObject>(JsonData.ToString()); + } + catch (Exception ex) + { + log.Error("转换失败:" + ex.ToString()); + + res.Success = false; + res.Message = "JSON格式不正确!"; + throw new Exception(res.Message); + } + ManufactureOrderPick action = new ManufactureOrderPick(); + string resultStr = action.CreateManufactureOrderPick(infos); + if (!string.IsNullOrWhiteSpace(resultStr)) + { + res.Success = true; + res.Message = "接口调用成功!"; + res.Data = resultStr; + } + else + { + res.Success = false; + res.Data = resultStr; + } + } + catch (Exception ex) + { + log.Error("调用后台失败:" + ex.ToString()); + res.Success = false; + res.Message = ex.Message; + } + } + else + { + res.Success = false; + res.Message = "请传入参数"; + } + } + catch (Exception ex) + { + log.Error("参数检验失败:" + ex.ToString()); + res.Success = false; + res.Message = ex.Message; + } + finally + { + str = JsonConvert.SerializeObject(res); + result.Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json"); + } + log.Debug("创建生产订单备料表返回值:" + str); + return result; + } #endregion #region 领料申请单 /// diff --git a/ICSSoft.ERP.WebAPI/ICSSoft.Entity/ICSManufactureOrderPick.cs b/ICSSoft.ERP.WebAPI/ICSSoft.Entity/ICSManufactureOrderPick.cs new file mode 100644 index 0000000..e4b29ad --- /dev/null +++ b/ICSSoft.ERP.WebAPI/ICSSoft.Entity/ICSManufactureOrderPick.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ICSSoft.Entity +{ + public class ICSManufactureOrderPick + { + public string DetailID; + public string User; + public DateTime MTime; + public string WorkPoint;//站点 + public List details = new List(); + } + public class ICSManufactureOrderPicks + { + public int Sequence; + public string InvCode; + public decimal Quantity; + public decimal Amount; + public string WHCode; + public string SupplyType; + public decimal BaseQtyN; + public decimal BaseQtyD; + } +} diff --git a/ICSSoft.ERP.WebAPI/ICSSoft.Entity/ICSSoft.Entity.csproj b/ICSSoft.ERP.WebAPI/ICSSoft.Entity/ICSSoft.Entity.csproj index 415abbb..940b252 100644 --- a/ICSSoft.ERP.WebAPI/ICSSoft.Entity/ICSSoft.Entity.csproj +++ b/ICSSoft.ERP.WebAPI/ICSSoft.Entity/ICSSoft.Entity.csproj @@ -57,6 +57,7 @@ +