Browse Source

更新平台新增采购询价相关

hejq 7 years ago
parent
commit
db3bd039cf

+ 9 - 3
src/main/java/com/uas/platform/b2b/listener/GlobalExceptionHandler.java

@@ -13,6 +13,9 @@ import com.uas.platform.core.util.AgentUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.apache.http.protocol.HTTP;
 import org.apache.http.protocol.HTTP;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ControllerAdvice;
@@ -71,7 +74,7 @@ public class GlobalExceptionHandler {
      */
      */
     @ResponseBody
     @ResponseBody
     @ExceptionHandler(value = Exception.class)
     @ExceptionHandler(value = Exception.class)
-    public HttpServletResponse defaultErrorHandler(HttpServletRequest request, Exception e, HttpServletResponse response) throws UnsupportedEncodingException {
+    public ResponseEntity<String> defaultErrorHandler(HttpServletRequest request, Exception e, HttpServletResponse response) throws UnsupportedEncodingException {
         String jsonStr = JSON.toJSONString(e.getStackTrace());
         String jsonStr = JSON.toJSONString(e.getStackTrace());
         List<ExceptionMsg> msgList = FlexJsonUtils.fromJsonArray(jsonStr, ExceptionMsg.class);
         List<ExceptionMsg> msgList = FlexJsonUtils.fromJsonArray(jsonStr, ExceptionMsg.class);
         List<ExceptionMsg> msgs = new ArrayList<>();
         List<ExceptionMsg> msgs = new ArrayList<>();
@@ -87,10 +90,13 @@ public class GlobalExceptionHandler {
         }
         }
         String access = request.getParameter(signatureParam);
         String access = request.getParameter(signatureParam);
         String data = request.getParameter(dataParam);
         String data = request.getParameter(dataParam);
-        ErrorLog log = logDao.save(new ErrorLog(JSON.toJSONString(msgs), e.toString(), url, e.getCause() == null ? "" : e.getCause().getMessage()));
+        String errMsg = e.getCause() == null ? "" : e.getCause().getMessage();
+        ErrorLog log = logDao.save(new ErrorLog(JSON.toJSONString(msgs), e.toString(), url, errMsg));
         if (!StringUtils.isEmpty(log.getId())) {
         if (!StringUtils.isEmpty(log.getId())) {
             detailDao.save(new ErrorLogDetail(log.getId(), AgentUtils.getIp(request), needRead, StringUtils.isEmpty(data) ? "" : URLDecoder.decode(data, HTTP.UTF_8), access));
             detailDao.save(new ErrorLogDetail(log.getId(), AgentUtils.getIp(request), needRead, StringUtils.isEmpty(data) ? "" : URLDecoder.decode(data, HTTP.UTF_8), access));
         }
         }
-        return response;
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Content-Type", "application/text; charset=utf-8");
+        return new ResponseEntity(e.getMessage(), headers, HttpStatus.INTERNAL_SERVER_ERROR);
     }
     }
 }
 }

+ 2 - 244
src/main/java/com/uas/platform/b2b/listener/MessageListener.java

@@ -1,27 +1,14 @@
 package com.uas.platform.b2b.listener;
 package com.uas.platform.b2b.listener;
 
 
-import com.alibaba.fastjson.JSON;
 import com.uas.message.mail.service.MailService;
 import com.uas.message.mail.service.MailService;
-import com.uas.platform.b2b.core.util.DateFormatUtils;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.dao.*;
-import com.uas.platform.b2b.erp.model.UserAndEnterprise;
-import com.uas.platform.b2b.event.*;
+import com.uas.platform.b2b.event.SaveReleaseEvent;
 import com.uas.platform.b2b.mobile.service.MobileReleaseService;
 import com.uas.platform.b2b.mobile.service.MobileReleaseService;
-import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.MessageConf;
 import com.uas.platform.b2b.support.MessageConf;
