Exemplo n.º 1
0
        public override BaseResult Add(dynamic entity)
        {
            #region 获取参数
            BaseResult br        = new BaseResult();
            var        kspdModel = entity as KspdModel;
            if (kspdModel != null)
            {
                AdminAdd(br, kspdModel);
                return(br);
            }

            Hashtable param = entity as Hashtable;

            DateTime rq = DateTime.Now;

            if (param == null ||
                param["id_shop"] == null || string.IsNullOrEmpty(param["id_shop"].ToString()) ||
                param["id_masteruser"] == null || string.IsNullOrEmpty(param["id_masteruser"].ToString()) ||
                param["json_param"] == null || string.IsNullOrEmpty(param["json_param"].ToString()) ||
                param["id_jbr"] == null || string.IsNullOrEmpty(param["id_jbr"].ToString()) ||
                param["id_create"] == null || string.IsNullOrEmpty(param["id_create"].ToString()) ||
                param["rq"] == null || string.IsNullOrEmpty(param["rq"].ToString()) || !DateTime.TryParse(param["rq"].ToString(), out rq) ||
                param["sign"] == null || string.IsNullOrEmpty(param["sign"].ToString())
                )
            {
                br.Success = false;
                br.Message.Add("必要参数不可以为空.");
                return(br);
            }
            #endregion

            #region 构建表体
            var body = Utility.JSON.Deserialize <List <Td_Kc_Kspd_2> >(param["json_param"].ToString());

            if (body == null || body.Count() <= 0)
            {
                br.Success = false;
                br.Message.Add("必要参数不符合要求.");
                return(br);
            }
            #endregion

            #region 构建表头
            var head = new Td_Kc_Kspd_1()
            {
                id_masteruser = param["id_masteruser"].ToString(),
                id            = GetGuid,
                dh            = GetNewDH(param["id_masteruser"].ToString(), param["id_shop"].ToString(), Enums.FlagDJLX.DHKSPD),
                rq            = rq,
                id_shop       = param["id_shop"].ToString(),
                bm_djlx       = "KC010",
                id_jbr        = param["id_jbr"].ToString(),
                je_yk_mxtotal = 0,
                rq_sh         = null,
                flag_sh       = 0,
                id_user_sh    = "",
                flag_cancel   = 0,
                bz            = param["bz"] == null ? "" : param["bz"].ToString(),
                id_create     = param["id_create"].ToString(),
                rq_create     = DateTime.Now,
                id_edit       = "",
                rq_edit       = null,
                flag_delete   = 0
            };
            #endregion

            #region 表体验证以及赋值
            foreach (var item in body)
            {
                string message = string.Empty;
                if (this.ParamError(item, out message) || !string.IsNullOrEmpty(message))
                {
                    br.Success = false;
                    br.Message.Clear();
                    br.Message.Add(message);
                    return(br);
                }
                else
                {
                    item.id_masteruser = head.id_masteruser;
                    item.id            = GetGuid;
                    item.id_bill       = head.id;
                    item.rq_create     = head.rq_create;
                    if (item.sl == null || item.zhl == null)
                    {
                        item.sl_total = null;
                    }
                    else
                    {
                        item.sl_total = item.zhl * item.sl;
                    }
                }
            }

            head.je_yk_mxtotal = body.Sum(d => d.je_yk);

            #endregion

            #region 插入数据
            DAL.Add(head);
            DAL.AddRange(body);
            #endregion

            #region 执行存储过程并返回结果
            Hashtable ht = new Hashtable();
            ht.Clear();
            ht.Add("proname", "p_kc_kspd_sh");
            ht.Add("errorid", "-1");
            ht.Add("errormessage", "未知错误!");
            ht.Add("id_bill", head.id);
            ht.Add("id_user", head.id_create);
            DAL.RunProcedure(ht);

            if (!ht.ContainsKey("errorid") || !ht.ContainsKey("errormessage"))
            {
                br.Success = false;
                br.Message.Clear();
                br.Message.Add("审核失败,执行审核出现异常!");
                throw new CySoftException(br);
            }

            if (!string.IsNullOrEmpty(ht["errorid"].ToString()) || !string.IsNullOrEmpty(ht["errormessage"].ToString()))
            {
                br.Success = false;
                br.Message.Clear();
                br.Message.Add("审核失败,  " + ht["errormessage"].ToString());
                throw new CySoftException(br);
            }

            #endregion

            #region 返回
            br.Success = true;
            br.Message.Clear();
            br.Message.Add(string.Format("操作成功!"));
            br.Data = new { id = head.id, dh = head.dh };
            return(br);

            #endregion
        }
