Browse Source

bom求购

liusw 8 years ago
parent
commit
f34dfd2290

+ 69 - 7
src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseController.java

@@ -1,11 +1,15 @@
 package com.uas.platform.b2c.trade.seek.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.base.model.FileUpload;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseBomList;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseByBatch;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseGoods;
 import com.uas.platform.b2c.trade.seek.service.SeekPurchaseService;
 import com.uas.platform.b2c.trade.support.ResultMap;
@@ -22,11 +26,9 @@ import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -69,7 +71,6 @@ public class SeekPurchaseController {
 
     /**
      * 求购排行榜
-     *
      * @return 排行榜
      */
     @RequestMapping(value = "/getSeekRanking", method = RequestMethod.GET)
@@ -97,6 +98,7 @@ public class SeekPurchaseController {
      *
      * @param spId 求购id
      * @param ofId 报价id
+     * @param purchaseQuantity 采购数量
      * @return 更新后的求购信息
      */
     @RequestMapping(value = "/updateSeekPurchaseStatus", method = RequestMethod.PUT)
@@ -118,21 +120,21 @@ public class SeekPurchaseController {
      */
     @RequestMapping(value = "/getUserSeekPageInfo", method = RequestMethod.GET)
     public Page<SeekPurchaseGoods> getUserSeekPageInfo(PageParams params, String keyWord, String deadline,
-            Integer status, String minReleaseDate, String maxReleaseDate, boolean  isMallGoods) {
+            Integer status, String minReleaseDate, String maxReleaseDate, boolean  isMallGoods, Long bomId) {
         logger.log("求购", "分页获取采购列表,参数为" + params);
         User user = SystemSession.getUser();
         PageInfo info = new PageInfo(params);
         return seekPurchaseService
-                .getUserSeekPageInfo(info, keyWord, deadline, status, minReleaseDate, maxReleaseDate, isMallGoods, user);
+                .getUserSeekPageInfo(info, keyWord, deadline, status, minReleaseDate, maxReleaseDate, isMallGoods, user, bomId);
     }
 
     /**
      * 获取求购商城现货
      * @param spId 求购id
-     * @return
      */
     @RequestMapping(value = "/getMallGoodsList", method = RequestMethod.GET)
     public List<Goods> getMallGoodsList(Long spId) {
+        logger.log("求购", "获取商城现货,spId:" + spId);
         return seekPurchaseService.getMallGoodsList(spId);
     }
 
@@ -158,10 +160,70 @@ public class SeekPurchaseController {
                 throw new IllegalOperatorException("文件格式不正确!请上传.xls或.xlsx格式的文件");
             }
             User user = SystemSession.getUser();
-            seekPurchaseService.importBom(workbook, bomName, user);
+            logger.log("求购", "导入新的bom求购,uu:" + user.getUserUU());
+            return seekPurchaseService.importBom(workbook, bomName, user);
         } catch (IOException e) {
             e.printStackTrace();
         }
         return null;
     }
+
+    /**
+     * 分页获取求购临时数据
+     * @param params
+     * @param bomId
+     * @return
+     */
+    @RequestMapping(value = "/getSeekPurchaseByBatchPageInfo", method = RequestMethod.GET)
+    public Page<SeekPurchaseByBatch> getSeekPurchaseByBatchPageInfo(PageParams params, Long bomId) {
+        PageInfo pageInfo = new PageInfo(params);
+        logger.log("求购", "分页获取求购临时数据,bomId:" + bomId);
+        return seekPurchaseService.getSeekPurchaseByBatchPageInfo(pageInfo, bomId);
+    }
+
+    /**
+     * 确认发布
+     * @param bomId
+     * @param spIds
+     * @return
+     */
+    @RequestMapping(value = "/confirmBom", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultMap confirmBom(@RequestBody String json) {
+        JSONObject object = FastjsonUtils.parseObject(json);
+        logger.log("求购", "确认发布bom求购,bomId:" + object.get("bomId"));
+        return seekPurchaseService.confirmBom(Long.valueOf(object.get("bomId").toString()), object.get("spIds") == null ? null : object.get("spIds").toString());
+    }
+
+    /**
+     * 获取bom求购列表
+     * @param params
+     * @return
+     */
+    @RequestMapping(value = "/getSeekPurchaseBomListPage", method = RequestMethod.GET)
+    public Page<SeekPurchaseBomList> getSeekPurchaseBomListPage(PageParams params) {
+        User user = SystemSession.getUser();
+        PageInfo pageInfo = new PageInfo(params);
+        logger.log("求购", "获取bom求购列表,uu:" + user.getUserUU());
+        return seekPurchaseService.getSeekPurchaseBomListPage(pageInfo, user);
+    }
+
+    // 根据bomId获取当前bom单的情况
+    @RequestMapping(value = "/getImportBomInfo", method = RequestMethod.GET)
+    public Map<String, Object> getImportBomInfo(Long bomId) {
+        return seekPurchaseService.getImportBomInfo(bomId);
+    }
+
+    // 修改临时表数据
+    @RequestMapping(value = "/updateSeekPurchaseByBatch", method = RequestMethod.PUT)
+    public ResultMap updateSeekPurchaseByBatch(@RequestBody SeekPurchaseByBatch seekPurchaseByBatch) {
+        return seekPurchaseService.updateSeekPurchaseByBatch(seekPurchaseByBatch);
+    }
+
+    // 删除临时表数据
+    @RequestMapping(value = "/deleteSeekPurchaseByBatch", method = RequestMethod.PUT)
+    public ResultMap deleteSeekPurchaseByBatch(@RequestBody String json) {
+        JSONObject object = FastjsonUtils.parseObject(json);
+        return seekPurchaseService.deleteSeekPurchaseByBatch(object.get("spIds").toString());
+    }
 }

+ 19 - 0
src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekPurchaseBomListDao.java

@@ -0,0 +1,19 @@
+package com.uas.platform.b2c.trade.seek.dao;
+
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseBomList;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 求购临时表业务Dao
+ *
+ * @author liusw
+ * @version 2017/12/12 16:48
+ */
+@Repository
+public interface SeekPurchaseBomListDao extends JpaSpecificationExecutor<SeekPurchaseBomList>,
+        JpaRepository<SeekPurchaseBomList, Long> {
+
+}
+

+ 13 - 0
src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekPurchaseByBatchDao.java

@@ -4,6 +4,8 @@ import com.uas.platform.b2c.trade.seek.model.SeekPurchaseByBatch;
 import java.util.List;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 /**
@@ -21,5 +23,16 @@ public interface SeekPurchaseByBatchDao extends JpaSpecificationExecutor<SeekPur
      * @return
      */
     List<SeekPurchaseByBatch> findByBomId(Long bomId);
+
+    @Query(name = "delete from trade$seek_purchase_by_batch where id in (spIds)")
+    void batchDelete(List<String> spIds);
+
+    /**
+     * 根据bomId和spIds查询求购临时表的信息
+     * @param bomId
+     * @return
+     */
+//    @Query(name = "select * from trade$seek_purchase_by_batch where bom_id = :bomId and sp_id in (:id)", nativeQuery = true)
+//    List<SeekPurchaseByBatch> getInfo(@Param("bomId") Long bomId, @Param("id") List<String> ids);
 }
 

