完成菜地划分批量新增功能。

This commit is contained in:
jlt
2022-03-30 22:24:17 +08:00
parent c798db8c0c
commit 2e59e7b202
4 changed files with 104 additions and 19 deletions

View File

@ -73,11 +73,15 @@ public class GardenController extends BaseController
@PostMapping @PostMapping
public AjaxResult add(@RequestBody Garden garden, @RequestBody Map<String, Object> request) public AjaxResult add(@RequestBody Garden garden, @RequestBody Map<String, Object> request)
{ {
Integer amount = (Integer) request.get("amount"); int amount = (int) request.get("amount");
logger.warn("菜地数量:" + amount);
garden.setCreateBy(getUsername()); garden.setCreateBy(getUsername());
garden.setCreateTime(DateUtils.getNowDate()); garden.setCreateTime(DateUtils.getNowDate());
if (amount == 1) {
return toAjax(gardenService.insertGarden(garden)); return toAjax(gardenService.insertGarden(garden));
} else {
return toAjax(gardenService.insertGardens(garden, amount));
}
} }
/** /**

View File

@ -4,7 +4,7 @@ import java.util.List;
import com.jlt.csa.domain.Garden; import com.jlt.csa.domain.Garden;
/** /**
* 菜地划分Service接口 * 菜地Service接口
* *
* @author 郏磊涛 * @author 郏磊涛
* @date 2022-03-29 * @date 2022-03-29
@ -12,29 +12,38 @@ import com.jlt.csa.domain.Garden;
public interface IGardenService public interface IGardenService
{ {
/** /**
* 查询菜地划分 * 查询菜地
* *
* @param id 菜地划分主键 * @param id 菜地主键
* @return 菜地划分 * @return 菜地
*/ */
public Garden selectGardenById(Long id); public Garden selectGardenById(Long id);
/** /**
* 查询菜地划分列表 * 查询菜地列表
* *
* @param garden 菜地划分 * @param garden 菜地
* @return 菜地划分集合 * @return 菜地集合
*/ */
public List<Garden> selectGardenList(Garden garden); public List<Garden> selectGardenList(Garden garden);
/** /**
* 新增菜地划分 * 新增菜地
* *
* @param garden 菜地划分 * @param garden 菜地
* @return 结果 * @return 结果
*/ */
public int insertGarden(Garden garden); public int insertGarden(Garden garden);
/**
* 批量新增菜地
*
* @param garden 起始菜地信息,以此地编号开始依次递增
* @param amount 菜地数量
* @return 结果
*/
public int insertGardens(Garden garden, int amount);
/** /**
* 修改菜地 * 修改菜地
* *
@ -46,24 +55,24 @@ public interface IGardenService
/** /**
* 批量修改菜地状态 * 批量修改菜地状态
* *
* @param garden 菜地划分 * @param garden 菜地
* @param ids 需要更改的菜地id集合 * @param ids 需要更改的菜地id集合
* @return 结果 * @return 结果
*/ */
public int updateGardenStatus(Garden garden, Long[] ids); public int updateGardenStatus(Garden garden, Long[] ids);
/** /**
* 批量删除菜地划分 * 批量删除菜地
* *
* @param ids 需要删除的菜地划分主键集合 * @param ids 需要删除的菜地主键集合
* @return 结果 * @return 结果
*/ */
public int deleteGardenByIds(Long[] ids); public int deleteGardenByIds(Long[] ids);
/** /**
* 删除菜地划分信息 * 删除菜地信息
* *
* @param id 菜地划分主键 * @param id 菜地主键
* @return 结果 * @return 结果
*/ */
public int deleteGardenById(Long id); public int deleteGardenById(Long id);

View File

@ -1,7 +1,10 @@
package com.jlt.csa.service.impl; package com.jlt.csa.service.impl;
import java.util.List; import java.util.List;
import com.ruoyi.common.utils.DateUtils; import java.util.Map;
import com.jlt.csa.utils.CommonFunctions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.jlt.csa.mapper.GardenMapper; import com.jlt.csa.mapper.GardenMapper;
@ -53,10 +56,44 @@ public class GardenServiceImpl implements IGardenService
@Override @Override
public int insertGarden(Garden garden) public int insertGarden(Garden garden)
{ {
garden.setCreateTime(DateUtils.getNowDate());
return gardenMapper.insertGarden(garden); return gardenMapper.insertGarden(garden);
} }
/**
* 批量新增菜地
*
* @param garden 起始菜地信息,以此地编号开始依次递增
* @param amount 菜地数量
* @return 结果
*/
public int insertGardens(Garden garden, int amount) {
Map<String, Object> map = CommonFunctions.parseCode(garden.getCode());
if (map.isEmpty()) {
// 返回空map格式不正确
throw new RuntimeException("菜地编号格式不正确!");
} else {
// 菜地编码前缀
String prefix = (String) map.get("prefix");
// 编码的数字部分的位数
int numberWidth = (int) map.get("width");
int startCode = (int) map.get("number");
Integer endCode = startCode + amount - 1;
// 检查批量编码是否会导致位数变长,如变长则抛出异常
if (endCode.toString().length() == numberWidth) {
for (int i = startCode; i <= endCode; i++) {
garden.setCode(prefix + i);
gardenMapper.insertGarden(garden);
}
} else {
// 出现进位导致编号变长,格式不正确
throw new RuntimeException("菜地编号数字部分长度不够或数量过多!");
}
}
return amount;
}
/** /**
* 修改菜地划分 * 修改菜地划分
* *

View File

@ -0,0 +1,35 @@
package com.jlt.csa.utils;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 包含公共工具方法的类
*/
public class CommonFunctions {
/**
* 解析编号格式将非数字部分和整数部分拆分包含在Map中返回
* @param number 格式为 [最后一位为非数字的字符,非必须][多位数字]如A8000,B6F8000,8000
* @return 非数字部分放在key为prefix的字符串中(可选)
* 整数部分放在key为number的整数对象中
* 整数位数放在key为width的整数对象中
* 格式不正确返回空Map对象
*/
public static Map<String, Object> parseCode(String number) {
Map<String, Object> map = new HashMap<>();
Pattern p = Pattern.compile("^(.*?)(\\d+)$");
Matcher m = p.matcher(number);
while(m.find()) {
if(m.groupCount() == 2) {
map.put("prefix", m.group(1));
map.put("number", Integer.parseInt(m.group(2)));
map.put("width", m.group(2).length());
}
}
return map;
}
}