Commit b1972726 by zhiwj

门店自定义字段导入, 修改品牌删除bug

parent b8e6255a
package com.gic.store.constant;
/**
* @author zhiwj
* @date 2019/7/8
*/
public enum StoreEnableOrDisAbleEnum {
ENABLE(1, "启用"),
DISABLE(2, "不启用"),
;
private int code;
private String message;
StoreEnableOrDisAbleEnum(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
package com.gic.store.utils.field;
/**
* @author zhiwj
* @date 2019/7/8
*/
public class CheckField extends FieldBase {
}
......@@ -8,6 +8,7 @@ public class FieldBase {
private Integer allowEdit;
private Integer isMust;
private Integer allowRepeat;
private String value;
public void setAllowEdit(Integer allowEdit) {
this.allowEdit = allowEdit;
......@@ -32,4 +33,12 @@ public class FieldBase {
public boolean getAllowRepeat() {
return allowRepeat == 1;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
package com.gic.store.utils.field;
/**
* @author zhiwj
* @date 2019/7/8
*/
public class RadioField extends FieldBase {
}
package com.gic.store.utils.field;
/**
* @author zhiwj
* @date 2019/7/8
*/
public class RealNumberField {
}
\ No newline at end of file
......@@ -100,14 +100,19 @@ public class StoreBrandApiServiceImpl implements StoreBrandApiService {
return count == 0;
})
.collect(Collectors.toList());
//
if (CollectionUtils.isEmpty(notDelList)) {
// 要删除品牌
storeBrandService.deleteByIds(enterpriseId, delList);
return ServiceResponse.success();
} else {
// 有不能删除的品牌
List<TabStoreBrand> storeBrandList = storeBrandService.listStoreBrandByIds(notDelList);
EntityUtil.changeEntityListByOrika(StoreBrandDTO.class, storeBrandList);
return ServiceResponse.failure(ErrorCode.ERR_9999.getCode(), "部分数据在使用中", EntityUtil.changeEntityListByOrika(StoreBrandDTO.class, storeBrandList));
}
List<TabStoreBrand> storeBrandList = storeBrandService.listStoreBrandByIds(notDelList);
EntityUtil.changeEntityListByOrika(StoreBrandDTO.class, storeBrandList);
return ServiceResponse.failure(ErrorCode.ERR_9999.getCode(), "部分数据在使用中", EntityUtil.changeEntityListByOrika(StoreBrandDTO.class, storeBrandList));
} else {
// 没有要删除的品牌
return ServiceResponse.success();
}
}
......
......@@ -159,11 +159,12 @@ public class StoreImportApiServiceImpl implements StoreImportApiService {
List<List<String>> resultList = new LinkedList<>();
Page page = this.listStoreTmp(enterpriseId, Boolean.FALSE, currentPage, pageSize).getResult();
List<StoreTmpDTO> dataList = page.getResult();
List<String> title = getTitle(enterpriseId, dataList.get(0).getRegionId());
resultList.add(title);
packData(resultList, dataList);
page.setResult(resultList);
if (CollectionUtils.isNotEmpty(dataList)) {
List<String> title = getTitle(enterpriseId, dataList.get(0).getRegionId());
resultList.add(title);
packData(resultList, dataList);
page.setResult(resultList);
}
return ServiceResponse.success(page);
}
......
......@@ -4,13 +4,11 @@ import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GlobalInfo;
import com.gic.store.constant.Constants;
import com.gic.store.constant.CreateTypeEnum;
import com.gic.store.constant.*;
import com.gic.store.dto.*;
import com.gic.store.entity.TabStoreBrand;
import com.gic.store.entity.TabStoreGroup;
import com.gic.store.entity.TabStoreTmp;
import com.gic.store.entity.*;
import com.gic.store.service.*;
import com.github.pagehelper.Page;
import com.google.common.base.Joiner;
import com.task.allocation.api.AbstractTaskAllocationOperation;
import com.task.allocation.exception.TaskAllocationException;
......@@ -57,6 +55,18 @@ public class StoreTaskServiceImpl extends AbstractTaskAllocationOperation implem
@Autowired
private StoreService storeService;
@Autowired
private StoreStrategyApiService storeStrategyApiService;
@Autowired
private StoreStrategyService storeStrategyService;
@Autowired
private StoreFieldService storeFieldService;
@Autowired
private StoreFieldSelectService storeFieldSelectService;
@Override
public List<Object> getListTasks(String params) {
List<TabStoreTmp> list = storeImportService.listUnImportStore(params);
......@@ -109,56 +119,95 @@ public class StoreTaskServiceImpl extends AbstractTaskAllocationOperation implem
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();
Optional<ProvinceDTO> provinceDTO = provinceDTOList.stream().filter(e -> StringUtils.equals(e.getProvinceName(), t.getProvince())).findFirst();
storeDTO.setProvinceId(provinceDTO.get().getProvinceId());
List<CityDTO> cityDTOList = cityResponse.getResult();
Optional<CityDTO> cityDTO = cityDTOList.stream().filter(e -> StringUtils.equals(e.getCityName(), t.getCity())).findFirst();
storeDTO.setCityId(cityDTO.get().getCityId());
List<CountyDTO> countyDTOList = countyResponse.getResult();
Optional<CountyDTO> countyDTO = countyDTOList.stream().filter(e -> StringUtils.equals(e.getCountyName(), t.getCounty())).findFirst();
storeDTO.setAreaId(countyDTO.get().getCountyId());
storeDTO.setProvinces(provinceDTO.get().getProvinceName() + "\\" + cityDTO.get().getCityName() + "\\" + countyDTO.get().getCountyName());
} else {
logger.warn("省市区调用失败");
}
List<ProvinceDTO> provinceDTOList = provinceResponse.getResult();
Optional<ProvinceDTO> provinceDTO = provinceDTOList.stream().filter(e -> StringUtils.equals(e.getProvinceName(), t.getProvince())).findFirst();
storeDTO.setProvinceId(provinceDTO.get().getProvinceId());
List<CityDTO> cityDTOList = cityResponse.getResult();
Optional<CityDTO> cityDTO = cityDTOList.stream().filter(e -> StringUtils.equals(e.getCityName(), t.getCity())).findFirst();
storeDTO.setCityId(cityDTO.get().getCityId());
List<CountyDTO> countyDTOList = countyResponse.getResult();
Optional<CountyDTO> countyDTO = countyDTOList.stream().filter(e -> StringUtils.equals(e.getCountyName(), t.getCounty())).findFirst();
storeDTO.setAreaId(countyDTO.get().getCountyId());
storeDTO.setProvinces(provinceDTO.get().getProvinceName() + "/" + cityDTO.get().getCityName() + "/" + countyDTO.get().getCountyName());
storeDTO.setLongitude(t.getLongitude());
storeDTO.setLatitude(t.getLatitude());
// todo 判断溢出
storeDTO.setOverflowStatus(0);
storeDTO.setStatus(2);
ServiceResponse<List<StoreDictDTO>> erpStatusResponse = storeDictApiService.listStoreStatus(t.getEnterpriseId());
if (erpStatusResponse.isSuccess()) {
List<StoreDictDTO> erpList = erpStatusResponse.getResult();
final String erpStatusTmp = t.getErpStatus().replace("\\s+", "");
Optional<StoreDictDTO> erpStatusDTO = erpList.stream().filter(e -> e.getKey().equals(erpStatusTmp)).findFirst();
storeDTO.setErpStatus(Integer.parseInt(erpStatusDTO.get().getValue()));
} else {
logger.warn("字典模块调用失败");
}
List<StoreDictDTO> erpList = erpStatusResponse.getResult();
final String erpStatusTmp = t.getErpStatus().replace("\\s+", "");
Optional<StoreDictDTO> erpStatusDTO = erpList.stream().filter(e -> e.getKey().equals(erpStatusTmp)).findFirst();
storeDTO.setErpStatus(Integer.parseInt(erpStatusDTO.get().getValue()));
ServiceResponse<List<StoreDictDTO>> storeTypeResponse = storeDictApiService.listStoreType(t.getEnterpriseId());
if (storeTypeResponse.isSuccess()) {
List<StoreDictDTO> typeList = storeTypeResponse.getResult();
final String typeTmp = t.getStoreType().replace("\\s+", "");
Optional<StoreDictDTO> typeTmpDTO = typeList.stream().filter(e -> e.getKey().equals(typeTmp)).findFirst();
storeDTO.setStoreType(Integer.parseInt(typeTmpDTO.get().getValue()));
List<StoreDictDTO> typeList = storeTypeResponse.getResult();
final String typeTmp = t.getStoreType().replace("\\s+", "");
Optional<StoreDictDTO> typeTmpDTO = typeList.stream().filter(e -> e.getKey().equals(typeTmp)).findFirst();
storeDTO.setStoreType(Integer.parseInt(typeTmpDTO.get().getValue()));
// 判断分组
if (Integer.valueOf(1) == storeStrategyApiService.getStoreGroupStrategyWeight(t.getEnterpriseId()).getResult()) {
// 不启用分组策略
if (StringUtils.isBlank(t.getStoreGroupName())) {
// 取 未分类 分组
TabStoreGroup group = storeGroupService.selectUnGroupedStore(t.getEnterpriseId());
storeDTO.setStoreGroupId(group.getStoreGroupId());
} else {
// 判断分组是否存在
TabStoreGroup group = storeGroupService.getStoreGroupByName(t.getStoreGroupName(), t.getEnterpriseId());
if (group != null) {
storeDTO.setStoreGroupId(group.getStoreGroupId());
} else {
t.setErrorMessage("分组不存在");
storeImportService.updateData(t);
logger.info("enterpriseId:{}, groupName:{}, 不存在该分组", t.getEnterpriseId(), t.getStoreGroupName());
return;
}
}
} else {
logger.warn("字典模块调用失败");
// 启用分组策略
String groupId = storeStrategyService.isHitStrategy(storeDTO, StoreGroupConstant.STORE_GROUP_STRATEGY_TYPE);
if (StringUtils.isNotBlank(groupId)) {
// 命中
storeDTO.setStoreGroupId(Integer.valueOf(groupId));
} else {
// 未命中
TabStoreGroup group = storeGroupService.selectUnGroupedStore(t.getEnterpriseId());
storeDTO.setStoreGroupId(group.getStoreGroupId());
}
}
TabStoreGroup group = storeGroupService.getStoreGroupByName(t.getStoreGroupName(), t.getEnterpriseId());
storeDTO.setStoreGroupId(group.getStoreGroupId());
// 启用策略
String hitStrategy = storeStrategyService.isHitStrategy(storeDTO, StoreGroupConstant.STORE_STRATEGY_TYPE);
storeDTO.setStatus(StringUtils.isNotBlank(hitStrategy) ? Integer.valueOf(hitStrategy) : StoreEnableOrDisAbleEnum.DISABLE.getCode());
storeDTO.setCreateTime(new Date());
storeDTO.setCreateType(CreateTypeEnum.BATCH_IMPORT.getCode());
// todo 扩展信息
// 扩展信息
String customField = t.getCustomField();
List<StoreExtendDTO> extendList = JSON.parseArray(customField, StoreExtendDTO.class);
for (StoreExtendDTO storeExtendDTO : extendList) {
TabStoreField field = storeFieldService.getStoreFieldById(storeExtendDTO.getStoreFieldId());
if (StoreFieldTypeEnum.RADIO.getCode() == field.getStoreFieldType() || StoreFieldTypeEnum.CHECK.getCode() == field.getStoreFieldType()) {
String[] valueArr = storeExtendDTO.getValue().split(GlobalInfo.FLAG_COMMA);
Page<TabStoreFieldSelect> fieldSelects = storeFieldSelectService.listStoreFieldSelect(storeExtendDTO.getStoreFieldId(), null, 1, Integer.MAX_VALUE);
String newValue = fieldSelects.stream()
.filter(e -> {
for (String value : valueArr) {
if (e.getStoreFieldSelectName().equals(value)) {
return true;
}
}
return false;
})
.map(e -> e.getStoreFieldSelectId() + "")
.reduce((x, y) -> x + GlobalInfo.FLAG_COMMA + y).get();
storeExtendDTO.setValue(newValue);
}
}
storeDTO.setStoreExtendList(extendList);
ServiceResponse<Integer> serviceResponse = storeApiService.saveOrUpdate(storeDTO);
......
......@@ -61,6 +61,9 @@
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.gic.store.entity.TabStore">
<selectKey keyProperty="storeId" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into tab_store
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="storeId != null">
......
......@@ -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
......
......@@ -57,6 +57,9 @@ public class StoreImportController {
@Autowired
private StoreFieldApiService storeFieldApiService;
@Autowired
private StoreStrategyApiService storeStrategyApiService;
/**
* 下载模板
* @param request
......@@ -318,19 +321,22 @@ public class StoreImportController {
validate = false;
}
}
// 验证门店所属分组
// 验证门店所属分组,
String storeGroupName = row.get(6);
if (StringUtils.isBlank(storeGroupName)) {
validate = false;
bean.setErrorMessage("门店分组不能为空");
}
if (validate) {
if (StringUtils.isBlank(storeImportApiService.isExistStoreGroup(enterpriseId, storeGroupName).getResult())) {
validate = false;
bean.setErrorMessage("门店分组不存在");
bean.setStoreGroupName(storeGroupName);
if (Integer.valueOf(1) == storeStrategyApiService.getStoreGroupStrategyWeight(enterpriseId).getResult()) {
// 1:不启用门店分组策略, 以填写的为准; 0:填写了门店分组策略, 以门店分组策略为准
if (StringUtils.isNotBlank(storeGroupName)) {
// 填写分组后需要判断分组是否存在,不填写分组就默认给未分组
if (validate) {
if (StringUtils.isBlank(storeImportApiService.isExistStoreGroup(enterpriseId, storeGroupName).getResult())) {
validate = false;
bean.setErrorMessage("门店分组不存在");
}
}
}
}
bean.setStoreGroupName(storeGroupName);
// 验证品牌
String brands = row.get(7);
......
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