|
|
@@ -4,16 +4,16 @@ import com.uas.account.util.AccountUtils;
|
|
|
import com.uas.platform.b2b.dao.*;
|
|
|
import com.uas.platform.b2b.erp.model.B2BCustomer;
|
|
|
import com.uas.platform.b2b.erp.model.B2BVendor;
|
|
|
-import com.uas.platform.b2b.model.Distribute;
|
|
|
-import com.uas.platform.b2b.model.Enterprise;
|
|
|
-import com.uas.platform.b2b.model.Vendor;
|
|
|
-import com.uas.platform.b2b.model.VendorContact;
|
|
|
+import com.uas.platform.b2b.erp.model.VendorRecommend;
|
|
|
+import com.uas.platform.b2b.model.*;
|
|
|
import com.uas.platform.b2b.service.VendorService;
|
|
|
import com.uas.platform.b2b.support.SystemSession;
|
|
|
import com.uas.platform.b2b.temporary.model.PartnershipRecord;
|
|
|
import com.uas.platform.core.model.Constant;
|
|
|
import com.uas.platform.core.model.PageInfo;
|
|
|
import com.uas.platform.core.model.Status;
|
|
|
+import com.uas.platform.core.persistence.criteria.PredicateFactory;
|
|
|
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
@@ -21,6 +21,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
|
@@ -48,6 +49,15 @@ public class VendorsServiceImpl implements VendorService {
|
|
|
@Autowired
|
|
|
private UserOrderDao userOrderDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProductDao productDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CommonDao commonDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserDao userDao;
|
|
|
+
|
|
|
@Override
|
|
|
public List<Vendor> findMyVendors() {
|
|
|
return vendorDao.findByMyEnUU(SystemSession.getUser().getEnterprise().getUu());
|
|
|
@@ -314,4 +324,81 @@ public class VendorsServiceImpl implements VendorService {
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取供应商推荐
|
|
|
+ *
|
|
|
+ * @param profession
|
|
|
+ * @param enArea
|
|
|
+ * @param code
|
|
|
+ * @param cmpCode
|
|
|
+ * @param brand
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public com.uas.account.support.Page<VendorRecommend> getVendorRecommend(String profession, String enArea, String code, String cmpCode, String brand, int page, int size) {
|
|
|
+ final Long enUU = SystemSession.getUser().getEnterprise().getUu();
|
|
|
+ // 先查询当前企业的采购物料(待购&&不在售)的标准物料标准料号
|
|
|
+ String cmpCodesSql = "select distinct(pr.pr_cmpcode) from products pr left join sec$enterprises en on pr.pr_enuu = en.en_uu " +
|
|
|
+ "where pr.pr_ispurchase = 1 and pr.pr_issale != 1 and pr.pr_standard = 1 and pr.pr_enuu = " + enUU +
|
|
|
+ " and pr.pr_code like '%" + code + "%' and pr.pr_cmpcode like '%" + cmpCode + "%' and pr.pr_brand like '%" + brand + "%'";
|
|
|
+ // 根据标准料号找出对应的供应商UU
|
|
|
+ String vendUUsSql = "select distinct(ve_vendenuu) from purc$vendors left join products on pr_enuu = ve_vendenuu" +
|
|
|
+ " where ve_myenuu = " + enUU + " and pr_issale = 1 and pr_standard = 1 and pr_cmpcode in (" + cmpCodesSql + ")";
|
|
|
+ // 采购物料原厂型号
|
|
|
+ System.out.println(cmpCodesSql);
|
|
|
+ final List<String> cmpCodes = commonDao.queryForList(cmpCodesSql, String.class);
|
|
|
+ // rownum 控制
|
|
|
+ String rownumSql = " and rownum > " + (page - 1) * size + "and rownum <= " + page * size + " group by en_uu order by count(en_uu) desc";
|
|
|
+ // 查找非供应商的卖当前商品的企业UU
|
|
|
+ StringBuffer vendorRecommendUusSql = new StringBuffer();
|
|
|
+ StringBuffer vendorRecommendUuNumSql = new StringBuffer();
|
|
|
+ vendorRecommendUusSql.append("select en_uu from sec$enterprises left join products on en_uu = pr_enuu " +
|
|
|
+ " where 1=1 and pr_issale = 1 and pr_standard = 1 and pr_cmpcode in (").append(cmpCodesSql).append(") and en_uu not in (")
|
|
|
+ .append(vendUUsSql).append(") and en_uu <> ").append(enUU);
|
|
|
+ vendorRecommendUuNumSql.append("select count(en_uu) from sec$enterprises left join products on en_uu = pr_enuu " +
|
|
|
+ " where 1=1 and pr_issale = 1 and pr_standard = 1 and pr_cmpcode in (").append(cmpCodesSql).append(") and en_uu not in (")
|
|
|
+ .append(vendUUsSql).append(") and en_uu <> ").append(enUU);
|
|
|
+ if (!StringUtils.isEmpty(enArea)) {
|
|
|
+ vendorRecommendUusSql.append(" and en_area like %").append(enArea).append("% ");
|
|
|
+ vendorRecommendUuNumSql.append(" and en_area like %").append(enArea).append("% ");
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(profession)) {
|
|
|
+ vendorRecommendUusSql.append(" and en_profession like %").append(profession).append("% ");
|
|
|
+ vendorRecommendUuNumSql.append(" and en_profession like %").append(profession).append("% ");
|
|
|
+ }
|
|
|
+ vendorRecommendUusSql.append(rownumSql);
|
|
|
+ System.out.println("SQL:" + vendorRecommendUusSql.toString());
|
|
|
+ System.out.println("NUM_SQL:" + vendorRecommendUuNumSql.toString());
|
|
|
+ Integer total = commonDao.queryForObject(vendorRecommendUuNumSql.toString(), Integer.class);
|
|
|
+ List<Long> vendUUs = commonDao.queryForList(vendorRecommendUusSql.toString(), Long.class);
|
|
|
+ List<VendorRecommend> content = new ArrayList<>();
|
|
|
+ for (Long vendUU : vendUUs) {
|
|
|
+ Enterprise vendor = enterPriseDao.findOne(vendUU);
|
|
|
+ if (null != vendor) {
|
|
|
+ if (null != vendor.getEnAdminuu()) {
|
|
|
+ User admin = userDao.findOne(vendor.getEnAdminuu());
|
|
|
+ vendor.setAdmin(admin);
|
|
|
+ }
|
|
|
+ final PredicateFactory<Product> factory = new PredicateFactory<>();
|
|
|
+ factory.add(PredicateUtils.eq("enUU", enUU, false));
|
|
|
+ factory.add(PredicateUtils.in("cmpCode", cmpCodes, false));
|
|
|
+ List<Product> hitsProducts = productDao.findAll(new Specification<Product>() {
|
|
|
+ @Override
|
|
|
+ public Predicate toPredicate(Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
|
|
|
+ query.where(factory.toPredicate(root, query, cb));
|
|
|
+ query.orderBy(cb.desc(root.get("id").as(Long.class)));
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ VendorRecommend vendorRecommend = new VendorRecommend();
|
|
|
+ vendorRecommend.setEnterprise(vendor);
|
|
|
+ vendorRecommend.setHitProds(hitsProducts);
|
|
|
+ vendorRecommend.setHitNums(hitsProducts.size());
|
|
|
+ content.add(vendorRecommend);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 返回分页信息
|
|
|
+ return new com.uas.account.support.Page<VendorRecommend>(page, size, content, total);
|
|
|
+ }
|
|
|
+
|
|
|
}
|