jeudi 18 mars 2021

Comparing the current line with the previous one. Java

I want to compare the current line with the previous one, and if they match, do the calculation. If not, assign 0.0 My code only computes without accepting the condition.

for example i have table: oil oil consist a month, date and an indicator

And it have to look like:

Month      Values  Date        |formula              |Growth
september   100     01.09.2020  |(100/nan - 1) * 100  |infinity
september   80      08.09.2020  |(80/100-1) * 100     |-20
september   100     15.09.2020  |(100/80-1) * 100     |25     
october     118     01.10.2020  |september != october |0
october     120     08.10.2020  |(120/118-1) * 100    |1.69                 
october     123     15.10.2020  |(123/120-1) * 100    |2.5
november    122     01.11.2020  |october != november  |0
november    122     08.11.2020  |(122/122-1) * 100    |0                    

My class model:

@Entity
@Table(name = "oper_mon_oil_price")

public class OilModel {

@Id
@GeneratedValue(strategy =  GenerationType.IDENTITY)
private long id;
@Column(name = "o_year")
private String oyear;
@Column(name = "o_month")
private String omonth;
@Column(name = "o_date_event")
private String odateEvent;
@Column(name = "o_period")
private String operiod;
@Column(name = "o_area")
private String oarea;
@Column(name = "o_unit")
private String ounit;
@Column(name = "o_ai_92")
public Double oai92;
@Column(name = "o_ai_95")
public Double oai95;
@Column(name = "o_diesel_winter")
private Double odieselWinter;
@Column(name = "o_diesel_fuel_offseason")
private Double odieselFuelOffseason;
@Column(name = "growth_ai_92")
public Double growthAi92;
@Column(name = "growth_ai_95")
public Double growthAi95;
@Column(name = "growth_diesel_winter")
public Double growthDieselWinter;
@Column(name = "growth_diesel_fuel_offseason")
public Double growthDieselFuelOffseason;
 
getters/setters
}

class repository:

@Repository
@Mapper
public interface OilProdTovRepo {

@Select("SELECT * FROM oper_mon_prod_tov ORDER BY o_year ASC, o_month ASC, o_date_event ASC ")
@Results(value ={
        @Result(property = "id",column = "id"),
        @Result(property = "area",column = "o_area"),
        @Result(property = "year",column = "o_year"),
        @Result(property = "month",column = "o_month"),
        @Result(property = "period",column = "o_period"),
        @Result(property = "dateEvent",column = "o_date_event"),
        @Result(property = "unit",column = "o_unit"),
        @Result(property = "wheatFlourFirstGrade",column = "o_wheat_flour_first_grade"),
        @Result(property = "wheatBread",column = "o_wheat_bread"),
        @Result(property = "horns",column = "o_horns"),
        @Result(property = "buckwheat",column = "o_buckwheat"),
        @Result(property = "polishedRice",column = "o_polished_rice"),
        @Result(property = "potato",column = "o_potato"),
        @Result(property = "carrots",column = "o_carrots"),
        @Result(property = "onion",column = "o_onion"),
        @Result(property = "cabbageWhite",column = "o_cabbage_white"),
        @Result(property = "sugar",column = "o_sugar"),
        @Result(property = "oil",column = "o_oil"),
        @Result(property = "beef",column = "o_beef"),
        @Result(property = "chickenMeat",column = "o_chicken_meat"),
        @Result(property = "milk",column = "o_milk"),
        @Result(property = "kefir",column = "o_kefir"),
        @Result(property = "butter",column = "o_butter"),
        @Result(property = "egg",column = "o_egg"),
        @Result(property = "salt",column = "o_salt"),
        @Result(property = "cottageCheese",column = "o_cottage_cheese"),
        @Result(property = "growthWheatFlourFirstGrade",column = "o_growth_wheat_flour_first_grade"),

})
List<OilProdTovModel> getOilProdTovModel();

@Update("UPDATE oper_mon_prod_tov SET o_growth_wheat_flour_first_grade=#{growthWheatFlourFirstGrade} WHERE id=#{id}")
void updateWheatFlourFirstGrade(OilProdTovModel oilProdTovModel);
}

And the main class, Service :

@Service
public class OilProdTovService {
@Autowired
public OilProdTovRepo oilProdTovRepo;

public List<OilProdTovModel> allOilProdTov() {
    List<OilProdTovModel> oilProdTovModels = oilProdTovRepo.getOilProdTovModel();
    Double first = 0.0;
    Double result;
    for (OilProdTovModel oilProdTovModel : oilProdTovModels) {
        if (oilProdTovModel.getMonth().equals("September")) {
            Double wheatFlourFirstGrade = oilProdTovModel.getWheatFlourFirstGrade();
            result = (wheatFlourFirstGrade / first - 1) * 100;
            first = wheatFlourFirstGrade;
            wheatFlourFirstGrade = result;
            oilProdTovModel.setGrowthWheatFlourFirstGrade(wheatFlourFirstGrade);
        } else if (oilProdTovModel.getMonth().equals("October")) {
            Double wheatFlourFirstGrade = oilProdTovModel.getWheatFlourFirstGrade();
            result = (wheatFlourFirstGrade / first - 1) * 100;
            first = wheatFlourFirstGrade;
            wheatFlourFirstGrade = result;
            oilProdTovModel.setGrowthWheatFlourFirstGrade(wheatFlourFirstGrade);
        }
        else if (oilProdTovModel.getMonth().equals("November")) {
            Double wheatFlourFirstGrade = oilProdTovModel.getWheatFlourFirstGrade();
            result = (wheatFlourFirstGrade / first - 1) * 100;
            first = wheatFlourFirstGrade;
            wheatFlourFirstGrade = result;
            oilProdTovModel.setGrowthWheatFlourFirstGrade(wheatFlourFirstGrade);
        }
        else {
            oilProdTovModel.setGrowthWheatFlourFirstGrade(0.0);
        }
        
        oilProdTovRepo.updateWheatFlourFirstGrade(oilProdTovModel);
    }
    return oilProdTovRepo.getOilProdTovModel();
}
}

How i can modified my code ?

Aucun commentaire:

Enregistrer un commentaire