/// <summary> /// 外委加工组批 /// </summary> /// <param name="zpInfo"></param> public void SetZpInfo(WWZPPlanItemInfo zpInfo, string userId) { // 合同订单信息 var ordInfo = GetModel(zpInfo.Id); // 库存钢材信息 var batchInfo = bllProduct.GetByBatchNo( zpInfo.CBatchNo, ordInfo.C_STL_GRD, ordInfo.C_STD_CODE, zpInfo.MtrlCode, zpInfo.InventoryCode, zpInfo.ZLDJ, zpInfo.BZYQ); if (batchInfo.Count < zpInfo.Num) { throw new Exception("库存支数不够,请刷新数据后重试!"); } var sum = batchInfo.Sum(w => w.N_WGT); if (sum < zpInfo.ZpAmt || (batchInfo.Count != zpInfo.Num && sum == zpInfo.ZpAmt)) { throw new Exception("库存总量不够,请刷新数据后重试!"); } dalWWMain.SetZpInfo(ordInfo, zpInfo, batchInfo, userId); }
public RedirectToRouteResult SaveZP(WWZPPlanItemInfo zpInfo) { try { zpInfo.BachNo = zpInfo.BachNo.Trim(); if (zpInfo.BachNo == zpInfo.CBatchNo) { throw new Exception("请修改批号后再组批"); } var user = System.Web.HttpContext.Current.Session["CurrentUser"] as CurrentUser; if (user == null) { GoToLogin(); return(null); } bll.SetZpInfo(zpInfo, user?.Id); } catch (Exception ex) { ViewBag.ErrorMsg = ex.Message; } if (ViewBag.ErrorMsg != null) { return(RedirectToAction(nameof(ZP), new { id = zpInfo.Id, errorMsg = ViewBag.ErrorMsg })); } CloseDialogAndRefreshParentPage(); return(null); }
/* * /// <summary> * /// 分页获取数据列表 * /// </summary> * public DataSet GetList(int PageSize,int PageIndex,string strWhere) * { * OracleParameter[] parameters = { * new OracleParameter(":tblName", OracleDbType.Varchar2, 255), * new OracleParameter(":fldName", OracleDbType.Varchar2, 255), * new OracleParameter(":PageSize", OracleDbType.Decimal), * new OracleParameter(":PageIndex", OracleDbType.Decimal), * new OracleParameter(":IsReCount", OracleDbType.Clob), * new OracleParameter(":OrderType", OracleDbType.Clob), * new OracleParameter(":strWhere", OracleDbType.Varchar2,1000), * }; * parameters[0].Value = "TRC_ROLL_WW_MAIN"; * parameters[1].Value = "C_ID"; * parameters[2].Value = PageSize; * parameters[3].Value = PageIndex; * parameters[4].Value = 0; * parameters[5].Value = 0; * parameters[6].Value = strWhere; * return DbHelperOra.RunProcedure("UP_GetRecordByPage",parameters,"ds"); * }*/ #endregion BasicMethod #region ExtensionMethod #endregion ExtensionMethod #region 自定义 /// <summary> /// 外委加工组批 /// </summary> /// <param name="zpInfo"></param> public void SetZpInfo( Mod_TMO_ORDER order, WWZPPlanItemInfo zpInfo, List <Mod_TRC_ROLL_PRODCUT> batchInfo, string userId) { UpdateBatchSameToNc( zpInfo.InventoryCode, order.C_STL_GRD, order.C_STD_CODE, order.C_SPEC, zpInfo.CBatchNo, zpInfo.MtrlCode, zpInfo.ZLDJ, zpInfo.BZYQ, batchInfo); TransactionHelper.BeginTransaction(); if (zpInfo.Num < batchInfo.Count) { // 如果组批支数等于库存支数,相当于耗用所有库存,则实际重量等于库存重量 new Dal_TMO_ORDER().UpdateInventory(batchInfo, zpInfo.ZpAmt, zpInfo.Num); } var zpAmt = batchInfo.Take(zpInfo.Num).Sum(w => w.N_WGT); // 生成批次号 var batchInfoItem = batchInfo.FirstOrDefault(); // 构造外委加工组批主表记录 var mainItem = new Mod_TRC_ROLL_WW_MAIN { C_ID = Guid.NewGuid().ToString("N"), C_ORD_ID = zpInfo.Id, N_WGT_TOTAL = zpAmt, N_STATUS = 0, C_EMP_ID = userId, C_GROUP = zpInfo.BZ, C_REMARK = zpInfo.Remark, C_SHIFT = zpInfo.BC, C_SPEC_SLAB = batchInfoItem.C_SPEC, C_CHECKSTATE_NAME = zpInfo.ZLDJ, C_STD_CODE = batchInfoItem.C_STD_CODE, C_STL_GRD_SLAB = batchInfoItem.C_STL_GRD, D_MOD_DT = DateTime.Now, N_QUA_TOTAL = zpInfo.Num, C_MAT_SLAB_CODE = order.C_MAT_CODE, C_MAT_SLAB_NAME = order.C_MAT_NAME, C_MAT_XC_CODE = batchInfoItem.C_MAT_CODE, C_MAT_XC_NAME = batchInfoItem.C_MAT_DESC, C_XC_BATCH_NO = batchInfoItem.C_BATCH_NO, C_XC_LINEWH_CODE = batchInfoItem.C_LINEWH_CODE,// zpInfo.InventoryCode, C_XC_BZYQ = batchInfoItem.C_BZYQ }; if (string.IsNullOrEmpty(zpInfo.BachNo) == false) { var a = ExistBatchNo(zpInfo.BachNo); // 验证批号 //string existsSql = $"SELECT COUNT(C_ID) FROM TRC_ROLL_WW_MAIN WHERE C_BATCH_NO='{zpInfo.BachNo}'"; //var count = int.Parse(TransactionHelper.Query(existsSql).Tables[0].Rows[0][0]?.ToString() ?? "0"); if (a)//count > 0) { TransactionHelper.RollBack(); throw new Exception("批次号重复,请重新输入"); } mainItem.C_BATCH_NO = zpInfo.BachNo; } else { mainItem.C_BATCH_NO = GetMAXWWBatchNo(); } bool success = this.Add(mainItem); if (success == false) { TransactionHelper.RollBack(); throw new Exception("组批失败"); } try { for (int i = 0; i < zpInfo.Num; i++) { // 更新线材库存状态 string updateSql = $"UPDATE TRC_ROLL_PRODCUT SET C_MOVE_TYPE = 'QS' WHERE C_ID='{batchInfo[i].C_ID}'"; TransactionHelper.ExecuteSql(updateSql); // 插入外委加工组批子表记录 string insertSql = $"insert into TRC_ROLL_WW_MAIN_ITEM(C_ID,C_ROLL_WW_MAIN_ID,C_SLAB_MAIN_ID,N_WGT) " + $"VALUES('{Guid.NewGuid().ToString("N")}','{mainItem.C_ID}','{batchInfo[i].C_ID}',{batchInfo[i].N_WGT})"; TransactionHelper.ExecuteSql(insertSql); } } catch (Exception ex) { TransactionHelper.RollBack(); throw ex; } TransactionHelper.Commit(); }