+ 130 - 0
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseBomList.java

@@ -0,0 +1,130 @@
+package com.uas.platform.b2c.trade.seek.model;
+
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/**
+ * 买家中心 bom求购列表
+ *
+ * @author liusw
+ * @version 2017/12/30 16:41
+ */
+@Entity
+@Table(name = "v$seek$seekpurchasebomlist")
+public class SeekPurchaseBomList {
+    /**
+     * bom_id
+     */
+    @Id
+    @Column(name = "bom_id")
+    private Long bomId;
+
+    /**
+     * 发布bom求购 enuu
+     */
+    @Column(name = "bom_enuu")
+    private Long enUu;
+
+    /**
+     * 发布bom uu号
+     */
+    @Column(name = "bom_uu")
+    private Long uu;
+
+    /**
+     * bom名称
+     */
+    @Column(name = "bom_name")
+    private String name;
+
+    /**
+     * 产品数量
+     */
+    @Column(name = "product_amount")
+    private Integer productAmount;
+
+    /**
+     * 现货数量
+     */
+    @Column(name = "goods_amount")
+    private Integer goodsAmount;
+
+    /**
+     * 报价数量
+     */
+    @Column(name = "offer_amount")
+    private Integer offerAmount;
+
+    /**
+     * 发布时间
+     */
+    @Column(name = "bom_release_date")
+    private Date releaseDate;
+
+    public Long getBomId() {
+        return bomId;
+    }
+
+    public void setBomId(Long bomId) {
+        this.bomId = bomId;
+    }
+
+    public Long getEnUu() {
+        return enUu;
+    }
+
+    public void setEnUu(Long enUu) {
+        this.enUu = enUu;
+    }
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getProductAmount() {
+        return productAmount;
+    }
+
+    public void setProductAmount(Integer productAmount) {
+        this.productAmount = productAmount;
+    }
+
+    public Integer getGoodsAmount() {
+        return goodsAmount;
+    }
+
+    public void setGoodsAmount(Integer goodsAmount) {
+        this.goodsAmount = goodsAmount;
+    }
+
+    public Integer getOfferAmount() {
+        return offerAmount;
+    }
+
+    public void setOfferAmount(Integer offerAmount) {
+        this.offerAmount = offerAmount;
+    }
+
+    public Date getReleaseDate() {
+        return releaseDate;
+    }
+
+    public void setReleaseDate(Date releaseDate) {
+        this.releaseDate = releaseDate;
+    }
+}

