SystemController.cs 130 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121
  1. using Aspose.Cells;
  2. using EyeSoft.Messanging;
  3. using Microsoft.EntityFrameworkCore.Metadata;
  4. using Microsoft.Extensions.Configuration.UserSecrets;
  5. using OASystem.Domain;
  6. using OASystem.Domain.Entities.Customer;
  7. using OASystem.Domain.Entities.Financial;
  8. using OASystem.Domain.Entities.Groups;
  9. using Org.BouncyCastle.Asn1.Cmp;
  10. using System.Collections;
  11. using static OASystem.API.OAMethodLib.GeneralMethod;
  12. using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
  13. using static QRCoder.PayloadGenerator;
  14. using static Quartz.Logging.OperationName;
  15. using static OASystem.API.OAMethodLib.JWTHelper;
  16. using System.Runtime.Intrinsics.Arm;
  17. using OASystem.Domain.Dtos.Statistics;
  18. using OASystem.Domain.AesEncryption;
  19. namespace OASystem.API.Controllers
  20. {
  21. /// <summary>
  22. /// 系统设置
  23. /// </summary>
  24. //[Authorize]
  25. [Route("api/[controller]/[action]")]
  26. public class SystemController : ControllerBase
  27. {
  28. private readonly CompanyRepository _syscomRep;
  29. private readonly DepartmentRepository _sysDepRep;
  30. private readonly UsersRepository _userRep;
  31. private readonly IMapper _mapper;
  32. private readonly SqlSugarClient _sqlSugar;
  33. private readonly MessageRepository _messageRep;
  34. private readonly SetDataRepository _setDataRepository;
  35. private readonly SystemMenuPermissionRepository _SystemMenuPermissionRepository;
  36. private readonly CompanyRepository _CompanyRepository;
  37. private readonly PageFunctionPermissionRepository _PageFunctionPermissionRepository;
  38. private readonly SystemMenuAndFunctionRepository _SystemMenuAndFunctionRepository;
  39. private readonly JobPostAuthorityRepository _JobPostAuthorityRepository;
  40. private readonly JobPostRepository _jobRep;
  41. private readonly SetDataTypeRepository _setDataTypeRep;
  42. private readonly UserAuthorityRepository _UserAuthorityRepository;
  43. private readonly List<int> _operationTypeList = new List<int>() { 1, 2, 3, 4, 5 }; //操作通知所属类型
  44. private readonly List<int> _taskTypeList = new List<int>() { 6 };//任务通知 TaskNotification
  45. public SystemController(
  46. CompanyRepository syscom,
  47. DepartmentRepository sysDepRep,
  48. UsersRepository userRep,
  49. IMapper mapper,
  50. SqlSugarClient sqlSugar,
  51. SetDataRepository setDataRepository,
  52. CompanyRepository companyRepository,
  53. SystemMenuPermissionRepository systemMenuPermissionRepository,
  54. PageFunctionPermissionRepository pageFunctionPermissionRepository,
  55. SystemMenuAndFunctionRepository systemMenuAndFunctionRepository,
  56. JobPostAuthorityRepository jobPostAuthorityRepository,
  57. JobPostRepository jobRep,
  58. UserAuthorityRepository userAuthorityRepository,
  59. MessageRepository messageRep,
  60. SetDataTypeRepository setDataTypeRep
  61. )
  62. {
  63. _syscomRep = syscom;
  64. _sysDepRep = sysDepRep;
  65. _messageRep = messageRep;
  66. _userRep = userRep;
  67. _mapper = mapper;
  68. _sqlSugar = sqlSugar;
  69. _setDataRepository = setDataRepository;
  70. _CompanyRepository = companyRepository;
  71. _SystemMenuPermissionRepository = systemMenuPermissionRepository;
  72. _PageFunctionPermissionRepository = pageFunctionPermissionRepository;
  73. _SystemMenuAndFunctionRepository = systemMenuAndFunctionRepository;
  74. _JobPostAuthorityRepository = jobPostAuthorityRepository;
  75. _UserAuthorityRepository = userAuthorityRepository;
  76. _jobRep = jobRep;
  77. _setDataTypeRep = setDataTypeRep;
  78. }
  79. #region 消息
  80. /// <summary>
  81. /// 获取消息列表-整合版
  82. /// </summary>
  83. /// <param name="dto"></param>
  84. /// <returns></returns>
  85. [HttpPost]
  86. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  87. public async Task<IActionResult> PsotMsgPageList(MsgDto dto)
  88. {
  89. var msgData = await _messageRep.GetMsgList(dto);
  90. if (msgData.Code != 0)
  91. {
  92. return Ok(JsonView(false, msgData.Msg));
  93. }
  94. return Ok(JsonView(msgData.Data));
  95. }
  96. #region 消息列表 - 分开
  97. /// <summary>
  98. /// 系统消息
  99. /// 消息类型 2024-03-06 14:37
  100. /// </summary>
  101. /// <param name="dto"></param>
  102. /// <returns></returns>
  103. [HttpPost]
  104. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  105. public async Task<IActionResult> PotsMsgTypeData(MsgTypeDto dto)
  106. {
  107. if (dto.PortType < 1 || dto.PortType > 3)
  108. {
  109. return Ok(JsonView(false, "请输入有效的PortType参数。1 Web 2 Android 3 IOS"));
  110. }
  111. if (dto.UserId < 1)
  112. {
  113. return Ok(JsonView(false, "请输入有效的UserId参数。"));
  114. }
  115. var msgData = await _messageRep.PotsMsgTypeData(dto);
  116. if (msgData.Code != 0)
  117. {
  118. return Ok(JsonView(400, msgData.Msg, new string[] { }));
  119. }
  120. return Ok(JsonView(true, msgData.Msg, msgData.Data));
  121. }
  122. /// <summary>
  123. /// 系统消息
  124. /// 消息List 2024-03-06 14:54
  125. /// </summary>
  126. /// <param name="dto"></param>
  127. /// <returns></returns>
  128. [HttpPost]
  129. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  130. public async Task<IActionResult> PotsMessagePageList(PotsMessagePageListDto dto)
  131. {
  132. #region 参数验证
  133. if (dto.PortType < 1 || dto.PortType > 3)
  134. {
  135. return Ok(JsonView(false, "请输入有效的PortType参数。1 Web 2 Android 3 IOS"));
  136. }
  137. var typeData = await _sqlSugar.Queryable<Sys_SetData>().Where(it => it.STid == 77).Select(it => it.Id).ToListAsync();
  138. if (typeData.Count < 0)
  139. {
  140. return Ok(JsonView(false, "消息类型不存在"));
  141. }
  142. if (!typeData.Contains(dto.Type))
  143. {
  144. return Ok(JsonView(false, "请输入有效的Type参数。1021 团组操作通知 1020 任务操作通知 "));
  145. }
  146. if (dto.UserId < 1)
  147. {
  148. return Ok(JsonView(false, "请输入有效的UserId参数。"));
  149. }
  150. if (dto.ReadStatus < 1 || dto.ReadStatus > 3)
  151. {
  152. return Ok(JsonView(false, "请输入有效的ReadStatus参数。1 全部(包含已读/未读) 2 未读 3 已读"));
  153. }
  154. #endregion
  155. //userId
  156. string msgSqlWhere = $" And smra.ReadableUId = {dto.UserId}";
  157. //消息类型
  158. string typeStr = "";
  159. List<NotificationTypeView> messageTypeViews = AppSettingsHelper.Get<NotificationTypeView>("MessageNotificationType");
  160. if (dto.Type == 1020) //任务操作通知
  161. {
  162. typeStr = String.Join(",", messageTypeViews.Where(it => it.TypeId == 1020).FirstOrDefault().MsgTypeIds.ToList());
  163. }
  164. else if (dto.Type == 1021)//团组操作通知
  165. {
  166. typeStr = String.Join(",", messageTypeViews.Where(it => it.TypeId == 1021).FirstOrDefault().MsgTypeIds.ToList());
  167. }
  168. else if (dto.Type == 1022)//公告通知
  169. {
  170. typeStr = String.Join(",", messageTypeViews.Where(it => it.TypeId == 1022).FirstOrDefault().MsgTypeIds.ToList());
  171. }
  172. if (!string.IsNullOrEmpty(typeStr))
  173. {
  174. msgSqlWhere += $" And sm.Type In ({typeStr})";
  175. }
  176. //是否已读处理 1 全部(包含已读/未读) 2 未读 3 已读
  177. if (dto.ReadStatus == 1) msgSqlWhere += "";
  178. else if (dto.ReadStatus == 2) msgSqlWhere += $" And smra.IsRead = {0}";
  179. else if (dto.ReadStatus == 3) msgSqlWhere += $" And smra.IsRead = {1}";
  180. string msgSql = string.Format(@"Select * From(
  181. Select row_number() over(order by sm.ReleaseTime Desc) as RowNumber,
  182. sm.Id,sm.Type,sm.Title,sm.Content,sd.DepName issuerDep,su.CnName issuerUser,
  183. sm.ReleaseTime,smra.ReadableUId,smra.IsRead,sm.DiId,sm.Param
  184. From Sys_Message sm
  185. Inner Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId
  186. Inner Join Sys_Users su On sm.IssuerId = su.Id
  187. Inner Join Sys_Department sd On su.DepId = sd.Id
  188. Inner Join Sys_Users suAuth On smra.ReadableUId = suAuth.Id
  189. Where sm.IsDel = 0
  190. And smra.IsDel = 0 {0}
  191. ) Temp", msgSqlWhere);
  192. try
  193. {
  194. RefAsync<int> totalCount = 0;
  195. var data = await _sqlSugar.SqlQueryable<MessageListView>(msgSql).ToPageListAsync(dto.PageIndex, dto.PageSize, totalCount);
  196. return Ok(JsonView(true, "操作成功!", data, totalCount));
  197. }
  198. catch (Exception ex)
  199. {
  200. return Ok(JsonView(false, ex.Message));
  201. }
  202. }
  203. /// <summary>
  204. /// 系统消息
  205. /// 获取消息未读条数
  206. /// </summary>
  207. /// <param name="dto"></param>
  208. /// <returns></returns>
  209. [HttpPost]
  210. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  211. public async Task<IActionResult> PotsMessageUnreadTotalCount(PotsMessageUnreadTotalCountDto dto)
  212. {
  213. #region 参数验证
  214. if (dto.UserId < 1)
  215. {
  216. return Ok(JsonView(false, "请输入有效的UserId参数。"));
  217. }
  218. #endregion
  219. try
  220. {
  221. int messageUnReadCount = 0;
  222. int announcementUnReadCount = 0;
  223. var data = await _messageRep.GetUnReadCount(dto.UserId);
  224. if (data != null)
  225. {
  226. messageUnReadCount = data;
  227. }
  228. var data1 = await _messageRep.GetAnnouncementUnReadCount(dto.UserId);
  229. if (data1 != null)
  230. {
  231. announcementUnReadCount = data1;
  232. }
  233. return Ok(JsonView(true, "操作成功!", new { messageUnReadCount = messageUnReadCount, announcementUnReadCount = announcementUnReadCount }));
  234. }
  235. catch (Exception ex)
  236. {
  237. return Ok(JsonView(false, ex.Message));
  238. }
  239. }
  240. #endregion
  241. /// <summary>
  242. /// 获取消息详细信息
  243. /// </summary>
  244. /// <param name="dto"></param>
  245. /// <returns></returns>
  246. [HttpPost]
  247. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  248. public async Task<IActionResult> PostMsgInfo(MsgInfoDto dto)
  249. {
  250. if (dto.PortType < 1 || dto.PortType > 3)
  251. {
  252. return Ok(JsonView(false, "请输入有效的PortType参数。1 Web 2 Android 3 IOS"));
  253. }
  254. var msgData = await _messageRep.GetMsgInfo(dto);
  255. if (msgData.Code != 0)
  256. {
  257. return Ok(JsonView(false, msgData.Msg));
  258. }
  259. return Ok(JsonView(true, "操作成功!", msgData.Data));
  260. }
  261. /// <summary>
  262. /// 消息设置已读
  263. /// </summary>
  264. /// <param name="dto"></param>
  265. /// <returns></returns>
  266. [HttpPost]
  267. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  268. public async Task<IActionResult> SetMessageRead(MsgSetReadDto dto)
  269. {
  270. var msgData = await _messageRep.SetMsgRead(dto);
  271. if (msgData.Code != 0)
  272. {
  273. return Ok(JsonView(false, msgData.Msg));
  274. }
  275. return Ok(JsonView(true));
  276. }
  277. /// <summary>
  278. /// 消息 删除
  279. /// </summary>
  280. /// <param name="dto"></param>
  281. /// <returns></returns>
  282. [HttpPost]
  283. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  284. public async Task<IActionResult> DeleMsg(MsgDeleteDto dto)
  285. {
  286. var msgData = await _messageRep.DelMsg(dto);
  287. if (msgData.Code != 0)
  288. {
  289. return Ok(JsonView(false, msgData.Msg));
  290. }
  291. return Ok(JsonView(true));
  292. }
  293. #endregion
  294. #region 数据类型资料
  295. /// <summary>
  296. /// 根据类型查询数据
  297. /// </summary>
  298. /// <param name="dto"></param>
  299. /// <returns></returns>
  300. [HttpPost]
  301. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  302. public async Task<IActionResult> QuerySetData(SetDataDto dto)
  303. {
  304. try
  305. {
  306. if (dto.DataType == 0)
  307. {
  308. return Ok(JsonView(false, "请传类型Id!"));
  309. }
  310. var setData = _setDataRepository.QueryDto<Sys_SetData, SetDataView>(s => s.STid == dto.DataType && s.IsDel == 0).ToList();
  311. if (setData.Count == 0)
  312. {
  313. return Ok(JsonView(false, "暂无数据!"));
  314. }
  315. return Ok(JsonView(true, "查询成功!", setData));
  316. }
  317. catch (Exception ex)
  318. {
  319. return Ok(JsonView(false, "程序错误!"));
  320. throw;
  321. }
  322. }
  323. /// <summary>
  324. /// 根据类型查询数据(Array)
  325. /// </summary>
  326. /// <returns></returns>
  327. [HttpPost]
  328. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  329. public IActionResult QuerySetDataInitByArr(QuerySetDataInitByArr Dto)
  330. {
  331. var DbQuery = _setDataRepository.QueryDto<Sys_SetData, SetDataView>(s => Dto.DataTypeArr.Contains(s.STid)).ToList();
  332. var GroupResult = DbQuery.GroupBy(x => x.STid).Select(x => new
  333. {
  334. key = x.Key,
  335. Arr = x.ToList()
  336. });
  337. return Ok(JsonView(true, "查询成功!", GroupResult));
  338. }
  339. /// <summary>
  340. /// 数据类型表查询
  341. /// </summary>
  342. /// <param name="dto"></param>
  343. /// <returns></returns>
  344. [HttpPost]
  345. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  346. public async Task<IActionResult> QuerySetDataType(SetDataTypeDto dto)
  347. {
  348. try
  349. {
  350. Result setDataType = await _setDataTypeRep.QuerySetDataType(dto);
  351. if (setDataType.Code == 0)
  352. {
  353. return Ok(JsonView(true, "查询成功", setDataType.Data));
  354. }
  355. else
  356. {
  357. return Ok(JsonView(false, setDataType.Msg));
  358. }
  359. }
  360. catch (Exception)
  361. {
  362. return Ok(JsonView(false, "程序错误!"));
  363. throw;
  364. }
  365. }
  366. /// <summary>
  367. /// 数据类型表操作(Status:1.新增,2.修改)
  368. /// </summary>
  369. /// <param name="dto"></param>
  370. /// <returns></returns>
  371. [HttpPost]
  372. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  373. public async Task<IActionResult> OperationSetDataType(OperationSetDataTypeDto dto)
  374. {
  375. try
  376. {
  377. if (dto.Name == "")
  378. {
  379. return Ok(JsonView(false, "请检查类型名称是否填写!"));
  380. }
  381. Result result = await _setDataTypeRep.OperationSetDataType(dto);
  382. if (result.Code != 0)
  383. {
  384. return Ok(JsonView(false, result.Msg));
  385. }
  386. return Ok(JsonView(true, result.Msg));
  387. }
  388. catch (Exception ex)
  389. {
  390. return Ok(JsonView(false, "程序错误!"));
  391. throw;
  392. }
  393. }
  394. /// <summary>
  395. /// 数据类型表操作删除
  396. /// </summary>
  397. /// <param name="dto"></param>
  398. /// <returns></returns>
  399. [HttpPost]
  400. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  401. public async Task<IActionResult> DelSetDataType(DelSetDataTypeDto dto)
  402. {
  403. try
  404. {
  405. var res = await _setDataTypeRep.SoftDeleteByIdAsync<Sys_SetDataType>(dto.Id.ToString(), dto.DeleteUserId);
  406. if (!res)
  407. {
  408. return Ok(JsonView(false, "删除失败"));
  409. }
  410. return Ok(JsonView(true, "删除成功!"));
  411. }
  412. catch (Exception ex)
  413. {
  414. return Ok(JsonView(false, "程序错误!"));
  415. throw;
  416. }
  417. }
  418. #endregion
  419. #region 数据类型板块
  420. /// <summary>
  421. /// 数据类型板块表查询
  422. /// </summary>
  423. /// <param name="dto"></param>
  424. /// <returns></returns>
  425. [HttpPost]
  426. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  427. public async Task<IActionResult> QuerySetDataInfo(SetDataIDto dto)
  428. {
  429. try
  430. {
  431. Result setData = await _setDataRepository.QuerySetData(dto);
  432. if (setData.Code == 0)
  433. {
  434. return Ok(JsonView(true, "查询成功", setData.Data));
  435. }
  436. else
  437. {
  438. return Ok(JsonView(false, setData.Msg));
  439. }
  440. }
  441. catch (Exception)
  442. {
  443. return Ok(JsonView(false, "程序错误!"));
  444. throw;
  445. }
  446. }
  447. /// <summary>
  448. /// 数据类型板块表操作(Status:1.新增,2.修改)
  449. /// </summary>
  450. /// <param name="dto"></param>
  451. /// <returns></returns>
  452. [HttpPost]
  453. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  454. public async Task<IActionResult> OperationSetData(OperationSetDataDto dto)
  455. {
  456. try
  457. {
  458. if (dto.Name == "")
  459. {
  460. return Ok(JsonView(false, "请检查板块名称是否填写!"));
  461. }
  462. Result result = await _setDataRepository.OperationSetData(dto);
  463. if (result.Code != 0)
  464. {
  465. return Ok(JsonView(false, result.Msg));
  466. }
  467. return Ok(JsonView(true, result.Msg));
  468. }
  469. catch (Exception ex)
  470. {
  471. return Ok(JsonView(false, "程序错误!"));
  472. throw;
  473. }
  474. }
  475. /// <summary>
  476. /// 数据类型表操作删除
  477. /// </summary>
  478. /// <param name="dto"></param>
  479. /// <returns></returns>
  480. [HttpPost]
  481. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  482. public async Task<IActionResult> DelSetData(DelSetDataDto dto)
  483. {
  484. try
  485. {
  486. var res = await _setDataRepository.SoftDeleteByIdAsync<Sys_SetData>(dto.Id.ToString(), dto.DeleteUserId);
  487. if (!res)
  488. {
  489. return Ok(JsonView(false, "删除失败"));
  490. }
  491. return Ok(JsonView(true, "删除成功!"));
  492. }
  493. catch (Exception ex)
  494. {
  495. return Ok(JsonView(false, "程序错误!"));
  496. throw;
  497. }
  498. }
  499. #endregion
  500. #region 企业操作
  501. /// <summary>
  502. /// 查询企业数据
  503. /// </summary>
  504. /// <param name="dto"></param>
  505. /// <returns></returns>
  506. [HttpPost]
  507. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  508. public async Task<IActionResult> getCompanyList(DtoBase dto)
  509. {
  510. try
  511. {
  512. if (dto.PortType == 1)
  513. {
  514. var CompanyDataResult = _CompanyRepository.GetCompanyData();
  515. if (CompanyDataResult.Code != 0)
  516. {
  517. return Ok(JsonView(CompanyDataResult.Msg));
  518. }
  519. List<CompanyView> companyListView = _mapper.Map<List<CompanyView>>(CompanyDataResult.Data);
  520. for (int i = 0; i < companyListView.Count; i++)
  521. {
  522. if (companyListView[i].ParentCompanyId != 0)
  523. {
  524. companyListView[i].ParentCompanyName = companyListView.Find(x => x.Id == companyListView[i].ParentCompanyId).CompanyName;
  525. }
  526. if (companyListView[i].ContactUserId != 0)
  527. {
  528. var user = _userRep.QueryDto<Sys_Users, UserInfoWebView>(x => x.Id == companyListView[i].ContactUserId).ToList();
  529. if (user.Count != 0)
  530. {
  531. companyListView[i].ContactUserName = user[0].CnName;
  532. }
  533. }
  534. }
  535. return Ok(JsonView(true, "查询成功!", companyListView));
  536. }
  537. else if (dto.PortType == 2)
  538. {
  539. var CompanyDataResult = _CompanyRepository.GetCompanyData();
  540. if (CompanyDataResult.Code != 0)
  541. {
  542. return Ok(JsonView(CompanyDataResult.Msg));
  543. }
  544. return Ok(JsonView(true, "查询成功!", CompanyDataResult.Data));
  545. }
  546. else if (dto.PortType == 3)
  547. {
  548. return Ok(JsonView(false, "暂无数据!"));
  549. }
  550. else
  551. {
  552. return Ok(JsonView(false, "暂无数据!"));
  553. }
  554. }
  555. catch (Exception ex)
  556. {
  557. return Ok(JsonView(false, "程序错误!"));
  558. throw;
  559. }
  560. }
  561. /// <summary>
  562. /// 添加企业数据
  563. /// </summary>
  564. /// <param name="dto"></param>
  565. /// <returns></returns>
  566. [HttpPost]
  567. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  568. public async Task<IActionResult> AddCompany(AddCompanyDto dto)
  569. {
  570. try
  571. {
  572. if (string.IsNullOrWhiteSpace(dto.CompanyName) || dto.CreateUserId == 0 || string.IsNullOrWhiteSpace(dto.CompanyCode))
  573. {
  574. return Ok(JsonView(false, "请检查信息是否输入完整!"));
  575. }
  576. else if (string.IsNullOrWhiteSpace(dto.Tel))
  577. {
  578. return Ok(JsonView(false, "请检查联系方式是否输入正确!"));
  579. }
  580. else
  581. {
  582. Sys_Company _Company = _mapper.Map<Sys_Company>(dto);
  583. Result data = await _syscomRep.AddCompany(_Company);
  584. if (data.Code != 0)
  585. {
  586. return Ok(JsonView(false, "添加失败!"));
  587. }
  588. return Ok(JsonView(true, "添加成功"));
  589. }
  590. }
  591. catch (Exception)
  592. {
  593. return Ok(JsonView(false, "程序错误!"));
  594. throw;
  595. }
  596. }
  597. /// <summary>
  598. /// 企业修改
  599. /// </summary>
  600. /// <param name="dto"></param>
  601. /// <returns></returns>
  602. [HttpPost]
  603. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  604. public async Task<IActionResult> EditCompany(EditCompanyDto dto)
  605. {
  606. try
  607. {
  608. if (string.IsNullOrWhiteSpace(dto.CompanyName) || string.IsNullOrWhiteSpace(dto.CompanyCode) || string.IsNullOrWhiteSpace(dto.Address) || dto.ContactUserId == 0)
  609. {
  610. return Ok(JsonView(false, "请检查信息是否输入完整!"));
  611. }
  612. else if (string.IsNullOrWhiteSpace(dto.Tel))
  613. {
  614. return Ok(JsonView(false, "请检查联系方式是否输入正确!"));
  615. }
  616. else
  617. {
  618. bool res = await _syscomRep.UpdateAsync(a => a.Id == dto.Id, a => new Sys_Company
  619. {
  620. CompanyName = dto.CompanyName,
  621. CompanyCode = dto.CompanyCode,
  622. Address = dto.Address,
  623. ParentCompanyId = dto.ParentCompanyId,
  624. Tel = dto.Tel,
  625. ContactUserId = dto.ContactUserId,
  626. Remark = dto.Remark,
  627. });
  628. if (!res) { return Ok(JsonView(false, "修改失败")); }
  629. return Ok(JsonView(true, "修改成功!"));
  630. }
  631. }
  632. catch (Exception)
  633. {
  634. return Ok(JsonView(false, "程序错误!"));
  635. throw;
  636. }
  637. }
  638. /// <summary>
  639. /// 企业删除
  640. /// </summary>
  641. /// <param name="dto"></param>
  642. /// <returns></returns>
  643. [HttpPost]
  644. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  645. public async Task<IActionResult> DelCompany(DelCompanyDto dto)
  646. {
  647. try
  648. {
  649. bool res = await _syscomRep.SoftDeleteAsync<Sys_Company>(dto.Id.ToString());
  650. if (!res) { return Ok(JsonView(false, "删除失败")); }
  651. return Ok(JsonView(true, "删除成功"));
  652. }
  653. catch (Exception)
  654. {
  655. return Ok(JsonView(false, "程序错误!"));
  656. throw;
  657. }
  658. }
  659. #endregion
  660. #region 部门操作
  661. /// <summary>
  662. /// 查询部门数据
  663. /// </summary>
  664. /// <param name="dto"></param>
  665. /// <returns></returns>
  666. [HttpPost]
  667. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  668. public async Task<IActionResult> QueryDepartmentList(DepartmentDto dto)
  669. {
  670. try
  671. {
  672. if (dto.PortType == 1)
  673. {
  674. if (dto.CompanyId != 0)
  675. {
  676. var result = _sysDepRep.QueryDto<Sys_Department, DepartmentIView>(s => s.CompanyId == dto.CompanyId).ToList();
  677. if (result.Count == 0)
  678. {
  679. return Ok(JsonView(false, "暂无数据!"));
  680. }
  681. for (int i = 0; i < result.Count; i++)
  682. {
  683. if (result[i].ParentDepId != 0)
  684. {
  685. result[i].ParentDepName = result.Find(x => x.Id == result[i].ParentDepId).ParentDepName;
  686. }
  687. var company = _sysDepRep.QueryDto<Sys_Company, CompanyView>(s => s.Id == result[i].CompanyId).ToList();
  688. if (company.Count != 0)
  689. {
  690. result[i].CompanyName = company[0].CompanyName;
  691. }
  692. return Ok(JsonView(true, "查询成功!", result));
  693. }
  694. }
  695. else
  696. {
  697. var result = _sysDepRep.QueryDto<Sys_Department, DepartmentIView>(s => s.IsDel <= 1).ToList();
  698. if (result.Count == 0)
  699. {
  700. return Ok(JsonView(false, "暂无数据!"));
  701. }
  702. for (int i = 0; i < result.Count; i++)
  703. {
  704. if (result[i].ParentDepId != 0)
  705. {
  706. result[i].ParentDepName = result.Find(x => x.Id == result[i].ParentDepId).ParentDepName;
  707. }
  708. var company = _sysDepRep.QueryDto<Sys_Company, CompanyView>(s => s.Id == result[i].CompanyId).ToList();
  709. if (company.Count != 0)
  710. {
  711. result[i].CompanyName = company[0].CompanyName;
  712. }
  713. }
  714. return Ok(JsonView(true, "查询成功!", result));
  715. }
  716. return Ok(JsonView(false, "暂无数据!"));
  717. }
  718. else if (dto.PortType == 2)
  719. {
  720. var result = _sysDepRep.QueryDto<Sys_Department, DepartmentIView>(s => s.CompanyId == dto.CompanyId).ToList();
  721. if (result.Count == 0)
  722. {
  723. return Ok(JsonView(400, "暂无数据!", new List<string>()));
  724. }
  725. return Ok(JsonView(true, "查询成功!", result));
  726. }
  727. else if (dto.PortType == 3)
  728. {
  729. return Ok(JsonView(false, "暂无数据!"));
  730. }
  731. else
  732. {
  733. return Ok(JsonView(false, "暂无数据!"));
  734. }
  735. }
  736. catch (Exception ex)
  737. {
  738. return Ok(JsonView(false, "程序错误!"));
  739. throw;
  740. }
  741. }
  742. /// <summary>
  743. /// 部门添加
  744. /// </summary>
  745. /// <param name="dto"></param>
  746. /// <returns></returns>
  747. [HttpPost]
  748. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  749. public async Task<IActionResult> AddDepartment(AddDepartmentDto dto)
  750. {
  751. try
  752. {
  753. if (dto.CreateUserId == 0 || string.IsNullOrWhiteSpace(dto.DepName) || dto.CompanyId == 0 || string.IsNullOrWhiteSpace(dto.DepCode))
  754. {
  755. return Ok(JsonView(false, "请检查信息是否输入完整!"));
  756. }
  757. else
  758. {
  759. Sys_Department _Department = _mapper.Map<Sys_Department>(dto);
  760. int id = await _sysDepRep.AddAsyncReturnId(_Department);
  761. if (id == 0)
  762. {
  763. return Ok(JsonView(false, "添加失败!"));
  764. }
  765. return Ok(JsonView(true, "添加成功!", new { Id = id }));
  766. }
  767. }
  768. catch (Exception)
  769. {
  770. return Ok(JsonView(false, "程序错误!"));
  771. throw;
  772. }
  773. }
  774. /// <summary>
  775. /// 部门修改
  776. /// </summary>
  777. /// <param name="dto"></param>
  778. /// <returns></returns>
  779. [HttpPost]
  780. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  781. public async Task<IActionResult> EditDepartment(EditDepartmentDto dto)
  782. {
  783. try
  784. {
  785. if (dto.Id == 0 || string.IsNullOrWhiteSpace(dto.DepName) || dto.CompanyId == 0 || string.IsNullOrWhiteSpace(dto.DepCode))
  786. {
  787. return Ok(JsonView(false, "请检查信息是否输入完整!"));
  788. }
  789. else
  790. {
  791. bool res = await _sysDepRep.UpdateAsync<Sys_Department>(a => a.Id == dto.Id, a => new Sys_Department
  792. {
  793. CompanyId = dto.CompanyId,
  794. DepCode = dto.DepCode,
  795. DepName = dto.DepName,
  796. ParentDepId = dto.ParentDepId,
  797. Remark = dto.Remark,
  798. });
  799. if (!res)
  800. {
  801. return Ok(JsonView(false, "修改失败!"));
  802. }
  803. return Ok(JsonView(true, "修改成功!"));
  804. }
  805. }
  806. catch (Exception)
  807. {
  808. return Ok(JsonView(false, "程序错误!"));
  809. throw;
  810. }
  811. }
  812. /// <summary>
  813. /// 部门删除
  814. /// </summary>
  815. /// <param name="dto"></param>
  816. /// <returns></returns>
  817. [HttpPost]
  818. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  819. public async Task<IActionResult> DelDepartment(DelDepartmentDto dto)
  820. {
  821. try
  822. {
  823. if (dto.Id == 0)
  824. {
  825. return Ok(JsonView(-1, "请检查信息是否输入完整!", null));
  826. }
  827. else
  828. {
  829. bool res = await _sysDepRep.SoftDeleteAsync<Sys_Department>(dto.Id.ToString());
  830. if (!res)
  831. {
  832. return Ok(JsonView(false, "删除失败!"));
  833. }
  834. return Ok(JsonView(true, "删除成功!"));
  835. }
  836. }
  837. catch (Exception)
  838. {
  839. return Ok(JsonView(false, "程序错误!"));
  840. throw;
  841. }
  842. }
  843. #endregion
  844. #region 岗位板块
  845. /// <summary>
  846. /// 岗位查询
  847. /// </summary>
  848. /// <param name="dto"></param>
  849. /// <returns></returns>
  850. [HttpPost]
  851. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  852. public async Task<IActionResult> QueryJobPost(QueryJobPostDto dto)
  853. {
  854. try
  855. {
  856. if (dto.PortType == 1)
  857. {
  858. string sqlWhere = string.Empty;
  859. if (dto.CompanyId != 0)
  860. {
  861. sqlWhere += string.Format(@" And jp.CompanyId={0}", dto.CompanyId);
  862. }
  863. if (dto.DepId != 0)
  864. {
  865. sqlWhere += string.Format(@" And jp.DepId={0}", dto.DepId);
  866. }
  867. sqlWhere += string.Format(@" And jp.IsDel={0}", 0);
  868. if (!string.IsNullOrEmpty(sqlWhere.Trim()))
  869. {
  870. Regex r = new Regex("And");
  871. sqlWhere = r.Replace(sqlWhere, "Where", 1);
  872. }
  873. List<Sys_JobPostI> jobList = await _jobRep.QueryJobPost(sqlWhere);
  874. List<JobPostView> List = _mapper.Map<List<JobPostView>>(jobList);
  875. if (jobList.Count == 0)
  876. {
  877. return Ok(JsonView(false, "暂无数据!"));
  878. }
  879. return Ok(JsonView(true, "查询成功!", jobList));
  880. }
  881. else if (dto.PortType == 2)
  882. {
  883. var result = _jobRep.QueryDto<Sys_JobPost, JobPostView>(s => s.CompanyId == dto.CompanyId && s.DepId == dto.DepId).ToList();
  884. if (result.Count == 0)
  885. {
  886. return Ok(JsonView(false, "暂无数据!"));
  887. }
  888. return Ok(JsonView(true, "查询成功!", result));
  889. }
  890. else if (dto.PortType == 3)
  891. {
  892. return Ok(JsonView(false, "暂无数据!"));
  893. }
  894. else
  895. {
  896. return Ok(JsonView(false, "暂无数据!"));
  897. }
  898. }
  899. catch (Exception ex)
  900. {
  901. return Ok(JsonView(false, "程序错误!"));
  902. throw;
  903. }
  904. }
  905. /// <summary>
  906. /// 添加岗位
  907. /// </summary>
  908. /// <param name="dto"></param>
  909. /// <returns></returns>
  910. [HttpPost]
  911. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  912. public async Task<IActionResult> AddJobPost(AddJobPostDto dto)
  913. {
  914. try
  915. {
  916. Sys_JobPost sys_Job = _mapper.Map<Sys_JobPost>(dto);
  917. int id = await _jobRep.AddAsyncReturnId(sys_Job);
  918. if (id == 0)
  919. {
  920. return Ok(JsonView(false, "添加失败"));
  921. }
  922. return Ok(JsonView(true, "添加成功", new { Id = id }));
  923. }
  924. catch (Exception ex)
  925. {
  926. return Ok(JsonView(false, "程序错误!"));
  927. throw;
  928. }
  929. }
  930. /// <summary>
  931. /// 修改岗位
  932. /// </summary>
  933. /// <param name="dto"></param>
  934. /// <returns></returns>
  935. [HttpPost]
  936. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  937. public async Task<IActionResult> EditJobPost(EditJobPostDto dto)
  938. {
  939. try
  940. {
  941. bool res = await _jobRep.UpdateAsync<Sys_JobPost>(a => a.Id == dto.Id, a => new Sys_JobPost
  942. {
  943. CompanyId = dto.CompanyId,
  944. DepId = dto.DepId,
  945. JobName = dto.JobName,
  946. Remark = dto.Remark,
  947. });
  948. if (!res)
  949. {
  950. return Ok(JsonView(false, "修改失败"));
  951. }
  952. return Ok(JsonView(true, "修改成功"));
  953. }
  954. catch (Exception ex)
  955. {
  956. return Ok(JsonView(false, "程序错误!"));
  957. throw;
  958. }
  959. }
  960. /// <summary>
  961. /// 删除岗位
  962. /// </summary>
  963. /// <param name="dto"></param>
  964. /// <returns></returns>
  965. [HttpPost]
  966. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  967. public async Task<IActionResult> DelJobPost(DelJobPostDto dto)
  968. {
  969. try
  970. {
  971. bool res = await _jobRep.SoftDeleteAsync<Sys_JobPost>(dto.Id.ToString());
  972. if (!res)
  973. {
  974. return Ok(JsonView(false, "删除失败!"));
  975. }
  976. return Ok(JsonView(true, "删除成功"));
  977. }
  978. catch (Exception)
  979. {
  980. return Ok(JsonView(false, "程序错误!"));
  981. throw;
  982. }
  983. }
  984. #endregion
  985. #region 用户操作
  986. /// <summary>
  987. /// 查询所有员工名称
  988. /// </summary>
  989. /// <param name="dto"></param>
  990. /// <returns></returns>
  991. [HttpPost]
  992. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  993. public async Task<IActionResult> GetUserNameList(DtoBase dto)
  994. {
  995. try
  996. {
  997. var result = _userRep.GetUserNameList(dto.PortType);
  998. if (result.Result.Code != 0)
  999. {
  1000. return Ok(JsonView(false, "暂无数据!"));
  1001. }
  1002. return Ok(JsonView(true, "查询成功!", result.Result.Data));
  1003. }
  1004. catch (Exception)
  1005. {
  1006. return Ok(JsonView(false, "程序错误!"));
  1007. throw;
  1008. }
  1009. }
  1010. /// <summary>
  1011. /// 查询所有员工(web)
  1012. /// </summary>
  1013. /// <param name="dto"></param>
  1014. /// <returns></returns>
  1015. [HttpPost]
  1016. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1017. public async Task<IActionResult> GetUserList(DtoBase dto)
  1018. {
  1019. try
  1020. {
  1021. var result = _userRep.GetUserList(dto.PortType, string.Empty);
  1022. if (result.Result.Code != 0)
  1023. {
  1024. return Ok(JsonView(false, "暂无数据!"));
  1025. }
  1026. return Ok(JsonView(true, "查询成功!", result.Result.Data));
  1027. }
  1028. catch (Exception)
  1029. {
  1030. return Ok(JsonView(false, "程序错误!"));
  1031. throw;
  1032. }
  1033. }
  1034. /// <summary>
  1035. /// 查询用户数据
  1036. /// </summary>
  1037. /// <param name="dto"></param>
  1038. /// <returns></returns>
  1039. [HttpPost]
  1040. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1041. public async Task<IActionResult> QueryUserList(UserDto dto)
  1042. {
  1043. try
  1044. {
  1045. string sqlWhere = string.Format(" Where su.IsDel = 0 ");
  1046. if (dto.CompanyId != 0)
  1047. {
  1048. sqlWhere += string.Format(@" And su.CompanyId={0}", dto.CompanyId);
  1049. }
  1050. if (dto.DepId != 0)
  1051. {
  1052. sqlWhere += string.Format(@" And su.DepId={0}", dto.DepId);
  1053. }
  1054. if (dto.JobPostId != 0)
  1055. {
  1056. sqlWhere += string.Format(@" And su.JobPostId={0}", dto.JobPostId);
  1057. }
  1058. List<UserInfo> _userList = await _userRep.QueryUser(sqlWhere);
  1059. if (_userList.Count == 0)
  1060. {
  1061. return Ok(JsonView(400, "暂无数据!", new List<String>()));
  1062. }
  1063. List<UserInfoWebView> userList = _mapper.Map<List<UserInfoWebView>>(_userList);
  1064. return Ok(JsonView(true, "查询成功!", userList));
  1065. }
  1066. catch (Exception)
  1067. {
  1068. return Ok(JsonView(false, "程序错误!"));
  1069. throw;
  1070. }
  1071. }
  1072. /// <summary>
  1073. /// 员工信息 个人详细信息
  1074. /// </summary>
  1075. /// <returns></returns>
  1076. [HttpPost]
  1077. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1078. public async Task<IActionResult> UserInfo(UserInfoDto dto)
  1079. {
  1080. if (dto.Id < 1) return Ok(JsonView(false, "请选择有效的userId!"));
  1081. if (dto.PortType < 1 || dto.PortType > 3) return Ok(JsonView(false, MsgTips.Port));
  1082. var _view = await _sqlSugar.Queryable<Sys_Users>()
  1083. .Where(x => x.IsDel == 0 && x.Id == dto.Id)
  1084. .Select(x => new
  1085. {
  1086. x.Id,
  1087. x.CnName,
  1088. x.EnName,
  1089. x.Number,
  1090. x.CompanyId,
  1091. x.DepId,
  1092. x.JobPostId,
  1093. x.Password,
  1094. x.Sex,
  1095. x.Ext,
  1096. x.Phone,
  1097. x.UrgentPhone,
  1098. x.Email,
  1099. x.Address,
  1100. x.Edate,
  1101. //x.Seniority,
  1102. x.Birthday,
  1103. x.IDCard,
  1104. x.StartWorkDate,
  1105. x.GraduateInstitutions,
  1106. x.Professional,
  1107. x.Education,
  1108. x.TheOrAdultEducation,
  1109. x.MaritalStatus,
  1110. x.HomeAddress,
  1111. x.UsePeriod,
  1112. x.WorkExperience,
  1113. x.Certificate,
  1114. //x.QiyeChatUserId,
  1115. x.Remark
  1116. }).FirstAsync();
  1117. return Ok(JsonView(true, "操作成功!", _view));
  1118. }
  1119. /// <summary>
  1120. /// 员工信息 All信息修改
  1121. /// </summary>
  1122. /// <returns></returns>
  1123. [HttpPost]
  1124. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1125. public async Task<IActionResult> EditUserInfo(EditUserInfoDto _dto)
  1126. {
  1127. EditUserInfoDtoValidator validator = new EditUserInfoDtoValidator();
  1128. var validatorRes = await validator.ValidateAsync(_dto);
  1129. if (!validatorRes.IsValid)
  1130. {
  1131. var errors = new StringBuilder();
  1132. foreach (var error in validatorRes.Errors) errors.AppendLine(error.ErrorMessage);
  1133. return Ok(JsonView(false, errors.ToString()));
  1134. }
  1135. var userInfo = _mapper.Map<Sys_Users>(_dto);
  1136. if (_dto.CurrUserId < 1) return Ok(JsonView(false, "暂无修改权限!"));
  1137. //修改权限验证 指定人员 信息部门(4)和人事部刘一茹( 230)、赖红燕(309)
  1138. List<int> userIds = new List<int>() {
  1139. 4 ,//管理员
  1140. 5 ,//杨俊霄
  1141. 117 ,//人事审核号
  1142. 208 ,//雷怡
  1143. 230 ,//刘一茹
  1144. 233 ,//刘华举
  1145. 234 ,//蒋金辰
  1146. 235 ,//袁榕烽
  1147. 309 ,//赖红燕
  1148. };
  1149. if (!userIds.Contains(_dto.CurrUserId)) return Ok(JsonView(false, "暂无修改权限!"));
  1150. var res = await _sqlSugar.Updateable(userInfo)
  1151. .IgnoreColumns(x => new
  1152. {
  1153. x.QiyeChatUserId,
  1154. x.Rdate,
  1155. x.Seniority,
  1156. x.HrAudit,
  1157. x.CreateUserId,
  1158. x.CreateTime,
  1159. x.DeleteUserId,
  1160. x.DeleteTime,
  1161. x.IsDel
  1162. })
  1163. .Where(x => x.Id == _dto.Id)
  1164. .ExecuteCommandAsync();
  1165. if (res > 0) return Ok(JsonView(true, "操作成功!"));
  1166. return Ok(JsonView(false, "操作失败!"));
  1167. }
  1168. /// <summary>
  1169. /// 修改用户信息(上级修改/分配 公司、部门、岗位、工号等信息)
  1170. /// </summary>
  1171. /// <param name="dto"></param>
  1172. /// <returns></returns>
  1173. [HttpPost]
  1174. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1175. public async Task<IActionResult> EditUser(EditUserDto dto)
  1176. {
  1177. try
  1178. {
  1179. if (dto.CurrUserId < 1) return Ok(JsonView(false, "暂无修改权限!"));
  1180. //修改权限验证 指定人员 信息部门(4)和人事部刘一茹( 230)、赖红燕(309)
  1181. List<int> userIds = new List<int>() {
  1182. 4 ,//管理员
  1183. 5 ,//杨俊霄
  1184. 117 ,//人事审核号
  1185. 208 ,//雷怡
  1186. 230 ,//刘一茹
  1187. 233 ,//刘华举
  1188. 234 ,//蒋金辰
  1189. 235 ,//袁榕烽
  1190. 309 ,//赖红燕
  1191. };
  1192. if (!userIds.Contains(dto.CurrUserId)) return Ok(JsonView(false, "暂无修改权限!"));
  1193. bool res = await _userRep.UpdateAsync<Sys_Users>(a => a.Id == dto.Id, a => new Sys_Users
  1194. {
  1195. Number = dto.Number,
  1196. CompanyId = dto.CompanyId,
  1197. DepId = dto.DepId,
  1198. JobPostId = dto.JobPostId,
  1199. Ext = dto.Ext,
  1200. UsePeriod = dto.UsePeriod,
  1201. //HrAudit = dto.HrAudit
  1202. });
  1203. if (!res)
  1204. {
  1205. return Ok(JsonView(false, "修改失败!"));
  1206. }
  1207. return Ok(JsonView(true, "修改成功!"));
  1208. }
  1209. catch (Exception)
  1210. {
  1211. return Ok(JsonView(false, "程序错误!"));
  1212. }
  1213. }
  1214. /// <summary>
  1215. /// 修改用户信息(登录用户修改个人信息)
  1216. /// </summary>
  1217. /// <param name="dto"></param>
  1218. /// <returns></returns>
  1219. [HttpPost]
  1220. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1221. public async Task<IActionResult> EditMyUser(EditMyUserDto dto)
  1222. {
  1223. try
  1224. {
  1225. if (string.IsNullOrWhiteSpace(dto.CnName) || string.IsNullOrWhiteSpace(dto.Address) || string.IsNullOrWhiteSpace(dto.IDCard) || dto.Sex != 0 && dto.Sex != 1 ||
  1226. string.IsNullOrWhiteSpace(dto.MaritalStatus) || string.IsNullOrWhiteSpace(dto.HomeAddress) || dto.Birthday >= DateTime.Now.AddYears(-1))
  1227. {
  1228. return Ok(JsonView(false, "请完善你的个人信息!"));
  1229. }
  1230. else if (string.IsNullOrWhiteSpace(dto.GraduateInstitutions) || string.IsNullOrWhiteSpace(dto.Professional) || dto.Education == 0 || string.IsNullOrWhiteSpace(dto.GraduateInstitutions))
  1231. {
  1232. return Ok(JsonView(false, "请完善你的学历信息!"));
  1233. }
  1234. else if (string.IsNullOrWhiteSpace(dto.Phone) || string.IsNullOrWhiteSpace(dto.UrgentPhone) || string.IsNullOrWhiteSpace(dto.Email))
  1235. {
  1236. return Ok(JsonView(false, "请检查联系方式、紧急联系人及邮箱输写是否正确!"));
  1237. }
  1238. else
  1239. {
  1240. bool res = await _userRep.UpdateAsync<Sys_Users>(a => a.Id == dto.Id, a => new Sys_Users
  1241. {
  1242. CnName = dto.CnName,
  1243. EnName = dto.EnName,
  1244. Sex = dto.Sex,
  1245. Phone = dto.Phone,
  1246. UrgentPhone = dto.UrgentPhone,
  1247. Email = dto.Email,
  1248. Address = dto.Address,
  1249. Edate = dto.Edate,
  1250. Birthday = dto.Birthday,
  1251. IDCard = dto.IDCard,
  1252. GraduateInstitutions = dto.GraduateInstitutions,
  1253. Professional = dto.Professional,
  1254. Education = dto.Education,
  1255. TheOrAdultEducation = dto.TheOrAdultEducation,
  1256. MaritalStatus = dto.MaritalStatus,
  1257. HomeAddress = dto.HomeAddress,
  1258. WorkExperience = dto.WorkExperience,
  1259. Certificate = dto.Certificate
  1260. });
  1261. if (!res)
  1262. {
  1263. return Ok(JsonView(false, "修改失败!"));
  1264. }
  1265. return Ok(JsonView(true, "修改成功!"));
  1266. }
  1267. }
  1268. catch (Exception)
  1269. {
  1270. return Ok(JsonView(false, "程序错误!"));
  1271. throw;
  1272. }
  1273. }
  1274. /// <summary>
  1275. /// 删除用户信息
  1276. /// 即为离职
  1277. /// </summary>
  1278. /// <param name="dto"></param>
  1279. /// <returns></returns>
  1280. [HttpPost]
  1281. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1282. public async Task<IActionResult> PostUserDelById(UserDelDto dto)
  1283. {
  1284. try
  1285. {
  1286. if (dto == null)
  1287. {
  1288. return Ok(JsonView(false, "参数不能为空!"));
  1289. }
  1290. Sys_Users _Users = _sqlSugar.Queryable<Sys_Users>().First(a => a.IsDel == 0 && a.Id == dto.Id);
  1291. if (_Users != null)
  1292. {
  1293. List<Sys_Users> sys_UsersList = _sqlSugar.Queryable<Sys_Users>().Where(a => a.IsDel == 0 && a.CompanyId == _Users.CompanyId).ToList();
  1294. if (sys_UsersList.Count == 1)
  1295. {
  1296. return Ok(JsonView(false, "该人员为公司最后一位,不可删除!"));
  1297. }
  1298. }
  1299. bool res = await _userRep.UpdateAsync<Sys_Users>(a => a.Id == dto.Id, a => new Sys_Users
  1300. {
  1301. IsDel = 1,
  1302. DeleteUserId = dto.OperateUserId,
  1303. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
  1304. Rdate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
  1305. });
  1306. if (!res)
  1307. {
  1308. return Ok(JsonView(false, "操作失败!"));
  1309. }
  1310. return Ok(JsonView(true, "操作成功!"));
  1311. }
  1312. catch (Exception)
  1313. {
  1314. return Ok(JsonView(false, "程序错误!"));
  1315. }
  1316. }
  1317. /// <summary>
  1318. /// 员工信息
  1319. /// 人事审核
  1320. /// </summary>
  1321. /// <param name="dto"></param>
  1322. /// <returns></returns>
  1323. [HttpPost]
  1324. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1325. public async Task<IActionResult> PersonnelAudit(PersonnelAuditDto dto)
  1326. {
  1327. if (dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数!"));
  1328. if (dto.Id < 1) return Ok(JsonView(false, "请传入有效的Id参数!"));
  1329. if (dto.IsAudit < 1 || dto.IsAudit > 2) return Ok(JsonView(false, "请传入有效的IsAudit参数!1:通过 2拒绝"));
  1330. bool res = await _userRep.UpdateAsync<Sys_Users>(a =>
  1331. a.Id == dto.Id,
  1332. a => new Sys_Users
  1333. {
  1334. HrAudit = dto.IsAudit
  1335. });
  1336. if (res)
  1337. {
  1338. //审核成功添加员工基础页面权限
  1339. var userData = _sqlSugar.Queryable<Sys_Users>().Where(it => it.Id == dto.Id).First();
  1340. int depId = 0, postId = 0;
  1341. if (userData != null) { depId = userData.DepId; postId = userData.JobPostId; }
  1342. bool s = DefaultPostAuth(depId, postId, dto.Id, dto.UserId);
  1343. string str = $"基础页面权限添加失败!";
  1344. if (s) str = $"基础页面权限添加成功!";
  1345. return Ok(JsonView(true, $"操作成功!{str}"));
  1346. }
  1347. return Ok(JsonView(false, "操作失败!"));
  1348. }
  1349. /// <summary>
  1350. /// 部门查询员工
  1351. /// </summary>
  1352. /// <param name="dto"></param>
  1353. /// <returns></returns>
  1354. [HttpPost]
  1355. public IActionResult QueryUserByDepart(QueryUserByDepartDto dto)
  1356. {
  1357. var jw = JsonView(false);
  1358. if (dto.DepartId < 1)
  1359. {
  1360. jw.Msg = "请传入正确的部门id";
  1361. return Ok(jw);
  1362. }
  1363. string sql = $@"SELECT * FROM Sys_Users su WHERE su.JobPostId in (SELECT id FROM Sys_JobPost sj WHERE sj.IsDel = 0 AND sj.DepId = {dto.DepartId} )
  1364. AND su.IsDel = 0 ";
  1365. try
  1366. {
  1367. var result = _sqlSugar.SqlQueryable<Sys_Users>(sql).Select(x => new
  1368. {
  1369. x.Id,
  1370. x.CnName,
  1371. x.EnName
  1372. }).ToList();
  1373. jw.Data = result;
  1374. jw.Code = 200;
  1375. jw.Msg = "获取成功!";
  1376. }
  1377. catch (Exception ex)
  1378. {
  1379. jw.Data = System.Array.Empty<string>();
  1380. jw.Code = 400;
  1381. jw.Msg = "获取失败!" + ex.Message;
  1382. }
  1383. return Ok(jw);
  1384. }
  1385. #endregion
  1386. #region 权限模块
  1387. /// <summary>
  1388. /// 权限数据页面初始化
  1389. /// </summary>
  1390. /// <param name="dto"></param>
  1391. /// <returns></returns>
  1392. //[Authorize]
  1393. [HttpPost]
  1394. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1395. public async Task<IActionResult> GetAuth(AuthDto dto)
  1396. {
  1397. Result result = new Result();
  1398. //模块数据
  1399. var setDataResult = await _setDataRepository.GetSySDefultModule();
  1400. if (setDataResult.Code != 0)
  1401. {
  1402. return Ok(JsonView(setDataResult.Msg));
  1403. }
  1404. //操作方式
  1405. var PageOperation = _PageFunctionPermissionRepository.QueryDto<Sys_PageFunctionPermission, Sys_PageFunctionPermission>(x => x.IsEnable == 1).ToList();
  1406. //获取所有关联页面
  1407. var Sys_SystemMenuAndFunction = _SystemMenuAndFunctionRepository.QueryDto<Sys_SystemMenuAndFunction, SystemMenuAndFunctionView>().ToList();
  1408. //页面数据
  1409. var SystemMenuPermissionData = _SystemMenuPermissionRepository.QueryDto<Sys_SystemMenuPermission, SystemMenuPermissionView>(x => x.Mid == dto.moduleId && x.IsEnable == 1).ToList();
  1410. if (SystemMenuPermissionData == null || SystemMenuPermissionData.Count() == 0)
  1411. {
  1412. return Ok(JsonView("暂无数据"));
  1413. }
  1414. ArrayList viewData = new ArrayList();
  1415. //组合页面数据
  1416. foreach (var item in SystemMenuPermissionData)
  1417. {
  1418. ArrayList ids = new ArrayList();
  1419. foreach (var viewop in PageOperation)
  1420. {
  1421. var op = Sys_SystemMenuAndFunction.FirstOrDefault(x => x.SmId == item.Id && x.FId == viewop.Id);
  1422. if (op != null)
  1423. {
  1424. ids.Add(viewop.Id);
  1425. }
  1426. }
  1427. viewData.Add(new
  1428. {
  1429. Id = item.Id,
  1430. Mid = item.Mid,
  1431. Name = item.Name,
  1432. SystemMenuCode = item.SystemMenuCode,
  1433. opList = ids,
  1434. selList = new string[0]
  1435. });
  1436. }
  1437. //公司数据
  1438. var CompanyDataResult = _CompanyRepository.GetCompanyData();
  1439. if (CompanyDataResult.Code != 0)
  1440. {
  1441. return Ok(JsonView(CompanyDataResult.Msg));
  1442. }
  1443. result.Code = 0;
  1444. result.Msg = "成功!";
  1445. var Dyresult = new
  1446. {
  1447. setDataResult = setDataResult.Data,
  1448. CompanyDataResult = CompanyDataResult.Data,
  1449. SystemMenuPermissionData = viewData,
  1450. PageOperation = PageOperation,
  1451. };
  1452. return Ok(JsonView(200, "成功!", Dyresult));
  1453. }
  1454. /// <summary>
  1455. /// 获取职务权限
  1456. /// </summary>
  1457. /// <param name="dto"></param>
  1458. /// <returns></returns>
  1459. [HttpPost]
  1460. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1461. public IActionResult QueryJobAuth(QueryJobAuthDto dto)
  1462. {
  1463. //选中的操作权限
  1464. var DBdata = _JobPostAuthorityRepository.QueryDto<Sys_JobPostAuthority, JobPostAuthorityView>(x => x.JpId == dto.jobid).ToList();
  1465. var SystemMenuPermissionData = _SystemMenuPermissionRepository.QueryDto<Sys_SystemMenuPermission, SystemMenuPermissionView>(x => x.Mid == dto.moduleId).ToList();
  1466. if (SystemMenuPermissionData == null || SystemMenuPermissionData.Count() == 0)
  1467. {
  1468. return Ok(JsonView("暂无数据"));
  1469. }
  1470. //所有操作
  1471. var PageOperation = _PageFunctionPermissionRepository.QueryDto<Sys_PageFunctionPermission, Sys_PageFunctionPermission>().ToList();
  1472. //获取所有关联页面
  1473. var Sys_SystemMenuAndFunction = _SystemMenuAndFunctionRepository.QueryDto<Sys_SystemMenuAndFunction, SystemMenuAndFunctionView>().ToList();
  1474. ArrayList viewData = new ArrayList();
  1475. //组合页面数据
  1476. foreach (var item in SystemMenuPermissionData)
  1477. {
  1478. ArrayList ids = new ArrayList();
  1479. foreach (var viewop in PageOperation)
  1480. {
  1481. var op = Sys_SystemMenuAndFunction.FirstOrDefault(x => x.SmId == item.Id && x.FId == viewop.Id);
  1482. if (op != null)
  1483. {
  1484. ids.Add(viewop.Id);
  1485. }
  1486. }
  1487. //获取本职务的页面拥有的权限
  1488. var DBwhere = DBdata.Where(x => x.SmId == item.Id && x.JpId == dto.jobid).ToList();
  1489. viewData.Add(new
  1490. {
  1491. Id = item.Id,
  1492. Mid = item.Mid,
  1493. Name = item.Name,
  1494. SystemMenuCode = item.SystemMenuCode,
  1495. opList = ids,
  1496. selList = DBwhere.Select(x => x.FId)
  1497. });
  1498. }
  1499. return Ok(JsonView(200, "成功!", viewData));
  1500. }
  1501. /// <summary>
  1502. /// 保存岗位权限
  1503. /// </summary>
  1504. /// <param name="dto"></param>
  1505. /// <returns></returns>
  1506. [HttpPost]
  1507. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1508. public async Task<IActionResult> SaveJobAuth(SaveJobDto dto)
  1509. {
  1510. //获取所有关联页面
  1511. var Sys_SystemMenuAndFunction = _SystemMenuAndFunctionRepository.QueryDto<Sys_SystemMenuAndFunction, SystemMenuAndFunctionView>().ToList();
  1512. var RemoveJobPostAuthList = _SystemMenuAndFunctionRepository._sqlSugar.SqlQueryable<Sys_JobPostAuthority>($@"
  1513. select a.* from Sys_JobPostAuthority a, Sys_SetData b ,Sys_SystemMenuPermission c
  1514. where a.SmId = c.Id and c.Mid = b.Id and JpId = {dto.Jpid} and c.Mid ={dto.modulId}
  1515. ").ToList();
  1516. List<Sys_JobPostAuthority> adds = new List<Sys_JobPostAuthority>();
  1517. foreach (var item in dto.Savejobs)
  1518. {
  1519. foreach (var fid in item.FIds)
  1520. {
  1521. var whereobj = Sys_SystemMenuAndFunction.FirstOrDefault(x => x.FId == fid && x.SmId == item.SmId);
  1522. if (whereobj != null)
  1523. {
  1524. adds.Add(new Sys_JobPostAuthority
  1525. {
  1526. CreateTime = DateTime.Now,
  1527. CreateUserId = dto.UserId,
  1528. FId = fid,
  1529. JpId = dto.Jpid,
  1530. SmId = item.SmId
  1531. });
  1532. }
  1533. }
  1534. }
  1535. _JobPostAuthorityRepository.BeginTran();
  1536. try
  1537. { //删除岗位
  1538. bool isdel = await _JobPostAuthorityRepository.DeletesAsync<Sys_JobPostAuthority>(RemoveJobPostAuthList);
  1539. int UpRows = _JobPostAuthorityRepository.Adds<Sys_JobPostAuthority>(adds);
  1540. //获取所有职位员工
  1541. var jobUserAll = await QueryUserList(new UserDto { PortType = 2, JobPostId = dto.Jpid });
  1542. List<UserInfoWebView> users = null;
  1543. var QueryUserListApiResult = (((jobUserAll as OkObjectResult).Value) as OASystem.Domain.ViewModels.JsonView);
  1544. if (QueryUserListApiResult != null)
  1545. {
  1546. if (QueryUserListApiResult.Code == 200)
  1547. {
  1548. users = QueryUserListApiResult.Data as List<UserInfoWebView>;
  1549. }
  1550. }
  1551. if (users != null && users.Count > 0)
  1552. {
  1553. List<Sys_UserAuthority> userAuth = null;
  1554. var uids = string.Join(',', users.Select(x => x.Id)).TrimEnd(',');
  1555. var RemoveUserAuthorityListAndTemp = _UserAuthorityRepository._sqlSugar.SqlQueryable<Sys_UserAuthority>($@"
  1556. select a.* from Sys_UserAuthority a, Sys_SetData b ,Sys_SystemMenuPermission c
  1557. where a.SmId = c.Id and c.Mid = b.Id and uid in ({uids}) and c.Mid = {dto.modulId} and IsTemp = 1
  1558. ").ToList();
  1559. foreach (var user in users)
  1560. {
  1561. //删除个人级岗位权限
  1562. isdel = await _UserAuthorityRepository.DeletesAsync<Sys_UserAuthority>
  1563. (RemoveUserAuthorityListAndTemp.FindAll(x => x.UId == user.Id));
  1564. userAuth = adds.Select(x => new Sys_UserAuthority
  1565. {
  1566. CreateTime = DateTime.Now,
  1567. CreateUserId = dto.UserId,
  1568. FId = x.FId,
  1569. SmId = x.SmId,
  1570. UId = user.Id,
  1571. IsTemp = 1,
  1572. }).ToList();
  1573. //添加个人级别岗位
  1574. int AddRows = _UserAuthorityRepository.Adds<Sys_UserAuthority>(userAuth);
  1575. }
  1576. }
  1577. }
  1578. catch (Exception ex)
  1579. {
  1580. _JobPostAuthorityRepository.RollbackTran();
  1581. return Ok(JsonView("系统错误!"));
  1582. }
  1583. _JobPostAuthorityRepository.CommitTran();
  1584. return Ok(JsonView(200, "成功", new { }));
  1585. }
  1586. /// <summary>
  1587. /// 获取员工权限
  1588. /// </summary>
  1589. /// <param name="dto"></param>
  1590. /// <returns></returns>
  1591. [HttpPost]
  1592. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1593. public IActionResult QueryUserAuth(QueryUserAuthDto dto)
  1594. {
  1595. //选中的员工操作权限
  1596. var DBdata = _UserAuthorityRepository.QueryDto<Sys_UserAuthority, UserAuthorityView>(x => x.UId == dto.Userid).ToList();
  1597. var SystemMenuPermissionData = _SystemMenuPermissionRepository.QueryDto<Sys_SystemMenuPermission, SystemMenuPermissionView>(x => x.Mid == dto.moduleId).ToList();
  1598. if (SystemMenuPermissionData == null || SystemMenuPermissionData.Count() == 0)
  1599. {
  1600. return Ok(JsonView("暂无数据"));
  1601. }
  1602. //所有操作
  1603. var PageOperation = _PageFunctionPermissionRepository.QueryDto<Sys_PageFunctionPermission, Sys_PageFunctionPermission>(x => x.IsEnable == 1).ToList();
  1604. //获取所有关联页面
  1605. var Sys_SystemMenuAndFunction = _SystemMenuAndFunctionRepository.QueryDto<Sys_SystemMenuAndFunction, SystemMenuAndFunctionView>().ToList();
  1606. ArrayList viewData = new ArrayList();
  1607. //组合页面数据
  1608. foreach (var item in SystemMenuPermissionData)
  1609. {
  1610. ArrayList ids = new ArrayList();
  1611. foreach (var viewop in PageOperation)
  1612. {
  1613. var op = Sys_SystemMenuAndFunction.FirstOrDefault(x => x.SmId == item.Id && x.FId == viewop.Id);
  1614. if (op != null)
  1615. {
  1616. ids.Add(viewop.Id);
  1617. }
  1618. }
  1619. //获取本员工拥有的权限
  1620. var DBwhere = DBdata.Where(x => x.SmId == item.Id && x.UId == dto.Userid).ToList();
  1621. viewData.Add(new
  1622. {
  1623. Id = item.Id,
  1624. Mid = item.Mid,
  1625. Name = item.Name,
  1626. SystemMenuCode = item.SystemMenuCode,
  1627. opList = ids,
  1628. selList = DBwhere.Select(x => x.FId)
  1629. });
  1630. }
  1631. return Ok(JsonView(200, "成功!", viewData));
  1632. }
  1633. /// <summary>
  1634. /// 根据Id获取员工所有移动端查看权限
  1635. /// </summary>
  1636. /// <param name="dto"></param>
  1637. /// <returns></returns>
  1638. [HttpPost]
  1639. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1640. public IActionResult QueryUserAuthByUserId(QueryUserAuthByUserIdDto dto)
  1641. {
  1642. string sql = string.Format(@" Select sd1.Id as ModuleId,sd1.Name as ModuleName,sm.Id as MenuId,sm.Name as MenuName From Sys_UserAuthority as u With(Nolock)
  1643. Inner Join Sys_SystemMenuPermission as sm With(Nolock) On u.SmId = sm.Id
  1644. Inner Join Sys_SetData as sd1 With(Nolock) On sm.Mid = sd1.Id
  1645. Where u.IsDel = 0 And sm.IsDel = 0
  1646. And u.UId = {0} And u.FId = 1 ", dto.UserId);
  1647. List<SystemModule_UserAuthSqlView> _dataSource = _sqlSugar.SqlQueryable<SystemModule_UserAuthSqlView>(sql).ToList();
  1648. List<SystemModule_UserAuthView> result = new List<SystemModule_UserAuthView>();
  1649. foreach (SystemModule_UserAuthSqlView item in _dataSource)
  1650. {
  1651. if (result.FirstOrDefault(s => s.ModuleId == item.ModuleId) == null)
  1652. {
  1653. List<SystemModule_UserAuthSqlView> tempList = _dataSource.Where(s => s.ModuleId == item.ModuleId).ToList();
  1654. List<SystemMenu_UserAuthView> menuList = new List<SystemMenu_UserAuthView>();
  1655. foreach (SystemModule_UserAuthSqlView item2 in tempList)
  1656. {
  1657. SystemMenu_UserAuthView menu = new SystemMenu_UserAuthView() { MenuId = item2.MenuId, MenuName = item2.MenuName };
  1658. menuList.Add(menu);
  1659. }
  1660. SystemModule_UserAuthView module = new SystemModule_UserAuthView() { MenuList = menuList, ModuleId = item.ModuleId, ModuleName = item.ModuleName };
  1661. result.Add(module);
  1662. }
  1663. }
  1664. return Ok(JsonView(200, "成功!", result));
  1665. }
  1666. /// <summary>
  1667. /// 保存员工权限
  1668. /// </summary>
  1669. /// <param name="dto"></param>
  1670. /// <returns></returns>
  1671. [HttpPost]
  1672. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1673. public async Task<IActionResult> SaveUserAuth(SaveUserDto dto)
  1674. {
  1675. //获取所有关联页面
  1676. var Sys_SystemMenuAndFunction = _SystemMenuAndFunctionRepository.QueryDto<Sys_SystemMenuAndFunction, SystemMenuAndFunctionView>().ToList();
  1677. //获取用户当前模块所有启用页面
  1678. var userpageList = _SystemMenuPermissionRepository._sqlSugar.SqlQueryable<Sys_UserAuthority>($@"
  1679. select a.* from Sys_UserAuthority a, Sys_SetData b ,Sys_SystemMenuPermission c
  1680. where a.SmId = c.Id and c.Mid = b.Id and uid = {dto.uid} and c.Mid ={dto.Modulid}
  1681. ").ToList();
  1682. List<Sys_UserAuthority> adds = new List<Sys_UserAuthority>();
  1683. foreach (var item in dto.Savejobs)
  1684. {
  1685. foreach (var fid in item.FIds)
  1686. {
  1687. var whereobj = Sys_SystemMenuAndFunction.FirstOrDefault(x => x.FId == fid && x.SmId == item.SmId);
  1688. if (whereobj != null)
  1689. {
  1690. adds.Add(new Sys_UserAuthority
  1691. {
  1692. CreateTime = DateTime.Now,
  1693. CreateUserId = dto.UserId,
  1694. FId = fid,
  1695. UId = dto.uid,
  1696. SmId = item.SmId,
  1697. IsTemp = 0
  1698. });
  1699. }
  1700. }
  1701. }
  1702. _JobPostAuthorityRepository.BeginTran();
  1703. try
  1704. {
  1705. List<Sys_UserAuthority> userAuth = null;
  1706. //删除个人级岗位权限
  1707. bool isdel = await _UserAuthorityRepository.DeletesAsync<Sys_UserAuthority>(userpageList);
  1708. userAuth = adds.Select(x => new Sys_UserAuthority
  1709. {
  1710. CreateTime = DateTime.Now,
  1711. CreateUserId = dto.UserId,
  1712. FId = x.FId,
  1713. SmId = x.SmId,
  1714. UId = dto.uid,
  1715. IsTemp = 0,
  1716. }).ToList();
  1717. //添加个人级别岗位
  1718. int AddRows = _UserAuthorityRepository.Adds<Sys_UserAuthority>(userAuth);
  1719. }
  1720. catch (Exception ex)
  1721. {
  1722. _JobPostAuthorityRepository.RollbackTran();
  1723. return Ok(JsonView("系统错误!"));
  1724. }
  1725. _JobPostAuthorityRepository.CommitTran();
  1726. return Ok(JsonView(200, "成功", new { }));
  1727. }
  1728. #endregion
  1729. #region 页面配置
  1730. /// <summary>
  1731. /// 页面配置界面数据初始化
  1732. /// </summary>
  1733. /// <returns></returns>
  1734. //[Authorize]
  1735. [HttpPost]
  1736. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1737. public async Task<IActionResult> PageConfigInit()
  1738. {
  1739. ArrayList arr = new ArrayList();
  1740. var viewList = await _setDataRepository.GetSetDataAndPageInfoBySTId();
  1741. if (viewList.Code != 0)
  1742. {
  1743. return Ok(JsonView(viewList.Msg));
  1744. }
  1745. var ModList = await _setDataRepository.GetSySDefultModule();
  1746. return Ok(JsonView(new
  1747. {
  1748. viewList,
  1749. ModList,
  1750. }));
  1751. }
  1752. [HttpPost]
  1753. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1754. public async Task<IActionResult> EditPageInfo(SetDataAndPageInfoDto dto)
  1755. {
  1756. JsonView view = null;
  1757. _SystemMenuPermissionRepository.BeginTran();
  1758. var istrue = await _SystemMenuPermissionRepository.UpdateAsync(x => x.Id == dto.Pageid, x => new Sys_SystemMenuPermission
  1759. {
  1760. AndroidUrl = dto.AndroidUrl,
  1761. CreateTime = DateTime.Now,
  1762. Icon = dto.Icon,
  1763. IosUrl = dto.IosUrl,
  1764. Name = dto.PageName,
  1765. PhoneIsEnable = dto.PagePhoneIsEnable,
  1766. CreateUserId = dto.UserId,
  1767. IsDel = 0,
  1768. IsEnable = dto.PageIsEnable,
  1769. Mid = dto.Modulid,
  1770. Remark = dto.PageRemark,
  1771. SystemMenuCode = dto.SystemMenuCode,
  1772. WebUrl = dto.WebUrl,
  1773. });
  1774. if (istrue)
  1775. {
  1776. //删除页面绑定的操作后重新绑定
  1777. await _SystemMenuAndFunctionRepository.DeleteAsync(x => x.SmId == dto.Pageid);
  1778. List<Sys_SystemMenuAndFunction> binFun = new List<Sys_SystemMenuAndFunction>();
  1779. foreach (var item in dto.FunArr)
  1780. {
  1781. binFun.Add(new Sys_SystemMenuAndFunction
  1782. {
  1783. CreateTime = DateTime.Now,
  1784. CreateUserId = dto.UserId,
  1785. FId = item,
  1786. SmId = dto.Pageid,
  1787. IsDel = 0,
  1788. });
  1789. }
  1790. int number = _SystemMenuAndFunctionRepository.Adds<Sys_SystemMenuAndFunction>(binFun);
  1791. view = JsonView(istrue);
  1792. _SystemMenuPermissionRepository.CommitTran();
  1793. }
  1794. else
  1795. {
  1796. _SystemMenuPermissionRepository.RollbackTran();
  1797. view = JsonView("添加失败");
  1798. }
  1799. return Ok(view);
  1800. }
  1801. /// <summary>
  1802. /// 添加一个页面
  1803. /// </summary>
  1804. /// <param name="dto"></param>
  1805. /// <returns></returns>
  1806. [HttpPost]
  1807. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1808. public async Task<IActionResult> AddPageInfo(SetDataAndPageInfoDto dto)
  1809. {
  1810. JsonView view = null;
  1811. _SystemMenuPermissionRepository.BeginTran();
  1812. int number = await _SystemMenuPermissionRepository.AddAsyncReturnId(new Sys_SystemMenuPermission
  1813. {
  1814. AndroidUrl = dto.AndroidUrl,
  1815. CreateTime = DateTime.Now,
  1816. Icon = dto.Icon,
  1817. IosUrl = dto.IosUrl,
  1818. Name = dto.PageName,
  1819. PhoneIsEnable = dto.PagePhoneIsEnable,
  1820. CreateUserId = dto.UserId,
  1821. IsDel = 0,
  1822. IsEnable = dto.PageIsEnable,
  1823. Mid = dto.Modulid,
  1824. Remark = dto.PageRemark,
  1825. SystemMenuCode = dto.SystemMenuCode,
  1826. WebUrl = dto.WebUrl,
  1827. });
  1828. List<Sys_SystemMenuAndFunction> binFun = new List<Sys_SystemMenuAndFunction>();
  1829. foreach (var item in dto.FunArr)
  1830. {
  1831. binFun.Add(new Sys_SystemMenuAndFunction
  1832. {
  1833. CreateTime = DateTime.Now,
  1834. CreateUserId = dto.UserId,
  1835. FId = item,
  1836. SmId = number,
  1837. IsDel = 0,
  1838. });
  1839. }
  1840. number = _SystemMenuAndFunctionRepository.Adds<Sys_SystemMenuAndFunction>(binFun);
  1841. if (number > 0)
  1842. {
  1843. view = JsonView(number);
  1844. _SystemMenuPermissionRepository.CommitTran();
  1845. }
  1846. else
  1847. {
  1848. _SystemMenuPermissionRepository.RollbackTran();
  1849. view = JsonView("添加失败");
  1850. }
  1851. return Ok(view);
  1852. }
  1853. /// <summary>
  1854. /// 删除页面
  1855. /// </summary>
  1856. /// <param></param>
  1857. /// <returns></returns>
  1858. [HttpPost]
  1859. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1860. public async Task<IActionResult> DelPageInfo(List<SystemMenuDelDto> Dto)
  1861. {
  1862. JsonView view = new JsonView();
  1863. if (Dto.Count > 0)
  1864. {
  1865. try
  1866. {
  1867. _SystemMenuPermissionRepository.BeginTran();
  1868. bool istrue = false;
  1869. foreach (var item in Dto)
  1870. {
  1871. istrue = await _SystemMenuPermissionRepository.SoftDeleteAsync(item.Pageid.ToString());
  1872. if (!istrue)
  1873. {
  1874. throw new Exception("修改失败");
  1875. }
  1876. }
  1877. view.Code = 200;
  1878. view.Msg = "删除成功!";
  1879. view.Data = istrue;
  1880. _SystemMenuPermissionRepository.CommitTran();
  1881. }
  1882. catch (Exception)
  1883. {
  1884. _SystemMenuPermissionRepository.RollbackTran();
  1885. }
  1886. }
  1887. return Ok(JsonView(view));
  1888. }
  1889. /// <summary>
  1890. /// 获取页面绑定的操作
  1891. /// </summary>
  1892. /// <param name="Dto"></param>
  1893. /// <returns></returns>
  1894. [HttpPost]
  1895. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1896. public async Task<IActionResult> QueryPageFunById(PageFunDto Dto)
  1897. {
  1898. //页面与操作关联表
  1899. var pageAndFunList = _SystemMenuAndFunctionRepository.QueryDto<Sys_SystemMenuAndFunction, SystemMenuAndFunctionView>().ToList();
  1900. //页面功能表
  1901. var pageFunList = _PageFunctionPermissionRepository.QueryDto<Sys_PageFunctionPermission, Sys_PageFunctionPermission>(x => x.IsEnable == 1).ToList();
  1902. ArrayList arr = new ArrayList();
  1903. foreach (var item in pageFunList)
  1904. {
  1905. var FindVal = pageAndFunList.Find(x => x.SmId == Dto.Pageid && x.FId == item.Id);
  1906. if (FindVal == null)
  1907. {
  1908. arr.Add(new
  1909. {
  1910. id = item.Id,
  1911. name = item.FunctionName,
  1912. value = false
  1913. });
  1914. }
  1915. else
  1916. {
  1917. arr.Add(new
  1918. {
  1919. id = item.Id,
  1920. name = item.FunctionName,
  1921. value = true
  1922. });
  1923. }
  1924. }
  1925. return Ok(JsonView(arr));
  1926. }
  1927. #endregion
  1928. #region 页面操作
  1929. /// <summary>
  1930. /// 操作权限功能表
  1931. /// </summary>
  1932. /// <returns></returns>
  1933. [HttpPost]
  1934. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1935. public async Task<IActionResult> PageFunInit()
  1936. {
  1937. try
  1938. {
  1939. var PageFunInit = _PageFunctionPermissionRepository.QueryDto<Sys_PageFunctionPermission, PageFunctionPermissionView>().ToList();
  1940. if (PageFunInit == null)
  1941. {
  1942. return Ok(JsonView(false, "暂无数据!"));
  1943. }
  1944. return Ok(JsonView(true, "查询成功!", PageFunInit));
  1945. }
  1946. catch (Exception ex)
  1947. {
  1948. return Ok(JsonView(false, "程序错误!"));
  1949. throw;
  1950. }
  1951. }
  1952. /// <summary>
  1953. /// 操作权限功能表操作(Status 1:添加,2:编辑)
  1954. /// </summary>
  1955. /// <returns></returns>
  1956. [HttpPost]
  1957. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1958. public async Task<IActionResult> OperationFun(OperationFunInitDta dto)
  1959. {
  1960. try
  1961. {
  1962. Result result = await _PageFunctionPermissionRepository.OperationFunInit(dto);
  1963. if (result.Code != 0)
  1964. {
  1965. return Ok(JsonView(false, result.Msg));
  1966. }
  1967. return Ok(JsonView(true, result.Msg));
  1968. }
  1969. catch (Exception ex)
  1970. {
  1971. return Ok(JsonView(false, "程序错误!"));
  1972. throw;
  1973. }
  1974. }
  1975. /// <summary>
  1976. /// 删除功能
  1977. /// </summary>
  1978. /// <param name="dto"></param>
  1979. /// <returns></returns>
  1980. [HttpPost]
  1981. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  1982. public async Task<IActionResult> DelFun(DelFunInitDta dto)
  1983. {
  1984. try
  1985. {
  1986. var res = await _PageFunctionPermissionRepository.SoftDeleteByIdAsync<Sys_PageFunctionPermission>(dto.Id.ToString(), dto.DeleteUserId);
  1987. if (!res)
  1988. {
  1989. return Ok(JsonView(false, "删除失败"));
  1990. }
  1991. return Ok(JsonView(true, "删除成功!"));
  1992. }
  1993. catch (Exception ex)
  1994. {
  1995. return Ok(JsonView(false, "程序错误!"));
  1996. }
  1997. }
  1998. #endregion
  1999. #region 各部门首页消息提示
  2000. /// <summary>
  2001. /// 部门首页消息提示
  2002. /// </summary>
  2003. /// <returns></returns>
  2004. [HttpGet("{portType}")]
  2005. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  2006. public async Task<IActionResult> DepartmentHomePageMessagePrompts(int portType)
  2007. {
  2008. var currUserInfo = JwtHelper.SerializeJwt(HttpContext.Request.Headers.Authorization);
  2009. if (currUserInfo == null) return Ok(JsonView(false, "请传入token!"));
  2010. var department = currUserInfo.Department;
  2011. if (portType < 1 || portType > 3) return Ok(JsonView(false, MsgTips.Port));
  2012. if (portType == 1 || portType == 2 || portType == 3) // web
  2013. {
  2014. //固定查询时间(当前月的上月)
  2015. var lastMoth = DateTime.Now.AddMonths(-1);
  2016. var (startDate, endDate) = CommonFun.GetMonthStartAndEndDates(lastMoth.Year, lastMoth.Month);
  2017. var startDateTime = Convert.ToDateTime(startDate.ToString("yyyy-MM-dd 00:00:00"));
  2018. var endDateTime = Convert.ToDateTime(endDate.ToString("yyyy-MM-dd 23:59:59"));
  2019. //固定查询时间(本年)
  2020. var currStartDate = Convert.ToDateTime($"{DateTime.Now.Year}-01-01 00:00:00");
  2021. var currEntDate = Convert.ToDateTime($"{DateTime.Now.Year}-12-31 23:59:59");
  2022. if (department.Equals("总经办")) //总经办
  2023. {
  2024. //1、资料数据(市场部客户资源、op地接导游、op地接车数据、商邀数据、团组收款数据)数据提示Range(固定上个月) -- Add
  2025. #region 市场部客户资源
  2026. //1.1 市场部客户资源
  2027. var users = await _sqlSugar.Queryable<Sys_Users>()
  2028. .LeftJoin<Sys_Department>((u, d) => u.DepId == d.Id)
  2029. .Where((u, d) => u.IsDel == 0 && (d.DepName.Contains("市场部") || u.Id == 21))
  2030. .Select((u, d) => new { u.Id, u.CnName })
  2031. .ToListAsync();
  2032. var marketData = await _sqlSugar.Queryable<Crm_NewClientData>()
  2033. .LeftJoin<Sys_Users>((ncd, u) => ncd.CreateUserId == u.Id)
  2034. .Where((ncd, u) => ncd.IsDel == 0 && ncd.CreateTime >= startDateTime && ncd.CreateTime <= endDateTime)
  2035. .Select((ncd, u) => new
  2036. {
  2037. Area = ncd.Location,
  2038. ncd.Client,
  2039. ncd.Contact,
  2040. ncd.Job,
  2041. Tel = ncd.Telephone,
  2042. ncd.CreateUserId,
  2043. CreatleUserName = u.CnName,
  2044. ncd.CreateTime,
  2045. })
  2046. .ToListAsync();
  2047. foreach (var item in marketData) EncryptionProcessor.DecryptProperties(item);
  2048. var marketDataGroup = marketData.GroupBy(x => x.CreateUserId).Select(g => new { CreateUserId = g.Key, Items = g.ToList(), Count = g.Count() });
  2049. var marketData2 = new List<dynamic>();
  2050. foreach (var user in users)
  2051. {
  2052. var userMarketData = marketDataGroup.FirstOrDefault(x => user.Id == x.CreateUserId);
  2053. if (userMarketData != null)
  2054. {
  2055. marketData2.Add(new
  2056. {
  2057. uId = user.Id,
  2058. name = user.CnName,
  2059. count = userMarketData.Count,
  2060. msgTips = $"上月新增市场客户资源共{userMarketData.Count}条",
  2061. userMarketData = userMarketData.Items
  2062. });
  2063. }
  2064. else
  2065. {
  2066. marketData2.Add(new
  2067. {
  2068. uId = user.Id,
  2069. name = user.CnName,
  2070. count = 0,
  2071. msgTips = $"上月新增市场客户资源共{0}条",
  2072. userMarketData = new List<dynamic>() { },
  2073. });
  2074. }
  2075. }
  2076. var marketData1 = new
  2077. {
  2078. msgTips = $"上月新增市场客户资源共{marketData.Count}条",
  2079. Data = marketData2,
  2080. };
  2081. #endregion
  2082. #region op地接导游
  2083. //1.2 op地接导游
  2084. var opTourGuideData = await _sqlSugar.Queryable<Res_LocalGuideData>()
  2085. .LeftJoin<Sys_Users>((lgd, u) => lgd.CreateUserId == u.Id)
  2086. .Where((lgd, u) => lgd.IsDel == 0 && lgd.CreateTime >= startDateTime && lgd.CreateTime <= endDateTime)
  2087. .Select((lgd, u) => new
  2088. {
  2089. Area = lgd.UnitArea,
  2090. Client = lgd.UnitName,
  2091. lgd.Contact,
  2092. Job = "",
  2093. Tel = lgd.ContactTel,
  2094. lgd.CreateUserId,
  2095. CreatleUserName = u.CnName,
  2096. lgd.CreateTime,
  2097. })
  2098. .ToListAsync();
  2099. foreach (var item in opTourGuideData) EncryptionProcessor.DecryptProperties(item);
  2100. var opTourGuideDataGroups = opTourGuideData.GroupBy(x => x.CreateUserId)
  2101. .Select(g => new {
  2102. uId = g.Key,
  2103. name = g.ToList().FirstOrDefault()?.CreatleUserName ?? "-",
  2104. msgTips = $"上月新增OP地接导游资源共{g.Count()}条",
  2105. userTourGuideData = g.ToList(),
  2106. Count = g.Count()
  2107. });
  2108. var opTourGuideData1 = new
  2109. {
  2110. msgTips = $"上月新增OP地接导游资源共{opTourGuideData.Count}条",
  2111. Data = opTourGuideDataGroups,
  2112. };
  2113. #endregion
  2114. #region op车数据
  2115. //1.3 op车数据
  2116. var opCarData = await _sqlSugar.Queryable<Res_CarData>()
  2117. .LeftJoin<Sys_Users>((cd, u) => cd.CreateUserId == u.Id)
  2118. .Where((cd, u) => cd.IsDel == 0 && cd.CreateTime >= startDateTime && cd.CreateTime <= endDateTime)
  2119. .Select((cd, u) => new CarDataMsgTipsView()
  2120. {
  2121. Area = cd.UnitArea,
  2122. Client = cd.UnitName,
  2123. Contact = cd.Contact,
  2124. Job = "",
  2125. Tel = cd.ContactTel,
  2126. CreateUserId = cd.CreateUserId,
  2127. CreatleUserName = u.CnName,
  2128. CreateTime = cd.CreateTime,
  2129. })
  2130. .ToListAsync();
  2131. foreach (var item in opCarData) EncryptionProcessor.DecryptProperties(item);
  2132. var opCarDataGroups = opCarData.GroupBy(x => x.CreateUserId)
  2133. .Select(g => new {
  2134. uId = g.Key,
  2135. name = g.ToList().FirstOrDefault()?.CreatleUserName ?? "-",
  2136. msgTips = $"上月新增OP地接车资源共{g.Count()}条",
  2137. userTourGuideData = g.ToList(),
  2138. Count = g.Count()
  2139. });
  2140. var opCarData1 = new
  2141. {
  2142. msgTips = $"上月新增OP地接车资源共{opCarData.Count}条",
  2143. Data = opCarDataGroups,
  2144. };
  2145. #endregion
  2146. #region 商邀数据
  2147. //1.4 商邀数据
  2148. var invitationData = await _sqlSugar.Queryable<Res_InvitationOfficialActivityData>()
  2149. .LeftJoin<Sys_Users>((ioa, u) => ioa.CreateUserId == u.Id)
  2150. .Where((ioa, u) => ioa.IsDel == 0 && ioa.CreateTime >= startDateTime && ioa.CreateTime <= endDateTime)
  2151. .Select((ioa, u) => new
  2152. {
  2153. //Area = string.Format("{0}{1}", ioa.Country, !string.IsNullOrEmpty(ioa.City) ? "" : "-" + ioa.City),
  2154. Area = string.Format("{0}{1}", ioa.Country, ioa.City),
  2155. Client = ioa.UnitName,
  2156. ioa.Contact,
  2157. ioa.Job,
  2158. ioa.Tel,
  2159. ioa.CreateUserId,
  2160. CreatleUserName = u.CnName,
  2161. ioa.CreateTime,
  2162. })
  2163. .ToListAsync();
  2164. var invitationGroups = invitationData.GroupBy(x => x.CreateUserId)
  2165. .Select(g => new {
  2166. uId = g.Key,
  2167. name = g.ToList().FirstOrDefault()?.CreatleUserName ?? "-",
  2168. msgTips = $"上月新增商邀资源共{g.Count()}条",
  2169. userTourGuideData = g.ToList(),
  2170. Count = g.Count()
  2171. });
  2172. var invitationData1 = new
  2173. {
  2174. msgTips = $"上月新增商邀资源共{invitationData.Count}条",
  2175. Data = invitationGroups,
  2176. };
  2177. #endregion
  2178. #region 团组收款数据
  2179. //1.5 团组收款数据
  2180. var groupCollectionData = await _sqlSugar.Queryable<Fin_ForeignReceivables>()
  2181. .LeftJoin<Sys_Users>((fr, u) => fr.CreateUserId == u.Id)
  2182. .LeftJoin<Grp_DelegationInfo>((fr, u, di) => fr.Diid == di.Id)
  2183. .LeftJoin<Sys_SetData>((fr, u, di, sd) => fr.Currency == sd.Id)
  2184. .Where((fr, u, di, sd) => fr.IsDel == 0 && fr.CreateTime >= startDateTime && fr.CreateTime <= endDateTime)
  2185. .Select((fr, u, di, sd) => new
  2186. {
  2187. fr.PriceName,
  2188. fr.Price,
  2189. fr.Count,
  2190. fr.Unit,
  2191. fr.ItemSumPrice,
  2192. Currency = sd.Name,
  2193. GroupName = di.TeamName,
  2194. fr.CreateUserId,
  2195. CreateUserName = u.CnName,
  2196. fr.CreateTime,
  2197. })
  2198. .ToListAsync();
  2199. var groupCollectionGroups = groupCollectionData.GroupBy(x => x.CreateUserId)
  2200. .Select(g => new
  2201. {
  2202. uId = g.Key,
  2203. name = g.ToList().FirstOrDefault()?.CreateUserName ?? "-",
  2204. msgTips = $"上月累计团组收款共{g.Count()}条",
  2205. userTourGuideData = g.ToList(),
  2206. Count = g.Count()
  2207. });
  2208. var groupCollectionData2 = new
  2209. {
  2210. msgTips = $"上月累计团组收款共{groupCollectionData.Count}条",
  2211. Data = groupCollectionGroups,
  2212. };
  2213. #endregion
  2214. var materialData = new
  2215. {
  2216. marketData = marketData1,
  2217. opTourGuideData = opTourGuideData1,
  2218. opCarData = opCarData1,
  2219. invitationData = invitationData1,
  2220. groupCollectionData = groupCollectionData2
  2221. };
  2222. //2、费用未审核(日付申请未审核数据、团组费用未审核数据)费用提示Range(固定本年)
  2223. #region 日付申请未审核数据
  2224. var dailyPaymentData = await _sqlSugar.Queryable<Fin_DailyFeePayment>()
  2225. .LeftJoin<Sys_Users>((dfp, u) => dfp.CreateUserId == u.Id)
  2226. .Where(dfp => dfp.IsDel == 0 &&
  2227. dfp.MAudit == 0 &&
  2228. dfp.CreateTime >= currStartDate &&
  2229. dfp.CreateTime <= currEntDate
  2230. )
  2231. .OrderBy(dfp => dfp.CreateTime, OrderByType.Desc)
  2232. //.OrderBy(dfp => dfp.FAudit, OrderByType.Desc)
  2233. .Select((dfp, u) => new
  2234. {
  2235. id = dfp.Id,
  2236. amountName = dfp.Instructions,
  2237. amount = dfp.SumPrice,
  2238. fAuditStatus = dfp.FAudit == 1 ? "审核通过" :
  2239. dfp.FAudit == 2 ? "审核未通过" : "未审核",
  2240. fAuditDate = dfp.FAuditDate,
  2241. dfp.CreateUserId,
  2242. CreateUserName = u.CnName,
  2243. dfp.CreateTime
  2244. })
  2245. .ToListAsync();
  2246. var dailyPaymentGroups = dailyPaymentData.GroupBy(x => x.CreateUserId)
  2247. .Select(g => new
  2248. {
  2249. uId = g.Key,
  2250. name = g.ToList().FirstOrDefault()?.CreateUserName ?? "-",
  2251. msgTips = $"本年有{g.Count()}条未审核日常付款申请条",
  2252. userTourGuideData = g.ToList(),
  2253. Count = g.Count()
  2254. });
  2255. var dailyPaymentData1 = new
  2256. {
  2257. msgTips = $"本年有{dailyPaymentData.Count()}条未审核日常付款申请条",
  2258. Data = dailyPaymentGroups,
  2259. };
  2260. #endregion
  2261. #region 团组费用未审核数据
  2262. var groupPaymentData = await _sqlSugar.Queryable<Grp_CreditCardPayment>()
  2263. .LeftJoin<Grp_DelegationInfo>((ccp, di) => ccp.DIId == di.Id)
  2264. .Where((ccp, di) => ccp.IsDel == 0 &&
  2265. ccp.IsAuditGM == 0 &&
  2266. ccp.CreateTime >= currStartDate &&
  2267. ccp.CreateTime <= currEntDate
  2268. )
  2269. .Select((ccp, di) => new
  2270. {
  2271. ccp.Id,
  2272. ccp.DIId,
  2273. GroupName = di.TeamName,
  2274. ccp.CreateTime,
  2275. })
  2276. .ToListAsync();
  2277. var groupPaymentGroups = groupPaymentData.GroupBy(x => x.DIId)
  2278. .Select(g => new
  2279. {
  2280. uId = g.Key,
  2281. name = g.ToList().FirstOrDefault()?.GroupName ?? "-",
  2282. msgTips = $"本年有{g.Count()}条未审核团组费用申请条",
  2283. userTourGuideData = g.ToList(),
  2284. Count = g.Count()
  2285. });
  2286. var groupPaymentData1 = new
  2287. {
  2288. msgTips = $"本年有{groupPaymentData.Count()}条未审核团组费用申请条",
  2289. Data = groupPaymentGroups,
  2290. };
  2291. #endregion
  2292. var feeUnAuditData = new
  2293. {
  2294. dailyPaymentData = dailyPaymentData1,
  2295. groupPaymentData = groupPaymentData1
  2296. };
  2297. return Ok(JsonView(new { materialData = materialData, feeUnAuditData = feeUnAuditData }));
  2298. }
  2299. else if (department.Equals("国交部"))//国交部
  2300. {
  2301. #region 团组费用录入提示
  2302. /*
  2303. * 名称:团组费用录入提示
  2304. * 描述:团组费用录入提醒(根据团组结束时间 - 3天 如果对应的数据表里没有这个团组的费用信息)
  2305. * 条件:时间范围不限制、 根据团组结束时间 - 3天 == 当前天数
  2306. */
  2307. var groupModlue = new List<int>() {
  2308. 76, //酒店预订
  2309. 79, //车/导游地接
  2310. 80, //签证
  2311. 81, //邀请/公务活动
  2312. //82, //团组客户保险
  2313. 85, //机票预订
  2314. 98, //其他款项
  2315. //285 ,//收款退还
  2316. //1015,//超支费用
  2317. };
  2318. var crrDate = DateTime.Now.ToString("yyyy-MM-dd");
  2319. var groupModlueData = await _sqlSugar.Queryable<Sys_SetData>().Where(x => groupModlue.Contains(x.Id)).ToListAsync();
  2320. var groupFeeData = await _sqlSugar.Queryable<Sys_SetData>()
  2321. .LeftJoin<Grp_CreditCardPayment>((sd, ccp) => sd.Id == ccp.CTable)
  2322. .LeftJoin<Grp_DelegationInfo>((sd, ccp, di) => ccp.DIId == di.Id)
  2323. .Where((sd, ccp, di) => ccp.IsDel == 0 &&
  2324. di.IsDel == 0 &&
  2325. groupModlue.Contains(ccp.CTable) &&
  2326. di.VisitEndDate.AddDays(-3).ToString("yyyy-MM-dd").Equals(crrDate)
  2327. )
  2328. .GroupBy((sd, ccp, di) => new { di.Id, di.TeamName, ccp.CTable, sd.Name }) //可以多字段
  2329. .Select((sd, ccp, di) => new {
  2330. diId = di.Id,
  2331. groupName = di.TeamName,
  2332. groupType = ccp.CTable,
  2333. groupTypeName = sd.Name,
  2334. //userId = ccp.CreateUserId,
  2335. count = SqlFunc.AggregateCount(ccp.CTable),
  2336. })
  2337. .ToListAsync();
  2338. var groupFeeData1 = groupFeeData.GroupBy(x => x.diId);
  2339. var groupNotFilledFeeData = new List<dynamic>();
  2340. foreach (var groupFee in groupFeeData1)
  2341. {
  2342. var diId = groupFee.Key;
  2343. var addData = groupFeeData.Where(x => x.diId == diId).Select(x => x.groupType).ToList();
  2344. if (addData.Count < 1) continue;
  2345. var unAddData = groupModlue.Except(addData).ToList();
  2346. if (unAddData.Count < 1) continue;
  2347. foreach (var typeId in unAddData)
  2348. {
  2349. groupNotFilledFeeData.Add(new
  2350. {
  2351. diId = diId,
  2352. groupName = groupFee.FirstOrDefault()?.groupName ?? "-",
  2353. groupType = typeId,
  2354. groupTypeName = groupModlueData.Find(x => x.Id == typeId)?.Name ?? "-",
  2355. count = 0
  2356. });
  2357. }
  2358. }
  2359. #endregion
  2360. #region 日付申请 -- 未审核数据
  2361. var depUserData = await _sqlSugar.Queryable<Sys_Users>()
  2362. .LeftJoin<Sys_Department>((u, d) => u.DepId == d.Id)
  2363. .LeftJoin<Sys_JobPost>((u, d, jp) => u.JobPostId == jp.Id)
  2364. .Where((u, d, jp) => u.IsDel == 0 && d.DepName.Contains("国交部"))
  2365. .Select((u, d, jp) => new
  2366. {
  2367. u.Id,
  2368. u.CnName,
  2369. u.DepId,
  2370. d.DepName,
  2371. u.JobPostId,
  2372. jp.JobName
  2373. })
  2374. .ToListAsync();
  2375. var depUserData1 = depUserData.Select(x => x.Id).ToList();
  2376. var unAuditDailyFeeData = await _sqlSugar.Queryable<Fin_DailyFeePayment>()
  2377. .LeftJoin<Sys_Users>((dfp, u) => dfp.CreateUserId == u.Id)
  2378. .Where((dfp, u) => dfp.IsDel == 0 &&
  2379. depUserData1.Contains(dfp.CreateUserId) &&
  2380. dfp.MAudit == 0 &&
  2381. dfp.CreateTime >= currStartDate &&
  2382. dfp.CreateTime <= currEntDate
  2383. )
  2384. .Select((dfp, u) => new
  2385. {
  2386. id = dfp.Id,
  2387. amountName = dfp.Instructions,
  2388. amount = dfp.SumPrice,
  2389. fAuditStatus = dfp.FAudit == 1 ? "审核通过" :
  2390. dfp.FAudit == 2 ? "审核未通过" : "未审核",
  2391. fAuditDate = dfp.FAuditDate,
  2392. dfp.CreateUserId,
  2393. CreateUserName = u.CnName,
  2394. dfp.CreateTime
  2395. })
  2396. .ToArrayAsync();
  2397. #endregion
  2398. var jobs = new List<string>() { "经理", "主管" };
  2399. if (jobs.Contains( currUserInfo.Role)) //经理、主管
  2400. {
  2401. #region 经理、主管
  2402. //经理、主管(部门下所有人员) --> 日付(-:未审核提示)、团组费用录入提醒(根据团组结束时间-3天 如果对应的数据表里没有这个团组的费用信息)
  2403. var dailyPaymentData = new
  2404. {
  2405. msgTips = $"本年有{unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2406. Data = new
  2407. {
  2408. uId = currUserInfo.UserId,
  2409. name = currUserInfo.UserName,
  2410. msgTips = $"本年有{unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2411. userTourGuideData = unAuditDailyFeeData,
  2412. Count = unAuditDailyFeeData.Count()
  2413. }
  2414. };
  2415. var groupNotFilledFeeDataAll = groupNotFilledFeeData
  2416. .GroupBy(x => x.diId)
  2417. .Select(g => new
  2418. {
  2419. uId = g.Key,
  2420. name = g.ToList().FirstOrDefault()?.groupName ?? "-",
  2421. msgTips = $"-",
  2422. hotelFeeData = g.Select(x1 => new
  2423. {
  2424. x1.groupType,
  2425. x1.groupTypeName
  2426. }).ToList(),
  2427. Count = g.Count()
  2428. })
  2429. .ToList();
  2430. var groupNotFillEdFeeData1 = new
  2431. {
  2432. msgTips = $"今天有{groupNotFilledFeeDataAll.Count()}个团组费用未填写",
  2433. Data = groupNotFilledFeeDataAll,
  2434. };
  2435. #endregion
  2436. return Ok(JsonView(new { groupNotFillEdFeeData = groupNotFillEdFeeData1, dailyPaymentData = dailyPaymentData }));
  2437. }
  2438. else if (currUserInfo.Role.Equals("计调"))//计调
  2439. {
  2440. #region 计调
  2441. //计调(myself) --> 暂定
  2442. return Ok(JsonView(false, "国交部-->计调岗位消息提示正在开发中......"));
  2443. #endregion
  2444. }
  2445. else if (currUserInfo.Role.Equals("机票"))//机票
  2446. {
  2447. #region 机票
  2448. //机票(myself) --> 日付(-:未审核提示)、机票费用(-:未录入提示)
  2449. var airTicket_unAuditDailyFeeData = unAuditDailyFeeData.Where(x => x.CreateUserId == currUserInfo.UserId).ToList();
  2450. var dailyPaymentData = new
  2451. {
  2452. msgTips = $"本年有{airTicket_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2453. Data = new
  2454. {
  2455. uId = currUserInfo.UserId,
  2456. name = currUserInfo.UserName,
  2457. msgTips = $"本年有{airTicket_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2458. userTourGuideData = airTicket_unAuditDailyFeeData,
  2459. Count = airTicket_unAuditDailyFeeData.Count()
  2460. }
  2461. };
  2462. var airTicket_groupNotFilledData = groupNotFilledFeeData
  2463. .Where(x => x.groupType == 85)
  2464. .GroupBy(x => x.diId)
  2465. .Select(g => new
  2466. {
  2467. uId = g.Key,
  2468. name = g.ToList().FirstOrDefault()?.groupName ?? "-",
  2469. msgTips = $"-",
  2470. airTicketFeeData = g.Select(x1 => new
  2471. {
  2472. x1.groupType,
  2473. x1.groupTypeName
  2474. }).ToList(),
  2475. Count = g.Count()
  2476. })
  2477. .ToList();
  2478. var groupNotFillEdFeeData1 = new
  2479. {
  2480. msgTips = $"今天有{airTicket_groupNotFilledData.Count()}个团组费用未填写",
  2481. Data = airTicket_groupNotFilledData,
  2482. };
  2483. #endregion
  2484. return Ok(JsonView(new { groupNotFillEdFeeData = groupNotFillEdFeeData1, dailyPaymentData = dailyPaymentData }));
  2485. }
  2486. else if (currUserInfo.Role.Equals("酒店"))//酒店
  2487. {
  2488. #region 酒店
  2489. //酒店(myself) --> 日付(-:未审核提示)、酒店费用(-:未录入提示)
  2490. var hotle_unAuditDailyFeeData = unAuditDailyFeeData.Where(x => x.CreateUserId == currUserInfo.UserId).ToList();
  2491. var dailyPaymentData = new
  2492. {
  2493. msgTips = $"本年有{hotle_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2494. Data = new
  2495. {
  2496. uId = currUserInfo.UserId,
  2497. name = currUserInfo.UserName,
  2498. msgTips = $"本年有{hotle_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2499. hotelFeeData = hotle_unAuditDailyFeeData,
  2500. Count = hotle_unAuditDailyFeeData.Count()
  2501. }
  2502. };
  2503. var hotel_groupNotFilledData = groupNotFilledFeeData
  2504. .Where(x => x.groupType == 76)
  2505. .GroupBy(x => x.diId)
  2506. .Select(g => new
  2507. {
  2508. uId = g.Key,
  2509. name = g.ToList().FirstOrDefault()?.groupName ?? "-",
  2510. msgTips = $"-",
  2511. hotelFeeData = g.Select(x1 => new
  2512. {
  2513. x1.groupType,
  2514. x1.groupTypeName
  2515. }).ToList(),
  2516. Count = g.Count()
  2517. })
  2518. .ToList();
  2519. var groupNotFillEdFeeData1 = new
  2520. {
  2521. msgTips = $"今天有{hotel_groupNotFilledData.Count()}个团组费用未填写",
  2522. Data = hotel_groupNotFilledData,
  2523. };
  2524. #endregion
  2525. return Ok(JsonView(new { groupNotFillEdFeeData = groupNotFillEdFeeData1, dailyPaymentData = dailyPaymentData }));
  2526. }
  2527. else if (currUserInfo.Role.Equals("签证"))//签证
  2528. {
  2529. #region 签证
  2530. //签证(myself) --> 日付(-:未审核提示)、签证费用(-:未录入提示)
  2531. var visa_unAuditDailyFeeData = unAuditDailyFeeData.Where(x => x.CreateUserId == currUserInfo.UserId).ToList();
  2532. var dailyPaymentData = new
  2533. {
  2534. msgTips = $"本年有{visa_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2535. Data = new
  2536. {
  2537. uId = currUserInfo.UserId,
  2538. name = currUserInfo.UserName,
  2539. msgTips = $"本年有{visa_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2540. visaFeeData = visa_unAuditDailyFeeData,
  2541. Count = visa_unAuditDailyFeeData.Count()
  2542. }
  2543. };
  2544. var visa_groupNotFilledData = groupNotFilledFeeData
  2545. .Where(x => x.groupType == 80)
  2546. .GroupBy(x => x.diId)
  2547. .Select(g => new
  2548. {
  2549. uId = g.Key,
  2550. name = g.ToList().FirstOrDefault()?.groupName ?? "-",
  2551. msgTips = $"-",
  2552. airTicketFeeData = g.Select(x1 => new
  2553. {
  2554. x1.groupType,
  2555. x1.groupTypeName
  2556. }).ToList(),
  2557. Count = g.Count()
  2558. })
  2559. .ToList();
  2560. var groupNotFillEdFeeData1 = new
  2561. {
  2562. msgTips = $"今天有{visa_groupNotFilledData.Count()}个团组费用未填写",
  2563. Data = visa_groupNotFilledData,
  2564. };
  2565. #endregion
  2566. return Ok(JsonView(new { groupNotFillEdFeeData = groupNotFillEdFeeData1, dailyPaymentData = dailyPaymentData }));
  2567. }
  2568. else if (currUserInfo.Role.Equals("商邀"))//商邀
  2569. {
  2570. #region 商邀
  2571. //商邀(myself) --> 日付(-:未审核提示)、商邀费用(-:未录入提示)、(公务、翻译人)(-:新增提示)
  2572. //日付
  2573. var in_unAuditDailyFeeData = unAuditDailyFeeData.Where(x => x.CreateUserId == currUserInfo.UserId).ToList();
  2574. var dailyPaymentData = new
  2575. {
  2576. msgTips = $"本年有{in_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2577. Data = new
  2578. {
  2579. uId = currUserInfo.UserId,
  2580. name = currUserInfo.UserName,
  2581. msgTips = $"本年有{in_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2582. visaFeeData = in_unAuditDailyFeeData,
  2583. Count = in_unAuditDailyFeeData.Count()
  2584. }
  2585. };
  2586. //团组未录入费用
  2587. var in_groupNotFilledData = groupNotFilledFeeData
  2588. .Where(x => x.groupType == 81)
  2589. .GroupBy(x => x.diId)
  2590. .Select(g => new
  2591. {
  2592. uId = g.Key,
  2593. name = g.ToList().FirstOrDefault()?.groupName ?? "-",
  2594. msgTips = $"-",
  2595. airTicketFeeData = g.Select(x1 => new
  2596. {
  2597. x1.groupType,
  2598. x1.groupTypeName
  2599. }).ToList(),
  2600. Count = g.Count()
  2601. })
  2602. .ToList();
  2603. var groupNotFillEdFeeData1 = new
  2604. {
  2605. msgTips = $"今天有{in_groupNotFilledData.Count()}个团组费用未填写",
  2606. Data = in_groupNotFilledData,
  2607. };
  2608. //商邀 - 基础数据
  2609. var invitationData = await _sqlSugar.Queryable<Res_InvitationOfficialActivityData>()
  2610. .LeftJoin<Sys_Users>((ioa, u) => ioa.CreateUserId == u.Id)
  2611. .Where((ioa, u) => ioa.IsDel == 0 && ioa.CreateTime >= startDateTime && ioa.CreateTime <= endDateTime)
  2612. .Select((ioa, u) => new
  2613. {
  2614. //Area = string.Format("{0}{1}", ioa.Country, !string.IsNullOrEmpty(ioa.City) ? "" : "-" + ioa.City),
  2615. Area = string.Format("{0}{1}", ioa.Country, ioa.City),
  2616. Client = ioa.UnitName,
  2617. ioa.Contact,
  2618. ioa.Job,
  2619. ioa.Tel,
  2620. ioa.CreateUserId,
  2621. CreatleUserName = u.CnName,
  2622. ioa.CreateTime,
  2623. })
  2624. .ToListAsync();
  2625. var invitationGroups = invitationData.GroupBy(x => x.CreateUserId)
  2626. .Select(g => new {
  2627. uId = g.Key,
  2628. name = g.ToList().FirstOrDefault()?.CreatleUserName ?? "-",
  2629. msgTips = $"上月新增商邀资源共{g.Count()}条",
  2630. userTourGuideData = g.ToList(),
  2631. Count = g.Count()
  2632. });
  2633. var invitationData1 = new
  2634. {
  2635. msgTips = $"上月新增商邀资源共{invitationData.Count}条",
  2636. Data = invitationGroups,
  2637. };
  2638. #endregion
  2639. return Ok(JsonView(new { groupNotFillEdFeeData = groupNotFillEdFeeData1, dailyPaymentData = dailyPaymentData, invitationData = invitationData }));
  2640. }
  2641. else if (currUserInfo.Role.Equals("OP"))//OP
  2642. {
  2643. #region OP
  2644. //OP(myself) --> 日付(-:未审核提示)、OP费用(-:未录入提示)、(导游、车)资源信息(-:新增提示)
  2645. //日付
  2646. var in_unAuditDailyFeeData = unAuditDailyFeeData.Where(x => x.CreateUserId == currUserInfo.UserId).ToList();
  2647. var dailyPaymentData = new
  2648. {
  2649. msgTips = $"本年有{in_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2650. Data = new
  2651. {
  2652. uId = currUserInfo.UserId,
  2653. name = currUserInfo.UserName,
  2654. msgTips = $"本年有{in_unAuditDailyFeeData.Count()}条未审核日常付款申请条",
  2655. visaFeeData = in_unAuditDailyFeeData,
  2656. Count = in_unAuditDailyFeeData.Count()
  2657. }
  2658. };
  2659. //OP - 团组未录入费用
  2660. var in_groupNotFilledData = groupNotFilledFeeData
  2661. .Where(x => x.groupType == 79)
  2662. .GroupBy(x => x.diId)
  2663. .Select(g => new
  2664. {
  2665. uId = g.Key,
  2666. name = g.ToList().FirstOrDefault()?.groupName ?? "-",
  2667. msgTips = $"-",
  2668. airTicketFeeData = g.Select(x1 => new
  2669. {
  2670. x1.groupType,
  2671. x1.groupTypeName
  2672. }).ToList(),
  2673. Count = g.Count()
  2674. })
  2675. .ToList();
  2676. var groupNotFillEdFeeData1 = new
  2677. {
  2678. msgTips = $"今天有{in_groupNotFilledData.Count()}个团组费用未填写",
  2679. Data = in_groupNotFilledData,
  2680. };
  2681. #region op地接导游
  2682. //1.2 op地接导游
  2683. var opTourGuideData = await _sqlSugar.Queryable<Res_LocalGuideData>()
  2684. .LeftJoin<Sys_Users>((lgd, u) => lgd.CreateUserId == u.Id)
  2685. .Where((lgd, u) => lgd.IsDel == 0 && lgd.CreateTime >= startDateTime && lgd.CreateTime <= endDateTime)
  2686. .Select((lgd, u) => new
  2687. {
  2688. Area = lgd.UnitArea,
  2689. Client = lgd.UnitName,
  2690. lgd.Contact,
  2691. Job = "",
  2692. Tel = lgd.ContactTel,
  2693. lgd.CreateUserId,
  2694. CreatleUserName = u.CnName,
  2695. lgd.CreateTime,
  2696. })
  2697. .ToListAsync();
  2698. foreach (var item in opTourGuideData) EncryptionProcessor.DecryptProperties(item);
  2699. var opTourGuideDataGroups = opTourGuideData.GroupBy(x => x.CreateUserId)
  2700. .Select(g => new {
  2701. uId = g.Key,
  2702. name = g.ToList().FirstOrDefault()?.CreatleUserName ?? "-",
  2703. msgTips = $"上月新增OP地接导游资源共{g.Count()}条",
  2704. userTourGuideData = g.ToList(),
  2705. Count = g.Count()
  2706. });
  2707. var opTourGuideData1 = new
  2708. {
  2709. msgTips = $"上月新增OP地接导游资源共{opTourGuideData.Count}条",
  2710. Data = opTourGuideDataGroups,
  2711. };
  2712. #endregion
  2713. #region op车数据
  2714. //1.3 op车数据
  2715. var opCarData = await _sqlSugar.Queryable<Res_CarData>()
  2716. .LeftJoin<Sys_Users>((cd, u) => cd.CreateUserId == u.Id)
  2717. .Where((cd, u) => cd.IsDel == 0 && cd.CreateTime >= startDateTime && cd.CreateTime <= endDateTime)
  2718. .Select((cd, u) => new
  2719. {
  2720. Area = cd.UnitArea,
  2721. Client = cd.UnitName,
  2722. cd.Contact,
  2723. Job = "",
  2724. Tel = cd.ContactTel,
  2725. cd.CreateUserId,
  2726. CreatleUserName = u.CnName,
  2727. cd.CreateTime,
  2728. })
  2729. .ToListAsync();
  2730. var opCarDataGroups = opCarData.GroupBy(x => x.CreateUserId)
  2731. .Select(g => new {
  2732. uId = g.Key,
  2733. name = g.ToList().FirstOrDefault()?.CreatleUserName ?? "-",
  2734. msgTips = $"上月新增OP地接车资源共{g.Count()}条",
  2735. userTourGuideData = g.ToList(),
  2736. Count = g.Count()
  2737. });
  2738. var opCarData1 = new
  2739. {
  2740. msgTips = $"上月新增OP地接车资源共{opCarData.Count}条",
  2741. Data = opCarDataGroups,
  2742. };
  2743. #endregion
  2744. #endregion
  2745. return Ok(JsonView(new
  2746. {
  2747. groupNotFillEdFeeData = groupNotFillEdFeeData1,
  2748. dailyPaymentData = dailyPaymentData,
  2749. CarData = opCarData1,
  2750. TourGuideData = opTourGuideData
  2751. }));
  2752. }
  2753. return Ok(JsonView(false, "国交部消息提示正在开发中......"));
  2754. }
  2755. else if (department.Equals("财务部"))//总经办
  2756. {
  2757. #region 团组收款数据
  2758. var groupCollectionData = await _sqlSugar.Queryable<Fin_ForeignReceivables>()
  2759. .LeftJoin<Sys_Users>((fr, u) => fr.CreateUserId == u.Id)
  2760. .LeftJoin<Grp_DelegationInfo>((fr, u, di) => fr.Diid == di.Id)
  2761. .LeftJoin<Sys_SetData>((fr, u, di, sd) => fr.Currency == sd.Id)
  2762. .Where((fr, u, di, sd) => fr.IsDel == 0 && fr.CreateTime >= startDateTime && fr.CreateTime <= endDateTime)
  2763. .Select((fr, u, di, sd) => new
  2764. {
  2765. fr.PriceName,
  2766. fr.Price,
  2767. fr.Count,
  2768. fr.Unit,
  2769. fr.ItemSumPrice,
  2770. Currency = sd.Name,
  2771. GroupName = di.TeamName,
  2772. fr.CreateUserId,
  2773. CreateUserName = u.CnName,
  2774. fr.CreateTime,
  2775. })
  2776. .ToListAsync();
  2777. var groupCollectionGroups = groupCollectionData.GroupBy(x => x.CreateUserId)
  2778. .Select(g => new
  2779. {
  2780. uId = g.Key,
  2781. name = g.ToList().FirstOrDefault()?.CreateUserName ?? "-",
  2782. msgTips = $"上月累计团组收款共{g.Count()}条",
  2783. userTourGuideData = g.ToList(),
  2784. Count = g.Count()
  2785. });
  2786. var groupCollectionData1 = new
  2787. {
  2788. msgTips = $"上月累计团组收款共{groupCollectionData.Count}条",
  2789. Data = groupCollectionGroups,
  2790. };
  2791. #endregion
  2792. #region 日付申请未审核数据
  2793. var dailyPaymentData = await _sqlSugar.Queryable<Fin_DailyFeePayment>()
  2794. .LeftJoin<Sys_Users>((dfp, u) => dfp.CreateUserId == u.Id)
  2795. .Where(dfp => dfp.IsDel == 0 &&
  2796. dfp.MAudit == 0 &&
  2797. dfp.CreateTime >= currStartDate &&
  2798. dfp.CreateTime <= currEntDate
  2799. )
  2800. .OrderBy(dfp => dfp.CreateTime, OrderByType.Desc)
  2801. //.OrderBy(dfp => dfp.FAudit, OrderByType.Desc)
  2802. .Select((dfp, u) => new
  2803. {
  2804. id = dfp.Id,
  2805. amountName = dfp.Instructions,
  2806. amount = dfp.SumPrice,
  2807. fAuditStatus = dfp.FAudit == 1 ? "审核通过" :
  2808. dfp.FAudit == 2 ? "审核未通过" : "未审核",
  2809. fAuditDate = dfp.FAuditDate,
  2810. dfp.CreateUserId,
  2811. CreateUserName = u.CnName,
  2812. dfp.CreateTime
  2813. })
  2814. .ToListAsync();
  2815. var dailyPaymentGroups = dailyPaymentData.GroupBy(x => x.CreateUserId)
  2816. .Select(g => new
  2817. {
  2818. uId = g.Key,
  2819. name = g.ToList().FirstOrDefault()?.CreateUserName ?? "-",
  2820. msgTips = $"本年有{g.Count()}条未审核日常付款申请条",
  2821. userTourGuideData = g.ToList(),
  2822. Count = g.Count()
  2823. });
  2824. var dailyPaymentData1 = new
  2825. {
  2826. msgTips = $"本年有{dailyPaymentData.Count()}条未审核日常付款申请条",
  2827. Data = dailyPaymentGroups,
  2828. };
  2829. #endregion
  2830. return Ok(JsonView(new { groupCollectionData = groupCollectionData1, dailyPaymentData = dailyPaymentData1 }));
  2831. }
  2832. return Ok(JsonView(false,"其余部门消息提示正在开发者中......"));
  2833. }
  2834. return Ok(JsonView(false));
  2835. }
  2836. #endregion
  2837. }
  2838. }