using OpenAuth.App.BaseApp.Base; using OpenAuth.Repository.Domain; using OpenAuth.Repository; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Infrastructure; using Microsoft.AspNetCore.Http; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using OpenAuth.App.Interface; using SqlSugar; using OpenAuth.App.ServiceApp.TaxZongdiManage.Request; using DocumentFormat.OpenXml.EMMA; using OpenAuth.App.BasicQueryService; using Org.BouncyCastle.Ocsp; namespace OpenAuth.App.ServiceApp.TaxZongdiManage { public class TaxZongdiApp : SqlSugarBaseApp { private ISqlSugarClient client; CommonDataManager _commonDataManager; #region 构造函数 public TaxZongdiApp( CommonDataManager commonDataManager, ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth, ISqlSugarClient sqlSugarClient ) : base(unitWork, repository, auth) { this.client = sqlSugarClient; _commonDataManager = commonDataManager; } #endregion #region 获取分页数据列表 /// /// 获取分页列表 /// /// /// public async Task>>> LoadZongdiPageList(TaxZongdiReq req) { RefAsync totalCount = 0; var query = client.Queryable() .WhereIF(!string.IsNullOrEmpty(req.zdbm), r => r.zdbm == req.zdbm) .WhereIF(!string.IsNullOrEmpty(req.syqsq), r => r.syqsq.Contains(req.syqsq)) .WhereIF(!string.IsNullOrEmpty(req.djqdm), r => r.djqdm == req.djqdm) .WhereIF(!string.IsNullOrEmpty(req.djzqdm), r => r.djzqdm == req.djzqdm) .WhereIF(!string.IsNullOrEmpty(req.bdcdyh), r => r.bdcdyh == req.bdcdyh) .WhereIF(!string.IsNullOrEmpty(req.tdxz), r => r.tdxz == req.tdxz) .Select(r => new { RowNumber = SqlFunc.RowNumber(r.gid), r.gid, r.shxydm, r.syrmc, r.zdbm, r.djqmc, r.djzqmc, r.bdcdyh, r.zdfzmj, r.syqsq, r.tdxz, r.jzfzzmj, r.tdqdfs }); var result = await query.ToPageListAsync(req.page, req.limit, totalCount); return new Response>> { Code = 200, Message = "success", Result = new PageInfo> { Items = result, Total = totalCount } }; } /// /// 根据id获取单个企业用地信息 /// /// 用地gid /// public async Task GetZongdiInfoById(int gid) { var list = await client.Queryable().Where(r => r.gid == gid).FirstAsync(); return list; } #endregion #region 编辑企业用地信息 /// /// 添加企业用地信息 /// /// /// /// public async Task> AddZongdi(TaxZongdi req) { using (var uow = base.UnitWork.CreateContext()) { if (uow.TaxZongdi.IsAny(u => u.zdbm == req.zdbm)) { throw new Exception("宗地编码已存在"); } //获取主键 string _gid = _commonDataManager.GetMaxKeyVal("gid", "tax_zongdi", 1); req.gid = int.Parse(_gid);//转为数字类型 //获取objectid string _objid = _commonDataManager.GetMaxKeyVal("objectid", "tax_zongdi", 1); req.objectid = int.Parse(_objid);//转为数字类型 //StringBuilder geomSql = new StringBuilder(); //if (req.geom != null) //{ // //格式化数据 // string _wktModel = _commonDataManager.WktDataConvert(req.geom, "MULTIPOLYGON ZM", 4); // req.geom = null; // geomSql.AppendFormat($" update tax_zongdi set geom = st_geomfromtext('{_wktModel}',4326) where gid = '{_gid}'"); //} bool insert = await uow.TaxZongdi.InsertAsync(req); //var geo=await uow.Db.Ado.ExecuteCommandAsync(geomSql.ToString()); bool flag = uow.Commit(); return new Response { Result = flag && insert, Message = (flag && insert ) == true ? "success" : "error" }; } } /// /// 修改企业用地信息 /// /// /// /// public async Task> UpdateZongdi(TaxZongdi req) { using (var uow = base.UnitWork.CreateContext()) { if (uow.TaxZongdi.AsQueryable().Where(u => u.zdbm == req.zdbm && u.gid == req.gid).Count() > 1) { throw new Exception("用地编码已存在"); } bool update = await uow.TaxZongdi.UpdateAsync(req); bool flag = uow.Commit(); return new Response { Result = flag && update, Message = (flag && update) == true ? "success" : "error" }; } } /// /// 删除企业用地 /// /// public async Task> DeleteZongdi(int[] ids) { using (var uow = base.UnitWork.CreateContext()) { var delete = await uow.TaxZongdi.DeleteAsync(a => ids.Contains(a.gid)); var flag = uow.Commit(); return new Response { Result = flag && delete, Message = flag && delete == true ? "success" : "error" }; } } #endregion #region 上传企业用地信息 /// /// 上传企业用地信息 /// /// /// public Response ImportZongdiInfo(IFormFileCollection formFiles) { IFormFile file = formFiles[0]; //存储文件到服务器 if (file != null) { if (file.FileName.IndexOf(".xls") > 0 || file.FileName.IndexOf(".xlsx") > 0) { //数据库导入 IWorkbook workbook = null; if (file.FileName.IndexOf(".xlsx") > 0) { using (var stream = file.OpenReadStream()) { workbook = new XSSFWorkbook(stream);//excel的版本2007 } } else if (file.FileName.IndexOf(".xls") > 0) { using (var stream = file.OpenReadStream()) { workbook = new HSSFWorkbook(stream);//excel的版本2003 } } //数据处理 using (var uow = base.UnitWork.CreateContext()) { //获取sheet ISheet sheet; sheet = workbook.GetSheetAt(0); //处理sheet数据 string res = ""; if (sheet != null) { IRow firstRow = sheet.GetRow(0); //获取有效数据行数 int lastRow = sheet.LastRowNum; //int rowCount = 0; //具体excel数据解析 for (int i = 1; i <= lastRow; ++i) { IRow row = sheet.GetRow(i); if (row == null || string.IsNullOrEmpty(row.GetCell(0).ToString())) continue; TaxZongdi cy = new TaxZongdi(); //获取主键 string _gid = _commonDataManager.GetMaxKeyVal("gid", "tax_zongdi", 1); cy.gid = int.Parse(_gid);//转为数字类型 //获取objectid string _objid = _commonDataManager.GetMaxKeyVal("objectid", "tax_zongdi", 1); cy.objectid = int.Parse(_objid);//转为数字类型 if (string.IsNullOrEmpty(row.GetCell(2)?.ToString())) { cy.shape_leng = null; } else { cy.shape_leng = Convert.ToDecimal(row.GetCell(2)?.ToString()); } if (string.IsNullOrEmpty(row.GetCell(3)?.ToString())) { cy.shape_area = null; } else { cy.shape_area = Convert.ToDecimal(row.GetCell(3)?.ToString()); } cy.zdbm=row.GetCell(4)?.ToString(); cy.djqdm=row.GetCell(5)?.ToString(); cy.djqmc=row.GetCell(6)?.ToString(); cy.djzqdm=row.GetCell(7)?.ToString(); cy.djzqmc=row.GetCell(8)?.ToString(); cy.syrmc=row.GetCell(9)?.ToString(); cy.syrlx=row.GetCell(10)?.ToString(); cy.shxydm=row.GetCell(11)?.ToString(); cy.sjyt=row.GetCell(12)?.ToString(); cy.tdxz=row.GetCell(13)?.ToString(); cy.tdqdfs=row.GetCell(14)?.ToString(); cy.synx=row.GetCell(15)?.ToString(); if (string.IsNullOrEmpty(row.GetCell(16)?.ToString())) { cy.symj = null; } else { cy.symj = Convert.ToDecimal(row.GetCell(16)?.ToString()); } if (string.IsNullOrEmpty(row.GetCell(17)?.ToString())) { cy.zdfzmj = null; } else { cy.zdfzmj = Convert.ToDecimal(row.GetCell(17)?.ToString()); } if (string.IsNullOrEmpty(row.GetCell(18)?.ToString())) { cy.zdsjmj = null; } else { cy.zdsjmj = Convert.ToDecimal(row.GetCell(18)?.ToString()); } if (string.IsNullOrEmpty(row.GetCell(19)?.ToString())) { cy.jzfzzmj = null; } else { cy.jzfzzmj = Convert.ToDecimal(row.GetCell(19)?.ToString()); } if (string.IsNullOrEmpty(row.GetCell(20)?.ToString())) { cy.jzsjzmj = null; } else { cy.jzsjzmj = Convert.ToDecimal(row.GetCell(20)?.ToString()); } if (string.IsNullOrEmpty(row.GetCell(21)?.ToString())) { cy.gjgjzmj = null; } else { cy.gjgjzmj = Convert.ToDecimal(row.GetCell(21)?.ToString()); } if (string.IsNullOrEmpty(row.GetCell(22)?.ToString())) { cy.zhjgjzmj = null; } else { cy.zhjgjzmj = Convert.ToDecimal(row.GetCell(22)?.ToString()); } cy.dcr = row.GetCell(23)?.ToString(); if (string.IsNullOrEmpty(row.GetCell(24)?.ToString())) { cy.dcrq = null; } else { cy.dcrq = Convert.ToDateTime(row.GetCell(24)?.DateCellValue); } //cy.dcrq=Convert.ToDateTime(row.GetCell(19).ToString()); cy.clr = row.GetCell(25)?.ToString(); if (string.IsNullOrEmpty(row.GetCell(26)?.ToString())) { cy.clrq = null; } else { cy.clrq = Convert.ToDateTime(row.GetCell(26)?.DateCellValue); } //cy.clrq=Convert.ToDateTime(row.GetCell(21).ToString()); cy.bz = row.GetCell(27)?.ToString(); cy.bdcdyh=row.GetCell(28)?.ToString(); cy.zdybh=row.GetCell(29)?.ToString(); if (string.IsNullOrEmpty(row.GetCell(30)?.ToString())) { cy.jzsyzmj = null; } else { cy.jzsyzmj = Convert.ToDecimal(row.GetCell(30)?.ToString()); } cy.zddm=row.GetCell(31)?.ToString(); cy.syqsq=row.GetCell(32)?.ToString(); cy.syzzq = row.GetCell(33)?.ToString(); if (!string.IsNullOrEmpty(row.GetCell(34)?.ToString())) { cy.geom = row.GetCell(34)?.ToString(); } if (uow.TaxZongdi.IsAny(u => u.zdbm == cy.zdbm)) { res += "宗地编码" + cy.zdbm + "已存在,"; } else { uow.TaxZongdi.Insert(cy); //uow.Db.Ado.ExecuteCommand(geomSql.ToString()); } } } var flag = uow.Commit(); return new Response { Result = flag, Message = flag == true ? "导入成功" + res : "导入失败" }; } } else { return new Response { Result = false, Message = "上传文件类型错误,请上传Excel文件" }; } } else { return new Response { Result = false, Message = "文件为空" }; } } #endregion } }