-import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.b2b.temporary.model.SmsMessage;
-import com.uas.platform.core.model.Constant;
-import com.uas.platform.core.util.HttpUtil;
-import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.ApplicationListener;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.util.*;
-import java.util.regex.Pattern;
 
 
 /**
 /**
  * 监听新增数据事件
  * 监听新增数据事件
@@ -74,235 +61,6 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
     @Async
     @Async
     @Override
     @Override
     public void onApplicationEvent(final SaveReleaseEvent<?, ?> event) {
     public void onApplicationEvent(final SaveReleaseEvent<?, ?> event) {
-        List<PagingReleaseDetail> pagingReleaseDetails = (List<PagingReleaseDetail>) event.release();
-        List<PagingReleaseDetail> otherReleaseDetails = new ArrayList<>(); // 用来保存单据新增的其他消息
-        // ERP公共询价比较特殊,单独处理
-        if (event instanceof PurcInquirySaveReleaseEvent) {
-            for (PagingReleaseDetail detail : pagingReleaseDetails) {
-                PurcInquiryItem item = purcInquiryItemDao.findOne(detail.getPagingRelease().getSourceId());
-                if (null != item) {
-                    //先取出企业uu
-                    // 产品库存在
-                    String prodSql = "select distinct pr_enuu enuu from products where (pr_title = '" + item.getProduct().getTitle() +
-                            "' or pr_code = '" + item.getProduct().getCode() + "') and pr_enuu <> " + item.getInquiry().getEnUU();
-                    // 询价单已报价的
-                    String inquirySql = "select distinct id_venduu enuu from purc$inquiryitems d left join purc$inquiry n " +
-                            "on n.in_id = d.id_inid left join products p on p.pr_id = d.id_prid where d.id_status = 201 " +
-                            "and (p.pr_title = '" + item.getProduct().getTitle() + "' or p.pr_code = '" + item.getProduct().getCode()
-                            +"') and n.in_enuu = " + item.getInquiry().getEnUU();
-                    // 下过采购订单的
-                    String orderSql = "select distinct pu_venduu enuu from purc$orders pu left join purc$orderitems pd " +
-                            "on pu.pu_id = pd.pd_puid left join products p on p.pr_id = pd.pd_prid " +
-                            "where (p.pr_title = '" + item.getProduct().getTitle() + "' or p.pr_code = '" + item.getProduct().getCode()
-                            +"') and pu.pu_enuu = " + item.getInquiry().getEnUU();
-                    // 主动报价过的
-                    String quotationSql = "select distinct qu_enuu enuu from sale$quotation qu left join sale$quotationitem qd" +
-                            " on qu.qu_id = qd.qd_quid left join products p on qd.qd_prid = p.pr_id " +
-                            "where (p.pr_title = '" + item.getProduct().getTitle() + "' or p.pr_code = '" + item.getProduct().getCode()
-                            +"') and qu.qu_custuu = " + item.getInquiry().getEnUU();
-                    List<UserAndEnterprise> prodEnUUs = commonDao.query(prodSql, UserAndEnterprise.class);
-                    List<UserAndEnterprise> inquiryEnUUs = commonDao.query(inquirySql, UserAndEnterprise.class);
-                    List<UserAndEnterprise> orderEnUUs = commonDao.query(orderSql, UserAndEnterprise.class);
-                    List<UserAndEnterprise> quotationEnUUs = commonDao.query(quotationSql, UserAndEnterprise.class);
-                    Set<UserAndEnterprise> enuus = new HashSet<UserAndEnterprise>();
-                    Set<Long> enUUs = new HashSet<Long>();
-                    enuus.addAll(prodEnUUs);
-                    enuus.addAll(inquiryEnUUs);
-                    enuus.addAll(orderEnUUs);
-                    enuus.addAll(quotationEnUUs);
-                    // enuus存在才进行人员选择
-                    if (enuus.size() > 0) {
-                        for (UserAndEnterprise enter : enuus) {
-                            if (!enUUs.contains(enter.getEnuu())) {
-                                List<UserAndEnterprise> useruus = new ArrayList<UserAndEnterprise>();
-                                // 先查询客户分配
-                                String sql = "select distinct(purc$distribute.pd_useruu) useruu from purc$distribute left join purc$vendors " +
-                                        "on purc$distribute.pd_vdid = purc$vendors.ve_id where purc$vendors.ve_myenuu = " + item.getInquiry().getEnUU() +
-                                        " and purc$vendors.ve_vendenuu = " + enter.getEnuu() + " and purc$distribute.pd_useruu in " +
-                                        "(select user_uu from sec$userenterprise where sec$userenterprise.en_uu = " + enter.getEnuu() + ")" +
-                                        "and  purc$distribute.pd_useruu in (select user_uu from sec$userrole where role_id =(select role_id from " +
-                                        "sec$roles where role_enuu = " + enter.getEnuu() + " and role_desc = '业务员'))";
-                                List<UserAndEnterprise> uus = commonDao.query(sql, UserAndEnterprise.class);
-                                if(!CollectionUtils.isEmpty(uus)) {
-                                    for(UserAndEnterprise uu : uus) {// 再查询单个物料的分配情况
-                                        String countS = "select count(1) from product$users left join products on product$users.pu_prid = products.pr_id" +
-                                                " where product$users.pu_useruu = " + uu.getUseruu() + " and product$users.pu_enuu = " + enter.getEnuu() +
-                                                " and (products.pr_code = '" + item.getProduct().getCode() + "' or products.pr_title = '" + item.getProduct().getTitle() + "')";
-                                        Integer count = commonDao.queryForObject(countS, Integer.class);
-                                        if(count > 0)
-                                            useruus.add(uu);
-                                    }
-                                }
-                                if (CollectionUtils.isEmpty(useruus)) {// 如果分配的业务员没有相关物料的信息,再分配给企业的分配客户的业务员
-                                    useruus = uus;
-                                    if (CollectionUtils.isEmpty(useruus)) {// 以上两种情况都没有直接发送给管理员
-                                        useruus = commonDao.query(
-                                                "select en_adminuu useruu from sec$enterprises where en_uu = " + enter.getEnuu(),
-                                                UserAndEnterprise.class);
-                                    }
-                                }
-                                // 新增消息
-                                for (UserAndEnterprise userAndEnterprise : useruus) {
-                                    Long userUU = userAndEnterprise.getUseruu();
-                                    try { //去除userUU为空值的情况
-                                        if (null != userUU) {
-                                            User user = userDao.findOne(userUU);
-                                            if (null != user) {
-                                                PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(enter.getEnuu(), userUU, user.getUserName());
-                                                pagingReleaseDetail.setPagingRelease(detail.getPagingRelease());
-                                                otherReleaseDetails.add(pagingReleaseDetail);
-
-                                                // 发送邮件
-                                                Map<String, Object> model = new HashMap<String, Object>();
-                                                Enterprise vendor = enterpriseDao.findOne(enter.getEnuu());
-                                                model.put("vendorname", null != vendor.getEnName() ? vendor.getEnName() : "供应商");
-                                                model.put("custname", null != item.getInquiry().getEnterprise() ? item.getInquiry().getEnterprise().getEnName() : "");
-                                                model.put("code", item.getInquiry().getCode());
-                                                model.put("date", DateFormatUtils.DATE_FORMAT.format(new Date()));
-                                                if(null != user.getUserEmail() && user.getUserEmail().matches(emailRegex))
-                                                    try {
-                                                        mailService.send(messageConf.getTplInquiryForB2B(), user.getUserEmail(), model);
-                                                    } catch (Exception e) {
-                                                        e.printStackTrace();
-                                                    }
-                                            }
-                                        }
-                                    } catch (RuntimeException e) {
-                                        e.printStackTrace();
-                                    }
-                                }
-                                enUUs.add(enter.getEnuu());
-                            }
-                        }
-                    }
-                }
-            }
-            // 公共询价消息暂时不采用手机推送
-            pagingReleaseDetailDao.save(otherReleaseDetails);
-            // 询价单单独处理 优先发送给分配过客户的用户,如果不存在就发送给企业管理员
-        } else if (event instanceof PurchaseInquiryItemSaveReleaseEvent || event instanceof PurchaseInquiryItemInvalidReleaseEvent || event instanceof PurchaseInquiryItemDecideReleaseEvent) {
-            for (PagingReleaseDetail detail : pagingReleaseDetails) {
-                Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
-                PagingRelease release = detail.getPagingRelease();
-                if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
-                    List<Vendor> vendors;
-                    // 判断提前,防止客户方收到过多单据提示消息
-                    vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
-                    // 不添加供应商联系人
-                    // 查找被分配客户的业务员
-                    if (!CollectionUtils.isEmpty(vendors)) {
-                        Long vendorId = vendors.get(0).getId();
-                        List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
-                        List<Role> roles = roleDao.findByEnUUAndDesc(detail.getVendUU(), "业务员");
-                        if (!CollectionUtils.isEmpty(roles) && !CollectionUtils.isEmpty(distributes)) {
-                            List<User> salesmans = userDao.findByRole(roles.get(0).getId());
-                            Set<Long> salesManUUs = new HashSet<>();
-                            for (User salesman : salesmans) {
-                                salesManUUs.add(salesman.getUserUU());
-                            }
-                            for (Distribute distribute : distributes) {
-                                if (!userUUs.contains(distribute.getUserUU()) && salesManUUs.contains(distribute.getUserUU())) {
-                                    userUUs.add(distribute.getUserUU());
-                                }
-                            }
-                        }
-                    }
-                    // 新增消息
-                    if (!CollectionUtils.isEmpty(userUUs)) {
-                        for (Long userUU : userUUs) {
-                            try { //去除userUU为空值的情况
-                                if (null != userUU) {
-                                    User user = userDao.findOne(userUU);
-                                    if (null != user) {
-                                        PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
-                                        pagingReleaseDetail.setPagingRelease(release);
-                                        otherReleaseDetails.add(pagingReleaseDetail);
-                                    }
-                                }
-                            } catch (RuntimeException e) {
-                                e.getStackTrace();
-                            }
-                        }
-                    } else {
-                        Enterprise vendor = enterpriseDao.findOne(detail.getVendUU());
-                        if (null != vendor && null != vendor.getEnAdminuu()) {
-                            User admin = userDao.findOne(vendor.getEnAdminuu());
-                            PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), vendor.getEnAdminuu(), admin.getUserName());
-                            pagingReleaseDetail.setPagingRelease(release);
-                            otherReleaseDetails.add(pagingReleaseDetail);
-                        }
-                    }
-                }
-            }
-            otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
-            if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
-                pagingReleaseDetails.addAll(otherReleaseDetails);
-            }
-            try { // 推送消息
-                mobileReleaseService.pushReleases(pagingReleaseDetails);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        } else {
-            for (PagingReleaseDetail detail : pagingReleaseDetails) {
-                Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
-                PagingRelease release = detail.getPagingRelease();
-                if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
-                    if (release.getToVendor() == Constant.YES) { // 如果是发给供应商的消息,才会管理员和有权限用户都可以收到消息--2017年8月24日 16:12:05加,避免客户方用户收到太多消息
-                        List<Vendor> vendors;
-                        // 判断提前,防止客户方收到过多单据提示消息
-                        vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
-                        // 查找有权限的用户
-                        if (!CollectionUtils.isEmpty(vendors)) {
-                            Long vendorId = vendors.get(0).getId();
-                            List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
-                            if (!CollectionUtils.isEmpty(distributes)) {
-                                // 找出当前企业拥有管理员权限的角色
-                                List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
-                                Set<Long> adminUUs = new HashSet<>();
-                                if (!CollectionUtils.isEmpty(roles)) {
-                                    List<User> admins = userDao.findByRole(roles.get(0).getId());
-                                    for (User admin : admins) {
-                                        adminUUs.add(admin.getUserUU());
-                                    }
-                                }
-                                // 被分配客户的,且不是管理员的用户才接收消息
-                                for (Distribute distribute : distributes) {
-                                    if (!userUUs.contains(distribute.getUserUU()) && !adminUUs.contains(distribute.getUserUU())) {
-                                        userUUs.add(distribute.getUserUU());
-                                    }
-                                }
-                            }
-                        }
-                        // 新增消息
-                        for (Long userUU : userUUs) {
-                            try { //去除userUU为空值的情况
-                                if (null != userUU) {
-                                    User user = userDao.findOne(userUU);
-                                    if (null != user) {
-                                        PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
-                                        pagingReleaseDetail.setPagingRelease(release);
-                                        otherReleaseDetails.add(pagingReleaseDetail);
-                                    }
-                                }
-                            } catch (RuntimeException e) {
-                                e.getStackTrace();
-                            }
-                        }
-                    } else { // 发送给客户方的,直接添加消息到保存列表
-                        otherReleaseDetails.add(detail);
-                    }
-                }
-            }
-            otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
-            if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
-                pagingReleaseDetails.addAll(otherReleaseDetails);
-            }
-            try { // 推送消息
-                mobileReleaseService.pushReleases(pagingReleaseDetails);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
+       // TODO 消息已在消息中心
     }
     }
 }
 }

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

@@ -14,7 +14,7 @@ import java.util.*;
  */
  */
 @Entity
 @Entity
 @Table(name = "purc$puinquiryitems")
 @Table(name = "purc$puinquiryitems")
