Просмотр исходного кода

新增bom清单选中部分产品发布求购接口

dongbw 7 лет назад
Родитель
Сommit
9bc96187b4

+ 13 - 0
src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseBomController.java

@@ -255,4 +255,17 @@ public class SeekPurchaseBomController {
     public ModelMap deleteBomProducts(String detailIds) {
     public ModelMap deleteBomProducts(String detailIds) {
         return seekPurchaseBomService.deleteBomProducts(detailIds);
         return seekPurchaseBomService.deleteBomProducts(detailIds);
     }
     }
+
+
+    /**
+     * 部分发布,bom明细非全选时
+     * @param detailIds detail id串   1,2,3,4...
+     * @return 处理结果
+     */
+    @RequestMapping(value = "/confirmBom/selected", method = RequestMethod.POST)
+    public ResultMap confirmBomSelectedItems(String detailIds) {
+        logger.log("求购", "部分发布bom求购,detailIds: " + detailIds);
+        User user = SystemSession.getUser();
+        return seekPurchaseBomService.confirmBomSelectedItems(detailIds, user, inquiryServiceInnerUrl);
+    }
 }
 }

+ 7 - 0
src/main/java/com/uas/platform/b2c/trade/seek/service/SeekPurchaseBomService.java

@@ -121,4 +121,11 @@ public interface SeekPurchaseBomService {
      * @return 处理结果
      * @return 处理结果
      */
      */
     ModelMap deleteBomProducts(String detailIds);
     ModelMap deleteBomProducts(String detailIds);
+
+    /**
+     * 部分发布,bom明细非全选时
+     * @param detailIds detail id串   1,2,3,4...
+     * @return 处理结果
+     */
+    ResultMap confirmBomSelectedItems(String detailIds, User user, String inquiryServiceInnerUrl);
 }
 }

+ 111 - 85
src/main/java/com/uas/platform/b2c/trade/seek/service/impl/SeekPurchaseBomServiceImpl.java