+ 3 - 10
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseByBatch.java

@@ -1,18 +1,11 @@
 package com.uas.platform.b2c.trade.seek.model;
 
-import com.uas.platform.b2c.core.utils.RegexConstant;
-import com.uas.platform.b2c.core.utils.StringUtilB2C;
-import com.uas.platform.b2c.prod.commodity.constant.ErrorInfoConstant;
-import java.io.UnsupportedEncodingException;
 import java.util.Date;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.Table;
-import org.springframework.util.StringUtils;
 
 /**
  * Bom求购临时类
@@ -51,7 +44,7 @@ public class SeekPurchaseByBatch {
      * 求购截止时间
      */
     @Column(name = "sp_deadline")
-    private String deadline;
+    private Date deadline;
 
     /**
      * 求购产品生产日期
@@ -125,11 +118,11 @@ public class SeekPurchaseByBatch {
         this.brand = brand;
     }
 
-    public String getDeadline() {
+    public Date getDeadline() {
         return deadline;
     }
 
-    public void setDeadline(String deadline) {
+    public void setDeadline(Date deadline) {
         this.deadline = deadline;
     }
 

+ 17 - 0
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseGoods.java

@@ -28,6 +28,9 @@ public class SeekPurchaseGoods {
     @Column(name = "sp_id")
     private Long spId;
 
+    /**
+     * 商城现货数量
+     */
     @Column(name = "goods_amount")
     private Long goodsAmount;
 
@@ -135,6 +138,12 @@ public class SeekPurchaseGoods {
     @Column(name = "sp_releaseDate")
     private Date releaseDate;
 
+    /**
+     * bom_id
+     */
+    @Column(name = "bom_id")
+    private Long bomId;
+
     /**
      * 剩余时间
      */
@@ -296,4 +305,12 @@ public class SeekPurchaseGoods {
     public Long getRemainingTime() {
         return deadline.getTime() - System.currentTimeMillis();
     }
+
+    public Long getBomId() {
+        return bomId;
+    }
+
+    public void setBomId(Long bomId) {
+        this.bomId = bomId;
+    }
 }

+ 23 - 2
src/main/java/com/uas/platform/b2c/trade/seek/service/SeekPurchaseService.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2c.trade.seek.service;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseBomList;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseByBatch;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseGoods;
 import com.uas.platform.b2c.trade.support.ResultMap;
@@ -65,7 +66,7 @@ public interface SeekPurchaseService {
      * @return
      */
     Page<SeekPurchaseGoods> getUserSeekPageInfo(PageInfo pageInfo, String keyWord, String deadline,
-            Integer status, String minReleaseDate, String maxReleaseDate, boolean  isMallGoods, User user);
+            Integer status, String minReleaseDate, String maxReleaseDate, boolean  isMallGoods, User user, Long bomId);
 
     /**
      * 获取商城现货
@@ -98,6 +99,26 @@ public interface SeekPurchaseService {
      */
     Page<SeekPurchaseByBatch> getSeekPurchaseByBatchPageInfo(PageInfo pageInfo, Long bomId);
 
-
+    /**
+     * 确认发布
+     *
+     * @param bomId
+     * @param spIds
+     * @return
+     */
     ResultMap confirmBom(Long bomId, String spIds);
+
+    /**
+     * 分页获取bom求购列表
+     * @param pageInfo
+     * @param user
+     * @return
+     */
+    Page<SeekPurchaseBomList> getSeekPurchaseBomListPage(PageInfo pageInfo, User user);
+
+    Map<String, Object> getImportBomInfo(Long bomId);
+
+    ResultMap updateSeekPurchaseByBatch(SeekPurchaseByBatch seekPurchaseByBatch);
+
+    ResultMap deleteSeekPurchaseByBatch(String spIds);
 }

