Commit fb808ea9 by guojuxing

自定义域字段-排序

parent 941c5442
......@@ -75,14 +75,14 @@ public interface TabStoreFieldSelectMapper {
* @param storeFieldId
* @return
*/
double getMinSort(@Param("storeFieldId") Integer storeFieldId);
Double getMinSort(@Param("storeFieldId") Integer storeFieldId);
/**
* 查询某字段最大排序值
* @param storeFieldId
* @return
*/
double getMaxSort(@Param("storeFieldId") Integer storeFieldId);
Double getMaxSort(@Param("storeFieldId") Integer storeFieldId);
/**
* 查询几条连续的记录
......@@ -103,4 +103,10 @@ public interface TabStoreFieldSelectMapper {
*/
List<TabStoreFieldSelect> listStoreFieldSelect(@Param("storeFieldId") Integer storeFieldId, @Param("search") String search);
int isRepeatCode(@Param("storeFieldId") Integer storeFieldId, @Param("storeFieldSelectId") Integer storeFieldSelectId,
@Param("storeFieldSelectCode") String storeFieldSelectCode);
int isRepeatName(@Param("storeFieldId") Integer storeFieldId, @Param("storeFieldSelectId") Integer storeFieldSelectId,
@Param("storeFieldSelectName") String storeFieldSelectName);
}
\ No newline at end of file
......@@ -68,4 +68,25 @@ public interface StoreFieldSelectService {
* @return
*/
Page<TabStoreFieldSelect> listStoreFieldSelect(int storeFieldId, String search, Integer pageNum, Integer pageSize);
/**
* 置底
* @param storeFieldId
* @param storeFieldSelectId
*/
void sortBottom(int storeFieldId, int storeFieldSelectId);
/**
* 置顶
* @param storeFieldId
* @param storeFieldSelectId
*/
void sortTopping(int storeFieldId, int storeFieldSelectId);
double getMinSort(int storeFieldId);
boolean isRepeatCode(Integer storeFieldId, Integer storeFieldSelectId, String storeFieldSelectCode);
boolean isRepeatName(Integer storeFieldId, Integer storeFieldSelectId, String storeFieldSelectName);
}
......@@ -24,7 +24,9 @@ public class StoreFieldSelectServiceImpl implements StoreFieldSelectService{
@Override
public int save(StoreFieldSelectDTO storeFieldSelectDTO) {
return tabStoreFieldSelectMapper.insert(EntityUtil.changeEntityNew(TabStoreFieldSelect.class, storeFieldSelectDTO));
TabStoreFieldSelect storeFieldSelect = EntityUtil.changeEntityNew(TabStoreFieldSelect.class, storeFieldSelectDTO);
tabStoreFieldSelectMapper.insert(storeFieldSelect);
return storeFieldSelect.getStoreFieldSelectId();
}
@Override
......@@ -102,20 +104,51 @@ public class StoreFieldSelectServiceImpl implements StoreFieldSelectService{
}
private void sortTopping(int storeFieldId, int storeFieldSelectId) {
Double sort = tabStoreFieldSelectMapper.getMinSort(storeFieldId);
@Override
public void sortTopping(int storeFieldId, int storeFieldSelectId) {
Double sort = getMinSort(storeFieldId);
TabStoreFieldSelect fieldSelect = new TabStoreFieldSelect();
fieldSelect.setStoreFieldSelectId(storeFieldSelectId);
fieldSelect.setSort(sort - 1d);
tabStoreFieldSelectMapper.updateByPrimaryKeySelective(fieldSelect);
}
private void sortBottom(int storeFieldId, int storeFieldSelectId) {
Double sort = tabStoreFieldSelectMapper.getMaxSort(storeFieldId);
@Override
public double getMinSort(int storeFieldId) {
Double sort = tabStoreFieldSelectMapper.getMinSort(storeFieldId);
return sort == null ? 1d : sort;
}
@Override
public boolean isRepeatCode(Integer storeFieldId, Integer storeFieldSelectId, String storeFieldSelectCode) {
int count = tabStoreFieldSelectMapper.isRepeatCode(storeFieldId, storeFieldSelectId, storeFieldSelectCode);
if (count > 0) {
return true;
}
return false;
}
@Override
public boolean isRepeatName(Integer storeFieldId, Integer storeFieldSelectId, String storeFieldSelectName) {
int count = tabStoreFieldSelectMapper.isRepeatName(storeFieldId, storeFieldSelectId, storeFieldSelectName);
if (count > 0) {
return true;
}
return false;
}
@Override
public void sortBottom(int storeFieldId, int storeFieldSelectId) {
Double sort = getMaxSort(storeFieldId);
TabStoreFieldSelect fieldSelect = new TabStoreFieldSelect();
fieldSelect.setStoreFieldSelectId(storeFieldSelectId);
fieldSelect.setSort(sort + 1d);
tabStoreFieldSelectMapper.updateByPrimaryKeySelective(fieldSelect);
}
public double getMaxSort(int storeFieldId) {
Double sort = tabStoreFieldSelectMapper.getMaxSort(storeFieldId);
return sort == null ? 1d : sort;
}
}
......@@ -23,7 +23,9 @@ public class StoreFieldServiceImpl implements StoreFieldService{
private TabStoreFieldMapper tabStoreFieldMapper;
@Override
public int save(StoreFieldDTO storeFieldDTO) {
return tabStoreFieldMapper.insert(EntityUtil.changeEntityNew(TabStoreField.class, storeFieldDTO));
TabStoreField storeField = EntityUtil.changeEntityNew(TabStoreField.class, storeFieldDTO);
tabStoreFieldMapper.insert(storeField);
return storeField.getStoreFieldId();
}
@Override
......
......@@ -45,6 +45,10 @@ public class StoreFieldApiServiceImpl implements StoreFieldApiService{
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "Code不能重复");
}
}
if (storeFieldService.isRepeatName(storeFieldDTO.getEnterpriseId(), null, storeFieldDTO.getStoreFieldName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性名称不能重复");
}
ServiceResponse validParamResult = StoreFieldValidParamUtil.validStoreFieldDetail(storeFieldDTO.getStoreFieldType(), storeFieldDTO.getStoreFieldDetail());
if (!validParamResult.isSuccess()) {
return validParamResult;
......@@ -119,6 +123,11 @@ public class StoreFieldApiServiceImpl implements StoreFieldApiService{
if (StringUtils.isBlank(storeFieldDTO.getStoreRegionId())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "所属域参数值错误");
}
if (storeFieldService.isRepeatName(storeFieldDTO.getEnterpriseId(), storeFieldDTO.getStoreFieldId(), storeFieldDTO.getStoreFieldName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性名称不能重复");
}
ServiceResponse validParamResult = StoreFieldValidParamUtil.validStoreFieldDetail(storeFieldDTO.getStoreFieldType(), storeFieldDTO.getStoreFieldDetail());
if (!validParamResult.isSuccess()) {
return validParamResult;
......
......@@ -39,8 +39,17 @@ public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiServic
if (storeFieldSelectDTO.getEnterpriseId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "企业ID不能为空");
}
if (storeFieldSelectService.isRepeatCode(storeFieldSelectDTO.getStoreFieldId(), null, storeFieldSelectDTO.getStoreFieldSelectCode())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值code不能重复");
}
if (storeFieldSelectService.isRepeatName(storeFieldSelectDTO.getStoreFieldId(), null, storeFieldSelectDTO.getStoreFieldSelectName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值名称不能重复");
}
storeFieldSelectDTO.setCreateTime(new Date());
storeFieldSelectDTO.setUpdateTime(new Date());
storeFieldSelectDTO.setSort(storeFieldSelectService.getMinSort(storeFieldSelectDTO.getStoreFieldId()) - 1);
return ServiceResponse.success(storeFieldSelectService.save(storeFieldSelectDTO));
}
......@@ -94,6 +103,15 @@ public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiServic
if (storeFieldSelectDTO.getStoreFieldId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键ID不能为空");
}
if (storeFieldSelectService.isRepeatCode(storeFieldSelectDTO.getStoreFieldId(), storeFieldSelectDTO.getStoreFieldSelectId(), storeFieldSelectDTO.getStoreFieldSelectCode())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值code不能重复");
}
if (storeFieldSelectService.isRepeatName(storeFieldSelectDTO.getStoreFieldId(), storeFieldSelectDTO.getStoreFieldSelectId(), storeFieldSelectDTO.getStoreFieldSelectName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值名称不能重复");
}
return ServiceResponse.success(storeFieldSelectService.edit(storeFieldSelectDTO.getStoreFieldSelectId(),
storeFieldSelectDTO.getStoreFieldSelectName(), storeFieldSelectDTO.getStoreFieldSelectCode()));
}
......@@ -115,4 +133,24 @@ public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiServic
return ServiceResponse.success(EntityUtil.changeEntityNew(StoreFieldSelectDTO.class, storeFieldSelectService.getStoreFieldSelectById(storeFieldSelectId)));
}
@Override
public ServiceResponse<Integer> sortBottom(int storeFieldSelectId) {
TabStoreFieldSelect tabStoreFieldSelect = storeFieldSelectService.getStoreFieldSelectById(storeFieldSelectId);
if (tabStoreFieldSelect == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
storeFieldSelectService.sortBottom(tabStoreFieldSelect.getStoreFieldId(), storeFieldSelectId);
return ServiceResponse.success();
}
@Override
public ServiceResponse<Integer> sortTopping(int storeFieldSelectId) {
TabStoreFieldSelect tabStoreFieldSelect = storeFieldSelectService.getStoreFieldSelectById(storeFieldSelectId);
if (tabStoreFieldSelect == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
storeFieldSelectService.sortTopping(tabStoreFieldSelect.getStoreFieldId(), storeFieldSelectId);
return ServiceResponse.success();
}
}
......@@ -180,4 +180,25 @@
</if>
order by sort
</select>
<select id="isRepeatCode">
select count(1) from tab_store_field_select
where
store_field_select_code = #{storeFieldSelectCode}
and store_field_id = #{storeFieldId}
<if test="storeFieldSelectId != null ">
and store_field_select_id &lt;&gt; #{storeFieldSelectId}
</if>
</select>
<select id="isRepeatName">
select count(1) from tab_store_field_select
where
store_field_select_name = #{storeFieldSelectName}
and store_field_id = #{storeFieldId}
<if test="storeFieldSelectId != null ">
and store_field_select_id &lt;&gt; #{storeFieldSelectId}
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -232,13 +232,28 @@ public class StoreFieldController {
}
@RequestMapping("/save-store-field-select")
public RestResponse saveFieldValue(@Validated({StoreFieldSelectQO.SaveValidView.class}) StoreFieldSelectQO storeFieldSelectQO) {
ServiceResponse result = storeFieldSelectApiService.save(transferSelectQoToDTO(storeFieldSelectQO));
if (result.isSuccess()) {
return RestResponse.success(result.getResult());
} else {
return RestResponse.failure(result.getCode(), result.getMessage());
public RestResponse saveFieldValue(String storeFieldSelectNames, String storeFieldSelectCodes, Integer storeFieldId) {
if (storeFieldId == null) {
RestResponse.failure(ErrorCode.ERR_5.getCode(), "自定义字段值不能为空");
}
if (validStoreFieldSelectSaveParam(storeFieldSelectNames, storeFieldSelectCodes)) {
RestResponse.failure(ErrorCode.ERR_5.getCode(), "参数错误(重复或者个数不对齐)");
}
String[] nameArr = storeFieldSelectNames.split(",");
String[] codeArr = storeFieldSelectCodes.split(",");
List<StoreFieldSelectDTO> list = new ArrayList<>(nameArr.length);
for (int i = 0, length = nameArr.length; i < length; i ++) {
StoreFieldSelectDTO dto = new StoreFieldSelectDTO();
dto.setStoreFieldSelectName(nameArr[i]);
dto.setStoreFieldSelectCode(codeArr[i]);
dto.setStoreFieldId(storeFieldId);
dto.setEnterpriseId(StoreGroupConstant.TEST_ENTERPRISE_ID);
list.add(dto);
}
for (StoreFieldSelectDTO record : list) {
storeFieldSelectApiService.save(record);
}
return RestResponse.success();
}
@RequestMapping("/edit-store-field-select")
......@@ -253,7 +268,24 @@ public class StoreFieldController {
@RequestMapping("/swap-store-field-select")
public RestResponse swapStoreFieldSelect(@Validated({StoreFieldSelectQO.SwapValidView.class, StoreFieldSelectQO.RemoveValidView.class}) StoreFieldSelectQO storeFieldSelectQO) {
ServiceResponse result = storeFieldSelectApiService.upOrDown(storeFieldSelectQO.getStoreFieldSelectId(), storeFieldSelectQO.isUp());
int upOrDown = storeFieldSelectQO.getUpOrDown();
ServiceResponse result;
switch (upOrDown) {
case StoreGroupConstant.SORT_UP:
result = storeFieldSelectApiService.upOrDown(storeFieldSelectQO.getStoreFieldSelectId(), true);
break;
case StoreGroupConstant.SORT_DOWN:
result = storeFieldSelectApiService.upOrDown(storeFieldSelectQO.getStoreFieldSelectId(), false);
break;
case StoreGroupConstant.SORT_BOTTOM:
result = storeFieldSelectApiService.sortBottom(storeFieldSelectQO.getStoreFieldSelectId());
break;
case StoreGroupConstant.SORT_TOPPING:
result = storeFieldSelectApiService.sortTopping(storeFieldSelectQO.getStoreFieldSelectId());
break;
default:
result = null;
}
if (result.isSuccess()) {
return RestResponse.success(result.getResult());
} else {
......@@ -321,4 +353,31 @@ public class StoreFieldController {
}
return result.toString().substring(0, result.toString().length() - 1);
}
private boolean validStoreFieldSelectSaveParam(String storeFieldSelectNames, String storeFieldSelectCodes) {
if (StringUtils.isBlank(storeFieldSelectCodes)) {
return true;
}
if (StringUtils.isBlank(storeFieldSelectNames)) {
return true;
}
String[] nameArr = storeFieldSelectNames.split(",");
String[] codeArr = storeFieldSelectCodes.split(",");
if (nameArr.length != codeArr.length) {
return true;
}
return isRepeatCode(codeArr) || isRepeatCode(nameArr);
}
private boolean isRepeatCode(String[] codeArr) {
Map<String, String> tempMap = new HashMap<>(16);
for (String code : codeArr) {
if (tempMap.containsKey(code)) {
//如果包含了,说明重复
return true;
}
tempMap.put(code, "1");
}
return false;
}
}
......@@ -97,7 +97,7 @@ public class StoreFieldQO implements Serializable{
*/
@NotNull(message = "移动标志参数值不能为空", groups = {SwapValidView.class})
@Min(value = StoreGroupConstant.SORT_UP, message = "移动标志参数值错误,小于1", groups = {SwapValidView.class})
@Max(value = StoreGroupConstant.SORT_TOPPING, message = "移动标志参数值错误,大于2", groups = {SwapValidView.class})
@Max(value = StoreGroupConstant.SORT_TOPPING, message = "移动标志参数值错误,大于4", groups = {SwapValidView.class})
private Integer upOrDown;
/**
......
......@@ -65,7 +65,7 @@ public class StoreFieldSelectQO implements Serializable{
/**
*
*/
private Integer sort;
private Double sort;
/**
*
......@@ -88,7 +88,7 @@ public class StoreFieldSelectQO implements Serializable{
*/
@NotNull(message = "移动标志参数值不能为空", groups = {SwapValidView.class})
@Min(value = StoreGroupConstant.SORT_UP, message = "移动标志参数值错误,小于1", groups = {SwapValidView.class})
@Max(value = StoreGroupConstant.SORT_DOWN, message = "移动标志参数值错误,大于2", groups = {SwapValidView.class})
@Max(value = StoreGroupConstant.SORT_TOPPING, message = "移动标志参数值错误,大于4", groups = {SwapValidView.class})
private Integer upOrDown;
/**
......@@ -102,7 +102,6 @@ public class StoreFieldSelectQO implements Serializable{
*/
private String search;
private boolean isUp;
public Integer getStoreFieldSelectId() {
return storeFieldSelectId;
......@@ -136,11 +135,11 @@ public class StoreFieldSelectQO implements Serializable{
this.enterpriseId = enterpriseId;
}
public Integer getSort() {
public Double getSort() {
return sort;
}
public void setSort(Integer sort) {
public void setSort(Double sort) {
this.sort = sort;
}
......@@ -176,14 +175,6 @@ public class StoreFieldSelectQO implements Serializable{
this.upOrDown = upOrDown;
}
public boolean isUp() {
if (upOrDown == StoreGroupConstant.SORT_UP) {
return true;
} else {
return false;
}
}
public Integer getSortValue() {
return sortValue;
}
......
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