Subversion Repositories SmartDukaan

Rev

Rev 37204 | Rev 37782 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
21713 ashik.ali 1
package com.spice.profitmandi.dao.entity.catalog;
21552 ashik.ali 2
 
32230 amit.gupta 3
import com.spice.profitmandi.common.enumuration.ItemType;
4
import in.shop2020.model.v1.catalog.status;
5
 
6
import javax.persistence.*;
31065 tejbeer 7
import java.io.Serializable;
31846 tejbeer 8
import java.time.LocalDateTime;
31065 tejbeer 9
import java.util.Arrays;
10
import java.util.List;
11
 
21552 ashik.ali 12
/**
13
 * This class basically contains item details
30121 amit.gupta 14
 *
21552 ashik.ali 15
 * @author ashikali
16
 */
29707 tejbeer 17
 
31846 tejbeer 18
@NamedQueries({@NamedQuery(name = "Item.selectItemByLikes", query = "select new com.spice.profitmandi.common.model.CustomItemModel(" + "	i.id, i.brand, i.modelName, i.modelNumber, i.color" + "	) from Item  i join CurrentInventorySnapshot cis on i.id = cis.itemId " + " where cis.fofoId = :fofoId and cis.availability > 0 and REPLACE(CONCAT(i.brand,' ', ifnull(i.modelName, ' '), ' ', ifnull(i.modelNumber, ' ')), '  ', ' ')  like CONCAT('%',:query,'%')"),
30121 amit.gupta 19
 
31846 tejbeer 20
        @NamedQuery(name = "Item.selectCatalogIdByMopRange", query = "select i.catalogItemId" + " from Item i join TagListing tl on tl.itemId = i.id " + " where tl.mop between :startPrice and :endPrice and  i.categoryId=10006 group by i.catalogItemId"),
30492 amit.gupta 21
 
37563 amit 22
        @NamedQuery(name = "Item.selectAllBrands", query = "select distinct" + "  i.brand from Item i join TagListing tl on tl.itemId = i.id " + " where i.categoryId=:categoryId"), @NamedQuery(name = "Item.selectAllCategories", query = "select distinct" + "  i.categoryId from Item i join TagListing tl on tl.itemId = i.id "), // Model dropdown for scheme / offer creation (/getCatalogDescriptionByBrands).
23
        // tl.active = true keeps delisted models out. Callers dedupe to catalogItemId,
24
        // so this doubles as the model-level rollup: a model whose colours are all
25
        // inactive contributes no rows and drops off the dropdown, while one keeping
26
        // any listed colour stays.
27
        @NamedQuery(name = "Item.selectAllModels", query = "select " + "  i from Item i join TagListing tl on tl.itemId = i.id where i.brand in :brands and i.categoryId = :categoryId and tl.active = true")})