+ 99 - 14
src/main/java/com/uas/platform/b2c/trade/seek/service/impl/SeekPurchaseServiceImpl.java

@@ -9,12 +9,14 @@ import com.uas.platform.b2c.prod.product.brand.modal.Brand;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentDao;
 import com.uas.platform.b2c.prod.product.component.modal.Component;
 import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseBomDao;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseBomListDao;
 import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseByBatchDao;
 import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseDao;
 import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseGoodsDao;
 import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseOfferDao;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseBom;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseBomList;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseByBatch;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseGoods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseOffer;
@@ -28,11 +30,12 @@ import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -93,6 +96,9 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
     @Autowired
     private SeekPurchaseByBatchDao seekPurchaseByBatchDao;
 
+    @Autowired
+    private SeekPurchaseBomListDao seekPurchaseBomListDao;
+
     @Override
     public Page<SeekPurchase> getSeekPageInfo(final PageInfo pageInfo, String keyWord) {
         // 关键字
@@ -159,9 +165,7 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
             }
         }
         // 截止日期
-        Long addTime = Long.valueOf(23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000);
-        Long deadline = seekPurchase.getDeadline().getTime();
-        seekPurchase.setDeadline(new Date(addTime + deadline));
+        seekPurchase.setDeadline(addTime(seekPurchase.getDeadline()));
 
         seekPurchase.setKind(kind);
         seekPurchase.setReleaseDate(new Date(System.currentTimeMillis()));
@@ -182,6 +186,17 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
         return ResultMap.success(null);
     }
 
