package com.ydtech.modules.partner.utils; import com.ydtech.modules.partner.model.PartnerKickbackChange; import com.ydtech.modules.partner.model.PartnerPremiumDetails; import com.ydtech.modules.partner.service.PartnerKickbackChangeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @Component public class KickbackChangeUtils { private static PartnerKickbackChangeService kickbackChangeService; @Autowired private void setKickbackChangeService(PartnerKickbackChangeService kickbackChangeService) { KickbackChangeUtils.kickbackChangeService = kickbackChangeService; } public void updatePersonnel(List list,String userId3,String userId4){ List kickbackChange = new ArrayList<>(); for (PartnerPremiumDetails details : list) { BigDecimal latest = CalculateCommissionUtils.calculateCommission(String.valueOf(details.getSource()),details.getUserId(),userId3,userId4); BigDecimal mostRecent = kickbackChangeService.mostRecentRecord(details.getUserId(),String.valueOf(details.getSource())); BigDecimal bigDecimal = mostRecent == null ? new BigDecimal(details.getProportional()) : mostRecent; getPartnerKickbackChange(latest, bigDecimal, details, kickbackChange,userId3,userId4); } for (PartnerKickbackChange change : kickbackChange) { kickbackChangeService.saveKickbackChange(change); } } public void before(BigDecimal latest,PartnerPremiumDetails details,String userId3,String userId4){ BigDecimal mostRecent = kickbackChangeService.mostRecentRecord(details.getUserId(),String.valueOf(details.getSource())); if (mostRecent == null){ PartnerKickbackChange change = getChange(null, latest, details,userId3,userId4); kickbackChangeService.saveKickbackChange(change); }else { if (latest.compareTo(mostRecent) != 0){ PartnerKickbackChange change = getChange(latest, mostRecent, details,userId3,userId4); kickbackChangeService.saveKickbackChange(change); } } } public void getPartnerKickbackChange(BigDecimal latest, BigDecimal mostRecent, PartnerPremiumDetails details, List list,String userId3,String userId4){ if (latest.compareTo(mostRecent) != 0){ PartnerKickbackChange change = getChange(latest, mostRecent, details, userId3, userId4); list.add( change); } } private static PartnerKickbackChange getChange(BigDecimal bigDecimal, BigDecimal mostRecent, PartnerPremiumDetails details,String userId3,String userId4) { PartnerKickbackChange change = new PartnerKickbackChange(); change.setUserId(details.getUserId()); change.setUserGrade(String.valueOf(details.getSource())); change.setOriginalCommission(mostRecent); change.setAfterChange(bigDecimal); String reason = CalculateCommissionUtils.getReason(String.valueOf(details.getSource()), details.getUserId(),userId3, userId4); change.setChangeReason(reason); change.setDeptId(details.getDeptId()); change.setChangeTime(new Date()); return change; } }