Browse Source

Merge branch 'brandMap-mysql' into brand-map

# Conflicts:
#	src/main/resources/jxls-tpl/product/brand-map.xls
hulh 8 years ago
parent
commit
0fa2818771

+ 104 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/controller/BrandMapController.java

@@ -0,0 +1,104 @@
+package com.uas.platform.b2c.prod.product.brand.controller;
+
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.b2c.core.support.view.JxlsExcelView;
+import com.uas.platform.b2c.prod.product.brand.modal.BrandMap;
+import com.uas.platform.b2c.prod.product.brand.service.BrandMapService;
+import com.uas.platform.b2c.prod.store.model.StoreType;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.PageParams;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 品牌映射Controller
+ *
+ * @author hulh
+ */
+@RestController
+@RequestMapping("/product/brandMap")
+public class BrandMapController {
+
+	@Autowired
+	private BrandMapService mapService;
+
+	private static final UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	/**
+	 * 根据以下参数分页获取对应的品牌映射关系
+	 *
+	 * @param params
+	 * @param keyword
+	 * @param storeType
+	 * @param fromDate
+	 * @param toDate
+	 * @return
+	 */
+	@RequestMapping(value = "/page", method = RequestMethod.GET)
+	public Page<BrandMap> findBrandMap(PageParams params, String keyword, StoreType storeType, Long fromDate, Long toDate){
+		return mapService.findAllMap(params, keyword, storeType, fromDate, toDate);
+	}
+
+	/**
+	 * 新增一个品牌映射
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/addOne", method = RequestMethod.POST)
+	public BrandMap addBrandMap(@RequestBody BrandMap map){
+		logger.log("品牌映射", "新增品牌映射记录");
+		return mapService.addOneMap(map);
+	}
+
+	@RequestMapping(value = "/export", method = RequestMethod.GET)
+	public ModelAndView exportDataToExcel(@RequestParam(required = false, value = "isAjax", defaultValue = "false") Boolean isAjax, HttpServletRequest request, String keyword,
+										  StoreType storeType, Long fromDate, Long toDate) throws UnsupportedEncodingException {
+		HttpSession session = request.getSession();
+		ModelAndView modelAndView = new ModelAndView();
+		Object loading = session.getAttribute("loading");
+		if(isAjax) {
+			MappingJackson2JsonView view = new MappingJackson2JsonView();
+			Map<String, Boolean> attributes = new HashMap<>();
+			Boolean isLoading = loading == Boolean.TRUE;
+			attributes.put("loading", isLoading);
+			view.setAttributesMap(attributes);
+			modelAndView.setView(view);
+			return modelAndView;
+		}
+		session.setAttribute("loading", true);
+		List<BrandMap> data = new ArrayList<>();
+		data = mapService.getMapDataList(keyword, storeType, fromDate, toDate);
+		modelAndView.addObject("data", data);
+		modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/product/brand-map", "优软商城-品牌映射信息"));
+		session.setAttribute("loading", false);
+		return modelAndView;
+	}
+
+	/**
+	 * 根据id删除一个品牌映射
+	 *
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/deleteOne/{id}", method = RequestMethod.PUT)
+	public Object deleteOne(@PathVariable Long id){
+		return mapService.deleteOneMap(id);
+	}
+
+	@RequestMapping(value = "/initMap", method = RequestMethod.POST)
+	public void initAllBrandMap(){
+		logger.log("品牌映射", "品牌映射初始化");
+		mapService.initBrandMap();
+	}
+}

+ 13 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/dao/BrandMapDao.java

@@ -0,0 +1,13 @@
+package com.uas.platform.b2c.prod.product.brand.dao;
+
+import com.uas.platform.b2c.prod.product.brand.modal.BrandMap;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+/**
+ * Created by hulh on 2017/10/23.
+ * 品牌映射接口
+ */
+public interface BrandMapDao extends JpaSpecificationExecutor<BrandMap>, JpaRepository<BrandMap, Long> {
+
+}

+ 17 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/dao/BrandTempDao.java

@@ -0,0 +1,17 @@
+package com.uas.platform.b2c.prod.product.brand.dao;
+
+import com.uas.platform.b2c.prod.product.brand.modal.BrandTemp;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.List;
+
+/**
+ * 品牌映射临时表dao层
+ */
+public interface BrandTempDao extends JpaSpecificationExecutor<BrandTemp>, JpaRepository<BrandTemp, Long> {
+
+	@Query(value = "select b from BrandTemp b where b.nameSd is not null")
+	List<BrandTemp> getAllBySdNameNotNull();
+}

+ 205 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/modal/BrandMap.java

@@ -0,0 +1,205 @@
+package com.uas.platform.b2c.prod.product.brand.modal;
+
+import com.uas.platform.b2c.prod.store.model.StoreType;
+
+import javax.persistence.*;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 品牌映射表
+ *
+ * @author hulh
+ */
+@Entity
+@Table(name = "product$brand_map")
+public class BrandMap {
+
+	private final static List<String> typeCn = Arrays.asList("代理商", "经销商", "原厂商", "寄售商");
+
+	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+	/**
+	 * 主键
+	 */
+	@Id
+	@GeneratedValue
+	@Column(name = "id")
+	private Long id;
+
+	/**
+	 * 映射企业enuu
+	 */
+	@Column(name = "map_enuu")
+	private Long enuu;
+
+	/**
+	 * 映射企业名称
+	 */
+	@Column(name = "map_name")
+	private String enName;
+
+	/**
+	 * 店铺类型
+	 */
+	@Column(name = "map_type")
+	@Enumerated(value = EnumType.STRING)
+	private StoreType type;
+
+	/**
+	 * 客户公司品牌英文名
+	 */
+	@Column(name = "map_name_cd_en")
+	private String nameChildEn;
+
+	/**
+	 * 客户公司品牌中文名
+	 */
+	@Column(name = "map_name_cd_cn")
+	private String nameChildCn;
+
+	/**
+	 * 商城标准品牌英文名
+	 */
+	@Column(name = "map_name_sd_en")
+	private String nameStandardEn;
+
+	/**
+	 * 商城标准品牌中文名
+	 */
+	@Column(name = "map_name_sd_cn")
+	private String nameStandardCn;
+
+	/**
+	 * 操作人uu
+	 */
+	@Column(name = "map_op_uu")
+	private Long userUU;
+
+	/**
+	 * 操作人名称
+	 */
+	@Column(name = "map_op_name")
+	private String operateName;
+
+	/**
+	 * 操作人时间
+	 */
+	@Column(name = "map_op_time")
+	private Date operateTime;
+
+	public BrandMap(){
+
+	}
+
+	public BrandMap(BrandTemp temp){
+		this.nameChildEn = temp.getNameCd();
+		this.nameStandardEn = temp.getNameSd();
+	}
+
+	public Long getEnuu() {
+		return enuu;
+	}
+
+	public void setEnuu(Long enuu) {
+		this.enuu = enuu;
+	}
+
+	public String getEnName() {
+		return enName;
+	}
+
+	public void setEnName(String enName) {
+		this.enName = enName;
+	}
+
+	public StoreType getType() {
+		return type;
+	}
+
+	public void setType(StoreType type) {
+		this.type = type;
+	}
+
+	public String getNameChildEn() {
+		return nameChildEn;
+	}
+
+	public void setNameChildEn(String nameChildEn) {
+		this.nameChildEn = nameChildEn;
+	}
+
+	public String getNameChildCn() {
+		return nameChildCn;
+	}
+
+	public void setNameChildCn(String nameChildCn) {
+		this.nameChildCn = nameChildCn;
+	}
+
+	public String getNameStandardEn() {
+		return nameStandardEn;
+	}
+
+	public void setNameStandardEn(String nameStandardEn) {
+		this.nameStandardEn = nameStandardEn;
+	}
+
+	public String getNameStandardCn() {
+		return nameStandardCn;
+	}
+
+	public void setNameStandardCn(String nameStandardCn) {
+		this.nameStandardCn = nameStandardCn;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public String getOperateName() {
+		return operateName;
+	}
+
+	public void setOperateName(String operateName) {
+		this.operateName = operateName;
+	}
+
+	public Date getOperateTime() {
+		return operateTime;
+	}
+
+	public void setOperateTime(Date operateTime) {
+		this.operateTime = operateTime;
+	}
+
+	/**
+	 * 将店铺类型转化为中文形式
+	 * @return
+	 */
+	public String convertType(){
+		return typeCn.get(type.ordinal());
+	}
+
+	/**
+	 * 将时间转化为日期格式  yyyy-MM-dd HH:mm:ss
+	 * @return
+	 */
+	public String formatTime(){
+		return sdf.format(operateTime);
+	}
+}

+ 55 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/modal/BrandTemp.java

@@ -0,0 +1,55 @@
+package com.uas.platform.b2c.prod.product.brand.modal;
+
+import javax.persistence.*;
+
+/**
+ * 品牌映射临时表 --用于保存映射关系
+ */
+@Entity
+@Table(name = "product$brand_temp")
+public class BrandTemp {
+
+	/**
+	 * 主键
+	 */
+	@Id
+	@GeneratedValue
+	@Column(name = "id")
+	private Long id;
+
+	/**
+	 * 客户品牌名称
+	 */
+	@Column(name = "name_cd")
+	private String nameCd;
+
+	/**
+	 * 商城品牌名称
+	 */
+	@Column(name = "name_sd")
+	private String nameSd;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getNameCd() {
+		return nameCd;
+	}
+
+	public void setNameCd(String nameCd) {
+		this.nameCd = nameCd;
+	}
+
+	public String getNameSd() {
+		return nameSd;
+	}
+
+	public void setNameSd(String nameSd) {
+		this.nameSd = nameSd;
+	}
+}

+ 75 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/modal/MapOperator.java

@@ -0,0 +1,75 @@
+package com.uas.platform.b2c.prod.product.brand.modal;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import javax.persistence.*;
+import java.util.Date;
+
+/**
+ * 品牌映射操作人表
+ *
+ * @author hulh
+ */
+@Entity
+@Table(name = "product$brand_operator")
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class MapOperator {
+
+	/**
+	 * 主键
+	 */
+	@Id
+	@GeneratedValue
+	@Column(name = "id")
+	private Long id;
+
+	/**
+	 * 操作人uu
+	 */
+	@Column(name = "op_uu")
+	private Long userUU;
+
+	/**
+	 * 操作人名称
+	 */
+	@Column(name = "op_name")
+	private String operateName;
+
+	/**
+	 * 操作人时间
+	 */
+	@Column(name = "op_time")
+	private Date operateTime;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public String getOperateName() {
+		return operateName;
+	}
+
+	public void setOperateName(String operateName) {
+		this.operateName = operateName;
+	}
+
+	public Date getOperateTime() {
+		return operateTime;
+	}
+
+	public void setOperateTime(Date operateTime) {
+		this.operateTime = operateTime;
+	}
+}

+ 41 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/service/BrandMapService.java

@@ -0,0 +1,41 @@
+package com.uas.platform.b2c.prod.product.brand.service;
+
+import com.uas.platform.b2c.prod.product.brand.modal.BrandMap;
+import com.uas.platform.b2c.prod.store.model.StoreType;
+import com.uas.platform.core.model.PageParams;
+import org.springframework.data.domain.Page;
+
+import java.util.List;
+
+/**
+ * 品牌映射Service
+ *
+ * @author hulh
+ */
+public interface BrandMapService {
+
+	/**
+	 * 获取所有设置好的品牌映射
+	 *
+	 * @return
+	 */
+	Page<BrandMap> findAllMap(PageParams params, String keyword, StoreType type, Long fromDate, Long toDate);
+
+	/**
+	 * 添加一个品牌映射
+	 *
+	 * @return
+	 */
+	BrandMap addOneMap(BrandMap map);
+
+	List<BrandMap> getMapDataList(String keyword, StoreType type, Long fromDate, Long toDate);
+
+	/**
+	 * 删除一个品牌映射
+	 *
+	 * @return
+	 */
+	Object deleteOneMap(Long id);
+
+	void initBrandMap();
+}

+ 168 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/service/impl/BrandMapServiceImpl.java

@@ -0,0 +1,168 @@
+package com.uas.platform.b2c.prod.product.brand.service.impl;
+
+import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
+import com.uas.platform.b2c.prod.product.brand.dao.BrandMapDao;
+import com.uas.platform.b2c.prod.product.brand.dao.BrandTempDao;
+import com.uas.platform.b2c.prod.product.brand.modal.Brand;
+import com.uas.platform.b2c.prod.product.brand.modal.BrandMap;
+import com.uas.platform.b2c.prod.product.brand.modal.BrandTemp;
+import com.uas.platform.b2c.prod.product.brand.modal.MapOperator;
+import com.uas.platform.b2c.prod.product.brand.service.BrandMapService;
+import com.uas.platform.b2c.prod.store.dao.StoreInDao;
+import com.uas.platform.b2c.prod.store.model.StoreIn;
+import com.uas.platform.b2c.prod.store.model.StoreType;
+import com.uas.platform.core.exception.IllegalOperatorException;
+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.PredicateUtils;
+import com.uas.platform.core.persistence.criteria.SimpleExpression;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 品牌映射服务的实现类
+ */
+@Service
+public class BrandMapServiceImpl implements BrandMapService{
+
+	@Autowired
+	private BrandTempDao brandTempDao;
+
+	@Autowired
+	private BrandMapDao brandMapDao;
+
+	@Autowired
+	private BrandDao brandDao;
+
+	@Autowired
+	private StoreInDao storeInDao;
+
+	//10041230L--10000666L--10030744L--10042176L--10005919L--10043358L--10044036L--10041191L--10042901L
+//	private final static List<Long> uuList = Arrays.asList(10041230L, 10000666L,
+//			10030744L, 10042176L, 10005919L, 10043358L, 10044036L, 10041191L, 10042901L);
+
+	//暂时测试happy和豆腐公司
+	private final static List<Long> uuList = Arrays.asList(10043457L, 10043516L);
+
+	public PageInfo convertPageInfo(PageInfo info, String keyword, StoreType type, Long fromDate, Long toDate){
+		if (type != null){
+			info.expression(PredicateUtils.eq("type", type, false));
+		}
+		if (StringUtils.hasText(keyword)){
+			SimpleExpression expression1 = new SimpleExpression("nameStandardEn", keyword, CriterionExpression.Operator.LIKE, true);
+			SimpleExpression expression2 = new SimpleExpression("nameStandardCn", keyword, CriterionExpression.Operator.LIKE, true);
+			SimpleExpression expression3 = new SimpleExpression("enName", keyword, CriterionExpression.Operator.LIKE);
+			SimpleExpression[] expressions = new SimpleExpression[]{expression1, expression2, expression3};
+			info.expression(PredicateUtils.or(expressions));
+		}
+		if (fromDate != null){
+			info.expression(PredicateUtils.gte("operateTime", new Date(fromDate), false));
+		}
+		if (toDate != null){
+			info.expression(PredicateUtils.lte("operateTime", new Date(toDate), false));
+		}
+		return info;
+	}
+
+	@Override
+	public Page<BrandMap> findAllMap(PageParams params, String keyword, StoreType type, Long fromDate, Long toDate) {
+		final PageInfo pageInfo = new PageInfo(params);
+		convertPageInfo(pageInfo, keyword, type, fromDate, toDate);
+		return brandMapDao.findAll(new Specification<BrandMap>() {
+			@Override
+			public Predicate toPredicate(Root<BrandMap> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
+				criteriaQuery.where(pageInfo.getPredicates(root, criteriaQuery, criteriaBuilder));
+				return null;
+			}
+		}, pageInfo);
+	}
+
+	@Override
+	public List<BrandMap> getMapDataList(String keyword, StoreType type, Long fromDate, Long toDate) {
+		final PageInfo pageInfo = new PageInfo();
+		convertPageInfo(pageInfo, keyword, type, fromDate, toDate);
+		List<BrandMap> mapList = brandMapDao.findAll(new Specification<BrandMap>() {
+			@Override
+			public Predicate toPredicate(Root<BrandMap> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		});
+		return mapList;
+	}
+
+	@Override
+	public BrandMap addOneMap(BrandMap map) {
+		User user = SystemSession.getUser();
+		map.setUserUU(user.getUserUU());
+		map.setOperateName(user.getUserName());
+		map.setOperateTime(new Date());
+
+		return brandMapDao.save(map);
+	}
+
+	@Override
+	public Object deleteOneMap(Long id) {
+		return null;
+	}
+
+	@Override
+	public void initBrandMap() {
+		List<BrandTemp> originalList = brandTempDao.getAllBySdNameNotNull();
+		List<BrandTemp> convertList = new ArrayList<>();
+		for (BrandTemp temp : originalList){
+			if (!temp.getNameCd().equals(temp.getNameSd())) { //相同的不记录
+				convertList.add(temp);
+			}
+		}
+		List<BrandMap> resultList = new ArrayList<>();
+		for (Long enuu : uuList){
+			List<StoreIn> storeList = storeInDao.findByEnUU(enuu);
+			if (CollectionUtils.isEmpty(storeList)){
+				throw new IllegalOperatorException("对应的店铺信息丢失,请刷新重新");
+			}else{
+				StoreIn store = storeList.get(0);
+				for (BrandTemp temp : convertList){
+
+					List<Brand> brandList = brandDao.findByNameEn(temp.getNameSd());
+					if (!CollectionUtils.isEmpty(brandList)){
+						Brand brand = brandList.get(0);
+						BrandMap map = new BrandMap();
+						map.setNameStandardEn(temp.getNameSd());
+						map.setNameStandardCn(brand.getNameCn());
+						map.setNameChildEn(temp.getNameCd());
+						map.setNameChildCn(temp.getNameCd());
+
+						map.setEnuu(store.getEnUU());
+						map.setEnName(store.getStoreName());
+						map.setType(store.getType());
+
+						User user = SystemSession.getUser();
+						map.setUserUU(user.getUserUU());
+						map.setOperateName(user.getUserName());
+						map.setOperateTime(new Date());
+
+						resultList.add(map);
+					}
+				}
+				brandMapDao.save(resultList);
+			}
+		}
+	}
+}

BIN
src/main/resources/jxls-tpl/product/brand-map.xls


+ 1 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_logistics_ctrl.js

@@ -30,6 +30,7 @@ define(['app/app', 'calendar'], function (app) {
 			height: 220
 		});
 
+
 		/**********************************************************************
 		 * 初始化
 		 **********************************************************************/