PurcInquiryItem.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
  1. package com.uas.ps.inquiry.model;
  2. import com.alibaba.fastjson.annotation.JSONField;
  3. import com.fasterxml.jackson.annotation.JsonIgnore;
  4. import com.uas.ps.entity.Product;
  5. import javax.persistence.*;
  6. import java.util.*;
  7. /**
  8. * 平台新增询价单明细
  9. *
  10. * @author hejq
  11. * @date 2018-01-13 19:19
  12. */
  13. @Entity
  14. @Table(name = "purc$puinquiryitems")
  15. public class PurcInquiryItem {
  16. @Id
  17. @GeneratedValue(strategy = GenerationType.IDENTITY)
  18. @Column(name = "id_id")
  19. private Long id;
  20. /**
  21. * 序号
  22. */
  23. @Column(name = "id_number")
  24. private Short number;
  25. /**
  26. * 询价单
  27. */
  28. @ManyToOne(cascade = CascadeType.ALL, optional = true)
  29. @JoinColumn(name = "id_inid", nullable = false)
  30. private PurcInquiry inquiry;
  31. /**
  32. * 买家采购员UU
  33. */
  34. @Column(name = "id_useruu")
  35. private Long userUU;
  36. /**
  37. * 联系人姓名
  38. */
  39. @Column(name = "id_username")
  40. private String userName;
  41. /**
  42. * 联系人电话
  43. */
  44. @Column(name = "id_usertel")
  45. private String userTel;
  46. /**
  47. * 联系人编号
  48. */
  49. @Column(name = "id_usercode")
  50. private String userCode;
  51. /**
  52. * 产品id
  53. */
  54. @Column(name = "id_prid")
  55. private Long productId;
  56. /**
  57. * 产品
  58. */
  59. // @OneToOne(cascade = {CascadeType.ALL})
  60. // @JoinColumn(name = "id_prid", insertable = false, updatable = false)
  61. @Transient
  62. private Product product;
  63. /**
  64. * ************* 上传的物料信息,因为可能是手动输入的,物料款不存在,需要先进行保存物料 *************
  65. */
  66. /**
  67. * 物料编号
  68. */
  69. @Column(name = "id_prodcode")
  70. private String prodCode;
  71. /**
  72. * 名称
  73. */
  74. @Column(name = "id_prodtitle")
  75. private String prodTitle;
  76. /**
  77. * 规格
  78. */
  79. @Column(name = "id_prodspec")
  80. private String spec;
  81. /**
  82. * 单位
  83. */
  84. @Column(name = "id_unit")
  85. private String unit;
  86. /**
  87. * 型号
  88. */
  89. @Column(name = "id_cmpcode")
  90. private String cmpCode;
  91. /**
  92. * 品牌
  93. */
  94. @Column(name = "id_inbrand")
  95. private String inbrand;
  96. /**
  97. * ******end*******
  98. */
  99. /**
  100. * 币种
  101. */
  102. @Column(name = "id_currency")
  103. private String currency;
  104. /**
  105. * 税率
  106. */
  107. @Column(name = "id_taxrate")
  108. private Float taxrate;
  109. /**
  110. * 备注
  111. */
  112. @Column(name = "id_remark")
  113. private String remark;
  114. /**
  115. * 供应商UU
  116. */
  117. @Column(name = "id_venduu")
  118. private Long vendUU;
  119. /**
  120. * 供应商联系人UU
  121. */
  122. @Column(name = "id_venduseruu")
  123. private Long vendUserUU;
  124. /**
  125. * (买家预先提供的)有效期始
  126. */
  127. @Column(name = "id_fromdate")
  128. private Date fromDate;
  129. /**
  130. * (买家预先提供的)有效期止
  131. */
  132. @Column(name = "id_todate")
  133. private Date toDate;
  134. /**
  135. * (卖家报的)有效期始
  136. */
  137. @Column(name = "id_vendfromdate")
  138. private Date vendFromDate;
  139. /**
  140. * (卖家报的)有效期止
  141. */
  142. @Column(name = "id_vendtodate")
  143. private Date vendToDate;
  144. /**
  145. * (卖家报的)最小订购量
  146. */
  147. @Column(name = "id_minorderqty")
  148. private Double minOrderQty;
  149. /**
  150. * (卖家报的)最小包装量
  151. */
  152. @Column(name = "id_minpackqty")
  153. private Double minPackQty;
  154. /**
  155. * (卖家报的)物料品牌
  156. */
  157. @Column(name = "id_brand")
  158. private String brand;
  159. /**
  160. * (卖家报的)供应商物料编号
  161. */
  162. @Column(name = "id_vendorprodcode")
  163. private String vendorprodcode;
  164. /**
  165. * (卖家报的)交货周期(天数)
  166. */
  167. @Column(name = "id_leadtime")
  168. private Long leadtime;
  169. /**
  170. * 分段报价明细
  171. */
  172. @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  173. @JoinColumn(name = "ir_idid")
  174. @OrderBy("lapQty")
  175. private List<PurchaseInquiryReply> replies;
  176. /**
  177. * {未回复、已回复}
  178. */
  179. @Column(name = "id_status")
  180. private Short status;
  181. /**
  182. * 是否采纳
  183. */
  184. @Column(name = "id_agreed")
  185. private Short agreed;
  186. /**
  187. * 是否买家已设置分段数
  188. */
  189. @Column(name = "id_custlap")
  190. private Short custLap;
  191. /**
  192. * search项目进行是否已过期时实际根据主表中enddate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
  193. * 所以建立此字段,但是此字段不会赋值。
  194. *
  195. * @return
  196. */
  197. @Column(name = "id_overdue")
  198. private Short overdue;
  199. /**
  200. * 来源ERP或B2B
  201. */
  202. @Column(name = "id_source")
  203. private String source;
  204. /**
  205. * 是否公开
  206. */
  207. @Column(name = "id_isopen")
  208. private Short isOpen;
  209. /**
  210. * 需求数量
  211. */
  212. @Column(name = "id_needquantity")
  213. private Double needquantity;
  214. /**
  215. * 来源id,可能是ERP同步过来的单据
  216. */
  217. @Column(name = "id_sourceid")
  218. private Long sourceid;
  219. /**
  220. * 单据日期,索引过滤需要
  221. */
  222. @Column(name = "id_date")
  223. private Date date;
  224. /**
  225. * 企业uu,公共询价需要这个字段做标识
  226. */
  227. @Transient
  228. private Long enuu;
  229. /**
  230. * 单价预算
  231. */
  232. @Column(name = "id_unitprice")
  233. private Double unitPrice;
  234. /**
  235. * 报价时间
  236. */
  237. @Column(name = "id_offertime")
  238. private Date offerTime;
  239. /**
  240. * 封装
  241. */
  242. @Column(name = "id_sort")
  243. private String sort;
  244. /**
  245. * 产品生产日期
  246. */
  247. @Column(name = "id_producedate")
  248. private String produceDate;
  249. /**
  250. * 物料报价数量(记录多少人或企业对该物料进行报价)
  251. */
  252. @Column(name = "id_offeramount")
  253. private Integer offerAmount;
  254. /**
  255. * 封装
  256. */
  257. @Column(name = "id_encapsulation")
  258. private String encapsulation;
  259. /**
  260. * 截止日期
  261. */
  262. @Column(name = "id_enddate")
  263. private Date endDate;
  264. /**
  265. * 剩余时间
  266. */
  267. @Transient
  268. private Long remainingTime;
  269. public Long getId() {
  270. return id;
  271. }
  272. public void setId(Long id) {
  273. this.id = id;
  274. }
  275. public Short getNumber() {
  276. return number;
  277. }
  278. public void setNumber(Short number) {
  279. this.number = number;
  280. }
  281. @JsonIgnore
  282. @JSONField(serialize = false)
  283. public PurcInquiry getInquiry() {
  284. return inquiry;
  285. }
  286. public void setInquiry(PurcInquiry inquiry) {
  287. this.inquiry = inquiry;
  288. }
  289. public Long getUserUU() {
  290. return userUU;
  291. }
  292. public void setUserUU(Long userUU) {
  293. this.userUU = userUU;
  294. }
  295. public String getUserName() {
  296. return userName;
  297. }
  298. public void setUserName(String userName) {
  299. this.userName = userName;
  300. }
  301. public String getUserTel() {
  302. return userTel;
  303. }
  304. public void setUserTel(String userTel) {
  305. this.userTel = userTel;
  306. }
  307. public Double getUnitPrice() {
  308. return unitPrice;
  309. }
  310. public void setUnitPrice(Double unitPrice) {
  311. this.unitPrice = unitPrice;
  312. }
  313. public Date getOfferTime() {
  314. return offerTime;
  315. }
  316. public void setOfferTime(Date offerTime) {
  317. this.offerTime = offerTime;
  318. }
  319. public String getUserCode() {
  320. return userCode;
  321. }
  322. public void setUserCode(String userCode) {
  323. this.userCode = userCode;
  324. }
  325. public Long getProductId() {
  326. return productId;
  327. }
  328. public void setProductId(Long productId) {
  329. this.productId = productId;
  330. }
  331. public Product getProduct() {
  332. return product;
  333. }
  334. public void setProduct(Product product) {
  335. this.product = product;
  336. }
  337. public String getCurrency() {
  338. return currency;
  339. }
  340. public void setCurrency(String currency) {
  341. this.currency = currency;
  342. }
  343. public Float getTaxrate() {
  344. return taxrate;
  345. }
  346. public void setTaxrate(Float taxrate) {
  347. this.taxrate = taxrate;
  348. }
  349. public String getRemark() {
  350. return remark;
  351. }
  352. public void setRemark(String remark) {
  353. this.remark = remark;
  354. }
  355. public Long getVendUU() {
  356. return vendUU;
  357. }
  358. public void setVendUU(Long vendUU) {
  359. this.vendUU = vendUU;
  360. }
  361. public Long getVendUserUU() {
  362. return vendUserUU;
  363. }
  364. public void setVendUserUU(Long vendUserUU) {
  365. this.vendUserUU = vendUserUU;
  366. }
  367. public Date getFromDate() {
  368. return fromDate;
  369. }
  370. public void setFromDate(Date fromDate) {
  371. this.fromDate = fromDate;
  372. }
  373. public Date getToDate() {
  374. return toDate;
  375. }
  376. public void setToDate(Date toDate) {
  377. this.toDate = toDate;
  378. }
  379. public Date getVendFromDate() {
  380. return vendFromDate;
  381. }
  382. public void setVendFromDate(Date vendFromDate) {
  383. this.vendFromDate = vendFromDate;
  384. }
  385. public Date getVendToDate() {
  386. return vendToDate;
  387. }
  388. public void setVendToDate(Date vendToDate) {
  389. this.vendToDate = vendToDate;
  390. }
  391. public Double getMinOrderQty() {
  392. return minOrderQty;
  393. }
  394. public void setMinOrderQty(Double minOrderQty) {
  395. this.minOrderQty = minOrderQty;
  396. }
  397. public Double getMinPackQty() {
  398. return minPackQty;
  399. }
  400. public void setMinPackQty(Double minPackQty) {
  401. this.minPackQty = minPackQty;
  402. }
  403. public String getBrand() {
  404. return brand;
  405. }
  406. public void setBrand(String brand) {
  407. this.brand = brand;
  408. }
  409. public String getVendorprodcode() {
  410. return vendorprodcode;
  411. }
  412. public void setVendorprodcode(String vendorprodcode) {
  413. this.vendorprodcode = vendorprodcode;
  414. }
  415. public Long getLeadtime() {
  416. return leadtime;
  417. }
  418. public void setLeadtime(Long leadtime) {
  419. this.leadtime = leadtime;
  420. }
  421. public List<PurchaseInquiryReply> getReplies() {
  422. return replies;
  423. }
  424. public void setReplies(List<PurchaseInquiryReply> replies) {
  425. this.replies = replies;
  426. }
  427. public Short getStatus() {
  428. return status;
  429. }
  430. public void setStatus(Short status) {
  431. this.status = status;
  432. }
  433. public Short getAgreed() {
  434. return agreed;
  435. }
  436. public void setAgreed(Short agreed) {
  437. this.agreed = agreed;
  438. }
  439. public Short getCustLap() {
  440. return custLap;
  441. }
  442. public void setCustLap(Short custLap) {
  443. this.custLap = custLap;
  444. }
  445. public Short getOverdue() {
  446. return overdue;
  447. }
  448. public void setOverdue(Short overdue) {
  449. this.overdue = overdue;
  450. }
  451. public String getSource() {
  452. return source;
  453. }
  454. public void setSource(String source) {
  455. this.source = source;
  456. }
  457. public Short getIsOpen() {
  458. return isOpen;
  459. }
  460. public void setIsOpen(Short isOpen) {
  461. this.isOpen = isOpen;
  462. }
  463. public String getProdCode() {
  464. return prodCode;
  465. }
  466. public void setProdCode(String prodCode) {
  467. this.prodCode = prodCode;
  468. }
  469. public String getProdTitle() {
  470. return prodTitle;
  471. }
  472. public void setProdTitle(String prodTitle) {
  473. this.prodTitle = prodTitle;
  474. }
  475. public String getSpec() {
  476. return spec;
  477. }
  478. public void setSpec(String spec) {
  479. this.spec = spec;
  480. }
  481. public String getUnit() {
  482. return unit;
  483. }
  484. public void setUnit(String unit) {
  485. this.unit = unit;
  486. }
  487. public String getCmpCode() {
  488. return cmpCode;
  489. }
  490. public void setCmpCode(String cmpCode) {
  491. this.cmpCode = cmpCode;
  492. }
  493. public String getInbrand() {
  494. return inbrand;
  495. }
  496. public void setInbrand(String inbrand) {
  497. this.inbrand = inbrand;
  498. }
  499. public Double getNeedquantity() {
  500. return needquantity;
  501. }
  502. public void setNeedquantity(Double needquantity) {
  503. this.needquantity = needquantity;
  504. }
  505. public Long getSourceid() {
  506. return sourceid;
  507. }
  508. public void setSourceid(Long sourceid) {
  509. this.sourceid = sourceid;
  510. }
  511. public Date getDate() {
  512. return date;
  513. }
  514. public void setDate(Date date) {
  515. this.date = date;
  516. }
  517. public Long getEnuu() {
  518. return enuu;
  519. }
  520. public void setEnuu(Long enuu) {
  521. this.enuu = enuu;
  522. }
  523. public String getSort() {
  524. return sort;
  525. }
  526. public void setSort(String sort) {
  527. this.sort = sort;
  528. }
  529. public String getProduceDate() {
  530. return produceDate;
  531. }
  532. public void setProduceDate(String produceDate) {
  533. this.produceDate = produceDate;
  534. }
  535. public Integer getOfferAmount() {
  536. return offerAmount;
  537. }
  538. public void setOfferAmount(Integer offerAmount) {
  539. this.offerAmount = offerAmount;
  540. }
  541. public String getEncapsulation() {
  542. return encapsulation;
  543. }
  544. public void setEncapsulation(String encapsulation) {
  545. this.encapsulation = encapsulation;
  546. }
  547. public Date getEndDate() {
  548. return endDate;
  549. }
  550. public void setEndDate(Date endDate) {
  551. this.endDate = endDate;
  552. }
  553. public static List<PurcInquiry> distinct(List<PurcInquiryItem> inquiryItems) {
  554. List<PurcInquiry> inquiries = new ArrayList<>();
  555. Set<Long> keys = new HashSet<>();
  556. for (PurcInquiryItem item : inquiryItems) {
  557. if (!keys.contains(item.getInquiry().getId())) {
  558. inquiries.add(item.getInquiry());
  559. keys.add(item.getInquiry().getId());
  560. }
  561. }
  562. return inquiries;
  563. }
  564. @Override
  565. public String toString() {
  566. return "PurcInquiryItem{" +
  567. "id=" + id +
  568. ", number=" + number +
  569. ", inquiry=" + inquiry +
  570. ", userUU=" + userUU +
  571. ", userName='" + userName + '\'' +
  572. ", userTel='" + userTel + '\'' +
  573. ", userCode='" + userCode + '\'' +
  574. ", productId=" + productId +
  575. ", product=" + product +
  576. ", prodCode='" + prodCode + '\'' +
  577. ", prodTitle='" + prodTitle + '\'' +
  578. ", spec='" + spec + '\'' +
  579. ", unit='" + unit + '\'' +
  580. ", cmpCode='" + cmpCode + '\'' +
  581. ", inbrand='" + inbrand + '\'' +
  582. ", currency='" + currency + '\'' +
  583. ", taxrate=" + taxrate +
  584. ", remark='" + remark + '\'' +
  585. ", vendUU=" + vendUU +
  586. ", vendUserUU=" + vendUserUU +
  587. ", fromDate=" + fromDate +
  588. ", toDate=" + toDate +
  589. ", vendFromDate=" + vendFromDate +
  590. ", vendToDate=" + vendToDate +
  591. ", minOrderQty=" + minOrderQty +
  592. ", minPackQty=" + minPackQty +
  593. ", brand='" + brand + '\'' +
  594. ", vendorprodcode='" + vendorprodcode + '\'' +
  595. ", leadtime=" + leadtime +
  596. ", replies=" + replies +
  597. ", status=" + status +
  598. ", agreed=" + agreed +
  599. ", custLap=" + custLap +
  600. ", overdue=" + overdue +
  601. ", source='" + source + '\'' +
  602. ", isOpen=" + isOpen +
  603. ", needquantity=" + needquantity +
  604. ", sourceid=" + sourceid +
  605. ", date=" + date +
  606. ", enuu=" + enuu +
  607. ", unitPrice=" + unitPrice +
  608. ", offerTime=" + offerTime +
  609. ", sort='" + sort + '\'' +
  610. ", produceDate='" + produceDate + '\'' +
  611. ", offerAmount=" + offerAmount +
  612. ", encapsulation='" + encapsulation + '\'' +
  613. ", endDate=" + endDate +
  614. '}';
  615. }
  616. public Long getRemainingTime() {
  617. if (endDate != null) {
  618. return endDate.getTime() - System.currentTimeMillis();
  619. }
  620. return null;
  621. }
  622. }