|
@@ -5205,29 +5205,60 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
public HttpRespMsg correctWorkingTime(String userIds, String startDate, String endDate) {
|
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
|
QueryWrapper<Report> queryWrapper=new QueryWrapper<>();
|
|
|
- if(startDate!=null&&endDate!=null){
|
|
|
+ //只需要查询2个字段,report表比较大,按需要的字段查询来提高sql效率
|
|
|
+ queryWrapper.select("id, creator_id, dept_id");
|
|
|
+ if(!StringUtils.isEmpty(startDate) && !StringUtils.isEmpty(endDate)){
|
|
|
queryWrapper.between("create_date",startDate,endDate);
|
|
|
}
|
|
|
+ if (StringUtils.isEmpty(userIds)) {
|
|
|
+ msg.setError("人员不能为空");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
String[] split = userIds.split(",");
|
|
|
List<String> userIdList = Arrays.asList(split);
|
|
|
queryWrapper.in("creator_id",userIdList);
|
|
|
List<Report> reportList = reportMapper.selectList(queryWrapper);
|
|
|
- List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", userIdList));
|
|
|
- for (String userId : userIdList) {
|
|
|
- //当前人员所填的日报数据
|
|
|
- List<Report> list = reportList.stream().filter(rl -> rl.getCreatorId().equals(userId)).collect(Collectors.toList());
|
|
|
- //当前人员
|
|
|
- User user = userList.stream().filter(ul -> ul.getId().equals(userId)).findFirst().get();
|
|
|
- //满足 与人员当前部门不相符的日报数据才发生变更
|
|
|
- List<Report> needChangeReportList = list.stream().filter(l -> !l.getDeptId().equals(user.getDepartmentId())).collect(Collectors.toList());
|
|
|
- needChangeReportList.forEach(nl->{
|
|
|
- nl.setDeptId(user.getDepartmentId());
|
|
|
+
|
|
|
+ if (reportList.size() == 0) {
|
|
|
+ msg.setError("当前人员尚未填写日报");
|
|
|
+ } else {
|
|
|
+ List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", userIdList));
|
|
|
+ //声明需要更新的数据集合,移到for循环外面来执行updateBatch
|
|
|
+ List<Report> needChangeReportList = new ArrayList<>();
|
|
|
+ reportList.forEach(r->{
|
|
|
+ //找到日报填写人当前的部门
|
|
|
+ User user = userList.stream().filter(ul -> ul.getId().equals(r.getCreatorId())).findFirst().get();
|
|
|
+ if (!r.getDeptId().equals(user.getDepartmentId())) {
|
|
|
+ r.setCreatorId(null);
|
|
|
+ System.out.println(""+r.getId()+", "+r.getDeptId());
|
|
|
+ r.setDeptId(user.getDepartmentId());
|
|
|
+ needChangeReportList.add(r);
|
|
|
+ }
|
|
|
});
|
|
|
- if(needChangeReportList.size()>0&&!updateBatchById(needChangeReportList)){
|
|
|
- msg.setError(MessageUtils.message("Company.validationError"));
|
|
|
- return msg;
|
|
|
+ if (needChangeReportList.size() > 0) {
|
|
|
+ updateBatchById(needChangeReportList);
|
|
|
+ msg.data = "共更新"+needChangeReportList.size()+"条日报数据";
|
|
|
+ } else {
|
|
|
+ msg.data = "日报所属部门与人员当前部门一致,无需更新";
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //上方的写法比下方的更简洁,减少一次外循环,性能更好
|
|
|
+// for (String userId : userIdList) {
|
|
|
+// //当前人员所填的日报数据
|
|
|
+// List<Report> list = reportList.stream().filter(rl -> rl.getCreatorId().equals(userId)).collect(Collectors.toList());
|
|
|
+// //当前人员
|
|
|
+// User user = userList.stream().filter(ul -> ul.getId().equals(r.getCreatorId())).findFirst().get();
|
|
|
+// //满足 与人员当前部门不相符的日报数据才发生变更
|
|
|
+// List<Report> updateReportList = list.stream().filter(l -> !l.getDeptId().equals(user.getDepartmentId())).collect(Collectors.toList());
|
|
|
+// needChangeReportList.forEach(nl->{
|
|
|
+// nl.setDeptId(user.getDepartmentId());
|
|
|
+// });
|
|
|
+// if(needChangeReportList.size()>0&&!updateBatchById(needChangeReportList)){
|
|
|
+// msg.setError(MessageUtils.message("Company.validationError"));
|
|
|
+// return msg;
|
|
|
+// }
|
|
|
+// }
|
|
|
return msg;
|
|
|
}
|
|
|
|