Переглянути джерело

修改uas招标接口发布、保存、更新已保存、发布已保存方法,加入供应商联系人的信息。新增招标单附件问题。修改公开招标单转投标单设置联系人信息方法。

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@8564 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
dongbw 9 роки тому
батько
коміт
ead1975ea3

+ 225 - 104
src/main/java/com/uas/platform/b2b/erp/controller/TenderController.java

@@ -2,12 +2,14 @@ package com.uas.platform.b2b.erp.controller;
 
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.erp.model.SaleTenderErp;
 import com.uas.platform.b2b.erp.service.TenderService;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.search.SearchService;
-import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.UserService;
+import com.uas.platform.b2b.service.VendorService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.temporary.model.TenderContactInfo;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
@@ -48,7 +50,7 @@ public class TenderController {
     private UserService userService;
 
     @Autowired
-    private AttachService attachService;
+    private VendorService vendorService;
 
     /**
      * 作为采购方,发布招标单
@@ -58,44 +60,61 @@ public class TenderController {
     @RequestMapping(value = "/publish", method = RequestMethod.POST)
     @ResponseBody
     @Transactional
-    public ModelMap publishTender(String tender, String vendorUUs) throws UnsupportedEncodingException {
+    public ModelMap publishTender(String tender, String enInfos, String attaches) throws UnsupportedEncodingException {
         tender = URLDecoder.decode(tender, "UTF-8");
         PurchaseTender purchaseTender = FlexJsonUtils.fromJson(tender, PurchaseTender.class);
-        if (purchaseTender.getIfOpen() == Constant.YES) {
-            return tenderService.publishOpen(purchaseTender);
+        if (null != enInfos) {
+            enInfos = URLDecoder.decode(enInfos, "UTF-8");
+            List<TenderContactInfo> contactInfos = FlexJsonUtils.fromJsonArray(enInfos, TenderContactInfo.class);
+            if (null != attaches) {
+                attaches = URLDecoder.decode(attaches, "UTF-8");
+                List<Attach> tenderAttaches = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                return tenderService.publishOrSave(purchaseTender, contactInfos, tenderAttaches);
+            } else {
+                return tenderService.publishOrSave(purchaseTender, contactInfos, null);
+            }
+
         } else {
-            if (null != vendorUUs) {
-                vendorUUs = URLDecoder.decode(vendorUUs, "UTF-8");
-                List<Long> vendUUs = FlexJsonUtils.fromJsonArray(vendorUUs, Long.class);
-                return tenderService.publish(purchaseTender, vendUUs);
+            if (null != attaches) {
+                attaches = URLDecoder.decode(attaches, "UTF-8");
+                List<Attach> tenderAttaches = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                return tenderService.publishOrSave(purchaseTender, null, tenderAttaches);
+            } else {
+                return tenderService.publishOrSave(purchaseTender, null, null);
             }
         }
-        ModelMap map = new ModelMap();
-        map.put("success", false);
-        return map;
     }
 
     /**
      * 作为采购方,保存招标单
      *
      * @param tender    招标单
-     * @param vendorUUs 所选供应商uu
+     * @param enInfos 所选供应商uu
      */
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ResponseBody
     @Transactional
-    public ModelMap saveTender(String tender, String vendorUUs) throws UnsupportedEncodingException {
+    public ModelMap saveTender(String tender, String enInfos, String attaches) throws UnsupportedEncodingException {
         tender = URLDecoder.decode(tender, "UTF-8");
         PurchaseTender purchaseTender = FlexJsonUtils.fromJson(tender, PurchaseTender.class);
-        if (purchaseTender.getIfOpen() == Constant.YES) {
-            return tenderService.saveOpen(purchaseTender);
+        if (null != enInfos) {
+            enInfos = URLDecoder.decode(enInfos, "UTF-8");
+            List<TenderContactInfo> contactInfos = FlexJsonUtils.fromJsonArray(enInfos, TenderContactInfo.class);
+            if (null != attaches) {
+                attaches = URLDecoder.decode(attaches, "UTF-8");
+                List<Attach> saleTenderAttaches = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                tenderService.publishOrSave(purchaseTender, contactInfos, saleTenderAttaches);
+            } else {
+                tenderService.publishOrSave(purchaseTender, contactInfos, null);
+            }
+
         } else {
-            if (null != vendorUUs) {
-                vendorUUs = URLDecoder.decode(vendorUUs, "UTF-8");
-//                vendorUUs = "[".concat(vendorUUs);
-//                vendorUUs = vendorUUs.concat("]");
-                List<Long> vendUUs = FlexJsonUtils.fromJsonArray(vendorUUs, Long.class);
-                return tenderService.save(purchaseTender, vendUUs);
+            if (null != attaches) {
+                attaches = URLDecoder.decode(attaches, "UTF-8");
+                List<Attach> saleTenderAttaches = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                tenderService.publishOrSave(purchaseTender, null, saleTenderAttaches);
+            } else {
+                tenderService.publishOrSave(purchaseTender, null, null);
             }
         }
         ModelMap map = new ModelMap();
@@ -148,6 +167,16 @@ public class TenderController {
         return searchService.searchVendorIds(keyword, pageParams);
     }
 
+    /**
+     * 获取供应商联系人
+     * @param venduu 供应商UU
+     *
+     */
+    @RequestMapping(value = "/contacts", method = RequestMethod.GET)
+    private List<VendorContact> getContacts(Long venduu) {
+        return vendorService.getContacts(venduu);
+    }
+
     /**
      * 查看招标单详情
      *
@@ -188,14 +217,14 @@ public class TenderController {
     }
 
     /**
-     * 作为供应商,查看收到的标单(全部)
+     * 作为供应商,查看收到的标单(全部)
      *
      * @param params 分页参数
      * @return Spage
      */
     @RequestMapping(method = RequestMethod.GET)
     @ResponseBody
-    public SPage<PurchaseTender> getAllTenders(PageParams params, String searchFilter) {
+    public SPage<SaleTenderErp> getAllTenders(PageParams params, String searchFilter) {
         JSONObject jsonObject = JSONObject.parseObject(searchFilter);
         String keyword = jsonObject.getString("keyword");
         com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
@@ -205,23 +234,24 @@ public class TenderController {
             return null;
         }
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
+        sortList.add(new Sort("st_id", false, Sort.Type.LONG, 1L));
         pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
-        pageParams.getFilters().put("pt_ispublish", Constant.YES);
-//        pageParams.getFilters().put("pt_ifopen", Constant.NO);  // 现在公开的也在这个列表
-        pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getEnName());
-        return searchService.erpSearchPurcTenderIds(keyword, pageParams);
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("st_auditstatus", Constant.YES); // 非已提交状态
+        pageParams.setNotEqualFilters(map);
+        pageParams.getFilters().put("st_venduu", SystemSession.getUser().getEnterprise().getUu()); // 投标单属于本企业
+        return searchService.erpSearchSaleTenderIds(keyword, pageParams);
     }
 
     /**
-     * 作为供应商,查看收到的标单(已结标)
+     * 作为供应商,查看收到的标单(已结标)
      *
      * @param params 分页参数
      * @return Sapge
      */
-    @RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
+    @RequestMapping(params = RequestState.END, method = RequestMethod.GET)
     @ResponseBody
-    public SPage<PurchaseTender> getDoneTenders(PageParams params, String searchFilter) {
+    public SPage<SaleTenderErp> getDoneTenders(PageParams params, String searchFilter) {
         JSONObject jsonObject = JSONObject.parseObject(searchFilter);
         String keyword = jsonObject.getString("keyword");
         com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
@@ -231,23 +261,25 @@ public class TenderController {
             return null;
         }
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
+        sortList.add(new Sort("st_id", false, Sort.Type.LONG, 1L));
         pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
-        pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getEnName());
-        pageParams.getFilters().put("pt_ispublish", Constant.YES);
-        pageParams.getFilters().put("pt_result", Constant.YES);
-        return searchService.erpSearchPurcTenderIds(keyword, pageParams);
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("st_auditstatus", Constant.YES); // 非已提交状态
+        pageParams.setNotEqualFilters(map);
+        pageParams.getFilters().put("st_venduu", SystemSession.getUser().getEnterprise().getUu()); // 投标单属于本企业
+        pageParams.getFilters().put("st_status", "已结标");
+        return searchService.erpSearchSaleTenderIds(keyword, pageParams);
     }
 
     /**
-     * 作为供应商,查看收到的招标单(待评标)
+     * 作为供应商,查看收到的投标单(已投标)
      *
      * @param params 分页参数
      * @return 招标单Spage
      */
-    @RequestMapping(params = RequestState.WAITING, method = RequestMethod.GET)
+    @RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
     @ResponseBody
-    public SPage<PurchaseTender> getWaitingTenders(PageParams params, String searchFilter) {
+    public SPage<SaleTenderErp> getWaitingTenders(PageParams params, String searchFilter) {
         JSONObject jsonObject = JSONObject.parseObject(searchFilter);
         String keyword = jsonObject.getString("keyword");
         com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
@@ -257,27 +289,26 @@ public class TenderController {
             return null;
         }
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
+        sortList.add(new Sort("st_id", false, Sort.Type.LONG, 1L));
         pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
-        pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getEnName());
-        pageParams.getFilters().put("pt_ispublish", Constant.YES);
-//        pageParams.getFilters().put("pt_ifopen", Constant.NO);
-        pageParams.getFilters().put("pt_overdue", Constant.YES);
-        pageParams.getFilters().put("pt_result", Constant.NO);
-        pageParams.getFilters().put("pt_status", "待评标");
-        return searchService.erpSearchPurcTenderIds(keyword, pageParams);
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("st_auditstatus", Constant.YES); // 非已提交状态
+        pageParams.setNotEqualFilters(map);
+        pageParams.getFilters().put("st_venduu", SystemSession.getUser().getEnterprise().getUu()); // 投标单属于本企业
+        pageParams.getFilters().put("st_status", "已投标");
+        return searchService.erpSearchSaleTenderIds(keyword, pageParams);
     }
 
 
     /**
-     * 作为供应商,查看收到的标单(待投标)
+     * 作为供应商,查看收到的标单(待投标)
      *
      * @param params 分页参数
      * @return 招标单Spage
      */
     @RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
     @ResponseBody
-    public SPage<PurchaseTender> getTodoTenders(PageParams params, String searchFilter) {
+    public SPage<SaleTenderErp> getTodoTenders(PageParams params, String searchFilter) {
         JSONObject jsonObject = JSONObject.parseObject(searchFilter);
         String keyword = jsonObject.getString("keyword");
         com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
@@ -287,43 +318,44 @@ public class TenderController {
             return null;
         }
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
+        sortList.add(new Sort("st_id", false, Sort.Type.LONG, 1L));
         pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
-        pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getEnName());
-        pageParams.getFilters().put("pt_ispublish", Constant.YES);
-//        pageParams.getFilters().put("pt_ifopen", Constant.NO);
-        pageParams.getFilters().put("pt_overdue", Constant.NO);
-        return searchService.erpSearchPurcTenderIds(keyword, pageParams);
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("st_auditstatus", Constant.YES); // 非已提交状态
+        pageParams.setNotEqualFilters(map);
+        pageParams.getFilters().put("st_venduu", SystemSession.getUser().getEnterprise().getUu()); // 投标单属于本企业
+        pageParams.getFilters().put("st_status", "待投标");
+        return searchService.erpSearchSaleTenderIds(keyword, pageParams);
     }
 
 
-    /**
-     * 作为供应商,查看收到的招标单(过期)
-     *
-     * @param params 分页参数
-     * @return 招标单Spage
-     */
-    @RequestMapping(params = RequestState.END, method = RequestMethod.GET)
-    @ResponseBody
-    public SPage<PurchaseTender> getEndTenders(PageParams params, String searchFilter) {
-        JSONObject jsonObject = JSONObject.parseObject(searchFilter);
-        String keyword = jsonObject.getString("keyword");
-        com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
-        // 判断当前用户是否被客户分配
-        SearchFilter filter = userService.distribute();
-        if (filter != null && filter.getDistribute() == null) {
-            return null;
-        }
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
-        pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
-        pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getEnName());
-        pageParams.getFilters().put("pt_ispublish", Constant.YES);
-//        pageParams.getFilters().put("pt_ifopen", Constant.NO);
-        pageParams.getFilters().put("pt_status", "待投标");
-        pageParams.getFilters().put("pt_overdue", Constant.YES);
-        return searchService.erpSearchPurcTenderIds(keyword, pageParams);
-    }
+//    /**
+//     * 作为供应商,查看收到的投标单(过期)
+//     *
+//     * @param params 分页参数
+//     * @return 招标单Spage
+//     */
+//    @RequestMapping(params = RequestState.END, method = RequestMethod.GET)
+//    @ResponseBody
+//    public SPage<PurchaseTender> getEndTenders(PageParams params, String searchFilter) {
+//        JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+//        String keyword = jsonObject.getString("keyword");
+//        com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+//        // 判断当前用户是否被客户分配
+//        SearchFilter filter = userService.distribute();
+//        if (filter != null && filter.getDistribute() == null) {
+//            return null;
+//        }
+//        List<Sort> sortList = new ArrayList<>();
+//        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
+//        pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+//        pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getEnName());
+//        pageParams.getFilters().put("pt_ispublish", Constant.YES);
+////        pageParams.getFilters().put("pt_ifopen", Constant.NO);
+//        pageParams.getFilters().put("pt_status", "待投标");
+//        pageParams.getFilters().put("pt_overdue", Constant.YES);
+//        return searchService.erpSearchPurcTenderIds(keyword, pageParams);
+//    }
 
 
     /**
@@ -391,7 +423,7 @@ public class TenderController {
     }
 
     /**
-     * 作为采购方,查看发出的招标单(待评标)
+     * 作为采购方,查看发出的招标单(已结标)
      *
      * @param params  分页参数
      * @return   招标单分页
@@ -399,6 +431,65 @@ public class TenderController {
     @RequestMapping(value = "/purc",params = RequestState.DONE, method = RequestMethod.GET)
     @ResponseBody
     public SPage<PurchaseTender> getMyDoneTenders(PageParams params, String searchFilter) {
+        JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+        String keyword = jsonObject.getString("keyword");
+        com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+        // 当前登录企业作为客户
+        SearchFilter filter = userService.distribute();
+        if (filter != null && filter.getDistribute() == null) {
+            return null;
+        }
+        buildFilter(filter, pageParams);
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
+        pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+        pageParams.getFilters().put("pt_enuu", SystemSession.getUser().getEnterprise().getUu());
+        pageParams.getFilters().put("pt_ispublish", Constant.YES);
+        pageParams.getFilters().put("pt_status", "已结标");
+        pageParams.getFilters().put("pt_overdue", Constant.YES);
+        pageParams.getFilters().put("pt_result", Constant.YES);
+        return searchService.erpSearchPurcTenderIds(keyword, pageParams);
+    }
+
+    /**
+     * 作为采购方,查看发出的招标单(流标)
+     *
+     * @param params  分页参数
+     * @return   招标单分页
+     */
+    @RequestMapping(value = "/purc",params = RequestState.END, method = RequestMethod.GET)
+    @ResponseBody
+    public SPage<PurchaseTender> getMyEndTenders(PageParams params, String searchFilter) {
+        JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+        String keyword = jsonObject.getString("keyword");
+        com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+        // 当前登录企业作为客户
+        SearchFilter filter = userService.distribute();
+        if (filter != null && filter.getDistribute() == null) {
+            return null;
+        }
+        buildFilter(filter, pageParams);
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
+        pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+        pageParams.getFilters().put("pt_enuu", SystemSession.getUser().getEnterprise().getUu());
+        pageParams.getFilters().put("pt_ispublish", Constant.YES);
+        pageParams.getFilters().put("pt_status", "流标");
+        pageParams.getFilters().put("pt_overdue", Constant.YES);
+        pageParams.getFilters().put("pt_result", Constant.YES);
+        return searchService.erpSearchPurcTenderIds(keyword, pageParams);
+    }
+
+
+    /**
+     * 作为采购方,查看发出的招标单(待评标)
+     *
+     * @param params  分页参数
+     * @return   招标单分页
+     */
+    @RequestMapping(value = "/purc",params = "_state=tobid", method = RequestMethod.GET)
+    @ResponseBody
+    public SPage<PurchaseTender> getMyWaitingTenders(PageParams params, String searchFilter) {
         JSONObject jsonObject = JSONObject.parseObject(searchFilter);
         String keyword = jsonObject.getString("keyword");
         com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
@@ -529,20 +620,35 @@ public class TenderController {
     @RequestMapping(value = "/publishSaved", method = RequestMethod.POST)
     @ResponseBody
     @Transactional
-    public ModelMap publishSavedTender(String tender, String vendorUUs) throws UnsupportedEncodingException {
+    public ModelMap publishSavedTender(String tender, String enInfos, String attaches) throws UnsupportedEncodingException {
         tender = URLDecoder.decode(tender, "UTF-8");
         PurchaseTender purchaseTender = FlexJsonUtils.fromJson(tender, PurchaseTender.class);
-        if (purchaseTender.getIfOpen() == Constant.YES) {
+        if (purchaseTender.getIfOpen() == Constant.YES) { // 开放时进另外的方法
+            if (null != attaches) {
+                attaches = URLDecoder.decode(attaches, "UTF-8");
+                List<Attach> attachList = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                return tenderService.publishSavedOpen(purchaseTender, attachList);
+            }
             return tenderService.publishSavedOpen(purchaseTender);
         } else {
-            if (null != vendorUUs) {
-                vendorUUs = URLDecoder.decode(vendorUUs, "UTF-8");
-                vendorUUs = "[".concat(vendorUUs);
-                vendorUUs = vendorUUs.concat("]");
-                List<Long> vendUUs = FlexJsonUtils.fromJsonArray(vendorUUs, Long.class);
-                return tenderService.publishSaved(purchaseTender, vendUUs);
+            if (null != enInfos) {
+                enInfos = URLDecoder.decode(enInfos, "UTF-8");
+                List<TenderContactInfo> contactInfos = FlexJsonUtils.fromJsonArray(enInfos, TenderContactInfo.class);
+                if (null != attaches) {
+                    attaches = URLDecoder.decode(attaches, "UTF-8");
+                    List<Attach> attachList = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                    return tenderService.publishSaved(purchaseTender, contactInfos, attachList);
+                } else {
+                    return tenderService.publishSaved(purchaseTender, contactInfos);
+                }
             } else {
-                return tenderService.publishSaved(purchaseTender, null);
+                if (null != attaches) {
+                    attaches = URLDecoder.decode(attaches, "UTF-8");
+                    List<Attach> attachList = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                    return tenderService.publishSaved(purchaseTender, null, attachList);
+                } else {
+                    return tenderService.publishSaved(purchaseTender, null);
+                }
             }
         }
     }
@@ -551,25 +657,40 @@ public class TenderController {
      * 更新在录入单据
      *
      * @param tender    招标单
-     * @param vendorUUs 供应商uu
+     * @param enInfos 供应商uu
      */
     @RequestMapping(value = "/updateSaved", method = RequestMethod.POST)
     @ResponseBody
     @Transactional
-    public ModelMap updateSavedTender(String tender, String vendorUUs) throws UnsupportedEncodingException {
+    public ModelMap updateSavedTender(String tender, String enInfos, String attaches) throws UnsupportedEncodingException {
         tender = URLDecoder.decode(tender, "UTF-8");
         PurchaseTender purchaseTender = FlexJsonUtils.fromJson(tender, PurchaseTender.class);
         if (purchaseTender.getIfOpen() == Constant.YES) { // 开放时进另外的方法
+            if (null != attaches) {
+                attaches = URLDecoder.decode(attaches, "UTF-8");
+                List<Attach> attachList = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                return tenderService.updateSavedOpen(purchaseTender, attachList);
+            }
             return tenderService.updateSavedOpen(purchaseTender);
         } else {
-            if (null != vendorUUs) {
-                vendorUUs = URLDecoder.decode(vendorUUs, "UTF-8");
-                vendorUUs = "[".concat(vendorUUs);
-                vendorUUs = vendorUUs.concat("]");
-                List<Long> vendUUs = FlexJsonUtils.fromJsonArray(vendorUUs, Long.class);
-                return tenderService.updateSaved(purchaseTender, vendUUs);
+            if (null != enInfos) {
+                enInfos = URLDecoder.decode(enInfos, "UTF-8");
+                List<TenderContactInfo> contactInfos = FlexJsonUtils.fromJsonArray(enInfos, TenderContactInfo.class);
+                if (null != attaches) {
+                    attaches = URLDecoder.decode(attaches, "UTF-8");
+                    List<Attach> attachList = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                    return tenderService.updateSaved(purchaseTender, contactInfos, attachList);
+                } else {
+                    return tenderService.updateSaved(purchaseTender, contactInfos);
+                }
             } else {
-                return tenderService.updateSaved(purchaseTender, null);
+                if (null != attaches) {
+                    attaches = URLDecoder.decode(attaches, "UTF-8");
+                    List<Attach> attachList = FlexJsonUtils.fromJsonArray(attaches, Attach.class);
+                    return tenderService.updateSaved(purchaseTender, null, attachList);
+                } else {
+                    return tenderService.updateSaved(purchaseTender, null);
+                }
             }
         }
     }
@@ -633,8 +754,8 @@ public class TenderController {
      * @param id 投标单id
      */
     @RequestMapping(value = "/saleTender", method = RequestMethod.GET)
-    public ModelMap getSaleTenderDetail(Long id, String venduu) {
-        return tenderService.getSaleTenderDetail(id, Long.valueOf(venduu));
+    public ModelMap getSaleTenderDetail(Long id) {
+        return tenderService.getSaleTenderDetail(id);
     }
 
 }

+ 59 - 49
src/main/java/com/uas/platform/b2b/erp/service/TenderService.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.erp.service;
 
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.temporary.model.TenderContactInfo;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.ui.ModelMap;
 
@@ -11,21 +12,21 @@ import java.util.List;
  */
 public interface TenderService {
 
-    /**
-     * 保存招标单
-     *
-     * @param tender
-     * @return
-     */
-    ModelMap save(PurchaseTender tender, List<Long> vendUUs);
-
-    /**
-     * 发布招标单
-     *
-     * @param tender
-     * @return
-     */
-    ModelMap publish(PurchaseTender tender, List<Long> vendUUs);
+//    /**
+//     * 保存招标单
+//     *
+//     * @param tender
+//     * @return
+//     */
+//    ModelMap save(PurchaseTender tender, List<Long> vendUUs);
+//
+//    /**
+//     * 发布招标单
+//     *
+//     * @param tender
+//     * @return
+//     */
+//    ModelMap publish(PurchaseTender tender, List<Long> vendUUs);
 
     /**
      * 投标
@@ -56,12 +57,12 @@ public interface TenderService {
     PurchaseTender findById(Long bidId);
 
 
-    ModelMap publishOpen(PurchaseTender purchaseTender);
-    /**
-     *  保存公开招标单
-     * @param purchaseTender
-     */
-    ModelMap saveOpen(PurchaseTender purchaseTender);
+//    ModelMap publishOpen(PurchaseTender purchaseTender);
+//    /**
+//     *  保存公开招标单
+//     * @param purchaseTender
+//     */
+//    ModelMap saveOpen(PurchaseTender purchaseTender);
 
     Attach addTenderAttaches(FileUpload uploadItem) throws Exception;
 
@@ -99,32 +100,6 @@ public interface TenderService {
      */
     ModelMap addTenderItemById(Long id);
 
-    /**
-     *  发布已保存单据
-     * @param purchaseTender
-     * @param vendUUs
-     */
-    ModelMap publishSaved(PurchaseTender purchaseTender, List<Long> vendUUs);
-
-    /**
-     *  发布已保存单据为公开招标
-     * @param purchaseTender
-     */
-    ModelMap publishSavedOpen(PurchaseTender purchaseTender);
-
-    /**
-     *  更新已保存单据
-     * @param purchaseTender
-     * @param vendUUs
-     */
-    ModelMap updateSaved(PurchaseTender purchaseTender, List<Long> vendUUs);
-
-    /**
-     *  更新已保存单据为公开
-     * @param purchaseTender
-     */
-    ModelMap updateSavedOpen(PurchaseTender purchaseTender);
-
     /**
      *  删除产品明细
      * @param tenderProdId
@@ -155,9 +130,44 @@ public interface TenderService {
     /**
      * 获取投标单详情
      * @param id
-     * @param venduu
      * @return
      */
-    ModelMap getSaleTenderDetail(Long id, Long venduu);
+    ModelMap getSaleTenderDetail(Long id);
+
+    ModelMap publishOrSave(PurchaseTender purchaseTender, List<TenderContactInfo> contactInfos, List<Attach> tenderAttaches);
+
+
+    /**
+     *  发布已保存单据
+     * @param purchaseTender
+     * @param enInfos
+     */
+    ModelMap publishSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos);
+
+    ModelMap publishSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos, List<Attach> attachList);
+
+    /**
+     *  发布已保存单据为公开招标
+     * @param purchaseTender
+     */
+    ModelMap publishSavedOpen(PurchaseTender purchaseTender);
+
+    ModelMap publishSavedOpen(PurchaseTender purchaseTender,  List<Attach> attachList);
+
+    /**
+     *  更新已保存单据
+     * @param purchaseTender
+     * @param enInfos
+     */
+    ModelMap updateSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos);
+
+    ModelMap updateSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos, List<Attach> attachList);
+
+    /**
+     *  更新已保存单据为公开
+     * @param purchaseTender
+     */
+    ModelMap updateSavedOpen(PurchaseTender purchaseTender);
 
+    ModelMap updateSavedOpen(PurchaseTender purchaseTender, List<Attach> attachList);
 }

+ 174 - 100
src/main/java/com/uas/platform/b2b/erp/service/impl/TenderServiceImpl.java

@@ -7,6 +7,7 @@ import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.temporary.model.PurcTenderProd;
+import com.uas.platform.b2b.temporary.model.TenderContactInfo;
 import com.uas.platform.core.model.Constant;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -61,51 +62,47 @@ public class TenderServiceImpl implements TenderService {
     private CommonDao commonDao;
 
     /**
-     * 保存招标单
-     *
-     * @param tender
-     * @return
+     *  发布和保存
+     * @param purchaseTender
+     * @param contactInfos
+     * @param tenderAttaches
      */
     @Override
-    public ModelMap save(PurchaseTender tender, List<Long> vendUUs) {
-        tender.setIsPublish(Constant.NO);
-        tender.setStatus("待发布");
-        tender.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-        tender.setEnterprise(SystemSession.getUser().getEnterprise());
-        return saveTenderItem(tender, vendUUs);
+    public ModelMap publishOrSave(PurchaseTender purchaseTender, List<TenderContactInfo> contactInfos, List<Attach> tenderAttaches) {
+        if (purchaseTender.getIsPublish() == Constant.YES) {
+            if (purchaseTender.getIfOpen() == Constant.YES) {
+                return publishOpen(purchaseTender, tenderAttaches);
+            } else {
+                return publish(purchaseTender, contactInfos, tenderAttaches);
+            }
+        } else {
+            if (purchaseTender.getIfOpen() == Constant.YES) {
+                return saveOpen(purchaseTender, tenderAttaches);
+            } else {
+                return  save(purchaseTender, contactInfos, tenderAttaches);
+            }
+        }
     }
 
-    /**
-     * 发布招标单
-     *
-     * @param tender
-     * @return
-     */
-    @Override
-    public ModelMap publish(PurchaseTender tender, List<Long> vendUUs) {
-        tender.setIsPublish(Constant.YES);
-        tender.setStatus("待投标");
-        tender.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-        tender.setEnterprise(SystemSession.getUser().getEnterprise());
-        return saveTenderItem(tender, vendUUs);
+    private ModelMap publishOpen(PurchaseTender tender, List<Attach> attaches) {
+        return publishOrSaveOpen(tender, attaches, true);
     }
 
-    private ModelMap saveTenderItem(PurchaseTender tender, List<Long> vendUUs) {
-        Set<PurchaseTenderProd> tenderProds = tender.getPurchaseTenderProds();
-        for (PurchaseTenderProd tenderProd : tenderProds) {
-            tenderProd.setTender(tender);
-            purchaseTenderProdDao.save(tenderProd);
-            addSaleTender(tender, vendUUs, tenderProd);
-        }
-        ModelMap map = new ModelMap();
-        map.put("id", tender.getId());
-        return map;
+    private ModelMap saveOpen(PurchaseTender tender, List<Attach> attaches) {
+        return publishOrSaveOpen(tender, attaches, false);
     }
 
-    @Override
-    public ModelMap publishOpen(PurchaseTender tender) {
+    private ModelMap publishOrSaveOpen (PurchaseTender tender, List<Attach> attaches,boolean isPublish) {
+        if (isPublish) {
+            tender.setStatus("待投标");
+        } else {
+            tender.setStatus("待发布");
+        }
+        Set<Attach> attachSet = new HashSet<>();
+        attaches = attachDao.save(attaches);
+        attachSet.addAll(attaches);
+        tender.setTenderAttaches(attachSet);
         tender.setIsPublish(Constant.YES);
-        tender.setStatus("待投标");
         tender.setEnUU(SystemSession.getUser().getEnterprise().getUu());
         purchaseTenderDao.save(tender);
         Set<PurchaseTenderProd> tenderProds = tender.getPurchaseTenderProds();
@@ -118,18 +115,32 @@ public class TenderServiceImpl implements TenderService {
         return map;
     }
 
-    @Override
-    public ModelMap saveOpen(PurchaseTender tender) {
+    private ModelMap publish(PurchaseTender tender, List<TenderContactInfo> contactInfos, List<Attach> attaches) {
+        tender.setIsPublish(Constant.YES);
+        tender.setStatus("待投标");
+        tender.setEnUU(SystemSession.getUser().getEnterprise().getUu());
+        tender.setEnterprise(SystemSession.getUser().getEnterprise());
+        return saveTenderItem(tender, contactInfos, attaches);
+    }
+
+    private ModelMap save(PurchaseTender tender, List<TenderContactInfo> contactInfos, List<Attach> attaches) {
         tender.setIsPublish(Constant.NO);
         tender.setStatus("待发布");
         tender.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-        purchaseTenderDao.save(tender);
+        tender.setEnterprise(SystemSession.getUser().getEnterprise());
+        return saveTenderItem(tender, contactInfos, attaches);
+    }
+
+    private ModelMap saveTenderItem(PurchaseTender tender, List<TenderContactInfo> contactInfos, List<Attach> attaches) {
+        Set<Attach> attachSet = new HashSet<>();
+        attaches = attachDao.save(attaches);
+        attachSet.addAll(attaches);
+        tender.setTenderAttaches(attachSet);
         Set<PurchaseTenderProd> tenderProds = tender.getPurchaseTenderProds();
-        if (!CollectionUtils.isEmpty(tenderProds)) {
-            for (PurchaseTenderProd tenderProd : tenderProds) {
-                tenderProd.setTender(tender);
-                purchaseTenderProdDao.save(tenderProd);
-            }
+        for (PurchaseTenderProd tenderProd : tenderProds) {
+            tenderProd.setTender(tender);
+            purchaseTenderProdDao.save(tenderProd);
+            addSaleTender(tender, contactInfos, tenderProd);
         }
         ModelMap map = new ModelMap();
         map.put("id", tender.getId());
@@ -358,11 +369,20 @@ public class TenderServiceImpl implements TenderService {
      * 发布已保存单据
      *
      * @param purchaseTender
-     * @param vendUUs
+     * @param enInfos
      */
     @Override
-    public ModelMap publishSaved(PurchaseTender purchaseTender, List<Long> vendUUs) {
-        return publishOrSave(purchaseTender, vendUUs, true, false);
+    public ModelMap publishSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos) {
+        return publishOrUpdateSaved(purchaseTender, enInfos, true, false);
+    }
+
+    @Override
+    public ModelMap publishSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos, List<Attach> attachList) {
+        Set<Attach> attachSet = new HashSet<>();
+        attachList = attachDao.save(attachList);
+        attachSet.addAll(attachList);
+        purchaseTender.setTenderAttaches(attachSet);
+        return publishOrUpdateSaved(purchaseTender, enInfos, true, false);
     }
 
     /**
@@ -372,18 +392,36 @@ public class TenderServiceImpl implements TenderService {
      */
     @Override
     public ModelMap publishSavedOpen(PurchaseTender purchaseTender) {
-        return publishOrSave(purchaseTender, null, true, true);
+        return publishOrUpdateSaved(purchaseTender, null, true, true);
+    }
+
+    @Override
+    public ModelMap publishSavedOpen(PurchaseTender purchaseTender, List<Attach> attachList) {
+        Set<Attach> attachSet = new HashSet<>();
+        attachList = attachDao.save(attachList);
+        attachSet.addAll(attachList);
+        purchaseTender.setTenderAttaches(attachSet);
+        return publishOrUpdateSaved(purchaseTender, null, true, true);
     }
 
     /**
      * 更新已保存单据
      *
      * @param purchaseTender
-     * @param vendUUs
+     * @param enInfos
      */
     @Override
-    public ModelMap updateSaved(PurchaseTender purchaseTender, List<Long> vendUUs) {
-        return publishOrSave(purchaseTender, vendUUs, false, false);
+    public ModelMap updateSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos) {
+        return publishOrUpdateSaved(purchaseTender, enInfos, false, false);
+    }
+
+    @Override
+    public ModelMap updateSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos, List<Attach> attachList) {
+        Set<Attach> attachSet = new HashSet<>();
+        attachList = attachDao.save(attachList);
+        attachSet.addAll(attachList);
+        purchaseTender.setTenderAttaches(attachSet);
+        return publishOrUpdateSaved(purchaseTender, enInfos, false, false);
     }
 
     /**
@@ -393,18 +431,27 @@ public class TenderServiceImpl implements TenderService {
      */
     @Override
     public ModelMap updateSavedOpen(PurchaseTender purchaseTender) {
-        return publishOrSave(purchaseTender, null, false, true);
+        return publishOrUpdateSaved(purchaseTender, null, false, true);
+    }
+
+    @Override
+    public ModelMap updateSavedOpen(PurchaseTender purchaseTender, List<Attach> attachList) {
+        Set<Attach> attachSet = new HashSet<>();
+        attachList = attachDao.save(attachList);
+        attachSet.addAll(attachList);
+        purchaseTender.setTenderAttaches(attachSet);
+        return publishOrUpdateSaved(purchaseTender, null, false, true);
     }
 
     /**
      * 发布或保存方法(针对保存的单据)
      *
      * @param purchaseTender
-     * @param vendUUs
+     * @param enInfos
      * @param isPublish
      * @param ifOpen
      */
-    private ModelMap publishOrSave(PurchaseTender purchaseTender, List<Long> vendUUs, boolean isPublish, boolean ifOpen) {
+    private ModelMap publishOrUpdateSaved(PurchaseTender purchaseTender, List<TenderContactInfo> enInfos, boolean isPublish, boolean ifOpen) {
         PurchaseTender oldTender = purchaseTenderDao.findOne(purchaseTender.getId());
         ModelMap map = new ModelMap();
         if (null != oldTender) {
@@ -437,7 +484,7 @@ public class TenderServiceImpl implements TenderService {
             oldTender.setUserTel(purchaseTender.getUserTel());
             oldTender.setTenderAttaches(purchaseTender.getTenderAttaches());
             purchaseTenderDao.save(oldTender);
-            if (!CollectionUtils.isEmpty(vendUUs)) { // 不为空时,是修改过供应商的。
+            if (!CollectionUtils.isEmpty(enInfos)) { // 不为空时,是修改过供应商的。
                 // 先清除掉所有存在的投标单
                 List<SaleTender> oldSaleTenders = saleTenderDao.findByEnUUAndCode(oldTender.getEnUU(), oldTender.getCode());
                 for (SaleTender saleTender : oldSaleTenders) {
@@ -466,14 +513,14 @@ public class TenderServiceImpl implements TenderService {
                         purchaseTenderProdDao.save(tenderProd);
                     }
                     if (!ifOpen) { // 指定招标的增加招标单
-                        addSaleTender(oldTender, vendUUs, tenderProd);
+                        addSaleTender(oldTender, enInfos, tenderProd);
                     }
                 }
             } else {
                 tenderProds = oldTender.getPurchaseTenderProds();
                 for (PurchaseTenderProd tenderProd : tenderProds) {
                     if (!ifOpen) { // 指定招标的增加招标单
-                        addSaleTender(oldTender, vendUUs, tenderProd);
+                        addSaleTender(oldTender, enInfos, tenderProd);
                     }
                 }
             }
@@ -488,21 +535,15 @@ public class TenderServiceImpl implements TenderService {
      * 根据供应商信息和招标单新增投标单
      *
      * @param tender
-     * @param vendUUs
+     * @param contactInfos
      * @param tenderProd
      */
-    private void addSaleTender(PurchaseTender tender, List<Long> vendUUs, PurchaseTenderProd tenderProd) {
-        List<Enterprise> vendors = new ArrayList<>();
-        if (!CollectionUtils.isEmpty(vendUUs)) {
-            for (Long vendUU : vendUUs) {
-                Enterprise vendor = enterpriseDao.findOne(vendUU);
-                if (null != vendor) {
-                    vendors.add(vendor);
-                }
-            }
-            if (!CollectionUtils.isEmpty(vendors)) {
-                for (Enterprise enterprise : vendors) {
-                    EnterpriseBaseInfo enBaseInfo = enterpriseBaseInfoDao.findOne(enterprise.getUu());
+    private void addSaleTender(PurchaseTender tender, List<TenderContactInfo> contactInfos, PurchaseTenderProd tenderProd) {
+        if (!CollectionUtils.isEmpty(contactInfos)) {
+            for (TenderContactInfo contactInfo : contactInfos) {
+                Enterprise enterprise = enterpriseDao.findOne(contactInfo.getVendUU());
+                if (null != enterprise) {
+                    EnterpriseBaseInfo enBaseInfo = enterpriseBaseInfoDao.findOne(contactInfo.getVendUU());
                     if (null == enBaseInfo) {
                         enBaseInfo = new EnterpriseBaseInfo(enterprise.getUu(), enterprise.getEnBussinessCode(), enterprise.getEnName(), enterprise.getEnAddress());
                     }
@@ -511,7 +552,7 @@ public class TenderServiceImpl implements TenderService {
                     if (tender.getEnUU() != null && enBaseInfo.getUu() != null && tender.getCode() != null) {
                         SaleTender saleTender = saleTenderDao.findByEnUUAndVendUUAndCode(tender.getEnUU(), enBaseInfo.getUu(), tender.getCode());
                         if (null == saleTender) {
-                            saleTender = new SaleTender(tender);
+                            saleTender = new SaleTender(tender, contactInfo);
                             saleTender.setVendUU(enBaseInfo.getUu());
                             saleTender.setEnterpriseBaseInfo(enBaseInfo); // 投标单主表构造完毕
                             saleTenderDao.save(saleTender);
@@ -579,8 +620,37 @@ public class TenderServiceImpl implements TenderService {
     public ModelMap auditPurchaseTender(Long id, Short auditStatus) {
         ModelMap map = new ModelMap();
         PurchaseTender purchaseTender = purchaseTenderDao.findOne(id);
+        List<SaleTender> saleTenders = saleTenderDao.findByEnUUAndCode(purchaseTender.getEnUU(), purchaseTender.getCode());
         purchaseTender.setAuditStatus(auditStatus);
+        for (SaleTender saleTender : saleTenders) {
+            boolean hasBid = false; // 投标单是否投标
+            boolean hasDecided = false; // 招标明细是否定标
+            for (SaleTenderItem saleTenderItem : saleTender.getSaleTenderItems()) {
+                if (null != saleTenderItem.getPrice()) { // 存在有价格的就是已投标
+                    hasBid = true;
+                }
+                if (Constant.YES == saleTenderItem.getApplyStatus()) { // 存在采纳的就是已结标
+                    hasDecided = true;
+                }
+            }
+            if (auditStatus == Constant.NO) {
+                purchaseTender.setStatus("待评标");
+                if (hasBid) {
+                    saleTender.setStatus("已投标");
+                } else {
+                    saleTender.setStatus("待投标");
+                }
+            } else {
+                if (hasDecided) {
+                    purchaseTender.setStatus("已结标");
+                } else {
+                    purchaseTender.setStatus("流标");
+                }
+                saleTender.setStatus("已结标");
+            }
+        }
         purchaseTenderDao.save(purchaseTender);
+        saleTenderDao.save(saleTenders);
         map.put("success", true);
         return map;
     }
@@ -590,24 +660,30 @@ public class TenderServiceImpl implements TenderService {
         ModelMap map = new ModelMap();
         SaleTender saleTender = saleTenderDao.findOne(id);
         saleTender.setAuditStatus(auditStatus);
+        if (Constant.NO == auditStatus) {
+            saleTender.setStatus("待投标");
+        } else {
+            saleTender.setStatus("已投标");
+        }
         saleTenderDao.save(saleTender);
         map.put("success", true);
         return map;
     }
 
     @Override
-    public ModelMap getSaleTenderDetail(Long id, Long venduu) {
-        PurchaseTender tender = purchaseTenderDao.findOne(id);
-        Set<Attach> tenderAttaches = tender.getTenderAttaches();
-        SaleTender saleTenderTemp = saleTenderDao.findByEnUUAndVendUUAndCode(tender.getEnUU(), venduu, tender.getCode());
-        SaleTenderErp saleTenderErp = saleTenderErpDao.findOne(saleTenderTemp.getId());
+    public ModelMap getSaleTenderDetail(Long id) {
+        SaleTenderErp saleTenderErp = saleTenderErpDao.findOne(id);
+        List<PurchaseTender> tenders = purchaseTenderDao.findByEnUUAndCode(saleTenderErp.getEnUU(), saleTenderErp.getCode());
+        Set<Attach> attachSet = new HashSet<>();
+        if (!CollectionUtils.isEmpty(tenders)) {
+            attachSet = tenders.get(0).getTenderAttaches();
+        }
         ModelMap map = new ModelMap();
         map.put("saleTenderTemp", saleTenderErp);
-        map.put("tenderAttaches", tenderAttaches);
+        map.put("tenderAttaches", attachSet);
         return map;
     }
 
-
     /**
      * 投标
      *
@@ -625,7 +701,7 @@ public class TenderServiceImpl implements TenderService {
 //        saleTender.setBidAttaches(attachSet); // 先清掉关联关系
 //        saleTenderDao.save(saleTender);
         if (tenderItems.size() > 0) {
-            saleTender.setStatus("待评标");
+//            saleTender.setStatus("已投标"); // 现在审核时修改状态
             saleTender.setModified(new Date());
             // 提交时设置为0,审核后改为1
             saleTender.setAuditStatus(Constant.NO);
@@ -633,6 +709,7 @@ public class TenderServiceImpl implements TenderService {
         List<Attach> attachList = new ArrayList<>();
         for (Attach attach : attaches) {
             if (null == attach.getId()) {
+                attach.setDescription("UAS投标附件");
                 attachList.add(attach);
             } else {
                 attachSet.add(attach);
@@ -650,7 +727,7 @@ public class TenderServiceImpl implements TenderService {
                 SaleTenderItem saleTenderItem = saleTenderItemDao.findOne(tenderItem.getId());
                 // 需要修改见索引主表中的字段来触发索引更新
                 saleTenderItem.getTenderProd().getTender().setModified(new Date());
-                saleTenderItem.getTenderProd().getTender().setStatus("待评标");
+//                saleTenderItem.getTenderProd().getTender().setStatus("待评标");  //审核时修改状态
                 saleTenderItem.setPrice(tenderItem.getPrice());
                 saleTenderItem.setTaxrate(tenderItem.getTaxrate());
                 saleTenderItem.setCycle(tenderItem.getCycle());
@@ -676,7 +753,7 @@ public class TenderServiceImpl implements TenderService {
         }
         SaleTender saleTender = saleTenderDao.findOne(saleTenderId);
         if (tenderItems.size() > 0) {
-            saleTender.setStatus("待评标");
+//            saleTender.setStatus("已投标");
             saleTender.setModified(new Date());
             // 提交时设置为0,审核后改为1
             saleTender.setAuditStatus(Constant.NO);
@@ -687,7 +764,7 @@ public class TenderServiceImpl implements TenderService {
                 SaleTenderItem saleTenderItem = saleTenderItemDao.findOne(tenderItem.getId());
                 // 需要修改见索引主表中的字段来触发索引更新
                 saleTenderItem.getTenderProd().getTender().setModified(new Date());
-                saleTenderItem.getTenderProd().getTender().setStatus("待评标");
+//                saleTenderItem.getTenderProd().getTender().setStatus("待评标");
                 saleTenderItem.setPrice(tenderItem.getPrice());
                 saleTenderItem.setTaxrate(tenderItem.getTaxrate());
                 saleTenderItem.setCycle(tenderItem.getCycle());
@@ -709,26 +786,23 @@ public class TenderServiceImpl implements TenderService {
     @Override
     public ModelMap decide(List<SaleTenderItem> saleTenderItems) {
         boolean isApply = false;
-        Set<SaleTender> saleTenders = new HashSet<>();
-        for (SaleTenderItem tenderItem : saleTenderItems) {
-            tenderItem = saleTenderItemDao.findOne(tenderItem.getId());
-            if (tenderItem.getApplyStatus() != null && tenderItem.getApplyStatus() == Constant.YES) {
-                isApply = true; // 只要有定标的明细,就确认状态为已结标
-                tenderItem.getSaleTender().setStatus("已结标");
-                saleTenders.add(tenderItem.getSaleTender());
-            } else if (!"已结标".equals(tenderItem.getSaleTender().getStatus()) && !"流标".equals(tenderItem.getSaleTender().getStatus())) {
-                tenderItem.getSaleTender().setStatus("流标");
-                saleTenders.add(tenderItem.getSaleTender());
-            }
-        }
-        saleTenderDao.save(saleTenders);
+//        Set<SaleTender> saleTenders = new HashSet<>();
+//        for (SaleTenderItem tenderItem : saleTenderItems) {
+//            tenderItem = saleTenderItemDao.findOne(tenderItem.getId());
+//            if (tenderItem.getApplyStatus() != null && tenderItem.getApplyStatus() == Constant.YES) {
+//                isApply = true; // 只要有定标的明细,就确认状态为已结标
+//                tenderItem.getSaleTender().setStatus("已结标");
+//                saleTenders.add(tenderItem.getSaleTender());
+//            }
+//        }
+//        saleTenderDao.save(saleTenders);
         SaleTenderItem tenderItem = saleTenderItemDao.findOne(saleTenderItems.get(0).getId());
         PurchaseTender tender = tenderItem.getTenderProd().getTender();
-        if (isApply) {
-            tender.setStatus("已结标");
-        } else {
-            tender.setStatus("流标");
-        }
+//        if (isApply) {
+//            tender.setStatus("已结标");
+//        } else {
+//            tender.setStatus("流标");
+//        }
         tender.setModified(new Date());
         // 提交时设为0,审核后改为1
         tender.setAuditStatus(Constant.NO);

+ 3 - 0
src/main/java/com/uas/platform/b2b/search/SearchService.java

@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.Map;
 
 import com.uas.account.entity.UserSpaceDetail;
+import com.uas.platform.b2b.erp.model.SaleTenderErp;
 import com.uas.platform.b2b.model.Component;
 import com.uas.platform.b2b.model.DeputyOrder;
 import com.uas.platform.b2b.model.Enterprise;
@@ -421,4 +422,6 @@ public interface SearchService {
 	 * @return
 	 */
     SPage<Enterprise> searchVendorIds(String keyword, PageParams pageParams);
+
+	SPage<SaleTenderErp> erpSearchSaleTenderIds(String keyword, PageParams pageParams);
 }

+ 26 - 38
src/main/java/com/uas/platform/b2b/search/SearchServiceImpl.java

@@ -16,6 +16,9 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
+import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.model.SaleTenderErp;
+import com.uas.platform.b2b.erp.model.SaleTenderItemErp;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.jpa.domain.Specification;
@@ -25,44 +28,6 @@ import org.springframework.util.CollectionUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.account.entity.UserSpaceDetail;
 import com.uas.account.util.AccountUtils;
-import com.uas.platform.b2b.dao.BrandDao;
-import com.uas.platform.b2b.dao.ComponentDao;
-import com.uas.platform.b2b.dao.DeputyOrderDao;
-import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.InvitationRecordDao;
-import com.uas.platform.b2b.dao.MakeAcceptDao;
-import com.uas.platform.b2b.dao.MakeOrderChangeItemDao;
-import com.uas.platform.b2b.dao.MakeOrderDao;
-import com.uas.platform.b2b.dao.MakeReturnDao;
-import com.uas.platform.b2b.dao.PagingReleaseDetailDao;
-import com.uas.platform.b2b.dao.ProductDao;
-import com.uas.platform.b2b.dao.PurcInquiryDao;
-import com.uas.platform.b2b.dao.PurcInquiryItemInfoDao;
-import com.uas.platform.b2b.dao.PurchaseAcceptDao;
-import com.uas.platform.b2b.dao.PurchaseApBillDao;
-import com.uas.platform.b2b.dao.PurchaseApCheckDao;
-import com.uas.platform.b2b.dao.PurchaseBadInDao;
-import com.uas.platform.b2b.dao.PurchaseBadOutDao;
-import com.uas.platform.b2b.dao.PurchaseForecastAllDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryItemDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryMouldDao;
-import com.uas.platform.b2b.dao.PurchaseMRBDao;
-import com.uas.platform.b2b.dao.PurchaseNoticeDao;
-import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
-import com.uas.platform.b2b.dao.PurchaseOrderChangeDao;
-import com.uas.platform.b2b.dao.PurchaseOrderDoneDao;
-import com.uas.platform.b2b.dao.PurchaseOrderEndDao;
-import com.uas.platform.b2b.dao.PurchaseOrderTodoDao;
-import com.uas.platform.b2b.dao.PurchaseOrderWaitingDao;
-import com.uas.platform.b2b.dao.PurchaseProofingApprovalDao;
-import com.uas.platform.b2b.dao.PurchaseProofingItemDao;
-import com.uas.platform.b2b.dao.PurchaseProofingSendDao;
-import com.uas.platform.b2b.dao.PurchaseReturnDao;
-import com.uas.platform.b2b.dao.PurchaseTenderDao;
-import com.uas.platform.b2b.dao.SaleARCheckDao;
-import com.uas.platform.b2b.dao.SaleQuotationAllDao;
-import com.uas.platform.b2b.dao.SaleSendAllDao;
-import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.model.Brand;
 import com.uas.platform.b2b.model.Component;
 import com.uas.platform.b2b.model.DeputyOrder;
@@ -222,6 +187,9 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	@Autowired
 	private PurchaseTenderDao purchaseTenderDao;
 
+	@Autowired
+	private SaleTenderErpDao saleTenderErpDao;
+
 	@Autowired
 	private PagingReleaseDetailDao pagingReleaseDetailDao;
 
@@ -738,6 +706,26 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 		return toSPage(idsPage, tenderList);
 	}
 
+	/**
+	 *  erp查看投标单
+	 * @param keyword
+	 * @param pageParams
+	 * @return
+	 */
+	@Override
+	public SPage<SaleTenderErp> erpSearchSaleTenderIds(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.SALE$TENDER, pageParams);
+		List<SaleTenderErp> content = saleTenderErpDao.findAll(idsPage.getContent());
+		Set<SaleTenderItemErp> itemErps = new HashSet<>();
+		List<SaleTenderErp> tenderList = new ArrayList<>();
+		for (SaleTenderErp saleTenderErp : content) {
+			saleTenderErp.setSaleTenderItems(itemErps); // erp查看列表只返回主表信息
+			tenderList.add(saleTenderErp);
+		}
+		sortByProperty(tenderList, SaleTenderErp.class, "id", idsPage.getContent());
+		return toSPage(idsPage, tenderList);
+	}
+
 	/**
 	 * 供应商,客户
 	 */

+ 8 - 3
src/main/java/com/uas/platform/b2b/service/impl/PurchaseTenderServiceImpl.java

@@ -62,6 +62,9 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
     @Autowired
     private CommonDao commonDao;
 
+    @Autowired
+    private UserDao userDao;
+
 
     /**
      *  发布或保存(新录入单据)
@@ -358,10 +361,12 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
                     if (null == saleTender) { // 不存在投标单说明未转投标单,进行新增投标单操作
                         saleTender = new SaleTender(tender);
                         // 直接转的,投标单联系人取企业管理员
-                        saleTender.setUser(enterprise.getAdmin().getUserName());
-                        saleTender.setUserTel(enterprise.getAdmin().getUserTel());
+                        if (null != enterprise.getEnAdminuu()) {
+                            User admin = userDao.findOne(enterprise.getEnAdminuu());
+                            saleTender.setUser(admin.getUserName());
+                            saleTender.setUserTel(admin.getUserTel());
+                        }
                         saleTender.setVendUU(vendUU);
-//                    saleTender.setEnterpriseBaseInfo(enBaseInfo); // 投标单主表构造完毕
                         saleTenderDao.save(saleTender);
                     }
                     tenderItem.setSaleTender(saleTender);