Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java
scr 7 years ago
parent
commit
09969b0882

+ 14 - 0
src/main/java/com/uas/ps/inquiry/AccessConfiguration.java

@@ -23,6 +23,20 @@ public class AccessConfiguration {
     @Value("${ps.message.url}")
     private String PsMessageUrl;
 
+    /**
+     * 公共物料访问地址
+     */
+    @Value("${mall.url}")
+    private String mallUrl;
+
+    public String getMallUrl() {
+        return mallUrl;
+    }
+
+    public void setMallUrl(String mallUrl) {
+        this.mallUrl = mallUrl;
+    }
+
     public String getPsProductUrl() {
         return PsProductUrl;
     }

+ 9 - 0
src/main/java/com/uas/ps/inquiry/controller/PublicInquiryController.java

@@ -491,4 +491,13 @@ public class PublicInquiryController {
         logger.log("公共询价", "获取询价信息", "id: " + itemId, Constant.UU, enuu, InquirySource.B2B.name());
         return publicInquiryService.findItemByItemId(itemId, enuu);
     }
+
+    /**
+     * 公共询价单明细总数
+     * @return
+     */
+    @RequestMapping(value = "/getPurcInquiryItemCount", method = RequestMethod.GET)
+    public ModelMap getPurcInquiryItemCount() {
+        return publicInquiryService.getPurcInquiryItemCount();
+    }
 }

+ 13 - 0
src/main/java/com/uas/ps/inquiry/entity/MessageModel.java