21552 ashik.ali 28
@Entity
31846 tejbeer 29
@Table(name = "catalog.item")
29707 tejbeer 30
public class Item implements Serializable {
31
 
31846 tejbeer 32
    public static final List<String> SMART_PG = Arrays.asList("85171300", "85171290");
31065 tejbeer 33
 
31846 tejbeer 34
    private static final long serialVersionUID = 1L;
29707 tejbeer 35
 
31846 tejbeer 36
    public Item() {
37
    }
29707 tejbeer 38
 
31846 tejbeer 39
    @Id
40
    @Column(name = "id", columnDefinition = "int(11)")
41
    @GeneratedValue(strategy = GenerationType.IDENTITY)
42
    private int id;
29707 tejbeer 43
 
31846 tejbeer 44
    @Column(name = "brand", length = 100)
45
    private String brand;
29707 tejbeer 46
 
31846 tejbeer 47
    @Column(name = "status")
48
    @Enumerated(EnumType.ORDINAL)
49
    private status status;
29707 tejbeer 50
 
31846 tejbeer 51
    @Column(name = "product_group", length = 100)
52
    private String productGroup;
29707 tejbeer 53
 
31846 tejbeer 54
    @Column(name = "model_name", length = 100)
55
    private String modelName;
29707 tejbeer 56
 
31846 tejbeer 57
    @Column(name = "model_number", length = 100)
58
    private String modelNumber;
29707 tejbeer 59
 
31846 tejbeer 60
    @Column(name = "color", length = 20)
61
    private String color;
29707 tejbeer 62
 
37204 amit 63
    @Column(name = "brand_identifier", length = 100)
64
    private String brandIdentifier;
65
 
31846 tejbeer 66
    @Column(name = "catalog_item_id")
67
    private int catalogItemId;
29707 tejbeer 68
 
31846 tejbeer 69
    @Column(name = "weight")
70
    private Double weight;
29707 tejbeer 71
 
31846 tejbeer 72
    @Column(name = "category")
73
    private int categoryId;
29707 tejbeer 74
 
32417 amit.gupta 75
 
31846 tejbeer 76
    @Column(name = "startDate")
77
    private LocalDateTime startDate;
29707 tejbeer 78
 
32417 amit.gupta 79
    @Column(name = "addedOn")
80
    private LocalDateTime addedOn;
81
 
82
    @Column(name = "updatedOn")
83
    private LocalDateTime updatedOn;
84
 
37149 amit 85
    // maintained by MySQL (ON UPDATE CURRENT_TIMESTAMP); never written by Hibernate
86
    @Column(name = "update_timestamp", insertable = false, updatable = false)
87
    private LocalDateTime updateTimestamp;
88
 
33183 shampa 89
    private Boolean risky;
32417 amit.gupta 90
 
33183 shampa 91
    private Integer expectedDelay;
32417 amit.gupta 92
 
93
    @Column(name = "warranty_period")
94
    private Integer warrantyPeriod;
95
 
96
    private Integer preferredVendor;
97
 
31846 tejbeer 98
    public int getCategoryId() {
99
        return categoryId;
100
    }
23426 amit.gupta 101
 
31846 tejbeer 102
    public void setCategoryId(int categoryId) {
103
        this.categoryId = categoryId;
104
    }
29707 tejbeer 105
 
37204 amit 106
    public String getBrandIdentifier() {
107
        return brandIdentifier;
108
    }
109
 
110
    public void setBrandIdentifier(String brandIdentifier) {
111
        this.brandIdentifier = brandIdentifier;
112
    }
113
 
32417 amit.gupta 114
    public LocalDateTime getAddedOn() {
115
        return addedOn;
116
    }
117
 
118
    public void setAddedOn(LocalDateTime addedOn) {
119
        this.addedOn = addedOn;
120
    }
121
 
37149 amit 122
    public LocalDateTime getUpdateTimestamp() {
123
        return updateTimestamp;
124
    }
125
 
32417 amit.gupta 126
    public LocalDateTime getUpdatedOn() {
127
        return updatedOn;
128
    }
129
 
130
    public void setUpdatedOn(LocalDateTime updatedOn) {
131
        this.updatedOn = updatedOn;
132
    }
133
 
134
    public boolean isRisky() {
135
        return risky;
136
    }
137
 
138
    public void setRisky(boolean risky) {
139
        this.risky = risky;
140
    }
141
 
35169 aman 142
    public Integer getExpectedDelay() {
32417 amit.gupta 143
        return expectedDelay;
144
    }
145
 
146
    public void setExpectedDelay(int expectedDelay) {
147
        this.expectedDelay = expectedDelay;
148
    }
149
 
150
    public Integer getWarrantyPeriod() {
151
        return warrantyPeriod;
152
    }
153
 
154
    public void setWarrantyPeriod(Integer warrantyPeriod) {
155
        this.warrantyPeriod = warrantyPeriod;
156
    }
157
 
158
    public Integer getPreferredVendor() {
159
        return preferredVendor;
160
    }
161
 
162
    public void setPreferredVendor(Integer preferredVendor) {
163
        this.preferredVendor = preferredVendor;
164
    }
165
 
31846 tejbeer 166
    @Enumerated(EnumType.STRING)
167
    @Column(name = "type")
168
    private ItemType type;
29707 tejbeer 169
 
31846 tejbeer 170
    @Column(name = "hsnCode")
171
    private String hsnCode;
29707 tejbeer 172
 
31846 tejbeer 173
    @Column(name = "sellingPrice")
174
    private Float sellingPrice;
31821 amit.gupta 175
 
31846 tejbeer 176
    public String getProductGroup() {
177
        return productGroup;
178
    }
29707 tejbeer 179
 
31846 tejbeer 180
    public void setProductGroup(String productGroup) {
181
        this.productGroup = productGroup;
182
    }
29707 tejbeer 183
 
31846 tejbeer 184
    public int getId() {
185
        return id;
186
    }
29707 tejbeer 187
 
31846 tejbeer 188
    @Column
189
    private Float mrp;
29707 tejbeer 190
 
31846 tejbeer 191
    public void setId(int id) {
192
        this.id = id;
193
    }
29707 tejbeer 194
 
31846 tejbeer 195
    public String getBrand() {
196
        return brand;
197
    }
29707 tejbeer 198
 
31846 tejbeer 199
    public void setBrand(String brand) {
37071 amit 200
        this.brand = com.spice.profitmandi.common.util.StringUtils.normalizeWhitespace(brand);
31846 tejbeer 201
    }
29707 tejbeer 202
 
31846 tejbeer 203
    public String getModelName() {
204
        return modelName;
205
    }
29707 tejbeer 206
 
31846 tejbeer 207
    public void setModelName(String modelName) {
37071 amit 208
        this.modelName = com.spice.profitmandi.common.util.StringUtils.normalizeWhitespace(modelName);
31846 tejbeer 209
    }
29707 tejbeer 210
 
31846 tejbeer 211
    public String getModelNumber() {
212
        return modelNumber;
213
    }
29707 tejbeer 214
 
31846 tejbeer 215
    public void setModelNumber(String modelNumber) {
37071 amit 216
        this.modelNumber = com.spice.profitmandi.common.util.StringUtils.normalizeWhitespace(modelNumber);
31846 tejbeer 217
    }
29707 tejbeer 218
 
31846 tejbeer 219
    public String getColor() {
220
        if (color != null && (color.startsWith("f_") || color.startsWith("F_"))) {
221
            return color.substring(2);
222
        }
223
        return color;
224
    }
29707 tejbeer 225
 
31846 tejbeer 226
    public String getColorNatural() {
227
        return this.color;
228
    }
29707 tejbeer 229
 
31846 tejbeer 230
    public void setColor(String color) {
37071 amit 231
        this.color = com.spice.profitmandi.common.util.StringUtils.normalizeWhitespace(color);
31846 tejbeer 232
    }
29707 tejbeer 233
 
31846 tejbeer 234
    public ItemType getType() {
235
        return type;
236
    }
29707 tejbeer 237
 
31846 tejbeer 238
    public void setType(ItemType type) {
239
        this.type = type;
240
    }
29707 tejbeer 241
 
31846 tejbeer 242
    public String getHsnCode() {
243
        return hsnCode;
244
    }
29707 tejbeer 245
 
31846 tejbeer 246
    public void setHsnCode(String hsnCode) {
247
        this.hsnCode = hsnCode;
248
    }
29707 tejbeer 249
 
31846 tejbeer 250
    public int getCatalogItemId() {
251
        return catalogItemId;
252
    }
29707 tejbeer 253
 
31846 tejbeer 254
    public Double getWeight() {
255
        return weight;
256
    }
29707 tejbeer 257
 
31846 tejbeer 258
    public void setWeight(Double weight) {
259
        this.weight = weight;
260
    }
29707 tejbeer 261
 
31846 tejbeer 262
    public void setCatalogItemId(int catalogItemId) {
263
        this.catalogItemId = catalogItemId;
264
    }
29707 tejbeer 265
 
31846 tejbeer 266
    public Float getSellingPrice() {
267
        return sellingPrice;
268
    }
29707 tejbeer 269
 
31846 tejbeer 270
    public void setSellingPrice(Float sellingPrice) {
271
        this.sellingPrice = sellingPrice;
272
    }
29707 tejbeer 273
 
31065 tejbeer 274
 
31846 tejbeer 275
    public LocalDateTime getStartDate() {
276
        return startDate;
277
    }
29707 tejbeer 278
 
31846 tejbeer 279
    public void setStartDate(LocalDateTime startDate) {
280
        this.startDate = startDate;
281
    }
29707 tejbeer 282
 
31846 tejbeer 283
    public String getItemDescription() {
284
        StringBuilder itemString = new StringBuilder();
285
        if (this.getBrand() != null && !this.getBrand().isEmpty()) {
286
            itemString.append(this.getBrand().trim());
287
        }
288
        itemString.append(" ");
289
        if (this.getModelName() != null && !this.getModelName().isEmpty()) {
290
            itemString.append(this.getModelName().trim());
291
        }
292
        if (this.getModelNumber() != null && !this.getModelNumber().isEmpty()) {
293
            itemString.append(" ");
294
            itemString.append(this.getModelNumber().trim());
295
        }
296
        if (this.getColor() != null && !this.getColor().isEmpty() && !this.getColor().trim().equals("f_")) {
297
            itemString.append(" ");
298
            itemString.append(this.getColor().trim());
299
        }
300
        return itemString.toString().replaceAll("\\s+", " ").trim();
301
    }
29707 tejbeer 302
 
31846 tejbeer 303
    public boolean isSmartPhone() {
304
        return SMART_PG.contains(this.getHsnCode());
305
    }
29707 tejbeer 306
 
32230 amit.gupta 307
    public String getModel() {
308
        StringBuilder itemString = new StringBuilder();
309
        if (this.getModelName() != null && !this.getModelName().isEmpty()) {
310
            itemString.append(this.getModelName().trim());
311
        }
312
        if (this.getModelNumber() != null && !this.getModelNumber().isEmpty()) {
313
            itemString.append(" ");
314
            itemString.append(this.getModelNumber().trim());
315
        }
316
 
317
        return itemString.toString().replaceAll("\\s+", " ").trim();
318
 
319
    }
320
 
31846 tejbeer 321
    public String getItemDescriptionNoColor() {
322
        StringBuilder itemString = new StringBuilder();
323
        if (this.getBrand() != null && !this.getBrand().isEmpty()) {
324
            itemString.append(this.getBrand().trim());
325
        }
326
        itemString.append(" ");
327
        if (this.getModelName() != null && !this.getModelName().isEmpty()) {
328
            itemString.append(this.getModelName().trim());
329
        }
330
        if (this.getModelNumber() != null && !this.getModelNumber().isEmpty()) {
331
            itemString.append(" ");
332
            itemString.append(this.getModelNumber().trim());
333
        }
29707 tejbeer 334
 
31846 tejbeer 335
        return itemString.toString().replaceAll("\\s+", " ").trim();
336
    }
29707 tejbeer 337
 
31846 tejbeer 338
    @Override
339
    public int hashCode() {
340
        final int prime = 31;
341
        int result = 1;
342
        result = prime * result + ((brand == null) ? 0 : brand.hashCode());
343
        result = prime * result + catalogItemId;
344
        result = prime * result + categoryId;
345
        result = prime * result + ((color == null) ? 0 : color.hashCode());
346
        result = prime * result + ((hsnCode == null) ? 0 : hsnCode.hashCode());
347
        result = prime * result + id;
348
        result = prime * result + ((modelName == null) ? 0 : modelName.hashCode());
349
        result = prime * result + ((modelNumber == null) ? 0 : modelNumber.hashCode());
350
        result = prime * result + ((productGroup == null) ? 0 : productGroup.hashCode());
351
        result = prime * result + ((sellingPrice == null) ? 0 : sellingPrice.hashCode());
352
        result = prime * result + ((startDate == null) ? 0 : startDate.hashCode());
353
        result = prime * result + ((status == null) ? 0 : status.hashCode());
354
        result = prime * result + ((type == null) ? 0 : type.hashCode());
355
        result = prime * result + ((weight == null) ? 0 : weight.hashCode());
356
        return result;
357
    }
29707 tejbeer 358
 
31846 tejbeer 359
    @Override
360
    public boolean equals(Object obj) {
361
        if (this == obj) return true;
362
        if (obj == null) return false;
363
        if (getClass() != obj.getClass()) return false;
364
        Item other = (Item) obj;
365
        if (brand == null) {
366
            if (other.brand != null) return false;
367
        } else if (!brand.equals(other.brand)) return false;
368
        if (catalogItemId != other.catalogItemId) return false;
369
        if (categoryId != other.categoryId) return false;
370
        if (color == null) {
371
            if (other.color != null) return false;
372
        } else if (!color.equals(other.color)) return false;
373
        if (hsnCode == null) {
374
            if (other.hsnCode != null) return false;
375
        } else if (!hsnCode.equals(other.hsnCode)) return false;
376
        if (id != other.id) return false;
377
        if (modelName == null) {
378
            if (other.modelName != null) return false;
379
        } else if (!modelName.equals(other.modelName)) return false;
380
        if (modelNumber == null) {
381
            if (other.modelNumber != null) return false;
382
        } else if (!modelNumber.equals(other.modelNumber)) return false;
383
        if (productGroup == null) {
384
            if (other.productGroup != null) return false;
385
        } else if (!productGroup.equals(other.productGroup)) return false;
386
        if (sellingPrice == null) {
387
            if (other.sellingPrice != null) return false;
388
        } else if (!sellingPrice.equals(other.sellingPrice)) return false;
389
        if (startDate == null) {
390
            if (other.startDate != null) return false;
391
        } else if (!startDate.equals(other.startDate)) return false;
392
        if (status != other.status) return false;
393
        if (type != other.type) return false;
394
        if (weight == null) {
395
            if (other.weight != null) return false;
396
        } else if (!weight.equals(other.weight)) return false;
397
        return true;
398
    }
31767 amit.gupta 399
 
31846 tejbeer 400
    public status getStatus() {
401
        return status;
402
    }
403
 
404
    public void setStatus(status status) {
405
        this.status = status;
406
    }
407
 
408
    public boolean isAnyColor() {
409
        if (this.color != null) {
410
            String lowerCaseColor = this.color.toLowerCase();
411
            return lowerCaseColor.equals("any color") || lowerCaseColor.equals("f_any color") || lowerCaseColor.equals("any colour") || lowerCaseColor.equals("f_any colour");
412
        }
413
        return false;
414
    }
415
 
32417 amit.gupta 416
    public Item clone() {
417
        Item item = new Item();
418
        item.setBrand(this.getBrand());
419
        item.setModelName(this.getModelName());
420
        item.setModelNumber(this.getModelNumber());
421
        item.setColor(this.getColor());
422
        item.setCatalogItemId(this.catalogItemId);
423
        item.setHsnCode(this.getHsnCode());
424
        item.setCategoryId(this.getCategoryId());
425
        item.setMrp(this.getMrp());
426
        item.setProductGroup(this.getProductGroup());
427
        item.setSellingPrice(this.getSellingPrice());
428
        item.setStartDate(LocalDateTime.now());
429
        item.setStatus(this.getStatus());
430
        item.setType(this.getType());
431
        item.setWeight(this.getWeight());
432
        item.setAddedOn(LocalDateTime.now());
433
        item.setUpdatedOn(LocalDateTime.now());
434
        item.setExpectedDelay(0);
435
        item.setPreferredVendor(null);
436
        item.setRisky(true);
437
        item.setWarrantyPeriod(0);
438
        return item;
439
    }
440
 
31846 tejbeer 441
    public Float getMrp() {
442
        return mrp;
443
    }
444
 
445
    public void setMrp(Float mrp) {
446
        this.mrp = mrp;
447
    }
32417 amit.gupta 448
 
449
    @Override
450
    public String toString() {
451
        return "Item{" +
452
                "id=" + id +
453
                ", brand='" + brand + '\'' +
454
                ", status=" + status +
455
                ", productGroup='" + productGroup + '\'' +
456
                ", modelName='" + modelName + '\'' +
457
                ", modelNumber='" + modelNumber + '\'' +
458
                ", color='" + color + '\'' +
459
                ", catalogItemId=" + catalogItemId +
460
                ", weight=" + weight +
461
                ", categoryId=" + categoryId +
462
                ", startDate=" + startDate +
463
                ", addedOn=" + addedOn +
464
                ", updatedOn=" + updatedOn +
465
                ", risky=" + risky +
466
                ", expectedDelay=" + expectedDelay +
467
                ", warrantyPeriod=" + warrantyPeriod +
468
                ", preferredVendor=" + preferredVendor +
469
                ", type=" + type +
470
                ", hsnCode='" + hsnCode + '\'' +
471
                ", sellingPrice=" + sellingPrice +
472
                ", mrp=" + mrp +
473
                '}';
474
    }
21552 ashik.ali 475
}