-public class PurcInquiryItem extends AbstractOrderProduct {
+public class PurcInquiryItem {
 
 
 	@Id
 	@Id
 	@GeneratedValue(strategy = GenerationType.AUTO)
 	@GeneratedValue(strategy = GenerationType.AUTO)
@@ -302,12 +302,10 @@ public class PurcInquiryItem extends AbstractOrderProduct {
 		this.userUU = userUU;
 		this.userUU = userUU;
 	}
 	}
 
 
-	@Override
 	public Long getProductId() {
 	public Long getProductId() {
 		return productId;
 		return productId;
 	}
 	}
 
 
-	@Override
 	public void setProductId(Long productId) {
 	public void setProductId(Long productId) {
 		this.productId = productId;
 		this.productId = productId;
 	}
 	}

+ 4 - 4
src/main/java/com/uas/platform/b2b/model/PurchaseInquiryDetail.java

@@ -83,25 +83,25 @@ public class PurchaseInquiryDetail {
 	/**
 	/**
 	 * 物料名称
 	 * 物料名称
 	 */
 	 */
-	@Column(name = "id_prtitle")
+	@Column(name = "pr_title")
 	private String productTitle;
 	private String productTitle;
 
 
 	/**
 	/**
 	 * 物料编号
 	 * 物料编号
 	 */
 	 */
-	@Column(name = "id_prcode")
+	@Column(name = "pr_code")
 	private String productCode;
 	private String productCode;
 
 
 	/**
 	/**
 	 * 物料规格
 	 * 物料规格
 	 */
 	 */
-	@Column(name = "id_prspec", length = 1000)
+	@Column(name = "pr_spec", length = 1000)
 	private String productSpec;
 	private String productSpec;
 
 
 	/**
 	/**
 	 * 物料单位
 	 * 物料单位
 	 */
 	 */
-	@Column(name = "id_prunit")
+	@Column(name = "pr_unit")
 	private String productUnit;
 	private String productUnit;
 
 
 	/**
 	/**

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

@@ -18,7 +18,7 @@ import java.util.*;
  */
  */
 @Table(name = "purc$inquiryitems", indexes = { @Index(name = "id_status_idx", columnList = "id_status")} )
 @Table(name = "purc$inquiryitems", indexes = { @Index(name = "id_status_idx", columnList = "id_status")} )
 @Entity
 @Entity
-public class PurchaseInquiryItem {
+public class PurchaseInquiryItem extends AbstractOrderProduct {
 
 
 	@Id
 	@Id
 	@GeneratedValue(strategy = GenerationType.AUTO)
 	@GeneratedValue(strategy = GenerationType.AUTO)
@@ -68,42 +68,12 @@ public class PurchaseInquiryItem {
 	@Column(name = "id_usercode")
 	@Column(name = "id_usercode")
 	private String userCode;
 	private String userCode;
 
 
-	/**
-	 * 物料
-	 */
-	@Transient
-	private ProductInfo product;
-
 	/**
 	/**
 	 * 物料ID
 	 * 物料ID
 	 */
 	 */
 	@Column(name = "id_prid")
 	@Column(name = "id_prid")
 	private Long productId;
 	private Long productId;
 
 
-	/**
-	 * 物料名称
-	 */
-	@Column(name = "id_prtitle")
-	private String productTitle;
-
-	/**
-	 * 物料编号
-	 */
-	@Column(name = "id_prcode")
-	private String productCode;
-
-	/**
-	 * 物料规格
-	 */
-	@Column(name = "id_prspec", length = 1000)
-	private String productSpec;
-
-	/**
-	 * 物料单位
-	 */
-	@Column(name = "id_prunit")
-	private String productUnit;
-
 	/**
 	/**
 	 * 币种
 	 * 币种
 	 */
 	 */
@@ -358,61 +328,16 @@ public class PurchaseInquiryItem {
 		this.inquiry = inquiry;
 		this.inquiry = inquiry;
 	}
 	}
 
 
-	public ProductInfo getProduct() {
-		if (product == null) {
-			product = new ProductInfo();
-			product.setId(productId);
-			product.setTitle(productTitle);
-			product.setCode(productCode);
-			product.setSpec(productSpec);
-			product.setUnit(productUnit);
-		}
-		return product;
-	}
-
-	public void setProduct(ProductInfo product) {
-		if (product != null) {
-			this.productId = product.getId();
-			this.productTitle = product.getTitle();
-			this.productCode = product.getCode();
-			this.productSpec = product.getSpec();
-			this.productUnit = product.getUnit();
-		}
-		this.product = product;
-	}
-
+	@Override
 	public Long getProductId() {
 	public Long getProductId() {
 		return productId;
 		return productId;
 	}
 	}
 
 
+	@Override
 	public void setProductId(Long productId) {
 	public void setProductId(Long productId) {
 		this.productId = productId;
 		this.productId = productId;
 	}
 	}
 
 
-	public String getProductTitle() {
-		return productTitle;
-	}
-
-	public void setProductTitle(String productTitle) {
-		this.productTitle = productTitle;
-	}
-
-	public String getProductCode() {
-		return productCode;
-	}
-
-	public void setProductCode(String productCode) {
-		this.productCode = productCode;
-	}
-
-	public String getProductSpec() {
-		return productSpec;
-	}
-
-	public void setProductSpec(String productSpec) {
-		this.productSpec = productSpec;
-	}
-
 	public String getCurrency() {
 	public String getCurrency() {
 		return currency;
 		return currency;
 	}
 	}

+ 82 - 130
src/main/java/com/uas/platform/b2b/service/impl/PurcInquiryServiceImpl.java

@@ -8,7 +8,6 @@ import com.uas.platform.b2b.event.PurchaseInquiryItemSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.model.ProductInfo;
 import com.uas.platform.b2b.model.ProductInfo;
 import com.uas.platform.b2b.ps.InquiryUtils;
 import com.uas.platform.b2b.ps.InquiryUtils;
-import com.uas.platform.b2b.ps.ProductUtils;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.PurcInquiryService;
 import com.uas.platform.b2b.service.PurcInquiryService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.SystemSession;
@@ -21,6 +20,7 @@ import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.model.Status;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.map.HashedMap;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -38,6 +38,12 @@ import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import javax.persistence.criteria.Root;
 import java.util.*;
 import java.util.*;
 
 
+/**
+ * 采购询价
+ *
+ * @author hejq
+ * @date 2018-07-24 10:21
+ */
 @Service
 @Service
 public class PurcInquiryServiceImpl implements PurcInquiryService {
 public class PurcInquiryServiceImpl implements PurcInquiryService {
 
 
@@ -134,52 +140,13 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
                     if (!CollectionUtils.isEmpty(inquiryInfo.getInquiryItems())) {
                     if (!CollectionUtils.isEmpty(inquiryInfo.getInquiryItems())) {
                         for (PurcInquiryItem purcitem : inquiryInfo.getInquiryItems()) {
                         for (PurcInquiryItem purcitem : inquiryInfo.getInquiryItems()) {
                             PurcInquiryItem item = new PurcInquiryItem();
                             PurcInquiryItem item = new PurcInquiryItem();
-                            ProductInfo productInfo = new ProductInfo();
                             Enterprise vendorEn = enterpriseDao.findEnterpriseByUu(contact.getEnuu());
                             Enterprise vendorEn = enterpriseDao.findEnterpriseByUu(contact.getEnuu());
                             // 点击选择出来的,一般带有id
                             // 点击选择出来的,一般带有id
-                            if (purcitem.getProductId() != null) {
-                                Product product = productDao.findOne(purcitem.getProductId());
-                                BeanUtils.copyProperties(product, productInfo, ProductInfo.class);
-                                item.setProduct(productInfo);
-                                item.setProductId(product.getId());
-                                // 导入或手动输入的一般不带有id
-                            } else {
-                                List<Product> products = productDao.findByEnUUAndPcmpcodeAndPbrand(
-                                        SystemSession.getUser().getEnterprise().getUu(), purcitem.getCmpCode(), purcitem.getBrand());
-                                Product product = new Product();
-                                if (products.size() > 0) {
-                                    product = products.get(0);
-                                }
-                                // 存在直接选择
-                                if (product.getId() != null) {
-                                    BeanUtils.copyProperties(product, productInfo, ProductInfo.class);
-                                    item.setProduct(productInfo);
-                                    item.setProductId(productInfo.getId());
-                                } else { // 不存在,插入物料
-                                    product = new Product();
-                                    product.setBrand(purcitem.getInbrand());
-                                    product.setCmpCode(purcitem.getCmpCode());
-                                    product.setSourceApp(SOURCERAPP);
-                                    product.setCode(purcitem.getProdCode());
-                                    product.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-                                    product.setTitle(purcitem.getProdTitle());
-                                    product.setCmpUuId(purcitem.getProdCode());
-                                    product.setUnit(purcitem.getUnit());
-                                    product.setUserUU(SystemSession.getUser().getUserUU());
-                                    // 导入的物料这里没有填写规格
-                                    product.setSpec(purcitem.getProdTitle());
-                                    product.setCreateTime(new Date(System.currentTimeMillis()));
-                                    Long proId = ProductUtils.updateOne(product);
-                                    BeanUtils.copyProperties(product, productInfo, ProductInfo.class);
-                                    item.setProduct(productInfo);
-                                    item.setProductId(proId);
-                                }
-                            }
+                            BeanUtils.copyProperties(purcitem, item, PurcInquiryItem.class);
                             item.setInquiry(inquiry);
                             item.setInquiry(inquiry);
                             item.setNumber(i);
                             item.setNumber(i);
                             item.setCurrency(contact.getCurrency());
                             item.setCurrency(contact.getCurrency());
                             item.setFromDate(new Date(System.currentTimeMillis()));
                             item.setFromDate(new Date(System.currentTimeMillis()));
-                            item.setToDate(purcitem.getToDate());
                             // 币别为RMB税率16,其他税率为0
                             // 币别为RMB税率16,其他税率为0
                             if (contact.getRate() != null) {
                             if (contact.getRate() != null) {
                                 item.setTaxrate(contact.getRate());
                                 item.setTaxrate(contact.getRate());
@@ -190,12 +157,10 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
                                     item.setTaxrate((float) 0);
                                     item.setTaxrate((float) 0);
                                 }
                                 }
                             }
                             }
-                            item.setRemark(purcitem.getRemark());
                             item.setVendUU(contact.getEnuu());
                             item.setVendUU(contact.getEnuu());
                             item.setStatus((short) Status.NOT_REPLY.value());
                             item.setStatus((short) Status.NOT_REPLY.value());
                             item.setVendUserUU(vendorEn.getEnAdminuu());
                             item.setVendUserUU(vendorEn.getEnAdminuu());
                             item.setIsOpen(inquiryInfo.getIsOpen());
                             item.setIsOpen(inquiryInfo.getIsOpen());
-                            item.setNeedquantity(purcitem.getNeedquantity());
                             items.add(item);
                             items.add(item);
                             i++;
                             i++;
                         }
                         }
@@ -227,17 +192,17 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
     @Override
     @Override
     public ModelMap sumbit(Long id) {
     public ModelMap sumbit(Long id) {
         ModelMap map = new ModelMap();
         ModelMap map = new ModelMap();
-        Long enuu = SystemSession.getUser().getEnterprise().getUu();
-        Long useruu = SystemSession.getUser().getUserUU();
+        Enterprise enterprise = SystemSession.getUser().getEnterprise();
+        User user = SystemSession.getUser();
         PurcInquiry inquiry = inquiryDao.findOne(id);
         PurcInquiry inquiry = inquiryDao.findOne(id);
         PurchaseInquiry saleInquiry = new PurchaseInquiry();
         PurchaseInquiry saleInquiry = new PurchaseInquiry();
         saleInquiry.setDate(new Date());
         saleInquiry.setDate(new Date());
         saleInquiry.setCode(inquiry.getCode());
         saleInquiry.setCode(inquiry.getCode());
-        saleInquiry.setEnUU(enuu);
-        saleInquiry.setEnterprise(enterpriseDao.findEnterpriseInfoByUu(enuu));
-        saleInquiry.setRecorder(SystemSession.getUser().getUserName());
-        saleInquiry.setRecorderUU(useruu);
-        saleInquiry.setAuditor(SystemSession.getUser().getUserName());
+        saleInquiry.setEnUU(enterprise.getUu());
+        saleInquiry.setEnterprise(enterpriseDao.findEnterpriseInfoByUu(enterprise.getUu()));
+        saleInquiry.setRecorder(user.getUserName());
+        saleInquiry.setRecorderUU(user.getUserUU());
+        saleInquiry.setAuditor(user.getUserName());
         saleInquiry.setSourceApp(SOURCERAPP);
         saleInquiry.setSourceApp(SOURCERAPP);
         saleInquiry.setSourceId(id);
         saleInquiry.setSourceId(id);
         saleInquiry.setInvoice(inquiry.getInvoice());
         saleInquiry.setInvoice(inquiry.getInvoice());
@@ -278,6 +243,8 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
                 saleItem.setSourceId(item.getId());
                 saleItem.setSourceId(item.getId());
                 saleItem.setCurrency(item.getCurrency());
                 saleItem.setCurrency(item.getCurrency());
                 saleItem.setNeedquantity(item.getNeedquantity());
                 saleItem.setNeedquantity(item.getNeedquantity());
+                ProductInfo productInfo = setProductInfo(item);
+                saleItem.setProduct(productInfo);
                 Set<PurchaseInquiryReply> replies = new HashSet<PurchaseInquiryReply>();
                 Set<PurchaseInquiryReply> replies = new HashSet<PurchaseInquiryReply>();
                 PurchaseInquiryReply reply = new PurchaseInquiryReply();
                 PurchaseInquiryReply reply = new PurchaseInquiryReply();
                 reply.setLapQty((double) 0);
                 reply.setLapQty((double) 0);
@@ -294,7 +261,7 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
             inquiry.setEnteryStatus(Status.ENABLED.value());
             inquiry.setEnteryStatus(Status.ENABLED.value());
             inquiryDao.save(inquiry);
             inquiryDao.save(inquiry);
             saveUserOrders(purcitems);
             saveUserOrders(purcitems);
-            logger.log("询价单", "平台提交询价单", useruu, SystemSession.getUser().getIp());
+            logger.log("询价单", "平台提交询价单", user.getUserUU(), user.getIp());
             map.put("success", "询价单提交成功");
             map.put("success", "询价单提交成功");
         } else {
         } else {
             map.put("error", "询价单提交失败");
             map.put("error", "询价单提交失败");
@@ -302,6 +269,24 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
         return map;
         return map;
     }
     }
 
 
+    /**
+     * 将询价物料信息赋值给采购询价物料信息
+     *
+     * @param item
+     * @return
+     */
+    private ProductInfo setProductInfo(PurcInquiryItem item) {
+        ProductInfo productInfo = new ProductInfo();
+        productInfo.setSpec(item.getSpec());
+        productInfo.setCode(item.getProdCode());
+        productInfo.setCmpCode(item.getCmpCode());
+        productInfo.setBrand(item.getInbrand());
+        productInfo.setId(item.getProductId());
+        productInfo.setUnit(item.getUnit());
+        productInfo.setTitle(item.getProdTitle());
+        return productInfo;
+    }
+
     /**
     /**
      * 保存
      * 保存
      *
      *
@@ -393,6 +378,7 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
         pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
         pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
         pageInfo.filter("enteryStatus", Status.UNAPPLY.value());
         pageInfo.filter("enteryStatus", Status.UNAPPLY.value());
         return inquiryDao.findAll(new Specification<PurcInquiry>() {
         return inquiryDao.findAll(new Specification<PurcInquiry>() {
+            @Override
             public Predicate toPredicate(Root<PurcInquiry> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
             public Predicate toPredicate(Root<PurcInquiry> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
                 return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
                 return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
             }
             }
@@ -405,6 +391,7 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
         pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
         pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
         pageInfo.filter("enteryStatus", Status.ENABLED.value());
         pageInfo.filter("enteryStatus", Status.ENABLED.value());
         return inquiryDao.findAll(new Specification<PurcInquiry>() {
         return inquiryDao.findAll(new Specification<PurcInquiry>() {
+            @Override
             public Predicate toPredicate(Root<PurcInquiry> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
             public Predicate toPredicate(Root<PurcInquiry> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
                 return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
                 return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
             }
             }
@@ -454,7 +441,8 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
         ModelMap map = new ModelMap();
         ModelMap map = new ModelMap();
         if (old == null) {
         if (old == null) {
             Set<Attach> attachs = new HashSet<Attach>();
             Set<Attach> attachs = new HashSet<Attach>();
-            if (uploadItem.getFile() != null) {// 附件存在
+            // 附件存在
+            if (uploadItem.getFile() != null) {
                 Attach attach = attachService.upload(uploadItem, "productAttach", "平台询价上传传物料照片或附件");
                 Attach attach = attachService.upload(uploadItem, "productAttach", "平台询价上传传物料照片或附件");
                 if (attach == null) {
                 if (attach == null) {
                     map.put("error", "文件太大");
                     map.put("error", "文件太大");
@@ -465,7 +453,7 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
             }
             }
             Long enuu = SystemSession.getUser().getEnterprise().getUu();
             Long enuu = SystemSession.getUser().getEnterprise().getUu();
             Long useruu = SystemSession.getUser().getUserUU();
             Long useruu = SystemSession.getUser().getUserUU();
-            if (inquiryInfo.getId() == null) {// 新增
+            if (inquiryInfo.getId() == null) {
                 BeanUtils.copyProperties(inquiryInfo, inquiry, PurcInquiry.class);
                 BeanUtils.copyProperties(inquiryInfo, inquiry, PurcInquiry.class);
                 inquiry.setRecorder(SystemSession.getUser().getUserName());
                 inquiry.setRecorder(SystemSession.getUser().getUserName());
                 inquiry.setRecorderUU(SystemSession.getUser().getUserUU());
                 inquiry.setRecorderUU(SystemSession.getUser().getUserUU());
@@ -480,59 +468,13 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
                 if (!CollectionUtils.isEmpty(inquiryInfo.getInquiryItems())) {
                 if (!CollectionUtils.isEmpty(inquiryInfo.getInquiryItems())) {
                     for (PurcInquiryItem purcitem : inquiryInfo.getInquiryItems()) {
                     for (PurcInquiryItem purcitem : inquiryInfo.getInquiryItems()) {
                         PurcInquiryItem item = new PurcInquiryItem();
                         PurcInquiryItem item = new PurcInquiryItem();
-                        Product product = new Product();
-                        ProductInfo productInfo = new ProductInfo();
-                        // 点击选择出来的,一般带有id
-                        if (purcitem.getProductId() != null) {
-                            product = productDao.findOne(purcitem.getProductId());
-                            BeanUtils.copyProperties(product, productInfo, ProductInfo.class);
-                            item.setProduct(productInfo);
-                            item.setProductId(productInfo.getId());
-                        } else {// 导入或手动输入的一般不带有id
-                            List<Product> productList = productDao.findByEnUUAndPcmpcodeAndPbrand(
-                                    SystemSession.getUser().getEnterprise().getUu(), purcitem.getCmpCode(),
-                                    purcitem.getInbrand());
-                            product = CollectionUtils.isEmpty(productList) ? null : productList.get(0);
-                            // 存在直接选择
-                            if (product != null) {
-                                BeanUtils.copyProperties(product, productInfo, ProductInfo.class);
-                                item.setProduct(productInfo);
-                                item.setProductId(productInfo.getId());
-                            } else { // 不存在,插入物料
-                                product = new Product();
-                                product.setBrand(purcitem.getInbrand());
-                                product.setCmpCode(purcitem.getCmpCode());
-                                product.setSourceApp(SOURCERAPP);
-                                product.setCode(purcitem.getProdCode());
-                                product.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-                                product.setTitle(purcitem.getProdTitle());
-                                product.setCmpUuId(purcitem.getProdCode());
-                                product.setUnit(purcitem.getUnit());
-                                product.setUserUU(SystemSession.getUser().getUserUU());
-                                product.setSpec(purcitem.getProdTitle());
-                                Long proId = ProductUtils.updateOne(product);
-                                product = productDao.findOne(proId);
-                                item.setProdCode(purcitem.getProdCode());
-                                item.setProdTitle(purcitem.getProdTitle());
-                                item.setSpec(purcitem.getSpec());
-                                item.setCmpCode(purcitem.getCmpCode());
-                                item.setInbrand(purcitem.getInbrand());
-                                if (null != product) {
-                                    BeanUtils.copyProperties(product, productInfo, ProductInfo.class);
-                                    item.setProduct(productInfo);
-                                    item.setProductId(proId);
-                                }
-                            }
-                        }
+                        BeanUtils.copyProperties(purcitem, item, PurcInquiryItem.class);
                         item.setNumber(i);
                         item.setNumber(i);
                         item.setCurrency(inquiry.getCurrency());
                         item.setCurrency(inquiry.getCurrency());
-                        item.setFromDate(new Date());
-                        item.setToDate(purcitem.getToDate());
-                        item.setDate(new Date());
-                        item.setRemark(purcitem.getRemark());
+                        item.setFromDate(new Date(System.currentTimeMillis()));
+                        item.setDate(new Date(System.currentTimeMillis()));
                         item.setStatus((short) Status.NOT_REPLY.value());
                         item.setStatus((short) Status.NOT_REPLY.value());
                         item.setIsOpen(inquiryInfo.getIsOpen());
                         item.setIsOpen(inquiryInfo.getIsOpen());
-                        item.setNeedquantity(purcitem.getNeedquantity());
                         item.setUserUU(SystemSession.getUser().getUserUU());
                         item.setUserUU(SystemSession.getUser().getUserUU());
                         item.setUserName(SystemSession.getUser().getUserName());
                         item.setUserName(SystemSession.getUser().getUserName());
                         item.setUserTel(SystemSession.getUser().getUserTel());
                         item.setUserTel(SystemSession.getUser().getUserTel());
@@ -558,7 +500,7 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
     public ModelMap saveAndSubmitWithoutVendor(PurcInquiryInfo inquiryInfo, FileUpload uploadItem) throws Exception {
     public ModelMap saveAndSubmitWithoutVendor(PurcInquiryInfo inquiryInfo, FileUpload uploadItem) throws Exception {
         ModelMap map = new ModelMap();
         ModelMap map = new ModelMap();
         // 先进行保存
         // 先进行保存
-        Object inquiryId = saveWithoutVendor(inquiryInfo, uploadItem).get("id");// 取出id进行更新状态
+        Object inquiryId = saveWithoutVendor(inquiryInfo, uploadItem).get("id");
         if (inquiryId != null) {
         if (inquiryId != null) {
             map.put("success", "询价单发布成功");
             map.put("success", "询价单发布成功");
         } else {
         } else {
@@ -621,40 +563,48 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
             inquiryInfo.setShip(inquiry.getShip());
             inquiryInfo.setShip(inquiry.getShip());
             inquiryInfo.setInvoice(inquiry.getInvoice());
             inquiryInfo.setInvoice(inquiry.getInvoice());
             inquiryInfo.setInquirytype(inquiry.getInquirytype());
             inquiryInfo.setInquirytype(inquiry.getInquirytype());
-            Set<Long> ids = new HashSet<Long>();
-            List<Long> idStrings = new ArrayList<>();
-            Set<InquiryProductInfo> products = new HashSet<InquiryProductInfo>();
-            if (!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
+            // 这里需要修改成用物料编号去判断了,因为可能物料id已经不存在了
+            Map<String, InquiryProductInfo> productInfoMap = distinctProdCode(inquiry.getInquiryItems());
+            Set<InquiryProductInfo> products = new HashSet<>();
+            for (Map.Entry<String, InquiryProductInfo> map : productInfoMap.entrySet()) {
+                InquiryProductInfo productInfo = map.getValue();
+                Set<PurchaseInquiryItemInfo> items = new HashSet<>();
                 for (PurchaseInquiryItemInfo item : inquiry.getInquiryItems()) {
                 for (PurchaseInquiryItemInfo item : inquiry.getInquiryItems()) {
-                    idStrings.add(item.getProductId());
-                    ids.addAll(idStrings);
-                }
-            }
-            if (!CollectionUtils.isEmpty(ids)) {
-                for (Long idInfo : ids) {
-                    InquiryProductInfo productInfo = new InquiryProductInfo();
-                    Set<PurchaseInquiryItemInfo> items = new HashSet<PurchaseInquiryItemInfo>();
-                    Product product = productDao.findOne(idInfo);
-                    productInfo.setBrand(product.getBrand());
-                    productInfo.setId(product.getId());
-                    productInfo.setSpec(product.getSpec());
-                    productInfo.setCode(product.getCode());
-                    productInfo.setTitle(product.getTitle());
-                    productInfo.setUnit(product.getUnit());
-                    for (PurchaseInquiryItemInfo item : inquiry.getInquiryItems()) {
-                        if (item.getProductId().equals(idInfo)) {
-                            items.add(item);
-                        }
+                    if (item.getProductCode().equals(map.getKey())) {
+                        items.add(item);
                     }
                     }
-                    productInfo.setInquiryItems(items);
-                    products.add(productInfo);
-                    inquiryInfo.setProducts(products);
                 }
                 }
+                productInfo.setInquiryItems(items);
+                products.add(productInfo);
+                inquiryInfo.setProducts(products);
             }
             }
         }
         }
         return inquiryInfo;
         return inquiryInfo;
     }
     }
 
 
+
+    /**
+     * 获取物料编号信息
+     *
+     * @param inquiryItems 询价明细
+     * @return
+     */
+    private Map<String, InquiryProductInfo> distinctProdCode(Set<PurchaseInquiryItemInfo> inquiryItems) {
+        Map<String, InquiryProductInfo> productInfoMap = new HashedMap();
+        for (PurchaseInquiryItemInfo itemInfo : inquiryItems) {
+            InquiryProductInfo productInfo = new InquiryProductInfo();
+            productInfo.setBrand(itemInfo.getProductBrand());
+            productInfo.setCmpCode(itemInfo.getProductCmpCode());
+            productInfo.setCode(itemInfo.getProductCode());
+            productInfo.setSpec(itemInfo.getProductSpec());
+            productInfo.setTitle(itemInfo.getProductTitle());
+            productInfo.setUnit(itemInfo.getProductUnit());
+            productInfo.setId(itemInfo.getProductId());
+            productInfoMap.put(itemInfo.getProductCode(), productInfo);
+        }
+        return productInfoMap;
+    }
+
     @Override
     @Override
     public ModelMap releaseByWorkbook(Workbook workbook) {
     public ModelMap releaseByWorkbook(Workbook workbook) {
         ModelMap modelMap = new ModelMap();
         ModelMap modelMap = new ModelMap();
@@ -662,10 +612,12 @@ public class PurcInquiryServiceImpl implements PurcInquiryService {
         List<PurcInquiryProductInfo> infos = new ArrayList<PurcInquiryProductInfo>();
         List<PurcInquiryProductInfo> infos = new ArrayList<PurcInquiryProductInfo>();
         Sheet sheet = workbook.getSheetAt(0);
         Sheet sheet = workbook.getSheetAt(0);
         int rowNum = sheet.getLastRowNum();
         int rowNum = sheet.getLastRowNum();
+        // 录入的值起始行
+        int valueNum = 3;
         Row headerRow = sheet.getRow(0);
         Row headerRow = sheet.getRow(0);
         int total = 0;
         int total = 0;
         if (headerRow != null) {
         if (headerRow != null) {
-            for (int r = 3; r <= rowNum; r++) {
+            for (int r = valueNum; r <= rowNum; r++) {
                 Row row = sheet.getRow(r);
                 Row row = sheet.getRow(r);
                 if (row != null && row.getCell(0) != null && row.getCell(1).getCellType() != Cell.CELL_TYPE_BLANK) {
                 if (row != null && row.getCell(0) != null && row.getCell(1).getCellType() != Cell.CELL_TYPE_BLANK) {
                     total++;
                     total++;

+ 3 - 3
src/main/webapp/resources/tpl/index/purc/inquiry.html

@@ -505,9 +505,9 @@ margin-left: 55px;
 		</tr>
 		</tr>
 		<tr class="order-bd">
 		<tr class="order-bd">
 			<td class="product">
 			<td class="product">
-				<div class="text-num text-bold" ng-bind="::inquiryItem.product.code"></div>
-				<div ng-bind="::inquiryItem.product.title"></div>
-				<div class="text-muted" ng-bind="::inquiryItem.product.spec"></div>
+				<div class="text-num text-bold" ng-bind="::inquiryItem.product.code || inquiryItem.prodCode"></div>
+				<div ng-bind="::inquiryItem.product.title || inquiryItem.prodTitle"></div>
+				<div class="text-muted" ng-bind="::inquiryItem.product.spec || inquiryItem.spec"></div>
 				<div ng-if="inquiryItem.inquiry.attachs.length" class="text-muted">
 				<div ng-if="inquiryItem.inquiry.attachs.length" class="text-muted">
 					<i class="fa fa-paperclip fa-fw" style="color: #ffa340; font-size: 18px;"></i>附件:<a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>
 					<i class="fa fa-paperclip fa-fw" style="color: #ffa340; font-size: 18px;"></i>附件:<a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>
 				</div>
 				</div>

+ 2 - 2
src/main/webapp/resources/tpl/index/purc/inquiry_new.html

@@ -1139,7 +1139,7 @@
     </form>
     </form>
     <div class="pro-add-data02" style="min-height: 500px;" >
     <div class="pro-add-data02" style="min-height: 500px;" >
         <div class="pro-search">
         <div class="pro-search">
-            <div class="col-xs-2 search-title fl">我的料库</div>
+            <div class="col-xs-2 search-title fl">我的料库</div>
             <div class="col-xs-8 fr">
             <div class="col-xs-8 fr">
                 <div class="col-xs-9 search" style="margin-right: 0;">
                 <div class="col-xs-9 search" style="margin-right: 0;">
                     <input type="text" placeholder="输入物料关键字查询" ng-model="keyword" ng-search="onSearch(keyword)"/>
                     <input type="text" placeholder="输入物料关键字查询" ng-model="keyword" ng-search="onSearch(keyword)"/>
@@ -1151,7 +1151,7 @@
         <table class="block table table-default table-striped" ng-table="tableParams">
         <table class="block table table-default table-striped" ng-table="tableParams">
             <thead>
             <thead>
             <tr class="header">
             <tr class="header">
-                <th width="160px">号</th>
+                <th width="160px">物料编号</th>
                 <th width="120px">名称</th>
                 <th width="120px">名称</th>
                 <th>规格</th>
                 <th>规格</th>
                 <th width="120px">单位</th>
                 <th width="120px">单位</th>

+ 4 - 10
src/main/webapp/resources/tpl/index/purc/inquiry_unapply.html

@@ -380,13 +380,13 @@
 			<td class="product">
 			<td class="product">
 				<div class="text-num inquiry-number" ng-class="{'key': item.key&&inquiry.$showAll}" title="第{{::item.number+1}}行">{{::item.number + 1}}</div>
 				<div class="text-num inquiry-number" ng-class="{'key': item.key&&inquiry.$showAll}" title="第{{::item.number+1}}行">{{::item.number + 1}}</div>
 				<div class="text-num text-bold">
 				<div class="text-num text-bold">
-					<span ng-bind="::item.product.code"></span>
+					<span ng-bind="::item.prodCode"></span>
 				</div>
 				</div>
 				<div>
 				<div>
-					<span ng-bind="::item.product.title"></span>
+					<span ng-bind="::item.prodTitle"></span>
 				</div>
 				</div>
 				<div class="text-muted"
 				<div class="text-muted"
-					ng-bind="::item.product.spec"></div>
+					ng-bind="::item.spec"></div>
 				<div class="text-muted text-bold" ng-if="item.currency"><span ng-bind="::item.currency"></span></div>
 				<div class="text-muted text-bold" ng-if="item.currency"><span ng-bind="::item.currency"></span></div>
 			</td>
 			</td>
 			<td class="text-center">
 			<td class="text-center">
@@ -394,7 +394,7 @@
 			</td>
 			</td>
 			<td class="text-center">
 			<td class="text-center">
 				<div class="text-num" ng-bind="::item.qty"></div>
 				<div class="text-num" ng-bind="::item.qty"></div>
-				<div class="text-muted" ng-bind="::item.product.unit"></div>
+				<div class="text-muted" ng-bind="::item.unit"></div>
 				<div style="margin: 0 auto" ng-if="item.$editing">
 				<div style="margin: 0 auto" ng-if="item.$editing">
 					<input type="number" ng-model="item.reply.qty" min="0" max="{{item.qty}}"
 					<input type="number" ng-model="item.reply.qty" min="0" max="{{item.qty}}"
 						ng-init="item.reply.qty=item.qty-item.replyQty"
 						ng-init="item.reply.qty=item.qty-item.replyQty"
@@ -404,12 +404,6 @@
 			<td class="text-center br-l">
 			<td class="text-center br-l">
 				<div class="text-num" ng-bind="::item.toDate | date:'yyyy-MM-dd'"></div>
 				<div class="text-num" ng-bind="::item.toDate | date:'yyyy-MM-dd'"></div>
 			</td>
 			</td>
-			<!--<td class="br-l">
-				<div style="margin: 0 auto" ng-if="item.$editing">
-					<br><br><input type="text" ng-model="item.reply.remark"
-						class="form-control input-xs" placeholder="回复备注" />
-				</div>
-			</td>-->
 			<td ng-bind="::item.enterprise.enName" colspan="2"></td>
 			<td ng-bind="::item.enterprise.enName" colspan="2"></td>
 			<td class="text-center"><a ng-click="deleteById(item.id)"  ng-if="inquiry.enteryStatus != 313">删除</a></td>
 			<td class="text-center"><a ng-click="deleteById(item.id)"  ng-if="inquiry.enteryStatus != 313">删除</a></td>
 		</tr>
 		</tr>