Commit 571ed5d7 by 陶光胜

Merge branch 'developer' of http://115.159.76.241/base_platform_enterprise/gic-store into developer

parents e7b19040 99209adb
......@@ -8,4 +8,8 @@ public interface Constants {
String STORE_BATCH_IMPORT_MQ_KEY = "storeBulkImport";
// String STORE_BATCH_IMPORT_MQ_KEY = "tmpStoreBatchImportTaskMq4.0";
Integer STORE_BATCH_IMPORT_TASK_TYPE = 6;
String dateformat = "YYYY-MM-dd HH:mm:ss";
}
......@@ -4,8 +4,6 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreDTO;
import java.util.List;
/**
* @author zhiwj
* @date 2019/6/24
......@@ -30,5 +28,4 @@ public interface StoreApiService {
*/
ServiceResponse<Integer> costStoreMove(String storeIds, String toStoreId);
ServiceResponse<List<List<String>>> listImportTitle(Integer enterpriseId, Integer regionId);
}
......@@ -5,6 +5,7 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreTmpDTO;
import java.util.List;
import java.util.Map;
/**
* @author zhiwj
......@@ -42,4 +43,8 @@ public interface StoreImportApiService {
ServiceResponse<Page> pageError(Integer enterpriseId, Integer currentPage, Integer pageSize);
// List<StoreTmpDTO> listStoreTmp(Integer enterpriseId, Boolean isSuccess, Boolean isWait);
ServiceResponse<List<List<String>>> listImportTitle(Integer enterpriseId, Integer regionId);
ServiceResponse<Map<Integer, Boolean>> fieldIsDateType(Integer enterpriseId, Integer regionId);
}
......@@ -4,6 +4,32 @@ package com.gic.store.utils.field;
* @author zhiwj
* @date 2019/7/8
*/
public class RealNumberField {
public class RealNumberField extends FieldBase{
private Integer floatDigits;
private Integer maxDigits;
private Integer minDigits;
public Integer getFloatDigits() {
return floatDigits;
}
public void setFloatDigits(Integer floatDigits) {
this.floatDigits = floatDigits;
}
public Integer getMaxDigits() {
return maxDigits;
}
public void setMaxDigits(Integer maxDigits) {
this.maxDigits = maxDigits;
}
public Integer getMinDigits() {
return minDigits;
}
public void setMinDigits(Integer minDigits) {
this.minDigits = minDigits;
}
}
\ No newline at end of file
......@@ -125,4 +125,12 @@ public interface StoreFieldService {
* @return
*/
List<TabStoreField> listByBatchId(List<Integer> storeFieldIds);
/**
* 根据名称和企业ID获取字段实体
* @param enterpriseId
* @param storeFieldName
* @return
*/
TabStoreField getStoreFieldByNameAndEnterpriseId(Integer enterpriseId, String storeFieldName);
}
......@@ -169,6 +169,17 @@ public class StoreFieldServiceImpl implements StoreFieldService{
}
@Override
public TabStoreField getStoreFieldByNameAndEnterpriseId(Integer enterpriseId, String storeFieldName) {
List<TabStoreField> list = listStoreFieldByEnterpriseId(enterpriseId);
for (TabStoreField storeField : list) {
if (storeField.getStoreFieldName().equals(storeFieldName)) {
return storeField;
}
}
return null;
}
@Override
public void sortBottom(int enterpriseId, int storeFieldId) {
Double sort = getMaxSort(enterpriseId);
TabStoreField storeField = new TabStoreField();
......
package com.gic.store.service.outer;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
......@@ -11,15 +9,12 @@ import com.gic.store.dto.*;
import com.gic.store.entity.*;
import com.gic.store.service.*;
import com.gic.store.utils.ErrorCode;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
......@@ -127,32 +122,4 @@ public class StoreApiServiceImpl implements StoreApiService {
public ServiceResponse<Integer> costStoreMove(String storeIds, String toStoreId) {
return null;
}
@Override
public ServiceResponse<List<List<String>>> listImportTitle(Integer enterpriseId, Integer regionId) {
List<List<String>> list = new ArrayList<>();
String[] rowName = {"序号", "门店名称", "门店代码", "门店类型", "门店状态", "门店电话", "门店所属分组", "关联门店品牌", "省", "市", "区县", "门店地址(不包括省市区)", "经度", "纬度"};
List<String> rowNameList = new ArrayList<>();
Collections.addAll(rowNameList, rowName);
String[] description = {"", "不能超过20个字", "必填,不能超过20个字符,为erp系统中门店唯一识别码", "门店类型描述", "门店状态描述", "门店电话描述", "门店所属分组描述", "用\"、\"隔开", "省描述", "市描述", "区县描述", "门店地址(不包括省市区)描述", "", ""};
List<String> descriptionList = new ArrayList<>();
Collections.addAll(descriptionList, description);
list.add(rowNameList);
list.add(descriptionList);
List<TabStoreField> fields = storeFieldService.listStoreFieldByRegionId(regionId);
if (CollectionUtils.isNotEmpty(fields)) {
for (TabStoreField field : fields) {
rowNameList.add(field.getStoreFieldName());
String storeFieldDetail = field.getStoreFieldDetail();
JSONObject jsonObject = JSON.parseObject(storeFieldDetail);
descriptionList.add(jsonObject.getString("tipMessage"));
}
}
return ServiceResponse.success(list);
}
}
package com.gic.store.service.outer;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.store.constant.StoreFieldTypeEnum;
import com.gic.store.dto.StoreExtendDTO;
import com.gic.store.dto.StoreTmpDTO;
import com.gic.store.entity.TabStoreBrand;
import com.gic.store.entity.TabStoreExtend;
import com.gic.store.entity.TabStoreField;
import com.gic.store.entity.TabStoreGroup;
import com.gic.store.service.*;
import org.apache.commons.collections.CollectionUtils;
......@@ -18,9 +21,7 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -40,9 +41,6 @@ public class StoreImportApiServiceImpl implements StoreImportApiService {
private StoreService storeService;
@Autowired
private StoreApiService storeApiService;
@Autowired
private StoreImportService storeImportService;
@Autowired
......@@ -54,6 +52,9 @@ public class StoreImportApiServiceImpl implements StoreImportApiService {
@Autowired
private StoreExtendService storeExtendService;
@Autowired
private StoreFieldService storeFieldService;
@Override
public ServiceResponse<Boolean> hasImportingStore(Integer enterpriseId) {
return ServiceResponse.success(storeImportService.hasImportingStore(enterpriseId));
......@@ -149,7 +150,7 @@ public class StoreImportApiServiceImpl implements StoreImportApiService {
}
private List<String> getTitle(Integer enterpriseId, Integer regionId) {
List<String> titleList = storeApiService.listImportTitle(enterpriseId, regionId).getResult().get(0);
List<String> titleList = this.listImportTitle(enterpriseId, regionId).getResult().get(0);
titleList.add("错误信息");
return titleList;
}
......@@ -205,4 +206,44 @@ public class StoreImportApiServiceImpl implements StoreImportApiService {
return ServiceResponse.success(storeTaskService.importDataToStore(enterpriseId, userId, uuId));
}
@Override
public ServiceResponse<List<List<String>>> listImportTitle(Integer enterpriseId, Integer regionId) {
List<List<String>> list = new ArrayList<>();
String[] rowName = {"序号", "门店名称", "门店代码", "门店类型", "门店状态", "门店电话", "门店所属分组", "关联门店品牌", "省", "市", "区县", "门店地址(不包括省市区)", "经度", "纬度"};
List<String> rowNameList = new ArrayList<>();
Collections.addAll(rowNameList, rowName);
String[] description = {"", "不能超过20个字", "必填,不能超过20个字符,为erp系统中门店唯一识别码", "门店类型描述", "门店状态描述", "门店电话描述", "门店所属分组描述", "用\"、\"隔开", "省描述", "市描述", "区县描述", "门店地址(不包括省市区)描述", "", ""};
List<String> descriptionList = new ArrayList<>();
Collections.addAll(descriptionList, description);
list.add(rowNameList);
list.add(descriptionList);
List<TabStoreField> fields = storeFieldService.listStoreFieldByRegionId(regionId);
if (CollectionUtils.isNotEmpty(fields)) {
for (TabStoreField field : fields) {
rowNameList.add(field.getStoreFieldName());
String storeFieldDetail = field.getStoreFieldDetail();
JSONObject jsonObject = JSON.parseObject(storeFieldDetail);
descriptionList.add(jsonObject.getString("tipMessage"));
}
}
return ServiceResponse.success(list);
}
@Override
public ServiceResponse<Map<Integer, Boolean>> fieldIsDateType(Integer enterpriseId, Integer regionId) {
HashMap<Integer, Boolean> map = new HashMap<>();
List<TabStoreField> fields = storeFieldService.listStoreFieldByRegionId(regionId);
if (CollectionUtils.isNotEmpty(fields)) {
for (int i = 0; i < fields.size(); i++) {
map.put(14 + i, fields.get(i).getStoreFieldType() == StoreFieldTypeEnum.DATE.getCode());
}
}
return ServiceResponse.success(map);
}
}
......@@ -191,7 +191,7 @@
where enterprise_id = #{enterpriseId}
and sort &lt; #{sort}
and status = 1
order by sort
order by sort desc
limit 1
</select>
......
......@@ -145,7 +145,7 @@
from tab_store_field_select
where store_field_id = #{storeFieldId}
and sort &lt; #{sort}
order by sort
order by sort desc
limit 1
</select>
......
......@@ -213,7 +213,7 @@
and strategy_type = #{strategyType}
and sort &lt; #{sort}
and status = 1
order by sort
order by sort desc
limit 1
</select>
......
package com.gic.store.web;
import com.gic.store.constant.Constants;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
......@@ -9,10 +10,8 @@ import org.apache.poi.xssf.usermodel.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author zhiwj
......@@ -268,16 +267,17 @@ public class ExcelUtils {
* @param fileType 文件的后缀 例如:xls xlsx
* @return
*/
public static List<Map<Integer, String>> readExcel(int row, String fileType, XSSFWorkbook xssfWorkbook) {
public static List<Map<Integer, String>> readExcel(int row, String fileType, XSSFWorkbook xssfWorkbook, Map<Integer, Boolean> dateTypeMap) {
if (fileType.equals("xlsx")) {
return readXlsx(xssfWorkbook, row);
return readXlsx(xssfWorkbook, row, dateTypeMap);
} else {
return null;
}
}
public static List<Map<Integer, String>> readXlsx(XSSFWorkbook xssfWorkbook, int row) {
public static List<Map<Integer, String>> readXlsx(XSSFWorkbook xssfWorkbook, int row, Map<Integer, Boolean> dateTypeMap) {
List<Map<Integer, String>> result = new ArrayList<Map<Integer, String>>();
SimpleDateFormat format = new SimpleDateFormat(Constants.dateformat);
// XSSFWorkbook xssfWorkbook = new XSSFWorkbook(in);
for (int numSheet = 0; numSheet < 1; numSheet++) {
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
......@@ -299,10 +299,17 @@ public class ExcelUtils {
if (xssfCell == null) {
map.put(colix, "");
} else {
if (xssfCell.getCellType() != Cell.CELL_TYPE_STRING) {
xssfCell.setCellType(Cell.CELL_TYPE_STRING);
Boolean isDate = dateTypeMap.get(colix);
if (isDate != null && isDate) {
Date date = xssfCell.getDateCellValue();
map.put(colix, format.format(date));
} else {
if (xssfCell.getCellType() != Cell.CELL_TYPE_STRING) {
xssfCell.setCellType(Cell.CELL_TYPE_STRING);
}
map.put(colix, xssfCell.getStringCellValue());
}
map.put(colix, xssfCell.getStringCellValue());
}
}
if (!isEmpty(map, minColix, maxColix)) {
......
......@@ -102,19 +102,19 @@ public class StoreDictController {
}
}
// @RequestMapping("relevance-storefield")
// @ResponseBody
// public RestResponse setStoreField(String value, int type){
// Integer enterpriseId = 1111;
// if(StringUtils.isBlank(value)){
// return EnterpriseRestResponse.failure(com.gic.enterprise.error.ErrorCode.ERR_2);
// }
// ServiceResponse serviceResponse = this.storeDictApiService.saveStoreField(enterpriseId, value, type);
// if(serviceResponse.isSuccess()){
// return RestResponse.success();
// }
// return EnterpriseRestResponse.failure(serviceResponse);
// }
@RequestMapping("relevance-storefield")
@ResponseBody
public RestResponse setStoreField(String value, int type){
Integer enterpriseId = 1111;
if(StringUtils.isBlank(value)){
return EnterpriseRestResponse.failure(com.gic.enterprise.error.ErrorCode.ERR_2);
}
ServiceResponse serviceResponse = this.storeDictApiService.saveStoreField(enterpriseId, value, type);
if(serviceResponse.isSuccess()){
return RestResponse.success();
}
return EnterpriseRestResponse.failure(serviceResponse);
}
@RequestMapping("list-storefield-relevance")
@ResponseBody
......
......@@ -14,6 +14,8 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
......@@ -37,7 +39,7 @@ import java.util.*;
*/
@RestController
public class StoreImportController {
private static final Logger logger = LogManager.getLogger(StoreController.class);
private static final Logger logger = LogManager.getLogger(StoreImportController.class);
@Autowired
private StoreApiService storeApiService;
......@@ -77,7 +79,7 @@ public class StoreImportController {
Integer enterpriseId = 1111;
List<List<String>> list = new ArrayList<>();
ServiceResponse<List<List<String>>> titleServiceResponse = storeApiService.listImportTitle(enterpriseId, Integer.parseInt(regionIdStr));
ServiceResponse<List<List<String>>> titleServiceResponse = storeImportApiService.listImportTitle(enterpriseId, Integer.parseInt(regionIdStr));
// 测试数据
List<String> list3 = new ArrayList<>();
Collections.addAll(list3, "1", "杭州测试总店", "A001", "自营", "上线", "12345678912", "杭州门店", "品牌1、品牌2", "浙江省", "杭州市", "西湖区", "华星时代广场", "经度", "纬度");
......@@ -133,13 +135,14 @@ public class StoreImportController {
if (storeRegion == null) {
return RestResponse.failure(ErrorCode.ERR_5.getCode(), "门店域不存在");
}
List<Map<Integer, String>> data = ExcelUtils.readExcel(6, fileName.substring(fileName.lastIndexOf(".") + 1), workbook);
ServiceResponse<List<List<String>>> titleServiceResponse = storeApiService.listImportTitle(enterpriseId, storeRegion.getRegionId());
ServiceResponse<Map<Integer, Boolean>> isDateTypeMap = storeImportApiService.fieldIsDateType(enterpriseId, storeRegion.getRegionId());
List<Map<Integer, String>> data = ExcelUtils.readExcel(6, fileName.substring(fileName.lastIndexOf(".") + 1), workbook, isDateTypeMap.getResult());
ServiceResponse<List<List<String>>> titleServiceResponse = storeImportApiService.listImportTitle(enterpriseId, storeRegion.getRegionId());
List<String> titleList = titleServiceResponse.getResult().get(0);
// todo 这里在测试完成后放开
// if (CollectionUtils.isNotEmpty(data) && titleList.size() != data.get(0).size()) {
// return RestResponse.failure(ErrorCode.ERR_7.getCode(), "总列数与模板不一致");
// }
if (CollectionUtils.isNotEmpty(data) && titleList.size() != data.get(0).size()) {
return RestResponse.failure(ErrorCode.ERR_7.getCode(), "总列数与模板不一致");
}
storeImportApiService.delStoreTmp(enterpriseId);
for (Map<Integer, String> row : data) {
StoreTmpDTO bean = this.validateData(row, enterpriseId, storeRegion.getRegionId());
......@@ -203,7 +206,12 @@ public class StoreImportController {
result.put("errorData", pageResponse);
result.put("total", totalList == null ? 0 : totalList.size());
result.put("success", successList == null ? 0 : successList.size());
result.put("error", pageResponse.getResult().size());
if (pageResponse.getResult().size() == 0) {
result.put("error", 0);
}else{
// 减去标题行
result.put("error", pageResponse.getResult().size() - 1);
}
return RestResponse.success(result);
}
......@@ -381,24 +389,20 @@ public class StoreImportController {
ServiceResponse<List<ProvinceDTO>> provinceResponse = provincesApiService.selectAllProvince();
ServiceResponse<List<CityDTO>> cityResponse = provincesApiService.selectAllCity();
ServiceResponse<List<CountyDTO>> countyResponse = provincesApiService.selectAllCounty();
if (provinceResponse.isSuccess() && cityResponse.isSuccess() && countyResponse.isSuccess()) {
List<ProvinceDTO> provinceDTOList = provinceResponse.getResult();
long provinceCount = provinceDTOList.stream().filter(e -> StringUtils.equals(e.getProvinceName(), province)).count();
List<CityDTO> cityDTOList = cityResponse.getResult();
long cityCount = cityDTOList.stream().filter(e -> StringUtils.equals(e.getCityName(), city)).count();
List<CountyDTO> countyDTOList = countyResponse.getResult();
long countyCount = countyDTOList.stream().filter(e -> StringUtils.equals(e.getCountyName(), county)).count();
if (countyCount == 0) {
bean.setErrorMessage("输入的区县信息有误");
}
if (cityCount == 0) {
bean.setErrorMessage("输入的市信息有误");
}
if (provinceCount == 0) {
bean.setErrorMessage("输入的省信息有误");
}
} else {
logger.warn("省市区调用服务失败");
List<ProvinceDTO> provinceDTOList = provinceResponse.getResult();
long provinceCount = provinceDTOList.stream().filter(e -> StringUtils.equals(e.getProvinceName(), province)).count();
List<CityDTO> cityDTOList = cityResponse.getResult();
long cityCount = cityDTOList.stream().filter(e -> StringUtils.equals(e.getCityName(), city)).count();
List<CountyDTO> countyDTOList = countyResponse.getResult();
long countyCount = countyDTOList.stream().filter(e -> StringUtils.equals(e.getCountyName(), county)).count();
if (countyCount == 0) {
bean.setErrorMessage("输入的区县信息有误");
}
if (cityCount == 0) {
bean.setErrorMessage("输入的市信息有误");
}
if (provinceCount == 0) {
bean.setErrorMessage("输入的省信息有误");
}
}
// 验证门店详细地址
......@@ -417,19 +421,24 @@ public class StoreImportController {
//todo 自定义属性验证
ServiceResponse<List<StoreFieldDTO>> fieldServiceResponse = storeFieldApiService.listStoreFieldByRegionId(regionId);
List<StoreFieldDTO> fieldList = fieldServiceResponse.getResult();
List<StoreExtendDTO> extendDTOList = new ArrayList<>();
for (int i = 0; i < fieldList.size(); i++) {
StoreExtendDTO storeExtendDTO = new StoreExtendDTO();
storeExtendDTO.setStoreFieldId(fieldList.get(i).getStoreFieldId());
storeExtendDTO.setValue(row.get(14 + i));
storeExtendDTO.setSort(fieldList.get(i).getSort());
// 验证
if (validate) {
if (CollectionUtils.isNotEmpty(fieldList)) {
List<StoreExtendDTO> extendDTOList = new ArrayList<>();
for (int i = 0; i < fieldList.size(); i++) {
StoreExtendDTO storeExtendDTO = new StoreExtendDTO();
storeExtendDTO.setStoreFieldId(fieldList.get(i).getStoreFieldId());
storeExtendDTO.setValue(row.get(14 + i));
storeExtendDTO.setSort(fieldList.get(i).getSort());
// 验证
if (validate) {
// String s = fieldValidate(storeExtendDTO.getValue(), fieldList.get(i).getStoreFieldDetail());
}
extendDTOList.add(storeExtendDTO);
}
extendDTOList.add(storeExtendDTO);
bean.setCustomField(JSON.toJSONString(extendDTOList));
} else {
bean.setCustomField(JSON.toJSONString(Collections.emptyList()));
}
bean.setCustomField(JSON.toJSONString(extendDTOList));
return bean;
}
......@@ -482,7 +491,9 @@ public class StoreImportController {
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row = sheet.getRow(0);
XSSFCell cell = row.getCell(0);
ServiceResponse<StoreRegionDTO> serviceResponse = storeRegionApiService.getStoreRegionByRegion(enterpriseId, (int) cell.getNumericCellValue());
cell.setCellType(Cell.CELL_TYPE_STRING);
String value = cell.getStringCellValue();
ServiceResponse<StoreRegionDTO> serviceResponse = storeRegionApiService.getStoreRegionByRegion(enterpriseId, Integer.valueOf(value));
return serviceResponse.isSuccess() ? serviceResponse.getResult() : null;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment