소스 검색

1. 会务成本bug fix
2. 会务成本物料成本库部分完善

yuanrf 1 일 전
부모
커밋
9f3e05ace1

+ 6 - 6
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -32010,9 +32010,14 @@ ORDER BY
         [HttpPost]
         public async Task<IActionResult> ConferenceAffairsInIt(ConferenceAffairsInItDto Dto)
         {
+
+            var hwids = _sqlSugar.Queryable<Sys_SetData>()
+                                 .Where(x => x.IsDel == 0 && x.STid == 10 && x.Name.Contains("会务活动"))
+                                 .Select(x => x.Id)
+                                 .ToList();
             var expr = _sqlSugar.Queryable<Grp_DelegationInfo>()
                     .OrderByDescending(x => x.CreateTime)
-                    .Where(x => x.IsDel == 0)
+                    .Where(x => x.IsDel == 0 && hwids.Contains(x.TeamDid))
                     .Select<DelegationEasyView>();
             DelegationEasyView di = Dto.GroupId == 0 ?
                     expr.First() :
@@ -32028,11 +32033,6 @@ ORDER BY
             .Select(x => new { x.Id, Text = x.Name })
             .ToListAsync();
 
-            var hwids = _sqlSugar.Queryable<Sys_SetData>()
-                       .Where(x => x.IsDel == 0 && x.STid == 10 && x.Name.Contains("会务活动"))
-                       .Select(x => x.Id)
-                       .ToList();
-
             //仅检索会务团组   
             var groupList = await _sqlSugar.Queryable<Grp_DelegationInfo>()
             .Where(x => x.IsDel == 0 && hwids.Contains(x.TeamDid))

+ 87 - 5
OASystem/OASystem.Api/Controllers/ResourceController.cs

@@ -45,8 +45,9 @@ namespace OASystem.API.Controllers
         private readonly MediaSuppliersRepository _mediaSupplierRep;
         private readonly List<int> _portIds;
         private readonly BasicInsuranceCostRepository _insuranceCostRep;
-        private readonly GamesBudgetMasterRepository _gamesBudgetMasterRep; 
+        private readonly GamesBudgetMasterRepository _gamesBudgetMasterRep;
         private readonly OverseaVehicleRepository _overseaVehicleRep;
+        private readonly MaterialCostRepository _materialCostRep;
         /// <summary>
         /// 签证费用归属省份静态数据
         /// </summary>
@@ -81,7 +82,8 @@ namespace OASystem.API.Controllers
             MediaSuppliersRepository mediaSupplierRep,
             BasicInsuranceCostRepository insuranceCostRep,
             GamesBudgetMasterRepository gamesBudgetMasterRep,
-            OverseaVehicleRepository overseaVehicleRep
+            OverseaVehicleRepository overseaVehicleRep,
+            MaterialCostRepository materialCostRep
             )
         {
             _mapper = mapper;
@@ -108,6 +110,7 @@ namespace OASystem.API.Controllers
             _insuranceCostRep = insuranceCostRep;
             _gamesBudgetMasterRep = gamesBudgetMasterRep;
             _overseaVehicleRep = overseaVehicleRep;
+            _materialCostRep = materialCostRep;
         }
 
         #region 车公司资料板块
@@ -2386,7 +2389,7 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
             {
                 var translators = await _sqlSugar.Queryable<Res_TranslatorLibrary>()
                     .Where(x => x.IsDel == 0 && !string.IsNullOrEmpty(x.Name))
-                    .Select(x => new { x.Id,x.Name })
+                    .Select(x => new { x.Id, x.Name })
                     .ToListAsync();
                 if (translators.Any())
                 {
@@ -2407,7 +2410,7 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
                 }
             }
 
-            
+
 
             RefAsync<int> total = 0;
 
@@ -2432,7 +2435,7 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
                 })
                 .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
 
-            
+
             for (int i = 0; i < translatorInfos.Count; i++)
             {
                 EncryptionProcessor.DecryptProperties(translatorInfos[i]);
@@ -5212,6 +5215,85 @@ WHERE
         }
 
 
