using OpenAuth.App.Request; using OpenAuth.App.Response; using OpenAuth.Repository.Domain; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Infrastructure; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; namespace OpenAuth.App { public partial class DroneCaseinfoApp { #region 用户 public JToken GetCurrentUser() { var current = _auth.GetCurrentUser(); var user = current.User; var roles = current.Roles; JObject obj = new JObject(); string currentRoleStr = roles.Select(c => new { id = c.Id, name = c.Name }).ToList().ToJson(); JToken currentRoleJToken = (JToken)JsonConvert.DeserializeObject(currentRoleStr); //用户 JToken userJtoken = user.ToJson().ToJToken(); var managerCount = roles.Where(c => c.Name.Contains("管理员")).Count(); //权限 int law = 0; //案件分发 int street_manager = 0; //案件审核 int county_manager = 0; //案件核销 int inspect_remove = 0; //案件分发 var streetAuth = roles.Where(c => c.Name == "案件分发").Count(); //案件审核 var countyAuth = roles.Where(c => c.Name == "案件审核").Count(); //案件核销 var inspectRemoveAuth = roles.Where(c => c.Name == "案件核销").Count(); int result = 0; if (managerCount > 0) result = 1; if (result == 0 && streetAuth > 0) result = 1; obj.Add("user", userJtoken); obj.Add("auth", result); if (streetAuth > 0) street_manager = 1; if (countyAuth > 0) county_manager = 1; if (inspectRemoveAuth > 0) inspect_remove = 1; obj.Add("street_manager", street_manager); obj.Add("county_manager", county_manager); obj.Add("inspect_remove", inspectRemoveAuth); //查询geoserver string geoserver = ""; //string tenantId = HttpContextExt.GetTenantId(); //if (!string.IsNullOrEmpty(tenantId)) //{ // var tenantModel = _options.Value.TenantList.Where(c => c.id == tenantId).FirstOrDefault(); // if (tenantModel != null) // { // geoserver = tenantModel.geoserver; // } //} obj.Add("geoserver", geoserver); obj.Add("roles", currentRoleJToken); return obj; } #endregion #region 案件处理 /// /// 获取要添加的文件列表 /// /// /// /// /// /// public List GetFilesList(AddOrUpdateDroneCaseDealReq req, List existFiles, SysUser user, DroneCaseDeal model) { req.video_list = req.video_list.InitListData(); //视频 var videoList = req.video_list.InitListData(); //拆除视频 var removeVideoList = req.remove_video_list.InitListData(); //照片 var picInfoList = req.pic_info_list.InitListData(); //整改后照片 var afterPicList = req.after_pic_list.InitListData(); //合法照片 var evidenceFileList = req.evidence_file_list.InitListData(); //处罚通知书 var punish_pic_list = req.punish_pic_list.InitListData(); // 交款通知书 var payment_pic_list = req.payment_pic_list.InitListData(); // 政府同意完善手续证明 var agree_checkout_pic_list = req.agree_checkout_pic_list.InitListData(); // 办理手续 var checkout_pic_list = req.checkout_pic_list.InitListData(); // 勘测定界图 var boundary_pic_list = req.boundary_pic_list.InitListData(); List filesList = new List(); //图片 for (int i = 0; i < picInfoList.Count; i++) { var item = picInfoList[i]; var count = existFiles.Where(c => c.path == item.FilePath).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item.FilePath; fileModel.latitude = item.Latitude; fileModel.longitude = item.Longitude; fileModel.angle = item.Angle; fileModel.type = 0; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; filesList.Add(fileModel); } //整改后照片 for (int i = 0; i < afterPicList.Count; i++) { var item = afterPicList[i]; var count = existFiles.Where(c => c.path == item.FilePath).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item.FilePath; fileModel.latitude = item.Latitude; fileModel.longitude = item.Longitude; fileModel.angle = item.Angle; fileModel.type = 0; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; fileModel.tag = afterPicTag; filesList.Add(fileModel); } //合法材料 for (int i = 0; i < evidenceFileList.Count; i++) { var item = evidenceFileList[i]; var count = existFiles.Where(c => c.path == item.FilePath).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item.FilePath; fileModel.latitude = item.Latitude; fileModel.longitude = item.Longitude; fileModel.angle = item.Angle; fileModel.type = 0; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; fileModel.tag = EvidenceFileTag; filesList.Add(fileModel); } //处罚通知书 for (int i = 0; i < punish_pic_list.Count; i++) { var item = punish_pic_list[i]; var count = existFiles.Where(c => c.path == item).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item; fileModel.type = 0; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; fileModel.tag = punishPicTag; filesList.Add(fileModel); } //交款通知书 for (int i = 0; i < payment_pic_list.Count; i++) { var item = payment_pic_list[i]; var count = existFiles.Where(c => c.path == item).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item; fileModel.type = 0; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; fileModel.tag = paymentPicTag; filesList.Add(fileModel); } //政府同意完善手续证明 for (int i = 0; i < agree_checkout_pic_list.Count; i++) { var item = agree_checkout_pic_list[i]; var count = existFiles.Where(c => c.path == item).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item; fileModel.type = 0; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; fileModel.tag = agreeCheckoutPicTag; filesList.Add(fileModel); } //办理手续 for (int i = 0; i < checkout_pic_list.Count; i++) { var item = checkout_pic_list[i]; var count = existFiles.Where(c => c.path == item).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item; fileModel.type = 0; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; fileModel.tag = checkoutPicTag; filesList.Add(fileModel); } //勘测定界图 for (int i = 0; i < boundary_pic_list.Count; i++) { var item = boundary_pic_list[i]; var count = existFiles.Where(c => c.path == item).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item; fileModel.type = 0; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; fileModel.tag = boundaryPicTag; filesList.Add(fileModel); } //视频 for (int i = 0; i < videoList.Count; i++) { var item = videoList[i]; var count = existFiles.Where(c => c.path == item).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item; fileModel.type = 1; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; filesList.Add(fileModel); } //拆除视频 for (int i = 0; i < removeVideoList.Count; i++) { var item = removeVideoList[i]; var count = existFiles.Where(c => c.path == item).Count(); if (count > 0) continue; DroneFiles fileModel = new DroneFiles(); fileModel.Id = SnowFlakeSingle.Instance.NextId().ToString(); fileModel.path = item; fileModel.type = 1; fileModel.tablename = "drone_case_deal"; fileModel.createtime = DateTime.Now; fileModel.createuser = user.Id.ToString(); fileModel.createusername = user.Name; fileModel.is_delete = 0; fileModel.relid = model.Id; fileModel.tag = "remove"; filesList.Add(fileModel); } return filesList; } /// /// 案件核查 /// /// /// public Response AddExamineDeal(AddOrUpdateDroneCaseDealReq req) { var response = new Response(); var user = _auth.GetCurrentUser().User; var model = req.info; model.Id = model.caseid; model.createtime = DateTime.Now; model.createuser = user.Id.ToString(); model.createusername = user.Name; model.is_delete = 0; model.examiner_id = user.Id.ToString(); model.examiner_name = user.Name; model.examine_time = DateTime.Now; using (var uwo = UnitWork.CreateContext()) { var _count = uwo.DroneCaseDeal.Count(c => c.caseid == req.info.caseid); if (_count > 0) throw new Exception("已存在此图斑的处理数据"); var filesList = GetFilesList(req, new List(), user, model); //新增数据 uwo.DroneCaseDeal.Insert(model); //新增数据 uwo.DroneFiles.InsertRange(filesList); //更新案件状态 uwo.DroneCaseInfo.UpdateSetColumnsTrue(c => new DroneCaseInfo { measure_name = model.measure_name, //处理措施 is_illegal = req.is_illegal, }, c => c.Id == model.caseid); if (req.is_temp_save == null || req.is_temp_save == 0) { var handleStatusName = handleStatusList.Where(c => c.id == 0 && c.is_examine == 1).FirstOrDefault().name; //更新案件状态 uwo.DroneCaseInfo.UpdateSetColumnsTrue(c => new DroneCaseInfo { measure_name = model.measure_name, //处理措施 is_illegal = req.is_illegal, is_examine = 1, handle_status_name = handleStatusName, examiner_id = user.Id.ToString(), examiner_name = user.Name, examine_time = DateTime.Now }, c => c.Id == model.caseid); if (req.is_illegal == 2) { //处理状态:默认 1 办理中 int? handle_status_id = 1; string handle_status_name = handleStatusList.Where(c => c.id == handle_status_id).FirstOrDefault().name; //查询审核流程,处理后,审核状态设置为第一个节点 var verifyModel = uwo.DroneFlowInstance.AsQueryable().Where(c => c.instance_name == "CaseVerify" && c.status == 0).OrderBy(c => c.sort, OrderByType.Asc).First(); if (verifyModel == null) throw new Exception("找不到流程"); //更新案件状态 uwo.DroneCaseInfo.UpdateSetColumnsTrue(c => new DroneCaseInfo { handle_status_id = handle_status_id, handle_status_name = handle_status_name, is_illegal = req.is_illegal, deal_userid = user.Id.ToString(), deal_username = user.Name, deal_time = model.createtime, verifystatus = verifyModel.sort, //审核状态 verifystatusname = verifyModel.name //审核状态名称 }, c => c.Id == model.caseid); } AddDroneCaseLog(new DroneCaseOperationLog { request_data = req.ToJson(), description = "AddExamineDeal", caseid = model.caseid, createuserid = user.Id.ToString(), createusername = user.Name }); } if (req.is_temp_save == null || req.is_temp_save == 0) { //发送websocket消息 //SendWebSocketMessage("newdeal"); } var flag = uwo.Commit(); if (flag) { response.Message = "处理成功"; response.Result = true; } else { response.Message = "处理失败"; response.Result = false; } return response; } } /// /// 案件核查 /// /// /// public Response UpdateExamineDeal(AddOrUpdateDroneCaseDealReq req) { var response = new Response(); var user = _auth.GetCurrentUser().User; using (var uwo = UnitWork.CreateContext()) { var model = req.info; model.examiner_id = user.Id.ToString(); model.examiner_name = user.Name; model.examine_time = DateTime.Now; var existFiles = uwo.DroneFiles.GetList(c => c.relid == req.info.Id && c.tablename == "drone_case_deal"); var filesList = GetFilesList(req, existFiles, user, model); //使用事务提交数据 //新增数据 uwo.DroneCaseDeal.Update(model); //新增数据 uwo.DroneFiles.InsertRange(filesList); //更新案件状态 uwo.DroneCaseInfo.UpdateSetColumnsTrue (c => new DroneCaseInfo { measure_name = model.measure_name, //处理措施 is_illegal = req.is_illegal, }, c => c.Id == model.caseid); if (req.is_temp_save == null || req.is_temp_save == 0) { var handleStatusName = handleStatusList.Where(c => c.id == 0 && c.is_examine == 1).FirstOrDefault().name; //更新案件状态 uwo.DroneCaseInfo.UpdateSetColumnsTrue(c => new DroneCaseInfo { measure_name = model.measure_name, //处理措施 is_illegal = req.is_illegal, is_examine = 1, handle_status_name = handleStatusName, examiner_id = user.Id.ToString(), examiner_name = user.Name, examine_time = DateTime.Now }, c => c.Id == model.caseid); if (req.is_illegal == 2) { //处理状态:默认 1 办理中 int? handle_status_id = 1; string handle_status_name = handleStatusList.Where(c => c.id == handle_status_id).FirstOrDefault().name; //查询审核流程,处理后,审核状态设置为第一个节点 var verifyModel = uwo.DroneFlowInstance.AsQueryable().Where(c => c.instance_name == "CaseVerify" && c.status == 0).OrderBy(c => c.sort, OrderByType.Asc).First(); if (verifyModel == null) throw new Exception("找不到流程"); //更新案件状态 uwo.DroneCaseInfo.UpdateSetColumnsTrue(c => new DroneCaseInfo { handle_status_id = handle_status_id, handle_status_name = handle_status_name, is_illegal = req.is_illegal, deal_userid = user.Id.ToString(), deal_username = user.Name, deal_time = model.createtime, verifystatus = verifyModel.sort, //审核状态 verifystatusname = verifyModel.name //审核状态名称 }, c => c.Id == model.caseid); } AddDroneCaseLog(new DroneCaseOperationLog { request_data = req.ToJson(), description = "UpdateExamineDeal", caseid = model.caseid, createuserid = user.Id.ToString(), createusername = user.Name }); } if (req.is_temp_save == null || req.is_temp_save == 0) { //发送websocket消息 //SendWebSocketMessage("newdeal"); } var flag = uwo.Commit(); if (flag) { response.Result = true; response.Message = "处理成功"; } else { response.Result = false; response.Message = "处理失败"; } return response; } } /// /// 案件处理 /// /// /// public Response AddDroneCaseDeal(AddOrUpdateDroneCaseDealReq req) { var response = new Response(); var user = _auth.GetCurrentUser().User; using (var uwo = UnitWork.CreateContext()) { var model = req.info; model.Id = model.caseid; model.createtime = DateTime.Now; model.createuser = user.Id.ToString(); model.createusername = user.Name; model.is_delete = 0; model.examiner_id = user.Id.ToString(); model.examiner_name = user.Name; model.examine_time = DateTime.Now; //办理人、办理时间 model.transact_time = DateTime.Now; model.transactor_id = user.Id.ToString(); model.transactor_name = user.Name; var _count = uwo.DroneCaseDeal.Count(c => c.caseid == req.info.caseid); if (_count > 0) throw new Exception("已存在此图斑的处理数据"); //处理状态:默认 1 办理中 int? handle_status_id = 1; string handle_status_name = string.Empty; if (handle_status_id != null) { handle_status_name = handleStatusList.Where(c => c.id == handle_status_id).FirstOrDefault().name; } List filesList = GetFilesList(req, new List(), user, model); //查询审核流程,处理后,审核状态设置为第一个节点 var verifyModel = uwo.DroneFlowInstance.AsQueryable().Where(c => c.instance_name == "CaseVerify" && c.status == 0).OrderBy(c => c.sort, OrderByType.Asc).First(); if (verifyModel == null) throw new Exception("找不到流程"); //新增数据 uwo.DroneCaseDeal.Insert(model); //新增数据 uwo.DroneFiles.InsertRange(filesList); if (req.is_temp_save == null || req.is_temp_save == 0) { //更新案件状态 uwo.DroneCaseInfo.UpdateSetColumnsTrue (c => new DroneCaseInfo { handle_status_id = handle_status_id, handle_status_name = handle_status_name, is_illegal = req.is_illegal, deal_userid = user.Id.ToString(), deal_username = user.Name, deal_time = model.createtime, verifystatus = verifyModel.sort, //审核状态 verifystatusname = verifyModel.name //审核状态名称 }, c => c.Id == model.caseid); AddDroneCaseLog(new DroneCaseOperationLog { request_data = req.ToJson(), description = "AddDroneCaseDeal", caseid = model.caseid, createuserid = user.Id.ToString(), createusername = user.Name }); } if (req.is_temp_save == null || req.is_temp_save == 0) { //发送websocket消息 //SendWebSocketMessage("newdeal"); } var flag = uwo.Commit(); if (flag) { response.Result = true; response.Message = "处理成功"; } else { response.Result = false; response.Message = "处理失败"; } return response; } } /// /// 更新案件处理数据 /// /// /// public Response UpdateDroneCaseDeal(AddOrUpdateDroneCaseDealReq req) { var response = new Response(); var user = _auth.GetCurrentUser().User; using (var uwo = UnitWork.CreateContext()) { var model = req.info; var caseModel = uwo.DroneCaseInfo.GetFirst(c => c.Id == model.caseid); //处理状态:默认 1 办理中 int? handle_status_id = 1; string handle_status_name = string.Empty; if (handle_status_id != null) { handle_status_name = handleStatusList.Where(c => c.id == handle_status_id).FirstOrDefault().name; } var existFiles = uwo.DroneFiles.GetList(c => c.relid == req.info.Id && c.tablename == "drone_case_deal"); var filesList = GetFilesList(req, existFiles, user, model); //查询审核流程,处理后,审核状态设置为第一个节点 var verifyModel = uwo.DroneFlowInstance.AsQueryable().Where(c => c.instance_name == "CaseVerify" && c.status == 0).OrderBy(c => c.sort, OrderByType.Asc).First(); if (verifyModel == null) throw new Exception("找不到流程"); //更新数据 if (caseModel.handle_status_id == 0) { //如果案件未处理,处理的时候更新时间和用户 model.createtime = DateTime.Now; model.createuser = user.Id.ToString(); model.createusername = user.Name; //办理人、办理时间 model.transact_time = DateTime.Now; model.transactor_id = user.Id.ToString(); model.transactor_name = user.Name; } uwo.DroneCaseDeal.Update(model); uwo.DroneFiles.InsertRange(filesList); //是否暂存,如果不是暂存,就要设置案件的流程 if (req.is_temp_save == null || req.is_temp_save == 0) { //更新案件状态 uwo.DroneCaseInfo.AsUpdateable() .SetColumns(c => new DroneCaseInfo { handle_status_id = handle_status_id, handle_status_name = handle_status_name, is_illegal = req.is_illegal, deal_time = model.createtime, deal_userid = model.createuser, deal_username = model.createusername, }) .SetColumnsIF(caseModel.handle_status_id == 0, c => new DroneCaseInfo { verifystatus = verifyModel.sort, //审核状态 verifystatusname = verifyModel.name, //审核状态名称 }) .Where(c => c.Id == model.caseid) .ExecuteCommand(); //AddDroneCaseLog(db, new Sugar_Drone_case_operation_log { request_data = req.ToJson(), description = "UpdateDroneCaseDeal", caseid = model.caseid, createuserid = user.Id, createusername = user.Name }); } //是否暂存,如果不是暂存,就要发websocket消息 if ((req.is_temp_save == null || req.is_temp_save == 0) && caseModel.handle_status_id == 0) { //发送websocket消息 //SendWebSocketMessage("newdeal"); } var flag = uwo.Commit(); if (flag) { response.Result = true; response.Message = "处理成功"; } else { response.Result = false; response.Message = "处理失败"; } return response; } } /// /// 处理查询 /// /// /// public PageInfo> LoadDroneCaseDeal(QueryDroneCaseDealReq req) { var user = _auth.GetCurrentUser().User; //总条数 int totalNumber = 0; //关联查询 var list = client.Queryable((c, d) => new JoinQueryInfos( JoinType.Left, c.caseid == d.Id )).Where((c, d) => (c.is_delete == null || c.is_delete == 0) && (d.is_delete == null || d.is_delete == 0) && d.Id != null) //是否创建人过滤 .WhereIF(req.is_report == 1, (c, d) => c.createuser == user.Id.ToString()) //开始时间 .WhereIF(req.start_time != null, (c, d) => c.createtime > req.start_time) //结束时间 .WhereIF(req.end_time != null, (c, d) => c.createtime < req.end_time) //排序 .OrderBy(c => c.createtime, OrderByType.Desc) //分页 .ToPageList(req.page, req.limit, ref totalNumber); return new PageInfo> { Items = list, Total = totalNumber }; } /// /// 获取处理详情 /// /// /// /// public AddOrUpdateDroneCaseDealReq GetDroneCaseDeal(string id, string caseid) { AddOrUpdateDroneCaseDealReq res = new AddOrUpdateDroneCaseDealReq(); res.Init(); //详情 var info = client.Queryable() .WhereIF(!string.IsNullOrEmpty(id), c => c.Id == id) .WhereIF(!string.IsNullOrEmpty(caseid), c => c.caseid == caseid) .Where(c => c.is_delete == 0 || c.is_delete == null) .OrderBy(c => c.createtime, OrderByType.Desc) .First(); if (info == null) { return res; } //文件 var fileList = client.Queryable().Where(c => c.relid == info.Id && (c.is_delete == null || c.is_delete == 0) && c.tablename == "drone_case_deal").ToList(); //图片 List picInfoList = fileList.Where(c => c.type == 0 && (c.tag == null || c.tag == "")).Select(c => new PicInfo { FilePath = c.path, Latitude = c.latitude, Longitude = c.longitude, Angle = c.angle, }).ToList(); //整改后照片 List afterPicList = fileList.Where(c => c.type == 0 && c.tag == afterPicTag).Select(c => new PicInfo { FilePath = c.path, Latitude = c.latitude, Longitude = c.longitude, Angle = c.angle, }).ToList(); //合法材料 List evidenceFileList = fileList.Where(c => c.type == 0 && c.tag == EvidenceFileTag).Select(c => new PicInfo { FilePath = c.path, Latitude = c.latitude, Longitude = c.longitude, Angle = c.angle, }).ToList(); //处罚通知书 var punish_pic_list = fileList.Where(c => c.type == 0 && c.tag == punishPicTag).GroupBy(c => c.path).Select(c => c.Key).ToList(); //交款通知书 var payment_pic_list = fileList.Where(c => c.type == 0 && c.tag == paymentPicTag).GroupBy(c => c.path).Select(c => c.Key).ToList(); //政府同意完善手续证明 var agree_checkout_pic_list = fileList.Where(c => c.type == 0 && c.tag == agreeCheckoutPicTag).GroupBy(c => c.path).Select(c => c.Key).ToList(); //办理手续 var checkout_pic_list = fileList.Where(c => c.type == 0 && c.tag == checkoutPicTag).GroupBy(c => c.path).Select(c => c.Key).ToList(); //勘测定界图 var boundary_pic_list = fileList.Where(c => c.type == 0 && c.tag == boundaryPicTag).GroupBy(c => c.path).Select(c => c.Key).ToList(); //视频 var video_list = fileList.Where(c => c.type == 1 && (c.tag == null || c.tag == "")).GroupBy(c => c.path).Select(c => c.Key).ToList(); var remove_video_list = fileList.Where(c => c.type == 1 && (c.tag == "remove")).GroupBy(c => c.path).Select(c => c.Key).ToList(); //详情 res.info = info; //照片 res.pic_info_list = picInfoList; //整改后照片 res.after_pic_list = afterPicList; //合法材料 res.evidence_file_list = evidenceFileList; //处罚通知书 res.punish_pic_list = punish_pic_list; //交款通知书 res.payment_pic_list = payment_pic_list; //政府同意完善手续证明 res.agree_checkout_pic_list = agree_checkout_pic_list; //办理手续 res.checkout_pic_list = checkout_pic_list; //勘测定界图 res.boundary_pic_list = boundary_pic_list; //视频 res.video_list = video_list; //拆除视频 res.remove_video_list = remove_video_list; var caseModel = client.Queryable() .Where(c => c.Id == info.caseid) .First(); res.handle_status_id = caseModel.handle_status_id.Value; res.is_illegal = caseModel.is_illegal; var current = _auth.GetCurrentUser(); var roleList = current.Roles; //判断是否有审核权限 var roles = roleList.Select(c => c.Id.ToString()).ToList(); //查询用户角色绑定的流程有哪些 var flowList = client.Queryable().Where(c => roles.Contains(c.SecondId) && c.Key == Define.FLOW_ROLE).Select(c => c.FirstId).ToList(); //查询用户绑定的流程Sort,用于判断用户是否有权限来审核 var currentFlowList = client.Queryable().Where(c => flowList.Contains(c.Id) && c.status == 0 && c.instance_name == "CaseVerify").Select(c => c.sort).ToList(); //审核状态和处理状态 var verifystatus = caseModel.verifystatus; var handle_status_id = caseModel.handle_status_id; //审核 if (handle_status_id == 1) { //当前角色绑定的流程 var count = currentFlowList.Where(c => c == verifystatus).Count(); var hasVerifyRole = roleList.Where(c => c.Name == "案件审核").Count(); if (count > 0 && hasVerifyRole > 0) { res.can_verify = 1; } } return res; } /// /// 删除处理 /// /// /// public Response DeleteDroneCaseDeal(string[] ids) { var respone = new Response(); var flag = client.Updateable() .SetColumns(c => new DroneCaseDeal { is_delete = 1 }) .Where(c => ids.Contains(c.Id)) .ExecuteCommand(); if (flag > 0) { respone.Result = true; respone.Message = "删除成功"; } else { respone.Result = false; respone.Message = "删除失败"; } return respone; } #endregion #region 案件审核流程相关 /// /// 查询流程 /// /// /// public PageInfo> LoadDroneFlowInstance(QueryDroneFlowInstanceReq req) { int total = 0; var list = client.Queryable().WhereIF(!string.IsNullOrEmpty(req.key), c => c.name.Contains(req.key) || c.instance_name.Contains(req.key)) .OrderBy(c => c.createtime, OrderByType.Desc) .ToPageList(req.page, req.limit, ref total); return new PageInfo> { Items = list, Total = total }; } /// /// 获取流程详情 /// /// /// public DroneFlowInstance GetDroneFlowInstance(string id) { return client.Queryable().Where(c => c.Id == id).First(); } /// /// 新增或修改流程 /// /// /// public Response AddDroneFlowInstance([FromBody] DroneFlowInstance model) { var response = new Response(); var user = _auth.GetCurrentUser().User; model.Id = SnowFlakeSingle.Instance.getID().ToString(); model.createtime = DateTime.Now; model.createuserid = user.Id.ToString(); model.createusername = user.Name; var flag = client.Insertable(model).ExecuteCommand(); if (flag > 0) { response.Result = true; response.Message = "添加成功"; } else { response.Result = false; response.Message = "添加失败"; } return response; } /// /// 新增或修改流程 /// /// /// public Response UpdateDroneFlowInstance([FromBody] DroneFlowInstance model) { var response = new Response(); var user = _auth.GetCurrentUser().User; model.updatetime = DateTime.Now; model.updateuserid = user.Id.ToString(); model.updateusername = user.Name; var flag = client.Updateable(model).ExecuteCommand(); if (flag > 0) { response.Result = true; response.Message = "修改成功"; } else { response.Result = false; response.Message = "修改失败"; } return response; } /// /// 删除流程 /// /// /// public Response DeleteDroneFlowInstance(string[] ids) { var response = new Response(); var flag = client.Deleteable().Where(c => ids.Contains(c.Id)).ExecuteCommand(); if (flag > 0) { response.Result = true; response.Message = "删除成功"; } else { response.Result = false; response.Message = "删除失败"; } return response; } /// /// 停用流程 /// /// /// public Response BlockUpDroneFlowInstance(string[] ids) { var response = new Response(); var flag = client.Updateable().SetColumns(c => new DroneFlowInstance() { status = 1 }).Where(c => ids.Contains(c.Id)).ExecuteCommand(); if (flag > 0) { response.Result = true; response.Message = "设置成功"; } else { response.Result = false; response.Message = "设置失败"; } return response; } /// /// 流程角色绑定 /// /// /// public Response DroneFlowInstanceBindRole(AddOrUpdateDroneFlowBindRoleReq req) { var response = new Response(); List list = new List(); //遍历角色 foreach (var roleid in req.roleids) { DroneRelevance relModel = new DroneRelevance(); relModel.Id = SnowFlakeSingle.Instance.getID().ToString(); relModel.Description = ""; relModel.Key = Define.FLOW_ROLE; relModel.Status = 0; relModel.OperateTime = DateTime.Now; relModel.OperatorId = ""; relModel.FirstId = req.id; relModel.SecondId = roleid; relModel.ThirdId = ""; relModel.ExtendInfo = ""; list.Add(relModel); } using (var uwo = UnitWork.CreateContext()) { //先删除绑定关系 uwo.DroneRelevance.Delete(c => c.FirstId == req.id && c.Key == Define.FLOW_ROLE); //再添加绑定关系 uwo.DroneRelevance.InsertRange(list); var flag = uwo.Commit(); if (flag) { response.Result = true; response.Message = "绑定成功"; } else { response.Result = false; response.Message = "绑定失败"; } return response; } } /// /// 获取流程角色绑定的数据 /// /// /// public List LoadDroneFlowRoleBindData(string id) { var list = client.Queryable() .Where(c => c.FirstId == id && c.Key == Define.FLOW_ROLE) .Select(c => c.SecondId) .ToList(); return list; } /// /// 查询待审核 /// /// public PageInfo> LoadWaitToVerifyCaseList([FromQuery] QueryCaseInfoListReq req) { var currentUser = _auth.GetCurrentUser(); var user = currentUser.User; var roles = currentUser.Roles.Select(c => c.Id.ToString()).ToList(); //查询用户角色绑定的流程有哪些 var flowList = client.Queryable().Where(c => roles.Contains(c.SecondId) && c.Key == Define.FLOW_ROLE).Select(c => c.FirstId).ToList(); //查询用户绑定的流程Sort var flowSorts = client.Queryable().Where(c => flowList.Contains(c.Id) && c.status == 0 && c.instance_name == "CaseVerify").Select(c => c.sort).ToList(); int total = 0; req.is_intact = 1; //根据组织机构过滤 req.is_dealer = 1; //案件处理状态为1:待审核 req.handle_status_id = 1; var list = QueryCaseInfoList((SqlSugarClient)client, req, user, 0) //通过用户角色权限过滤,根据角色绑定的流程过滤 //.Where(c => flowSorts.Contains(c.verifystatus)) //排序 .OrderBy(c => c.deal_time, OrderByType.Desc) //分页查询 .ToPageList(req.page, req.limit, ref total); var pageInfo = new PageInfo> { Items = list, Total = total }; return pageInfo; } /// /// 撤回案件 /// public Response RecallCase(string id) { var response = new Response(); DroneCaseInfo caseInfo = client.Queryable().Where(c => c.Id == id).First(); if (null == caseInfo) { throw new Exception("未获取到图斑信息!"); } if (caseInfo.is_checked == 1 || !string.IsNullOrEmpty(caseInfo.verifyuser)) { response.Message = "不可撤回!"; response.Result = false; return response; } var handleStatusName = handleStatusList.Where(c => c.id == 0 && c.is_examine == 1).FirstOrDefault().name; // 撤回案件,设置处理状态为0 var flag = client.Updateable().SetColumns(c => new DroneCaseInfo() { handle_status_id = 0, handle_status_name = handleStatusName }).Where(c => c.Id == id).ExecuteCommand(); var user = _auth.GetCurrentUser().User; AddDroneCaseLog(new DroneCaseOperationLog { request_data = id, description = "RecallCase", caseid = caseInfo.Id, createuserid = user.Id.ToString(), createusername = user.Name }); if (flag > 0) { response.Result = true; response.Message = "撤回成功!"; } else { response.Result = false; response.Message = "撤回失败"; } return response; } /// /// 撤回案件到待核查 /// /// /// public Response RecallCaseToUnCheck(string id) { var response = new Response(); var user = _auth.GetCurrentUser().User; DroneCaseInfo caseInfo = client.Queryable().Where(c => c.Id == id).First(); if (null == caseInfo) { throw new Exception("未获取到图斑信息!"); } if ((caseInfo.handle_status_id == 0 && caseInfo.is_examine == 1 && caseInfo.examiner_id == user.Id.ToString()) || (caseInfo.handle_status_id == 1 && caseInfo.is_illegal == 2 && (caseInfo.is_checked == 0 || caseInfo.is_checked == null) && caseInfo.examiner_id == user.Id.ToString()) ) { var handleStatusName = handleStatusList.Where(c => c.id == 0 && c.is_examine == 0).FirstOrDefault().name; // 撤回案件,设置处理状态为0 var flag = client.Updateable().SetColumns(c => new DroneCaseInfo() { handle_status_id = 0, handle_status_name = handleStatusName, is_examine = 0, is_checked = 0, }).Where(c => c.Id == id).ExecuteCommand(); AddDroneCaseLog(new DroneCaseOperationLog { request_data = id, description = "RecallCaseToUnCheck", caseid = caseInfo.Id, createuserid = user.Id.ToString(), createusername = user.Name }); if (flag > 0) { response.Result = true; response.Message = "撤回成功!"; } else { response.Result = false; response.Message = "撤回失败"; } return response; } else { throw new Exception("不可撤回!"); } } /// /// 撤回案件到待办理 /// /// /// public Response RecallCaseToUnDeal(string id) { var response = new Response(); var user = _auth.GetCurrentUser().User; DroneCaseInfo caseInfo = client.Queryable().Where(c => c.Id == id).First(); if (null == caseInfo) { throw new Exception("未获取到图斑信息!"); } if (caseInfo.is_checked == 1 || caseInfo.deal_userid != user.Id.ToString()) { throw new Exception("不可撤回!"); } var handleStatusName = handleStatusList.Where(c => c.id == 0 && c.is_examine == 1).FirstOrDefault().name; // 撤回案件,设置处理状态为0 var flag = client.Updateable().SetColumns(c => new DroneCaseInfo() { handle_status_id = 0, handle_status_name = handleStatusName, }).Where(c => c.Id == id).ExecuteCommand(); AddDroneCaseLog(new DroneCaseOperationLog { request_data = id, description = "RecallCaseToUnDeal", caseid = caseInfo.Id, createuserid = user.Id.ToString(), createusername = user.Name }); if (flag > 0) { response.Result = true; response.Message = "撤回成功!"; } else { response.Result = false; response.Message = "撤回失败"; } return response; } /// /// 设置案件是否已查看 /// /// /// public Response SetCaseChecked(string id) { var response = new Response(); var flag = client.Updateable().SetColumns(c => new DroneCaseInfo() { is_checked = 1 }).Where(c => c.Id == id).ExecuteCommand(); if (flag > 0) { response.Result = true; response.Message = "设置查看成功"; } else { response.Result = false; response.Message = "设置查看失败"; } return response; } /// /// 案件退回 /// /// /// public Response DrawbackCase(DrawBackCaseReq req) { var response = new Response(); string id = req.id; string drawbackReason = req.drawbackReason; string drawback_type = req.drawback_type; DroneCaseInfo caseInfo = client.Queryable().Where(c => c.Id == id).First(); if (null == caseInfo) { throw new Exception("未获取到图斑信息!"); } if (string.IsNullOrEmpty(caseInfo.deal_userid)) { response.Message = "此图斑未办理,无需退回。"; response.Result = false; return response; } // 发送通知给各办案人员/案件处理人 Dictionary receiverDic = new Dictionary { { caseInfo.deal_userid, caseInfo.deal_username } }; var caseVerifyRecord = client.Queryable().Where(c => c.caseid == id).ToList() .GroupBy(c => new { c.createuserid, c.createusername }) .Select(c => new { c.Key.createuserid, c.Key.createusername }).ToList(); foreach (var item in caseVerifyRecord) { var _count = receiverDic.Where(c => c.Key == item.createuserid).Count(); if (_count > 0) continue; receiverDic.Add(item.createuserid, item.createusername); } var currentUser = _auth.GetCurrentUser().User; DroneMessage msg = new DroneMessage() { Id = Guid.NewGuid().ToString(), createusername = currentUser.Name, createuser = currentUser.Id.ToString(), createtime = DateTime.Now, is_delete = 0, msg_title = "退回图斑,编号:" + caseInfo.case_no, msg_content = drawbackReason, msg_type = 1, case_no = caseInfo.case_no, caseid = caseInfo.Id, }; List msgRelList = new List(); foreach (var item in receiverDic.Keys) { msgRelList.Add(new DroneMessageRelevance() { Id = Guid.NewGuid().ToString(), createtime = DateTime.Now, createuser = currentUser.Id.ToString(), is_delete = 0, is_read = 0, messageid = msg.Id, userid = item, username = receiverDic[item] }); } // 存储通知数据 var transFlag = client.AsTenant().UseTran(() => { int drawbackcount = caseInfo.drawbackcount == null || caseInfo.drawbackcount == 0 ? 1 : caseInfo.drawbackcount.Value + 1; // 退回案件,重置相应列的值 client.Updateable().SetColumns(c => new DroneCaseInfo() { handle_status_id = 0, //案件窗体 handle_status_name = "待核查", //案件状态 is_examine = 0, //是否核查 verifyuserid = null, //审核人 verifyuser = null, //审核人 verifytime = null, //审核时间 verifystatus = null, //审核状态 verifystatusname = null, //审核状态 is_checked = 0, //是否查看 is_drawback = 1, //是否退回 drawbackcount = drawbackcount, back_to_userid = caseInfo.deal_userid, //退回给谁 back_to_username = caseInfo.deal_username, //退回给谁 drawback_type = drawback_type, //退回给谁 drawback_description = drawbackReason, //退回给谁 }).Where(c => c.Id == id).ExecuteCommand(); client.Insertable(msg).ExecuteCommand(); client.Insertable(msgRelList).ExecuteCommand(); }); var user = _auth.GetCurrentUser().User; AddDroneCaseLog(new DroneCaseOperationLog { request_data = id, description = "DrawbackCase", caseid = caseInfo.Id, createuserid = user.Id.ToString(), createusername = user.Name }); if (transFlag.IsSuccess) { response.Result = true; response.Message = "退回成功"; } else { response.Result = false; response.Message = "退回失败"; } return response; } /// /// 管理员审核功能 /// /// /// public Response VerfiyCaseData(string id) { var response = new Response(); var currentUser = _auth.GetCurrentUser(); var user = currentUser.User; var roles = currentUser.Roles.Select(c => c.Id.ToString()).ToList(); //查询用户角色绑定的流程有哪些 var flowList = client.Queryable().Where(c => roles.Contains(c.SecondId) && c.Key == Define.FLOW_ROLE).Select(c => c.FirstId).ToList(); //查询用户绑定的流程Sort,用于判断用户是否有权限来审核 var currentFlowList = client.Queryable().Where(c => flowList.Contains(c.Id) && c.status == 0 && c.instance_name == "CaseVerify").Select(c => c.sort).ToList(); //查询 流程Sort var flowSorts = client.Queryable().Where(c => c.status == 0 && c.instance_name == "CaseVerify").OrderBy(c => c.sort, OrderByType.Asc).ToList(); //最后一个节点的编号 var lastNode = flowSorts.Last().sort; //查询案件 var caseInfo = client.Queryable().Where(c => c.Id == id).First(); if (caseInfo.verifystatus == lastNode) throw new Exception("已经审核完成,不能重复审核"); if (caseInfo.handle_status_id != 1) throw new Exception("此数据不是待审核数据,无法进行审核"); //是否最后一个节点 bool isLastNode = false; //下一个节点的状态和名称 int? nextNode = 0; string nextNodeName = string.Empty; //如果审核状态是空的,直接默认下个节点 if (caseInfo.verifystatus == null) { caseInfo.verifystatus = flowSorts[0].sort; caseInfo.verifystatusname = flowSorts[0].name; nextNode = flowSorts[1].sort; nextNodeName = flowSorts[1].name; } else { //遍历寻找下个节点 for (int i = 0; i < flowSorts.Count; i++) { var item = flowSorts[i]; if (caseInfo.verifystatus.Value >= item.sort) continue; //下个节点的状态和名称 nextNode = item.sort; nextNodeName = item.name; //判断是否最后一个节点 if (i == (flowSorts.Count - 1)) { isLastNode = true; } break; } } if (user.Account != Define.SYSTEM_USERNAME) { //判断是否有权限审核此数据 var _count = currentFlowList.Where(c => c == caseInfo.verifystatus).Count(); //没有权限审核此数据 if (_count == 0) throw new Exception("用户没有权限审核此数据"); } //案件审核记录 var record = new DroneCaseVerifyrecord() { Id = SnowFlakeSingle.instance.getID().ToString(), description = $"【{user.Name}】【{DateTime.Now}】审核了【{caseInfo.case_no}】案件,由【{caseInfo.verifystatusname}】到【{nextNodeName}】", status = caseInfo.verifystatus, statusname = caseInfo.verifystatusname, nextstatus = nextNode, nextstatusname = nextNodeName, createuserid = user.Id.ToString(), createusername = user.Name, createtime = DateTime.Now, caseid = caseInfo.Id }; var transFlag = client.AsTenant().UseTran(() => { var handleStatusName = handleStatusList.Where(c => c.id == 2).FirstOrDefault().name; //更新案件的审核状态 client.Updateable().SetColumns(c => new DroneCaseInfo() { //审核状态 verifystatus = nextNode, verifystatusname = nextNodeName, //审核时间 verifytime = DateTime.Now, //审核人 verifyuserid = user.Id.ToString(), verifyuser = user.Name }) .SetColumnsIF(isLastNode, c => new DroneCaseInfo() { //如果是最后一个节点的话,更新案件处理状态为已办结 handle_status_id = 2, handle_status_name = handleStatusName }) .Where(c => c.Id == id).ExecuteCommand(); //添加审核记录 client.Insertable(record).ExecuteCommand(); }); AddDroneCaseLog(new DroneCaseOperationLog { request_data = id, description = "VerfiyCaseData", caseid = caseInfo.Id, createuserid = user.Id.ToString(), createusername = user.Name }); if (transFlag.IsSuccess) { response.Result = true; response.Message = "审核成功"; } else { response.Result = false; response.Message = "审核失败"; } return response; } /// /// 案件核销 /// /// /// public Response VerificatCase(string[] ids) { var response = new Response(); var user = _auth.GetCurrentUser().User; var flag = client.Updateable().SetColumns(c => new DroneCaseInfo { is_verification = 1, verification_userid = user.Id.ToString(), verification_username = user.Name, verification_time = DateTime.Now }).Where(c => ids.Contains(c.Id)).ExecuteCommand(); //添加操作记录 AddDroneCaseLog(new DroneCaseOperationLog { request_data = JsonConvert.SerializeObject(ids), description = "VerificatCase", caseid = ids[0], createuserid = user.Id.ToString(), createusername = user.Name }); if (flag > 0) { response.Result = true; response.Message = "核销成功"; } else { response.Result = false; response.Message = "核销异常"; } return response; } /// /// 暂结案件 /// /// /// public Response TentativeCase(string id) { var response = new Response(); var user = _auth.GetCurrentUser().User; //待审核步骤:暂结的案件流转到正常审核步骤 int? handleStatusId = 1; string handleStatusName = handleStatusList.Where(c => c.id == handleStatusId).FirstOrDefault().name; var flag = client.Updateable().SetColumns(c => new DroneCaseInfo { is_tentative_complete = 1, tentative_userid = user.Id.ToString(), tentative_username = user.Name, tentative_time = DateTime.Now, handle_status_id = handleStatusId, handle_status_name = handleStatusName }).Where(c => c.Id == id).ExecuteCommand(); //添加操作记录 AddDroneCaseLog(new DroneCaseOperationLog { request_data = id, description = "TentativeCase", caseid = id, createuserid = user.Id.ToString(), createusername = user.Name }); if (flag > 0) { response.Result = true; response.Message = "核销成功"; } else { response.Result = false; response.Message = "核销异常"; } return response; } #endregion #region 统计 /// /// APP案件数量查询 /// /// public CaseProcessStatData GetCaseProcessStatData(QueryCaseProcessStatDataReq req) { var current = _auth.GetCurrentUser(); var user = current.User; var roles = current.Roles.Select(c => c.Id.ToString()).ToList(); CaseProcessStatData data = new CaseProcessStatData { // 核查定性 proofread_confirm_new = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 0, is_examine = 0, is_drawback = 0 }, user).Count(), proofread_confirm_drawback = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 0, is_examine = 0, is_drawback = 1 }, user).Count(), // 处置办理 handle_demolish = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 0, is_examine = 1, is_illegal = 1, measure_name = "拟拆除" }, user).Count(), handle_detain = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 0, is_examine = 1, is_illegal = 1, measure_name = "查处" }, user).Count(), handle_perfection = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 0, is_examine = 1, is_illegal = 1, measure_name = "拟完善手续" }, user).Count(), handle_legal = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 0, is_examine = 1, is_illegal = 0 }, user).Count(), // 监督审核 audit_demolish = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 1, is_illegal = 1, measure_name = "拟拆除", is_verify_filter = req.is_verify_filter }, user, roles: roles).Count(), audit_detain = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 1, is_illegal = 1, measure_name = "查处", is_verify_filter = req.is_verify_filter }, user, roles: roles).Count(), audit_perfection = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 1, is_illegal = 1, measure_name = "拟完善手续", is_verify_filter = req.is_verify_filter }, user, roles: roles).Count(), audit_legal = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 1, is_illegal = 0, is_verify_filter = req.is_verify_filter }, user, roles: roles).Count(), audit_fakeChange = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 1, is_illegal = 2, is_verify_filter = req.is_verify_filter }, user, roles: roles).Count(), // 归档 archive_demolish = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 2, is_illegal = 1, measure_name = "拟拆除" }, user).Count(), archive_detain = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 2, is_illegal = 1, measure_name = "查处" }, user).Count(), archive_perfection = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 2, is_illegal = 1, measure_name = "拟完善手续" }, user).Count(), archive_legal = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 2, is_illegal = 0 }, user).Count(), archive_fakeChange = QueryCaseInfoList((SqlSugarClient)client, new QueryCaseInfoListReq { is_intact = 1, is_dealer = 1, handle_status_id = 2, is_illegal = 2 }, user).Count() }; return data; } #endregion #region 案件专题 /// /// 专题分页 /// /// /// public async Task>> LoadCaseTopic(PageReq pageReq) { RefAsync total = 0; var list = await base.Repository.AsSugarClient().Queryable() .WhereIF(!string.IsNullOrEmpty(pageReq.key), a => a.ItemName.Contains(pageReq.key)) .Where(a => a.ItemCode == Define.DRONE_CASE_TOPIC) .Select(a => new TopicResponse { TopicId = a.ItemDetailId, TopicName = a.ItemName, CaseTypes = SqlFunc.Subqueryable() .LeftJoin((r, d) => r.SecondId == d.ItemDetailId) .Where((r, d) => r.FirstId == a.ItemDetailId && r.Key == Define.TOPIC_CASETYPE) .SelectStringJoin((r, d) => d.ItemName, ","), Roles = SqlFunc.Subqueryable() .LeftJoin((r, role) => r.SecondId == role.Id.ToString()) .Where((r, role) => r.FirstId == a.ItemDetailId && r.Key == Define.TOPIC_ROLE) .SelectStringJoin((r, role) => role.Name, ","), }) .ToPageListAsync(pageReq.page, pageReq.limit, total); return new PageInfo> { Items = list, Total = total }; } public async Task> AddTopicCaseType(AlloDroneTopic alloDroneTopic) { var response = new Response(); if (alloDroneTopic.RelevanceIds.Count > 0) { using (var uwo = base.UnitWork.CreateContext()) { await uwo.DroneRelevance.DeleteAsync(a => a.Key == Define.TOPIC_CASETYPE && a.FirstId == alloDroneTopic.TopicId); var list = alloDroneTopic.RelevanceIds.Select(a => new DroneRelevance { Id = SnowFlakeSingle.Instance.getID().ToString(), Description = "", Key = Define.TOPIC_CASETYPE, Status = 0, OperateTime = DateTime.Now, OperatorId = "", FirstId = alloDroneTopic.TopicId, SecondId = a }).ToList(); await uwo.DroneRelevance.InsertRangeAsync(list); var flag = uwo.Commit(); if (flag) { response.Result = true; response.Message = "分配成功"; } else { response.Result = false; response.Message = "分配失败"; } } } else { response.Result = false; response.Message = "暂无图斑类型数据"; } return response; } public async Task> AddTopicRole(AlloDroneTopic alloDroneTopic) { var response = new Response(); if (alloDroneTopic.RelevanceIds.Count > 0) { using (var uwo = base.UnitWork.CreateContext()) { await uwo.DroneRelevance.DeleteAsync(a => a.Key == Define.TOPIC_ROLE && a.FirstId == alloDroneTopic.TopicId); var list = alloDroneTopic.RelevanceIds.Select(a => new DroneRelevance { Id = SnowFlakeSingle.Instance.getID().ToString(), Description = "", Key = Define.TOPIC_ROLE, Status = 0, OperateTime = DateTime.Now, OperatorId = "", FirstId = alloDroneTopic.TopicId, SecondId = a }).ToList(); await uwo.DroneRelevance.InsertRangeAsync(list); var flag = uwo.Commit(); if (flag) { response.Result = true; response.Message = "分配成功"; } else { response.Result = false; response.Message = "分配失败"; } } } else { response.Result = false; response.Message = "暂无角色数据"; } return response; } /// /// 某专题对应已分配资源 /// /// /// TopicCaseType/TopicRole /// public async Task> LoadTopicRelevance(string topicId, string code) { return await client.Queryable().Where(a => a.Key == code && a.FirstId == topicId).Select(a => a.SecondId).ToListAsync(); } #endregion } }