+    /**
+     * 截止日期处理
+     * @param date
+     * @return
+     */
+    private Date addTime(Date date) {
+        Long addTime = Long.valueOf(23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000);
+        Long deadline = date.getTime();
+        return new Date(addTime + deadline);
+    }
+
     @Override
     public ResultMap updateSeekPurchaseStatus(Long spId, Long ofId, Double purchaseQuantity) {
         // 采纳数量 只能输入0-1亿之间的正整数
@@ -210,7 +225,7 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
     @Override
     public Page<SeekPurchaseGoods> getUserSeekPageInfo(final PageInfo pageInfo, String keyWord,
             String deadline, Integer status, String minReleaseDate, String maxReleaseDate,
-            boolean isMallGoods, User user) {
+            boolean isMallGoods, User user, Long bomId) {
         if (isMallGoods) {
             pageInfo.expression(PredicateUtils.gt("goodsAmount", 0, false));
         }
@@ -253,6 +268,9 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
             pageInfo.filter("uu", user.getUserUU());
             pageInfo.expression(PredicateUtils.isNull("enUu"));
         }
+        if (bomId != null) {
+            pageInfo.filter("bomId", bomId);
+        }
         pageInfo.sorting("releaseDate", Direction.DESC);
         Page<SeekPurchaseGoods> pageSeeks = seekPurchaseGoodsDao.findAll(new Specification<SeekPurchaseGoods>() {
             public Predicate toPredicate(Root<SeekPurchaseGoods> root, CriteriaQuery<?> query,
@@ -352,7 +370,7 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
             } catch (UnsupportedEncodingException e) {
                 e.printStackTrace();
             }
-            seekPurchaseByBatch.setDeadline(deadline);
+            seekPurchaseByBatch.setDeadline(addTime(new Date(deadline)));
         }
 
         // 求购数量
@@ -461,15 +479,82 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
 
     @Override
     public ResultMap confirmBom(Long bomId, String spIds) {
-        List<SeekPurchaseByBatch> seekPurchaseByBatchList = seekPurchaseByBatchDao.findByBomId(bomId);
-        if (!StringUtils.isEmpty(spIds)) {
-            // 保存选中
+        SeekPurchaseBom seekPurchaseBom = seekPurchaseBomDao.findOne(bomId);
+        List<SeekPurchaseByBatch> seekPurchaseByBatchList = null;
+//        if (!StringUtils.isEmpty(spIds)) {
+//            // 保存选中
+//           seekPurchaseByBatchList = seekPurchaseByBatchDao.getInfo(bomId, Arrays.asList(spIds.split(",")));
+//        } else {
+//            // 保存所有
+//            seekPurchaseByBatchList = seekPurchaseByBatchDao.findByBomId(bomId);
+//        }
+        seekPurchaseByBatchList = seekPurchaseByBatchDao.findByBomId(bomId);
+        // 将临时表转换成正式表数据
+        List<SeekPurchase> seekPurchaseList = new ArrayList<>();
+        // 发布到正式表的临时数据
+        List<SeekPurchaseByBatch> deleteBatchList = new ArrayList<>();
+        for (SeekPurchaseByBatch batch : seekPurchaseByBatchList) {
+            SeekPurchase seekPurchase = new SeekPurchase();
+            if (!StringUtils.isEmpty(batch.getCode()) && !StringUtils.isEmpty(batch.getBrand()) && !StringUtils.isEmpty(batch.getDeadline())) {
+                //seekPurchase = (SeekPurchase) batch;
+                seekPurchase.setDeadline(batch.getDeadline());
+                seekPurchase.setCurrency(batch.getCurrency());
+                seekPurchase.setReleaseDate(batch.getReleaseDate());
+                seekPurchase.setCode(batch.getCode());
+                seekPurchase.setBrand(batch.getBrand());
+                seekPurchase.setAmount(batch.getAmount());
+                seekPurchase.setEncapsulation(batch.getEncapsulation());
+                seekPurchase.setUnitPrice(batch.getUnitPrice());
+                seekPurchase.setProduceDate(batch.getProduceDate());
+                seekPurchase.setBomId(batch.getBomId());
+                seekPurchase.setEnUu(seekPurchaseBom.getEnuu());
+                seekPurchase.setUu(seekPurchaseBom.getUu());
+                seekPurchase.setStatus(Status.NO_OFFER.getValue());
+                deleteBatchList.add(batch);
+                seekPurchaseList.add(seekPurchase);
+            }
+        }
+        seekPurchaseList = seekPurchasedao.save(seekPurchaseList);
+        seekPurchaseBom.setAmount(seekPurchaseBom.getAmount() == null ? 0 : seekPurchaseBom.getAmount() + seekPurchaseList.size());
+        seekPurchaseBom.setStatus(1);
+        seekPurchaseBomDao.save(seekPurchaseBom);
+        seekPurchaseByBatchDao.delete(deleteBatchList);
+        return ResultMap.success(seekPurchaseList.size());
+    }
+
+    @Override
+    public Page<SeekPurchaseBomList> getSeekPurchaseBomListPage(final PageInfo pageInfo, User user) {
+        if (user.getEnterprise() != null) {
+            pageInfo.filter("enUu", user.getEnterprise().getUu());
         } else {
-            // 保存所有
+            pageInfo.filter("uu", user.getUserUU());
         }
+        Page<SeekPurchaseBomList> pageSeeks = seekPurchaseBomListDao.findAll(new Specification<SeekPurchaseBomList>() {
+            public Predicate toPredicate(Root<SeekPurchaseBomList> root, CriteriaQuery<?> query,
+                    CriteriaBuilder builder) {
+                query.where(pageInfo.getPredicates(root, query, builder));
+                return null;
+            }
+        }, pageInfo);
+        return pageSeeks;
+    }
 
-        SeekPurchaseBom seekPurchaseBom = seekPurchaseBomDao.findOne(bomId);
-        seekPurchaseBom.setAmount(seekPurchaseByBatchList.size());
-        return null;
+    @Override
+    public Map<String, Object> getImportBomInfo(Long bomId) {
+        String sql = "select bom_id,count(bom_id) as successImport,(sum((IF(sp_brand is null,1,0)))+sum((IF(sp_code is null,1,0)))+sum((IF(sp_deadline is null,1,0)))) as nullField "
+                + "from trade$seek_purchase_by_batch where bom_id = ? group by bom_id";
+        return jdbcTemplate.queryForMap(sql, new Object[]{bomId});
+    }
+
+    @Override
+    public ResultMap updateSeekPurchaseByBatch(SeekPurchaseByBatch seekPurchaseByBatch) {
+        seekPurchaseByBatchDao.save(seekPurchaseByBatch);
+        return ResultMap.success(null);
+    }
+
+    @Override
+    public ResultMap deleteSeekPurchaseByBatch(String spIds) {
+        seekPurchaseByBatchDao.batchDelete(Arrays.asList(spIds.split(",")));
+        return ResultMap.success(null);
     }
 }

+ 4 - 0
src/main/webapp/resources/js/common/query/seekPurchase.js

@@ -38,6 +38,10 @@ define([ 'ngResource' ], function() {
       updateSeekPurchaseStatus: {
         url: 'seek/updateSeekPurchaseStatus',
         method: 'PUT'
+      },
+      getSeekPurchaseBomListPage: {
+        url: 'seek/getSeekPurchaseBomListPage',
+        method: 'GET'
       }
 		});
 }])

