.Net使用依赖注入查询更新

using Abp.Application.Services.Dto;
using Abp.Collections.Extensions;
using Abp.Domain.Repositories;
using Abp.Organizations;
using Abp.UI;
using BM.ERP.Dto;
using BM.ERP.Sys.Organizationdetails.Dto;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http.Results;
using System.Web.Mvc;

namespace BM.ERP.Sys.Organizationdetails
{
    /// <summary>
    /// 组织结构详情
    /// </summary>
    public class OrganizationdetailesAppService : IOrganizationdetailesAppService
    {
        private readonly IRepository<OrganizationExtend, int> _organizationExtend;
        private readonly IRepository<OrganizationUnit, long> _organizationUnit;
        public readonly OrganizationalStructureServices _organizationalStructureServices;

        public OrganizationdetailesAppService(IRepository<OrganizationExtend, int> organizationExtend,
                                              IRepository<OrganizationUnit, long> organizationUnit,
                                              OrganizationalStructureServices organizationalStructureServices
                                              )
        {
            _organizationExtend = organizationExtend;
            _organizationUnit = organizationUnit;
            _organizationalStructureServices = organizationalStructureServices;
        }

        /// <summary>
        /// 获取OA和ERP的组织
        /// </summary>
        /// <returns></returns>
        public async Task<PagedResultDto<OrganizationStructureReturnDto>> GetOrganizationdetailes(OrganizationdetailesDto input)
        {
            var Messages = new List<OrganizationStructureReturnDto>();

            try
            {
                //ERP组织
                var qureys = await _organizationExtend.GetAll()
                    .Include(m => m.OrganizationUnit)
                    .Where(m => !m.IsDeleted)
                    .ToListAsync();

                //OA组织
                var jobLists = _organizationalStructureServices.GetJobDataGonGuan().ToList();

                #region OA与ERP

                if (jobLists != null && jobLists.Count() > 0 && qureys != null && qureys.Count() > 0)
                {
                    /*
                     从OA接口获取OA组织架构,通过CodePY对应,展示如下数据:
                     1.CodePY与OA对应,但是名称不同的 (每条数据后面需要放同步名称按钮)                   
                     2.OA上独有的                    
                     3.ERP上独有的                    
                     4.ERP上未设置CodePY的                    
                    */

                    //录入oa与erp对应的
                    foreach (var item in jobLists)
                    {
                        if (!Messages.Any(m => m.OaId == item.ID))
                        {
                            var erpData = qureys.FirstOrDefault(m => m.CodePY != null && m.CodePY != "" && m.CodePY == item.Code);

                            var equals = new OrganizationStructureReturnDto();
                            if (erpData != null)
                            {
                                equals.OaId = item.ID;
                                equals.DeptName = item.DeptName;
                                equals.OaCode = item.Code;
                                equals.OaCreationTime = item.CreationTime;
                                equals.TeamManager = item.TeamManager;

                                equals.ERPId = erpData.Id;
                                equals.DisplayName = erpData.OrganizationUnit != null ? erpData.OrganizationUnit.DisplayName : "";
                                equals.ERPCode = erpData.CodePY;
                                equals.ErpCreationTime = erpData.CreationTime;
                            }
                            else
                            {
                                equals.OaId = item.ID;
                                equals.DeptName = item.DeptName;
                                equals.OaCode = item.Code;
                                equals.OaCreationTime = item.CreationTime;
                                equals.TeamManager = item.TeamManager;

                                equals.ERPId = null;
                                equals.DisplayName = "";
                                equals.ERPCode = "";
                                equals.ErpCreationTime = null;
                            }

                            Messages.Add(equals);
                        }
                    }
                  
                    var erpDatas = qureys.Where(m => m.CodePY != null && m.CodePY != "").ToList();
                    foreach (var item in erpDatas)
                    {
                        var equals = new OrganizationStructureReturnDto
                        {
                            OaId = null,
                            DeptName = "",
                            OaCode = "",
                            OaCreationTime = null,
                            TeamManager = "",

                            ERPId = item.Id,
                            DisplayName = item.OrganizationUnit != null ? item.OrganizationUnit.DisplayName : "",
                            ERPCode = item.CodePY,
                            ErpCreationTime = item.CreationTime
                        };

                        Messages.Add(equals);
                    }
                }

                #endregion

                #region 查询

                if (!string.IsNullOrWhiteSpace(input.OaCode))
                {
                    Messages = Messages.Where(m => m.OaCode != null && m.OaCode.Contains(input.OaCode)).ToList();
                }

                if (!string.IsNullOrWhiteSpace(input.ERPCode))
                {
                    Messages = Messages.Where(m => m.ERPCode != null && m.ERPCode.Contains(input.ERPCode)).ToList();
                }

                if (!string.IsNullOrWhiteSpace(input.OaDisName))
                {
                    Messages = Messages.Where(m => m.DeptName.Contains(input.OaDisName)).ToList();
                }

                if (!string.IsNullOrWhiteSpace(input.ERPDisName))
                {
                    Messages = Messages.Where(m => m.DisplayName.Contains(input.ERPDisName)).ToList();
                }

                #endregion
            }

            catch (System.Exception e)
            {
                throw new UserFriendlyException("获取错误" + e.Message);
            }

            var MessagesPage = Messages.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();

            return new PagedResultDto<OrganizationStructureReturnDto>(Messages.Count(), MessagesPage);
        }

        /// <summary>
        /// 同步OA与ERP组织字段含义
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task<OrganizationStructureReturnDto> Synchronization(OrganizationStructureReturnDto input)
        {
            if (input.ERPId.HasValue)
            {
                var erp = await _organizationExtend.GetAll().FirstOrDefaultAsync(m => m.Id == input.ERPId.Value);

                if (erp != null)
                {
                    if (!string.IsNullOrWhiteSpace(input.OaCode) && !string.IsNullOrWhiteSpace(input.DeptName))
                    {
                        erp.CodePY = input.OaCode;

                        var _organUnit = await _organizationUnit.GetAll().FirstOrDefaultAsync(m => m.Id == erp.OrganizationUnitId);

                        if (_organUnit != null)
                        {
                            _organUnit.DisplayName = input.DeptName;
                        }
                        else
                        {
                            throw new UserFriendlyException("未获取到ERP主表数据!");
                        }
                    }
                }

                else
                {
                    throw new UserFriendlyException("未获取到ERP从表数据!");
                }
            }

            return input;
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值