导入批发客户

/**
	 *导入批发客户
	 */
	@RequestMapping(value = "impt/data", method = { RequestMethod.POST })
	@ResponseBody
	public Object imptDetailData(HttpServletRequest request,String storeId, MultipartFile file) {
		String info = "导入批发客户";
		logger.debug(info);
		Map<String, Object> result =new HashMap<>();
		String tenantId = getCurrentTenantId();
		try {
			if (file == null || file.isEmpty()) {
				result = ajaxJsonErrorMessageByObj("文件不能为空");
				return result;
			}

			String xmlFilePath = getImptTemplateFilePath("customer.xml");
			InputStream inputXML = new BufferedInputStream(new FileInputStream(xmlFilePath));
			XLSReader reader = ReaderBuilder.buildFromXML(inputXML);
			InputStream inputXLS = new BufferedInputStream(file.getInputStream());

			List<Customer> dataList = new ArrayList<>();
			Map<Object, Object> beans = new HashMap<>();
			beans.put("dataList", dataList);
			XLSReadStatus readStatus = reader.read(inputXLS, beans);
			
			List<Customer> customerList=new ArrayList<>();
			Criteria criteria=new Criteria();
			customerList=customerService.getList(tenantId, criteria);
			
			List<CustomerLevel> levelList=new ArrayList<>();
			criteria=new Criteria();
			levelList=customerLevelService.getList(tenantId, criteria);
			
			List<CustomerArea> areaList=new ArrayList<>();
			criteria=new Criteria();
			areaList=customerAreaService.getList(tenantId, criteria);
			
			if(CollectionUtils.isNotEmpty(dataList)) {
				List<String> codeList=customerList.stream().map(w->w.getCode()).collect(Collectors.toList());
				List<String> levels=levelList.stream().map(w->w.getCode()).collect(Collectors.toList());
				List<String> areaNameList=areaList.stream().map(w->w.getName()).collect(Collectors.toList());
				for(int i=0;i<dataList.size();i++) {
					Customer customer=new Customer();//导入的批发客户
					Customer obj=dataList.get(i);
					
					String code=obj.getCode();
					Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");  
					if(StringUtils.isBlank(code)) {
						result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"的编码不能为空!");
						return result;
					}else if(codeList.contains(code)) {
						result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"的编码已存在!请重新填写");
						return result;
					}else if(code.length()>6) {
						result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"的编码不能超过6位");
						return result;
					}else if(!pattern.matcher(code).matches()){
						result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"的编码格式不正确");
						return result;
					}else {
						customer.setCode(code);
					}
					
					String levelCode=obj.getLevelId();
					if(StringUtils.isBlank(levelCode)) {
						CustomerLevel level=customerLevelService.find(tenantId, "code", 07);
						customer.setLevelId(level.getId());
					}else if(!levels.contains(levelCode)) {
						result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"请按照以下等级编码填写:"+levels);
						return result;
					}else {
						CustomerLevel level=customerLevelService.find(tenantId, "code", levelCode);
						customer.setLevelId(level.getId());
					}
					
					String mobile=obj.getMobile();
					if(StringUtils.isNotBlank(mobile)) {
						if(11!=mobile.length()) {
							result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"请填写11位的手机号!");
							return result;
						}else if(!pattern.matcher(mobile).matches()) {
							result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"的手机号格式不正确,请重新填写!");
							return result;
						}else {
							customer.setMobile(mobile);
						}
					}
					
					String tel=obj.getTel();
					if(StringUtils.isNotBlank(tel)) {
						if(!pattern.matcher(tel).matches()) {
							result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"的座机号格式不正确,请重新填写!");
							return result;
						}else {
							customer.setTel(tel);
						}
					}
					
					if(StringUtils.isBlank(obj.getExt1())) {
						result = ajaxJsonErrorMessageByObj("第"+(i+3)+"行客户"+obj.getName()+"请至少输入一级区域!");
						return result;
					}else if(StringUtils.isNotBlank(obj.getExt1()) && StringUtils.isBlank(obj.getExt2()) && StringUtils.isBlank(obj.getExt3()) && !areaNameList.contains(obj.getExt1())) {
						CustomerArea area=new CustomerArea();
						String id=String.valueOf(IdWorkerUtils.getInstance().nextId());
						area.setId(id);
						area.setName(obj.getExt1());
						area.setParentId(null);
						criteria =new Criteria();
						criteria.add(Restrictions.eq("length(code)", 2));
						String maxNo = getGenerateNo(getCurrentTenantId(), customerAreaService, criteria, 2);
						area.setCode(maxNo);
						area.setPath(id);
						area.setCreateUser(getCurrentUserName());
						area.setCreateDate(new Date());
						area=customerAreaService.save(tenantId, area);
	
						customer.setAreaId(area.getId());
						customer.setAreaPath(area.getPath());
					}else if(StringUtils.isNotBlank(obj.getExt1()) && areaNameList.contains(obj.getExt1()) && StringUtils.isBlank(obj.getExt2())  && StringUtils.isBlank(obj.getExt3()) ) {
						CustomerArea customerArea=new CustomerArea();
						customerArea=customerAreaService.find(tenantId, "name", obj.getExt1());
						customer.setAreaId(customerArea.getId());
						customer.setAreaPath(customerArea.getPath());
					}else if(StringUtils.isNotBlank(obj.getExt1()) && areaNameList.contains(obj.getExt1()) && StringUtils.isNotBlank(obj.getExt2()) && !areaNameList.contains(obj.getExt2()) && StringUtils.isBlank(obj.getExt3())  ) {
						CustomerArea customerArea=new CustomerArea();
						customerArea=customerAreaService.find(tenantId, "name", obj.getExt1());
						
						criteria =new Criteria();
						criteria.add(Restrictions.eq("length(code)", 4));
						criteria.add(Restrictions.like("code", ""+customerArea.getCode()+"%"));
						String maxNo = getGenerateNo(getCurrentTenantId(), customerAreaService, criteria, 4);
						if(maxNo.indexOf(customerArea.getCode())==-1) {
							maxNo=customerArea.getCode()+"01";
						}
						CustomerArea tArea=new CustomerArea();
						String tId=String.valueOf(IdWorkerUtils.getInstance().nextId());
						tArea.setId(tId);
						tArea.setName(obj.getExt2());
						tArea.setParentId(customerArea.getId());
						tArea.setCode(maxNo);
						tArea.setPath(customerArea.getId()+","+tId);
						tArea.setCreateUser(getCurrentUserName());
						tArea.setCreateDate(new Date());
						tArea=customerAreaService.save(tenantId, tArea);
						customer.setAreaId(tArea.getId());
						customer.setAreaPath(tArea.getPath());
					}else if(StringUtils.isNotBlank(obj.getExt1()) && areaNameList.contains(obj.getExt1()) && StringUtils.isNotBlank(obj.getExt2()) && areaNameList.contains(obj.getExt2()) && StringUtils.isBlank(obj.getExt3()) ) {
						CustomerArea customerArea=new CustomerArea();
						customerArea=customerAreaService.find(tenantId, "name", obj.getExt2());
						customer.setAreaId(customerArea.getId());
						customer.setAreaPath(customerArea.getPath());
					}else if(StringUtils.isNotBlank(obj.getExt1()) && areaNameList.contains(obj.getExt1()) && StringUtils.isNotBlank(obj.getExt2()) && areaNameList.contains(obj.getExt2()) && StringUtils.isNotBlank(obj.getExt3()) && !areaNameList.contains(obj.getExt3())) {
						CustomerArea customerArea=new CustomerArea();
						customerArea=customerAreaService.find(tenantId, "name", obj.getExt2());
						
						criteria =new Criteria();
						criteria.add(Restrictions.eq("length(code)",6));
						criteria.add(Restrictions.like("code", ""+customerArea.getCode()+"%"));
						String maxNo = getGenerateNo(getCurrentTenantId(), customerAreaService, criteria, 6);
						if(maxNo.indexOf(customerArea.getCode())==-1) {
							maxNo=customerArea.getCode()+"01";
						}
						CustomerArea cArea=new CustomerArea();
						String tId=String.valueOf(IdWorkerUtils.getInstance().nextId());
						cArea.setId(tId);
						cArea.setName(obj.getExt3());
						cArea.setParentId(customerArea.getId());
						cArea.setCode(maxNo);
						cArea.setPath(customerArea.getId()+","+tId);
						cArea.setCreateUser(getCurrentUserName());
						cArea.setCreateDate(new Date());
						cArea=customerAreaService.save(tenantId, cArea);
						customer.setAreaId(cArea.getId());
						customer.setAreaPath(cArea.getPath());
					}else if(StringUtils.isNotBlank(obj.getExt1()) && areaNameList.contains(obj.getExt1()) && StringUtils.isNotBlank(obj.getExt2()) && areaNameList.contains(obj.getExt2()) && StringUtils.isNotBlank(obj.getExt3()) && areaNameList.contains(obj.getExt3())) {
						CustomerArea customerArea=new CustomerArea();
						customerArea=customerAreaService.find(tenantId, "name", obj.getExt3());
						customer.setAreaId(customerArea.getId());
						customer.setAreaPath(customerArea.getPath());
					}else {
						CustomerArea area=new CustomerArea();
						String id=String.valueOf(IdWorkerUtils.getInstance().nextId());
						area.setId(id);
						area.setName(obj.getExt1());
						area.setParentId(null);
						criteria =new Criteria();
						criteria.add(Restrictions.eq("length(code)", 2));
						String maxNo = getGenerateNo(getCurrentTenantId(), customerAreaService, criteria, 2);
						area.setCode(maxNo);
						area.setPath(id);
						area.setCreateUser(getCurrentUserName());
						area.setCreateDate(new Date());
						area=customerAreaService.save(tenantId, area);

						CustomerArea tArea=new CustomerArea();
						String tId=String.valueOf(IdWorkerUtils.getInstance().nextId());
						tArea.setId(tId);
						tArea.setName(obj.getExt2());
						tArea.setParentId(area.getId());
						tArea.setCode(area.getCode()+"01");
						tArea.setPath(area.getId()+","+tId);
						tArea.setCreateUser(getCurrentUserName());
						tArea.setCreateDate(new Date());
						tArea=customerAreaService.save(tenantId, tArea);

						CustomerArea cArea=new CustomerArea();
						String cId=String.valueOf(IdWorkerUtils.getInstance().nextId());
						cArea.setId(cId);
						cArea.setName(obj.getExt3());
						cArea.setParentId(tArea.getId());
						cArea.setCode(tArea.getCode()+"01");
						cArea.setPath(area.getId()+","+tArea.getId()+","+cId);
						cArea.setCreateUser(getCurrentUserName());
						cArea.setCreateDate(new Date());
						cArea=customerAreaService.save(tenantId, cArea);
						customer.setAreaId(cArea.getId());
						customer.setAreaPath(cArea.getPath());
					}
					
					if(StringUtils.isNotBlank(obj.getContact())) {
						customer.setContact(obj.getContact());
					}
					if(StringUtils.isNotBlank(obj.getAddress())) {
						customer.setAddress(obj.getAddress());
					}
					Store headStore = getDefaultStore(getCurrentTenantId());
					if(null!=headStore) {
						customer.setDealOrganize(headStore.getId());	
					}
					
					customer.setName(obj.getName());
					customer.setUsedCreditline(0.00);
					customer.setValidCreditline(customer.getCreditline());
					customer.setDealType(0);
					customer.setCompanyType(0);
					customer.setCreateUser(getCurrentUserName());
					customer.setCreateDate(new Date());
					customer=customerService.save(tenantId, customer);
					
					if(null!=customer) {
						CustomerPeople people=new CustomerPeople();
						people.setCustomerId(customer.getId());
						people.setName(customer.getContact());
						people.setMobile(customer.getMobile());
						people.setStatus(0);
						people.setSex(1);
						people.setManagerFlag(1);
						people.setCreateDate(new Date());
						people.setCreateUser(getCurrentUserName());
						customerPeopleService.save(tenantId, people);
					}
				}
			}
			result=ajaxJsonSuccessMessageByObj("导入成功!");
		} catch (XLSDataReadException jxlsEx) {
			logger.error(info + "时,发生异常", jxlsEx);
			result = ajaxJsonErrorMessageByObj("请确认数据格式以及必填数据是否填写正确!");
		} catch (Exception ex) {
			logger.error(info + "时,发生异常", ex);
			result = ajaxJsonErrorMessageByObj("数据处理失败");
		} 
		return result;
	}
	

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值