+ 56 - 6
src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js

@@ -12,7 +12,7 @@ define(['app/app'], function (app) {
           $rootScope.active = 'seek_purchase';
           document.title = '我的求购-优软商城';
           $scope.activeType = 'seekManage';
-          $scope.isBOM = true;
+          $scope.isBOM = false;
           $scope.isEditName = false;
 
           $scope.toogleType = function (type) {
@@ -23,6 +23,38 @@ define(['app/app'], function (app) {
             $scope.isEditName = flag;
           }
 
+          $scope.setIsBom = function (flag, bomId) {
+            if (flag) {
+              $scope.activeType = 'seekManage';
+              $scope.seekPurchaseTableParams = new ngTableParams({
+                page: 1,
+                count: 10
+              }, {
+                total: 0,
+                getData: function ($defer, params) {
+                  const param = BaseService.parseParams(params.url());
+                  param.isMallGoods = $scope.isMallGoods;
+                  param.deadline = $scope.deadline;
+                  param.keyWord = $scope.keyWord;
+                  param.status = $scope.searchStatus;
+
+                  param.minReleaseDate = $scope.startDate
+                      ? $scope.startDate.getTime() : null;
+                  param.maxReleaseDate = $scope.endDate ? $scope.endDate.getTime()
+                      : null;
+                  seekPurchase.getUserSeekPageInfo(param, function (data) {
+                    params.total(data.totalElements);
+                    $defer.resolve(data.content);
+                    $scope.seekListData = data;
+                  }, function (response) {
+                    toaster.pop('error', response.data);
+                  });
+                }
+              });
+            }
+            $scope.isBOM = flag;
+          }
+
           var enIdFilter = $filter('EncryptionFilter');
 
           $scope.applyObj = {
@@ -600,10 +632,11 @@ define(['app/app'], function (app) {
 
           // 上传Excel批量发布(大量)
           $scope.upload = function() {
-            if(($scope.bomFiles == null) || ($scope.bomFiles.length == 0)) {
-              return ;
-            }
-            var file = $scope.bomFiles[0];
+            // if(($scope.bomFiles == null) || ($scope.bomFiles.length == 0)) {
+            //   return ;
+            // }
+            var file = angular.element('#uploadCommodity')[0].files[0];
+            console.info(file);
             if(!file) {
               toaster.pop('info', '请选择需要上传的文件');
               return;
@@ -613,9 +646,26 @@ define(['app/app'], function (app) {
               file: file,
               method: 'POST'
             }).success(function(data) {
-
+              window.open("http://10.1.51.90:3000/applyPurchase/" + data.data);
             }).error(function(response) {
             });
           };
+
+          $scope.bomTableParams = new ngTableParams({
+            page: 1,
+            count: 10
+          }, {
+            total: 0,
+            getData: function ($defer, params) {
+              const param = BaseService.parseParams(params.url());
+              seekPurchase.getSeekPurchaseBomListPage(param, function (data) {
+                params.total(data.totalElements);
+                $scope.bomTotal = data.totalElements;
+                $defer.resolve(data.content);
+              }, function (response) {
+                toaster.pop('error', response.data);
+              });
+            }
+          });
         }]);
 });

+ 15 - 37
src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html

@@ -573,7 +573,7 @@
         </div>
     </div>
     <div class="seek-purchase-content" ng-if="activeType == 'seekManage'">
-        <div class="BOM-header">
+        <div class="BOM-header" ng-if="isBOM">
             <a ng-click="toogleType('bomManage')">&lt;返回BOM列表</a>
             <div>
                 <p class="BOM-name-area" ng-show="!isEditName">
@@ -692,12 +692,12 @@
                 </div>
             </div>
         </div>
-        <div class="upload-content">
-            <input type="text" name="txt" id="upload_text" />
-            <i>选择文件</i>
-            <input type="file" id="uploadCommodity" ng-file-select="" ng-change="selectFile()" accept="*.xls,*.xlsx" ng-model="bomFiles" ng-multiple="false" class="upload01" />
-            <a href="javascript:void(0)" ng-click="upload()" class="blue-bg" style="margin-left: 18px;">确认上传</a>
-        </div>
+        <!--<div class="upload-content">-->
+            <!--<input type="text" name="txt" id="upload_text" />-->
+            <!--<i>选择文件</i>-->
+            <!--<input type="file" id="uploadCommodity" ng-file-select="" ng-change="selectFile()" accept="*.xls,*.xlsx" ng-model="bomFiles" ng-multiple="false" class="upload01" />-->
+            <!--<a href="javascript:void(0)" ng-click="upload()" class="blue-bg" style="margin-left: 18px;">确认上传</a>-->
+        <!--</div>-->
         <table ng-table="seekPurchaseTableParams">
             <thead>
             <tr>
@@ -852,11 +852,11 @@
     </div>
     <div class="bom-manage" ng-if="activeType == 'bomManage'">
         <div class="bom-manage-header">
-            <p><span>56</span>&nbsp;个BOM清单</p>
+            <p><span ng-bind="bomTotal">56</span>&nbsp;个BOM清单</p>
             <div class="fr">
                 <a href="">下载BOM模板 <i class="fa fa-long-arrow-right"></i></a>
                 <label>导入新BOM
-                    <input type="file">
+                    <input type="file" id="uploadCommodity" ng-file-select="" ng-change="upload()" ng-model="bomFiles" accept="*.xls,*.xlsx" ng-multiple="false"/>
                 </label>
             </div>
         </div>
@@ -896,39 +896,17 @@
                 </div>
             </div>
         </div>
-        <table>
+        <table ng-table="bomTableParams">
             <tbody>
-                <tr>
-                    <td>
-                        <img src="static/img/seekPurchase/Excel.png" alt="">
-                        <div>
-                            <p>我就是我</p>
-                            <div>共 <span class="blue-text">21</span> 个产品,<span class="red-text">10</span> 个有报价,<span class="red-text">7</span> 个有现货</div>
-                            <div>2017-12-12 11:11:11</div>
-                        </div>
-                        <a href="" class="fr">查看详情</a>
-                    </td>
-                </tr>
-                <tr>
-                    <td>
-                        <img src="static/img/seekPurchase/Excel.png" alt="">
-                        <div>
-                            <p>我就是我</p>
-                            <div>共 <span class="blue-text">21</span> 个产品,<span class="red-text">10</span> 个有报价,<span class="red-text">7</span> 个有现货</div>
-                            <div>2017-12-12 11:11:11</div>
-                        </div>
-                        <a href="" class="fr">查看详情</a>
-                    </td>
-                </tr>
-                <tr>
+                <tr ng-repeat="bom in $data">
                     <td>
                         <img src="static/img/seekPurchase/Excel.png" alt="">
                         <div>
-                            <p>我就是我</p>
-                            <div>共 <span class="blue-text">21</span> 个产品,<span class="red-text">10</span> 个有报价,<span class="red-text">7</span> 个有现货</div>
-                            <div>2017-12-12 11:11:11</div>
+                            <p ng-bind="bom.name"></p>
+                            <div>共 <span class="blue-text" ng-bind="bom.productAmount"></span> 个产品,<span class="red-text" ng-bind="bom.offerAmount">10</span> 个有报价,<span class="red-text" ng-bind="bom.goodsAmount">7</span> 个有现货</div>
+                            <div ng-bind="bom.releaseDate | date:'yyyy-MM-dd HH:mm:ss'"></div>
                         </div>
-                        <a href="" class="fr">查看详情</a>
+                        <a ng-click="setIsBom(true, bom.bomId)" class="fr">查看详情</a>
                     </td>
                 </tr>
             </tbody>