/**
*导入批发客户
*/
@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;
}