Prechádzať zdrojové kódy

模具询价单修改,查看使用视图,操作使用表

dongbw 8 rokov pred
rodič
commit
8420c488ea

+ 22 - 29
src/main/java/com/uas/platform/b2b/controller/SaleInquiryMouldController.java

@@ -1,27 +1,14 @@
 package com.uas.platform.b2b.controller;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import com.uas.platform.b2b.model.*;
-import com.uas.platform.b2b.service.AttachService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.commons.CommonsMultipartFile;
-import org.springframework.web.servlet.ModelAndView;
-
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.model.Attach;
+import com.uas.platform.b2b.model.FileUpload;
+import com.uas.platform.b2b.model.PurchaseInquiryMould;
+import com.uas.platform.b2b.model.PurchaseInquiryMouldDetail;
+import com.uas.platform.b2b.model.PurchaseInquiryMouldInfo;
+import com.uas.platform.b2b.model.PurchaseInquiryMouldItem;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.PurchaseInquiryMouldService;
@@ -47,12 +34,18 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.servlet.ModelAndView;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -87,7 +80,7 @@ public class SaleInquiryMouldController {
 	 */
 	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
 	@ResponseBody
-	public SPage<PurchaseInquiryMould> getReceivedMouldInquiries(PageParams params, String searchFilter) {
+	public SPage<PurchaseInquiryMouldInfo> getReceivedMouldInquiries(PageParams params, String searchFilter) {
 		logger.log("客户模具询价单", "查看收到的客户模具询价单列表(全部)- 搜索");
 		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
 		String keyword = jsonObject.getString("keyword");
@@ -119,7 +112,7 @@ public class SaleInquiryMouldController {
 	 */
 	@RequestMapping(value = "/info/search", params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
-	public SPage<PurchaseInquiryMould> getTodoInquiryMould(PageParams params, String searchFilter) {
+	public SPage<PurchaseInquiryMouldInfo> getTodoInquiryMould(PageParams params, String searchFilter) {
 		logger.log("客户模具询价单", "查看收到的客户模具询价单列表(待报价)- 搜索");
 		JSONObject jsonObject = JSON.parseObject(searchFilter);
 		String keyword = jsonObject.getString("keyword");
@@ -189,7 +182,7 @@ public class SaleInquiryMouldController {
 	 */
 	@RequestMapping(value = "/info/search", params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
-	public SPage<PurchaseInquiryMould> getDoneInquiryMould(PageParams params, String searchFilter) {
+	public SPage<PurchaseInquiryMouldInfo> getDoneInquiryMould(PageParams params, String searchFilter) {
 		logger.log("客户模具询价单", "查看收到的客户模具询价单列表(已报价)- 搜索");
 		JSONObject jsonObject = JSON.parseObject(searchFilter);
 		String keyword = jsonObject.getString("keyword");
@@ -223,7 +216,7 @@ public class SaleInquiryMouldController {
 	 */
 	@RequestMapping(value = "/info/search", params = RequestState.INVALID, method = RequestMethod.GET)
 	@ResponseBody
-	public SPage<PurchaseInquiryMould> getInvalidInquiryMould(PageParams params, String searchFilter) {
+	public SPage<PurchaseInquiryMouldInfo> getInvalidInquiryMould(PageParams params, String searchFilter) {
 		logger.log("客户模具询价单", "查看收到的客户模具询价单列表(已失效)- 搜索");
 		JSONObject jsonObject = JSON.parseObject(searchFilter);
 		String keyword = jsonObject.getString("keyword");
@@ -256,7 +249,7 @@ public class SaleInquiryMouldController {
 	 */
 	@RequestMapping(value = "/info/nosearch", method = RequestMethod.GET)
 	@ResponseBody
-	public SPage<PurchaseInquiryMould> getReceivedMouldInquiriesBySql(PageParams params, String searchFilter) {
+	public SPage<PurchaseInquiryMouldInfo> getReceivedMouldInquiriesBySql(PageParams params, String searchFilter) {
 		logger.log("客户模具询价单", "查看收到的客户模具询价单列表(全部)");
 		SearchFilter search = JSONObject.parseObject(searchFilter, SearchFilter.class);
 		SearchFilter filter = userService.distribute();
@@ -282,7 +275,7 @@ public class SaleInquiryMouldController {
 	 */
 	@RequestMapping(value = "/info/nosearch", params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
-	public SPage<PurchaseInquiryMould> getDoneMouldInquiriesBySql(PageParams params, String searchFilter) {
+	public SPage<PurchaseInquiryMouldInfo> getDoneMouldInquiriesBySql(PageParams params, String searchFilter) {
 		logger.log("客户模具询价单", "直接查看收到的客户模具询价单列表(已报价)");
 		SearchFilter search = JSONObject.parseObject(searchFilter, SearchFilter.class);
 		SearchFilter filter = userService.distribute();
@@ -310,7 +303,7 @@ public class SaleInquiryMouldController {
 	 */
 	@RequestMapping(value = "/info/nosearch", params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
-	public SPage<PurchaseInquiryMould> getTodoMouldInquiriesBySql(PageParams params, String searchFilter) {
+	public SPage<PurchaseInquiryMouldInfo> getTodoMouldInquiriesBySql(PageParams params, String searchFilter) {
 		logger.log("客户模具询价单", "直接查看收到的客户模具询价单列表(待报价)");
 		SearchFilter search = JSONObject.parseObject(searchFilter, SearchFilter.class);
 		SearchFilter filter = userService.distribute();
@@ -340,7 +333,7 @@ public class SaleInquiryMouldController {
 	 */
 	@RequestMapping(value = "/info/nosearch", params = RequestState.INVALID, method = RequestMethod.GET)
 	@ResponseBody
-	public SPage<PurchaseInquiryMould> getInvalidMouldInquiriesBySql(PageParams params, String searchFilter) {
+	public SPage<PurchaseInquiryMouldInfo> getInvalidMouldInquiriesBySql(PageParams params, String searchFilter) {
 		logger.log("客户模具询价单", "直接查看收到的客户模具询价单列表(已失效)");
 		SearchFilter search = JSONObject.parseObject(searchFilter, SearchFilter.class);
 		SearchFilter filter = userService.distribute();

+ 167 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseInquiryMouldInfoDao.java

@@ -0,0 +1,167 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.PurchaseInquiryMouldInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface PurchaseInquiryMouldInfoDao
+		extends JpaSpecificationExecutor<PurchaseInquiryMouldInfo>, JpaRepository<PurchaseInquiryMouldInfo, Long> {
+//
+//	/**
+//	 * @param enUU
+//	 *            询价方企业ID
+//	 * @param code
+//	 *            流水号
+//	 * @return
+//	 */
+//	public List<PurchaseInquiryMould> findByEnuuAndCode(long enuu, String code);
+//
+//	/**
+//	 * @param enUU
+//	 *            询价方企业ID
+//	 * @param sourceId
+//	 *            来源系统的单据ID
+//	 * @return
+//	 */
+//	public List<PurchaseInquiryMould> findByEnuuAndSourceId(long enuu, long sourceId);
+//
+//	/**
+//	 * 按询价单ID和明细供应商UU查找
+//	 *
+//	 * @param vendUU
+//	 * @param id
+//	 * @return
+//	 */
+//	@Query("select p from PurchaseInquiryMould p where p.venduu = :venduu and p.id = :id")
+//	public PurchaseInquiryMould findByVenduuAndId(@Param("venduu") long vendUU, @Param("id") long id);
+//
+//	/**
+//	 * 根据供应商企业UU号查询已报价模具询价单数量
+//	 *
+//	 * @param venduu
+//	 * @return
+//	 */
+//	@Query("select count(i) from PurchaseInquiryMould i where i.venduu = :venduu and i.status = 201 and i.valid = 1")
+//	public Long getOfferCountByEnUU(@Param("venduu") long venduu);
+//
+//	/**
+//	 * 根据供应商UU查询未报价模具询价单数量
+//	 *
+//	 * @param venduu
+//	 * @return
+//	 */
+//	@Query("select count(i) from PurchaseInquiryMould i where i.venduu = :venduu and i.status = 200 and i.valid = 1 and i.overdue = 0")
+//	public Long getNotOfferCountByEnUU(@Param("venduu") long venduu);
+//
+//	/**
+//	 * 根据供应商UU号获取客户模具询价单数量
+//	 *
+//	 * @param venduu
+//	 * @return
+//	 */
+//	@Query("select count(p) from PurchaseInquiryMould p where p.venduu = :venduu")
+//	public long countByVendUU(@Param("venduu") Long venduu);
+//
+//	/**
+//	 * 按询价单供应商企业ID和状态来查询详情 (后面再在视图中查询数目进行统计)
+//	 *
+//	 * @param vendUU
+//	 * @param status
+//	 * @return
+//	 */
+//	@Query("select i from PurchaseInquiryMould i where i.venduu = :venduu and i.status = :status")
+//	List<PurchaseInquiryMould> findByVenduuAndStatus(long venduu, short status);
+//
+//	/**
+//	 * 按询价单的供应商企业ID和询价单状态来统计条数
+//	 *
+//	 * @param vendUU
+//	 * @param status
+//	 * @return
+//	 */
+//	@Query("select count(i) from PurchaseInquiryMould i where i.venduu = :venduu and i.status = :status")
+//	public int getCountByVenduuAndStatus(@Param("venduu") long vendUU, @Param("status") short status);
+//
+//	/**
+//	 * 根据企业UU号查询询价单(明细)总数量
+//	 *
+//	 * @param enUU
+//	 * @return
+//	 */
+//	@Query("select count(*) from PurchaseInquiryMould i where i.enuu = :enuu")
+//	public Long getCountByEnuu(@Param("enuu") long enuu);
+//
+//	/**
+//	 * 根据企业UU号查询询价单(明细)总数量
+//	 *
+//	 * @param enUU
+//	 * @return
+//	 */
+//	@Query("select count(*) from PurchaseInquiryMould i where i.enuu = :enuu and i.endDate is not null and  i.endDate <= :date")
+//	public Long getOverdueCountByEnuuAndDate(@Param("enuu") long enuu, @Param("date") Date date);
+//
+//	/**
+//	 * 通过UU和sendStatus找出PurchaseInquiryMould
+//	 *
+//	 * @param uu
+//	 * @param status
+//	 * @return
+//	 */
+//	public List<PurchaseInquiryMould> findByEnuuAndSendStatus(Long uu, short status);
+//	List<PurchaseInquiryMould> findByEnuuAndBackStatus(Long uu, short value);
+//
+//	/**
+//	 * 通过uu和adoptstatus查找purchaseInquiryMould
+//	 *
+//	 * @param uu
+//	 * @param value
+//	 * @return
+//	 */
+//	public List<PurchaseInquiryMould> findByVenduuAndAdoptStatus(Long uu, short value);
+//
+//	/**
+//	 * 按询价单来源ID更新是否提交状态
+//	 *
+//	 */
+//	@Modifying(clearAutomatically = true)
+//	@Query("update PurchaseInquiryMould p set p.check = :check where p.id IN (:ids)")
+//	public void updateByCheck(@Param("check") short check, @Param("ids") Long[] ids);
+//
+//	/**
+//	 * 根据enuu和erpSourceId获取单据
+//	 *
+//	 * @param venduu
+//	 * @param erpSourceId
+//	 * @return
+//	 */
+//	public PurchaseInquiryMould findByEnuuAndErpSourceId(Long enuu, Long erpSourceId);
+//
+//	/**
+//	 * 获得每种单据状态的未读数量
+//	 *
+//	 * @Param ids 未读单据id
+//	 * @return
+//	 */
+//	@Query("select count(p), p.status from PurchaseInquiryMould p where p.id in :ids and (p.overdue is null or p.overdue = 0) and p.valid = 1 group by p.status")
+//	List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
+//
+//	/**
+//	 * 筛选出已报价单据的id号
+//	 *
+//	 * @param ids
+//	 * @return
+//	 */
+//	@Query("select p.id from PurchaseInquiryMould p where p.id in :ids and p.status=201 and p.adoptStatus is null and p.valid <> 0")
+//	List<Long> findRepliedId(@Param("ids") List<Long> ids);
+//
+//	/**
+//	 * 筛选出待报价单据的id号
+//	 *
+//	 * @param ids
+//	 * @return
+//	 */
+//	@Query("select p.id from PurchaseInquiryMould p where p.id in :ids and p.status=200 and p.adoptStatus is null and p.valid <> 0")
+//	List<Long> findNotReplyId(@Param("ids") List<Long> ids);
+}

+ 9 - 2
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryMould.java

@@ -7,6 +7,8 @@ import com.uas.platform.core.model.Status;
 import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.Set;
 
@@ -20,7 +22,7 @@ import java.util.Set;
  *
  */
 
-@Table(name = "v$purc$inquirymould")
+@Table(name = "purc$inquirymould")
 @Entity
 public class PurchaseInquiryMould implements Serializable {
 
@@ -548,7 +550,12 @@ public class PurchaseInquiryMould implements Serializable {
     }
 
     public Short getOverdue() {
-        return overdue;
+        Calendar c = Calendar.getInstance();
+        c.setTime(endDate);
+        c.set(Calendar.HOUR_OF_DAY, 23);
+        c.set(Calendar.MINUTE, 59);
+        c.set(Calendar.SECOND, 59);
+        return new Date().getTime() > c.getTimeInMillis() ? (short)1 : (short)0;
     }
 
     public void setOverdue(Short overdue) {

+ 623 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryMouldInfo.java

@@ -0,0 +1,623 @@
+package com.uas.platform.b2b.model;
+
+import com.uas.platform.b2b.core.util.DateUtils;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.Status;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Set;
+
+/**
+ * 模具询价
+ *
+ * <pre>
+ * CREATE OR REPLACE FORCE VIEW V$PURC$INQUIRYMOULD
+ * SELECT purc$inquirymould."IM_ID",purc$inquirymould."IM_CODE",purc$inquirymould."IM_CURRENCY", purc$inquirymould."IM_ADOPTSTATUS", purc$inquirymould."IM_AUDITDATE", purc$inquirymould."IM_AUDITOR", purc$inquirymould."IM_DATE", purc$inquirymould."IM_ENDDATE", purc$inquirymould."IM_ENUU", purc$inquirymould."IM_ERPSOURCEID", purc$inquirymould."IM_RECORDDATE", purc$inquirymould."IM_RECORDER",purc$inquirymould."IM_RECORDERID", purc$inquirymould."IM_REMARK", purc$inquirymould."IM_SENDSTATUS", purc$inquirymould."IM_SOURCE", purc$inquirymould."IM_SOURCEID", purc$inquirymould."IM_SOURCETYPE", purc$inquirymould."IM_STATUS", purc$inquirymould."IM_STATUSCODE", purc$inquirymould."IM_TAXRATE", purc$inquirymould."IM_VENDNAME", purc$inquirymould."IM_VENDUU", purc$inquirymould."IM_VALID" ,purc$inquirymould."IM_BACKSTATUS", purc$inquirymould."IM_CHECKED", purc$inquirymould."IM_RECORDERUU", purc$inquirymould."IM_REPLYSENDSTATUS", purc$inquirymould."IM_VENDUSERUU" ,case when trunc(im_enddate) + 1 < sysdate then 1 else 0 end as im_overdue from purc$inquirymould
+ * </pre>
+ *
+ */
+
+@Table(name = "v$purc$inquirymould")
+@Entity
+public class PurchaseInquiryMouldInfo implements Serializable {
+
+    /**
+     * 序列化
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "im_id")
+    private Long id;
+
+    /**
+     * 询价单号
+     */
+    @Column(name = "im_code")
+    private String code;
+
+    /**
+     * 日期
+     */
+    @Column(name = "im_date")
+    private Date date;
+
+    /**
+     * 供应商UU
+     */
+    @NotNull
+    @Column(name = "im_venduu")
+    private Long venduu;
+
+    /**
+     * 供应商名称
+     */
+    @Column(name = "im_vendname")
+    private String vendName;
+
+    /**
+     * 供应商企业信息
+     */
+    @OneToOne(cascade = {CascadeType.MERGE, CascadeType.REFRESH})
+    @JoinColumn(name = "im_venduu", insertable = false, updatable = false)
+    private EnterpriseInfo vend;
+
+    /**
+     * 供应商联系人uu
+     */
+    @Column(name = "im_venduseruu")
+    private Long vendUserUU;
+
+    /**
+     * 供应商联系人
+     */
+    @OneToOne(cascade = {CascadeType.MERGE, CascadeType.REFRESH})
+    @JoinColumn(name = "im_venduseruu", insertable = false, updatable = false)
+    private UserBaseInfo vendUser;
+
+    /**
+     * 币别
+     */
+    @Column(name = "im_currency")
+    private String currency;
+
+    /**
+     * 税率
+     */
+    @Column(name = "im_taxrate")
+    private Float taxrate;
+
+    /**
+     * 备注
+     */
+    @Column(name = "im_remark")
+    private String remark;
+
+    /**
+     * 单据状态
+     */
+    @Column(name = "im_status")
+    private Short status;
+
+    /**
+     * 所属企业uu
+     */
+    @NotNull
+    @Column(name = "im_enuu")
+    private Long enuu;
+
+    /**
+     * 当前用户UU
+     */
+    @Column(name = "im_useruu")
+    private Long useruu;
+
+    /**
+     * 所属企业
+     */
+    @OneToOne(cascade = {CascadeType.MERGE, CascadeType.REFRESH})
+    @JoinColumn(name = "im_enuu", insertable = false, updatable = false)
+    private EnterpriseInfo enterprise;
+
+    /**
+     * 来源id
+     */
+    @Column(name = "im_sourceid")
+    private Long sourceId;
+
+    /**
+     * 来源单号
+     */
+    @Column(name = "im_source")
+    private String sourceCode;
+
+    /**
+     * 来源类型
+     */
+    @Column(name = "im_sourcetype")
+    private String sourceType;
+
+    /**
+     * 状态编号
+     */
+    @Column(name = "im_statuscode")
+    private String statusCode;
+
+    /**
+     * 审核人
+     */
+    @Column(name = "im_auditor")
+    private String auditor;
+
+    /**
+     * 审核日期
+     */
+    @Column(name = "im_auditdate")
+    private Date auditDate;
+
+    /**
+     * 录入人
+     */
+    @Column(name = "im_recorder")
+    private String recorder;
+
+    /**
+     * 录入日期
+     */
+    @Column(name = "im_recorddate")
+    private Date recordDate;
+
+    /**
+     * erp报价单传入日期
+     */
+    @Column(name = "im_erpindate")
+    private Date erpInDate;
+
+    /**
+     * 录入人ID
+     */
+    @Column(name = "im_recorderuu")
+    private Long recorderuu;
+
+    /**
+     * 报价日期
+     */
+    @Column(name = "im_replydate")
+    private Date replyDate;
+
+    /**
+     * 报价截止日期
+     */
+    @Column(name = "im_enddate")
+    private Date endDate;
+
+    /**
+     * 采纳状态(已采纳为1,待采纳为0)
+     */
+    @Column(name = "im_adoptstatus")
+    private Short adoptStatus;
+
+    /**
+     * 上传状态(待上传202、已下载203)
+     */
+    @Column(name = "im_sendstatus")
+    private Short sendStatus;
+
+    /**
+     * (针对买家的)报价信息传输状态{待上传、已下载}
+     */
+    @Column(name = "im_backstatus")
+    private Short backStatus;
+
+    /**
+     * (针对卖家的)报价信息传输状态{待上传、已下载}
+     */
+    @Column(name = "im_replysendstatus")
+    private Short replySendStatus;
+
+    /**
+     * 客户已提交(1为已提交,0为未提交)
+     */
+    @Column(name = "im_checked")
+    private Short check;
+
+    /**
+     * (针对卖家的)是否采纳信息传输状态{待上传、已下载}
+     */
+    @Column(name = "im_decidestatus")
+    private Short decideStatus;
+
+    /**
+     * 是否有效(0无效,1有效)
+     */
+    @Column(name = "im_valid")
+    private Short valid;
+
+    /**
+     * 买家附件
+     */
+    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
+    @JoinTable(name = "purc$inquirymouldattach", joinColumns = @JoinColumn(name = "im_id", referencedColumnName = "im_id"), inverseJoinColumns = @JoinColumn(name = "at_id", referencedColumnName = "at_id"))
+    private Set<Attach> attachs;
+
+    /**
+     * 卖家附件
+     */
+    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
+    @JoinTable(name = "purc$inquirymouldsellattach", joinColumns = @JoinColumn(name = "im_id", referencedColumnName = "im_id"), inverseJoinColumns = @JoinColumn(name = "at_id", referencedColumnName = "at_id"))
+    private Set<Attach> sellAttachs;
+
+    /**
+     * erp sourceId
+     */
+    @Column(name = "im_erpsourceid")
+    private Long erpSourceId;
+
+    /**
+     * 询价明细
+     */
+    @OneToMany(mappedBy = "inquiryMould", cascade = {CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE,
+            CascadeType.MERGE}, fetch = FetchType.EAGER)
+    @OrderBy("detno")
+    private Set<PurchaseInquiryMouldItem> inquiryMouldItems;
+
+    /**
+     * 是否过期(0未过期,1已过期)(表中的im_overdue字段只是search项目过滤时报错时建立,无实际意义也不会赋值,
+     * 只是用于搜索项目对是否已过期的判断,这里使用视图中的im_overdue来做其他操作)
+     */
+    @Column(name = "im_overdue", insertable = false, updatable = false)
+    private Short overdue;
+
+    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 Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public Long getVenduu() {
+        return venduu;
+    }
+
+    public void setVenduu(Long venduu) {
+        this.venduu = venduu;
+    }
+
+    public EnterpriseInfo getVend() {
+        return vend;
+    }
+
+    public void setVend(EnterpriseInfo vend) {
+        this.vend = vend;
+    }
+
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Short getStatus() {
+        return status;
+    }
+
+    public void setStatus(Short status) {
+        this.status = status;
+    }
+
+    public Short getBackStatus() {
+        return backStatus;
+    }
+
+    public void setBackStatus(Short backStatus) {
+        this.backStatus = backStatus;
+    }
+
+    public Short getReplySendStatus() {
+        return replySendStatus;
+    }
+
+    public void setReplySendStatus(Short replySendStatus) {
+        this.replySendStatus = replySendStatus;
+    }
+
+    public Short getCheck() {
+        return check;
+    }
+
+    public void setCheck(Short check) {
+        this.check = check;
+    }
+
+    public Long getEnuu() {
+        return enuu;
+    }
+
+    public void setEnuu(Long enuu) {
+        this.enuu = enuu;
+    }
+
+    public Long getUseruu() {
+        return useruu;
+    }
+
+    public void setUseruu(Long useruu) {
+        this.useruu = useruu;
+    }
+
+    public EnterpriseInfo getEnterprise() {
+        return enterprise;
+    }
+
+    public void setEnterprise(EnterpriseInfo enterprise) {
+        this.enterprise = enterprise;
+    }
+
+    public Long getSourceId() {
+        return sourceId;
+    }
+
+    public void setSourceId(Long sourceId) {
+        this.sourceId = sourceId;
+    }
+
+    public String getSourceCode() {
+        return sourceCode;
+    }
+
+    public void setSourceCode(String sourceCode) {
+        this.sourceCode = sourceCode;
+    }
+
+    public String getSourceType() {
+        return sourceType;
+    }
+
+    public void setSourceType(String sourceType) {
+        this.sourceType = sourceType;
+    }
+
+    public String getStatusCode() {
+        return statusCode;
+    }
+
+    public void setStatusCode(String statusCode) {
+        this.statusCode = statusCode;
+    }
+
+    public String getAuditor() {
+        return auditor;
+    }
+
+    public void setAuditor(String auditor) {
+        this.auditor = auditor;
+    }
+
+    public Date getAuditDate() {
+        return auditDate;
+    }
+
+    public void setAuditDate(Date auditDate) {
+        this.auditDate = auditDate;
+    }
+
+    public String getRecorder() {
+        return recorder;
+    }
+
+    public void setRecorder(String recorder) {
+        this.recorder = recorder;
+    }
+
+    public Date getRecordDate() {
+        return recordDate;
+    }
+
+    public Date getErpInDate() {
+        return erpInDate;
+    }
+
+    public void setErpInDate(Date erpInDate) {
+        this.erpInDate = erpInDate;
+    }
+
+    public void setRecordDate(Date recordDate) {
+        this.recordDate = recordDate;
+    }
+
+    public Long getRecorderuu() {
+        return recorderuu;
+    }
+
+    public void setRecorderuu(Long recorderuu) {
+        this.recorderuu = recorderuu;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public Date getReplyDate() {
+        return replyDate;
+    }
+
+    public void setReplyDate(Date replyDate) {
+        this.replyDate = replyDate;
+    }
+
+    public Short getAdoptStatus() {
+        return adoptStatus;
+    }
+
+    public void setAdoptStatus(Short adoptStatus) {
+        this.adoptStatus = adoptStatus;
+    }
+
+    public Short getSendStatus() {
+        return sendStatus;
+    }
+
+    public void setSendStatus(Short sendStatus) {
+        this.sendStatus = sendStatus;
+    }
+
+    public Set<Attach> getAttachs() {
+        return attachs;
+    }
+
+    public void setAttachs(Set<Attach> attachs) {
+        this.attachs = attachs;
+    }
+
+    public Set<Attach> getSellAttachs() {
+        return sellAttachs;
+    }
+
+    public void setSellAttachs(Set<Attach> sellAttachs) {
+        this.sellAttachs = sellAttachs;
+    }
+
+    public Long getErpSourceId() {
+        return erpSourceId;
+    }
+
+    public void setErpSourceId(Long erpSourceId) {
+        this.erpSourceId = erpSourceId;
+    }
+
+    public String getVendName() {
+        return vendName;
+    }
+
+    public void setVendName(String vendName) {
+        this.vendName = vendName;
+    }
+
+    public Long getVendUserUU() {
+        return vendUserUU;
+    }
+
+    public void setVendUserUU(Long vendUserUU) {
+        this.vendUserUU = vendUserUU;
+    }
+
+    public Float getTaxrate() {
+        return taxrate;
+    }
+
+    public void setTaxrate(Float taxrate) {
+        this.taxrate = taxrate;
+    }
+
+    public Short getOverdue() {
+        return overdue;
+    }
+
+    public void setOverdue(Short overdue) {
+        this.overdue = overdue;
+    }
+
+    public Short getValid() {
+        return valid;
+    }
+
+    public void setValid(Short valid) {
+        this.valid = valid;
+    }
+
+    public Short getDecideStatus() {
+        return decideStatus;
+    }
+
+    public void setDecideStatus(Short decideStatus) {
+        this.decideStatus = decideStatus;
+    }
+
+    public Set<PurchaseInquiryMouldItem> getInquiryMouldItems() {
+        return inquiryMouldItems;
+    }
+
+    public void setInquiryMouldItems(Set<PurchaseInquiryMouldItem> inquiryMouldItems) {
+        this.inquiryMouldItems = inquiryMouldItems;
+    }
+
+    public UserBaseInfo getVendUser() {
+        return vendUser;
+    }
+
+    public void setVendUser(UserBaseInfo vendUser) {
+        this.vendUser = vendUser;
+    }
+
+    /**
+     * 是否可报价
+     * <p>
+     * 1.未报价,未截止报价
+     * </p>
+     * <p>
+     * 2.已报价,未截止报价,客户未提交
+     * </p>
+     *
+     * @return
+     */
+    public boolean isReplyable() {
+        if (this.getEndDate() != null) {
+            return DateUtils.compare(this.getEndDate(), new Date(), DateUtils.COMPARE_DAY) >= 0
+                    && (this.status == Status.NOT_REPLY.value() || (this.status == Status.REPLIED.value()
+                    && (this.getCheck() == null || this.getCheck() != Constant.YES)
+                    && this.adoptStatus == null));
+        }
+        return this.status == Status.NOT_REPLY.value();
+    }
+
+}

+ 48 - 5
src/main/java/com/uas/platform/b2b/search/SearchService.java

@@ -1,14 +1,57 @@
 package com.uas.platform.b2b.search;
 
-import com.uas.sso.entity.UserSpaceDetail;
-import com.uas.sso.entity.UserSpaceView;
-import com.uas.sso.support.Page;
 import com.uas.platform.b2b.erp.model.B2BCustomer;
 import com.uas.platform.b2b.erp.model.B2BVendor;
 import com.uas.platform.b2b.erp.model.SaleTenderErp;
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.model.Component;
+import com.uas.platform.b2b.model.DeputyOrder;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.InvitationRecord;
+import com.uas.platform.b2b.model.Kind;
+import com.uas.platform.b2b.model.MakeAccept;
+import com.uas.platform.b2b.model.MakeOrder;
+import com.uas.platform.b2b.model.MakeOrderChangeItem;
+import com.uas.platform.b2b.model.MakeReturn;
+import com.uas.platform.b2b.model.PagingReleaseDetail;
+import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.ProductUsers;
+import com.uas.platform.b2b.model.PublicInquiryItemInfo;
+import com.uas.platform.b2b.model.PurcInquiry;
+import com.uas.platform.b2b.model.PurcInquiryItemInfo;
+import com.uas.platform.b2b.model.PurchaseAccept;
+import com.uas.platform.b2b.model.PurchaseApBill;
+import com.uas.platform.b2b.model.PurchaseApBillOut;
+import com.uas.platform.b2b.model.PurchaseApCheck;
+import com.uas.platform.b2b.model.PurchaseBadIn;
+import com.uas.platform.b2b.model.PurchaseBadOut;
+import com.uas.platform.b2b.model.PurchaseForecastAll;
+import com.uas.platform.b2b.model.PurchaseInquiryItem;
+import com.uas.platform.b2b.model.PurchaseInquiryMouldInfo;
+import com.uas.platform.b2b.model.PurchaseMRB;
+import com.uas.platform.b2b.model.PurchaseNotice;
+import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderChange;
+import com.uas.platform.b2b.model.PurchaseOrderDone;
+import com.uas.platform.b2b.model.PurchaseOrderEnd;
+import com.uas.platform.b2b.model.PurchaseOrderReceived;
+import com.uas.platform.b2b.model.PurchaseOrderTodo;
+import com.uas.platform.b2b.model.PurchaseOrderWaiting;
+import com.uas.platform.b2b.model.PurchaseProofingApproval;
+import com.uas.platform.b2b.model.PurchaseProofingItem;
+import com.uas.platform.b2b.model.PurchaseProofingSend;
+import com.uas.platform.b2b.model.PurchaseReturn;
+import com.uas.platform.b2b.model.PurchaseTender;
+import com.uas.platform.b2b.model.SaleARCheck;
+import com.uas.platform.b2b.model.SaleQuotationAll;
+import com.uas.platform.b2b.model.SaleQuotationDone;
+import com.uas.platform.b2b.model.SaleSendAll;
+import com.uas.platform.b2b.model.SaleTenderQuestion;
+import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
 import com.uas.search.b2b.model.PageParams;
 import com.uas.search.b2b.model.SPage;
+import com.uas.sso.entity.UserSpaceView;
+import com.uas.sso.support.Page;
 
 import java.util.List;
 import java.util.Map;
@@ -237,7 +280,7 @@ public interface SearchService {
 	 * @param pageParams
 	 * @return
 	 */
-	public SPage<PurchaseInquiryMould> searchPurcInquiryMouldIds(String keyword, PageParams pageParams);
+	public SPage<PurchaseInquiryMouldInfo> searchPurcInquiryMouldIds(String keyword, PageParams pageParams);
 
 	/**
 	 * 招标单

+ 6 - 4
src/main/java/com/uas/platform/b2b/search/SearchServiceImpl.java

@@ -135,7 +135,7 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	private PurchaseApCheckDao purchaseApCheckDao;
 
 	@Autowired
-	private PurchaseInquiryMouldDao purchaseInquiryMouldDao;
+	private PurchaseInquiryMouldInfoDao purchaseInquiryMouldInfoDao;
 
 	@Autowired
 	private ProductDao productDao;
@@ -197,6 +197,8 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	@Autowired
 	private SaleTenderQuestionDao saleTenderQuestionDao;
 
+
+
 	/**
 	 * 联想词size
 	 */
@@ -660,10 +662,10 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	 * 模具询价单: purc$inquirymould
 	 */
 	@Override
-	public SPage<PurchaseInquiryMould> searchPurcInquiryMouldIds(String keyword, PageParams pageParams) {
+	public SPage<PurchaseInquiryMouldInfo> searchPurcInquiryMouldIds(String keyword, PageParams pageParams) {
 		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.PURC$INQUIRYMOULD, pageParams);
-		List<PurchaseInquiryMould> content = purchaseInquiryMouldDao.findAll(idsPage.getContent());
-		sortByProperty(content, PurchaseInquiryMould.class, "id", idsPage.getContent());
+		List<PurchaseInquiryMouldInfo> content = purchaseInquiryMouldInfoDao.findAll(idsPage.getContent());
+		sortByProperty(content, PurchaseInquiryMouldInfo.class, "id", idsPage.getContent());
 		return toSPage(idsPage, content);
 	}
 

+ 2 - 2
src/main/java/com/uas/platform/b2b/service/PurchaseInquiryMouldService.java

@@ -52,7 +52,7 @@ public interface PurchaseInquiryMouldService {
 	 *            查找关键词
 	 * @return
 	 */
-	public SPage<PurchaseInquiryMould> findAllByPageInfo(PageInfo pageInfo, String keyword, SearchFilter filter);
+	public SPage<PurchaseInquiryMouldInfo> findAllByPageInfo(PageInfo pageInfo, String keyword, SearchFilter filter);
 
 	/**
 	 * 用询价单ID查找询价单
@@ -200,7 +200,7 @@ public interface PurchaseInquiryMouldService {
 	 * @param inquiryMouldId
 	 * @return
 	 */
-	public List<PurchaseInquiryMould> findHistoryById(Long inquiryMouldId);
+	public List<PurchaseInquiryMouldInfo> findHistoryById(Long inquiryMouldId);
 
 	/**
 	 * 根据id获取物料详细

+ 10 - 7
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryMouldServiceImpl.java

@@ -43,6 +43,9 @@ public class PurchaseInquiryMouldServiceImpl implements PurchaseInquiryMouldServ
 	@Autowired
 	private PurchaseInquiryMouldDao purchaseInquiryMouldDao;
 
+	@Autowired
+	private PurchaseInquiryMouldInfoDao purchaseInquiryMouldInfoDao;
+
 	@Autowired
 	private PurchaseInquiryMouldItemDao purchaseInquiryMouldItemDao;
 	
@@ -399,12 +402,12 @@ public class PurchaseInquiryMouldServiceImpl implements PurchaseInquiryMouldServ
 	}
 
 	@Override
-	public SPage<PurchaseInquiryMould> findAllByPageInfo(final PageInfo pageInfo, final String keyword,
+	public SPage<PurchaseInquiryMouldInfo> findAllByPageInfo(final PageInfo pageInfo, final String keyword,
 														 final SearchFilter filter) {
-		SPage<PurchaseInquiryMould> spage = new SPage<>();
-		Page<PurchaseInquiryMould> purchaseInquiryMoulds = purchaseInquiryMouldDao.findAll(new Specification<PurchaseInquiryMould>() {
+		SPage<PurchaseInquiryMouldInfo> spage = new SPage<>();
+		Page<PurchaseInquiryMouldInfo> purchaseInquiryMoulds = purchaseInquiryMouldInfoDao.findAll(new Specification<PurchaseInquiryMouldInfo>() {
 			@Override
-			public Predicate toPredicate(Root<PurchaseInquiryMould> root, CriteriaQuery<?> query,
+			public Predicate toPredicate(Root<PurchaseInquiryMouldInfo> root, CriteriaQuery<?> query,
 					CriteriaBuilder builder) {
 				if (filter != null) {
 					if (!CollectionUtils.isEmpty(filter.getDistribute()))
@@ -420,7 +423,7 @@ public class PurchaseInquiryMouldServiceImpl implements PurchaseInquiryMouldServ
 					ModelMap map = new ModelMap();
 					map.put("im_venduu", SystemSession.getUser().getEnterprise().getUu());
 					pageParams.setFilters(map);
-					for (PurchaseInquiryMould list : searchService.searchPurcInquiryMouldIds(keyword, pageParams)
+					for (PurchaseInquiryMouldInfo list : searchService.searchPurcInquiryMouldIds(keyword, pageParams)
 							.getContent()) {
 						lists.add(list.getId());
 					}
@@ -438,7 +441,7 @@ public class PurchaseInquiryMouldServiceImpl implements PurchaseInquiryMouldServ
 	}
 
 	@Override
-	public List<PurchaseInquiryMould> findHistoryById(Long inquiryMouldId) {
+	public List<PurchaseInquiryMouldInfo> findHistoryById(Long inquiryMouldId) {
 		PurchaseInquiryMould mould = purchaseInquiryMouldDao.findOne(inquiryMouldId);
 		if (mould != null) {
 			final PageInfo pageInfo = new PageInfo(1, 3, 1);
@@ -446,7 +449,7 @@ public class PurchaseInquiryMouldServiceImpl implements PurchaseInquiryMouldServ
 			// pageInfo.filter("productId", item.getProductId());
 			pageInfo.filter("status", (short) Status.REPLIED.value());
 			pageInfo.sorting("date", Direction.DESC);
-			SPage<PurchaseInquiryMould> page = findAllByPageInfo(pageInfo, null, null);
+			SPage<PurchaseInquiryMouldInfo> page = findAllByPageInfo(pageInfo, null, null);
 			return page.getContent();
 		}
 		return null;