Browse Source

招标发布处理

Hu Jie 8 years ago
parent
commit
dfb199d668

+ 14 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseTenderSaveDao.java

@@ -0,0 +1,14 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.PurchaseTenderSave;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author: huj
+ * @Date: Created in 9:20 2018/5/11.
+ */
+@Repository
+public interface PurchaseTenderSaveDao extends JpaRepository<PurchaseTenderSave, Long>, JpaSpecificationExecutor<PurchaseTenderSave> {
+}

+ 13 - 4
src/main/java/com/uas/platform/b2b/erp/service/impl/TenderServiceImpl.java

@@ -22,6 +22,7 @@ import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
@@ -151,7 +152,9 @@ public class TenderServiceImpl implements TenderService {
         purchaseTenderDao.save(tender);
         Set<PurchaseTenderProd> tenderProds = tender.getPurchaseTenderProds();
         for (PurchaseTenderProd tenderProd : tenderProds) {
-            tenderProd.setTender(tender);
+            PurchaseTenderSave purchaseTenderSave = new PurchaseTenderSave();
+            BeanUtils.copyProperties(tender,purchaseTenderSave);
+            tenderProd.setTender(purchaseTenderSave);
             purchaseTenderProdDao.save(tenderProd);
         }
         ModelMap map = new ModelMap();
@@ -181,7 +184,9 @@ public class TenderServiceImpl implements TenderService {
         tender.setTenderAttaches(attachSet);
         Set<PurchaseTenderProd> tenderProds = tender.getPurchaseTenderProds();
         for (PurchaseTenderProd tenderProd : tenderProds) {
-            tenderProd.setTender(tender);
+            PurchaseTenderSave purchaseTenderSave = new PurchaseTenderSave();
+            BeanUtils.copyProperties(tender,purchaseTenderSave);
+            tenderProd.setTender(purchaseTenderSave);
             purchaseTenderProdDao.save(tenderProd);
             addSaleTender(tender, contactInfos, tenderProd);
         }
@@ -696,7 +701,9 @@ public class TenderServiceImpl implements TenderService {
                         oldTenderProd.setSaleTenderItems(saleTenderItems);
                         purchaseTenderProdDao.save(oldTenderProd);
                     } else { // 新增的
-                        tenderProd.setTender(oldTender);
+                        PurchaseTenderSave purchaseTenderSave = new PurchaseTenderSave();
+                        BeanUtils.copyProperties(oldTender,purchaseTenderSave);
+                        tenderProd.setTender(purchaseTenderSave);
                         purchaseTenderProdDao.save(tenderProd);
                     }
                     if (!ifOpen) { // 指定招标的增加招标单
@@ -1136,7 +1143,9 @@ public class TenderServiceImpl implements TenderService {
     @Override
     public ModelMap decide(List<SaleTenderItem> saleTenderItems) {
         SaleTenderItem tenderItem = saleTenderItemDao.findOne(saleTenderItems.get(0).getId());
-        PurchaseTender tender = tenderItem.getTenderProd().getTender();
+        PurchaseTender tender = new PurchaseTender();
+        PurchaseTenderSave purchaseTenderSave = tenderItem.getTenderProd().getTender();
+        BeanUtils.copyProperties(purchaseTenderSave,tender);
         tender.setModified(new Date());
         // 提交时设为0,审核后改为1
         tender.setAuditStatus(Constant.NO);

+ 3 - 3
src/main/java/com/uas/platform/b2b/model/PurchaseTenderProd.java

@@ -74,7 +74,7 @@ public class PurchaseTenderProd implements Serializable {
      */
     @ManyToOne(cascade = {CascadeType.REFRESH,CascadeType.PERSIST,CascadeType.MERGE})
     @JoinColumn(name = "tp_ptid", nullable = false)
-    private PurchaseTender tender;
+    private PurchaseTenderSave tender;
 
     /**
      * 投标明细
@@ -149,11 +149,11 @@ public class PurchaseTenderProd implements Serializable {
 
     @JsonIgnore
     @JSONField(serialize = false)
-    public PurchaseTender getTender() {
+    public PurchaseTenderSave getTender() {
         return tender;
     }
 
-    public void setTender(PurchaseTender tender) {
+    public void setTender(PurchaseTenderSave tender) {
         this.tender = tender;
     }
 

+ 469 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseTenderSave.java

@@ -0,0 +1,469 @@
+package com.uas.platform.b2b.model;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Set;
+
+/**
+ * 用于发布招标单信息
+ * @Author: huj
+ * @Date: Created in 9:11 2018/5/11.
+ */
+@Table(name = "purc$tender")
+@Entity
+public class PurchaseTenderSave implements Serializable {
+
+    /**
+     * 序列号
+     */
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "pt_id")
+    private Long id;
+
+    /**
+     * 招标编号
+     */
+    @Column(name = "pt_code")
+    private String code;
+
+    /**
+     * 招标标题
+     */
+    @Column(name = "pt_title")
+    private String title;
+
+    /**
+     * 单据最后时间
+     */
+    @Column(name = "pt_modified")
+    private Date modified;
+
+    /**
+     * 录入日期
+     */
+    @Column(name = "pt_date")
+    private Date date;
+
+    /**
+     * 联系人
+     */
+    @Column(name = "pt_user")
+    private String user;
+
+    /**
+     * 联系人uu
+     */
+    @Column(name = "pt_useruu")
+    private Long useruu;
+
+    /**
+     * 联系人
+     */
+    @OneToOne
+    @JoinColumn(name = "pt_useruu", insertable = false, updatable = false)
+    private UserBaseInfo userInfo;
+
+    /**
+     * 联系人tel
+     */
+    @Column(name = "pt_usertel")
+    private String userTel;
+
+    /**
+     * 招标企业uu
+     */
+    @Column(name = "pt_enuu")
+    private Long enUU;
+    /**
+     * 企业基本信息
+     */
+    @OneToOne
+    @JoinColumn(name = "pt_enuu", insertable = false, updatable = false)
+    private Enterprise enterprise;
+
+    /**
+     * 投标截止日期
+     */
+    @Column(name = "pt_enddate")
+    private Date endDate;
+
+    /**
+     *  结果公布日期
+     */
+    @Column(name = "pt_publishdate")
+    private Date publishDate;
+
+    /**
+     * 状态(待发布,待投标,待评标,已结标)
+     */
+    @Column(name = "pt_status")
+    private String status;
+
+    /**
+     * 币别
+     */
+    @Column(name = "pt_currency")
+    private String currency;
+
+    /**
+     * 是否开放报名(1为开放,0为指定供应商)
+     */
+    @Column(name = "pt_ifopen")
+    private Short ifOpen;
+
+    /**
+     * 是否含税(1含税,0不含税)
+     */
+    @Column(name = "pt_iftax")
+    private Short ifTax;
+
+    /**
+     * 收货地址
+     */
+    @Column(name = "pt_shipaddress")
+    private String shipAddress;
+
+    /**
+     * 付款方式
+     */
+    @Column(name = "pt_payment")
+    private String payment;
+
+    /**
+     * 发票类型(0表示不要发票, 1表示增值税普通发票, 2表示增值税专用发票)
+     */
+    @Column(name = "pt_invoicetype")
+    private Short invoiceType;
+
+    /**
+     * 证照要求
+     */
+    @Column(name = "pt_certificate")
+    private String certificate;
+
+    /**
+     * 发布状态(保存为0,发布为1)
+     */
+    @Column(name = "pt_ispublish")
+    private Short isPublish;
+
+    /**
+     * 招标产品明细
+     */
+    @OneToMany(mappedBy = "tender", cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
+    @OrderBy("id")
+    private Set<PurchaseTenderProd> purchaseTenderProds;
+
+    /**
+     * 招标附件
+     */
+    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.REFRESH})
+    @JoinTable(name = "purc$tenderattach", joinColumns = @JoinColumn(name = "pt_id", referencedColumnName = "pt_id"), inverseJoinColumns = @JoinColumn(name="at_id", referencedColumnName = "at_id"))
+    private Set<Attach> tenderAttaches;
+
+    /**
+     * 招标回答
+     */
+    @OneToOne(mappedBy = "tender", cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
+    private PurchaseTenderAnswer answer;
+
+    /**
+     * 是否截止(0未截止,1已截止)
+     */
+    @Column(name = "pt_overdue", insertable = false, updatable = false)
+    private Short overdue;
+
+    /**
+     * 是否公布结果(0未公布,1已公布)
+     */
+    @Column(name = "pt_result", insertable = false, updatable = false)
+    private Short result;
+
+
+    /**
+     * 审核状态(0代表已提交,1代表已审核,uas审批流用,平台发布单据为空)
+     */
+    @Column(name = "pt_auditstatus")
+    private Short auditStatus;
+
+    /**
+     * 是否全包 (1为全包,0为部分供料)
+     */
+    @Column(name = "pt_ifall")
+    private Short ifAll;
+
+    /**
+     * 提问截止时间
+     */
+    @Column(name = "pt_questionenddate")
+    private Date questionEndDate;
+
+    /**
+     * 是否截止提问(0未截止,1已截止)
+     */
+    @Column(name = "pt_questionend", insertable = false, updatable = false)
+    private Short questionEnd;
+
+    @Transient
+    private Short bidEnNum;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Date getModified() {
+        return modified;
+    }
+
+    public void setModified(Date modified) {
+        this.modified = modified;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public String getUser() {
+        return user;
+    }
+
+    public void setUser(String user) {
+        this.user = user;
+    }
+
+    public Long getUseruu() {
+        return useruu;
+    }
+
+    public void setUseruu(Long useruu) {
+        this.useruu = useruu;
+    }
+
+    public UserBaseInfo getUserInfo() {
+        return userInfo;
+    }
+
+    public void setUserInfo(UserBaseInfo userInfo) {
+        this.userInfo = userInfo;
+    }
+
+    public String getUserTel() {
+        return userTel;
+    }
+
+    public void setUserTel(String userTel) {
+        this.userTel = userTel;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public Enterprise getEnterprise() {
+        return enterprise;
+    }
+
+    public void setEnterprise(Enterprise enterprise) {
+        this.enterprise = enterprise;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public Date getPublishDate() {
+        return publishDate;
+    }
+
+    public void setPublishDate(Date publishDate) {
+        this.publishDate = publishDate;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
+    public Short getIfOpen() {
+        return ifOpen;
+    }
+
+    public void setIfOpen(Short ifOpen) {
+        this.ifOpen = ifOpen;
+    }
+
+    public Short getIfTax() {
+        return ifTax;
+    }
+
+    public void setIfTax(Short ifTax) {
+        this.ifTax = ifTax;
+    }
+
+    public String getShipAddress() {
+        return shipAddress;
+    }
+
+    public void setShipAddress(String shipAddress) {
+        this.shipAddress = shipAddress;
+    }
+
+    public String getPayment() {
+        return payment;
+    }
+
+    public void setPayment(String payment) {
+        this.payment = payment;
+    }
+
+    public Short getInvoiceType() {
+        return invoiceType;
+    }
+
+    public void setInvoiceType(Short invoiceType) {
+        this.invoiceType = invoiceType;
+    }
+
+    public String getCertificate() {
+        return certificate;
+    }
+
+    public void setCertificate(String certificate) {
+        this.certificate = certificate;
+    }
+
+    public Short getIsPublish() {
+        return isPublish;
+    }
+
+    public void setIsPublish(Short isPublish) {
+        this.isPublish = isPublish;
+    }
+
+    public Set<PurchaseTenderProd> getPurchaseTenderProds() {
+        return purchaseTenderProds;
+    }
+
+    public void setPurchaseTenderProds(Set<PurchaseTenderProd> purchaseTenderProds) {
+        this.purchaseTenderProds = purchaseTenderProds;
+    }
+
+    public Set<Attach> getTenderAttaches() {
+        return tenderAttaches;
+    }
+
+    public void setTenderAttaches(Set<Attach> tenderAttaches) {
+        this.tenderAttaches = tenderAttaches;
+    }
+
+    public Short getOverdue() {
+        return overdue;
+    }
+
+    public void setOverdue(Short overdue) {
+        this.overdue = overdue;
+    }
+
+    public Short getResult() {
+        return result;
+    }
+
+    public void setResult(Short result) {
+        this.result = result;
+    }
+
+    public Short getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(Short auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public Short getBidEnNum() {
+        return bidEnNum;
+    }
+
+    public void setBidEnNum(Short bidEnNum) {
+        this.bidEnNum = bidEnNum;
+    }
+
+    public Short getIfAll() {
+        return ifAll;
+    }
+
+    public void setIfAll(Short ifAll) {
+        this.ifAll = ifAll;
+    }
+
+    public Date getQuestionEndDate() {
+        return questionEndDate;
+    }
+
+    public void setQuestionEndDate(Date questionEndDate) {
+        this.questionEndDate = questionEndDate;
+    }
+
+    public PurchaseTenderAnswer getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(PurchaseTenderAnswer answer) {
+        this.answer = answer;
+    }
+
+    public Short getQuestionEnd() {
+        return questionEnd;
+    }
+
+    public void setQuestionEnd(Short questionEnd) {
+        this.questionEnd = questionEnd;
+    }
+}

+ 31 - 15
src/main/java/com/uas/platform/b2b/service/impl/PurchaseTenderServiceImpl.java

@@ -121,6 +121,7 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
     private  SaleTenderItemSaveDao saleTenderItemSaveDao;
 
 
+
     /**
      *  发布或保存(新录入单据)
      * @param purchaseTender  招标单
@@ -206,19 +207,24 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
         tender.setStatus("待投标");
         PurchaseTenderInfo tenderInfo = new PurchaseTenderInfo();
         BeanUtils.copyProperties(tender, tenderInfo, PurchaseTenderInfo.class);
-        purchaseTenderInfoDao.save(tenderInfo);
+//        tenderInfo = purchaseTenderInfoDao.save(tenderInfo);
         Set<PurchaseTenderProd> tenderProds = tender.getPurchaseTenderProds();
         Long currentEnUU = SystemSession.getUser().getEnterprise().getUu();
-        for (PurchaseTenderProd tenderProd : tenderProds) {
-            // 将不在物料库的产品信息添加进去
-            List<Product> oldProducts = productDao.findByEnUUAndCode(currentEnUU, tenderProd.getProdCode());
-            if (CollectionUtils.isEmpty(oldProducts)) {
-                Product newProduct = new Product(tenderProd, currentEnUU);
-                ProductUtils.updateOne(newProduct);
+        if (!CollectionUtils.isEmpty(tenderProds)) {
+            for (PurchaseTenderProd tenderProd : tenderProds) {
+                // 将不在物料库的产品信息添加进去
+                List<Product> oldProducts = productDao.findByEnUUAndCode(currentEnUU, tenderProd.getProdCode());
+                if (CollectionUtils.isEmpty(oldProducts)) {
+                    Product newProduct = new Product(tenderProd, currentEnUU);
+                    ProductUtils.updateOne(newProduct);
+                }
+                PurchaseTenderSave purchaseTenderSave = new PurchaseTenderSave();
+                BeanUtils.copyProperties(tenderInfo, purchaseTenderSave);
+                tenderProd.setTender(purchaseTenderSave);
             }
-            tenderProd.setTender(tender);
-            purchaseTenderProdDao.save(tenderProd);
+            purchaseTenderProdDao.save(tenderProds);
         }
+
     }
 
     private void saveOpen(PurchaseTender tender) {
@@ -226,7 +232,7 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
         tender.setStatus("待发布");
         PurchaseTenderInfo tenderInfo = new PurchaseTenderInfo();
         BeanUtils.copyProperties(tender, tenderInfo, PurchaseTenderInfo.class);
-        tenderInfo = purchaseTenderInfoDao.save(tenderInfo);
+        //tenderInfo = purchaseTenderInfoDao.save(tenderInfo);
         Set<PurchaseTenderProd> tenderProds = tenderInfo.getPurchaseTenderProds();
         if (!CollectionUtils.isEmpty(tenderProds)) {
             for (PurchaseTenderProd tenderProd : tenderProds) {
@@ -274,7 +280,9 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
                 Product newProduct = new Product(tenderProd, currentEnUU);
                 ProductUtils.updateOne(newProduct);
             }
-            tenderProd.setTender(tender);
+            PurchaseTenderSave purchaseTenderSave = new PurchaseTenderSave();
+            BeanUtils.copyProperties(tender,purchaseTenderSave);
+            tenderProd.setTender(purchaseTenderSave);
             purchaseTenderProdDao.save(tenderProd);
             addSaleTender(tender, contactInfos, tenderProd);
         }
@@ -605,7 +613,9 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
                     oldTenderProd.setSaleTenderItems(saleTenderItems);
                     purchaseTenderProdDao.save(oldTenderProd);
                 } else { // 新增的
-                    tenderProd.setTender(oldTender);
+                    PurchaseTenderSave purchaseTenderSave = new PurchaseTenderSave();
+                    BeanUtils.copyProperties(oldTender,purchaseTenderSave);
+                    tenderProd.setTender(purchaseTenderSave);
                     purchaseTenderProdDao.save(tenderProd);
                 }
                 if (!ifOpen) { // 指定招标的增加招标单
@@ -644,18 +654,22 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
                     // 找不到投标单主表才新建一个,确保只有一个投标单
                     if (tender.getEnUU() != null && enBaseInfo.getUu() != null && tender.getCode() != null) {
                         SaleTender saleTender = saleTenderDao.findByEnUUAndVendUUAndCode(tender.getEnUU(), enBaseInfo.getUu(), tender.getCode());
+                        SaleTender saleTender1 = new SaleTender();
                         if (null == saleTender) {
                             saleTender = new SaleTender(tender, contactInfo);
                             saleTender.setVendUU(enBaseInfo.getUu());
                             saleTender.setEnterpriseBaseInfo(enBaseInfo); // 投标单主表构造完毕
-                            saleTenderDao.save(saleTender);
+                            SaleTenderSave saleTenderSave = new SaleTenderSave();
+                            BeanUtils.copyProperties(saleTender,saleTenderSave);
+                            saleTenderSaveDao.save(saleTenderSave);
                             // 用于新增消息
                             saleTenders.add(saleTender);
                             if (tender.getIsPublish() == Constant.YES) {
                                 saveUserOrders(saleTender, tender);
                             }
+                            BeanUtils.copyProperties(saleTenderSave,saleTender1);
                         }
-                        tenderItem.setSaleTender(saleTender);
+                        tenderItem.setSaleTender(saleTender1);
                     }
                     tenderItem.setTenderProd(tenderProd);
                     saleTenderItemDao.save(tenderItem);
@@ -776,7 +790,9 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
             purchaseTender.setStatus("流标");
         }
         for (PurchaseTenderProd tenderProd : purchaseTender.getPurchaseTenderProds()) {
-            tenderProd.setTender(purchaseTender);
+            PurchaseTenderSave purchaseTenderSave = new PurchaseTenderSave();
+            BeanUtils.copyProperties(purchaseTender,purchaseTenderSave);
+            tenderProd.setTender(purchaseTenderSave);
             purchaseTenderProdDao.save(tenderProd);
             for (SaleTenderItem tenderItem : tenderProd.getSaleTenderItems()) {
                 tenderItem.setTenderProd(tenderProd);