コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /*
         *      /// <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();
        }