《.net/c#专题--批量计算金额对账和发送对账单》

版权声明:龙文浩原创 https://blog.csdn.net/weixin_44548307/article/details/86546710

作者:龙文浩
开发工具与关键技术:MVC/C#
撰写时间:2019年1月18日

下面我们使用C#来处理批量计算金额的部分,下面我们来看一个例子:
在这里插入图片描述
图1.0
上图将对客户在本海运公司的账单进行批量计算:
计算出勾选的数据中:“盈利”:客户应该给本公司多少钱,(而每个客户给钱不一样)
“亏损”:本公司在此委托单中将给多少(司机工资),给多少(关税),每一个委托单的(税率都是不一样的),而且每一个运输单的司机也是不一样的,(司机的工资也是不一样的),和(不一样的管理费)。
看几个顾客的例子,1.委托单好为0305的客户:
在这里插入图片描述
图1.1
2.委托单号为0246的客户:
在这里插入图片描述
图1.2
3.委托单号为0235的客户:
在这里插入图片描述
图1.3
4.委托单号为0213的客户:
在这里插入图片描述
图1.4
可以看到示例3和示例4,虽是同一个客户,税金也是有所不同的。
接下来,看后台计算代码,如何实现的:

  1. 首先声明参数:
  2. 在这里插入图片描述
    图1.5
  3. 写一个函数
  4. 在这里插入图片描述
  5. 图1.6
  6. 最外层给个提示运用插件layer
  7. 在这里插入图片描述
  8. 图1.7
  9. Check对应的表格是下面这个表格:
  10. 在这里插入图片描述
  11. 图1.8
  12. 判断Check的值不为空,即有选择数据,见下图:
  13. 在这里插入图片描述
  14. 图1.9
  15. 获取到EntrustID、SendID、并把数据保存到数组Eid和Sid中之后,判断值不为空,就是让用户把数据填写完整:
  16. 在这里插入图片描述
  17. 图2.0
  18. 在这里插入图片描述
  19. 图2.1
  20. 拼接数据向控制器传输
  21. 在这里插入图片描述
  22. 图2.2
  23. 请保证View层数据与控制器的类型数据保持一致,注意不要漏了参数。
  24. 声明参数,把View层传过来的来个数组进行切割,分别保存到两个新的数组里面,见下图:
  25. 在这里插入图片描述
  26. 图2.3
  27. 最外层用try catch来捕捉错误
  28. 在这里插入图片描述
  29. 图2.4
  30. 然后需要一个for循环来遍历数据,循环的长度就是分割后数组的长度,当然,你也可以保险一点,对比一下两个数组长度是否一样,我确定他们是一样的,就不作这个if判断了,然后我获取到每一个EntrustID, SendID, ChargingID, EntrustStateID。
  31. 下图中,通过委托单号的唯一性,去标记表里寻找,如果标记表里没有出现过这个数据,说明没有标记过,否则就是已经标记过的,让js2加一
  32. 在这里插入图片描述
  33. 图2.5
  34. 没有标记过的执行保存代码:
  35. 在这里插入图片描述
  36. 图2.6
  37. 保存成功之后,去通过当前的EntrustStateID,去修改表的状态为“已标记对账”状态,然后让js加一
  38. For循环结束之后,处理str,拼接好传回View层
  39. 在这里插入图片描述
  40. 图2.7
  41. 下面是View层的处理:
  42. 在这里插入图片描述
  43. 图2.8
  44. 由于不能发送null,undefined值给用户看,就转化成0;并且刷新表格;隐藏模态窗;
  45. 在这里插入图片描述
  46. 图2.9
  47. 最后生成计费单ID发送给用户:
  48. 在这里插入图片描述
  49. 图3.0
  50. 最后,如果没有标记对账,发送的对账单就是7张或者n张,此功能可减少对账单打印次数,提高效率,我们可以再做一个权限性可逆的操作,取消某一次标记对账,防止标记错误,也可以给个设置,什么只允许标记同一家公司,什么允许标记多种不同的公司,我们上面案例是允许标记多种不同的公司,前一种实现也不难的,就是个if的事,有疑问,欢迎来交流;

猜你喜欢

转载自blog.csdn.net/weixin_44548307/article/details/86546710