Browse Source

产生消息,对移动端消息接口

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@7416 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
dongbw 9 years ago
parent
commit
143627a7e3

+ 6 - 0
src/main/java/com/uas/platform/b2b/dao/PagingReleaseDao.java

@@ -5,9 +5,15 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
 
+import javax.persistence.OrderBy;
+import java.util.List;
+
 /**
  * Created by dongbw on 17/03/23 9:37.
  */
 @Repository
 public interface PagingReleaseDao extends JpaSpecificationExecutor<PagingRelease>,JpaRepository<PagingRelease, Long> {
+
+    @OrderBy("date desc")
+    List<PagingRelease> findByEnUUAndEmUU(Long enuu, Long emuu);
 }

+ 3 - 0
src/main/java/com/uas/platform/b2b/dao/PagingReleaseDetailDao.java

@@ -5,10 +5,13 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * Created by dongbw
  * 17/03/23 9:39.
  */
 @Repository
 public interface PagingReleaseDetailDao extends JpaRepository<PagingReleaseDetail, Long>,JpaSpecificationExecutor<PagingReleaseDetail> {
+    List<PagingReleaseDetail> findByVendUserUUAndVendUU(Long vendUseruu, Long venduu);
 }

+ 50 - 0
src/main/java/com/uas/platform/b2b/event/PurchaseInquiryItemSaveReleaseEvent.java

@@ -0,0 +1,50 @@
+package com.uas.platform.b2b.event;
+
+import com.uas.platform.b2b.model.PagingRelease;
+import com.uas.platform.b2b.model.PagingReleaseDetail;
+import com.uas.platform.b2b.model.PurchaseInquiryItem;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 询价单保存时生成消息事件
+ *
+ * Created by dongbw
+ *
+ */
+public class PurchaseInquiryItemSaveReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurchaseInquiryItem> {
+
+    public PurchaseInquiryItemSaveReleaseEvent(List<PurchaseInquiryItem> savedList) {
+        super(savedList);
+    }
+
+    /**
+     * 生成对应消息记录
+     *
+     * @param inquiryItem
+     * @return
+     */
+    @Override
+    public PagingReleaseDetail release(PurchaseInquiryItem inquiryItem) {
+        //TODO 保存erp新询价单之后,触发新增消息事件。
+        Long emUU = inquiryItem.getUserUU();
+        String emName = inquiryItem.getInquiry().getRecorder();
+        Long enUU = inquiryItem.getInquiry().getEnUU();
+        Date date = new Date();
+        String codeValue = inquiryItem.getInquiry().getCode();
+        String from = "B2B";
+        if (inquiryItem.getSourceId() != null) { // erp传到平台的单据,包含erpId字段记录来源
+            from = "ERP";
+        }
+        String type = "新增询价单";
+        String title = from + type;
+        String context = from + inquiryItem.getInquiry().getEnterprise().getEnName() + "的" + emName + type + ",单号:" + codeValue;
+        PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type);
+        Long vendUU = inquiryItem.getVendUU();
+        Long vendUserUU = inquiryItem.getVendUserUU();
+        PagingReleaseDetail releaseDetail = new PagingReleaseDetail(vendUU, vendUserUU);
+        releaseDetail.setPagingRelease(release);
+        return releaseDetail;
+    }
+}

+ 45 - 0
src/main/java/com/uas/platform/b2b/event/PurchaseOrderReplyReleaseEvent.java

@@ -0,0 +1,45 @@
+package com.uas.platform.b2b.event;
+
+import com.uas.platform.b2b.model.PagingRelease;
+import com.uas.platform.b2b.model.PagingReleaseDetail;
+import com.uas.platform.b2b.model.PurchaseOrder;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 回复采购订单时生成消息事件
+ * Created by dongbw
+ *
+ */
+public class PurchaseOrderReplyReleaseEvent extends SaveReleaseEvent<PagingReleaseDetail, PurchaseOrder> {
+
+    public PurchaseOrderReplyReleaseEvent(List<PurchaseOrder> savedList) {
+        super(savedList);
+    }
+
+    /**
+     * 生成对应消息记录
+     *
+     * @param orderAll
+     * @return
+     */
+    @Override
+    public PagingReleaseDetail release(PurchaseOrder orderAll) {
+        Long emUU = orderAll.getUserUU();
+        String emName = orderAll.getUser().getUserName();
+        Long enUU = orderAll.getEnUU();
+        Date date = new Date();
+        String codeValue = orderAll.getCode();
+        String from = "B2B";
+        String type = "回复采购订单";
+        String title = from + type;
+        String context = from + orderAll.getEnterprise().getEnName() + "的" + emName + type + ",单号:" + codeValue;
+        PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type);
+        Long vendUU = orderAll.getVendUU();
+        Long vendUserUU = orderAll.getVendUserUU();
+        PagingReleaseDetail releaseDetail = new PagingReleaseDetail(vendUU, vendUserUU);
+        releaseDetail.setPagingRelease(release);
+        return releaseDetail;
+    }
+}

