@Override public SupplierInfoChangedDto financeChanged( Long userId, Finance updatedFinance, Finance oldFinance) { SupplierInfoChangedDto supplierInfoChangedDto = new SupplierInfoChangedDto(); Finance newFinance = getNewFinance(userId, oldFinance).getSupplierInfo(); Map<String, String> changedInfo = Maps.newHashMap(); if (!Objects.equal(updatedFinance.getCountry(), newFinance.getCountry())) { changedInfo.put( ChangedInfoKeys.financeCountry(), String.valueOf(updatedFinance.getCountry())); updatedFinance.setCountry(null); } if (!Objects.equal(updatedFinance.getBankAccount(), newFinance.getBankAccount())) { changedInfo.put(ChangedInfoKeys.financeBankAccount(), updatedFinance.getBankAccount()); updatedFinance.setBankAccount(null); } if (!Objects.equal(updatedFinance.getBankCode(), newFinance.getBankCode())) { changedInfo.put(ChangedInfoKeys.financeBankCode(), updatedFinance.getBankCode()); updatedFinance.setBankCode(null); } if (!Objects.equal(updatedFinance.getCoinType(), newFinance.getCoinType())) { changedInfo.put( ChangedInfoKeys.financeCoinType(), String.valueOf(updatedFinance.getCoinType())); updatedFinance.setCoinType(null); } if (!Objects.equal(updatedFinance.getOpenLicense(), newFinance.getOpenLicense())) { changedInfo.put(ChangedInfoKeys.financeOpenLicense(), updatedFinance.getOpenLicense()); updatedFinance.setOpenLicense(null); } if (!Objects.equal(updatedFinance.getRecentFinance(), newFinance.getRecentFinance())) { changedInfo.put(ChangedInfoKeys.financeRecentFinance(), updatedFinance.getRecentFinance()); updatedFinance.setRecentFinance(null); } if (!Objects.equal(updatedFinance.getOpeningBank(), newFinance.getOpeningBank())) { changedInfo.put(ChangedInfoKeys.financeOpeningBank(), updatedFinance.getOpeningBank()); updatedFinance.setOpeningBank(null); } if (!changedInfo.isEmpty()) { supplierInfoChangedDto.setChanged(true); supplierInfoChangedDto.setChangedInfo(changedInfo); } return supplierInfoChangedDto; }
@Override public SupplierUpdatedInfoDto<Finance> getNewFinance(Long userId, Finance oldFinance) { SupplierUpdatedInfoDto<Finance> supplierUpdatedInfoDto = new SupplierUpdatedInfoDto<Finance>(); Map<String, Object> oldValues = Maps.newHashMap(); boolean financeChanged = supplierChangedInfoRedisDao.tabInfoChanged(userId, ChangedInfoKeys.financeTab()); if (!financeChanged) { supplierUpdatedInfoDto.setSupplierInfo(oldFinance); supplierUpdatedInfoDto.setOldValues(oldValues); return supplierUpdatedInfoDto; } Map<String, String> changedInfo = supplierChangedInfoRedisDao.getChangedInfos(userId); Finance newFinance = new Finance(); BeanMapper.copy(oldFinance, newFinance); if (changedInfo.containsKey(ChangedInfoKeys.financeOpeningBank())) { newFinance.setOpeningBank(changedInfo.get(ChangedInfoKeys.financeOpeningBank())); oldValues.put(ChangedInfoKeys.financeOpeningBank(), oldFinance.getOpeningBank()); } if (changedInfo.containsKey(ChangedInfoKeys.financeOpenLicense())) { newFinance.setOpenLicense(changedInfo.get(ChangedInfoKeys.financeOpenLicense())); oldValues.put(ChangedInfoKeys.financeOpenLicense(), oldFinance.getOpenLicense()); } if (changedInfo.containsKey(ChangedInfoKeys.financeRecentFinance())) { newFinance.setRecentFinance(changedInfo.get(ChangedInfoKeys.financeRecentFinance())); oldValues.put(ChangedInfoKeys.financeRecentFinance(), oldFinance.getRecentFinance()); } if (changedInfo.containsKey(ChangedInfoKeys.financeCoinType())) { String coinType = changedInfo.get(ChangedInfoKeys.financeCoinType()); newFinance.setCoinType("null".equals(coinType) ? null : Integer.parseInt(coinType)); oldValues.put(ChangedInfoKeys.financeCoinType(), oldFinance.getCoinType()); } if (changedInfo.containsKey(ChangedInfoKeys.financeBankCode())) { newFinance.setBankCode(changedInfo.get(ChangedInfoKeys.financeBankCode())); oldValues.put(ChangedInfoKeys.financeBankCode(), oldFinance.getBankCode()); } if (changedInfo.containsKey(ChangedInfoKeys.financeBankAccount())) { newFinance.setBankAccount(changedInfo.get(ChangedInfoKeys.financeBankAccount())); oldValues.put(ChangedInfoKeys.financeBankAccount(), oldFinance.getBankAccount()); } if (changedInfo.containsKey(ChangedInfoKeys.financeCountry())) { String country = changedInfo.get(ChangedInfoKeys.financeCountry()); newFinance.setCountry("null".equals(country) ? null : Integer.parseInt(country)); oldValues.put(ChangedInfoKeys.financeCountry(), oldFinance.getCountry()); } supplierUpdatedInfoDto.setSupplierInfo(newFinance); supplierUpdatedInfoDto.setOldValues(oldValues); return supplierUpdatedInfoDto; }