FR库龄分析表求教

QQ图片20210318153726.png

现在有这样一个表,有库存的去向与来源,及数量与来源日期,现在根据来源算库存的库龄,想法是把去向求和,从距离现在最远开始和来源依次比较数量,如果大于或等于,就把这个来源去掉,同时去向中减去这个数量,再继续和下一个来源比较,直至小于,对当前来源减去去向数量,返回剩下的来源单号、日期和数量,FR能实现这个吗……

------------------------------------------------------------------------------------------

学过一段时间JAVA(已忘完),感觉这个应该是牵扯到写脚本公式循环判断逻辑,奈何不会了,求大佬们帮忙……

-----------------------------------------------------

数据源为SQL SERVER中的表

FineReport 用户p9061960 发布于 2021-3-18 15:49 (编辑于 2021-3-18 16:27)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
烟尘Lv6高级互助
发布于2021-3-18 16:17(编辑于 2021-3-18 17:02)

KLTest.txt

用程序数据集写java实现

思路:

1、查出现有库存记录,按物料编码、仓库库位号合并计算

2、循环库存记录list,按物料编码、仓库库位号查询出库数量和

3、查询所有入库记录,循环+=入库数量,当入库数量>出库总和时记录到list

4、循环完毕返回list,就是库龄

总结:做3层循环

一层循环现有库存

二层循环用库存表物料查找总的出库数量

三层循环用入库明细的数量逐条累加直到超过出库数量后,逐条插入返回集

带参程序数据集-https://help.fanruan.com/finereport/doc-view-642.html

  • 用户p9061960 用户p9061960(提问者) 数据源是SQL SERVER
    2021-03-18 16:26 
  • 烟尘 烟尘 回复 用户p9061960(提问者) 一样的,之前我也写过类似的,年头太长有点忘了
    2021-03-18 16:38 
  • 烟尘 烟尘 回复 用户p9061960(提问者) 你也可以在数据库层面用存储过程通过循环来写,只是效率很低,我找到了之前的代码,你可以参考一下,其中sql和数据库连接需要改
    2021-03-18 17:01 
  • 用户p9061960 用户p9061960(提问者) 回复 烟尘 感谢,我学习学习,JAVA扔了半年了,之前也没太学好,数据库就学了皮毛,没用过存储过程,尴尬……
    2021-03-18 17:05 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-3-18 16:41(编辑于 2021-3-19 10:18)

既然用SQL Server那用存储过程呗。方便快捷.另外题主的:

-----------------------

想法是把去向求和,从距离现在最远开始和来源依次比较数量,如果大于或等于,就把这个来源去掉,同时去向中减去这个数量,再继续和下一个来源比较,直至小于,对当前来源减去去向数量,返回剩下的来源单号、日期和数量

------------------------

这个思路可以改成:

先算库存,再从来路中按入库日期倒序(从当前日期倒推)直至来源大于等于库存,返回倒推出来的来源单号、日期和数量。这样是不是可以快点

  • 烟尘 烟尘 sql写循环效率太低,不如放到应用层
    2021-03-18 16:59 
  • Z4u3z1 Z4u3z1 回复 烟尘 第一次算库龄的时候就做标记瑟后面就只处理未标记的数据就快了呗。难道你想在应用层每次都拉通比较一次
    2021-03-18 17:04 
  • 烟尘 烟尘 回复 Z4u3z1 要保证标记准确的前提是标记的出入记录总额互相抵消,实际情况下出入库顺序金额是多变的,要实现这个算法更复杂
    2021-03-18 17:22 
  • Z4u3z1 Z4u3z1 回复 烟尘 用一个变量控制就解决了
    2021-03-18 17:37 
  • 烟尘 烟尘 回复 Z4u3z1 每条出入库都要加一个变量记录抵消多少,前提是数据库可以增加字段或者增加表而不影响ERP运行,还要做服务或者在每次计算库龄前遍历未抵消记录修改标记和变量
    2021-03-19 08:36 
  • 2关注人数
  • 659浏览人数
  • 最后回答于:2021-3-19 10:18
    请选择关闭问题的原因
    确定 取消
    返回顶部