12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091 |
- using Abp;
- using DataTransmission.Joint;
- using Hotline.Settings;
- using Mapster;
- using Mapster.Utils;
- using Microsoft.VisualBasic.ApplicationServices;
- using SnapshotWinFormsApp.Application.Dtos;
- using SnapshotWinFormsApp.Application.Interfaces;
- using SnapshotWinFormsApp.Entities.NewHotline;
- using SnapshotWinFormsApp.Entities.OldHotline;
- using SnapshotWinFormsApp.Repository;
- using SnapshotWinFormsApp.Repository.Enum;
- using SnapshotWinFormsApp.Repository.Interfaces;
- using SnapshotWinFormsApp.Tools;
- using SqlSugar;
- using SqlSugar.Extensions;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Linq;
- using System.Reflection.Metadata.Ecma335;
- using System.Text;
- using System.Threading.Tasks;
- using static System.Net.WebRequestMethods;
- using Order = SnapshotWinFormsApp.Entities.NewHotline.Order;
- using Workflow = SnapshotWinFormsApp.Entities.NewHotline.Workflow;
- using User = SnapshotWinFormsApp.Entities.NewHotline.User;
- using Abp.Extensions;
- using DataTransmission.Enum;
- using Kv = SnapshotWinFormsApp.Entities.NewHotline.Kv;
- using System.Diagnostics;
- using Microsoft.VisualBasic.Logging;
- using System.Drawing.Drawing2D;
- using System.Linq.Dynamic.Core.Tokenizer;
- namespace SnapshotWinFormsApp.Application;
- [Description("随手拍工单")]
- public class OrderSnapshotApplication : ImportApplicationBase<OrderFullEntity, Order>, IImportApplication
- {
- private readonly ITargetRepository<OrderSnapshot> _orderSnapshotRepo;
- private readonly ISourceRepository<Flow03_SearchEntity> _oldOrderRepo;
- private DataTransmission.Entity.Config config = new DataTransmission.Entity.Config();
- private readonly ITargetRepository<Citizen> _snapshotUserInfoRepo;
- private readonly ISelectRepository<Industry> _industryRepo;
- private readonly List<Industry> industries;
- private readonly ITargetRepository<CommunityInfo> _communityInfoRepo;
- private readonly List<CommunityInfo> communityInfos;
- private readonly ISelectRepository<User> _userRepo;
- private List<User> Users;
- private readonly ISelectRepository<SystemDicData> _systemDicDataRepo;
- private readonly List<SystemDicData> snapshotOrderLabels;
- private readonly List<SystemDicData> VisitSatisfaction;
- private readonly List<SystemDicData> DissatisfiedReason;
- private IList<ThirdAccount> ThirdAccounts;
- private readonly ISelectRepository<SelectOrderNo> OrderRepository;
- private readonly IList<SelectOrderNo> OrderNos;
- private readonly CreateInstanceInDto _inDto;
- private readonly IList<SystemOrganize> Organizers;
- private readonly ISourceRepository<Flow_Transfer01_RunBackups> _flowTransfer01RunBackupsRepository;
- private readonly ISelectRepository<WorkflowModule> _workflowModuleRepository;
- private readonly IList<WorkflowModule> WorkflowModules;
- private readonly ITargetRepository<WorkflowStep> _workflowStepRepository;
- private readonly ITargetRepository<Workflow> _workflowRepository;
- private readonly ITargetRepository<WorkflowTrace> _workflowTraceRepository;
- private readonly ISourceRepository<Flow16_PubIdeaEntity> _flow16PubIdeaRepository;
- private readonly ITargetRepository<OrderPublish> _orderPublishRepository;
- private readonly ISourceRepository<Flow18_AppraiseListEntity> _flow18AppraiseListRepository;
- private readonly ITargetRepository<OrderVisit> _orderVisitRepository;
- private readonly ITargetRepository<OrderVisitDetail> _orderVisitDetailRepository;
- private readonly ISourceRepository<Flow11_PostponeEntity> _flow11PostponeRepository;
- private readonly ITargetRepository<OrderDelay> _orderDelayRepository;
- private readonly ISelectRepository<IndustryCase> _industryCaseRepository;
- private readonly IList<IndustryCase> IndustryCase;
- private readonly ITargetRepository<SnapshotPointsRecord> _pointsRecordRepository;
- private readonly SnapshotUserInfoApplication _snapshotUserInfoApplication;
- public OrderSnapshotApplication(CreateInstanceInDto inDto) : base(inDto)
- {
- _inDto = inDto;
- StringConsts.BlukCount = 50;
- _orderSnapshotRepo = new TargetRepository<OrderSnapshot>(inDto);
- _oldOrderRepo = new SourceRepository<Flow03_SearchEntity>(inDto);
- _snapshotUserInfoRepo = new TargetRepository<Citizen>(inDto);
- _industryRepo = new SelectRepository<Industry>(inDto);
- industries = _industryRepo.Queryable().ToList();
- _communityInfoRepo = new TargetRepository<CommunityInfo>(inDto);
- communityInfos = _communityInfoRepo.Queryable().ToList();
- _userRepo = new SelectRepository<Entities.NewHotline.User>(inDto);
- Users = _userRepo.Queryable().ToList();
- _systemDicDataRepo = new SelectRepository<SystemDicData>(inDto);
- snapshotOrderLabels = _systemDicDataRepo.Queryable().Where(m => m.DicTypeCode == "SnapshotOrderLabel").ToList();
- VisitSatisfaction = _systemDicDataRepo.Queryable().Where(m => m.DicTypeCode == "VisitSatisfaction").ToList();
- DissatisfiedReason = _systemDicDataRepo.Queryable().Where(m => m.DicTypeCode == "DissatisfiedReason").ToList();
- ThirdAccounts = new TargetRepository<ThirdAccount>(inDto).Queryable().ToList();
- OrderRepository = new SelectRepository<SelectOrderNo>(inDto);
- OrderNos = OrderRepository.Queryable().Where(m => m.CreationTime >= inDto.StartTime && m.CreationTime <= inDto.EndTime).ToList();
- Organizers = new SelectRepository<SystemOrganize>(inDto).Queryable().ToList();
- _flowTransfer01RunBackupsRepository = new SourceRepository<Flow_Transfer01_RunBackups>(inDto);
- _workflowModuleRepository = new SelectRepository<WorkflowModule>(inDto);
- WorkflowModules = _workflowModuleRepository.Queryable().ToList();
- _workflowStepRepository = new TargetRepository<WorkflowStep>(inDto);
- _workflowRepository = new TargetRepository<Workflow>(inDto);
- _workflowTraceRepository = new TargetRepository<WorkflowTrace>(inDto);
- _flow16PubIdeaRepository = new SourceRepository<Flow16_PubIdeaEntity>(inDto);
- _orderPublishRepository = new TargetRepository<OrderPublish>(inDto);
- _flow18AppraiseListRepository = new SourceRepository<Flow18_AppraiseListEntity>(inDto);
- _orderVisitRepository = new TargetRepository<OrderVisit>(inDto);
- _orderVisitDetailRepository = new TargetRepository<OrderVisitDetail>(inDto);
- _flow11PostponeRepository = new SourceRepository<Flow11_PostponeEntity>(inDto);
- _orderDelayRepository = new TargetRepository<OrderDelay>(inDto);
- _industryCaseRepository = new SelectRepository<IndustryCase>(inDto);
- IndustryCase = _industryCaseRepository.Queryable().ToList();
- _pointsRecordRepository = new TargetRepository<SnapshotPointsRecord>(inDto);
- _snapshotUserInfoApplication = new SnapshotUserInfoApplication(inDto);
- config.Name = "自贡市";
- config.CenterId = "2";
- config.Paseword = "AQAAAAIAAYagAAAAEJZNauXWsvzHDvSCLEwNjA3qVJcQqEHAexlWDg6ONJJtK5hDNnL8gwwXxwZW5YszfA==";
- config.ModuleId = "2430d69a-59df-46a1-b155-85e69cfba010";
- }
- public override ISugarQueryable<OrderFullEntity> GetSourceList(string key = "")
- {
- var dto = GetOrderSql(this._inDto);
- return _sourceRepo.GetBySql(dto.sql).AddParameters(dto.parameters);
- }
- public override async Task<bool> HasOldDataAsync(OrderFullEntity item, CancellationToken token)
- {
- return OrderNos.Any(m => m.No == item.Id);
- }
- public override async Task<Order> GetTargetAsync(OrderFullEntity source, CancellationToken token)
- {
- var ActualHandleOrgCode = source.FSH_AcceptBMID.Trim();
- try
- {
- var orgRow = Organizers.First(x => x.oldBmid.ToString() == source.FSH_AcceptBMID.Trim());
- ActualHandleOrgCode = string.IsNullOrEmpty(orgRow.Id) ? "NULL" : orgRow.Id;
- }
- catch (Exception e)
- {
- Logs.Err($"{source.Id} 缺少部门数据: oldBmid [{source.FSH_AcceptBMID}]");
- return null;
- }
- var order = new Order();
- order.CallId = source.FSH_SessionID.Trim();
- if (order.CallId == "0")
- {
- order.CallId = null;
- }
- order.FromPhone = source.FSH_LinkTel.Trim();
- order.TransferPhone = source.FSH_HotlineNum.Trim();
- order.FromName = source.FSH_LinkName.Trim();
- order.FromGender = source.FLM_LKSex.Trim() == "1" ? 1 : source.FLM_LKSex.Trim() == "2" ? 0 : 2;
- order.IdentityType = source.FSH_PersonnelType.Trim() == "企业" ? 2 : 1;
- order.Contact = source.FSH_LinkTel.Trim();
- order.ContactMask = source.FSH_LinkTel.Trim().MaskPhoneNumber();
- order.AcceptSms = false;
- order.OldId = source.Id.Trim();
- order.AcceptType = source.FSH_PurTypeName.Trim();
- order.Title = source.FSH_Title_ys.Trim();
- order.HotspotId = source.FTE_ProvinceCode.Trim();
- order.HotspotName = source.FTE_TypeName.Trim();
- order.HotspotSpliceName = source.FTE_TypeNameFull.Trim();
- order.PushTypeCode = source.FSH_PushType.Trim();
- order.Content = source.受理内容;
- order.Status = DataTransmission.Enum.EOrderStatus.Visited;
- order.StartTime = string.IsNullOrEmpty(source.FSH_AddDate) ? null : Convert.ToDateTime(source.FSH_AddDate);
- order.ExpiredTime = string.IsNullOrEmpty(source.FSH_TTime) ? null : Convert.ToDateTime(source.FSH_TTime);
- order.FiledTime = string.IsNullOrEmpty(source.FSH_DisposeDate) ? null : Convert.ToDateTime(source.FSH_DisposeDate);
- order.ExpiredStatus = source.FSH_OverTimeState.Trim() == "正常" ? 0 : source.FSH_OverTimeState.Trim() == "即将超期" ? 1 : 2;
- order.AreaCode = source.SA_AreaCode.Trim();
- order.Street = source.FLM_LKAddress.Trim();
- order.ActualHandleTime = source.FSH_DisposeDate.ObjToDate();
- order.ActualHandleStepAcceptTime = order.ActualHandleTime;
- order.IsDeleted = false;
- order.CreationTime = source.FSH_AddDate.ObjToDate();
- order.SmsSended = false;
- order.ProcessType = source.FSH_AcceptBMID.Trim() == config.CenterId ? 10 : 20;
- if (config.Name == "自贡市")
- {
- order.Province = "四川省";
- order.City = "自贡市";
- order.IsPublicity = false;
- }
- else
- {
- order.IsPublicity = source.FSH_IsPublic == "1"; //0:不公开 ;1:公开 12345在线传递过来的状态
- }
- var oneOrg = Organizers.FirstOrDefault(m => m.oldBmid == source.OneOrgId);
- if (oneOrg != null)
- {
- order.OrgLevelOneName = oneOrg.Name;
- order.OrgLevelOneCode = oneOrg.Id;
- }
- order.IsSecret = source.FLM_SFlag == "1";
- order.ActualHandleOrgName = source.FSH_AcceptName.Trim();
- order.ActualHandleOrgCode = ActualHandleOrgCode;
- order.ActualOpinion = source.承办意见;
- order.SourceChannel = source.FSH_FromName;
- order.IsProvince = !(source.RCI_FlowID == "NULL");
- var acceptor = Users.FirstOrDefault(x => x.OldUserId.ToString() == source.FTRB_APUserID);
- SystemOrganize acceptorOrg = null;
- if (acceptor != null)
- {
- acceptorOrg = Organizers.FirstOrDefault(x => x.oldBmid.ToString() == acceptor.OrgId);
- }
- order.AcceptorId = source.FSH_CreateUserID;
- if (acceptor != null)
- {
- order.AcceptorId = acceptor.Id.ToString();
- order.AcceptorName = acceptor.Name.ToString();
- }
- order.AcceptorName = source.FSH_UserName;
- order.SourceChannelCode = source.FFM_ProFromCode.Trim() switch
- {
- "SJP" => "ZGSSP",
- _ => source.FFM_ProFromCode
- };
- order.ActualHandleOrgAreaCode = source.SA_AreaCode.Trim();
- order.ActualHandleOrgAreaName = source.SA_AreaName.Trim();
- order.CallAddress = source.FLM_LKAddress;
- order.TimeLimitCount = source.FTRB_TLimits.ObjToInt();
- order.TimeLimit = order.TimeLimitCount + "个工作日";
- order.AcceptTypeCode = GetAcceptTypeCode(source.FSH_PurTypeName.Trim());
- order.NearlyExpiredTime = string.IsNullOrEmpty(source.FSH_EightyTTime) ? null : source.FSH_EightyTTime.ObjToDate();
- order.Password = source.FED_ReultPWD.Trim();
- order.ProvinceNo = source.FSH_ProCode;
- order.IsUrgent = source.FSH_Urgent.Trim() == "1";
- order.OldOrderId = source.FSH_FlowID;
- order.CreatorId = await GetUserIdByOpenIdAsync(null, source.WFAT_WXOpenid, order.OldId, token);
- order.FileOpinion = source.FTRB_RRemark;
- order.CurrentStepName = source.FSH_ItemName;
- order.InitId();
- order.County = source.FSH_AreaName; // 自流井区
- //order.Town = ""; // 丹桂街道
- return order;
- }
- public override async Task<bool> InsertBeforAsync(Action<string> log, OrderFullEntity item, Order target, bool isEnd, CancellationToken token)
- {
- return await InsertWorkflowAsync(item, target, isEnd, token);
- }
- public override async Task InsertAfterAsync(Action<string> log, OrderFullEntity item, Order target, bool isEnd, CancellationToken token)
- {
- await InsertSnapshotAsync(item, target.Id, isEnd, token);
- await InsertVisitAsync(item.FSH_FlowID, target, isEnd, token);
- await InsertPublishAsync(item.FSH_FlowID, target.Id, isEnd, token);
- await InsertDelayAsync(item, target, isEnd, token);
- await InsertPointsAsync(log, item, target, isEnd, token);
- }
- public override async Task SubmitBluk()
- {
- _workflowRepository.SubmitBluk();
- _workflowStepRepository.SubmitBluk();
- _workflowTraceRepository.SubmitBluk();
- _orderSnapshotRepo.SubmitBluk();
- _orderPublishRepository.SubmitBluk();
- _orderVisitRepository.SubmitBluk();
- _orderVisitDetailRepository.SubmitBluk();
- _orderDelayRepository.SubmitBluk();
- _pointsRecordRepository.SubmitBluk();
- await Task.FromResult(0);
- }
- public override async Task EndTaskAsync(Action<string> log, CancellationToken token)
- {
- _pointsRecordRepository.SubmitBluk();
- }
- public async Task InsertSnapshotAsync(OrderFullEntity order, string orderId, bool isEnd, CancellationToken token)
- {
- var userId = _snapshotUserInfoRepo.Queryable().Where(m => m.PhoneNumber == order.FSH_LinkTel).Select(m => m.Id).First();
- var industryId = industries.FirstOrDefault(m => m.Name == order.FSH_IndustryName)?.Id;
- var community = communityInfos.FirstOrDefault(m => m.Id == order.FSH_SSPAreaID);
- var snapshot = new OrderSnapshot();
- snapshot.Id = orderId;
- snapshot.IndustryId = industryId;
- snapshot.IndustryName = order.FSH_IndustryName;
- var industryCase = IndustryCase.FirstOrDefault(m => m.Name.Trim() == order.SIC_Name?.Trim());
- if (industryCase != null)
- {
- snapshot.IndustryCase = industryCase.Id;
- }
- snapshot.CommunityId = order.FSH_SSPAreaID;
- snapshot.CommunityName = community?.Name;
- snapshot.CommunityFullName = community?.FullName;
- snapshot.JobType = order.WEA_OperationType == null ? null : order.WEA_OperationType.Trim() == "电焊" ? 0 : 1;
- snapshot.JobTypeName = order.WEA_OperationType == null ? null : order.WEA_OperationType;
- snapshot.BusinessUnitType = order.WEA_CompanyType; // 经营单位类别
- snapshot.Workplace = order.WEA_OperationPlace; // 作业场所
- snapshot.WorkplaceName = order.WEA_PlaceTypeName; // 场所名称(多个场所使用 - 连接)
- snapshot.WorkArea = order.WEA_AreaFullName; // 作业区域
- snapshot.WorkAreaId = order.WEA_AreaID; // 作业区域Id
- snapshot.StartWorkTime = order.WEA_OperationStartTime.ObjToDate(); // 作业时间
- snapshot.EndWorkTime = order.WEA_OperationEndTime.ObjToDate(); // 作业时间
- snapshot.IsEmphasis = false; // 是否重点
- snapshot.IsSafetyDepartment = order.STL_TagType.IsNullOrTarget("1"); // 部门标记是否安全生产
- snapshot.SignUserId = GetUserId(order.STL_AddUserID); // 标记人
- snapshot.SignUserName = order.STL_UserName; // 标记人
- snapshot.SignTime = order.STL_AddDate.ObjToDate(); // 标记时间
- snapshot.SignRemark = order.STL_TagRemark; // 标记备注
- snapshot.IsDangerDepartment = order.FSH_ReplyIsBMTrue.IsNullOrTarget("1"); // 部门是否存在安全隐患
- snapshot.IsTruthDepartment = order.FSH_ReplyIsBMTrue.IsNullOrTarget("1"); // 部门是否属实
- snapshot.IsRectifyDepartment = order.FSH_IsRectification.IsNullOrTarget("1"); // 部门是否整改
- snapshot.IndustryCase = order.FSH_IndustryIDType; // 线索分类
- snapshot.IsAppOpened = false; // 小程序公开
- snapshot.LabelName = order.SWLS_TypeName_All; // 工单标签(多个使用 | 分隔)
- snapshot.LabelUserName = GetUserName(order.SWLS_AddUserID); // 标签用户
- snapshot.LabelUserId = GetUserId(order.SWLS_AddUserID); // 标签用户Id
- snapshot.LabelTime = order.SWLS_AddDate.ObjToDate(); // 标签时间
- snapshot.IsAward = null; // 是否申请追加奖励
- snapshot.AwardOpenBank = null; // 追加奖励人开户银行
- snapshot.AwardName = null; // 追加奖励人姓名
- snapshot.AwardBankCardNo = null; // 追加奖励人银行卡号
- snapshot.AwardAmount = null; // 追加奖励金额(元)
- snapshot.ReplenishTypeId = null; // 补充奖励类型
- snapshot.ReplenishTypeName = null; // 补充奖励类型
- snapshot.VerifyType = null; // 核实方式
- snapshot.IsCheckList = order.FSH_Checklist.ObjToBool(); // 是否按清单检查
- snapshot.GuiderAccLog = null; // 网格员系统交互日志
- snapshot.DeadLine = null; // 网格员回复截止日期
- snapshot.NetworkENumber = order.FSH_SSPCode; // 网格E通编号
- snapshot.IsTruth = order.FPC_ISTrue.IsNullOrTarget("1"); // 网格员是否属实
- snapshot.IsRepetition = order.isRepeat.IsNullOrTarget("1"); // 是否重复
- snapshot.IsDanger = order.isHiddenDanger.IsNullOrTarget("1"); // 是否隐患
- snapshot.NetworkRemark = order.FPC_Content; // 网格员回复内容
- snapshot.ReplyDate = order.FPC_AcceptDate.ObjToDate(); // 网格员办理时间
- snapshot.MemberName = order.memberName; // 网格员姓名
- snapshot.MemberMobile = order.memberMobile; // 网格员电话
- snapshot.ReplyUserName = null; // 办理人账号
- snapshot.ReplyBMName = null; // 办理部门
- snapshot.ReplyResultType = order.FPC_ResultType.ObjToInt(); // 网格员办理状态
- snapshot.CompanyName = null; // 购气单位/个人名称
- snapshot.SendGuidSystemTime = order.FPC_AcceptDate.ObjToDate(); // 发送网格员系统时间
- snapshot.GuidSystemCallBackTime = order.FPC_InsertDate.ObjToDate(); // 网格员系统回调时间
- snapshot.IsGuidSystemCallBack = order.FPC_ID != null; // 网格员系统是否回调
- snapshot.SpecialReasonId = null; // 重办原因Id
- snapshot.SpecialReasonName = null; // 重办原因
- var typeName = order.SWLS_TypeName;
- if (typeName.NotNullOrEmpty())
- {
- var labelId = snapshotOrderLabels.Where(m => m.DicDataName == typeName).FirstOrDefault();
- var labels = new Kv { Key = labelId.DicDataValue, Value = labelId.DicDataName };
- snapshot.Labels = new List<Kv> { labels };
- }
- if (snapshot.NetworkENumber.NotNullOrEmpty())
- snapshot.IsDeal = true; // 网格员是否办理
- if (order.FSH_SSPAreaID.NotNullOrEmpty())
- {
- snapshot.CompliantType = order.FSH_Compliance?.Trim() switch
- {
- "1" => (ECompliantType?)ECompliantType.First,
- "2" => (ECompliantType?)ECompliantType.Second,
- "3" => (ECompliantType?)ECompliantType.Third,
- "0" => (ECompliantType?)ECompliantType.Not,
- _ => null,
- };
- }
- _orderSnapshotRepo.InsertBulk(snapshot, isEnd);
- }
- public async Task<bool> InsertWorkflowAsync(OrderFullEntity order, Order target, bool isEnd, CancellationToken token)
- {
- var workflowDtos = await GetWorkflow(order.FSH_FlowID, "CityHotline", token);
- var workflowEntities = workflowDtos.Adapt<List<Workflow>>();
- var module = WorkflowModules.First(x => x.Code == "OrderHandle");
- var startStep = workflowDtos.OrderBy(m => m.FTRB_RunID).First();
- var endStep = workflowDtos.OrderByDescending(m => m.FTRB_RunID).First();
- var actualStep = workflowDtos.First(m => m.FSH_AcceptBMID == m.FTRB_APBMID.ToString());
- if (order.FSH_AcceptBMID == config.CenterId)
- {
- actualStep = workflowDtos.FirstOrDefault(m => m.FSH_AcceptDate != null && m.FTRB_APDate != null && m.FSH_AcceptDate == m.FTRB_APDate);
- if (actualStep == null)
- actualStep = workflowDtos.First(m => m.FSH_AcceptBMID == m.FTRB_APBMID.ToString());
- }
- var creator = Users.FirstOrDefault(m => m.OldUserId == startStep.FTRB_MoveUserID);
- if (creator == null)
- {
- Users = _userRepo.Queryable().ToList();
- creator = Users.FirstOrDefault(m => m.OldUserId == startStep.FTRB_MoveUserID);
- Logs.Err($"{order.Id} 缺少User数据: UserId [{startStep.FTRB_MoveUserID}]");
- }
- var creatorOrg = Organizers.FirstOrDefault(m => m.Id == creator.OrgId);
- var workflow = workflowEntities.First();
- workflow.InitId();
- target.WorkflowId = workflow.Id;
- workflow.DefinitionId = module.DefinitionId;
- workflow.ModuleId = module.Id;
- workflow.ModuleCode = module.Code;
- workflow.ModuleName = module.Name;
- if (workflow.ModuleCode == "OrderDelay")
- {
- endStep = workflowDtos.OrderByDescending(m => m.FTRB_MoveDate).FirstOrDefault();
- actualStep = endStep;
- }
- workflow.EndTime = endStep.FTRB_DisposeDate.ObjToDate();
- workflow.ActualHandleStepCode = "";
- workflow.ActualHandleStepName = "";
- workflow.ActualHandleStepId = actualStep.FSH_RunID;
- workflow.ActualOpinion = actualStep.FTRB_RRemark;
- workflow.CreationTime = startStep.FSH_AddDate.ObjToDate();
- if (creator != null)
- {
- workflow.CreatorId = creator.Id;
- workflow.CreatorName = creator.Name;
- }
- if (creatorOrg != null)
- {
- workflow.CreatorOrgId = creatorOrg.Id;
- workflow.CreatorOrgName = creatorOrg.Name;
- workflow.CreatorOrgLevel = creatorOrg.Level;
- workflow.AreaId = creatorOrg.AreaId;
- }
- if (workflow.ModuleCode == "OrderHandle")
- {
- workflow.FlowType = DataTransmission.Enum.EFlowType.Handle;
- workflow.ReviewResult = DataTransmission.Enum.EReviewResult.Unknown;
- workflow.ExternalId = order.FSH_FlowID;
- }
- else if (workflow.ModuleCode == "OrderDelay")
- {
- workflow.FlowType = DataTransmission.Enum.EFlowType.Review;
- //workflow.ReviewResult = delay.DelayState == EDelayState.Pass ? EReviewResult.Approval : delay.DelayState == EDelayState.NoPass ? EReviewResult.Failed : EReviewResult.Unknown;
- //workflow.ExternalId = delay.Id;
- }
- for (int i = 0;i < workflowDtos.Count;i++)
- {
- await InsertWorkflowStepAsync(workflowDtos[i], workflow, i == 1, workflowDtos.Count == i + 1, isEnd, token);
- }
- _workflowRepository.InsertBulk(workflow, isEnd);
- return true;
- }
- public async Task InsertWorkflowStepAsync(WorkflowDto item, Workflow workflow, bool start, bool end, bool isEnd, CancellationToken token)
- {
- var step = new WorkflowStep();
- step.InitId();
- step.FlowAssignType = DataTransmission.Entity.EFlowAssignType.User;
- step.WorkflowId = workflow.Id;
- step.ModuleCode = workflow.ModuleCode;
- step.ModuleId = workflow.ModuleId;
- step.Code = string.Empty;
- var acceptor = Users.FirstOrDefault(m => m.OldUserId == item.FTRB_APUserID);
- var acceptorOrg = Organizers.FirstOrDefault(m => m.oldBmid == item.FTRB_APBMID);
- //Handler
- var handler = Users.FirstOrDefault(m => m.OldUserId.ToString() == item.FTRB_UserID);
- SystemOrganize handlerOrg = null;
- if (handler != null)
- {
- handlerOrg = Organizers.FirstOrDefault(m => m.Id == handler.OrgId);
- }
- //Creator
- var creator = Users.FirstOrDefault(m => m.OldUserId == item.FTRB_MoveUserID);
- SystemOrganize creatorOrg = null;
- if (creator != null)
- {
- creatorOrg = Organizers.FirstOrDefault(m => m.Id == creator.OrgId);
- }
- step.PrevStepId = item.FTRB_PRunID;
- step.PrevStepCode = string.Empty;
- step.AcceptorId = item.FTRB_APUserID.ToString();
- if (acceptor != null)
- {
- step.AcceptorId = acceptor.Id;
- step.AcceptorName = acceptor.Name;
- }
- step.AcceptorOrgId = item.FTRB_APBMID.ToString();
- if (acceptorOrg != null)
- {
- step.AcceptorOrgId = acceptorOrg.Id;
- step.AcceptorOrgName = acceptorOrg.Name;
- step.AcceptorOrgAreaCode = acceptorOrg.AreaCode;
- step.AcceptorOrgAreaName = acceptorOrg.AreaName;
- }
- step.AcceptTime = item.FTRB_APDate.IsNullOrEmpty() ? null : item.FTRB_APDate.ObjToDate();
- if (handler is null)
- {
- step.HandlerId = item.FTRB_UserID;
- step.HandlerName = string.Empty;
- }
- else
- {
- step.HandlerId = handler.Id;
- step.HandlerName = handler.Name;
- }
- if (handlerOrg != null)
- {
- step.HandlerOrgId = handlerOrg.Id;
- step.HandlerOrgName = handlerOrg.Name;
- step.HandlerOrgAreaCode = handlerOrg.AreaCode;
- step.HandlerOrgAreaName = handlerOrg.AreaName;
- step.HandlerOrgIsCenter = bool.Parse(handlerOrg.IsCenter.ToString());
- }
- else
- {
- step.HandlerOrgName = "热线中心";
- step.HandlerOrgId = config.CenterId.ToString();
- step.HandlerOrgAreaCode = string.Empty;
- step.HandlerOrgAreaName = string.Empty;
- step.HandlerOrgIsCenter = false;
- }
- step.HandleTime = item.FTRB_DisposeDate.ToDate();
- step.Name = item.FTRB_ItemName;
- step.StepType = start ? DataTransmission.Enum.EStepType.Start : end ? DataTransmission.Enum.EStepType.End : DataTransmission.Enum.EStepType.Normal;
- step.BusinessType = item.FTRB_ItemName.Contains("话务") ? DataTransmission.Enum.EBusinessType.Seat : item.FTRB_ItemName.Contains("派单") ? DataTransmission.Enum.EBusinessType.Send :
- item.FTRB_ItemName.Contains("结束") || item.FTRB_ItemName.Contains("发布") || item.FTRB_ItemName.Contains("回访") ? DataTransmission.Enum.EBusinessType.File : DataTransmission.Enum.EBusinessType.Department;
- step.Opinion = item.FTRB_RRemark;
- step.StepExpiredTime = item.FTRB_TTime.ToDate();
- step.CreationTime = item.FTRB_MoveDate.ObjToDate();
- if (creator != null)
- {
- step.CreatorId = creator.Id;
- step.CreatorName = creator.Name;
- }
- else
- {
- step.CreatorId = item.FTRB_MoveUserID.ToString();
- step.CreatorName = string.Empty;
- }
- if (creatorOrg != null)
- {
- step.CreatorOrgId = creatorOrg.Id;
- step.CreatorOrgName = creatorOrg.Name;
- step.CreatorOrgLevel = creatorOrg.Level;
- step.AreaId = creatorOrg.AreaId;
- step.AssignerOrgIsCenter = creatorOrg.IsCenter;
- }
- else
- {
- step.CreatorOrgName = "热线中心";
- step.CreatorOrgId = config.CenterId.ToString();
- step.CreatorOrgLevel = 1;
- step.AreaId = string.Empty;
- step.AssignerOrgIsCenter = true;
- }
- _workflowStepRepository.InsertBulk(step, isEnd);
- await InsertWorkflowTraceAsync(step, isEnd);
- }
- public async Task InsertWorkflowTraceAsync(WorkflowStep step, bool isEnd)
- {
- var trace = step.Adapt<WorkflowTrace>();
- trace.InitId();
- _workflowTraceRepository.InsertBulk(trace, isEnd);
- }
- public async Task InsertPublishAsync(string flowId, string orderId, bool isEnd, CancellationToken token)
- {
- var publishItems = await GetOldPublishAsync(flowId, token);
- foreach (var item in publishItems)
- {
- var creator = Users.FirstOrDefault(m => m.OldUserId == item.FPLT_PubUserID);
- var creatorOrg = Organizers.FirstOrDefault(m => m.Id == creator.OrgId);
- var publish = item.Adapt<OrderPublish>();
- publish.PublishState = item.FPLT_PubFlag == "2" ? true : false;
- if (creatorOrg != null)
- {
- publish.CreatorOrgId = creatorOrg.Id;
- publish.CreatorOrgName = creatorOrg.Name;
- publish.CreatorOrgLevel = creatorOrg.Level;
- publish.AreaId = creatorOrg.AreaId;
- }
- if (creator != null)
- {
- publish.CreatorId = creator.Id;
- publish.CreatorName = creator.Name;
- }
- publish.OrderId = orderId;
- _orderPublishRepository.InsertBulk(publish, isEnd);
- }
- }
- public async Task InsertVisitAsync(string flowId, Order order, bool isEnd, CancellationToken token)
- {
- var oldVisitItems = await GetVisitAsync(flowId, token);
- var item = oldVisitItems.FirstOrDefault();
- if (item == null) return;
- SystemOrganize ogrRow = Organizers.First(m => m.oldBmid == item.FALT_AppBMID);
- var VisitOrgCode = ogrRow.Id.IsNullOrEmpty() ? item.FALT_AppBMID.ToString() : ogrRow.Id;
- string? EmployeeId = null;
- try
- {
- EmployeeId = Users.First(m => m.OldUserId == item.FALT_UserID)?.Id;
- }
- catch (Exception e)
- {
- }
- var creator = Users.FirstOrDefault(m => m.OldUserId == item.FALT_InsertUserID);
- var creatorOrg = Organizers.FirstOrDefault(m => m.Id == creator.OrgId);
- var visit = new OrderVisit();
- visit.InitId();
- visit.No = order.OldId;
- visit.OrderId = order.Id;
- visit.PublishTime = item.FPLT_PubDate.ObjToDate();
- visit.EmployeeId = EmployeeId;
- visit.VisitTime = item.FALT_CallDate.ObjToDate();
- visit.CreationTime = item.FALT_InsertDate.ObjToDate();
- visit.CreatorId = item.FALT_InsertUserID.ToString();
- visit.VisitState = DataTransmission.Enum.EVisitState.Visited;
- visit.VisitType = DataTransmission.Enum.EVisitType.ArtificialVisit;
- visit.IsPutThrough = true;
- if (creator != null)
- {
- visit.CreatorId = creator.Id;
- visit.CreatorName = creator.Name;
- }
- if (creatorOrg != null)
- {
- visit.CreatorOrgId = creatorOrg.Id;
- visit.CreatorOrgName = creatorOrg.Name;
- visit.CreatorOrgLevel = creatorOrg.Level;
- visit.AreaId = creatorOrg.AreaId;
- }
- visit.NowEvaluate = new Kv
- {
- Key = GetSatisfaction(item.FALT_AppTypeBName),
- Value = item.FALT_AppTypeName
- };
- visit.AgainState = DataTransmission.Enum.EAgainState.NoAgain;
- visit.IsCanHandle = false;
- visit.IsCanAiVisit = false;
- visit.CallId = null;
- visit.FirstVisitTime = visit.VisitTime;
- visit.LastVisitTime = visit.VisitTime;
- visit.AiVisitCount = 0;
- _orderVisitRepository.InsertBulk(visit, isEnd);
- // 坐席
- var seatDetail = new OrderVisitDetail();
- seatDetail.InitId();
- seatDetail.VisitId = visit.Id;
- seatDetail.CreationTime = item.FALT_InsertDate.ObjToDate();
- seatDetail.VisitTarget = DataTransmission.Enum.EVisitTarget.Seat;
- seatDetail.VoiceEvaluate = GetSatisfaction(item.FALT_SeatsTypeName).ToEnum<EVoiceEvaluate>();
- seatDetail.SeatEvaluate = GetSeatSatisfaction(item.FALT_SeatsTypeName).ToEnum<ESeatEvaluate>();
- seatDetail.CreatorOrgId = visit.CreatorOrgId;
- seatDetail.CreatorId = visit.CreatorId;
- seatDetail.AreaId = visit.AreaId;
- seatDetail.CreatorOrgName = visit.CreatorOrgName;
- seatDetail.CreatorName = visit.CreatorName;
- seatDetail.CreatorOrgLevel = visit.CreatorOrgLevel;
- _orderVisitDetailRepository.InsertBulk(seatDetail, isEnd);
- foreach (var orgVisit in oldVisitItems)
- {
- // 部门
- var bmDetail = seatDetail.ToJson().FromJson<OrderVisitDetail>();
- bmDetail.InitId();
- bmDetail.VisitTarget = DataTransmission.Enum.EVisitTarget.Org;
- if ((orgVisit.FALT_AppTypeName == "非常不满意" || orgVisit.FALT_AppTypeName == "不满意") && !string.IsNullOrEmpty(orgVisit.SDICT_Name))
- {
- bmDetail.OrgNoSatisfiedReason = new List<Kv> {
- new() {
- Key = GetDissatisfiedReason(orgVisit.SDICT_Name, config),
- Value = orgVisit.SDICT_Name
- }
- };
- }
- bmDetail.OrgProcessingResults = new Kv
- {
- Key = GetVisitSatisfaction(orgVisit.FALT_AppTypeName),
- Value = orgVisit.FALT_AppTypeName
- };
- bmDetail.OrgHandledAttitude = new Kv
- {
- Key = GetVisitSatisfaction(orgVisit.FALT_AppTypeBName),
- Value = orgVisit.FALT_AppTypeBName
- };
- bmDetail.VisitContent = orgVisit.FALT_ZxRemark;
- bmDetail.VisitOrgCode = VisitOrgCode;
- bmDetail.VisitOrgName = orgVisit.SBM_Name;
- _orderVisitDetailRepository.InsertBulk(bmDetail, isEnd);
- }
- }
- public async Task InsertDelayAsync(OrderFullEntity order, Order target, bool isEnd, CancellationToken token)
- {
- var oldDelay = await GetDelayAsync(order.FSH_FlowID, token);
- foreach (var delay in oldDelay)
- {
- var model = new OrderDelay();
- model.InitId();
- var applyOrg = Organizers.FirstOrDefault(m => m.oldBmid.ToString() == delay.FPE_BMID);
- var applyUser = Users.FirstOrDefault(m => m.OldUserId == delay.FPE_UserID);
- model.No = order.Id;
- model.OrderId = target.Id;
- model.ApplyDelayTime = delay.FPE_FPDate.ObjToDate();
- model.ApplyOrgCode = delay.FPE_BMID;
- model.CreatorOrgId = model.ApplyOrgCode;
- if (applyOrg != null)
- {
- model.ApplyOrgCode = applyOrg.Id;
- model.ApplyOrgName = applyOrg.Name;
- model.CreatorOrgId = applyOrg.Id;
- model.AreaId = applyOrg.AreaId;
- model.CreatorOrgName = applyOrg.Name;
- model.CreatorOrgLevel = applyOrg.Level;
- }
- model.EmployeeId = delay.FPE_UserID.ToString();
- model.CreatorId = model.EmployeeId;
- if (applyUser != null)
- {
- model.EmployeeId = applyUser.Id;
- model.EmployeeName = applyUser.Name;
- model.CreatorId = applyUser.Id;
- model.CreatorName = applyUser.Name;
- }
- model.DelayNum = delay.FPE_SLimits.ObjToInt();
- model.DelayReason = delay.FPE_Reson;
- model.AfterDelay = delay.FPE_FPDate.ObjToDate();
- model.DelayState = (EDelayState)int.Parse(delay.FPE_AuditFlag);
- model.CreationTime = delay.FPE_FPDate.ObjToDate();
- _orderDelayRepository.InsertBulk(model, isEnd);
- }
- }
- public async Task InsertPointsAsync(Action<string> log, OrderFullEntity item, Order target, bool isEnd, CancellationToken token)
- {
- if (item.FSH_AddDate.ObjToDate() <= new DateTime(2024, 12, 31, 23, 59, 59)) return;
- if (item.FSH_IndustryName != "安全隐患" && item.FSH_IndustryName != "电气焊作业申报") return;
- var points = new SnapshotPointsRecord
- {
- UserId = await GetUserIdByOpenIdAsync(log, item.WFAT_WXOpenid, item.Id, token),
- Source = EPointsSource.Report,
- Points = 1,
- Direction = EPointsDirection.In,
- OrderId = target.Id,
- CreationTime = item.FSH_AddDate.ObjToDate()
- };
- if (points.UserId.IsNullOrEmpty())
- {
- return;
- }
- _pointsRecordRepository.InsertBulk(points, isEnd);
- }
- public string GetUserId(object oldId)
- {
- return Users.FirstOrDefault(m => m.OldUserId == oldId.ObjToInt())?.Id;
- }
- public string GetUserName(object oldId)
- {
- return Users.FirstOrDefault(m => m.OldUserId == oldId.ObjToInt())?.Name;
- }
- public async Task<string> GetUserIdByOpenIdAsync(Action<string> log, string openId, string fsh_code, CancellationToken token)
- {
- if (openId.IsNullOrEmpty()) return null;
- var user = ThirdAccounts.FirstOrDefault(m => m.OpenId == openId);
- if (user != null) return user.ExternalId;
- var newThirdAccounts = await _snapshotUserInfoApplication.InsertByOpenIdAsync(log, openId, token);
- foreach (var item in newThirdAccounts)
- {
- ThirdAccounts.Add(item);
- }
- user = ThirdAccounts.FirstOrDefault(m => m.OpenId == openId);
- if (user != null) return user.ExternalId;
- Logs.Err($"工单: {fsh_code} 缺少第三方账号数据: openId [{openId}]");
- return null;
- }
- public async Task<IList<Flow11_PostponeEntity>> GetDelayAsync(string flowId, CancellationToken token)
- {
- return await _flow11PostponeRepository.Queryable()
- .Where(m => m.FPE_FlowID == flowId && m.FPE_AuditFlag == "1")
- .ToListAsync(token);
- }
- public async Task<IList<OldVisitDto>> GetVisitAsync(string flowId, CancellationToken token)
- {
- var query = _flow18AppraiseListRepository.Queryable()
- .LeftJoin<Flow15_PubListEntity>((FA, FP) => FA.FALT_FlowID == FP.FPLT_FlowID)
- .LeftJoin<Flow18_AppraiseExpandEntity>((FA, FP, FAE) => FAE.FAED_FALTID == FA.Id)
- .LeftJoin<SYS15_DICTEntity>((FA, FP, FAE, SD) => SD.SDICT_Key == "Appraise_DissType" && SD.SDICT_PID != 0 && FAE.FAED_DissTypeID == SD.Id)
- .LeftJoin<SYS09_BMDIREntity>((FA, FP, FAE, SD, SBM) => FA.FALT_AppBMID == SBM.Id)
- .Where((FA, FP, FAE, SD, SBM) => FA.FALT_FlowID == flowId && FA.FALT_AppFlag == 1)
- .Select((FA, FP, FAE, SD, SBM) => new OldVisitDto(), true);
- return await query.ToListAsync(token);
- }
- public async Task<IList<OldPublishDto>> GetOldPublishAsync(string flowdId, CancellationToken token)
- {
- var query = _flow16PubIdeaRepository.Queryable()
- .LeftJoin<Flow03_Search>((FP, FS) => FP.FPIA_FlowID == FS.Id)
- .LeftJoin<Flow15_PubListEntity>((FP, FS, FPL) => FP.FPIA_FlowID == FPL.FPLT_FlowID)
- .Where((FP, FS, FPL) => FP.FPIA_FlowID == flowdId)
- .Select((FP, FS, FPL) => new OldPublishDto(), true);
- return await query.ToListAsync(token);
- }
- public async Task<IList<WorkflowDto>> GetWorkflow(string oldOrderId, string storeCode, CancellationToken token)
- {
- var query = _flowTransfer01RunBackupsRepository.Queryable()
- .LeftJoin<Flow_Set01_Store>((FTR, FSS) => FTR.FTRB_StoreID == FSS.Id)
- .LeftJoin<Flow03_Search>((FTR, FSS, FS) => FTR.FTRB_FlowID == FS.Id)
- .Where((FTR, FSS, FS) => FTR.FTRB_FlowID == oldOrderId && FSS.FSL_Code == storeCode)
- .OrderBy((FTR, FSS, FS) => FTR.FTRB_MoveDate)
- .Select((FTR, FSS, FS) => new WorkflowDto(), true);
- var sql = query.ToSqlString();
- return await query.ToListAsync(token);
- }
- private (string sql, List<SugarParameter> parameters) GetOrderSql(CreateInstanceInDto inDto)
- {
- var sql = "SELECT ROW_NUMBER() OVER (ORDER BY FSH_FlowID) AS Serial, CHPRCI.RCI_FlowID,*,REPLACE(CAST(FCT.FCT_Content AS NVARCHAR(MAX)),CHAR(13)+CHAR(10), '') 受理内容, CASE WHEN ISNULL(FSH_DisposeDate, GETDATE()) > FSH_TTime THEN '超期' WHEN ISNULL(FSH_DisposeDate, GETDATE()) > FSH_EightyTTime THEN '即将超期' ELSE '正常' END AS FSH_OverTimeState, REPLACE(REPLACE(FSH_Title, '</font>', ''), '<font color=mediumorchid>', '') AS FSH_Title_ys, REPLACE(CAST(ISNULL(FTC2.FTC_RRemark,FTRB.FTRB_RRemark) AS NVARCHAR(MAX)),CHAR(13)+CHAR(10), '') 承办意见, (case when bml.SBML_OneBMID =0 then FSH_AcceptBMID else SBML_OneBMID end) OneOrgId FROM dbo.Flow03_Search FSH " +
- "LEFT JOIN Flow02_From FRM ON FSH.FSH_FromID = FRM.FFM_FromID " +
- "LEFT JOIN dbo.Flow05_LinkMan FLM ON FSH.FSH_FlowID = FLM.FLM_FlowID " +
- "LEFT JOIN dbo.Flow01_Type FT ON FT.FTE_TypeFlag =2 AND FSH.FSH_ConTypeID = FT.FTE_TypeID " +
- "LEFT JOIN dbo.SYS19_Area SA ON FSH.FSH_AreaID = SA.SA_AreaID " +
- "LEFT JOIN dbo.Flow04_Expand FED ON FSH.FSH_FlowID = FED.FED_FlowID " +
- "LEFT JOIN Flow06_Content FCT WITH(NOLOCK) ON FCT.FCT_FlowID = FSH.FSH_FlowID " +
- "OUTER APPLY (SELECT TOP 1 * FROM ZG_CityHotline_Ver3.dbo.Flow18_AppraiseList pc WHERE pc.FALT_FlowID = FSH.FSH_FlowID ORDER BY pc.FALT_ListID DESC) AS FAL " +
- "LEFT JOIN Flow_Transfer04_Specialty FTS WITH(NOLOCK) ON FTS.FTS_FlowID = FSH.FSH_FlowID " +
- "LEFT JOIN Flow_Transfer02_Content FTC2 WITH(NOLOCK) ON FTC2.FTC_RunID = FTS.FTS_RunID " +
- "LEFT JOIN Flow_Transfer01_RunBackups FTRB WITH(NOLOCK) ON FTS.FTS_RunID =FTRB.FTRB_RunID " +
- "LEFT JOIN CityHotline_Province.dbo.receive_case_info CHPRCI ON CHPRCI.RCI_FlowID = FSH.FSH_FlowID " +
- "LEFT JOIN ZG_CityHotline_Web.dbo.Web09_FlowAccept Web09_FlowAccept ON Web09_FlowAccept.WFAT_SyncFlowID = FSH.FSH_FlowID " +
- "LEFT JOIN ZG_CityHotline_Web.dbo.Web60_EGWAccept Web60_EGWAccept ON Web60_EGWAccept.WEA_AcceptID = Web09_FlowAccept.WFAT_AcceptID " +
- "OUTER APPLY (SELECT TOP 1 * FROM ZG_CityHotline_Ver3.dbo.SSP_TagLog pc WHERE pc.STL_FlowID = FTS.FTS_FlowID ORDER BY pc.STL_ID DESC) AS SSP_TagLog " +
- "OUTER APPLY (SELECT TOP 1 SWLS.*,STUFF((SELECT '|' + SWLS2.SWLS_TypeName FROM ZG_CityHotline_Ver3.dbo.SSP_WorkLabelSign SWLS2 WHERE SWLS2.SWLS_FlowID = SWLS.SWLS_FlowID FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS SWLS_TypeName_All FROM ZG_CityHotline_Ver3.dbo.SSP_WorkLabelSign SWLS WHERE SWLS.SWLS_FlowID = FSH.FSH_FlowID ORDER BY SWLS.SWLS_ID DESC) AS LabelSign " +
- "OUTER APPLY (SELECT TOP 1 * FROM ZG_CityHotline_Ver3.dbo.Flow03_PushContent pc WHERE pc.FPC_Code = FSH.FSH_Code ORDER BY pc.FPC_ID DESC) AS PushContent " +
- "LEFT JOIN ZG_CityHotline_Web.dbo.Web32_UserWrite UserWrite on UserWrite.WUW_AcceptID = Web09_FlowAccept.WFAT_AcceptID " +
- "left join SYS09_BMDIR_Level bml on SBML_BMID=FSH_AcceptBMID ";
- if (inDto.Keyword.NotNullOrEmpty())
- {
- var parameters = new List<SugarParameter>
- {
- new("@numberCode", inDto.Keyword),
- };
- sql += "WHERE FSH_Code = @numberCode;";
- return (sql, parameters);
- }
- else
- {
- var parameters = new List<SugarParameter>
- {
- new("@st_time", inDto.StartTime),
- new("@end_time", inDto.EndTime),
- };
- sql += "WHERE FSH_AddDate >= @st_time AND FSH_AddDate <= @end_time AND ISNULL(FAL.FALT_ListID,0) > 0 AND FAL.FALT_AppFlag ='1' AND (FSH_FromID = 25 OR FSH_FromID = 26);";
- return (sql, parameters);
- }
- }
- private string GetAcceptTypeCode(string name)
- {
- var acceptTypeCode = string.Empty;
- switch (name)
- {
- case "其他":
- acceptTypeCode = "40";
- break;
- case "表扬":
- acceptTypeCode = "25";
- break;
- case "举报":
- acceptTypeCode = "30";
- break;
- case "投诉":
- acceptTypeCode = "35";
- break;
- case "咨询":
- acceptTypeCode = "10";
- break;
- case "建议":
- acceptTypeCode = "15";
- break;
- case "求助":
- acceptTypeCode = "20";
- break;
- case "意见":
- acceptTypeCode = "1";
- break;
- case "惠民帮助":
- acceptTypeCode = "2";
- break;
- case "大气污染举报":
- acceptTypeCode = "3";
- break;
- default:
- acceptTypeCode = "0";
- break;
- }
- return acceptTypeCode;
- }
- private string GetVisitSatisfaction(string name)
- {
- var v = VisitSatisfaction.FirstOrDefault(m => m.DicDataName == name);
- if (v != null) return v.DicDataValue;
- return "-1";
- throw new Exception("没有对应的回访满意度");
- }
- private string GetSatisfaction(string name)
- {
- return name switch
- {
- "非常不满意" => "1",
- "不满意" => "2",
- "一般" => "3",
- "满意" => "4",
- "非常满意" => "5",
- "未接通" => "8",
- "未做评价" => "7",
- "视为满意" => "-1",
- "默认满意" => "9",
- _ => "-2",
- };
- }
- private string GetSeatSatisfaction(string name)
- {
- return name switch
- {
- "非常不满意" => "1",
- "不满意" => "2",
- "一般" => "3",
- "满意" => "4",
- "非常满意" => "5",
- "未接通" => "6",
- "未做评价" => "7",
- "视为满意" => "-1",
- "默认满意" => "0",
- _ => "-2",
- };
- }
- private string GetDissatisfiedReason(string name, DataTransmission.Entity.Config config)
- {
- switch (config.Name)
- {
- case "宜宾市":
- return GetDissatisfiedReason_YB(name);
- case "自贡市":
- return GetDissatisfiedReason_ZG(name);
- case "泸州市":
- return GetDissatisfiedReason_LZ(name);
- default:
- return "";
- }
- }
- private string GetDissatisfiedReason_YB(string name)
- {
- var dissatisfiedReason = string.Empty;
- switch (name)
- {
- case "回复敷衍":
- dissatisfiedReason = "1";
- break;
- case "办件推诿":
- dissatisfiedReason = "2";
- break;
- case "未有效处理工单问题":
- dissatisfiedReason = "3";
- break;
- case "处理案件力度不够":
- dissatisfiedReason = "4";
- break;
- case "未与市民联系":
- dissatisfiedReason = "5";
- break;
- case "阶段性回复":
- dissatisfiedReason = "6";
- break;
- case "未回复":
- dissatisfiedReason = "7";
- break;
- case "对部门工作人员态度不满意":
- dissatisfiedReason = "8";
- break;
- default:
- dissatisfiedReason = "";
- break;
- }
- return dissatisfiedReason;
- }
- private string GetDissatisfiedReason_ZG(string name)
- {
- var dissatisfiedReason = string.Empty;
- switch (name)
- {
- case "回复敷衍":
- dissatisfiedReason = "1";
- break;
- case "办件推诿":
- dissatisfiedReason = "2";
- break;
- case "未有效处理工单问题":
- dissatisfiedReason = "3";
- break;
- case "处理案件力度不够,重视程度不高":
- dissatisfiedReason = "4";
- break;
- case "部门回复与市民诉求不一致":
- dissatisfiedReason = "5";
- break;
- case "个人诉求未满足":
- dissatisfiedReason = "6";
- break;
- case "未与市民联系":
- dissatisfiedReason = "7";
- break;
- case "对部门工作人员态度不满意":
- dissatisfiedReason = "8";
- break;
- case "办件时间长":
- dissatisfiedReason = "9";
- break;
- case "阶段性回复":
- dissatisfiedReason = "10";
- break;
- case "其他":
- dissatisfiedReason = "11";
- break;
- default:
- dissatisfiedReason = "";
- break;
- }
- return dissatisfiedReason;
- }
- private string GetDissatisfiedReason_LZ(string name)
- {
- var dissatisfiedReason = string.Empty;
- switch (name)
- {
- case "回复敷衍":
- dissatisfiedReason = "1";
- break;
- case "办件推诿":
- dissatisfiedReason = "2";
- break;
- case "未有效处理工单问题":
- dissatisfiedReason = "3";
- break;
- case "处理案件力度不够":
- dissatisfiedReason = "4";
- break;
- case "未与市民联系":
- dissatisfiedReason = "5";
- break;
- case "阶段性回复":
- dissatisfiedReason = "6";
- break;
- case "未回复":
- dissatisfiedReason = "7";
- break;
- case "对部门工作人员态度不满意":
- dissatisfiedReason = "8";
- break;
- default:
- dissatisfiedReason = "";
- break;
- }
- return dissatisfiedReason;
- }
- }
|