|
@@ -14,6 +14,7 @@ import com.management.platform.entity.vo.WorktimeItem;
|
|
import com.management.platform.mapper.*;
|
|
import com.management.platform.mapper.*;
|
|
import com.management.platform.service.*;
|
|
import com.management.platform.service.*;
|
|
import com.management.platform.util.ExcelUtil;
|
|
import com.management.platform.util.ExcelUtil;
|
|
|
|
+import com.management.platform.util.FileUtil;
|
|
import com.management.platform.util.HttpRespMsg;
|
|
import com.management.platform.util.HttpRespMsg;
|
|
import com.management.platform.util.ListUtil;
|
|
import com.management.platform.util.ListUtil;
|
|
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
|
|
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
|
|
@@ -90,6 +91,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
@Resource
|
|
@Resource
|
|
WxCorpInfoService wxCorpInfoService;
|
|
WxCorpInfoService wxCorpInfoService;
|
|
@Resource
|
|
@Resource
|
|
|
|
+ CompanyDingdingMapper companyDingdingMapper;
|
|
|
|
+ @Resource
|
|
WxCorpInfoMapper wxCorpInfoMapper;
|
|
WxCorpInfoMapper wxCorpInfoMapper;
|
|
@Resource
|
|
@Resource
|
|
private InformationServiceImpl informationService;
|
|
private InformationServiceImpl informationService;
|
|
@@ -114,6 +117,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
@Resource
|
|
@Resource
|
|
private ProjectMapper projectMapper;
|
|
private ProjectMapper projectMapper;
|
|
@Resource
|
|
@Resource
|
|
|
|
+ private CompanyDingdingService companyDingdingService;
|
|
|
|
+ @Resource
|
|
private InformationMapper informationMapper;
|
|
private InformationMapper informationMapper;
|
|
@Resource
|
|
@Resource
|
|
private TimeTypeMapper timeTypeMapper;
|
|
private TimeTypeMapper timeTypeMapper;
|
|
@@ -135,6 +140,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
private UserSalaryService userSalaryService;
|
|
private UserSalaryService userSalaryService;
|
|
@Resource
|
|
@Resource
|
|
private AuditWorkflowTimeSettingMapper auditWorkflowTimeSettingMapper;
|
|
private AuditWorkflowTimeSettingMapper auditWorkflowTimeSettingMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ReportAlogMembdateService reportAlogMembdateService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ReportImportLogMapper reportImportLogMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ReportAuditLogMapper reportAuditLogMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ReportAlogMembdateMapper reportAlogMembdateMapper;
|
|
|
|
|
|
@Value(value = "${upload.path}")
|
|
@Value(value = "${upload.path}")
|
|
private String path;
|
|
private String path;
|
|
@@ -916,7 +929,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- String creatorId = reportMapper.selectById(ids.get(0)).getCreatorId();
|
|
|
|
|
|
+ Report oneReport = reportMapper.selectById(ids.get(0));
|
|
|
|
+ int oldState = oneReport.getState();
|
|
|
|
+ String creatorId = oneReport.getCreatorId();
|
|
User auditTargetUser = userMapper.selectById(creatorId);
|
|
User auditTargetUser = userMapper.selectById(creatorId);
|
|
List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
|
|
List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
|
|
new QueryWrapper<AuditWorkflowTimeSetting>().eq("dept_id", auditTargetUser.getDepartmentId())
|
|
new QueryWrapper<AuditWorkflowTimeSetting>().eq("dept_id", auditTargetUser.getDepartmentId())
|
|
@@ -997,8 +1012,25 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //对导入审核,添加记录
|
|
|
|
+ if (oldState == -1) {
|
|
|
|
+ ReportAuditLog log = new ReportAuditLog();
|
|
|
|
+ log.setAuditChannel(0);//导入审核
|
|
|
|
+ log.setCompanyId(company.getId());
|
|
|
|
+ log.setResult("通过");
|
|
|
|
+ log.setUserId(user.getId());
|
|
|
|
+ log.setUserName(user.getName());
|
|
|
|
+ reportAuditLogMapper.insert(log);
|
|
|
|
+ //员工的日期
|
|
|
|
+ ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
|
|
+ membdate.setRlogId(log.getId());
|
|
|
|
+ membdate.setCreateDate(oneReport.getCreateDate());
|
|
|
|
+ membdate.setUserId(oneReport.getCreatorId());
|
|
|
|
+ membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
|
|
|
|
+ reportAlogMembdateMapper.insert(membdate);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
} catch (NullPointerException e) {
|
|
} catch (NullPointerException e) {
|
|
httpRespMsg.setError("验证失败");
|
|
httpRespMsg.setError("验证失败");
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
@@ -1132,6 +1164,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
reason = "-";
|
|
reason = "-";
|
|
}
|
|
}
|
|
Report oneReport = reportMapper.selectById(ids.get(0));
|
|
Report oneReport = reportMapper.selectById(ids.get(0));
|
|
|
|
+ int oldState = oneReport.getState();
|
|
if (company.getPackageEngineering() == 1) {
|
|
if (company.getPackageEngineering() == 1) {
|
|
//检查是否有专业进度待审核
|
|
//检查是否有专业进度待审核
|
|
List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
|
|
List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
|
|
@@ -1140,7 +1173,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
httpRespMsg.setError("只有专业审核全部通过才可操作");
|
|
httpRespMsg.setError("只有专业审核全部通过才可操作");
|
|
return httpRespMsg;
|
|
return httpRespMsg;
|
|
} else {
|
|
} else {
|
|
- Report report = reportMapper.selectById(ids.get(0));
|
|
|
|
|
|
+ Report report = oneReport;
|
|
//部门待审核,部门审核驳回
|
|
//部门待审核,部门审核驳回
|
|
if (report.getDepartmentAuditState() == 0) {
|
|
if (report.getDepartmentAuditState() == 0) {
|
|
report = new Report();
|
|
report = new Report();
|
|
@@ -1196,9 +1229,32 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
informationMapper.insert(new Information().setType(0).setContent(date).setUserId(fillUserId).setMsg(str));
|
|
informationMapper.insert(new Information().setType(0).setContent(date).setUserId(fillUserId).setMsg(str));
|
|
|
|
|
|
|
|
+ //对导入审核,添加记录
|
|
|
|
+ if (oldState == -1) {
|
|
|
|
+ ReportAuditLog log = new ReportAuditLog();
|
|
|
|
+ log.setAuditChannel(0);//导入审核
|
|
|
|
+ log.setCompanyId(company.getId());
|
|
|
|
+ log.setResult("驳回"+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
|
|
|
|
+ log.setUserId(user.getId());
|
|
|
|
+ log.setUserName(user.getName());
|
|
|
|
+ reportAuditLogMapper.insert(log);
|
|
|
|
+ //员工的日期
|
|
|
|
+ ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
|
|
+ membdate.setRlogId(log.getId());
|
|
|
|
+ membdate.setCreateDate(oneReport.getCreateDate());
|
|
|
|
+ membdate.setUserId(oneReport.getCreatorId());
|
|
|
|
+ membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
|
|
|
|
+ reportAlogMembdateMapper.insert(membdate);
|
|
|
|
+ }
|
|
|
|
+
|
|
//发送企业微信通知消息
|
|
//发送企业微信通知消息
|
|
User reporter = userMapper.selectById(fillUserId);
|
|
User reporter = userMapper.selectById(fillUserId);
|
|
String corpwxUserid = reporter.getCorpwxUserid();
|
|
String corpwxUserid = reporter.getCorpwxUserid();
|
|
|
|
+ //先判断钉钉
|
|
|
|
+ if (reporter.getDingdingUserid() != null) {
|
|
|
|
+ projectMapper.selectById(oneReport.getProjectId()).getProjectName();
|
|
|
|
+ companyDingdingService.sendRejectReportMsg(reporter.getCompanyId(), date, pNames, reason, user.getName(), reporter.getDingdingUserid());
|
|
|
|
+ }
|
|
if (corpwxUserid != null) {
|
|
if (corpwxUserid != null) {
|
|
WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
|
|
WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
|
|
wxCorpInfoService.sendWXCorpMsg(info, corpwxUserid, str);
|
|
wxCorpInfoService.sendWXCorpMsg(info, corpwxUserid, str);
|
|
@@ -1396,14 +1452,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
|
|
List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
|
|
new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", company.getId())
|
|
new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", company.getId())
|
|
.orderByAsc("seq"));
|
|
.orderByAsc("seq"));
|
|
-
|
|
|
|
|
|
+ Report oneReport = reportMapper.selectById(ids.get(0));
|
|
|
|
+ int oldState = oneReport.getState();
|
|
|
|
+ List<User> allUsers = null;
|
|
|
|
+ List<Report> allReports = null;
|
|
if (settings.size() == 0) {
|
|
if (settings.size() == 0) {
|
|
//公司没有自定义流程,直接进行项目经理审核
|
|
//公司没有自定义流程,直接进行项目经理审核
|
|
reportMapper.update(new Report().setState(1),
|
|
reportMapper.update(new Report().setState(1),
|
|
new QueryWrapper<Report>().in("id", ids));
|
|
new QueryWrapper<Report>().in("id", ids));
|
|
|
|
+ if (oldState == -1) {
|
|
|
|
+ allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
|
|
|
|
+ allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
- List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
|
|
|
|
- List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
|
|
|
+ allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
|
|
|
|
+ allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
|
|
List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
|
|
//ids是来自不同人不同日期的报告id
|
|
//ids是来自不同人不同日期的报告id
|
|
List<Report> updateReportList = new ArrayList<Report>();
|
|
List<Report> updateReportList = new ArrayList<Report>();
|
|
@@ -1509,6 +1572,38 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (oldState == -1) {
|
|
|
|
+ //需要进行审核记录保存
|
|
|
|
+ ReportAuditLog log = new ReportAuditLog();
|
|
|
|
+ log.setAuditChannel(0);//导入审核
|
|
|
|
+ log.setCompanyId(company.getId());
|
|
|
|
+ log.setResult("批量通过");
|
|
|
|
+ log.setUserId(user.getId());
|
|
|
|
+ log.setUserName(user.getName());
|
|
|
|
+ reportAuditLogMapper.insert(log);
|
|
|
|
+ //当前所有员工的日期
|
|
|
|
+ List<ReportAlogMembdate> membList = new ArrayList<>();
|
|
|
|
+ for (Report r : allReports) {
|
|
|
|
+ LocalDate date = r.getCreateDate();
|
|
|
|
+ String creatorId = r.getCreatorId();
|
|
|
|
+ if (!membList.stream().anyMatch(m->m.getCreateDate().isEqual(date) && m.getUserId().equals(creatorId))) {
|
|
|
|
+ //没有的话,存进去
|
|
|
|
+ ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
|
|
+ membdate.setRlogId(log.getId());
|
|
|
|
+ membdate.setCreateDate(date);
|
|
|
|
+ membdate.setUserId(creatorId);
|
|
|
|
+ Optional<User> oneUser = allUsers.stream().filter(a->a.getId().equals(creatorId)).findFirst();
|
|
|
|
+ if (oneUser.isPresent()) {
|
|
|
|
+ membdate.setUserName(oneUser.get().getName());
|
|
|
|
+ }
|
|
|
|
+ membList.add(membdate);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (membList.size() > 0) {
|
|
|
|
+ reportAlogMembdateService.saveBatch(membList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
// //直接进行项目经理审核
|
|
// //直接进行项目经理审核
|
|
// reportMapper.update(new Report().setState(1),
|
|
// reportMapper.update(new Report().setState(1),
|
|
// new QueryWrapper<Report>().in("id", ids));
|
|
// new QueryWrapper<Report>().in("id", ids));
|
|
@@ -1567,6 +1662,41 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ Report oneReport = reportMapper.selectById(ids.get(0));
|
|
|
|
+ int oldState = oneReport.getState();
|
|
|
|
+ if (oldState == -1) {
|
|
|
|
+ //需要进行审核记录保存
|
|
|
|
+ ReportAuditLog log = new ReportAuditLog();
|
|
|
|
+ log.setAuditChannel(0);//导入审核
|
|
|
|
+ log.setCompanyId(company.getId());
|
|
|
|
+ log.setResult("批量驳回");
|
|
|
|
+ log.setUserId(user.getId());
|
|
|
|
+ log.setUserName(user.getName());
|
|
|
|
+ reportAuditLogMapper.insert(log);
|
|
|
|
+ List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
|
+ List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
|
|
|
|
+ //当前所有员工的日期
|
|
|
|
+ List<ReportAlogMembdate> membList = new ArrayList<>();
|
|
|
|
+ for (Report r : allReports) {
|
|
|
|
+ LocalDate date = r.getCreateDate();
|
|
|
|
+ String creatorId = r.getCreatorId();
|
|
|
|
+ if (!membList.stream().anyMatch(m->m.getCreateDate().isEqual(date) && m.getUserId().equals(creatorId))) {
|
|
|
|
+ //没有的话,存进去
|
|
|
|
+ ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
|
|
+ membdate.setRlogId(log.getId());
|
|
|
|
+ membdate.setCreateDate(date);
|
|
|
|
+ membdate.setUserId(creatorId);
|
|
|
|
+ Optional<User> oneUser = allUsers.stream().filter(a->a.getId().equals(creatorId)).findFirst();
|
|
|
|
+ if (oneUser.isPresent()) {
|
|
|
|
+ membdate.setUserName(oneUser.get().getName());
|
|
|
|
+ }
|
|
|
|
+ membList.add(membdate);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (membList.size() > 0) {
|
|
|
|
+ reportAlogMembdateService.saveBatch(membList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
//直接进行项目经理审核驳回
|
|
//直接进行项目经理审核驳回
|
|
reportMapper.update(new Report().setState(2),
|
|
reportMapper.update(new Report().setState(2),
|
|
new QueryWrapper<Report>().in("id", ListUtil.convertIdsArrayToList(reportIds)));
|
|
new QueryWrapper<Report>().in("id", ListUtil.convertIdsArrayToList(reportIds)));
|
|
@@ -2089,48 +2219,35 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- //先删除老数据, 修改为批处理
|
|
|
|
- long t1 = System.currentTimeMillis();
|
|
|
|
-
|
|
|
|
-// DateTimeFormatter standFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
-// HashMap<String, Object> dataMap = new HashMap<>();
|
|
|
|
-// for (Report r : reportList) {
|
|
|
|
-// //组合一下人员
|
|
|
|
-// String date = standFormat.format(r.getCreateDate());
|
|
|
|
-// if (dataMap.containsKey(date)) {
|
|
|
|
-// List<String> userList = (List)dataMap.get(date);
|
|
|
|
-// userList.add(r.getCreatorId());
|
|
|
|
-// } else {
|
|
|
|
-// List<String> newList = new ArrayList<>();
|
|
|
|
-// newList.add(r.getCreatorId());
|
|
|
|
-// dataMap.put(date, newList);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// LambdaQueryWrapper<Report> queryWrapper = new QueryWrapper<Report>().lambda();
|
|
|
|
-// Iterator<String> it = dataMap.keySet().iterator();
|
|
|
|
-//
|
|
|
|
-// while (it.hasNext()) {
|
|
|
|
-// String key = it.next();
|
|
|
|
-// List<String> userList = (List)dataMap.get(key);
|
|
|
|
-// //非审核通过的才能删除
|
|
|
|
-// queryWrapper.or(wrapper->wrapper.eq(Report::getCompanyId, companyId).eq(Report::getCreateDate, key).in(Report::getCreatorId, userList).ne(Report::getState, 1));
|
|
|
|
-// }
|
|
|
|
-// System.out.println(queryWrapper.getSqlSegment()+", "+queryWrapper.getSqlSelect()+", " + queryWrapper.getCustomSqlSegment());
|
|
|
|
if (reportList.size() > 0) {
|
|
if (reportList.size() > 0) {
|
|
reportMapper.deleteUserSameDayReport(companyId, reportList);
|
|
reportMapper.deleteUserSameDayReport(companyId, reportList);
|
|
- long t2 = System.currentTimeMillis();
|
|
|
|
- System.out.println("删除耗时:" + (t2-t1));
|
|
|
|
//存储
|
|
//存储
|
|
reportService.saveBatch(reportList);
|
|
reportService.saveBatch(reportList);
|
|
- long t3 = System.currentTimeMillis();
|
|
|
|
- System.out.println("插入耗时:"+ (t3-t2));
|
|
|
|
msg.data = dataCount;
|
|
msg.data = dataCount;
|
|
|
|
+ //保存导入记录
|
|
|
|
+ String originName = fileName;
|
|
|
|
+ //定义一个独立的文件夹
|
|
|
|
+ String importFolder = "report_import";
|
|
|
|
+ File dir = new File(path, importFolder);
|
|
|
|
+ if (!dir.exists()) {
|
|
|
|
+ dir.mkdir();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ System.out.println("fileName=="+originName);
|
|
|
|
+ String[] names = originName.split("\\.");
|
|
|
|
+ String destFileName = names[0] + "_"+System.currentTimeMillis()+"."+names[1];
|
|
|
|
+ File destFile = new File(dir, destFileName);
|
|
|
|
+ FileUtils.copyFile(file, destFile);
|
|
|
|
+ ReportImportLog log = new ReportImportLog();
|
|
|
|
+ log.setCompanyId(user.getCompanyId());
|
|
|
|
+ log.setFileName(originName);
|
|
|
|
+ log.setServerName(importFolder+"/"+destFileName);
|
|
|
|
+ log.setUserId(user.getId());
|
|
|
|
+ log.setUserName(user.getName());
|
|
|
|
+ reportImportLogMapper.insert(log);
|
|
} else {
|
|
} else {
|
|
msg.setError("工时数据不能为空");
|
|
msg.setError("工时数据不能为空");
|
|
}
|
|
}
|
|
-
|
|
|
|
-// msg.setError("接口维护中...");
|
|
|
|
-
|
|
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
msg.setError("文件处理出错");
|
|
msg.setError("文件处理出错");
|
|
@@ -2140,6 +2257,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
msg.setError("数据格式有误或存在空数据 导入失败");
|
|
msg.setError("数据格式有误或存在空数据 导入失败");
|
|
return msg;
|
|
return msg;
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
msg.setError("发生其他错误:"+e.getMessage());
|
|
msg.setError("发生其他错误:"+e.getMessage());
|
|
return msg;
|
|
return msg;
|
|
} finally {
|
|
} finally {
|