网站备案时间怎么查询系统学生个人网页优秀模板
网站备案时间怎么查询系统,学生个人网页优秀模板,备案号是哪个网站,视频直播免费网站建设起因#xff1a;最近公司要发票自动匹配#xff0c;
比如财务输入10000W块#xff0c;找到发票中能凑10000的。然后可以快速核销。 废话不多#xff0c; 一 官方文档
https://developers.google.cn/optimization/pack/knapsack?hlzh-cn 二 POM文件 !--google 算法包…起因最近公司要发票自动匹配
比如财务输入10000W块找到发票中能凑10000的。然后可以快速核销。 废话不多 一 官方文档
https://developers.google.cn/optimization/pack/knapsack?hlzh-cn 二 POM文件 !--google 算法包--dependencygroupIdcom.google.ortools/groupIdartifactIdortools-java/artifactIdversion9.9.3963/version/dependency!--google 算法包--
三 代码
1 查询业务数据
说明根据条件查询ListFsBill,
由于发票金额的匹配只有一个维度所以设置valuesamount,
然后调用knapsackSolver_invoice背包核心算法。 Overridepublic ListFsBill solverBill(CheckingBill_Req req) {ListFsBill fsBills findCheckingBill(req);//背包算法只支持Long所以amount*1000转换//由于不需要考虑价值因素所以设置valuesamount.这样可以匹配正好的金额。long[] values fsBills.stream().mapToLong(x - x.getTotalRateAmount().multiply(new BigDecimal(1000)).longValue()).toArray();//金额:小数*1000作整数处理。long[][] amount {values};//总金额*1000作整数处理。long[] capacities {req.getTotalAmount().multiply(new BigDecimal(1000)).longValue()};ListInteger fsBillIndexs knapsackSolver_invoice(values, amount, capacities);ListFsBill solverBill new ArrayList();if (!CollectionUtils.isEmpty(fsBillIndexs)) {for (Integer i : fsBillIndexs) {solverBill.add(fsBills.get(i));}}return solverBill;} 2 背包核心算法
说明
values代表物品价值(发票只有一个金额维度所以valuesweights)
weights物品重量此处可以传递发票金额amount
返回的是ListInteger数组下标可以对应到ListFsBill的对象。
Overridepublic ListInteger knapsackSolver_invoice(long[] values, long[][] weights, long[] capacities) {//加载OR-TOOL本地库Loader.loadNativeLibraries();//开始业务System.out.println(Begin : 匹配发票);KnapsackSolver solver new KnapsackSolver(KnapsackSolver.SolverType.KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER, test);solver.init(values, weights, capacities);final long computedValue solver.solve();ArrayListInteger packedItems new ArrayList();ArrayListLong packedWeights new ArrayList();int totalWeight 0;for (int i 0; i values.length; i) {if (solver.bestSolutionContains(i)) {packedItems.add(i);packedWeights.add(weights[0][i]);totalWeight (int) (totalWeight weights[0][i]);}}//匹配金额System.out.println(Target amounts: capacities[0]);//总价值System.out.println(Total values: computedValue);//总重量System.out.println(Total amounts: totalWeight);//装载项的下标可对应List发票的下标System.out.println(Packed items: packedItems);//装载项的重量System.out.println(Packed amounts: packedWeights);System.out.println(End : 匹配发票);//如果没有完全匹配金额则清空packedItemsif (capacities[0] ! totalWeight) {packedItems.clear();}return packedItems;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92047.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!