Пример #1
0
        public string AddCostContract(decimal pid, string name, string bidno, DateTime date, DateTime sdate,
            DateTime edate, decimal price, string usecount, string audit, string fco, string sco, string remark)
        {
            var user = GetCookieUser();
            if (user == null)
            {
                return JsonConvert.SerializeObject(new
                {
                    Message = "notlogin"
                });
            }
            try
            {
                var proj = projBll.GetModel(pid);

                //取出该工程下所有分包合同
                var list = costContractBll.GetModelList("Cc_PID = " + proj.P_ID);
                //遍历获取最大分享编号
                var maxNo = list.Count == 0 ? 0 : list.Max(li => CommonMethod.ConvertToInt(li.Cc_No.Split('-').LastOrDefault()));
                //附件
                var file = Request.Files["fl_CostContract"];
                var save_path = "/filecache/";
                if (!Directory.Exists(Server.MapPath(save_path)))
                {
                    Directory.CreateDirectory(Server.MapPath(save_path));
                }
                if (file != null)
                {
                    var ext = System.IO.Path.GetExtension(file.FileName).ToLower();
                    if (ext != ".zip")
                    {
                        return JsonConvert.SerializeObject(new
                        {
                            Message = "false",
                            Content = "仅支持ZIP文件导入!"
                        });
                    }
                }
                var fileId = SaveZipFiles(file, save_path);

                var model = new Mo.CostContractInfo
                {
                    Cc_PID = Convert.ToDecimal(proj.P_ID),
                    Cc_No = proj.P_No + "-" + (maxNo + 1),
                    Cc_Name = HttpUtility.UrlDecode(name),
                    Cc_Fco = HttpUtility.UrlDecode(fco),
                    Cc_Sco = HttpUtility.UrlDecode(sco),
                    Cc_Date = date,
                    Cc_Price = price,
                    Cc_Pi = 0,
                    Cc_NoPi = price,
                    Cc_Pm = 0,
                    Cc_NoPm = price,
                    Cc_SDate = sdate,
                    Cc_EDate = edate,
                    Cc_BidNo = bidno,
                    Cc_Type = Convert.ToInt32(Request["type"]),
                    Cc_State = 0,
                    Cc_Remark = HttpUtility.UrlDecode(remark),
                    Cc_Audit = audit,
                    Cc_File = fileId,
                    Cc_UseCount = HttpUtility.UrlDecode(usecount),
                    Cc_Inputer = user.Id,
                    Cc_InputDate = DateTime.Now
                };
                if (costContractBll.Add(model))
                {
                    Dal.Log.Add("添加成本合同", "ADD", user.Id);
                    return JsonConvert.SerializeObject(new
                    {
                        Message = "success"
                    });
                }
                else
                {
                    return JsonConvert.SerializeObject(new
                    {
                        Message = "false",
                        Content = "保存失败"
                    });
                }
            }
            catch (Exception ex)
            {
                Dal.LogError.Add(ex, user.Id);

                return JsonConvert.SerializeObject(new
                {
                    Message = "error"
                });
            }
        }
