Browse Source

增加报价、采纳状态上传到报价方UAS接口

dongbw 7 years ago
parent
commit
80a7ac0834

+ 118 - 0
src/main/java/com/uas/ps/inquiry/controller/ErpDownloadController.java

@@ -0,0 +1,118 @@
+package com.uas.ps.inquiry.controller;
+
+import com.uas.ps.core.logging.BufferedLoggerManager;
+import com.uas.ps.httplog.annotation.HttpLog;
+import com.uas.ps.inquiry.entity.Constant;
+import com.uas.ps.inquiry.entity.InquiryDetail;
+import com.uas.ps.inquiry.entity.InquirySource;
+import com.uas.ps.inquiry.model.PublicInquiryItem;
+import com.uas.ps.inquiry.service.AttachService;
+import com.uas.ps.inquiry.service.InquiryForSaleService;
+import com.uas.ps.inquiry.service.PublicInquiryService;
+import com.uas.ps.inquiry.support.InquiryBufferedLogger;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+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.RestController;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.List;
+
+
+/**
+ * Erp从公共服务下载数据接口
+ *
+ * 便于将之前PublicInquiryController中的Erp相关方法整理到这个Controller,当前Controller路径与之相同。
+ * @author  dongbw
+ * @version 2018年7月3日 14:27:25
+ */
+@RestController
+@RequestMapping("/inquiry/public")
+public class ErpDownloadController {
+
+    @Autowired
+    private PublicInquiryService publicInquiryService;
+
+    @Autowired
+    private AttachService attachService;
+
+    @Autowired
+    private InquiryForSaleService saleService;
+
+    private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
+
+    private final static Logger log = Logger.getLogger(Logger.class);
+
+    /**
+     * 买家采纳或拒绝之后,上传到报价方UAS
+     *
+     * @param enUU 报价企业UU
+     * @author dongbw
+     * @date 2018年7月3日 15:49:11
+     */
+    @HttpLog
+    @RequestMapping(value = "/down/decide", method = RequestMethod.GET)
+    public List<PublicInquiryItem> downloadDecide(Long enUU) {
+        long start = System.currentTimeMillis();
+        List<PublicInquiryItem> items = publicInquiryService.findDecideNotUploadReply(enUU);
+        log.info("/inquiry/public/down/decide 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "买家采纳或拒绝之后,上传到报价方UAS", "size: " + items.size(), Constant.UU, enUU, InquirySource.ERP.name());
+        return items;
+    }
+
+    /**
+     * 买家采纳或拒绝之后,上传到报价方UAS 之后,UAS回调 修改状态
+     *
+     * @param ids 采纳或拒绝的报价单明细id list
+     * @param enUU 报价方企业UU
+     * @author dongbw
+     * @date 2018年7月3日 15:49:11
+     */
+    @HttpLog
+    @RequestMapping(value = "/down/decide/back", method = RequestMethod.POST)
+    public ModelMap downloadDecideBack(List<Long> ids, Long enUU) {
+        long start = System.currentTimeMillis();
+        ModelMap map = publicInquiryService.downloadDecideBack(ids, enUU);
+        log.info("/inquiry/public/down/decide/back 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "买家采纳或拒绝之后,上传到报价方UAS的回调", "size: " + ids.size(), Constant.UU, enUU, InquirySource.ERP.name());
+        return map;
+    }
+
+    /**
+     * 将报价方在商城报价的单据同步到报价方UAS
+     *
+     * @param enUU 报价企业UU
+     * @author dongbw
+     * @date 2018年7月3日 16:21
+     */
+    @HttpLog
+    @RequestMapping(value = "/down/reply", method = RequestMethod.GET)
+    public List<InquiryDetail> getReply(Long enUU) {
+        long start = System.currentTimeMillis();
+        List<InquiryDetail> details = publicInquiryService.findNotUploadToUas(enUU);
+        log.info("/inquiry/public/quotation 耗时:" + (System.currentTimeMillis() - start));
+        logger.log("公共询价", "ERP获取供应商报价信息", "size: " + details.size(), Constant.UU, enUU, InquirySource.ERP.name());
+        return details;
+    }
+
+    /**
+     * 将报价方在商城报价的单据同步到报价方UAS 之后 回调 修改状态
+     *
+     * @param enUU 报价企业UU
+     * @param ids 报价单明细id list
+     * @author dongbw
+     * @date 2018年7月3日 16:21
+     */
+    @HttpLog
+    @RequestMapping(value = "/down/reply/back", method = RequestMethod.POST)
+    public void onReplySuccess(String ids, Long enUU) throws UnsupportedEncodingException {
+        long start = System.currentTimeMillis();
+        String[] idArray = URLDecoder.decode(ids, "UTF-8").split(",");
+        logger.log("公共询价", "将报价方在商城报价的单据同步到报价方UAS 之后 回调 修改状态", "id: " + idArray, Constant.UU, enUU, InquirySource.ERP.name());
+        publicInquiryService.onReplyDownLoadSuccess(idArray);
+        log.info("/inquiry/public/down/reply/back post 耗时:" + (System.currentTimeMillis() - start));
+    }
+}

+ 19 - 0
src/main/java/com/uas/ps/inquiry/dao/PublicInquiryItemDao.java

@@ -93,4 +93,23 @@ public interface PublicInquiryItemDao extends JpaRepository<PublicInquiryItem, L
      * @return
      */
     List<PublicInquiryItem> findBySourceIdOrderByOfferTimeDesc(Long sourceId);
+
+    /**
+     * 根据enUU和上传状态获取报价明细
+     * @param vendUU 企业UU
+     * @param status  状态
+     * @return 报价单list
+     */
+    List<PublicInquiryItem> findByVendUUAndDecideDownStatus(Long vendUU, short status);
+
+    /**
+     * 通过企业UU和回复下载状态查询已报价 未传到卖家ERP的单据
+     *
+     * @param vendUU 企业UU
+     * @param replySendStatus 未下载状态202
+     * @author dongbw
+     * @return
+     */
+    @Query(value = "select * from PublicInquiryItem d where d.id_venduu = :vendUU and d.id_replysendstatus = :replySendStatus limit 200", nativeQuery = true)
+    List<PublicInquiryItem> findByVendUUAndReplySendStatus(@Param("vendUU")Long vendUU, @Param("replySendStatus") short replySendStatus);
 }

+ 2 - 3
src/main/java/com/uas/ps/inquiry/model/PublicInquiry.java

@@ -2,7 +2,6 @@ package com.uas.ps.inquiry.model;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import org.springframework.util.CollectionUtils;
 
 import javax.persistence.*;
 import java.io.Serializable;
@@ -129,13 +128,13 @@ public class PublicInquiry implements Serializable {
 	private Set<Attach> attachs;
 
 	/**
-	 * 客户已提交
+	 * 客户已提交 1 为已提交 否则为未提交
 	 */
 	@Column(name = "in_checked")
 	private Short check;
 
 	/**
-	 * 是否过期
+	 * 是否过期 1 为过期 否则为未过期
 	 */
 	@Column(name = "in_overdue", insertable = false, updatable = false)
 	private Short overdue;

+ 16 - 2
src/main/java/com/uas/ps/inquiry/model/PublicInquiryItem.java

@@ -127,7 +127,7 @@ public class PublicInquiryItem implements Serializable {
 	private Long vendUserUU;
 
     /**
-     * 供应商企业信息
+     * 供应商用户信息
      */
     @OneToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
     @JoinColumn(name = "id_venduseruu", insertable = false, updatable = false)
@@ -196,7 +196,7 @@ public class PublicInquiryItem implements Serializable {
 	private List<PublicInquiryReply> replies;
 
 	/**
-	 * {未回复、已回复}
+	 * 状态 200 待回复 、201 已回复 、314 已作废
 	 */
 	@Column(name = "id_status")
 	private Short status;
@@ -238,6 +238,12 @@ public class PublicInquiryItem implements Serializable {
 	@Column(name = "id_decidestatus")
 	private Short decideStatus;
 
+	/**
+	 * 报价方UAS 是否采纳信息传输状态{待上传、已下载}  202 待上传  203  已下载
+	 */
+	@Column(name = "id_decidesdowntatus")
+	private Short decideDownStatus;
+
 	/**
 	 * (针对卖家的)作废信息传输状态{待上传、已下载}
 	 */
@@ -692,6 +698,14 @@ public class PublicInquiryItem implements Serializable {
 		this.decideStatus = decideStatus;
 	}
 
+	public Short getDecideDownStatus() {
+		return decideDownStatus;
+	}
+
+	public void setDecideDownStatus(Short decideDownStatus) {
+		this.decideDownStatus = decideDownStatus;
+	}
+
 	public Short getCustLap() {
 		return custLap;
 	}

+ 9 - 2
src/main/java/com/uas/ps/inquiry/model/PurcInquiryItem.java

@@ -226,14 +226,21 @@ public class PurcInquiryItem {
 	private Short custLap;
 
 	/**
-	 * search项目进行是否已过期时实际根据主表中enddate与当前时间的比较获取,但是数据库无字段会报“标识符无效”的错误
-	 * 所以建立此字段,但是此字段不会赋值。
+	 * 是否已过期 1为已过期,0为未过期 已过期单据无法报价
 	 * 
 	 * @return
 	 */
 	@Column(name = "id_overdue")
 	private Short overdue;
 
+	/**
+	 * 是否已过期上传状态  待下载   已下载
+	 *
+	 * @return
+	 */
+	@Column(name = "id_overduedownloadstatus")
+	private Short overdueDownloadStatus;
+
 	/**
 	 * 来源ERP或B2B
 	 */

+ 32 - 4
src/main/java/com/uas/ps/inquiry/service/PublicInquiryService.java

@@ -5,14 +5,13 @@ import com.uas.ps.inquiry.entity.*;
 import com.uas.ps.inquiry.model.*;
 import com.uas.ps.inquiry.page.PageInfo;
 import com.uas.ps.inquiry.page.SearchFilter;
-
-import java.util.List;
-import java.util.Map;
-
 import javassist.NotFoundException;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 公共询价接口
  * <p>
@@ -81,6 +80,12 @@ public interface PublicInquiryService {
      */
     void onReplyUploadSuccess(String[] idArray);
 
+    /**
+     * 下载成功之后,更新报价下载状态
+     * @param idArray 报价单明细id
+     */
+    void onReplyDownLoadSuccess(String[] idArray);
+
     /**
      * ERP提交公共询价单之后,更新平台状态,让公共询价服务中心询价单不能进行报价操作
      *
@@ -276,5 +281,28 @@ public interface PublicInquiryService {
      * @return
      */
     ModelMap countByMonth(Integer year, Integer month);
+
+    /**
+     * 根据enUU获取已被采纳或拒绝的报价单明细
+     * @param enUU  报价企业UU
+     * @return
+     */
+    List<PublicInquiryItem> findDecideNotUploadReply(Long enUU);
+
+    /**
+     * 已被采纳或拒绝的报价单明细 上传买方UAS之后,回调
+     * @param ids  报价单明细ids
+     * @param enUU 报价企业UU
+     * @return
+     */
+    ModelMap downloadDecideBack(List<Long> ids, Long enUU);
+
+    /**
+     * 将在b2c或者b2b报价的单据,上传到卖方UAS
+     * @param enUU 企业UU
+     * @return
+     */
+    List<InquiryDetail> findNotUploadToUas(Long enUU);
+
 }
 

+ 3 - 0
src/main/java/com/uas/ps/inquiry/service/impl/InquiryServiceImpl.java

@@ -397,6 +397,7 @@ public class InquiryServiceImpl implements InquiryService {
         // 验证是否重复操作
         validateInquiry(item);
         item.setAgreed(status);
+        item.setDecideDownStatus((short) Status.NOT_UPLOAD.value());
         itemDao.save(item);
         // 更新询价推荐表相关信息
         if (status.equals(Constant.YES)) {
@@ -425,6 +426,7 @@ public class InquiryServiceImpl implements InquiryService {
         // 验证是否重复操作
         validateInquiry(item);
         item.setAgreed(status);
+        item.setDecideDownStatus((short) Status.NOT_UPLOAD.value());
         itemDao.save(item);
         // 更新询价推荐表相关信息
         if (status.equals(Constant.YES)) {
@@ -512,6 +514,7 @@ public class InquiryServiceImpl implements InquiryService {
         validateInquiry(item);
         item.setAgreed(status);
         item.setRefusereason(refusereason);
+        item.setDecideDownStatus((short) Status.NOT_UPLOAD.value());
         itemDao.save(item);
         if (status.equals(Constant.YES)) {
             inquiryRemindDao.updateStatus(item.getSourceId(), Status.ALLOW.value(), item.getVendUU());

+ 79 - 1
src/main/java/com/uas/ps/inquiry/service/impl/PublicInquiryServiceImpl.java

@@ -656,6 +656,21 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         return new ArrayList<>();
     }
 
+    /**
+     * 查找报价的单据,上传到卖家UAS
+     *
+     * @param enUU 企业UU
+     * @return
+     */
+    @Override
+    public List<InquiryDetail> findNotUploadToUas(Long enUU) {
+        List<PublicInquiryItem> items = publicInquiryItemDao.findByVendUUAndReplySendStatus(enUU, (short) Status.NOT_UPLOAD.value());
+        if (!CollectionUtils.isEmpty(items)) {
+            return convertPublicInquiryReply(items);
+        }
+        return new ArrayList<>();
+    }
+
     /**
      * 将公共询价服务中心的公共询价转成ERP的对应的字段
      *
@@ -684,14 +699,40 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
      */
     @Override
     public void onReplyUploadSuccess(String[] idArray) {
+        List<PublicInquiryItem> items = new ArrayList<>();
         for (String id : idArray) {
             PublicInquiryItem item = publicInquiryItemDao.findOne(Long.parseLong(id));
             if (item != null) {
                 item.setBackStatus((short) Status.DOWNLOADED.value());
                 item.setErpstatus(Constant.YES);
-                publicInquiryItemDao.save(item);
+                items.add(item);
             }
         }
+        if (!CollectionUtils.isEmpty(items)) {
+            publicInquiryItemDao.save(items);
+        }
+    }
+
+    /**
+     * 下载完成后更新公共询价服务中心询价单明细的下载状态
+     *
+     * @param idArray 询价单明细id
+     * @author hejq
+     * @date 2018-01-14 12:12
+     */
+    @Override
+    public void onReplyDownLoadSuccess(String[] idArray) {
+        List<PublicInquiryItem> items = new ArrayList<>();
+        for (String id : idArray) {
+            PublicInquiryItem item = publicInquiryItemDao.findOne(Long.parseLong(id));
+            if (item != null) {
+                item.setReplySendStatus((short) Status.DOWNLOADED.value());
+                items.add(item);
+            }
+        }
+        if (!CollectionUtils.isEmpty(items)) {
+            publicInquiryItemDao.save(items);
+        }
     }
 
     /**
@@ -1540,4 +1581,41 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
         }
         return result;
     }
+
+    /**
+     * 根据enUU获取
+     *
+     * @param enUU 报价企业UU
+     * @return
+     */
+    @Override
+    public List<PublicInquiryItem> findDecideNotUploadReply(Long enUU) {
+        String sql = "select id_id id, id_sourceid sourceId, id_agreed agreed, id_refusereason refusereason from public$inquiryitems " +
+                "where id_venduu = " + enUU + " and id_decidedownstatus = " + Status.NOT_UPLOAD.value() + " limit 200";
+        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(PublicInquiryItem.class));
+    }
+
+    /**
+     * 已被采纳或拒绝的报价单明细 上传买方UAS之后,回调
+     *
+     * @param ids 报价单明细ids
+     * @param enUU 报价企业UU
+     * @return
+     */
+    @Override
+    public ModelMap downloadDecideBack(List<Long> ids, Long enUU) {
+        List<PublicInquiryItem> items = publicInquiryItemDao.findAll(ids);
+        List<PublicInquiryItem> saveList = new ArrayList<>();
+        ModelMap map = new ModelMap();
+        for (PublicInquiryItem item : items) {
+            if (enUU.equals(item.getVendUU())) {
+                item.setDecideDownStatus((short) Status.REPLIED.value());
+                saveList.add(item);
+            }
+        }
+        publicInquiryItemDao.save(saveList);
+        map.put("success", true);
+        return map;
+    }
+
 }