Exemplo n.º 2
0
        private void AdminAdd(BaseResult br, KspdModel model)
        {
            #region 参数验证
            if (model == null || string.IsNullOrEmpty(model.id_masteruser))
            {
                br.Success = false;
                br.Message.Add("参数有误!");
                return;
            }
            if (string.IsNullOrEmpty(model.dh))
            {
                br.Success = false;
                br.Message.Add("单号不能为空!");
                return;
            }
            if (string.IsNullOrEmpty(model.id_shop))
            {
                br.Success = false;
                br.Message.Add("请选择制单门店!");
                return;
            }
            if (string.IsNullOrEmpty(model.id_jbr))
            {
                br.Success = false;
                br.Message.Add("请选择经办人!");
                return;
            }
            if (string.IsNullOrWhiteSpace(model.json_data))
            {
                br.Success = false;
                br.Message.Add("请选择商品!");
                return;
            }
            #endregion
            Td_Kc_Kspd_1 entity = new Td_Kc_Kspd_1();
            #region
            entity.id_masteruser = model.id_masteruser;
            entity.id            = GetGuid;
            entity.dh            = model.dh;
            entity.rq            = model.rq;
            entity.id_shop       = model.id_shop;
            entity.bm_djlx       = Enums.Kspd.KC010.ToString();
            entity.id_jbr        = model.id_jbr;
            entity.flag_sh       = (byte)Enums.FlagSh.UnSh;
            entity.flag_cancel   = (byte)Enums.FlagCancel.NoCancel;
            entity.je_yk_mxtotal = model.je_yk_mxtotal;
            entity.bz            = model.bz;
            entity.id_create     = model.id_create;
            entity.rq_create     = DateTime.Now;
            entity.flag_delete   = (byte)Enums.FlagDelete.NoDelete;
            #endregion

            var kspdList2 = JSON.Deserialize <List <Td_Kc_Kspd_2> >(model.json_data);
            #region 验证表体数据
            if (!kspdList2.Any())
            {
                br.Success = false;
                br.Message.Add("请选择商品!");
                return;
            }
            var sort_id = 1;
            kspdList2.ForEach(a =>
            {
                a.id_masteruser = entity.id_masteruser;
                a.id_bill       = entity.id;
                a.id            = GetGuid;
                a.sort_id       = sort_id;
                a.rq_create     = entity.rq_create;
                CheckKspd2(a, br);
                sort_id++;
            });
            if (br.Message.Any())
            {
                var firstError = br.Message.FirstOrDefault();
                br.Message.Clear();
                br.Message.Add(firstError);
                return;
            }
            var groupList = kspdList2.GroupBy(a => a.id_kcsp, a => a).ToList();
            if (groupList.Any())
            {
                var item = groupList.FirstOrDefault(a => a.Count() > 1);
                if (item != null)
                {
                    var sameSpList = kspdList2.Where(k => k.id_kcsp == item.Key).ToList();
                    br.Success = false;
                    br.Message.Clear();
                    br.Message.Add(string.Format("第{0}行商品与第{1}行商品是同一库存商品,不能重复盘点!", sameSpList[0].sort_id, sameSpList[1].sort_id));
                    return;
                }
            }
            Hashtable param = new Hashtable();
            param.Add("id_masteruser", model.id_masteruser);
            param.Add("id_shop", model.id_shop);
            var id_kcsp_list = (from k in kspdList2 select k.id_kcsp).ToArray();
            param.Add("id_kcsp_list", id_kcsp_list);
            var list = Td_Kc_Kspd_2DAL.QureyKspd2LeftJoinKspd1(typeof(Td_Kc_Kspd_2), param);
            if (list.Any())
            {
                var first = list.FirstOrDefault();
                if (first != null)
                {
                    var hadsp = kspdList2.FirstOrDefault(k => k.id_kcsp == first.id_kcsp);
                    if (hadsp != null)
                    {
                        br.Success = false;
                        br.Message.Clear();
                        br.Message.Add(string.Format("在其他未审核盘点单中已存在第{0}行商品!", hadsp.sort_id));
                        return;
                    }
                }
            }
            #endregion
            DAL.Add(entity);
            DAL.AddRange(kspdList2);
            if (model.AutoAudit)
            {
                param.Clear();
                param.Add("id_masteruser", model.id_masteruser);
                param.Add("id_user", model.id_create);
                param.Add("id", entity.id);
                Sh <Td_Kc_Kspd_1>(br, param, "p_kc_kspd_sh");
            }
            br.Success = true;
        }