栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

若依前后端不分离-表单中某一列是其他几列计算的结果

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

若依前后端不分离-表单中某一列是其他几列计算的结果

1.示例

2.实现:

(1)首先在.xml文件中新建查询:
记住这个selectForSum

    
    

(2)在service接口中配置这个方法:

public void selectForSum();

在service中写入方法实现:

@Override
    public void selectForSum(){
        List forSum = conditionDeploymentUnitMapper.selectForSum();
        for (int i = 0; i < forSum.size(); i++) {
//            计算合计数量
            Long SummaryClueNum = forSum.get(i).getNumChujiClue()+forSum.get(i).getNumKejiClue()+forSum.get(i).getNumKejiyixiaClue();
            forSum.get(i).setSumClue(SummaryClueNum);
            //将数据更新到数据库
            conditionDeploymentUnitMapper.updateConditionDeploymentUnit(forSum.get(i));
        }
    }

(3)在controller的list方法中写入这个方法,即可在列表更新的时候调用,计算,存入数据库,然后从数据库中查询出来

(4)在编辑或者插入数据时,因为是插入一行的数据,所以如果重新计算整个列表的话,会浪费资源延迟时间,所以可以只计算增加或者编辑的那一列
将实现类中的方法更改为如下所示,通过传入id查到需要更改的对象,同时接口的方法和在controller中调用也需要更改。

public void selectForSumbyid(int i) {
        ConditionDeploymentUnit forSum = conditionDeploymentUnitMapper.selectConditionDeploymentUnitById(i);
//            计算合计数量
        Long SummaryClueNum = forSum.getNumChujiClue()+forSum.getNumKejiClue()+forSum.getNumKejiyixiaClue();
        forSum.setSumClue(SummaryClueNum);
        conditionDeploymentUnitMapper.updateConditionDeploymentUnit(forSum);
    }

接口的方法:

public void selectForSumbyid(int i);

调用之前,需要先查到id

				int i=conditionDeploymentUnit.getId();
         conditionDeploymentUnitService.selectForSumbyid(i);
3.特殊情况,如果计算出来需要用百分比的形式展示的话,需要进行处理:

(1)在实现类中计算的时候需要考虑被除数为0的情况,
例:整改落实率=已经整改的个数getNumAlreadyUnit / 计划整改的个数SummaryFourLuoshi
如果计划整改数为0的话,直接让整改率赋值为1
**注意:**需要用浮点数,因为用int格式的话计算不会出现小数点
(2)如果需要保存小数点后两位小数的话,比如99.99%,需要利用Math.round(rateCover * 10000) * 0.0001d;保留小数点后4位小数。

//            计算问题整改落实率
            double rateCover2 = 0;
            if(SummaryFourLuoshi!=0){
                double rateCover = (double)forSum.get(i).getNumAlreadyUnit()/(double)SummaryFourLuoshi;
                rateCover2 = Math.round(rateCover * 10000) * 0.0001d;
            }else{
                rateCover2=1;
            }
            forSum.get(i).setRateWholeCover(rateCover2);

(3)在计算数据保存至数据库后,在前端读取到的是小数点后4位的小数,比如0.9999,此时要转换成99.99%
需要在前端页面*100,并且加上’%',只需要在字段下面加上如下function

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028181.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号