+        #endregion
+
+        #region 物料成本
+
+        /// <summary>
+        /// 物料成本列表查询
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> MaterialCostList(QueryMaterialCostDto dto)
+        {
+            var data = await _materialCostRep.GetListAsync(dto);
+            return Ok(JsonView(true, "查询成功", data));
+        }
+
+        /// <summary>
+        /// 物料成本详情
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> MaterialCostInfo(int id)
+        {
+            var data = await _materialCostRep.GetDetailAsync(id);
+            return Ok(JsonView(true, "查询成功", data));
+        }
+
+        /// <summary>
+        /// 物料成本添加/修改
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> MaterialCostAddOrEdit(UpMaterialCostDto dto)
+        {
+            if (dto.Id > 0)
+            {
+                // 修改
+                var entity = _mapper.Map<Res_MaterialCost>(dto);
+                var result = await _materialCostRep.UpdateAsync(s => s.Id == dto.Id, it => new Res_MaterialCost()
+                {
+                    TypeId = entity.TypeId,
+                    Name = entity.Name,
+                    Price = entity.Price,
+                    Number = entity.Number,
+                    Unit = entity.Unit,
+                    SetDataId = entity.SetDataId,
+                    CityId = entity.CityId,
+                    Remark = entity.Remark
+                });
+                return Ok(JsonView(result, result ? "修改成功" : "修改失败"));
+            }
+            else
+            {
+                // 添加
+                var entity = _mapper.Map<Res_MaterialCost>(dto);
+                entity.CreateTime = DateTime.Now;
+                var result = await _materialCostRep.AddAsync(entity);
+                return Ok(JsonView(result > 0, result > 0 ? "添加成功" : "添加失败"));
+            }
+        }
+
+        /// <summary>
+        /// 物料成本删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> MaterialCostDel(DelBaseDto dto)
+        {
+            var result = await _materialCostRep.SoftDeleteAsync(dto.Id.ToString());
+            return Ok(JsonView(result, result ? "删除成功" : "删除失败"));
+        }
+
         #endregion
     }
 }

+ 7 - 1
OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs

@@ -1,4 +1,4 @@
-using OASystem.Domain.Dtos.CRM;
+using OASystem.Domain.Dtos.CRM;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Dtos.Resource;
 using OASystem.Domain.Dtos.System;
@@ -269,6 +269,12 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<VisaFeeStandardInfoView, Res_VisaFeeStandard>();
             #endregion
 
+            #region 物料成本
+            CreateMap<AddMaterialCostDto, Res_MaterialCost>();
+            CreateMap<UpMaterialCostDto, Res_MaterialCost>();
+            CreateMap<Res_MaterialCost, MaterialCostView>();
+            #endregion
+
             #region 物料供应商
             CreateMap<Edit_ResItemVendorDto, Res_ItemVendor>()
                  .ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.VendorAddress))

+ 97 - 0
OASystem/OASystem.Domain/Dtos/Resource/MaterialCostDto.cs

