mes学习笔记.md
mes 学习笔记
集合中不改变顺序,对重复对象保留一个去重。
List list=(List) umsPermissionVOS.stream().distinct().collect(Collectors.toList());
保留四位补充0
String.format("%4d",aLong+1).replace(" ","0")
异常处理
1
2
3
4
5
6
7
8
9
10@Transactional(rollbackFor = Exception.class)
try{
//代码段
}
catch (Exception e){
// 事务回滚
log.error("异常:",e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return Result.failed( e,"保存失败,请联系管理员");
}集合中流过滤的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15//过滤出不包含2的数据
list=list.stream().filter(v ->!v.toString().contains("2")).collect(Collectors.toList());
//过滤出小于15的数据
taskExecuteInfos=taskExecuteInfos.stream().filter(u->u.getTaskId()<=15L).collect(Collectors.toList());
//找出最大的state(max.orElse是当Optional为null时赋新值)
Optional<TaskExecuteInfo> max = taskExecuteInfos.stream().max(Comparator.comparing(u -> u.getState()));
TaskExecuteInfo maxTaskExecuteInfo = max.orElse(new TaskExecuteInfo());
//按照state分组
Map<Integer, List<TaskExecuteInfo>> collect = taskExecuteInfos.stream().collect(Collectors.groupingBy(u -> u.getState()));
//拼接流中的EcnNo(“,”为分割;“【”前缀;“】”后缀)
String s1 = taskExecuteInfos.stream().map(TaskExecuteInfo::getEcnNo).collect(Collectors.joining(",", "[", "]"));
//TaskExecuteInfo::getEcnNo与u->u.getEcnNo效果相同
//取出集合中的某字段作为新集合
List<String> tos=new ArrayList<>();
tos=depaUsers.stream().map(u->u.getEmail()).collect(Collectors.toList());集合中流遍历赋值
1
taskExecuteInfos.forEach(u->u.setCreateTime(new Date()));
时间类型为空时的更新
1
@TableField(strategy = FieldStrategy.IGNORED)
通过前缀+串号生成下一串号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15/**
* 根据单号前缀生成当前单号
* @param prefix 前缀
* @return
*/
private String getNewDocNum(String prefix){
String newDocNum=prefix+"0001";
SmsWmsReceiveDoc one = getOne(new QueryWrapper<SmsWmsReceiveDoc>()
.last("where WR_DOC_NUM like '"+prefix+"%' order by WR_DOC_NUM desc limit 1"));
if (one != null) {
Long aLong = Convert.toLong(StrUtil.removePrefix(one.getWrDocNum(), prefix));
newDocNum=prefix+String.format("%4d",aLong+1).replace(" ","0");
}
return newDocNum;
}json_string转map
1
2
3
41. Map result =(Map) JSON.parse(mapString);
2. Map map = JSON.parseObject(result, Map.class);
//数据转小驼峰
Map map = MapUtil.toCamelCaseMap(parse);json字符串转l对象集合
1
List<EccMaterialDetail> eccMaterialDetails = JSONArray.parseArray(result, EccMaterialDetail.class);
对象为null时转换为某默认值
Objects.toString(boxInfo.getBatch(),"")
List<Map<String, Object>> params数组转化为json数组
1
JSON.toJSONString(params);
- 获取前后缀进行截断(可能存在多个”-“后缀,只获取最后一个)
1
2
3String[] split = custFixNo.split("-");
String suffix = split[split.length - 1];
String prefix = StrUtil.removeSuffix(custFixNo, suffix); - 父子级类表格递归查询
- 数据库设计
- 返回实体结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21@Data
public class PermissionTreeVO {
/** 主键 */
private Long id;
/** 权限名 */
private String perName;
/** 权限路径 */
private String perUrl;
/** 权限类型 例如 0 菜单 1按钮 */
private Integer perType;
/** 父级权限 默认 0 */
private Long parentId;
/** 图标 */
private String icon;
/** 状态 0 禁用 1 启用 */
private Boolean status;
/** 描述 */
private String remark;
/** 子权限 */
private List<PermissionTreeVO> childs;
} - 具体实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45//controller
/**
* 通过parentId递归查询权限树(查询全部传0)
*/
@ApiOperation(value = "通过parentId递归查询权限树(查询全部传0)")
@PostMapping("/umsPermission/selectPermissionTreeByParentId/{parentId}")
public Result selectPermissionTreeByParentId(@PathVariable Long parentId) {
List<PermissionTreeVO> permissionTreeVOS = umsPermissionService.selectPermissionTreeByParentId(parentId);
return Result.succeed(permissionTreeVOS, "查询成功");
}
// serviceImpl
/**
* @Description: 以输入的父级id寻找下级目录,只要下级目录不为空,就继续向下探寻,然后封装至上级的childs字段中
* @param parentId
* @return
*/
@Override
public List<PermissionTreeVO> selectPermissionTreeByParentId(Long parentId) {
List<PermissionTreeVO> permissionList = umsPermissionMapper.selectPermissionTreeByParentId(parentId);
if(permissionList!=null){
for (PermissionTreeVO permission : permissionList) {
permission.setChilds(selectPermissionTreeByParentId(permission.getId()));
}
}
return permissionList;
}
// mapper.xml
<select id="selectPermissionTreeByParentId" resultType="com.yk.i_wms.vo.PermissionTreeVO" parameterType="long">
SELECT DISTINCT
t.id id,
t.per_name perName,
t.per_url perUrl,
t.per_type perType,
t.icon icon,
t.status status,
t.remark remark,
t.parent_id parentId
FROM
ums_permission t
WHERE
t.parent_id = #{parentId}
order by t.id
</select>
- 分页列表查询后的处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17@ApiOperation(value = "查询列表")
@PostMapping("/umsRole/list")
public Result<PageResult> list(@RequestBody Map<String, Object> params) {
Page<Map> list= umsRoleService.findList(params);
List<Map> records = list.getRecords();
List<Map> results = new ArrayList<>();
for (Map record : records) {
Long roleId = MapUtil.getLong(record, "id");
List<UmsRolePer> umsRolePers = umsRolePerService.list(new LambdaQueryWrapper<UmsRolePer>()
.eq(UmsRolePer::getRoleId, roleId));
List<Long> perIds=umsRolePers.stream().map(u->u.getPerId()).collect(Collectors.toList());
record.put("perIds",perIds);
results.add(record);
}
list.setRecords(results);
return Result.succeed(PageResult.restPage(list),"查询成功");
}
mes学习笔记.md
http://example.com/5498.html