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

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
public AjaxResult add(@RequestBody Garden garden, @RequestBody Map<String, Object> request)
{
Integer amount = (Integer) request.get("amount");
logger.warn("菜地数量:" + amount);
int amount = (int) request.get("amount");
garden.setCreateBy(getUsername());
garden.setCreateTime(DateUtils.getNowDate());
return toAjax(gardenService.insertGarden(garden));
if (amount == 1) {
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;
/**
* 菜地划分Service接口
* 菜地Service接口
*
* @author 郏磊涛
* @date 2022-03-29
@ -12,29 +12,38 @@ import com.jlt.csa.domain.Garden;
public interface IGardenService
{
/**
* 查询菜地划分
* 查询菜地
*
* @param id 菜地划分主键
* @return 菜地划分
* @param id 菜地主键
* @return 菜地
*/
public Garden selectGardenById(Long id);
/**
* 查询菜地划分列表
* 查询菜地列表
*
* @param garden 菜地划分
* @return 菜地划分集合
* @param garden 菜地
* @return 菜地集合
*/
public List<Garden> selectGardenList(Garden garden);
/**
* 新增菜地划分
* 新增菜地
*
* @param garden 菜地划分
* @param garden 菜地
* @return 结果
*/
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集合
* @return 结果
*/
public int updateGardenStatus(Garden garden, Long[] ids);
/**
* 批量删除菜地划分
* 批量删除菜地
*
* @param ids 需要删除的菜地划分主键集合
* @param ids 需要删除的菜地主键集合
* @return 结果
*/
public int deleteGardenByIds(Long[] ids);
/**
* 删除菜地划分信息
* 删除菜地信息
*
* @param id 菜地划分主键
* @param id 菜地主键
* @return 结果
*/
public int deleteGardenById(Long id);

View File

@ -1,7 +1,10 @@
package com.jlt.csa.service.impl;
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.stereotype.Service;
import com.jlt.csa.mapper.GardenMapper;
@ -53,10 +56,44 @@ public class GardenServiceImpl implements IGardenService
@Override
public int insertGarden(Garden garden)
{
garden.setCreateTime(DateUtils.getNowDate());
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;
}
}