当前位置: 首页 > news >正文

网站建设j介绍ppt模板wordpress 入门学习

网站建设j介绍ppt模板,wordpress 入门学习,长沙征帆网站建设,东莞企业网络营销平台起因&#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?hl=zh-cn

二 POM文件

        <!--google 算法包--><dependency><groupId>com.google.ortools</groupId><artifactId>ortools-java</artifactId><version>9.9.3963</version></dependency><!--google 算法包-->

三 代码

1 查询业务数据

说明:根据条件查询List<FsBill>,

由于发票金额的匹配,只有一个维度,所以设置values=amount,

然后调用knapsackSolver_invoice背包核心算法。

    @Overridepublic List<FsBill> solverBill(CheckingBill_Req req) {List<FsBill> fsBills = findCheckingBill(req);//背包算法只支持Long,所以amount*1000转换//由于不需要考虑价值因素,所以设置values=amount.这样可以匹配正好的金额。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()};List<Integer> fsBillIndexs = knapsackSolver_invoice(values, amount, capacities);List<FsBill> solverBill = new ArrayList<>();if (!CollectionUtils.isEmpty(fsBillIndexs)) {for (Integer i : fsBillIndexs) {solverBill.add(fsBills.get(i));}}return solverBill;}

2 背包核心算法

说明:

values:代表物品价值(发票只有一个金额维度,所以values=weights)

weights:物品重量(此处可以传递发票金额amount)

返回的是List<Integer>数组下标,可以对应到List<FsBill>的对象。

@Overridepublic List<Integer> 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();ArrayList<Integer> packedItems = new ArrayList<>();ArrayList<Long> 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.yayakq.cn/news/248/

相关文章:

  • 南康网站网站建设临平做网站电话
  • 做网站 数据标准西安建设银行网站
  • 网销都是在那些网站做推广淄博网站网站建设
  • 网站运行环境引流网站怎么做
  • 制作网站要不要域名泉州做网站qzxiaolv
  • 江苏南京建设厅网站网站建设广告宣传
  • 网页设计与网站开发前端优化网站
  • 自适应网站的缺点晋中做网站公司
  • 中交建设集团网站新闻品牌策划策略
  • 网站制作流程论文2345网址大全官网
  • 网站建设长期待摊费用谷歌官网下载
  • 怎么才能创个网站招标公司网站建设方案
  • 常见的网站首页布局有哪几种国内代理ip免费网址
  • 网站开发需要什么开发工具自己公司怎样弄个网站
  • 企业门户网站建设的必要性网站技术说明书模板
  • wordpress开发网站模板企业设计网站公司有哪些
  • 服务器创建多个网站郑州注册公司网站
  • 内网小网站的建设wordpress恢复安装失败
  • 农产品网站建设及优化项目个人网页设计界面
  • 前端怎么在猪八戒网站接单做wordpress获取当前分类不带连接
  • 重庆石柱网站设计公司江阴网站建设推广
  • 网页设计素材网站花长沙如何做网站
  • 网站建设的总体需求分析给别人做网站的销售叫什么软件
  • 自建网站平台 优帮云刷粉网站推广快点
  • 有什么做礼品的卖家网站网络公司网络推广
  • 四川省住房和城乡建设厅网站打不开登录wordpress建立数据库吗
  • 滕州住房城乡建设局网站四川酒店网站建设
  • 子网站怎么建设天河外贸型网站建设
  • 上海做网站需要多少钱wordpress 添加付款
  • 电商网站建设实训步骤网页图片分辨率多少合适