@@ -0,0 +1,97 @@
+using OASystem.Domain.Attributes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Resource
+{
+    /// <summary>
+    /// 物料成本查询参数
+    /// </summary>
+    public class QueryMaterialCostDto : DtoBase
+    {
+        /// <summary>
+        /// 类型Id
+        /// </summary>
+        public int? TypeId { get; set; }
+
+        /// <summary>
+        /// 物料名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 规模ID
+        /// </summary>
+        public int? SetDataId { get; set; }
+
+        /// <summary>
+        /// 地区ID
+        /// </summary>
+        public int? CityId { get; set; }
+    }
+
+    /// <summary>
+    /// 添加物料成本参数
+    /// </summary>
+    public class AddMaterialCostDto
+    {
+        /// <summary>
+        /// 类型Id
+        /// </summary>
+        public int TypeId { get; set; }
+
+        /// <summary>
+        /// 物料名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 成本单价
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// 单位Id
+        /// </summary>
+        public int Unit { get; set; }
+
+        /// <summary>
+        /// 规模ID
+        /// </summary>
+        public int SetDataId { get; set; }
+
+        /// <summary>
+        /// 地区ID
+        /// </summary>
+        public int CityId { get; set; }
+
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int CreateUserId { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 修改物料成本参数
+    /// </summary>
+    public class UpMaterialCostDto : AddMaterialCostDto
+    {
+        /// <summary>
+        /// 编号
+        /// </summary>
+        public int Id { get; set; }
+    }
+}

+ 51 - 0
OASystem/OASystem.Domain/Entities/Resource/MaterialCost.cs

@@ -0,0 +1,51 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using OASystem.Domain.Entities;
+
+namespace OASystem.Domain.Entities.Resource
+{
+    /// <summary>
+    /// 物料成本实体
+    /// </summary>
+    [SugarTable("Res_MaterialCost")]
+    public class Res_MaterialCost : EntityBase
+    {
+        /// <summary>
+        /// 类型Id
+        /// </summary>
+        public int TypeId { get; set; }
+
+        /// <summary>
+        /// 物料名称
+        /// </summary>
+        public string Name { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 成本单价
+        /// </summary>
+        [Column(TypeName = "decimal(18,2)")]
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// 单位Id
+        /// </summary>
+        public int Unit { get; set; }
+
+
+        /// <summary>
+        /// 规模ID(SetData 表外键)
+        /// </summary>
+        public int SetDataId { get; set; }
+
+        /// <summary>
+        /// 地区ID(City 表外键)
+        /// </summary>
+        public int CityId { get; set; }
+    }
+
+}

+ 78 - 0
OASystem/OASystem.Domain/ViewModels/Resource/MaterialCostView.cs

@@ -0,0 +1,78 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Resource
+{
+    /// <summary>
+    /// 物料成本视图模型
+    /// </summary>
+    public class MaterialCostView
+    {
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 类型Id
+        /// </summary>
+        public int TypeId { get; set; }
+
+        /// <summary>
+        /// 物料名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 成本单价
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// 单位Id
+        /// </summary>
+        public int Unit { get; set; }
+
+        /// <summary>
+        /// 规模ID
+        /// </summary>
+        public int SetDataId { get; set; }
+
+        /// <summary>
+        /// 规模名称
+        /// </summary>
+        public string SetDataName { get; set; }
+
+        /// <summary>
+        /// 地区ID
+        /// </summary>
+        public int CityId { get; set; }
+
+        /// <summary>
+        /// 地区名称
+        /// </summary>
+        public string CityName { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime CreateTime { get; set; }
+    }
+
+    /// <summary>
+    /// 物料成本列表视图
+    /// </summary>
+    public class MaterialCostListView : ListViewBase<MaterialCostView>
+    {
+    }
+}

+ 103 - 0
OASystem/OASystem.Infrastructure/Repositories/Resource/MaterialCostRepository.cs

@@ -0,0 +1,103 @@
+using OASystem.Domain.Dtos.Resource;
+using OASystem.Domain.Entities.District;
+using OASystem.Domain.Entities.Resource;
+using OASystem.Domain.Entities.System;
+using OASystem.Domain.ViewModels.Resource;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Resource
+{
+    public class MaterialCostRepository : BaseRepository<Res_MaterialCost, MaterialCostView>
+    {
+        public MaterialCostRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
+        {
+        }
+
+        /// <summary>
+        /// 获取物料成本分页列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<MaterialCostListView> GetListAsync(QueryMaterialCostDto dto)
+        {
+            var query = _sqlSugar.Queryable<Res_MaterialCost, Sys_SetData, Dis_City>((m, s, c) => new JoinQueryInfos(
+                JoinType.Left, m.SetDataId == s.Id,
+                JoinType.Left, m.CityId == c.Id
+            ))
+            .Where((m, s, c) => m.IsDel == 0);
+
+            if (dto.TypeId.HasValue && dto.TypeId > 0)
+                query = query.Where((m, s, c) => m.TypeId == dto.TypeId.Value);
+
+            if (!string.IsNullOrEmpty(dto.Name))
+                query = query.Where((m, s, c) => m.Name.Contains(dto.Name));
+
+            if (dto.SetDataId.HasValue && dto.SetDataId > 0)
+                query = query.Where((m, s, c) => m.SetDataId == dto.SetDataId.Value);
+
+            if (dto.CityId.HasValue && dto.CityId > 0)
+                query = query.Where((m, s, c) => m.CityId == dto.CityId.Value);
+
+            int totalCount = 0;
+            var list = await query.OrderBy((m, s, c) => m.Id, OrderByType.Desc)
+                .Select((m, s, c) => new MaterialCostView
+                {
+                    Id = m.Id,
+                    TypeId = m.TypeId,
+                    Name = m.Name,
+                    Price = m.Price,
+                    Number = m.Number,
+                    Unit = m.Unit,
+                    SetDataId = m.SetDataId,
+                    SetDataName = s.Name,
+                    CityId = m.CityId,
+                    CityName = c.CnName,
+                    Remark = m.Remark,
+                    CreateTime = m.CreateTime
+                })
+                .ToPageListAsync(dto.PageIndex, dto.PageSize, totalCount);
+
+            return new MaterialCostListView
+            {
+                DataList = list,
+                DataCount = totalCount,
+                CurrPageIndex = dto.PageIndex,
+                CurrPageSize = dto.PageSize
+            };
+        }
+
+        /// <summary>
+        /// 获取单条详情
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task<MaterialCostView> GetDetailAsync(int id)
+        {
+            return await _sqlSugar.Queryable<Res_MaterialCost, Sys_SetData, Dis_City>((m, s, c) => new JoinQueryInfos(
+                JoinType.Left, m.SetDataId == s.Id,
+                JoinType.Left, m.CityId == c.Id
+            ))
+            .Where((m, s, c) => m.Id == id && m.IsDel == 0)
+            .Select((m, s, c) => new MaterialCostView
+            {
+                Id = m.Id,
+                TypeId = m.TypeId,
+                Name = m.Name,
+                Price = m.Price,
+                Number = m.Number,
+                Unit = m.Unit,
+                SetDataId = m.SetDataId,
+                SetDataName = s.Name,
+                CityId = m.CityId,
+                CityName = c.CnName,
+                Remark = m.Remark,
+                CreateTime = m.CreateTime
+            })
+            .FirstAsync();
+        }
+    }
+}