小白成长记(二、勾选复选框计算价格)

本文介绍了在.NET Core中如何通过基础接口和基础服务简化依赖注入的注册过程,以及一个实际的报表功能实现。作者分享了通过继承基础接口和服务来自动注册服务的方法,减少了手动注册的繁琐。此外,还详述了一个计算选中数据总价并推送财务软件的逻辑,涉及前端交互、控制器中数据中转和Service服务的处理。最后,提供了实现这一功能的关键代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础接口和基础服务

hello,大家好。我是闲齁齁,一枚用发量写代码的程序员。昨天详细说了一下增删改查的操作,我们来说一下昨天提到的基础接口和基础服务。基础接口和基础服务里面都是没有代码的,唯一的区别就是基础服务里面继承了数据库上下文公共类,上下文公共类可以参考一下SqlSguar文档。
那么为什么要写这个基础接口和基础服务呢,大家都知道,使用.NET Core基本上都会写依赖注入的,每一个功能都需要注册服务,这样就非常繁琐,那么有什么简单一点的方法呢?答案是当然有,于是我们部门的大牛写了一个自动注册服务的方法
在这里插入图片描述
这样就完成了对IBaseService所在程序集带有ServiceDescriptor特性的自动注册。所以每增加一个接口和服务的时候继承一下基础接口和基础服务就可以完美实现。毕竟这比很多行的Services.Add…看起来更直观。

计算价格

因为我做的功能属于报表性质的功能,所以当所有的报表都做完之后我时间就比较富裕了。但是我还不是一个能闲得住的人,于是我师父交给了我一个任务,就是计算出来你勾选的那一条或多条数据并推送给一款财务软件然后反写一下。如下图(歌词可以忽略哈)
勾选获取数据可以参考一下Layui文档(https://www.layui.com/demo/table/operate.html)前端就不展示了,我也是用的文档里面的一些代码,而且完成之后我师父稍微修改了一下。
那么我来说一下这个功能的实现思路,当你选中某一条或多条数据的时候,把ID作为参数传递给控制器,然后在由控制器把数据传递给Service服务。
其实控制器里面的代码非常好写,只是起一个中转数据的作用。

public async Task<IActionResult> Number(string ids)
        {
            var dbResult = await _inventoryMaterialOutListService.NumberAsync(ids);

            return Json(ResultApi<string>.Result(dbResult));
        }

因为是复选框,所以在前端页面里面,我把所有选中的ID拼接成了一个字符串传递过去,这也就是为什么这里传递的参数是string类型。
那么接下来服务里面该进行什么样的操作呢?

//
 var idArr = ids?.Trim(',')?.Trim()?.Split(',');
                //如果为空或者长度为0就没有值,返回一个错误信息
                if (idArr == null || idArr.Length == 0)
                {
                    return Result<string>.IsFailed(message: "请选择操作的id");
                }
                //给一个初始价格为0
                decimal price = 0;
               //初始化一个list集合
                var listIds = new List<string>();
                //foreach循环取值
                foreach (var i in idArr)
                {
                    var item = await Db.Queryable<InventoryMaterialOutList>().InSingleAsync(i);
                    //kingdeePush一个bool类型的字段,用来进行反写(判断这条数据是否推送过)
                    if (!item.kingdeePush) 
                    {
                        listIds.Add(i);
                        price += item.MaterialPrice * item.RealNumber;
                    }     
                }

进行完这个步骤之后我们还剩最后一步,那就是if判断一下listIds 集合里还有没有值,如果没有的话就返回一条错误提示(没有可推送的数据),反之就进行推送操作,推送的代码就不粘出来了。
最后认识一下吧,我叫闲齁齁,一枚用发量写代码的程序员,期待与大家一起成长一起进步。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚风偷吻云朵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值