|
|
@@ -43,6 +43,7 @@ import com.uas.platform.b2c.prod.commodity.dao.V_ProductPersonDao;
|
|
|
import com.uas.platform.b2c.prod.commodity.dao.V_ProductPrivateDao;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.CommodityInOutbound;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.Goods;
|
|
|
+import com.uas.platform.b2c.prod.commodity.model.GoodsFilter;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.GoodsQtyPrice;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.InOutboundDetail;
|
|
|
@@ -59,7 +60,13 @@ import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.UASBatchPutOnProperty;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.V_ProductPerson;
|
|
|
import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
|
|
|
-import com.uas.platform.b2c.prod.commodity.service.*;
|
|
|
+import com.uas.platform.b2c.prod.commodity.service.GoodsHistoryService;
|
|
|
+import com.uas.platform.b2c.prod.commodity.service.GoodsService;
|
|
|
+import com.uas.platform.b2c.prod.commodity.service.ProductAttachService;
|
|
|
+import com.uas.platform.b2c.prod.commodity.service.ProductPersonService;
|
|
|
+import com.uas.platform.b2c.prod.commodity.service.ProductPrivateService;
|
|
|
+import com.uas.platform.b2c.prod.commodity.service.ProductService;
|
|
|
+import com.uas.platform.b2c.prod.commodity.service.UASBatchPutOnPropertyService;
|
|
|
import com.uas.platform.b2c.prod.commodity.type.InOutBoundType;
|
|
|
import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
|
|
|
import com.uas.platform.b2c.prod.commodity.util.GoodsUtil;
|
|
|
@@ -93,6 +100,7 @@ import com.uas.platform.core.logging.BufferedLoggerManager;
|
|
|
import com.uas.platform.core.model.Constant;
|
|
|
import com.uas.platform.core.model.PageInfo;
|
|
|
import com.uas.platform.core.model.PageParams;
|
|
|
+import com.uas.platform.core.persistence.criteria.CriterionExpression;
|
|
|
import com.uas.platform.core.persistence.criteria.LogicalExpression;
|
|
|
import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
import com.uas.platform.core.persistence.criteria.SimpleExpression;
|
|
|
@@ -2876,4 +2884,79 @@ public class ProductServiceImpl implements ProductService {
|
|
|
goods = goodsDao.save(goods);
|
|
|
LOGGER.log("上架商品", "新增上架商品", "通过卖家中心单个物料上传新增上架商品", goods.getCode(), goods.getId());
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据分页参数和过滤对象分页获取数据
|
|
|
+ *
|
|
|
+ * @param info 分页参数
|
|
|
+ * @param goodsFilter 过滤对象
|
|
|
+ * @return Page<Product>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Page<V_ProductPrivate> getPageDataOfBackground(PageInfo info, GoodsFilter goodsFilter) {
|
|
|
+ if (info == null) {
|
|
|
+ throw new IllegalOperatorException("分页参数丢失");
|
|
|
+ }
|
|
|
+ if (goodsFilter != null) {
|
|
|
+ convertPageInfo(info, goodsFilter);
|
|
|
+ }
|
|
|
+ Page<V_ProductPrivate> page = v_productPrivateDao.findAll((Root<V_ProductPrivate> root, CriteriaQuery<?> query, CriteriaBuilder builder)
|
|
|
+ -> query.where(info.getPredicates(root, query, builder)).getRestriction(), info);
|
|
|
+ page.getContent().forEach(product -> {
|
|
|
+ List<Goods> goodsList = goodsDao.findByProductId(product.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(goodsList)) {
|
|
|
+ Goods goods = goodsList.get(0);
|
|
|
+ goodsService.defineGoodsInfo(goods);
|
|
|
+ product.setGoods(goods);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 封装分页条件
|
|
|
+ *
|
|
|
+ * @param info 分页信息
|
|
|
+ * @param goodsFilter 过滤条件
|
|
|
+ */
|
|
|
+ private void convertPageInfo(PageInfo info, GoodsFilter goodsFilter) {
|
|
|
+ info.filter("b2cEnabled", Constant.YES);
|
|
|
+ if (!StringUtils.isEmpty(goodsFilter.getStartTime())) {
|
|
|
+ java.sql.Date startDate = new java.sql.Date(goodsFilter.getStartTime());
|
|
|
+ info.expression(PredicateUtils.gte("createTime", startDate, true));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(goodsFilter.getEndTime())) {
|
|
|
+ // 截止日期是到当天23:59:59,java.sql.Date精确到天,这里采用加一天小于的方法设置截止日期判断
|
|
|
+ java.sql.Date endDate = new java.sql.Date(goodsFilter.getEndTime() + com.uas.platform.b2c.prod.commodity.constant.IntegerConstant.ONE_DAY_MILLISECONDS);
|
|
|
+ info.expression(PredicateUtils.lt("createTime", endDate, true));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(goodsFilter.getCode())) {
|
|
|
+ info.filter("cmpCode", goodsFilter.getCode());
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(goodsFilter.getBrand())) {
|
|
|
+ SimpleExpression[] brandExpression = new SimpleExpression[2];
|
|
|
+ brandExpression[0] = PredicateUtils.like("pbrand", goodsFilter.getBrand(), false, true);
|
|
|
+ brandExpression[1] = PredicateUtils.like("pbranden", goodsFilter.getBrand(), false, true);
|
|
|
+ info.expression(PredicateUtils.or((CriterionExpression[]) brandExpression));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(goodsFilter.getKindUuid())) {
|
|
|
+ // 如果包含多个叶子类目ID,则获取所有的叶子类目对应的商品信息
|
|
|
+ if (goodsFilter.getKindUuid().contains(SplitChar.COMMA)) {
|
|
|
+ String[] kindIds = goodsFilter.getKindUuid().split(SplitChar.COMMA);
|
|
|
+ info.expression(PredicateUtils.in("kindid", kindIds, false));
|
|
|
+ } else {
|
|
|
+ info.expression(PredicateUtils.eq("kindid", goodsFilter.getKindUuid(), false));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (goodsFilter.getHaveImg() != null) {
|
|
|
+ if (goodsFilter.getHaveImg()) {
|
|
|
+ info.expression(PredicateUtils.isNotNull("cmpImg"));
|
|
|
+ } else {
|
|
|
+ info.expression(PredicateUtils.isNull("cmpImg"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (goodsFilter.getStandard() != null) {
|
|
|
+ info.filter("standard", goodsFilter.getStandard() ? Constant.YES : Constant.NO);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|