Пример #2
0
        //将文件数据放入DataSet对象中
        public string ImportXlsToData(string fileName)
        {
            var user = GetCookieUser();
            var result = string.Empty;
            try
            {

                //生成工程编号和ID的键值对
                var sql = "SELECT P_ID, P_No FROM tbl_ProjectInfo WHERE P_Flag in (0,1)";
                var ds = Dal.SqlHelper.Query(sql);
                var projDic = new Dictionary<string, decimal>();
                ds.Tables[0].AsEnumerable().ToList().ForEach(li => projDic.Add(li["P_No"].ToString(), CommonMethod.ConvertToDecimal(li["P_ID"])));

                ds = CommonMethod.ImportXlsToDataSet(fileName);
                var typeXml = GetTypeByXml();

                var costContractList = new List<Mo.CostContractInfo>();
                var list = ds.Tables[0].AsEnumerable().ToList();
                list.ForEach(li =>
                {
                    var msg = string.Empty;
                    //空行跳过
                    if (li["工程编号"].ToString().Trim() == "" && li["合同名称"].ToString().Trim() == "" &&
                        li["乙方单位名称"].ToString().Trim() == "" &&
                        li["签订日期"].ToString().Trim() == "" && li["合同价款"].ToString().Trim() == "" &&
                        li["开工日期"].ToString().Trim() == "" && li["竣工日期"].ToString().Trim() == "" &&
                        li["标书号"].ToString().Trim() == "" && li["审计单位"].ToString().Trim() == "" &&
                        li["料款实际使用单位"].ToString().Trim() == "" && li["合同类别"].ToString().Trim() == "" &&
                        li["备注"].ToString().Trim() == "")
                    {
                        return;
                    }
                    //筛选错误类型
                    var node = typeXml.SelectSingleNode("/root/ContractType/Value[text()='" + li["合同类别"].ToString() + "']");

                    if (li["工程编号"].ToString().Trim() == "")
                    {
                        msg += ",工程编号不得为空";
                    }
                    else if (!projDic.ContainsKey(li["工程编号"].ToString().Trim()))
                    {
                        msg += ",工程编号不正确";
                    }

                    if (li["合同名称"].ToString().Trim() == "")
                    {
                        msg += ",合同名称不得为空";
                    }
                    if (li["合同类别"].ToString().Trim() == "")
                    {
                        msg += ",合同类别不得为空";
                    }
                    else if (node == null)
                    {
                        msg += ",合同类别填写有误";
                    }
                    if (li["乙方单位名称"].ToString().Trim() == "")
                    {
                        msg += ",乙方单位名称不得为空";
                    }
                    if (li["签订日期"].ToString().Trim() == "")
                    {
                        msg += ",签订日期不得为空";
                    }
                    decimal price = 0;
                    if (li["合同价款"].ToString().Trim() == "")
                    {
                        msg += ",合同价款不得为空";
                    }
                    else if (!decimal.TryParse(li["合同价款"].ToString(), out price))
                    {
                        msg += ",合同价款格式错误";
                    }

                    //本条数据含有错误信息,则放弃导入,记录错误信息
                    if (msg != "")
                    {
                        result += "第" + (list.IndexOf(li) + 2) + "行数据有误" + msg + "<br/>";
                        return;
                    }

                    //总体错误信息不为空则放弃导入,只记录错误信息
                    if (result != "") return;

                    var pid = projDic[li["工程编号"].ToString()];

                    var model = new Mo.CostContractInfo()
                    {
                        Cc_PID = pid,
                        Cc_No = li["工程编号"] + "-",
                        Cc_Name = li["合同名称"].ToString(),
                        Cc_Type = CommonMethod.ConvertToInt((node.ParentNode).ChildNodes[0].InnerText),
                        Cc_Fco = "天津市光达电力有限公司",
                        Cc_Sco = li["乙方单位名称"].ToString(),
                        Cc_Date = CommonMethod.ConvertToDateTimeOrNull(li["签订日期"].ToString()),

                        Cc_Price = price,
                        Cc_Pi = 0,
                        Cc_NoPi = price,
                        Cc_Pm = 0,
                        Cc_NoPm = price,
                        Cc_SDate = CommonMethod.ConvertToDateTimeOrNull(li["开工日期"].ToString()),
                        Cc_EDate = CommonMethod.ConvertToDateTimeOrNull(li["竣工日期"].ToString()),
                        Cc_BidNo = li["标书号"].ToString(),
                        Cc_Audit = li["审计单位"].ToString(),
                        Cc_UseCount = li["料款实际使用单位"].ToString(),
                        Cc_Remark = li["备注"].ToString(),
                        Cc_State = 0,
                        Cc_Inputer = user.Id,
                        Cc_InputDate = DateTime.Now
                    };
                    costContractList.Add(model);
                });

                if (result == "")
                {
                    costContractList.ForEach(li =>
                    {
                        //遍历获取最大分享编号
                        var nolist = costContractBll.GetModelList("Cc_PID = " + li.Cc_PID);
                        var maxNo = nolist.Count == 0 ? 0 : nolist.Max(l => CommonMethod.ConvertToInt(l.Cc_No.Split('-').LastOrDefault()));
                        li.Cc_No += maxNo + 1;
                        costContractBll.Add(li);
                    });
                }
            }
            catch (Exception ex)
            {
                Dal.LogError.Add(ex, user.Id);
                result = "数据格式有误,导入失败";
            }
            return result;
        }