+ 1 - 1
src/main/java/com/uas/platform/b2b/event/PurchaseOrderSaveReleaseEvent.java

@@ -37,7 +37,7 @@ public class PurchaseOrderSaveReleaseEvent extends SaveReleaseEvent<PagingReleas
         }
         String type = "新增采购订单";
         String title = from + type;
-        String context = from + orderAll.getEnName() + "的" + emName + type + ",单号:" + codeValue;
+        String context = from + orderAll.getEnterprise().getEnName() + "的" + emName + type + ",单号:" + codeValue;
         PagingRelease release = new PagingRelease(emUU, emName, enUU, date, codeValue, from, title, context, type);
         Long vendUU = orderAll.getVendUU();
         Long vendUserUU = orderAll.getVendUserUU();

+ 6 - 4
src/main/java/com/uas/platform/b2b/listener/MessageListener.java

@@ -1,7 +1,6 @@
 package com.uas.platform.b2b.listener;
 
 import com.uas.platform.b2b.dao.PagingReleaseDetailDao;
-import com.uas.platform.b2b.event.PurchaseOrderSaveReleaseEvent;
 import com.uas.platform.b2b.event.SaveReleaseEvent;
 import com.uas.platform.b2b.model.PagingReleaseDetail;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,9 +25,12 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 	@Async
 	@Override
 	public void onApplicationEvent(final SaveReleaseEvent<?, ?> event) {
-		if (event instanceof PurchaseOrderSaveReleaseEvent) {
-			pagingReleaseDetailDao.save((List<PagingReleaseDetail>) event.release());
-		}
+		pagingReleaseDetailDao.save((List<PagingReleaseDetail>) event.release());
+//		if (event instanceof PurchaseOrderSaveReleaseEvent) {
+//			pagingReleaseDetailDao.save((List<PagingReleaseDetail>) event.release());
+//		} else if (event instanceof PurchaseInquiryItemSaveReleaseEvent) {
+//			pagingReleaseDetailDao.save((List<PagingReleaseDetail>) event.release());
+//		}
 	}
 
 }

+ 89 - 0
src/main/java/com/uas/platform/b2b/mobile/controller/ReleaseController.java