@@ -69,6 +69,19 @@ public class MessageModel {
      */
     private String consumerApp;
 
+    /**
+     * 询价方信息
+     */
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
     public String getType() {
         return type;
     }

+ 6 - 2
src/main/java/com/uas/ps/inquiry/service/PublicInquiryService.java

@@ -247,8 +247,6 @@ public interface PublicInquiryService {
      */
     Page<MessageModel> adoptMessage(PublicInquiryItem item, String sourceApp);
 
-
-
     /**
      * 针对买家,通知买家供应商已报价
      *
@@ -257,5 +255,11 @@ public interface PublicInquiryService {
      * @return
      */
     Page<MessageModel> ReceiveMessage(PublicInquiryItem item, String sourceApp);
+
+    /**
+     * 公共询价单明细总数
+     * @return
+     */
+    ModelMap getPurcInquiryItemCount();
 }
 

+ 314 - 98
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -16,6 +16,7 @@ import com.uas.ps.inquiry.model.*;
 import com.uas.ps.inquiry.page.PageInfo;
 import com.uas.ps.inquiry.page.SearchFilter;
 import com.uas.ps.inquiry.page.criteria.*;
+import com.uas.ps.inquiry.page.exception.IllegalOperatorException;
 import com.uas.ps.inquiry.service.PublicInquiryService;
 import com.uas.ps.inquiry.support.InquiryBufferedLogger;
 import com.uas.ps.inquiry.util.*;
@@ -65,7 +66,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     private PurcInquiryItemInfoDao inquiryItemInfoDao;
 
     @Autowired
-    private PublicInquiryItemInfoDao  itemInfoDao;
+    private PublicInquiryItemInfoDao itemInfoDao;
 
     @Autowired
     private PublicInquiryItemDao publicInquiryItemDao;
@@ -89,16 +90,32 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      */
     private final String SOURCERAPP = "B2B";
 
+
     /**
      * 消息类型 (在B2B消息中拼接跳转单据详情url请求时需要)
      */
     private final String INQUIRY_TYPE = "公共询价";
 
+    /**
+     * 消息类型 (在B2B消息中拼接跳转单据详情url请求时需要)
+     */
+    private final String INQUIRY_TYPE_MALL = "MALL公共询价";
+
+    /**
+     * 消息类型 (在MALL消息中拼接求购询价待报价)
+     */
+    private final String INQUIRY_TYPE_SELLER_MALL = "MALL跳转卖家待报价页面";
+
     /**
      * 消息类型,公共询价的采纳结果
      */
     private final String INQUIRY_DECIDE_TYPE = "公共询价采纳结果";
 
+    /**
+     * 消息类型,公共询价的采纳结果
+     */
+    private final String INQUIRY_DECIDE_TYPE_MALL = "商城公共询价采纳结果";
+
     /**
      * 询价种类
      */
@@ -132,7 +149,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     /**
      * 接收应用
      */
-    private final String CONSUMERAPP = "B2B,MALL";
+    private final String CONSUMERAPP = "B2B";
 
     /**
      * 公共物料访问地址
@@ -144,6 +161,11 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      */
     private final String PS_MESSAGE_URL = ContextUtils.getBean(AccessConfiguration.class).getPsMessageUrl();
 
+    /**
+     * 商城链接
+     */
+    private final String USOFTMALL_URL = ContextUtils.getBean(AccessConfiguration.class).getMallUrl();
+
     /**
      * 日志
      */
@@ -201,9 +223,9 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      */
     @Override
     public void notifyMessage(List<PurcInquiryItem> inquiryItems, String sourceApp) throws Exception {
+        final String CONSUMERAPP ="MALL,B2B";
         for (PurcInquiryItem item : inquiryItems) {
            String cmpCode = null;
-           //如果型号为空
            if (item.getCmpCode() != null) {
                cmpCode = item.getCmpCode();
            } else if (null != item.getProductId()) {
@@ -219,22 +241,24 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                     HttpUtil.Response res = HttpUtil.sendGetRequest(url, formData);
                     if (res.getStatusCode() == 200) {
                         List<ProductUsers> users = FlexJsonUtils.fromJsonArray(res.getResponseText(), ProductUsers.class);
-                        List<ProductReplace> productReplaces = getProductReplaceByEnUUAndCmpCode(item.getInquiry().getEnUU(), cmpCode, users);
-                        if (!CollectionUtils.isEmpty(productReplaces)) {
+                        users = getProductReplaceByEnUUAndCmpCode(item.getInquiry().getRecorderUU(), cmpCode, users);
+                        if (!CollectionUtils.isEmpty(users)) {
                             List<MessageModel> models = new ArrayList<MessageModel>();
-                            for (ProductReplace user : productReplaces) {
+                            for (ProductUsers user : users) {
                                 User u = userDao.findOne(null != item.getInquiry().getRecorderUU() ? item.getInquiry().getRecorderUU() : 0L);
                                 Enterprise e = enterpriseDao.findOne(item.getInquiry().getEnUU());
                                 String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
-                                String content = "发布关于“" + cmp + "”的公共询价信息,邀请您参与报价";
+                                String content = "关于“型号:" + cmp + "”的公共询价信息,邀请您参与报价。";
+                                MessageModel model = new MessageModel();
                                 if (null != e) {
-                                    content = e.getEnName() + content;
+//                                    content = e.getEnName() + content;
+                                    model.setName(e.getEnName());
                                 } else if (null != u) {
-                                    content = u.getUserName() + content;
+//                                    content = u.getUserName() + content;
+                                    model.setName(u.getUserName());
                                 }
-                                //发送短信信息
-                                MessageModel model = new MessageModel();
                                 model.setType(INQUIRY_TYPE);
+                                model.setType(INQUIRY_TYPE_SELLER_MALL);
                                 model.setProducerApp(sourceApp);
                                 model.setConsumerType(CUST_TYPE);
                                 model.setConsumerApp(CONSUMERAPP);
@@ -242,7 +266,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                                 model.setRemark(String.valueOf(item.getInquiry().getId()));
                                 model.setSourceId(item.getId());
                                 model.setReceiverEnuu(user.getEnuu());
-                                model.setReceiverUu(user.getUserUU());
+                                model.setReceiverUu(user.getUseruu());
                                 model.setSenderEnuu(item.getInquiry().getEnUU());
                                 if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
                                     model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
@@ -254,59 +278,73 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                                 model.setMailTemplate(MAIL_TEMP_ID);
                                 model.setSmTemplate(SMS_TEMP_ID);
                                 models.add(model);
-                                logger.log("公共询价产生消息", "根据物料型号【" + cmpCode + "】查询接收人", "关联询价单明细【" + item.getId() + "】", user.getUserUU(), user.getEnuu(), InquirySource.ERP.name());
+                                logger.log("公共询价产生消息", "根据物料型号【" + cmpCode + "】查询接收人", "关联询价单明细【" + item.getId() + "】", user.getUseruu(), user.getEnuu(), InquirySource.ERP.name());
                             }
-
-                            if (!CollectionUtils.isEmpty(models)) {
-                                sendMessage(models);
+                            if (!CollectionUtils.isEmpty(models) && USOFTMALL_URL.equals("https://www.usoftmall.com/")) {
+                                // sendMessage(models);
+                                sendWechatMessage(models);
                             }
 
                             // 生成推荐信息
-                            remindInquiry(inquiryItems, users);
+                            remindInquiry(item, users);
                         }
                     }
                 } catch (Exception e) {
-                    String reson = e.getMessage().length() > 10 ? e.getMessage().substring(0, 1000).concat("") : e.getMessage();
-                    logger.log("公共询价产生消息", "根据物料型号【" + cmpCode + "】查询接收人失败,id" + item.getId(), reson, Constant.UU, Constant.UU, InquirySource.ERP.name());
+                    String reason = e.getMessage().length() > 10 ? e.getMessage().substring(0, 1000).concat("") : e.getMessage();
+                    logger.log("公共询价产生消息", "根据物料型号【" + cmpCode + "】查询接收人失败,id" + item.getId(), reason, Constant.UU, Constant.UU, InquirySource.ERP.name());
                     e.printStackTrace();
                 }
             }
         }
     }
 
+    private void sendWechatMessage(final List<MessageModel> models) {
+        ThreadUtils.task(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    log.info("发送消息实体" + JSON.toJSONString(models));
+                    String res = HttpUtil.doPost(USOFTMALL_URL + "/wx/sendTemplateMessage", FlexJsonUtils.toJsonDeep(models));
+                    log.info("消息请求发送日志" + res);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }).run();
+    }
+
     /**
      * 根据企业UU和物料原厂型号cmpCode获取替代物料信息
      *
-     * @param enUU    企业UU
      * @param cmpCode 物料原厂型号
      * @return
      */
-    public List<ProductReplace> getProductReplaceByEnUUAndCmpCode(final Long enUU, final String cmpCode, List<ProductUsers> productUsers) {
+    public List<ProductUsers> getProductReplaceByEnUUAndCmpCode(final Long userUU, final String cmpCode, List<ProductUsers> productUsers) {
         List<ProductReplace> productReplacesList = productReplaceDao.findAll(new Specification<ProductReplace>() {
             @Override
             public Predicate toPredicate(Root<ProductReplace> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                 final PredicateFactory<ProductReplace> factory = new PredicateFactory<>();
-                factory.add(PredicateUtils.ne("enuu", enUU, false));
+                factory.add(PredicateUtils.ne("userUU", userUU, false));
                 factory.add(PredicateUtils.and (PredicateUtils.isNotNull("ptrCmpcode"), PredicateUtils.eq("ptrCmpcode", cmpCode, false)));
                 query.where(factory.toPredicate(root, query, cb));
                 return null;
             }
         });
-        if (!CollectionUtils.isEmpty(productUsers)) {
-            for (ProductUsers user:productUsers) {
-                ProductReplace productReplace = new ProductReplace();
-                productReplace.setEnuu(user.getEnuu());
-                productReplace.setUserUU(user.getUseruu());
-                productReplacesList.add(productReplace);
+        if (!CollectionUtils.isEmpty(productReplacesList)) {
+            for (ProductReplace productReplace:productReplacesList) {
+                ProductUsers user = new ProductUsers();
+                user.setEnuu(productReplace.getEnuu());
+                user.setUseruu(productReplace.getUserUU());
+                productUsers.add(user);
             }
         }
         // 去掉同一企业下同一个人相同原厂型号的不同物料的记录,保证一个原厂型号只发一条
-        List<ProductReplace> returnList = new ArrayList<>();
+        List<ProductUsers> returnList = new ArrayList<>();
         Set<String> enUUAndUserUUs = new HashSet<>();
-        for (ProductReplace productReplace : productReplacesList) {
-            String receiverInfo = productReplace.getEnuu().toString() + productReplace.getUserUU().toString();
+        for (ProductUsers user : productUsers) {
+            String receiverInfo = user.getEnuu().toString() + user.getUseruu().toString();
             if (!enUUAndUserUUs.contains(receiverInfo)) {
-                returnList.add(productReplace);
+                returnList.add(user);
                 enUUAndUserUUs.add(receiverInfo);
             }
         }
@@ -316,54 +354,47 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     /**
      * 通过查询的个人物料相关联的信息,自动生成推荐的报价的数据
      *
-     * @param inquiryItems 报价明细
+     * @param item 报价明细
      * @param users 用户信息
      */
-    private void remindInquiry(final List<PurcInquiryItem> inquiryItems, final List<ProductUsers> users) {
+    private void remindInquiry(final PurcInquiryItem item, final List<ProductUsers> users) {
         ThreadUtils.task(new Runnable() {
             @Override
             public void run() {
                 try {
-                    List<InquiryRemind> reminds = new ArrayList<InquiryRemind>();
                     for (ProductUsers u : users) {
-                        for (PurcInquiryItem item : inquiryItems) {
-                            List<InquiryRemind> remindList = remindDao.findByVendUserUUAndVendUUAndItemId(u.getUseruu(), u.getEnuu(), item.getId());
-                            if (remindList.size() == 0 && item.getInquiry().getEnUU() != null &&
-                                    ((item.getProduct() != null && item.getProduct().getCmpCode().equals(u.getProduct().getCmpCode())) ||
-                                            item.getCmpCode().equals(u.getProduct().getCmpCode()))) {
-                                Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
-                                InquiryRemind remind = new InquiryRemind();
-                                remind.setEnName(enterprise.getEnName());
-                                remind.setEnUU(item.getInquiry().getEnUU());
-                                remind.setUserName(item.getUserName());
-                                remind.setUserTel(item.getUserTel());
-                                remind.setCode(item.getInquiry().getCode());
-                                remind.setBrand(item.getBrand());
-                                remind.setCmpCode(item.getCmpCode());
-                                remind.setSpec(item.getSpec());
-                                remind.setTitle(item.getProdTitle());
-                                if (item.getProduct() != null) {
-                                    remind.setBrand(item.getProduct().getBrand());
-                                    remind.setCmpCode(item.getProduct().getCmpCode());
-                                    remind.setSpec(item.getProduct().getSpec());
-                                    remind.setTitle(item.getProduct().getTitle());
-                                }
-                                remind.setItemId(item.getId());
-                                remind.setNeedQty(item.getNeedquantity());
-                                remind.setReDate(item.getInquiry().getDate());
-                                remind.setEndDate(item.getInquiry().getEndDate());
-                                remind.setVendUU(u.getEnuu());
-                                remind.setVendUserUU(u.getUseruu());
-                                remind.setDate(new Date(System.currentTimeMillis()));
-                                remind.setStatus(Status.INPUTTING.value());
-                                reminds.add(remind);
+                        List<InquiryRemind> remindList = remindDao.findByVendUserUUAndVendUUAndItemId(u.getUseruu(), u.getEnuu(), item.getId());
+                        if (remindList.size() == 0 && item.getInquiry().getEnUU() != null) {
+                            Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
+                            InquiryRemind remind = new InquiryRemind();
+                            remind.setEnName(enterprise.getEnName());
+                            remind.setEnUU(item.getInquiry().getEnUU());
+                            remind.setUserName(item.getUserName());
+                            remind.setUserTel(item.getUserTel());
+                            remind.setCode(item.getInquiry().getCode());
+                            remind.setBrand(item.getInbrand());
+                            remind.setInbrand(item.getInbrand());
+                            remind.setCmpCode(item.getCmpCode());
+                            remind.setSpec(item.getSpec());
+                            remind.setProdTitle(item.getProdTitle());
+                            remind.setInid(item.getInquiry().getId());
+                            if (item.getProduct() != null) {
+                                remind.setBrand(item.getProduct().getBrand());
+                                remind.setCmpCode(item.getProduct().getCmpCode());
+                                remind.setSpec(item.getProduct().getSpec());
+                                remind.setProdTitle(item.getProduct().getTitle());
                             }
-
+                            remind.setItemId(item.getId());
+                            remind.setNeedQty(item.getNeedquantity());
+                            remind.setReDate(item.getInquiry().getDate());
+                            remind.setEndDate(item.getInquiry().getEndDate());
+                            remind.setVendUU(u.getEnuu());
+                            remind.setVendUserUU(u.getUseruu());
+                            remind.setDate(new Date(System.currentTimeMillis()));
+                            remind.setStatus(Status.INPUTTING.value());
+                            remindDao.save(remind);
                         }
                     }
-                    if (!CollectionUtils.isEmpty(reminds)) {
-                        remindDao.save(reminds);
-                    }
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
@@ -442,21 +473,23 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                     if (!CollectionUtils.isEmpty(inquiry.getInProducts())) {
                         for (BatchInProduct batch : inquiry.getInProducts()) {
                             PurcInquiryItem item = new PurcInquiryItem();
-                            item.setIsOpen(Constant.YES);
                             List<Product> products = productDao.findByEnUUAndCode(enuu, batch.getBip_prodcode());
-                            if (CollectionUtils.isEmpty(products)) {
-                                throw new NotFoundException("enUU:[" + enuu + "],编号:[" + batch.getBip_prodcode() + "]");
+                            if (!CollectionUtils.isEmpty(products)) {
+                                item.setProductId(products.get(0).getId());
+                                item.setCmpCode(products.get(0).getCmpCode());
+                                item.setInbrand(products.get(0).getBrand());
+                                item.setProdTitle(products.get(0).getTitle());
+                                item.setSpec(products.get(0).getSpec());
+                            } else {
+                                item.setCmpCode(batch.getPr_orispeccode());
+                                item.setInbrand(batch.getPr_brand());
+                                item.setProdTitle(batch.getPr_detail());
+                                item.setSpec(batch.getPr_spec());
                             }
-                            item.setProductId(products.get(0).getId());
-                            item.setCmpCode(products.get(0).getCmpCode());
-                            item.setInbrand(products.get(0).getBrand());
-                            item.setProdTitle(products.get(0).getTitle());
-                            item.setSpec(products.get(0).getSpec());
+                            item.setProdCode(batch.getBip_prodcode());
                             item.setRemark(batch.getBip_remark());
-                            item.setProdCode(products.get(0).getCode());
-                            item.setProdTitle(products.get(0).getTitle());
                             item.setNumber(batch.getBip_detno());
-                            item.setFromDate(new Date());
+                            item.setFromDate(new Date(System.currentTimeMillis()));
                             item.setToDate(purcInquiry.getEndDate());
                             item.setStatus((short) Status.NOT_REPLY.value());
                             item.setIsOpen(Constant.YES);
@@ -468,6 +501,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                             item.setUserCode(batch.getBip_buyercode());
                             item.setOfferAmount(0);
                             item.setEndDate(inquiry.getBi_enddate());
+                            item.setNeedquantity(batch.getYcgqty());
                             if (null == item.getCmpCode() || item.getCmpCode().equals("无")) {
                                 item.setCmpCode(item.getSpec());
                             }
@@ -476,8 +510,8 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                             } else {
                                 item.setDate(new Date(System.currentTimeMillis()));
                             }
-                            if (item.getCurrency() == null) {
-                                item.setCurrency("RMB");
+                            if (item.getCustCurrency() == null) {
+                                item.setCustCurrency("RMB");
                             }
                             purcInquiryItems.add(item);
                         }
@@ -620,7 +654,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             product = productDao.findOne(item.getProductId());
         }
         String cmpCode = product.getCmpCode() != null ? product.getCmpCode() : item.getCmpCode();
-        String content = item.getAgreed() == 1 ? "【采纳】" : "【未采纳】";
+        String content = item.getAgreed() == 1 ? "【采纳】" : "【未采纳】";
         content = content + "您关于“" + cmpCode + "”的报价";
         if (null != e) {
             content = e.getEnName() + content;
@@ -628,7 +662,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             content = u.getUserName() + content;
         } else if (null == e && null == u) {
             content = "您关于“" + cmpCode + "”的报价已被";
-            String result = item.getAgreed() == 1 ? "【采纳】" : "【拒绝】";
+            String result = item.getAgreed() == 1 ? "【采纳】" : "【拒绝】";
             content = content + result;
         }
         MessageModel model = new MessageModel();
@@ -885,13 +919,11 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             if (StringUtils.hasText(filter.getKeyword())) {
                 SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
                 SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                SimpleExpression prodCmpCode = new SimpleExpression("product.cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                SimpleExpression prodBrand = new SimpleExpression("product.brand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
                 SimpleExpression code = new SimpleExpression("inquiry.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
                 SimpleExpression title = new SimpleExpression("prodTitle", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                SimpleExpression prodTitle = new SimpleExpression("product.title", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
+                SimpleExpression spec = new SimpleExpression("spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
                 SimpleExpression inquiryEnName = new SimpleExpression("inquiry.enName", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand, prodCmpCode, prodBrand, code, title, prodTitle, inquiryEnName};
+                SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, inquiryEnName, spec};
                 LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
                 info.expression(logical);
             }
@@ -970,9 +1002,15 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
                         SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
                         SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
                         SimpleExpression title = new SimpleExpression("prodTitle", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
+                        SimpleExpression spec = new SimpleExpression("spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
                         SimpleExpression code = new SimpleExpression("inquiry.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
                         SimpleExpression enName = new SimpleExpression("inquiry.enName", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
-                        SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, enName};
+                        SimpleExpression[] simpleExpressions = null;
+                        if (!StringUtils.isEmpty(filter.getIsLogin()) && filter.getIsLogin() == 0) {
+                            simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, spec};
+                        } else {
+                            simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, enName, spec};
+                        }
                         LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
                         info.expression(logical);
                     }
@@ -993,8 +1031,6 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
     private IPage<PurcInquiryItemInfo> covert(Page<PurcInquiryItemInfo> orders, Long enuu) {
         if (!CollectionUtils.isEmpty(orders.getContent()) && null != enuu) {
             for (PurcInquiryItemInfo itemInfo : orders.getContent()) {
-                // 为了用户隐私,这个地方隐藏掉联系人电话
-                itemInfo.setUserTel(null);
                 PublicInquiryItem item = publicInquiryItemDao.findByVendUUAndSourceId(enuu, itemInfo.getId());
                 itemInfo.setQuoted(Constant.NO);
                 if (null != item) {
@@ -1030,13 +1066,15 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      * @return
      */
     @Override
-    public PageInfo covert(PageInfo pageInfo, String state) {
+    public PageInfo covert(PageInfo pageInfo, String state, Short overdue) {
         if (state.equals(OrderStatus.todo.name())) {
             pageInfo.filter("status", Status.NOT_REPLY.value());
             pageInfo.filter("overdue", Constant.NO);
             pageInfo.filter("invalid", Constant.NO);
         } else if (state.equals(OrderStatus.done.name())) {
-            pageInfo.filter("overdue", Constant.NO);
+            if (StringUtils.isEmpty(overdue) || !overdue.equals(Constant.YES)) {
+                pageInfo.filter("overdue", Constant.NO);
+            }
             pageInfo.filter("status", Status.REPLIED.value());
             pageInfo.filter("invalid", Constant.NO);
             pageInfo.filter("decideStatus", Status.UNAUDIT.value());
@@ -1044,8 +1082,11 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
             pageInfo.filter("overdue", Constant.YES);
             pageInfo.filter("invalid", Constant.NO);
         } else if (state.equals(OrderStatus.invalid.name())) {
-            pageInfo.filter("overdue", Constant.YES);
-            pageInfo.filter("invalid", Constant.YES);
+            SimpleExpression overdue1 = new SimpleExpression("overdue", Constant.NO, CriterionExpression.Operator.NE, true);
+            SimpleExpression invalid = new SimpleExpression("invalid", Constant.NO, CriterionExpression.Operator.NE, true);
+            SimpleExpression[] simpleExpressions = new SimpleExpression[]{invalid, overdue1};
+            LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
+            pageInfo.expression(logical);
         } else if (state.equals(OrderStatus.agreed.name())) {
             pageInfo.filter("agreed", Constant.YES);
             pageInfo.filter("status", Status.REPLIED.value());
@@ -1155,8 +1196,183 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      * @return
      */
     @Override
-    public PublicInquiryItemInfo findOneInfo(Long id) {
-        return itemInfoDao.findOne(id);
+    public PublicInquiryItemInfo findOneInfo(Long id, Long enuu, Long useruu) {
+        PublicInquiryItemInfo itemInfo = itemInfoDao.findOne(id);
+        if (!itemInfo.getVendUU().equals(enuu)) {
+            throw new IllegalOperatorException("访问受限");
+        }
+        return itemInfo;
+    }
+
+    /**
+     * 将推荐信息转成UU互联需要的数据
+     *
+     * @param content 推荐信息
+     * @return
+     */
+    @Override
+    public List<PurcInquiryItemInfo> covertRemindToInquiry(List<InquiryRemind> content) {
+        List<PurcInquiryItemInfo> infoList = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(content)) {
+            for (InquiryRemind remind : content) {
+                PurcInquiryItemInfo itemInfo = inquiryItemInfoDao.findOne(remind.getItemId());
+                if (null != itemInfo) {
+                    Product product = new Product();
+                    product.setTitle(itemInfo.getProdTitle());
+                    product.setCmpCode(itemInfo.getCmpCode());
+                    product.setCode(itemInfo.getCmpCode());
+                    product.setBrand(itemInfo.getInbrand());
+                    product.setSpec(itemInfo.getSpec());
+                    itemInfo.setProduct(product);
+                    if (remind.getStatus().equals(Status.NOTALLOW.value())) {
+                        itemInfo.setAgreed(Constant.NO);
+                    } else if (remind.getStatus().equals(Status.ALLOW.value())) {
+                        itemInfo.setAgreed(Constant.YES);
+                    }
+                    itemInfo.setQuoted(Constant.NO);
+                   if (remind.getStatus().equals(Status.SUBMITTED.value())) {
+                       itemInfo.setQuoted(Constant.YES);
+                       itemInfo.setQuteId(remind.getNewId());
+                   }
+                   if (itemInfo.getRemainingTime() <= 0) {
+                       itemInfo.setOverdue(Constant.YES);
+                   }
+                    infoList.add(itemInfo);
+                }
+            }
+        }
+        return infoList;
+    }
+
+    /**
+     * 针对供应商,客户将拒绝理由发送信息给供应商
+     *
+     * @param item 询价明细
+     * @param sourceApp 应用来源
+     * @throws Exception
+     */
+    @Override
+    public Page<MessageModel> refuseMessage(PublicInquiryItem item, String sourceApp) {
+        if (null != item.getVendUU() && null != item.getVendUserUU() ) {
+                final String SMS_TYPE = "SM"; //发送信息
+                final String CONSUMERAPP ="MALL";
+                List<MessageModel> models = new ArrayList<MessageModel>();
+                String Buyer=item.getInquiry().getEnName() == null ? item.getInquiry().getRecorder():item.getInquiry().getEnName();
+                String cmpCode = item.getCmpCode();
+                String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
+                String content= "因"+item.getRefusereason() + "," + Buyer + "【未采纳】您关于“型号:" + cmp + "”的报价。期待与您的下次合作!" ;
+                MessageModel model = new MessageModel();
+                model.setType(INQUIRY_DECIDE_TYPE_MALL);
+                model.setProducerApp(sourceApp);
+                model.setConsumerType(CUST_TYPE);
+                model.setConsumerApp(CONSUMERAPP);
+                model.setContent(content);
+                model.setRemark(String.valueOf(item.getInquiry().getId()));
+                model.setSourceId(item.getId());
+                model.setReceiverEnuu(item.getVendUU());
+                model.setReceiverUu(item.getVendUserUU());
+                model.setSenderEnuu(item.getInquiry().getEnUU());
+                if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
+                    model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
+                } else {
+                    Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
+                    model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
+                }
+                model.setSmsType(SMS_TYPE);
+                models.add(model);
+                if (!CollectionUtils.isEmpty(models)) {
+                    sendMessage(models);
+                }
+            }
+        return null;
+
+    }
+    /**
+     * 针对供应商,把客户采纳报价的消息发送给供应商
+     *
+     * @param item 询价明细
+     * @param sourceApp 应用来源
+     * @throws Exception
+     */
+    @Override
+    public Page<MessageModel> adoptMessage(PublicInquiryItem item, String sourceApp) {
+        if (null != item.getVendUU() && null != item.getVendUserUU() ) {
+            final String SMS_TYPE = "SM"; //发送信息
+            final String CONSUMERAPP ="MALL";
+            List<MessageModel> models = new ArrayList<MessageModel>();
+            String cmpCode = item.getCmpCode();
+            String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
+            String content= item.getInquiry().getEnName()+"【已采纳】您关于'型号:'" + cmp + "的报价,期待与您的合作!" ;
+            MessageModel model = new MessageModel();
+            model.setType(INQUIRY_DECIDE_TYPE_MALL);
+            model.setProducerApp(sourceApp);
+            model.setConsumerType(CUST_TYPE);
+            model.setConsumerApp(CONSUMERAPP);
+            model.setContent(content);
+            model.setRemark(String.valueOf(item.getInquiry().getId()));
+            model.setSourceId(item.getId());
+            model.setReceiverEnuu(item.getVendUU());
+            model.setReceiverUu(item.getVendUserUU());
+            model.setSenderEnuu(item.getInquiry().getEnUU());
+            if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
+                model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
+            } else {
+                Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
+                model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
+            }
+            model.setSmsType(SMS_TYPE);
+            models.add(model);
+            if (!CollectionUtils.isEmpty(models)) {
+                sendMessage(models);
+            }
+        }
+        return null;
+
+    }
+
+    @Override
+    public Page<MessageModel> ReceiveMessage(PublicInquiryItem item, String sourceApp) {
+        if (null != item.getVendUU() && null != item.getVendUserUU() ) {
+            final String SMS_TYPE = "SM"; //发送信息
+            final String CONSUMERAPP ="MALL";
+            List<MessageModel> models = new ArrayList<MessageModel>();
+            String cmpCode = item.getCmpCode();
+            String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
+            String content= "您收到了"+item.getVendName()+"关于“型号:"+ cmp +"“的报价,马上去看一看吧!";
+
+            MessageModel model = new MessageModel();
+            model.setType(INQUIRY_TYPE_MALL);
+            model.setProducerApp(sourceApp);
+            model.setConsumerType(CUST_TYPE);
+            model.setConsumerApp(CONSUMERAPP);
+            model.setContent(content);
+            model.setRemark(String.valueOf(item.getInquiry().getId()));
+            model.setSourceId(item.getId());
+            model.setReceiverEnuu(item.getInquiry().getEnUU());
+            model.setReceiverUu(item.getInquiry().getRecorderUU());
+            model.setSenderEnuu(item.getVendUU());
+            if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
+                model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
+            } else {
+                Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
+                model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
+            }
+            model.setSmsType(SMS_TYPE);
+            models.add(model);
+            if (!CollectionUtils.isEmpty(models)) {
+                sendMessage(models);
+            }
+        }
+        return null;
+
+
     }
 
+    @Override
+    public ModelMap getPurcInquiryItemCount() {
+        ModelMap result = new ModelMap();
+        Long count = inquiryItemInfoDao.count();
+        result.put("count", count);
+        return result;
+    }
 }

+ 1 - 0
src/main/resources/config/application-cloud.properties

@@ -21,3 +21,4 @@ datasource.connectionProperties=druid.stat.mergeSql=false;druid.stat.slowSqlMill
 # Access path
 ps.product.url=https://api-product.usoftmall.com/
 ps.message.url=http://api-message.ubtob.com/
+mall.url = https://www.usoftmall.com/

+ 2 - 1
src/main/resources/config/application-dev.properties

@@ -24,4 +24,5 @@ datasource.connectionProperties=druid.stat.mergeSql=false;druid.stat.slowSqlMill
 ps.product.url=http://192.168.253.102:8080/
 ps.message.url=http://192.168.253.12:24000/message/
 # wang localhost
-#ps.message.url=http://192.168.253.131:20000/
+#ps.message.url=http://192.168.253.131:20000/
+mall.url = http://192.168.253.12:23400/

+ 2 - 1
src/main/resources/config/application-test.properties

@@ -20,4 +20,5 @@ datasource.connectionProperties=druid.stat.mergeSql=false;druid.stat.slowSqlMill
 
 # Access path
 ps.product.url=http://218.17.158.219:24000/
-ps.message.url=http://218.17.158.219:24000/message/
+ps.message.url=http://218.17.158.219:24000/message/
+mall.url = http://192.168.253.12:23400/