@@ -499,92 +499,8 @@ public class SeekPurchaseBomServiceImpl implements SeekPurchaseBomService {
     @Override
     @Override
     public ResultMap confirmBom(Long bomId, User user, String url) {
     public ResultMap confirmBom(Long bomId, User user, String url) {
         SeekPurchaseBom seekPurchaseBom = seekPurchaseBomDao.findOne(bomId);
         SeekPurchaseBom seekPurchaseBom = seekPurchaseBomDao.findOne(bomId);
-        if (seekPurchaseBom == null) {
-            return new ResultMap(CodeType.NOT_PERMIT, "请勿重复发布");
-        }
-        PurcInquiry inquiry = new PurcInquiry();
         List<SeekPurchaseByBatch> seekPurchaseByBatchList = seekPurchaseByBatchDao.findByBomId(bomId);
         List<SeekPurchaseByBatch> seekPurchaseByBatchList = seekPurchaseByBatchDao.findByBomId(bomId);
-        // 商城现货的数量
-        int haveGoodsCount = 0;
-        Set<PurcInquiryItem> inquiryItems = new HashSet<>();
-//        List<SeekPurchaseByBatch> deleteBatchList = new ArrayList<>();
-        Date endDate = null;
-        for (SeekPurchaseByBatch batch : seekPurchaseByBatchList) {
-            SeekPurchase seekPurchase = new SeekPurchase();
-            Calendar now = Calendar.getInstance();
-            now.add(Calendar.DAY_OF_MONTH, 91);
-            if (!StringUtils.isEmpty(batch.getCode()) && !StringUtils.isEmpty(batch.getBrand()) && !StringUtils.isEmpty(batch.getDeadline()) && batch.getDeadline().compareTo(now.getTime()) != 1) {
-                PurcInquiryItem inquiryItem = new PurcInquiryItem();
-                inquiryItem.setProdTitle(batch.getCode());
-                inquiryItem.setUserUU(user.getUserUU());
-                inquiryItem.setSource("MALL");
-                inquiryItem.setUserName(user.getUserName());
-                inquiryItem.setUserTel(user.getUserTel());
-                inquiryItem.setNeedquantity(batch.getAmount());
-                inquiryItem.setInbrand(batch.getBrand());
-                inquiryItem.setCurrency(batch.getCurrency());
-                inquiryItem.setCmpCode(batch.getCode().toUpperCase());
-                inquiryItem.setUnitPrice(batch.getUnitPrice());
-                inquiryItem.setProduceDate(batch.getProduceDate());
-                inquiryItem.setDate(new Date());
-                inquiryItem.setEndDate(batch.getDeadline());
-                if (StringUtils.isEmpty(batch.getKind())) {
-                    batch.setKind(matchKind(batch.getBrand(), batch.getCode()));
-                }
-                inquiryItem.setProdTitle(batch.getKind());
-                inquiryItem.setSpec(batch.getSpec());
-                if (StringUtils.isEmpty(endDate)) {
-                    endDate = batch.getDeadline();
-                } else {
-                    if (endDate.compareTo(batch.getDeadline()) != 1) {
-                        endDate = batch.getDeadline();
-                    }
-                }
-                inquiryItem.setEncapsulation(batch.getEncapsulation());
-                // 商城现货搜索
-                List<Goods> goods = goodsDao.getGoodsByCodeAndName(seekPurchase.getCode(), seekPurchase.getBrand());
-                if (goods != null && goods.size() > 0) {
-                    haveGoodsCount++;
-                }
-//                deleteBatchList.add(batch);
-                inquiryItems.add(inquiryItem);
-            }
-        }
-//        seekPurchaseByBatchDao.delete(deleteBatchList);
-        // 询价单数据插入
-        inquiry.setAmount(inquiryItems.size());
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddsss");
-        try {
-            inquiry.setCode("MALL" + sdf.parse(sdf.format(new Date())).getTime());
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        inquiry.setDate(new Date(System.currentTimeMillis()));
-        inquiry.setEndDate(endDate);
-        inquiry.setInquiryItems(inquiryItems);
-        if (!StringUtils.isEmpty(user.getEnterprise())) {
-            inquiry.setEnUU(user.getEnterprise().getUu());
-        }
-        inquiry.setRecorderUU(user.getUserUU());
-        inquiry.setSourceapp("MALL");
-        inquiry.setRemark(seekPurchaseBom.getName());
-        inquiry.setInquiryItems(inquiryItems);
-        String res = "";
-        try {
-            res = HttpUtil.doPost(url + "/inquiry/buyer/save",  FlexJsonUtils.toJsonDeep(inquiry));
-            logger.log("bom求购确认发布成功",user.getUserUU() + ",参数:" + FlexJsonUtils.toJsonDeep(inquiry));
-        } catch (Exception e) {
-            logger.log("bom求购确认发布报错",user.getUserUU() + ",错误:" + e.getMessage() + "参数:" + FlexJsonUtils.toJsonDeep(inquiry));
-            e.printStackTrace();
-            throw new IllegalOperatorException("发布失败");
-        }
-        // 删除bom的临时数据
-//        seekPurchaseBomDao.delete(seekPurchaseBom.getId());
-//        seekPurchaseBomListDao.deleteByBomId(seekPurchaseBom.getId());
-        Map<String, Object> result = new HashMap<>();
-        result.put("successAmount", inquiryItems.size());
-        result.put("goodsAmount", haveGoodsCount);
-        return ResultMap.success(result);
+        return publishBomInquiry(user, url, seekPurchaseByBatchList, seekPurchaseBom);
     }
     }
 
 
     /**
     /**
@@ -813,4 +729,114 @@ public class SeekPurchaseBomServiceImpl implements SeekPurchaseBomService {
         return map;
         return map;
     }
     }
 
 
+    /**
+     * 部分发布,bom明细非全选时
+     *
+     * @param detailIds              detail id串   1,2,3,4...
+     * @param user  用户信息
+     * @param url 询价服务地址
+     * @return 处理结果
+     */
+    @Override
+    public ResultMap confirmBomSelectedItems(String detailIds, User user, String url) {
+        List<Long> detailIdList = new ArrayList<>();
+        String[] detailIdsArray = detailIds.split(",");
+        for (String detailId : detailIdsArray) {
+            detailIdList.add(Long.valueOf(detailId));
+        }
+        List<SeekPurchaseByBatch> seekPurchaseByBatchList = seekPurchaseByBatchDao.findAll(detailIdList);
+        if (!CollectionUtils.isEmpty(seekPurchaseByBatchList)) {
+            SeekPurchaseBom seekPurchaseBom = seekPurchaseBomDao.findOne(seekPurchaseByBatchList.get(0).getBomId());
+            return publishBomInquiry(user, url, seekPurchaseByBatchList, seekPurchaseBom);
+        }
+        return new ResultMap(CodeType.NOT_EXiST, "未找到对应bom明细记录");
+    }
+
+    /**
+     * 发布bom询价
+     * @param user  用户信息
+     * @param url  询价服务url
+     * @param seekPurchaseByBatchList  bom明细List
+     * @return 处理结果
+     */
+    private ResultMap publishBomInquiry(User user, String url, List<SeekPurchaseByBatch> seekPurchaseByBatchList, SeekPurchaseBom seekPurchaseBom) {
+        PurcInquiry inquiry = new PurcInquiry();
+        // 商城现货的数量
+        int haveGoodsCount = 0;
+        Set<PurcInquiryItem> inquiryItems = new HashSet<>();
+        Date endDate = null;
+        for (SeekPurchaseByBatch batch : seekPurchaseByBatchList) {
+            SeekPurchase seekPurchase = new SeekPurchase();
+            Calendar now = Calendar.getInstance();
+            now.add(Calendar.DAY_OF_MONTH, 91);
+            if (!StringUtils.isEmpty(batch.getCode()) && !StringUtils.isEmpty(batch.getBrand()) && !StringUtils.isEmpty(batch.getDeadline()) && batch.getDeadline().compareTo(now.getTime()) != 1) {
+                PurcInquiryItem inquiryItem = new PurcInquiryItem();
+                inquiryItem.setProdTitle(batch.getCode());
+                inquiryItem.setUserUU(user.getUserUU());
+                inquiryItem.setSource("MALL");
+                inquiryItem.setUserName(user.getUserName());
+                inquiryItem.setUserTel(user.getUserTel());
+                inquiryItem.setNeedquantity(batch.getAmount());
+                inquiryItem.setInbrand(batch.getBrand());
+                inquiryItem.setCurrency(batch.getCurrency());
+                inquiryItem.setCmpCode(batch.getCode().toUpperCase());
+                inquiryItem.setUnitPrice(batch.getUnitPrice());
+                inquiryItem.setProduceDate(batch.getProduceDate());
+                inquiryItem.setDate(new Date());
+                inquiryItem.setEndDate(batch.getDeadline());
+                if (StringUtils.isEmpty(batch.getKind())) {
+                    batch.setKind(matchKind(batch.getBrand(), batch.getCode()));
+                }
+                inquiryItem.setProdTitle(batch.getKind());
+                inquiryItem.setSpec(batch.getSpec());
+                if (StringUtils.isEmpty(endDate)) {
+                    endDate = batch.getDeadline();
+                } else {
+                    if (endDate.compareTo(batch.getDeadline()) != 1) {
+                        endDate = batch.getDeadline();
+                    }
+                }
+                inquiryItem.setEncapsulation(batch.getEncapsulation());
+                // 商城现货搜索
+                List<Goods> goods = goodsDao.getGoodsByCodeAndName(seekPurchase.getCode(), seekPurchase.getBrand());
+                if (goods != null && goods.size() > 0) {
+                    haveGoodsCount++;
+                }
+//                deleteBatchList.add(batch);
+                inquiryItems.add(inquiryItem);
+            }
+        }
+        // 询价单数据插入
+        inquiry.setAmount(inquiryItems.size());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddsss");
+        try {
+            inquiry.setCode("MALL" + sdf.parse(sdf.format(new Date())).getTime());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        inquiry.setDate(new Date(System.currentTimeMillis()));
+        inquiry.setEndDate(endDate);
+        inquiry.setInquiryItems(inquiryItems);
+        if (!StringUtils.isEmpty(user.getEnterprise())) {
+            inquiry.setEnUU(user.getEnterprise().getUu());
+        }
+        inquiry.setRecorderUU(user.getUserUU());
+        inquiry.setSourceapp("MALL");
+        inquiry.setRemark(seekPurchaseBom.getName());
+        inquiry.setInquiryItems(inquiryItems);
+        String res = "";
+        try {
+            res = HttpUtil.doPost(url + "/inquiry/buyer/save",  FlexJsonUtils.toJsonDeep(inquiry));
+            logger.log("bom求购确认发布成功",user.getUserUU() + ",参数:" + FlexJsonUtils.toJsonDeep(inquiry));
+        } catch (Exception e) {
+            logger.log("bom求购确认发布报错",user.getUserUU() + ",错误:" + e.getMessage() + "参数:" + FlexJsonUtils.toJsonDeep(inquiry));
+            e.printStackTrace();
+            throw new IllegalOperatorException("发布失败");
+        }
+        Map<String, Object> result = new HashMap<>();
+        result.put("successAmount", inquiryItems.size());
+        result.put("goodsAmount", haveGoodsCount);
+        return ResultMap.success(result);
+    }
+
 }
 }