|
|
@@ -43,12 +43,13 @@ import com.uas.ps.inquiry.util.FlexJsonUtils;
|
|
|
import com.uas.ps.inquiry.util.HttpUtil;
|
|
|
import com.uas.ps.inquiry.util.ThreadUtils;
|
|
|
import javassist.NotFoundException;
|
|
|
+import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
-import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
@@ -56,7 +57,6 @@ import javax.persistence.criteria.CriteriaBuilder;
|
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
import javax.persistence.criteria.Root;
|
|
|
-import java.math.BigInteger;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashSet;
|
|
|
@@ -77,22 +77,6 @@ public class InquiryServiceImpl implements InquiryService {
|
|
|
*/
|
|
|
private final String INQUIRY_TYPE = "公共询价";
|
|
|
|
|
|
- /**
|
|
|
- * 应用来源
|
|
|
- */
|
|
|
- private final String SOURCERAPP = "MALL";
|
|
|
-
|
|
|
- /**
|
|
|
- * 消息类型,公共询价的采纳结果
|
|
|
- */
|
|
|
- private final String INQUIRY_DECIDE_TYPE = "公共询价采纳结果";
|
|
|
-
|
|
|
- /**
|
|
|
- * 询价种类
|
|
|
- */
|
|
|
- private final String INQUIRYKIND = "publicInquiry";
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 消息推送短信模板id
|
|
|
*/
|
|
|
@@ -104,19 +88,19 @@ public class InquiryServiceImpl implements InquiryService {
|
|
|
private final String SMS_TYPE = "MAIL_AND_SM_AND_IM";
|
|
|
|
|
|
/**
|
|
|
- * 来源应用,ERP
|
|
|
+ * 消费类型: 多个,MULTI
|
|
|
*/
|
|
|
- private final String PRODUCERAPP = "ERP";
|
|
|
+ private final String CUST_TYPE = "MULTI";
|
|
|
|
|
|
/**
|
|
|
- * 消费类型: 多个,MULTI
|
|
|
+ * 应用来源,主要是为了平台公共询价做处理
|
|
|
*/
|
|
|
- private final String CUST_TYPE = "MULTI";
|
|
|
+ private String SOURCEAPP_MALL = "MALL";
|
|
|
|
|
|
/**
|
|
|
* 接收应用
|
|
|
*/
|
|
|
- private final String CONSUMERAPP = "HIDE";
|
|
|
+ private final String CONSUMERAPP_HIDE = "HIDE";
|
|
|
|
|
|
/**
|
|
|
* 消息类型 (在MALL消息中拼接求购询价待报价)
|
|
|
@@ -185,6 +169,8 @@ public class InquiryServiceImpl implements InquiryService {
|
|
|
*/
|
|
|
private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
|
|
|
|
|
|
+ private static final Logger log = Logger.getLogger(Logger.class);
|
|
|
+
|
|
|
/**
|
|
|
* 查询公共询价列表信息
|
|
|
*
|
|
|
@@ -345,121 +331,14 @@ public class InquiryServiceImpl implements InquiryService {
|
|
|
/**
|
|
|
* 可配置的定时任务
|
|
|
*/
|
|
|
+ @Override
|
|
|
public List<InquiryRemind> testMessage(Date startTime, Date endTime, Long useruu, Long enuu){
|
|
|
logger.log("公共询价","9点定时统计询价单总数服务开启");
|
|
|
List<InquiryRemind> list = inquiryRemindDao.findTestInfo(startTime,endTime,useruu,enuu);
|
|
|
+ logger.log("公共询价","9点定时统计询价单总数服务结束");
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 每早9点发送询价通知短信
|
|
|
- */
|
|
|
- @Scheduled(cron = "0 0 9 * * ?" )
|
|
|
- private void sendMessage() throws Exception {
|
|
|
- logger.log("公共询价","9点定时统计询价单总数服务开启");
|
|
|
- List<BigInteger> list1 = inquiryRemindDao.findvenduseruu();
|
|
|
- //找到询价推荐表中的所有公司
|
|
|
- List<BigInteger> list2 = inquiryRemindDao.findvenduu();
|
|
|
- for(BigInteger vendUserUU : list1){
|
|
|
- for(BigInteger enuu : list2){
|
|
|
- //查出昨晚17点到今早九点的询价信息
|
|
|
- List<InquiryRemind> reminds = inquiryRemindDao.findInquiryRemind(vendUserUU,enuu);
|
|
|
- if(!CollectionUtils.isEmpty(reminds)){
|
|
|
- sendMessage(reminds.size(),reminds);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- logger.log("公共询价","9点定时统计询价单总数服务结束");
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 发送消息推送
|
|
|
- *
|
|
|
- */
|
|
|
- public void sendMessage(final Integer count, final List<InquiryRemind> reminds) {
|
|
|
- ThreadUtils.task(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- try {
|
|
|
- List<MessageModel> models = new ArrayList<>();
|
|
|
- MessageModel model = new MessageModel();
|
|
|
- model.setType(INQUIRY_TYPE);
|
|
|
- model.setType(INQUIRY_TYPE_SELLER_MALL);
|
|
|
- model.setProducerApp("MALl");
|
|
|
- model.setConsumerType(CUST_TYPE);
|
|
|
- model.setConsumerApp(CONSUMERAPP);
|
|
|
- model.setRemark(String.valueOf(count));
|
|
|
- for(InquiryRemind remind : reminds){
|
|
|
- model.setReceiverEnuu(remind.getVendUU());
|
|
|
- model.setReceiverUu(remind.getVendUserUU());
|
|
|
- model.setSenderEnuu(MESSAGE_SENDERENUU);
|
|
|
- model.setSenderUu(MESSAGE_SENDERUU);
|
|
|
- }
|
|
|
- String company = "";
|
|
|
- Enterprise enterprise = enterpriseDao.findOne(reminds.get(0).getVendUU());
|
|
|
- if(null != enterprise){
|
|
|
- company = enterprise.getEnName();
|
|
|
- }
|
|
|
- String content = company + "新增了"+ count +"张公共询价单,快登录优软商城查看详情吧!https://www.usoftmall.com/vendor#/seekPurchase";
|
|
|
- model.setContent(content);
|
|
|
- model.setSmsType(SMS_TYPE);
|
|
|
- model.setSmTemplate(SMS_TEMP_ID);
|
|
|
- models.add(model);
|
|
|
- String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
|
|
|
- System.out.println(FlexJsonUtils.toJsonDeep(models));
|
|
|
- System.out.println(res);
|
|
|
- logger.log("公共询价","此次"+company+"公司新增"+count+"张公共询价");
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }).run();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 每天下午2点发送询价通知短信
|
|
|
- */
|
|
|
- @Scheduled(cron = "0 0 14 * * ?" )
|
|
|
- private void sendMessage2(){
|
|
|
- logger.log("公共询价","14点定时统计询价单总数服务开始");
|
|
|
- List<BigInteger> list1 = inquiryRemindDao.findvenduseruu();
|
|
|
- //找到询价推荐表中的所有公司
|
|
|
- List<BigInteger> list2 = inquiryRemindDao.findvenduu();
|
|
|
- for(BigInteger vendUserUU : list1){
|
|
|
- for(BigInteger enuu : list2){
|
|
|
- //查出昨晚17点到今早九点的询价信息
|
|
|
- List<InquiryRemind> reminds = inquiryRemindDao.findInquiryRemind1(vendUserUU,enuu);
|
|
|
- if(!CollectionUtils.isEmpty(reminds)){
|
|
|
- sendMessage(reminds.size(),reminds);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- logger.log("公共询价","14点定时统计询价单总数服务结束");
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 每天下午5点发送询价通知短信
|
|
|
- */
|
|
|
- @Scheduled(cron = "0 0 17 * * ?" )
|
|
|
- private void sendMessage3(){
|
|
|
- logger.log("公共询价","17点定时统计询价单总数服务结束");
|
|
|
- List<BigInteger> list1 = inquiryRemindDao.findvenduseruu();
|
|
|
- //找到询价推荐表中的所有公司
|
|
|
- List<BigInteger> list2 = inquiryRemindDao.findvenduu();
|
|
|
- for(BigInteger vendUserUU : list1){
|
|
|
- for(BigInteger enuu : list2){
|
|
|
- //查出昨晚17点到今早九点的询价信息
|
|
|
- List<InquiryRemind> reminds = inquiryRemindDao.findInquiryRemind2(vendUserUU,enuu);
|
|
|
- if(!CollectionUtils.isEmpty(reminds)){
|
|
|
- sendMessage(reminds.size(),reminds);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- logger.log("公共询价","17点定时统计询价单总数服务结束");
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 发布询价成功后加入当前用户的个人物料库
|
|
|
* @param inquiryItems
|
|
|
@@ -888,4 +767,110 @@ public class InquiryServiceImpl implements InquiryService {
|
|
|
}
|
|
|
return itemInfo;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送消息推送
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public void sendMessage(final Integer count, final List<InquiryRemind> reminds) {
|
|
|
+ ThreadUtils.task(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ try {
|
|
|
+ List<MessageModel> models = new ArrayList<>();
|
|
|
+ MessageModel model = new MessageModel();
|
|
|
+ model.setType(INQUIRY_TYPE);
|
|
|
+ model.setType(INQUIRY_TYPE_SELLER_MALL);
|
|
|
+ model.setProducerApp("MALl");
|
|
|
+ model.setConsumerType(CUST_TYPE);
|
|
|
+ model.setConsumerApp(CONSUMERAPP_HIDE);
|
|
|
+ model.setRemark(String.valueOf(count));
|
|
|
+ for(InquiryRemind remind : reminds){
|
|
|
+ model.setReceiverEnuu(remind.getVendUU());
|
|
|
+ model.setReceiverUu(remind.getVendUserUU());
|
|
|
+ model.setSenderEnuu(MESSAGE_SENDERENUU);
|
|
|
+ model.setSenderUu(MESSAGE_SENDERUU);
|
|
|
+ }
|
|
|
+ String company = "";
|
|
|
+ Enterprise enterprise = enterpriseDao.findOne(reminds.get(0).getVendUU());
|
|
|
+ if(null != enterprise){
|
|
|
+ company = enterprise.getEnName();
|
|
|
+ }
|
|
|
+ String content = company + "新增了"+ count +"张公共询价单,快登录优软商城查看详情吧!https://www.usoftmall.com/vendor#/seekPurchase";
|
|
|
+ model.setContent(content);
|
|
|
+ model.setSmsType(SMS_TYPE);
|
|
|
+ model.setSmTemplate(SMS_TEMP_ID);
|
|
|
+ models.add(model);
|
|
|
+ String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
|
|
|
+ System.out.println(FlexJsonUtils.toJsonDeep(models));
|
|
|
+ System.out.println(res);
|
|
|
+ logger.log("公共询价", "此次"+company+"公司新增"+count+"张公共询价");
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).run();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送消息推送
|
|
|
+ *
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void sendMessage(final List<InquiryRemind> reminds) {
|
|
|
+ ThreadUtils.task(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ try {
|
|
|
+ log.info("发送消息开始");
|
|
|
+ List<MessageModel> models = new ArrayList<>();
|
|
|
+ for (InquiryRemind remind : reminds) {
|
|
|
+ if (null != remind.getVendUU() && null != remind.getVendUserUU()) {
|
|
|
+ Integer count = remind.getCounts();
|
|
|
+ MessageModel model = new MessageModel();
|
|
|
+ model.setType(INQUIRY_TYPE);
|
|
|
+ model.setType(INQUIRY_TYPE_SELLER_MALL);
|
|
|
+ model.setProducerApp(SOURCEAPP_MALL);
|
|
|
+ model.setConsumerType(CUST_TYPE);
|
|
|
+ model.setConsumerApp(CONSUMERAPP_HIDE);
|
|
|
+ model.setRemark(String.valueOf(count));
|
|
|
+ model.setReceiverEnuu(remind.getVendUU());
|
|
|
+ model.setReceiverUu(remind.getVendUserUU());
|
|
|
+ model.setSenderEnuu(MESSAGE_SENDERENUU);
|
|
|
+ model.setSenderUu(MESSAGE_SENDERUU);
|
|
|
+ String company = "";
|
|
|
+ Enterprise enterprise = enterpriseDao.findOne(remind.getVendUU());
|
|
|
+ if(null != enterprise){
|
|
|
+ company = enterprise.getEnName();
|
|
|
+ }
|
|
|
+ String content = company + "新增了"+ count +"张公共询价单,快登录优软商城查看详情吧!https://www.usoftmall.com/vendor#/seekPurchase";
|
|
|
+ model.setContent(content);
|
|
|
+ model.setSmsType(SMS_TYPE);
|
|
|
+ model.setSmTemplate(SMS_TEMP_ID);
|
|
|
+ models.add(model);
|
|
|
+ log.info("此次" + company + "公司新增" + remind.getCounts() + "张公共询价(发送信息前)");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!org.springframework.util.CollectionUtils.isEmpty(models)) {
|
|
|
+ String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
|
|
|
+ }
|
|
|
+ log.info("发送消息完成");
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).run();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 以供应商企业UU和用户UU分组查询商机
|
|
|
+ * @param hours 查之前多少小时内的单据
|
|
|
+ * @return 商机List
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<InquiryRemind> findInquiryRemindGroupByVendUUAndVendUserUU(int hours) {
|
|
|
+ String sql = "select ir_venduu vendUU,ir_venduseruu vendUserUU, count(1) counts from purc$inquiry$remind where ir_date between date_sub(now(), interval "
|
|
|
+ + hours + " hour) and now() group by ir_venduu,ir_venduseruu";
|
|
|
+ return jdbcTemplate.query(sql, new BeanPropertyRowMapper<InquiryRemind>(InquiryRemind.class));
|
|
|
+ }
|
|
|
}
|