|
@@ -19,6 +19,7 @@ import me.chanjar.weixin.mp.api.WxMpService;
|
|
|
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
|
|
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
|
|
|
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
import org.apache.poi.EncryptedDocumentException;
|
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
@@ -1649,7 +1650,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
//获取待审核项目报告列表
|
|
|
@Override
|
|
|
- public HttpRespMsg getListByState(Integer state, Integer departmentId,
|
|
|
+ public HttpRespMsg listByStateNew(Integer state, Integer departmentId,
|
|
|
Integer projectId,
|
|
|
String date,
|
|
|
String startDate,
|
|
@@ -1657,6 +1658,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
String userId,String auditUserId,HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
try {
|
|
|
+ long beforeStart = System.currentTimeMillis();
|
|
|
User curUser = userMapper.selectById(request.getHeader("Token"));
|
|
|
Integer companyId = curUser.getCompanyId();
|
|
|
TimeType timeType = timeTypeMapper.selectById(companyId);
|
|
@@ -1887,39 +1889,358 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ long beforeEnd = System.currentTimeMillis();
|
|
|
+
|
|
|
+ System.out.println("前置查询耗时:"+(beforeEnd-beforeStart)+"ms");
|
|
|
+
|
|
|
if(1 == timeType.getWeeklyChargeFilter()){
|
|
|
- Map<String,Object> resMap = new HashMap<>();
|
|
|
+// Map<String,Object> resMap = new HashMap<>();
|
|
|
+ long afterStart = System.currentTimeMillis();
|
|
|
List<WeeklyChargeReports> weeklyChargeReports = JSONObject.parseArray(JSON.toJSON(nameList).toString(), WeeklyChargeReports.class);
|
|
|
- System.out.println("weeklyChargeReports.size()== "+weeklyChargeReports.size());
|
|
|
- List<Integer> finalProjectIdList = new ArrayList<>();
|
|
|
- for (WeeklyChargeReports weeklyChargeReport : weeklyChargeReports) {
|
|
|
- List<Integer> projectIdList = weeklyChargeReport.getData().stream()
|
|
|
- .filter(t -> null != t.getProjectId())
|
|
|
- .map(WeeklyChargeReportData::getProjectId)
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.toList());
|
|
|
- finalProjectIdList.addAll(projectIdList);
|
|
|
|
|
|
+ if(CollectionUtils.isNotEmpty(weeklyChargeReports)){
|
|
|
|
|
|
+ // 人 周开始 周结束
|
|
|
+ List<ReportBatch> weekData = reportBatchMapper.getWeekData(startDate, endDate, companyId);
|
|
|
|
|
|
- }
|
|
|
- finalProjectIdList = finalProjectIdList.stream().distinct().collect(Collectors.toList());
|
|
|
+ List<WeeklyChargeReportData> allData = new ArrayList<>();
|
|
|
+ for (WeeklyChargeReports weeklyChargeReport : weeklyChargeReports) {
|
|
|
+ allData.addAll(weeklyChargeReport.getData());
|
|
|
+ }
|
|
|
|
|
|
- List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, companyId)
|
|
|
- .in(Project::getId, finalProjectIdList)
|
|
|
- );
|
|
|
- resMap.put("projects",projects);
|
|
|
+ //按照人分组
|
|
|
+ Map<String, List<WeeklyChargeReportData>> collect = allData.stream().collect(Collectors.groupingBy(WeeklyChargeReportData::getUserId));
|
|
|
|
|
|
+ //日期不传
|
|
|
+// if(startDate != null && endDate != null){
|
|
|
+//
|
|
|
+// }
|
|
|
|
|
|
|
|
|
+// LocalDate now = LocalDate.now();
|
|
|
+// LocalDate monday = now.with(DayOfWeek.MONDAY);
|
|
|
+// LocalDate sunday = now.with(DayOfWeek.SUNDAY);
|
|
|
+// int dayIndex = now.getDayOfWeek().getValue();//当前天所处周的第几天
|
|
|
+ List<WeekUserSummary> resList = new ArrayList<>();
|
|
|
+ if(CollectionUtils.isNotEmpty(weekData)){
|
|
|
+ for (ReportBatch weekDatum : weekData) {// 人 周开始 周结束
|
|
|
+ WeekUserSummary weekUserSummary = new WeekUserSummary();
|
|
|
+ weekUserSummary.setUserId(weekDatum.getCreatorId());
|
|
|
+ weekUserSummary.setUserName(weekDatum.getName());
|
|
|
+ weekUserSummary.setWeekStart(weekDatum.getStartDate());
|
|
|
+ weekUserSummary.setWeekEnd(weekDatum.getEndDate());
|
|
|
+ weekUserSummary.setDepartmentId(weekDatum.getDepartmentId());
|
|
|
+ weekUserSummary.setDepartmentName(weekDatum.getDepartmentName());
|
|
|
+ weekUserSummary.setWeekStartTxt(weekDatum.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
|
+ weekUserSummary.setWeekEndTxt(weekDatum.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
|
+ List<WeekUserDaySummary> daySummaryList = new ArrayList<>();
|
|
|
+ List<WeeklyChargeReportData> userReportData = collect.get(weekDatum.getCreatorId());
|
|
|
+ //当前人的所有未审核日报
|
|
|
+ if(CollectionUtils.isNotEmpty(userReportData)){
|
|
|
+ //若当前时间段内未填报日报为空,则跳过
|
|
|
+ long count = userReportData.stream().filter(t -> {
|
|
|
+ LocalDate tmpDate = LocalDate.parse(t.getDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ if ((tmpDate.isEqual(weekDatum.getStartDate()) || tmpDate.isAfter(weekDatum.getStartDate()))
|
|
|
+ && (tmpDate.isEqual(weekDatum.getEndDate()) || tmpDate.isBefore(weekDatum.getEndDate()))) {
|
|
|
+ //数据在指定时间段内
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }).count();
|
|
|
+ if(count <=0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //获取当前区间内的日报
|
|
|
+ for (int i = 0; i < 7; i++) {
|
|
|
+ WeekUserDaySummary weekUserDaySummary = new WeekUserDaySummary();
|
|
|
+ weekUserDaySummary.setCurrentDate(weekDatum.getStartDate().plusDays(i));
|
|
|
+ weekUserDaySummary.setCurrentDateTxt(weekUserDaySummary.getCurrentDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
|
+ weekUserDaySummary.setWeekDayTxt(DateTimeUtil.getWeekDayTxt(i+1));
|
|
|
+ List<WeeklyChargeReportData> tmpDayData = userReportData.stream().filter(t -> {
|
|
|
+ LocalDate tmpDate = LocalDate.parse(t.getDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ if (tmpDate.isEqual(weekUserDaySummary.getCurrentDate())) {
|
|
|
+ //数据在指定天
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ weekUserDaySummary.setProjectList(tmpDayData);
|
|
|
+// tmpDayData.forEach(t->{
|
|
|
+//
|
|
|
+// });
|
|
|
+ daySummaryList.add(weekUserDaySummary);
|
|
|
+ }
|
|
|
+ weekUserSummary.setDaySummaryList(daySummaryList);
|
|
|
+ resList.add(weekUserSummary);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ long afterEnd = System.currentTimeMillis();
|
|
|
+ System.out.println("后置拼接耗时:"+(afterEnd-afterStart)+"ms");
|
|
|
|
|
|
+ httpRespMsg.data = resList;
|
|
|
+ }
|
|
|
|
|
|
- httpRespMsg.data = resMap;
|
|
|
}else{
|
|
|
httpRespMsg.data = nameList;
|
|
|
}
|
|
|
|
|
|
+// httpRespMsg.data = nameList;
|
|
|
+
|
|
|
+ } catch (NullPointerException e) {
|
|
|
+ //httpRespMsg.setError("验证失败");
|
|
|
+ e.printStackTrace();
|
|
|
+ httpRespMsg.setError(MessageUtils.message("access.verificationError"));
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取待审核项目报告列表
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg getListByState(Integer state, Integer departmentId,
|
|
|
+ Integer projectId,
|
|
|
+ String date,
|
|
|
+ String startDate,
|
|
|
+ String endDate,
|
|
|
+ String userId,String auditUserId,HttpServletRequest request) {
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
+ try {
|
|
|
+ User curUser = userMapper.selectById(request.getHeader("Token"));
|
|
|
+ Integer companyId = curUser.getCompanyId();
|
|
|
+ TimeType timeType = timeTypeMapper.selectById(companyId);
|
|
|
+ Integer isParallel = timeType.getReportAuditType() == 7? 1 : 0;
|
|
|
+ Integer isEngeering = companyMapper.selectById(companyId).getPackageEngineering();
|
|
|
+ String leaderId = null;
|
|
|
+ List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(curUser.getRoleId(), "审核全员日报");
|
|
|
+ if (functionList.size() == 0) {//没有全员审核的权限
|
|
|
+ leaderId = curUser.getId();
|
|
|
+ }
|
|
|
+ List<String> targetUids = null;
|
|
|
+ if (!StringUtils.isEmpty(userId)) {
|
|
|
+ targetUids = ListUtil.convertLongIdsArrayToList(userId);
|
|
|
+ }
|
|
|
+ List<Map<String, Object>> auditReportList = reportMapper.getAuditReportList(date, companyId, departmentId, projectId, leaderId, isEngeering, startDate, endDate, targetUids,auditUserId, isParallel);
|
|
|
+ //针对依斯贝增加服务名称显示
|
|
|
+ if (companyId == 3092) {
|
|
|
+ List<SapProjectService> serviceList = sapProjectServiceMapper.selectList(new QueryWrapper<SapProjectService>().eq("company_id", companyId));
|
|
|
+ for (Map<String, Object> mapItem : auditReportList) {
|
|
|
+ Integer sapServiceId = (Integer)mapItem.get("sapServiceId");
|
|
|
+ if (sapServiceId != null) {
|
|
|
+ Optional<SapProjectService> first = serviceList.stream().filter(s -> s.getId().equals(sapServiceId)).findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ mapItem.put("sapServiceName", first.get().getServiceName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //抽取姓名,进行分组
|
|
|
+ List<Map<String, Object>> nameList = new ArrayList<Map<String, Object>>();
|
|
|
+ Map<String, Object> lastName = null;
|
|
|
+ //某个用户某天下的各个项目日报列表
|
|
|
+ List<Map<String, Object>> userDailyReportList = null;
|
|
|
+ for (Map a : auditReportList) {
|
|
|
+ String createDate = (String)a.get("date");
|
|
|
+ String name = (String)a.get("name");
|
|
|
+ String uid = (String)a.get("userId");
|
|
|
+ String corpwxUserid = (String)a.get("corpwxUserid");
|
|
|
+
|
|
|
+ if (lastName == null || !(lastName.get("name").equals(name) && lastName.get("dateStr").equals(createDate))) {
|
|
|
+ lastName = new HashMap<String, Object>();
|
|
|
+ lastName.put("dateStr", createDate);
|
|
|
+ lastName.put("name", name);
|
|
|
+ lastName.put("userId", uid);
|
|
|
+ lastName.put("corpwxUserid", corpwxUserid);
|
|
|
+ nameList.add(lastName);
|
|
|
+ userDailyReportList = new ArrayList<>();
|
|
|
+ lastName.put("data", userDailyReportList);
|
|
|
+ }
|
|
|
+ //每组日报数据都加上去
|
|
|
+ userDailyReportList.add(a);
|
|
|
+ }
|
|
|
+ List<Profession> professions = new ArrayList<>();
|
|
|
+ if (isEngeering == 1) {
|
|
|
+ professions = professionMapper.selectList(new QueryWrapper<Profession>().eq("company_id", curUser.getCompanyId()));
|
|
|
+ }
|
|
|
+ for (int index=0;index<nameList.size(); index++) {
|
|
|
+ Map<String, Object> map2 = nameList.get(index);
|
|
|
+ List<Map<String, Object>> list2 = (List)map2.get("data");
|
|
|
+ //项目专业进度
|
|
|
+ if (isEngeering == 1) {
|
|
|
+ final List<Profession> fProfessList = professions;
|
|
|
+ for (Map<String, Object> map : list2) {
|
|
|
+ //获取当前项目的工程专业进度
|
|
|
+ List<ReportProfessionProgress> progressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().eq("report_id", (int)map.get("id")));
|
|
|
+ progressList.stream().forEach(p->{
|
|
|
+ p.setProfessionName(fProfessList.stream().filter(m->m.getId().equals(p.getProfessionId())).findFirst().get().getName());
|
|
|
+ });
|
|
|
+ map.put("professionProgressList", progressList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ double reportTime = 0;
|
|
|
+ BigDecimal total = new BigDecimal(0);
|
|
|
+ //计算每日汇总的工时成本
|
|
|
+ for (Map<String, Object> m : list2) {
|
|
|
+ double t = (double) m.get("time");
|
|
|
+ reportTime += t;
|
|
|
+ total = total.add((BigDecimal)m.get("cost"));
|
|
|
+ }
|
|
|
+ DecimalFormat df = new DecimalFormat("0.00");
|
|
|
+ map2.put("reportTime", df.format(reportTime));
|
|
|
+ map2.put("cost", total);
|
|
|
+ map2.put("state", list2.get(0).get("state"));
|
|
|
+ map2.put("auditDeptName", list2.get(0).get("auditDeptName"));
|
|
|
+ map2.put("isDeptAudit", list2.get(0).get("isDeptAudit"));
|
|
|
+ map2.put("groupAuditState", list2.get(0).get("groupAuditState"));
|
|
|
+ map2.put("deptAuditorName", list2.get(0).get("deptAuditorName"));
|
|
|
+ //增加填报人所属部门
|
|
|
+ map2.put("departmentName", list2.get(0).get("departmentName"));
|
|
|
+ }
|
|
|
+ //设置照片显示
|
|
|
+ for (Map map : nameList) {
|
|
|
+ List<Map<String, Object>> reportList = (List<Map<String, Object>>)map.get("data");
|
|
|
+ for (Map<String, Object> report : reportList) {
|
|
|
+ String picStr = (String)report.get("picStr");
|
|
|
+ if (picStr != null && !"@".equals(picStr)) {
|
|
|
+ JSONArray array = JSONArray.parseArray(picStr.replaceAll("@", ","));
|
|
|
+ List<String> picList = new ArrayList<>();
|
|
|
+ for (int i=0;i<array.size(); i++) {
|
|
|
+ String picName = array.getString(i);
|
|
|
+ if (!picName.contains(".")) {
|
|
|
+ picName += ".jpg";
|
|
|
+ }
|
|
|
+ picList.add("/upload/" + picName);
|
|
|
+ }
|
|
|
+ report.put("pics", picList);
|
|
|
+ }
|
|
|
+ if (((Integer)report.get("multiWorktime")) == 1) {
|
|
|
+ //设置多个工时情况下的报告列表
|
|
|
+ String timeStr = (String)report.get("content");
|
|
|
+ report.put("worktimeList", JSONArray.parse(timeStr));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //针对昱众,设置职能分工显示
|
|
|
+ if (companyId == 3385) {
|
|
|
+ List<ProjectFunctionalDivision> allDivList = projectFunctionalDivisionMapper.selectList(new QueryWrapper<ProjectFunctionalDivision>().eq("company_id", companyId));
|
|
|
+ List<ProFunWorkContext> allWorkContextList = proFunWorkContextMapper.selectList(new QueryWrapper<>());
|
|
|
+ for (Map map : nameList) {
|
|
|
+ List<Map<String, Object>> reportList = (List<Map<String, Object>>)map.get("data");
|
|
|
+ for (Map<String, Object> report : reportList) {
|
|
|
+ Integer extraField2 = (Integer)report.get("extraField2");
|
|
|
+ Optional<ProjectFunctionalDivision> first = allDivList.stream().filter(d->d.getId().equals(extraField2)).findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ ProjectFunctionalDivision divItem = first.get();
|
|
|
+ report.put("extraField2Name", divItem.getJobRespon());
|
|
|
+ }
|
|
|
+ Integer extraField3 = (Integer)report.get("extraField3");
|
|
|
+ Optional<ProFunWorkContext> first2 = allWorkContextList.stream().filter(d->d.getId().equals(extraField3)).findFirst();
|
|
|
+ if (first2.isPresent()) {
|
|
|
+ ProFunWorkContext workItem = first2.get();
|
|
|
+ report.put("extraField3Name", workItem.getWorkContext());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ String minDate = null;
|
|
|
+ String maxDate = null;
|
|
|
+ if (nameList.size() > 0) {
|
|
|
+ List<String> dateList = nameList.stream().map(m->(String)m.get("dateStr")).collect(Collectors.toList());
|
|
|
+ //获取最大和最小日期
|
|
|
+ minDate = dateList.stream().min(Comparator.comparing(String::toString)).get();
|
|
|
+ maxDate = dateList.stream().max(Comparator.comparing(String::toString)).get();
|
|
|
+ }
|
|
|
+ //设置每人每日考勤打卡时长
|
|
|
+ if (timeType.getShowCorpwxCardtime() == 1) {
|
|
|
+ //企业微信的情况
|
|
|
+ QueryWrapper<UserCorpwxTime> userCorpwxTimeQueryWrapper = new QueryWrapper<>();
|
|
|
+ if (nameList.size() > 0) {
|
|
|
+ //获取日期范围
|
|
|
+ userCorpwxTimeQueryWrapper.between("create_date", minDate, maxDate).eq("company_id", companyId);
|
|
|
+ List<UserCorpwxTime> timeList = userCorpwxTimeMapper.selectList(userCorpwxTimeQueryWrapper);
|
|
|
+ //过滤匹配当前的数据
|
|
|
+ for (Map map : nameList) {
|
|
|
+ String corpwxUserid = (String)map.get("corpwxUserid");
|
|
|
+ String name = (String)map.get("name");
|
|
|
+ String dateStr = (String)map.get("dateStr");
|
|
|
+ Optional<UserCorpwxTime> first = timeList.stream().filter(time -> ((time.getCorpwxUserid() != null && time.getCorpwxUserid().equals(corpwxUserid)) || (time.getCorpwxUserid() == null && name != null && name.equals(time.getName()))) && dtf.format(time.getCreateDate()).equals(dateStr)).findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ double wh = first.get().getWorkHours();
|
|
|
+ //赋值打卡时长
|
|
|
+ map.put("cardHours", wh);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (timeType.getShowDdCardtime() == 1) {
|
|
|
+ //钉钉的情况
|
|
|
+ QueryWrapper<UserDingdingTime> userDingdingTimeQueryWrapper = new QueryWrapper<>();
|
|
|
+ if (nameList.size() > 0) {
|
|
|
+ userDingdingTimeQueryWrapper.between("work_date", minDate, maxDate).eq("company_id", companyId);
|
|
|
+ List<UserDingdingTime> timeList = userDingdingTimeMapper.selectList(userDingdingTimeQueryWrapper);
|
|
|
+ //过滤匹配当前的数据
|
|
|
+ for (Map map : nameList) {
|
|
|
+ String itemUid = (String)map.get("userId");
|
|
|
+ String dateStr = (String)map.get("dateStr");
|
|
|
+ Optional<UserDingdingTime> first = timeList.stream().filter(time -> time.getUserId().equals(itemUid) && dtf.format(time.getWorkDate()).equals(dateStr)).findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ double wh = first.get().getWorkHours();
|
|
|
+ //赋值打卡时长
|
|
|
+ map.put("cardHours", wh);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if(timeType.getSyncFanwei()==1){
|
|
|
+ //泛微的情况
|
|
|
+ QueryWrapper<UserFvTime> userFvTimeQueryWrapper = new QueryWrapper<>();
|
|
|
+ if (nameList.size() > 0) {
|
|
|
+ userFvTimeQueryWrapper.between("work_date", minDate, maxDate).eq("company_id", companyId);
|
|
|
+ List<UserFvTime> timeList = userFvTimeMapper.selectList(userFvTimeQueryWrapper);
|
|
|
+ //过滤匹配当前的数据
|
|
|
+ for (Map map : nameList) {
|
|
|
+ String itemUid = (String)map.get("userId");
|
|
|
+ String dateStr = (String)map.get("dateStr");
|
|
|
+ Optional<UserFvTime> first = timeList.stream().filter(time -> time.getUserId().equals(itemUid) && dtf.format(time.getWorkDate()).equals(dateStr)).findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ double wh = first.get().getWorkHours();
|
|
|
+ //赋值打卡时长
|
|
|
+ map.put("cardHours", wh);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //解析自定义多选的
|
|
|
+ if (timeType.getCustomDegreeActive() == 1 && timeType.getCustomDegreeMultiple()) {
|
|
|
+ List<ReportExtraDegree> extraList = reportExtraDegreeMapper.selectList(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
|
|
|
+ for (Map map : nameList) {
|
|
|
+ List<Map<String, Object>> reportList = (List<Map<String, Object>>)map.get("data");
|
|
|
+ for (Map<String, Object> report : reportList) {
|
|
|
+ String multiDegrId = (String)report.get("multiDegrId");
|
|
|
+ if (multiDegrId != null) {
|
|
|
+ multiDegrId = multiDegrId.replace("@", ",");
|
|
|
+ JSONArray array = JSONArray.parseArray(multiDegrId);
|
|
|
+ String s = "";
|
|
|
+ for (int i=0;i<array.size(); i++) {
|
|
|
+ int item = array.getInteger(i);
|
|
|
+ Optional<ReportExtraDegree> find = extraList.stream().filter(ex->ex.getId().equals(item)).findFirst();
|
|
|
+ if (find.isPresent()) {
|
|
|
+ s += find.get().getName() + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (s.length() > 0) {
|
|
|
+ s = s.substring(0, s.length()-1);
|
|
|
+ }
|
|
|
+ report.put("degreeName", s);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ httpRespMsg.data = nameList;
|
|
|
} catch (NullPointerException e) {
|
|
|
//httpRespMsg.setError("验证失败");
|
|
|
e.printStackTrace();
|
|
@@ -4353,7 +4674,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
//直接进行项目经理审核驳回
|
|
|
|
|
|
- reportMapper.update(new Report().setState(2),
|
|
|
+ reportMapper.update(new Report().setState(2).setRejectReason(reason).setRejectUserid(user.getId()).setRejectUsername(user.getName()),
|
|
|
new QueryWrapper<Report>().in("id", ListUtil.convertIdsArrayToList(reportIds)));
|
|
|
|
|
|
//TODO: 处理消息通知
|