@@ -0,0 +1,89 @@
+package com.uas.platform.b2b.mobile.controller;
+
+import com.uas.platform.b2b.mobile.service.MobileReleaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+/**
+ * Created by dongbw
+ * 17/03/28 9:09.
+ */
+@Controller("mobile.ReleaseController")
+@RequestMapping(value = "/mobile/release")
+public class ReleaseController {
+
+    @Autowired
+    private MobileReleaseService mobileReleaseService;
+
+    /**
+     * 获取消息条数
+     *
+     * @param vendUseruu
+     * @param venduu
+     * @return
+     */
+    @RequestMapping(value = "/count", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getReleaseCounts (Long vendUseruu, Long venduu) {
+        return mobileReleaseService.getReleaseCounts(vendUseruu, venduu);
+    }
+
+    /**
+     * 修改已经统计的消息状态
+     *
+     * @param ids
+     * @return
+     */
+    @RequestMapping(value = "/count/back", method = RequestMethod.POST)
+    @ResponseBody
+    public void changeReleaseCounts (String ids) {
+        mobileReleaseService.changeReleaseCounts(ids);
+    }
+
+
+    /**
+     * 获取消息详细列表
+     *
+     * @param vendUseruu
+     * @param venduu
+     * @param type
+     * @return
+     */
+    @RequestMapping(value = "/detail", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getReleaseDetails (Long vendUseruu, Long venduu, String type) {
+        return mobileReleaseService.getReleaseDetails(vendUseruu, venduu, type);
+    }
+
+    /**
+     * 修改已经获取的消息状态
+     *
+     * @param ids
+     * @return
+     */
+    @RequestMapping(value = "/detail/back", method = RequestMethod.POST)
+    @ResponseBody
+    public ModelMap changeReleaseDetails (String ids) {
+        return mobileReleaseService.changeReleaseDetails(ids);
+    }
+
+    /**
+     *  推送消息
+     *
+     * @param emuu
+     * @param enuu
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "/push", method = RequestMethod.POST)
+    @ResponseBody
+    public ResponseEntity<ModelMap> pushRelease (Long emuu, Long enuu) throws Exception {
+        return mobileReleaseService.pushRelease(emuu, enuu);
+    }
+
+}

+ 74 - 0
src/main/java/com/uas/platform/b2b/mobile/model/ReleaseDetail.java

@@ -0,0 +1,74 @@
+package com.uas.platform.b2b.mobile.model;
+
+import java.util.Date;
+
+/**
+ * 消息详情
+ *
+ * Created by dongbw
+ * 17/03/28 12:10.
+ */
+public class ReleaseDetail {
+
+    private Long id;
+
+    private String releaser;
+
+    private Date createTime;
+
+    private String subTitle;
+
+    private String title;
+
+
+    public ReleaseDetail(Long id, String releaser, Date createTime, String subTitle, String title) {
+        this.id = id;
+        this.releaser = releaser;
+        this.createTime = createTime;
+        this.subTitle = subTitle;
+        this.title = title;
+    }
+
+    public ReleaseDetail() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getReleaser() {
+        return releaser;
+    }
+
+    public void setReleaser(String releaser) {
+        this.releaser = releaser;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getSubTitle() {
+        return subTitle;
+    }
+
+    public void setSubTitle(String subTitle) {
+        this.subTitle = subTitle;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+}

+ 80 - 0
src/main/java/com/uas/platform/b2b/mobile/model/ReleaseTotal.java

@@ -0,0 +1,80 @@
+package com.uas.platform.b2b.mobile.model;
+
+import java.util.Date;
+
+/**
+ * 消息条数
+ *
+ * Created by dongbw
+ * 17/03/28 10:10.
+ */
+public class ReleaseTotal {
+
+    private String title;
+
+    private Integer count;
+
+    private Date lastTime;
+
+    private String lastMessage;
+
+    private String type;
+
+    public ReleaseTotal(String title, Integer count, Date lastTime, String lastMessage, String type) {
+        this.title = title;
+        this.count = count;
+        this.lastTime = lastTime;
+        this.lastMessage = lastMessage;
+        this.type = type;
+    }
+
+    public ReleaseTotal(String title, Date lastTime, String lastMessage, String type) {
+        this.title = title;
+        this.lastTime = lastTime;
+        this.lastMessage = lastMessage;
+        this.type = type;
+    }
+
+    public ReleaseTotal() {
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Integer getCount() {
+        return count;
+    }
+
+    public void setCount(Integer count) {
+        this.count = count;
+    }
+
+    public Date getLastTime() {
+        return lastTime;
+    }
+
+    public void setLastTime(Date lastTime) {
+        this.lastTime = lastTime;
+    }
+
+    public String getLastMessage() {
+        return lastMessage;
+    }
+
+    public void setLastMessage(String lastMessage) {
+        this.lastMessage = lastMessage;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}

+ 53 - 0
src/main/java/com/uas/platform/b2b/mobile/service/MobileReleaseService.java

@@ -0,0 +1,53 @@
+package com.uas.platform.b2b.mobile.service;
+
+import org.springframework.http.ResponseEntity;
+import org.springframework.ui.ModelMap;
+
+/**
+ * Created by dongbw
+ * 17/03/28 9:26.
+ */
+public interface MobileReleaseService {
+
+    /**
+     * 获取消息条数
+     *
+     * @param emuu
+     * @param enuu
+     * @return
+     */
+    ModelMap getReleaseCounts(Long emuu, Long enuu);
+
+    /**
+     * 统计成功修改状态
+     *
+     * @param ids
+     */
+    void changeReleaseCounts(String ids);
+
+    /**
+     * 获取消息详细列表
+     *
+     * @param emuu
+     * @param enuu
+     * @param type
+     * @return
+     */
+    ModelMap getReleaseDetails(Long emuu, Long enuu, String type);
+
+    /**
+     *  获取成功修改状态
+     *
+     * @param ids
+     */
+    ModelMap changeReleaseDetails(String ids);
+
+    /**
+     *
+     *
+     * @param emuu
+     * @param enuu
+     * @return
+     */
+    ResponseEntity<ModelMap> pushRelease(Long emuu, Long enuu) throws Exception;
+}

+ 220 - 0
src/main/java/com/uas/platform/b2b/mobile/service/impl/MobileReleaseServiceImpl.java

@@ -0,0 +1,220 @@
+package com.uas.platform.b2b.mobile.service.impl;
+
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.dao.PagingReleaseDao;
+import com.uas.platform.b2b.dao.PagingReleaseDetailDao;
+import com.uas.platform.b2b.mobile.model.ReleaseDetail;
+import com.uas.platform.b2b.mobile.model.ReleaseTotal;
+import com.uas.platform.b2b.mobile.service.MobileReleaseService;
+import com.uas.platform.b2b.model.PagingRelease;
+import com.uas.platform.b2b.model.PagingReleaseDetail;
+import com.uas.platform.core.model.Constant;
+import com.uas.sso.common.util.HttpUtil;
+import com.uas.sso.common.util.HttpUtil.ResponseWrap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+
+/**
+ * Created by dongbw
+ * 17/03/28 9:27.
+ */
+@Service
+public class MobileReleaseServiceImpl implements MobileReleaseService {
+
+    @Autowired
+    private PagingReleaseDao pagingReleaseDao;
+
+    @Autowired
+    private CommonDao commonDao;
+
+    @Autowired
+    private JdbcTemplate  jdbcTemplate;
+
+    @Autowired
+    private PagingReleaseDetailDao pagingReleaseDetailDao;
+
+    private static String URL = "http://113.105.74.140:8092/tigase/baiduPush";
+
+    @Override
+    public ModelMap getReleaseCounts(Long vendUseruu, Long venduu) {
+        ModelMap map = new ModelMap();
+        String countSql = "select count(*) from purc$pagingrelease pr left join purc$pagingreleasedetail prd on pr.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and prd.prd_totalstatus = 0";
+        Integer allCount = commonDao.queryForObject(countSql, Integer.class);
+        String idSql = "select pr.pr_id from purc$pagingrelease pr left join purc$pagingreleasedetail prd on pr.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and prd.prd_totalstatus = 0";
+        List<Integer> ids = commonDao.queryForList(idSql, Integer.class);
+        String idString = new String();
+        for (Integer id : ids) {
+            if (!"".equals(idString)) {
+                idString = idString.concat(",");
+            }
+            idString = idString.concat(String.valueOf(id));
+        }
+        String title = "select a.pr_title " +
+                " from purc$pagingrelease a left join purc$pagingreleasedetail prd on a.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and not exists( " +
+                " select 1 from purc$pagingrelease b where b.pr_date>a.pr_date) and prd.prd_totalstatus = 0";
+        String date = "select a.pr_date " +
+                " from purc$pagingrelease a left join purc$pagingreleasedetail prd on a.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and not exists( " +
+                " select 1 from purc$pagingrelease b where b.pr_date>a.pr_date)  and prd.prd_totalstatus = 0";
+        String context = "select a.pr_context " +
+                " from purc$pagingrelease a left join purc$pagingreleasedetail prd on a.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and not exists( " +
+                " select 1 from purc$pagingrelease b where b.pr_date>a.pr_date)  and prd.prd_totalstatus = 0";
+        String type = "select a.pr_type " +
+                " from purc$pagingrelease a left join purc$pagingreleasedetail prd on a.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and not exists( " +
+                " select 1 from purc$pagingrelease b where b.pr_date>a.pr_date)  and prd.prd_totalstatus = 0";
+        List<ReleaseTotal> list = new ArrayList<>();
+        ReleaseTotal listdata = new ReleaseTotal();
+        List<String> dataTitles = commonDao.queryForList(title, String.class);  // 可能为0 或 1,所以用list装
+        if (!CollectionUtils.isEmpty(dataTitles)) {
+            String dataTitle = dataTitles.get(0);
+            listdata.setTitle(dataTitle);
+        }
+        List<Date> lastTimes = commonDao.queryForList(date, Date.class);
+        if (!CollectionUtils.isEmpty(lastTimes)) {
+            Date lastTime = lastTimes.get(0);
+            listdata.setLastTime(lastTime);
+        }
+        List<String> lastMessages = commonDao.queryForList(context, String.class);
+        if (!CollectionUtils.isEmpty(lastMessages)) {
+            String lastMessage = lastMessages.get(0);
+            listdata.setLastMessage(lastMessage);
+        }
+        List<String> dataTypes = commonDao.queryForList(type, String.class);
+        if (!CollectionUtils.isEmpty(dataTypes)) {
+            String dataType = dataTypes.get(0);
+            listdata.setType(dataType);
+            listdata.setCount(allCount);
+        }
+        list.add(listdata);
+        map.put("allCount", allCount);
+        map.put("success", true);
+        map.put("ids", idString);
+        map.put("listdata", list);
+        return map;
+    }
+
+    @Override
+    public void changeReleaseCounts(String ids) {
+        String[] idArray = ids.split(",");
+        for (String id : idArray) {
+            PagingRelease release = pagingReleaseDao.findOne(Long.valueOf(id));
+            Set<PagingReleaseDetail> releaseDetails = release.getPagingReleaseDetails();
+            for (PagingReleaseDetail detail : releaseDetails) {
+                detail.setTotalStatus(Constant.YES);
+                pagingReleaseDetailDao.save(detail);
+            }
+        }
+    }
+
+    @Override
+    public ModelMap getReleaseDetails(Long vendUseruu, Long venduu, String type) {
+        ModelMap map = new ModelMap();
+        String countSql = "select count(*) from purc$pagingrelease pr left join purc$pagingreleasedetail prd on pr.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and pr.pr_type = '" + type + "' and prd.prd_status = 0";
+        Integer allCount = commonDao.queryForObject(countSql, Integer.class);
+        String idSql = "select pr.pr_id from purc$pagingrelease pr left join purc$pagingreleasedetail prd on pr.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and pr.pr_type = '" + type + "' and prd.prd_status = 0";
+        List<Integer> ids = commonDao.queryForList(idSql, Integer.class);
+        String idString = new String();
+        for (Integer id : ids) {
+            if (!"".equals(idString)) {
+                idString = idString.concat(",");
+            }
+            idString = idString.concat(String.valueOf(id));
+        }
+//        String idSql = "select pr.pr_id from purc$pagingrelease pr left join purc$pagingreleasedetail prd on pr.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and pr.pr_type = " + type + " and prd.prd_status == 0;";
+//        List<Integer> ids = commonDao.queryForList(idSql, Integer.class);
+//        String idString = new String();
+//        for (Integer id : ids) {
+//            if (!"".equals(idString)) {
+//                idString = idString.concat(",");
+//            }
+//            idString = idString.concat(String.valueOf(id));
+//        }
+//        List<PagingReleaseDetail> detailList = pagingReleaseDetailDao.findAll(new Specification<PagingReleaseDetail>() {
+//            @Override
+//            public Predicate toPredicate(Root<PagingReleaseDetail> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+//                cb.equal(root.get("status"), Constant.NO);
+//                return query.getRestriction();
+//            }
+//        });
+//        final Set<Long> ids = new HashSet<>();
+//        for (PagingReleaseDetail detail : detailList) {
+//            ids.add(detail.getPagingRelease().getId());
+//        }
+//        List<PagingRelease> pagingReleaseList = pagingReleaseDao.findAll(new Specification<PagingRelease>() {
+//            @Override
+//            public Predicate toPredicate(Root<PagingRelease> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+//                Predicate p1 = root.get("id").in(ids.toArray());
+//                Predicate p2 = cb.equal(root.get("emUU"), emuu);
+//                Predicate p3 = cb.equal(root.get("enUU"), enuu);
+//                Predicate p = cb.and(p1,cb.and(p2,p3));
+//                query.where(p);
+//                return query.getRestriction();
+//            }
+//        });
+//        List<ReleaseDetail> releaseDetailList = new ArrayList<>();
+//        for (PagingRelease release : pagingReleaseList) {
+//            ReleaseDetail releaseDetail = new ReleaseDetail(release.getId(), release.getUser().getUserName(), release.getDate(), release.getContext(), release.getTitle());
+//            releaseDetailList.add(releaseDetail);
+//        }
+        String releaseSql = "select pr.pr_id id,pr.pr_emname releaser,pr.pr_date createTime,pr.pr_context subTitle,pr.pr_title title from purc$pagingrelease pr left join purc$pagingreleasedetail prd on pr.pr_id = prd.prd_prid where prd.prd_emuu = " + vendUseruu + " and prd.prd_venduu = " + venduu + " and pr.pr_type= '" + type + "' and prd.prd_status = 0 order by pr.pr_date desc";
+        List<ReleaseDetail> releaseDetailList = commonDao.query(releaseSql, ReleaseDetail.class);
+        map.put("allCount", allCount);
+        map.put("success", true);
+        map.put("ids", idString);
+        map.put("listdata", releaseDetailList);
+        return map;
+    }
+
+    @Override
+    public ModelMap changeReleaseDetails(String ids) {
+        ModelMap map = new ModelMap();
+        boolean success = false;
+        String[] idArray = ids.split(",");
+        for (String id : idArray) {
+            PagingRelease release = pagingReleaseDao.findOne(Long.valueOf(id));
+            Set<PagingReleaseDetail> releaseDetails = release.getPagingReleaseDetails();
+            for (PagingReleaseDetail detail : releaseDetails) {
+                detail.setStatus(Constant.YES);
+                pagingReleaseDetailDao.save(detail);
+                success = true;
+            }
+        }
+        map.put("success", success);
+        return map;
+    }
+
+    @Override
+    public ResponseEntity<ModelMap> pushRelease(Long vendUseruu, Long venduu) throws Exception {
+        List<PagingReleaseDetail> releaseDetailList = pagingReleaseDetailDao.findByVendUserUUAndVendUU(vendUseruu, venduu);
+        for (PagingReleaseDetail releaseDetail : releaseDetailList) {
+            Map<String, Object> params = new HashMap<>();
+            if (releaseDetail.getPagingRelease().getUser().getUserIMId() != null) {
+                params.put("master", releaseDetail.getPagingRelease().getEnterprise().getEnName());//账套 公司名称
+                params.put("userid", String.valueOf(releaseDetail.getPagingRelease().getUser().getUserIMId()));//推送目标用户
+                params.put("title", releaseDetail.getPagingRelease().getTitle());//推送标题
+                params.put("content", releaseDetail.getPagingRelease().getContext());//正文
+                params.put("enUU", String.valueOf(releaseDetail.getPagingRelease().getEnUU()));//UU号
+//                params.put("masterId", masterId);//账套ID
+                params.put("url", "http://uas.ubtob.com/#/sale/order");//跳转链接地址
+                params.put("pageTitle", releaseDetail.getPagingRelease().getTitle());//页面标题
+                params.put("platform", "B2B");//系统名称,ERP或
+                ResponseWrap res = null;
+                try {
+                    res = HttpUtil.doPost(URL, params);
+                    if (!res.isSuccess())
+                        throw new Exception(res.getContent());
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return new ResponseEntity<ModelMap>(HttpStatus.OK);
+    }
+
+}

+ 14 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrder.java

@@ -172,6 +172,12 @@ public class PurchaseOrder implements Serializable {
 	@Column(name = "pu_receivecode")
 	private String receiveCode;
 
+	/**
+	 * 对应erpid
+	 */
+	@Column(name = "pu_erpid")
+	private Long erpId;
+
 	/**
 	 * 打印日志
 	 */
@@ -389,4 +395,12 @@ public class PurchaseOrder implements Serializable {
 	public void setPrintLogs(Set<PrintLog> printLogs) {
 		this.printLogs = printLogs;
 	}
+
+	public Long getErpId() {
+		return erpId;
+	}
+
+	public void setErpId(Long erpId) {
+		this.erpId = erpId;
+	}
 }

+ 14 - 11
src/main/java/com/uas/platform/b2b/model/PurchaseOrderItem.java

@@ -1,20 +1,12 @@
 package com.uas.platform.b2b.model;
 
-import java.util.Date;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-
 import org.hibernate.annotations.DynamicUpdate;
 import org.hibernate.annotations.OptimisticLockType;
 import org.hibernate.annotations.OptimisticLocking;
 
+import javax.persistence.*;
+import java.util.*;
+
 /**
  * 平台里面,以供应商的角度来查看采购订单明细
  * 
@@ -350,4 +342,15 @@ public class PurchaseOrderItem {
 		this.factory = factory;
 	}
 
+	public static List<PurchaseOrder> ditinct(List<PurchaseOrderItem> items) {
+		List<PurchaseOrder> orders = new ArrayList<>();
+		Set<Long> keys = new HashSet<>();
+		for (PurchaseOrderItem item : items) {
+			if (!keys.contains(item.getOrder().getId())) {
+				orders.add(item.getOrder());
+				keys.add(item.getOrder().getId());
+			}
+		}
+		return orders;
+	}
 }

+ 18 - 31
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -1,40 +1,12 @@
 package com.uas.platform.b2b.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
-
 import com.uas.platform.b2b.core.util.ContextUtils;
-import com.uas.platform.b2b.dao.AttachDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryItemDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryReplyDao;
-import com.uas.platform.b2b.dao.UserBaseInfoDao;
+import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.QuotationDown;
 import com.uas.platform.b2b.erp.model.QuotationDownDetail;
 import com.uas.platform.b2b.event.PurchaseInquiryItemSaveEvent;
-import com.uas.platform.b2b.model.Attach;
-import com.uas.platform.b2b.model.PurchaseInquiry;
-import com.uas.platform.b2b.model.PurchaseInquiryItem;
-import com.uas.platform.b2b.model.PurchaseInquiryReply;
-import com.uas.platform.b2b.model.SearchFilter;
-import com.uas.platform.b2b.model.UserBaseInfo;
+import com.uas.platform.b2b.event.PurchaseInquiryItemSaveReleaseEvent;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.PurchaseInquiryService;
 import com.uas.platform.b2b.support.SystemSession;
@@ -46,6 +18,20 @@ import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.PageParams;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.*;
 
 @Service
 public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
@@ -72,6 +58,7 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	public void save(List<PurchaseInquiryItem> inquiryItems) {
 		inquiryItems = purchaseInquiryItemDao.save(inquiryItems);
 		ContextUtils.publishEvent(new PurchaseInquiryItemSaveEvent(inquiryItems));
+		ContextUtils.publishEvent(new PurchaseInquiryItemSaveReleaseEvent(inquiryItems));
 	}
 
 	@Override

+ 8 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -2,6 +2,7 @@ package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.event.PurchaseOrderReplyReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseOrderSaveEvent;
 import com.uas.platform.b2b.event.PurchaseOrderSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
@@ -207,6 +208,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 				XingePusher.pushByUser(user, "新增采购单回复", "单号:" + order.getCode() + ",供应商:" + vendor.getEnName(), "", "");
 			}
 		}
+		List<PurchaseOrderItem> newOrderItems = new ArrayList<>();
+		newOrderItems.add(reply.getOrderItem());
+		ContextUtils.publishEvent(new PurchaseOrderReplyReleaseEvent(PurchaseOrderItem.ditinct(newOrderItems)));
 		return reply;
 	}
 
@@ -250,8 +254,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	@Override
 	public List<PurchaseOrderReply> reply(String[] orderItemIdString) {
 		List<PurchaseOrderReply> replies = new ArrayList<PurchaseOrderReply>();
+		List<PurchaseOrderItem> itemList = new ArrayList<>();
 		for (String orderItemId : orderItemIdString) {
 			PurchaseOrderItem orderItem = purchaseOrderItemDao.findOne(Long.parseLong(orderItemId));
+			itemList.add(orderItem);
 			PurchaseOrderReply reply = new PurchaseOrderReply();
 			reply.setOrderItem(orderItem);
 			reply.setDelivery(orderItem.getDelivery());
@@ -263,6 +269,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 			if (reply != null)
 				replies.add(reply);
 		}
+		// 触发回复事件
+		ContextUtils.publishEvent(new PurchaseOrderReplyReleaseEvent(PurchaseOrderItem.ditinct(itemList)));
 		return replies;
 	}