272 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			272 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.IServices.FM;
 | 
						|
using APT.Infrastructure.Core;
 | 
						|
using APT.MS.Domain.Entities.BS;
 | 
						|
using APT.MS.Domain.Entities.HM;
 | 
						|
using APT.MS.Domain.Enums;
 | 
						|
using APT.Utility;
 | 
						|
using APT.WebApi.Models;
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Linq.Expressions;
 | 
						|
 | 
						|
namespace APT.BS.WebApi.Controllers.Api
 | 
						|
{
 | 
						|
    [Route("api/BS/BSDepartmentAreaobject")]
 | 
						|
    public partial class BSDepartmentAreaobjectController : AuthorizeApiController<T_BS_DEPARTMENT_AREAOBJECT>
 | 
						|
    {
 | 
						|
        IFMDepartmentService DepartmentService { get; set; }
 | 
						|
 | 
						|
        public BSDepartmentAreaobjectController(IFMDepartmentService departmentService)
 | 
						|
        {
 | 
						|
            DepartmentService = departmentService;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 更新
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="entity"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("FullUpdate")]
 | 
						|
        public JsonActionResult<bool> FullUpdate([FromBody] T_BS_DEPARTMENT_AREAOBJECT entity)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                var check = GetEntity<T_BS_DEPARTMENT_AREAOBJECT>(e => e.DEPARTMENTID == entity.DEPARTMENTID && e.ID != entity.ID && !e.IS_DELETED);
 | 
						|
                if (check != null)
 | 
						|
                {
 | 
						|
                    throw new Exception("该部门已经设置过所属范围,操作失败!");
 | 
						|
                }
 | 
						|
 | 
						|
                List<T_BS_DEPARTMENT_AREAOBJECT> listResult = new List<T_BS_DEPARTMENT_AREAOBJECT>();
 | 
						|
                List<T_BS_DEPARTMENT_AREAOBJECT> listResultAdd = new List<T_BS_DEPARTMENT_AREAOBJECT>();
 | 
						|
                if (entity.ISDOWNSAME)//下级同步
 | 
						|
                {
 | 
						|
                    List<Guid> departmentIds = new List<Guid>() { entity.DEPARTMENTID };
 | 
						|
                    DepartmentService.GetDepartmentIds(entity.ORG_ID.Value, new List<Guid>() { entity.DEPARTMENTID }, ref departmentIds);
 | 
						|
                    departmentIds.Remove(entity.DEPARTMENTID);
 | 
						|
                    if (departmentIds.Count > 0)
 | 
						|
                    {
 | 
						|
                        var listDepartmentObj = GetEntities<T_BS_DEPARTMENT_AREAOBJECT>(e => departmentIds.Contains(e.DEPARTMENTID), null, null);
 | 
						|
 | 
						|
                        foreach (var item in listDepartmentObj)
 | 
						|
                        {
 | 
						|
                            departmentIds.Remove(item.DEPARTMENTID);
 | 
						|
                            if (item.CHECKOBJECT != entity.CHECKOBJECT)
 | 
						|
                            {
 | 
						|
                                //不一样 修改
 | 
						|
                                item.CHECKOBJECT = entity.CHECKOBJECT;
 | 
						|
                                listResult.Add(item);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
 | 
						|
                        //未设置 添加
 | 
						|
                        if (departmentIds.Count > 0)
 | 
						|
                        {
 | 
						|
                            foreach (var item in departmentIds)
 | 
						|
                            {
 | 
						|
                                T_BS_DEPARTMENT_AREAOBJECT temp = new T_BS_DEPARTMENT_AREAOBJECT();
 | 
						|
                                temp.ID = Guid.NewGuid();
 | 
						|
                                temp.CHECKOBJECT = entity.CHECKOBJECT;
 | 
						|
                                temp.DEPARTMENTID = item;
 | 
						|
                                temp.IS_DELETED = false;
 | 
						|
                                temp.ORG_ID = entity.ORG_ID;
 | 
						|
                                //temp.ENTITY_ORG_TPYE = ;
 | 
						|
                                //temp.FORM_ID = ;
 | 
						|
                                //temp.FLOW_STATUS = ;
 | 
						|
                                //temp.FLOW_SEND_STATUS = ;
 | 
						|
                                //temp.FLOW_ID = ;
 | 
						|
                                temp.CREATE_TIME = DateTime.Now;
 | 
						|
                                temp.MODIFY_TIME = temp.CREATE_TIME;
 | 
						|
                                temp.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						|
                                temp.MODIFIER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						|
                                listResultAdd.Add(temp);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                this.UnifiedCommit(() =>
 | 
						|
                {
 | 
						|
                    if (entity != null)
 | 
						|
                        UpdateEntityNoCommit(entity);
 | 
						|
                    if (listResult.Any())
 | 
						|
                        BantchUpdateEntityNoCommit(listResult);
 | 
						|
                    if (listResultAdd.Any())
 | 
						|
                        BantchAddEntityNoCommit(listResultAdd);
 | 
						|
                });
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 分页查询数据
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="pageFilter">分页过滤实体</param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("OrderPagedObject")]
 | 
						|
        public PagedActionResult<T_HM_RISK_AREA> OrderPagedObject([FromBody] KeywordPageFilter pageFilter)
 | 
						|
        {
 | 
						|
            return SafeGetPagedData(delegate (PagedActionResult<T_HM_RISK_AREA> result)
 | 
						|
            {
 | 
						|
                BSMineTypeEnum? CHECKOBJECT = null;
 | 
						|
                if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Count > 0)
 | 
						|
                {
 | 
						|
                    //BS032 属性
 | 
						|
                    List<FilterGroup> listGroup = pageFilter.FilterGroup.Groups.ToList();
 | 
						|
                    var listRules = listGroup[0].Rules.ToList();
 | 
						|
                    for (int i = listRules.Count - 1; i > -1; i--)
 | 
						|
                    {
 | 
						|
                        if (listRules[i].Field == "CHECKOBJECT")
 | 
						|
                        {
 | 
						|
                            CHECKOBJECT = (BSMineTypeEnum)int.Parse(listRules[i].Value.ToString());
 | 
						|
                            listRules.Remove(listRules[i]);
 | 
						|
                            listGroup[0].Rules = listRules;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    pageFilter.FilterGroup.Groups = listGroup;
 | 
						|
                }
 | 
						|
                //else   
 | 
						|
                if (pageFilter.FilterGroup.Rules != null && pageFilter.FilterGroup.Rules.Count > 0 && CHECKOBJECT == null)//&& CHECKOBJECT == null  如果没有 CHECKOBJECT 再次 查找 
 | 
						|
                {
 | 
						|
                    //BS032 列表
 | 
						|
                    List<FilterRule> listRules = pageFilter.FilterGroup.Rules.ToList();
 | 
						|
                    for (int i = listRules.Count - 1; i > -1; i--)
 | 
						|
                    {
 | 
						|
                        if (listRules[i].Field == "CHECKOBJECT")
 | 
						|
                        {
 | 
						|
                            CHECKOBJECT = (BSMineTypeEnum)int.Parse(listRules[i].Value.ToString());
 | 
						|
                            listRules.Remove(listRules[i]);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    pageFilter.FilterGroup.Rules = listRules;
 | 
						|
                }
 | 
						|
                Expression<Func<T_HM_RISK_AREA, bool>> expression = e => e.ORG_ID == pageFilter.OrgId && !e.IS_DELETED;
 | 
						|
 | 
						|
                if (CHECKOBJECT == null || CHECKOBJECT == BSMineTypeEnum.All)
 | 
						|
                {
 | 
						|
                    //所有区域
 | 
						|
                    PagedActionResult<T_HM_RISK_AREA> orderPageEntities = GetOrderPageEntities<T_HM_RISK_AREA>(expression, pageFilter, null);
 | 
						|
                    result.Data = orderPageEntities.Data;
 | 
						|
                    result.TotalCount = orderPageEntities.TotalCount;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    var listAreOBJ = GetEntities<T_BS_DEPARTMENT_AREAOBJECT>(e => e.CHECKOBJECT == CHECKOBJECT.Value, null, null);
 | 
						|
                    if (listAreOBJ != null && listAreOBJ.Any())
 | 
						|
                    {
 | 
						|
                        List<Guid> listDepID = listAreOBJ.Select(e => e.DEPARTMENTID).Distinct().ToList();
 | 
						|
                        //T_HM_RISK_AREA 中的  DEPARTMENT_ID  有些有值 有些没值 所以暂时放开  比如 有些只有 选矿 就全部出来了
 | 
						|
                        //expression = expression.And(e => e.DEPARTMENT_ID.HasValue && listDepID.Contains(e.DEPARTMENT_ID.Value));
 | 
						|
                        expression = expression.And(e => !e.DEPARTMENT_ID.HasValue || (e.DEPARTMENT_ID.HasValue && listDepID.Contains(e.DEPARTMENT_ID.Value)));
 | 
						|
                        PagedActionResult<T_HM_RISK_AREA> orderPageEntities = GetOrderPageEntities<T_HM_RISK_AREA>(expression, pageFilter, null);
 | 
						|
                        result.Data = orderPageEntities.Data;
 | 
						|
                        result.TotalCount = orderPageEntities.TotalCount;
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        result.Data = new List<T_HM_RISK_AREA>();
 | 
						|
                        result.TotalCount = 0;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 分页查询数据
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="pageFilter">分页过滤实体</param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("OrderPagedObjectSub")]
 | 
						|
        public PagedActionResult<T_HM_RISK_AREA> OrderPagedObjectSub([FromBody] KeywordPageFilter pageFilter)
 | 
						|
        {
 | 
						|
            return SafeGetPagedData(delegate (PagedActionResult<T_HM_RISK_AREA> result)
 | 
						|
            {
 | 
						|
                List<Guid> listAreaID = new List<Guid>();
 | 
						|
 | 
						|
                BSMineTypeEnum? CHECKOBJECT = null;
 | 
						|
                if (pageFilter.FilterGroup.Rules != null && pageFilter.FilterGroup.Rules.Count > 0)
 | 
						|
                {
 | 
						|
                    //BS032 列表
 | 
						|
                    List<FilterRule> listRules = pageFilter.FilterGroup.Rules.ToList();
 | 
						|
                    for (int i = listRules.Count - 1; i > -1; i--)
 | 
						|
                    {
 | 
						|
                        if (listRules[i].Field == "CHECKOBJECT")
 | 
						|
                        {
 | 
						|
                            CHECKOBJECT = (BSMineTypeEnum)int.Parse(listRules[i].Value.ToString());
 | 
						|
                            listRules.Remove(listRules[i]);
 | 
						|
                        }
 | 
						|
                        else if (listRules[i].Field == "Nav_ListCheckRiskArea")
 | 
						|
                        {
 | 
						|
                            List<AreaSearch> listAreaSearch = JsonHelper.FromJson<List<AreaSearch>>(listRules[i].Value.ToString());
 | 
						|
                            try
 | 
						|
                            {
 | 
						|
                                listAreaID = listAreaSearch.FindAll(e => !e.IS_DELETED.HasValue || !e.IS_DELETED.Value).Select(e => e.RISK_AREA_ID).Distinct().ToList();
 | 
						|
                                listRules.Remove(listRules[i]);
 | 
						|
                            }
 | 
						|
                            catch
 | 
						|
                            {
 | 
						|
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    pageFilter.FilterGroup.Rules = listRules;
 | 
						|
                }
 | 
						|
                Expression<Func<T_HM_RISK_AREA, bool>> expression = e => e.ORG_ID == pageFilter.OrgId && !e.IS_DELETED;
 | 
						|
 | 
						|
                if (listAreaID.Count > 0)
 | 
						|
                {
 | 
						|
                    expression = expression.And(e => listAreaID.Contains(e.ID));
 | 
						|
                    //所有区域
 | 
						|
                    PagedActionResult<T_HM_RISK_AREA> orderPageEntities = GetOrderPageEntities<T_HM_RISK_AREA>(expression, pageFilter, null);
 | 
						|
                    result.Data = orderPageEntities.Data;
 | 
						|
                    result.TotalCount = orderPageEntities.TotalCount;
 | 
						|
                }
 | 
						|
                else if (CHECKOBJECT == null || CHECKOBJECT == BSMineTypeEnum.All)
 | 
						|
                {
 | 
						|
                    //所有区域
 | 
						|
                    PagedActionResult<T_HM_RISK_AREA> orderPageEntities = GetOrderPageEntities<T_HM_RISK_AREA>(expression, pageFilter, null);
 | 
						|
                    result.Data = orderPageEntities.Data;
 | 
						|
                    result.TotalCount = orderPageEntities.TotalCount;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    var listAreOBJ = GetEntities<T_BS_DEPARTMENT_AREAOBJECT>(e => e.CHECKOBJECT == CHECKOBJECT.Value, null, null);
 | 
						|
                    if (listAreOBJ != null && listAreOBJ.Any())
 | 
						|
                    {
 | 
						|
                        List<Guid> listDepID = listAreOBJ.Select(e => e.DEPARTMENTID).Distinct().ToList();
 | 
						|
                        expression = expression.And(e => e.DEPARTMENT_ID.HasValue && listDepID.Contains(e.DEPARTMENT_ID.Value));
 | 
						|
                        PagedActionResult<T_HM_RISK_AREA> orderPageEntities = GetOrderPageEntities<T_HM_RISK_AREA>(expression, pageFilter, null);
 | 
						|
                        result.Data = orderPageEntities.Data;
 | 
						|
                        result.TotalCount = orderPageEntities.TotalCount;
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        result.Data = new List<T_HM_RISK_AREA>();
 | 
						|
                        result.TotalCount = 0;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    public class AreaSearch
 | 
						|
    {
 | 
						|
        public Guid RISK_AREA_ID { get; set; }
 | 
						|
        public Guid ID { get; set; }
 | 
						|
        public Guid SAFE_CHECK_ID { get; set; }
 | 
						|
        public Guid ORG_ID { get; set; }
 | 
						|
        public bool? IS_DELETED { get; set; }
 | 
						|
 | 
						|
        //"Nav_RiskArea": {
 | 
						|
        //  "NAME": "破碎车间-粗碎单元"
 | 
						|
        //},
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
}
 |