Rev 30896 | Rev 31441 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.spice.profitmandi.dao.entity.catalog;import com.spice.profitmandi.dao.convertor.LocalDateTimeAttributeConverter;import com.spice.profitmandi.dao.entity.fofo.PartnerType;import com.spice.profitmandi.dao.enumuration.catalog.AmountType;import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;import javax.persistence.*;import java.io.Serializable;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.util.*;/*** This class basically contains scheme details** @author ashikali*/@NamedQueries({@NamedQuery(name = "scheme.selectSchemesByRetailerIdsSchemeIds", query = "select sr.schemeId from" +" SchemeRegion sr join PartnerRegion pr on pr.regionId=sr.regionId where pr.fofoId in :fofoIds and sr.schemeId in :schemeIds"),@NamedQuery(name = "Scheme.selectSchemeByModelsPartnerTypeFofoId", query = "select s from Scheme s" +" join SchemeItem si on si.schemeId = s.id" +" join SchemeRegion sr on sr.schemeId = s.id" +" join PartnerRegion pr on pr.regionId=sr.regionId" +" where pr.fofoId in :fofoIds and s.partnerType in :partnerTypes" +" and si.catalogId in :catalogIds" +" and :onDate between s.startDateTime and s.endDateTime" +//" and s.endDateTime >= :onDate" +" and s.activeTimestamp is not null"),})@NamedNativeQueries({@NamedNativeQuery(name = "scheme.selectMissedActivationSale",query = "select cs.id as scheme_id, ai.serial_number, sr.order_id, ii.id as inventory_item_id, ai.activation_timestamp" +" from fofo.activated_imei ai " +" join fofo.inventory_item ii on ai.serial_number = ii.serial_number " +" join catalog.item i on i.id = ii.item_id " +" join catalog.scheme cs on (date(ai.activation_timestamp) between cs.start_date_time and cs.end_date_time) " +" join fofo.scheme_item si on (si.scheme_id = cs.id and i.catalog_item_id = si.catalog_id) " +" join fofo.scan_record sr on (sr.inventory_item_id = ii.id)" +" left join fofo.scheme_in_out sio on (sio.scheme_id = cs.id and sio.inventory_item_id = ii.id) " +" where cs.active_timestamp is not null " +" and cs.type in ('SPECIAL_SUPPORT', 'ACTIVATION')" +" and sr.type = 'SALE'" +" and (sio.id is null or sio.status='REJECTED') " +" and ai.checked = false", resultSetMapping = "missedActivationSaleMapping")})@SqlResultSetMappings({@SqlResultSetMapping(name = "missedActivationSaleMapping", classes = {@ConstructorResult(targetClass = SchemesImeisModel.class, columns = {@ColumnResult(name = "serial_number", type = String.class),@ColumnResult(name = "activation_timestamp", type = LocalDateTime.class),@ColumnResult(name = "order_id", type = Integer.class),@ColumnResult(name = "inventory_item_id", type = Integer.class),@ColumnResult(name = "scheme_id", type = Integer.class),})})})@Entity@Table(name = "catalog.scheme", schema = "catalog")public class Scheme implements Serializable {public PartnerType getPartnerType() {return partnerType;}public void setPartnerType(PartnerType partnerType) {this.partnerType = partnerType;}private static final long serialVersionUID = 1L;public Scheme() {}@Id@Column(name = "id")@GeneratedValue(strategy = GenerationType.IDENTITY)private int id;@Column(name = "name")private String name;@Column(name = "description")private String description;@Column(name = "type")@Enumerated(EnumType.STRING)private SchemeType type;@Column(name = "amount_type")@Enumerated(EnumType.STRING)private AmountType amountType;@Column(name = "base_plus_gst_calc")private boolean basePlusGstCalc;@Column(name = "amount")private float amount;@Convert(converter = LocalDateTimeAttributeConverter.class)@Column(name = "start_date_time")private LocalDateTime startDateTime = LocalDateTime.now();@Convert(converter = LocalDateTimeAttributeConverter.class)@Column(name = "end_date_time")private LocalDateTime endDateTime = LocalDateTime.now();@Convert(converter = LocalDateTimeAttributeConverter.class)@Column(name = "create_timestamp")private LocalDateTime createTimestamp = LocalDateTime.now();@Convert(converter = LocalDateTimeAttributeConverter.class)@Column(name = "active_timestamp")private LocalDateTime activeTimestamp = null;@Convert(converter = LocalDateTimeAttributeConverter.class)@Column(name = "expire_timestamp")private LocalDateTime expireTimestamp = null;@Column(name = "created_by")private int createdBy;@Columnprivate boolean cashback;@Transientprivate Set<Integer> retailerIds = new HashSet<>();@Transientprivate String amountModel;@Transientprivate float schemeValue;public float getSchemeValue() {return schemeValue;}public void setSchemeValue(float schemeValue) {this.schemeValue = schemeValue;}@Column(name = "partner_type")@Enumerated(EnumType.STRING)private PartnerType partnerType;@Overridepublic String toString() {return "Scheme{" +"id=" + id +", name='" + name + '\'' +", description='" + description + '\'' +", type=" + type +", amountType=" + amountType +", gstReversal=" + basePlusGstCalc +", amount=" + amount +", startDateTime=" + startDateTime +", endDateTime=" + endDateTime +", createTimestamp=" + createTimestamp +", activeTimestamp=" + activeTimestamp +", expireTimestamp=" + expireTimestamp +", createdBy=" + createdBy +", cashback=" + cashback +", retailerIds=" + retailerIds +", amountModel='" + amountModel + '\'' +", schemeValue=" + schemeValue +", partnerType=" + partnerType +", catalogStringMap=" + catalogStringMap +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Scheme scheme = (Scheme) o;return id == scheme.id && basePlusGstCalc == scheme.basePlusGstCalc && Float.compare(scheme.amount, amount) == 0 && createdBy == scheme.createdBy && cashback == scheme.cashback && Float.compare(scheme.schemeValue, schemeValue) == 0 && Objects.equals(name, scheme.name) && Objects.equals(description, scheme.description) && type == scheme.type && amountType == scheme.amountType && Objects.equals(startDateTime, scheme.startDateTime) && Objects.equals(endDateTime, scheme.endDateTime) && Objects.equals(createTimestamp, scheme.createTimestamp) && Objects.equals(activeTimestamp, scheme.activeTimestamp) && Objects.equals(expireTimestamp, scheme.expireTimestamp) && Objects.equals(retailerIds, scheme.retailerIds) && Objects.equals(amountModel, scheme.amountModel) && partnerType == scheme.partnerType && Objects.equals(catalogStringMap, scheme.catalogStringMap);}@Overridepublic int hashCode() {return Objects.hash(id, name, description, type, amountType, basePlusGstCalc, amount, startDateTime, endDateTime, createTimestamp, activeTimestamp, expireTimestamp, createdBy, cashback, retailerIds, amountModel, schemeValue, partnerType, catalogStringMap);}@Transientprivate Map<Integer, String> catalogStringMap = new HashMap<>();public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAmountModel() {return amountModel;}public void setAmountModel(String amountModel) {this.amountModel = amountModel;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public boolean isCashback() {return cashback;}public void setCashback(boolean cashback) {this.cashback = cashback;}public SchemeType getType() {return type;}public void setType(SchemeType type) {this.type = type;}public AmountType getAmountType() {return amountType;}public void setAmountType(AmountType amountType) {this.amountType = amountType;}public float getAmount() {return amount;}public void setAmount(float amount) {this.amount = amount;}public LocalDateTime getStartDateTime() {return startDateTime;}public void setStartDateTime(LocalDateTime startDateTime) {this.startDateTime = startDateTime;}public LocalDateTime getEndDateTime() {return endDateTime;}public void setEndDateTime(LocalDateTime endDateTime) {this.endDateTime = endDateTime;}public LocalDateTime getCreateTimestamp() {return createTimestamp;}public void setCreateTimestamp(LocalDateTime createTimestamp) {this.createTimestamp = createTimestamp;}public int getCreatedBy() {return createdBy;}public void setCreatedBy(int createdBy) {this.createdBy = createdBy;}public LocalDateTime getActiveTimestamp() {return activeTimestamp;}public void setActiveTimestamp(LocalDateTime activeTimestamp) {this.activeTimestamp = activeTimestamp;}public LocalDateTime getExpireTimestamp() {return expireTimestamp;}public void setExpireTimestamp(LocalDateTime expireTimestamp) {this.expireTimestamp = expireTimestamp;}public String getFormattedStartDateTime() {if (startDateTime == null) {return null;}DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");return startDateTime.format(formatter);}public String getFormattedEndDateTime() {if (endDateTime == null) {return null;}DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");return endDateTime.format(formatter);}public String getFormattedCreateTimestamp() {if (createTimestamp == null) {return null;}DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm");return createTimestamp.format(formatter);}public String getFormattedActiveTimestamp() {if (activeTimestamp == null) {return null;}DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm");return activeTimestamp.format(formatter);}public String getFormattedExpireTimestamp() {if (expireTimestamp == null) {return null;}DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm");return expireTimestamp.format(formatter);}public Set<Integer> getRetailerIds() {return retailerIds;}public void setRetailerIds(Set<Integer> retailerIds) {this.retailerIds = retailerIds;}public String getRetailerIdsString() {Set<String> stringRetailerIds = new HashSet<>();if (!retailerIds.isEmpty()) {for (int retailerId : retailerIds) {stringRetailerIds.add(String.valueOf(retailerId));}}return String.join(", ", stringRetailerIds);}public boolean isBasePlusGstCalc() {return basePlusGstCalc;}public void setBasePlusGstCalc(boolean gstReversal) {this.basePlusGstCalc = gstReversal;}public Map<Integer, String> getCatalogStringMap() {return catalogStringMap;}public void setCatalogStringMap(Map<Integer, String> catalogStringMap) {this.catalogStringMap = catalogStringMap;}public boolean isWithinRange(LocalDateTime testDate) {return !(testDate.isBefore(this.startDateTime) || testDate.isAfter(endDateTime));}}