zoukankan      html  css  js  c++  java
  • 根据来源编号对明细进行分组 跟库存做对比 用到的技术 list根据某个字段分组 Double Long 比较大小

    public R startProcess(@RequestBody ShouldCredentialPayable bean) {
            System.out.println("应付贷项参数bean========="+bean);
            //开启审批流程之前先验证库存
            boolean judge=false;
            if(null!=bean.getCredentialPayableDetail() && bean.getCredentialPayableDetail().size()>0){
                List<SapVerifyInventory> sapList=new ArrayList<SapVerifyInventory>();
                //对明细根据来源编号进行分组
                Map<Long,List<ShouldCredentialPayableDetail>>map=grouping(bean.getCredentialPayableDetail());
                //如果map不为空
                if(!map.isEmpty()){
                    //获取map所有key 和value
                    Iterator it = map.entrySet().iterator();
                    while(it.hasNext()){
                        Map.Entry entry =(Map.Entry )it.next();
                        Long key=(Long)entry.getKey();
                        System.out.println("key=============="+key);
                        //获取key值
                        List<ShouldCredentialPayableDetail>listValue=(List)entry.getValue();
                        System.out.println("list=============="+listValue);
                        //根据company,baseID查询库存
                        String company=bean.getCompany();
                        Long baseID=key;
                        String url= MessageFormat.format(SapConstant.PURCHASECREDIT_DETAIL_STOCK+"?Company={0}&BaseID={1}",company,baseID);
                        //System.out.println("url========================"+url);
                        String result=HttpUtil.doGet(url,SapUtil.getReadToken());
                        SapReturnResult sapReturnResult=JSONObject.parseObject(result, SapReturnResult.class);
                        System.out.println("sapReturnResult================="+sapReturnResult);
                        String datas=sapReturnResult.getData();
                        System.out.println("datas================="+datas);
                        //将data数据转换成 SapVerifyInventory
                        List<SapVerifyInventory> list2=JSONObject.parseArray(datas,SapVerifyInventory.class);
                        //比较提交的库存和sap现有的库存
                        if(null!=list2 && list2.size()>0 && null!=listValue && listValue.size()>0){
                            for(SapVerifyInventory sapVerifyInventory :list2){
                                for (ShouldCredentialPayableDetail shouldCredentialPayableDetail : listValue){
                                    //当来源编号相同,仓库相同,物料编号相同时 比较库存
                                    if(sapVerifyInventory.getItemCode().equals(shouldCredentialPayableDetail.getItemCode()) && sapVerifyInventory.getBaseEntry().longValue()==shouldCredentialPayableDetail.getSourceCode().longValue() && sapVerifyInventory.getWhsCode().equals(shouldCredentialPayableDetail.getWhsCode())){
                                        System.out.println("开始判断》》》》》》》》》》》》》》》》》》》》》》》》》》》2222222222");
                                        System.out.println(sapVerifyInventory.getItemCode().equals(shouldCredentialPayableDetail.getItemCode()) && sapVerifyInventory.getBaseEntry()==shouldCredentialPayableDetail.getSourceCode() && sapVerifyInventory.getWhsCode().equals(shouldCredentialPayableDetail.getWhsCode()));
                                        //Double 值比较大小
                                        BigDecimal outValue = new BigDecimal(sapVerifyInventory.getQuantity());
                                        BigDecimal inValue = new BigDecimal(shouldCredentialPayableDetail.getQuantity());
                                        System.out.println("outValue======"+outValue+"---inValue====="+inValue+"---(outValue.compareTo(inValue)===="+outValue.compareTo(inValue));
                                        //如果库存小于 提交的数量
                                        if(outValue.compareTo(inValue)<0){
                                            System.out.println("库存小于提交的数量>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                                            sapList.add(sapVerifyInventory);
                                            judge=true;
                                        }
                                    }
                                }
    
                            }
                        }
                    }
                }
                //数量和库存不一致
                if(judge){
                    return R.data(sapList);
                }
            }
            return R.data("在测试");
            //return R.status(shouldCredentialPayableService.startProcess(bean));
        }
        //根据来源编号对明细进行分组
        public Map<Long,List<ShouldCredentialPayableDetail>> grouping(List<ShouldCredentialPayableDetail> list){
            Map<Long,List<ShouldCredentialPayableDetail>> map=new HashMap<Long,List<ShouldCredentialPayableDetail>>();
            if(null!=list && list.size()>0){
                for (ShouldCredentialPayableDetail shouldCredentialPayableDetail : list){
                    Long key=shouldCredentialPayableDetail.getSourceCode();
                    if(map.containsKey(key)){
                        map.get(key).add(shouldCredentialPayableDetail);
                    }else{
                        //map中不存在以此id作为的key,新建key用来存放数据
                        List<ShouldCredentialPayableDetail> credentialPayableList=new ArrayList<ShouldCredentialPayableDetail>();
                        credentialPayableList.add(shouldCredentialPayableDetail);
                        map.put(key,credentialPayableList);
                    }
                }
            }
            return map;
        }
  • 相关阅读:
    《CLR via C#》笔记——运行时序列化(2)
    《CLR via C#》笔记——程序集的加载和反射(2)
    《CLR via C#》笔记——线程基础
    《CLR via C#》笔记——AppDomain(1)
    《CLR via C#》笔记——运行时序列化(1)
    《CLR via C#》笔记——程序集的加载和反射(3)
    《CLR via C#》笔记——AppDomain(2)
    C# 3.0 新特性概览
    【JAVASCRIPT】jquery实现新闻滚动效果
    【JAVASCRIPT】jquery实现图片笼罩效果
  • 原文地址:https://www.cnblogs.com/xianz666/p/13396561.html
Copyright © 2011-2022 走看看