vhbjknkm 2022-03-12 14:48 采纳率: 100%
浏览 37
已结题

请大家看一下我这个是哪个地方不对

这个品牌的要怎么改?

报价单导入模版,品牌产地不是必填项,系统中为必填项,如果不填写,无法导入


@RequestMapping(value="/import", method = RequestMethod.POST)
    @ResponseBody
    public String importExcel(@RequestParam(value="file") MultipartFile excelFile,HttpServletRequest request){
        //TODO 报价单导入
        LOG.info("-----------------执行报价单导入-----------------");
        if( excelFile == null ){
            String errMsg = com.yonyou.cpu.multi.YcMessageUtils.getMessage("P_DIWORK_YC_CPU-PORTAL_0000056056") /* "导入文件不能为空" */;
            LOG.error(errMsg);
            throw new RuntimeException(errMsg);
        }
        QuotationOffer pojo = quotationOfferService.queryQuotationbyid(buildCriteria(request));
        ArrayList<QuotationOfferDetail> quotationOfferDetailArrayList = new ArrayList<>();
        for(QuotationOfferDetail body: pojo.getQuotationOfferDetailArrayList()){
            if (this.isPriceLine(body)) {
                quotationOfferDetailArrayList.add(body);
            }
        }
        pojo.setQuotationOfferDetailArrayList(quotationOfferDetailArrayList);
        //明细表的最大size

        ParamCriteria criteria1 = new ParamCriteria();
        criteria1.setEnterpriseId(pojo.getPurcorpId());
        criteria1.setParamDefCode("SA024");
        List<ParamPOJO> paramPOJOs = paramService.queryParam(criteria1);
        List<QuotationOfferDetail> details=new ArrayList<>();
        //精度位数
        ParamCriteria criteria2 = new ParamCriteria();
        criteria2.setEnterpriseId(pojo.getPurcorpId());
        criteria2.setParamDefCode("SA026");
        List<ParamPOJO> paramPOJO2 = paramService.queryParam(criteria2);
        //默认精度
        int num=8;
        if(paramPOJO2!=null && paramPOJO2.size()>0){
            num=Integer.parseInt(paramPOJO2.get(0).getValue());
        }
        BigDecimal hundred = BigDecimal.valueOf(100);
        //无税优先
        if(paramPOJOs!=null && paramPOJOs.size()>0&&paramPOJOs.get(0).getValue().equals("2")) {
            details = QuotationOfferNoTaxExcelUtil.excel2Detail(excelFile, pojo);
            for(QuotationOfferDetail vo:details){
                BigDecimal taxrate = getPriceBodyTaxrete(vo);
                if(vo.getNoTaxPrice()!=null){
                    vo.setNoTaxPrice(vo.getNoTaxPrice().setScale(num, RoundingMode.HALF_UP));
                    if(vo.getTaxrate()!=null){
                        vo.setTaxPrice(vo.getNoTaxPrice().multiply(BigDecimal.ONE.add(taxrate.divide(hundred))).setScale(num, RoundingMode.HALF_UP));
                    }
                }
                if(vo.getNoTaxAcceptancePrice()!=null){
                    vo.setNoTaxAcceptancePrice(vo.getNoTaxAcceptancePrice().setScale(num, RoundingMode.HALF_UP));
                    if(vo.getTaxrate()!=null){
                        vo.setAcceptancePrice(vo.getNoTaxAcceptancePrice().multiply(BigDecimal.ONE.add(taxrate.divide(hundred))).setScale(num, RoundingMode.HALF_UP));
                    }
                }
                if(vo.getNoTaxPaymentPrice()!=null){
                    vo.setNoTaxPaymentPrice(vo.getNoTaxPaymentPrice().setScale(num, RoundingMode.HALF_UP));
                    if(vo.getTaxrate()!=null){
                        vo.setPaymentPrice(vo.getNoTaxPaymentPrice().multiply(BigDecimal.ONE.add(taxrate.divide(hundred))).setScale(num, RoundingMode.HALF_UP));
                    }
                }
            }
        }else{
            details = QuotationOfferExcelUtil.excel2Detail(excelFile, pojo);
            for(QuotationOfferDetail vo:details) {
                BigDecimal taxrate = getPriceBodyTaxrete(vo);
                if(vo.getTaxPrice()!=null){
                    vo.setTaxPrice(vo.getTaxPrice().setScale(num, RoundingMode.HALF_UP));
                    if(vo.getTaxrate()!=null){
                        vo.setNoTaxPrice(vo.getTaxPrice().divide(BigDecimal.ONE.add(taxrate.divide(hundred)), num, RoundingMode.HALF_UP));

                    }
                }
                if(vo.getAcceptancePrice()!=null){
                    vo.setAcceptancePrice(vo.getAcceptancePrice().setScale(num, RoundingMode.HALF_UP));
                    if(vo.getTaxrate()!=null){
                        vo.setNoTaxAcceptancePrice(vo.getAcceptancePrice().divide(BigDecimal.ONE.add(taxrate.divide(hundred)), num, RoundingMode.HALF_UP));

                    }
                }
                if(vo.getPaymentPrice()!=null){
                    vo.setPaymentPrice(vo.getPaymentPrice().setScale(num, RoundingMode.HALF_UP));
                    if(vo.getTaxrate()!=null){
                        vo.setNoTaxPaymentPrice(vo.getPaymentPrice().divide(BigDecimal.ONE.add(taxrate.divide(hundred)), num, RoundingMode.HALF_UP));
                    }
                }
            }
        }
        //品牌
        if(paramPOJOs!=null && paramPOJOs.size()>0&&paramPOJOs.get(0).getValue().equals("2")) {
            details = QuotationOfferNoTaxExcelUtil.excel2Detail(excelFile, pojo);
            for(QuotationOfferDetail vo:details){
                BigDecimal suppProductName = getPriceBodyTaxrete(vo);
                if(vo.getSuppProductName()!=null){
                    vo.setSuppProductName(vo.getSuppProductName());
                }
                if(vo.getSuppProductName()!=null){
                    vo.setSuppProductName(vo.getSuppProductName());
                }
                if(vo.getSuppProductName()!=null){
                    vo.setSuppProductName(vo.getSuppProductName());
                }
            }
        }else{
            details = QuotationOfferExcelUtil.excel2Detail(excelFile, pojo);
            for(QuotationOfferDetail vo:details) {
                BigDecimal suppProductName = getSuppProductName(vo);
                if(vo.getSuppProductName()!=null){
                    vo.setSuppProductName(vo.getSuppProductName());
                    }
                }
        }
        return JSON.toJSONString(details);
    }


    private BigDecimal getPriceBodyTaxrete(QuotationOfferDetail vo) {
        String rowno = "";
        if (vo.getRowNo() != null) {
            rowno = "行号:" + vo.getRowNo();
        }
        Assert.isTrue(!Strings.isNullOrEmpty(vo.getTaxrate()), "税率字段不能为空!" + rowno);
        BigDecimal taxrate = null;
        try {
            taxrate = new BigDecimal(vo.getTaxrate());
        } catch (Exception e) {
            LOG.error("转换税率出错, Taxrete:" + vo.getTaxrate(), e);
        }
        Assert.notNull(taxrate, "税率字段应该为数字,并且不能为空!" + rowno);
        return taxrate;
    }
    private BigDecimal getSuppProductName(QuotationOfferDetail vo) {
        String rowno = "";
        if (vo.getRowNo() != null) {
            rowno = "行号:" + vo.getRowNo();
        }
        Assert.isTrue(!Strings.isNullOrEmpty(vo.getSuppProductName()), "品牌/产地/材质字段不能为空!" + rowno);
        BigDecimal suppProductName = null;
        try {
            suppProductName = new BigDecimal(vo.getSuppProductName());
        } catch (Exception e) {
            LOG.error("转换品牌/产地/材质出错, suppProductName:" + vo.getSuppProductName(), e);
        }
        Assert.notNull(suppProductName, "品牌/产地/材质字段应该为文字,并且不能为空!" + rowno);
        return suppProductName;
    }
  • 写回答

1条回答 默认 最新

  • EngineZhang 2022-03-12 15:12
    关注
    
    private BigDecimal getSuppProductName(QuotationOfferDetail vo) {
            String rowno = "";
            if (vo.getRowNo() != null) {
                rowno = "行号:" + vo.getRowNo();
            }
            Assert.isTrue(!Strings.isNullOrEmpty(vo.getSuppProductName()), "品牌/产地/材质字段不能为空!" + rowno);
            BigDecimal suppProductName = new BigDecimal(0);
            try {
                suppProductName = new BigDecimal(vo.getSuppProductName());
            } catch (Exception e) {
                LOG.error("转换品牌/产地/材质出错, suppProductName:" + vo.getSuppProductName(), e);
            }
            return suppProductName;
        }
    

    getSuppProductName这个方法改一下就可以了,Assert.notNull(suppProductName, "品牌/产地/材质字段应该为文字,并且不能为空!" + rowno);这一行去掉suppProductName 给个初始值就行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值