|
@@ -1,14 +1,19 @@
|
|
package com.management.platform.service.impl;
|
|
package com.management.platform.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
+import com.management.platform.controller.AuditWorkflowSettingController;
|
|
import com.management.platform.entity.*;
|
|
import com.management.platform.entity.*;
|
|
import com.management.platform.entity.vo.SysRichFunction;
|
|
import com.management.platform.entity.vo.SysRichFunction;
|
|
import com.management.platform.mapper.*;
|
|
import com.management.platform.mapper.*;
|
|
|
|
+import com.management.platform.service.AuditWorkflowSettingService;
|
|
import com.management.platform.service.BusinessTripService;
|
|
import com.management.platform.service.BusinessTripService;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.management.platform.service.DepartmentService;
|
|
import com.management.platform.service.DepartmentService;
|
|
|
|
+import com.management.platform.service.WxCorpInfoService;
|
|
import com.management.platform.util.ExcelUtil;
|
|
import com.management.platform.util.ExcelUtil;
|
|
import com.management.platform.util.HttpRespMsg;
|
|
import com.management.platform.util.HttpRespMsg;
|
|
import com.management.platform.util.MessageUtils;
|
|
import com.management.platform.util.MessageUtils;
|
|
@@ -42,6 +47,10 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
|
|
@Resource
|
|
@Resource
|
|
private BustripProjectMapper bustripProjectMapper;
|
|
private BustripProjectMapper bustripProjectMapper;
|
|
@Resource
|
|
@Resource
|
|
|
|
+ AuditWorkflowSettingMapper auditWorkflowSettingMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ BustripAuditLogMapper bustripAuditLogMapper;
|
|
|
|
+ @Resource
|
|
private TimeTypeMapper timeTypeMapper;
|
|
private TimeTypeMapper timeTypeMapper;
|
|
@Resource
|
|
@Resource
|
|
private HttpServletRequest request;
|
|
private HttpServletRequest request;
|
|
@@ -57,6 +66,14 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
|
|
LocaleInformationMapper localeInformationMapper;
|
|
LocaleInformationMapper localeInformationMapper;
|
|
@Resource
|
|
@Resource
|
|
CompanyMapper companyMapper;
|
|
CompanyMapper companyMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ AuditWorkflowSettingService auditWorkflowSettingService;
|
|
|
|
+ @Resource
|
|
|
|
+ WxCorpInfoMapper wxCorpInfoMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ WxCorpInfoService wxCorpInfoService;
|
|
|
|
+ @Resource
|
|
|
|
+ InformationMapper informationMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public HttpRespMsg modifyProject(BusinessTrip sheet) {
|
|
public HttpRespMsg modifyProject(BusinessTrip sheet) {
|
|
@@ -201,6 +218,25 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
|
|
return httpRespMsg;
|
|
return httpRespMsg;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg cancel(Integer id, String userId) {
|
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
|
+ BusinessTrip oldSheet = businessTripMapper.selectById(id);
|
|
|
|
+ if (oldSheet.getStatus() == 0) {
|
|
|
|
+ msg.setError("当前出差申请已通过,无法撤销");
|
|
|
|
+ } else if (oldSheet.getStatus() == 2) {
|
|
|
|
+ msg.setError("当前出差申请已驳回,无法撤销");
|
|
|
|
+ } else {
|
|
|
|
+ BusinessTrip sheet = new BusinessTrip();
|
|
|
|
+ sheet.setId(id);
|
|
|
|
+ sheet.setStatus(3);//撤销状态
|
|
|
|
+ businessTripMapper.updateById(sheet);
|
|
|
|
+ //删除相关的审批记录
|
|
|
|
+ bustripAuditLogMapper.delete(new QueryWrapper<BustripAuditLog>().eq("sheet_id", id));
|
|
|
|
+ }
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public HttpRespMsg add(BusinessTrip sheet) {
|
|
public HttpRespMsg add(BusinessTrip sheet) {
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
@@ -214,8 +250,36 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
|
|
sheet.setOwnerName(user.getName());
|
|
sheet.setOwnerName(user.getName());
|
|
sheet.setCompanyId(user.getCompanyId());
|
|
sheet.setCompanyId(user.getCompanyId());
|
|
sheet.setStatus(1);//填报时是待审核状态
|
|
sheet.setStatus(1);//填报时是待审核状态
|
|
|
|
+
|
|
|
|
+ //获取第一个审批人
|
|
|
|
+ User owner = userMapper.selectById(sheet.getOwnerId());
|
|
|
|
+ if (owner.getDepartmentId() == 0) {
|
|
|
|
+ //没有部门,不能提交出差申请
|
|
|
|
+ msg.setError("请联系管理员设置您所在部门");
|
|
|
|
+ return msg;
|
|
|
|
+ } else {
|
|
|
|
+ List<AuditWorkflowSetting> auditList = auditWorkflowSettingService.get(owner.getDepartmentId(), AuditWorkflowSettingController.TYPE_LEAVE);
|
|
|
|
+ if (auditList.size() > 0) {
|
|
|
|
+ AuditWorkflowSetting workflowNode = auditList.get(0);
|
|
|
|
+ if (workflowNode.getAuditorType() == 1) {
|
|
|
|
+ //部门负责人
|
|
|
|
+ Department dept = departmentMapper.selectById(workflowNode.getAuditDeptId());
|
|
|
|
+ if (dept.getManagerId() == null) {
|
|
|
|
+ msg.setError("请联系管理员设置您所在部门的主要负责人");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ sheet.setAuditorId(dept.getManagerId());
|
|
|
|
+ sheet.setAuditorName(userMapper.selectById(dept.getManagerId()).getName());
|
|
|
|
+ } else if (workflowNode.getAuditorType() == 2) {
|
|
|
|
+ //指定一个人审批
|
|
|
|
+ sheet.setAuditorId(workflowNode.getUserId());
|
|
|
|
+ sheet.setAuditorName(workflowNode.getUserName());
|
|
|
|
+ }
|
|
|
|
+ sheet.setCurAuditSettingId(workflowNode.getId());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
if (isNew) {
|
|
if (isNew) {
|
|
- //检查该时间段是否已经有按天请假
|
|
|
|
QueryWrapper<BusinessTrip> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<BusinessTrip> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.eq("owner_id", sheet.getOwnerId());
|
|
queryWrapper.eq("owner_id", sheet.getOwnerId());
|
|
queryWrapper.le("start_date", sheet.getEndDate()).ge("end_date", sheet.getStartDate());
|
|
queryWrapper.le("start_date", sheet.getEndDate()).ge("end_date", sheet.getStartDate());
|
|
@@ -224,16 +288,97 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
|
|
if (count > 0) {
|
|
if (count > 0) {
|
|
//msg.setError("该时间段已有出差申请,不能重复提交");
|
|
//msg.setError("该时间段已有出差申请,不能重复提交");
|
|
msg.setError(MessageUtils.message("leave.businessRepeat"));
|
|
msg.setError(MessageUtils.message("leave.businessRepeat"));
|
|
|
|
+ return msg;
|
|
} else {
|
|
} else {
|
|
businessTripMapper.insert(sheet);
|
|
businessTripMapper.insert(sheet);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
businessTripMapper.updateById(sheet);
|
|
businessTripMapper.updateById(sheet);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ sheet = businessTripMapper.selectById(sheet.getId());
|
|
|
|
+ saveNotifyToAuditor(sheet);
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ if (wxCorpInfo != null) {
|
|
|
|
+ sendAuditNotifyMsg(wxCorpInfo, user, sheet);
|
|
|
|
+ }
|
|
return msg;
|
|
return msg;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ //发送审核结果消息提醒
|
|
|
|
+ private void sendAuditResult(WxCorpInfo wxCorpInfo, User auditor, BusinessTrip sheet, String denyReason) {
|
|
|
|
+ //推送到企业微信
|
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
|
+ String applyTimeDesc = "";
|
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M月d日");
|
|
|
|
+ if (sheet.getStartDate().isEqual(sheet.getEndDate())) {
|
|
|
|
+ applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate());
|
|
|
|
+ } else {
|
|
|
|
+ applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate()) +"至" + dateTimeFormatter.format(sheet.getEndDate());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ stringBuilder.append("$userName="+auditor.getCorpwxUserid()+"$")
|
|
|
|
+ .append(sheet.getStatus() == 0?"通过":"驳回")
|
|
|
|
+ .append("了您")
|
|
|
|
+ .append(applyTimeDesc)
|
|
|
|
+ .append("的出差申请。");
|
|
|
|
+ if (sheet.getStatus() == 2) {
|
|
|
|
+ //驳回加原因
|
|
|
|
+ stringBuilder.append("原因: ").append(denyReason);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String ownerId = sheet.getOwnerId();
|
|
|
|
+ User owner = userMapper.selectById(ownerId);
|
|
|
|
+ wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,owner.getCorpwxUserid(), stringBuilder.toString(), "awayOffice",
|
|
|
|
+ sheet.getStatus() == 0?WxCorpInfoServiceImpl.TEXT_CARD_MSG_BUSTRIP_AGREE:WxCorpInfoServiceImpl.TEXT_CARD_MSG_BUSTRIP_DENY);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void saveNotifyToApplier(BusinessTrip sheet) {
|
|
|
|
+ String applyTimeDesc = "";
|
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M月d日");
|
|
|
|
+ if (sheet.getStartDate().isEqual(sheet.getEndDate())) {
|
|
|
|
+ applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate());
|
|
|
|
+ } else {
|
|
|
|
+ applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate()) +"至" + dateTimeFormatter.format(sheet.getEndDate()) ;
|
|
|
|
+ }
|
|
|
|
+ String ownerId = sheet.getOwnerId();
|
|
|
|
+ User owner = userMapper.selectById(ownerId);
|
|
|
|
+ User auditor = userMapper.selectById(sheet.getAuditorId());
|
|
|
|
+ //系统内消息
|
|
|
|
+ Information information=new Information();
|
|
|
|
+ information.setUserId(owner.getId());
|
|
|
|
+ information.setTime(LocalDateTime.now());
|
|
|
|
+ information.setMsg("您"+applyTimeDesc + "出差申请审核"+(sheet.getStatus() == 0?"已通过":"已驳回")+", 审核人:"
|
|
|
|
+ +(auditor.getCorpwxUserid() != null ? ("$userName="+auditor.getCorpwxUserid()+"$"):auditor.getName()));
|
|
|
|
+ information.setType(5);
|
|
|
|
+ information.setContent(sheet.getId()+"");
|
|
|
|
+ informationMapper.insert(information);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void saveNotifyToAuditor(BusinessTrip sheet) {
|
|
|
|
+ //系统内消息
|
|
|
|
+ Information information=new Information();
|
|
|
|
+ information.setUserId(sheet.getAuditorId());
|
|
|
|
+ information.setTime(LocalDateTime.now());
|
|
|
|
+ User owner = userMapper.selectById(sheet.getOwnerId());
|
|
|
|
+ information.setMsg("出差待审核, 申请人:" + (owner.getCorpwxUserid() != null?("$userName="+owner.getCorpwxUserid()+"$"):owner.getName()));
|
|
|
|
+ information.setType(5);
|
|
|
|
+ information.setContent(sheet.getId()+"");
|
|
|
|
+ informationMapper.insert(information);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //发送待审核提醒
|
|
|
|
+ private void sendAuditNotifyMsg(WxCorpInfo wxCorpInfo, User applier, BusinessTrip sheet) {
|
|
|
|
+ //推送到企业微信
|
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
|
+ sb.append("出差申请待审核,申请人:").append("$userName="+applier.getCorpwxUserid()+"$");
|
|
|
|
+
|
|
|
|
+ String auditorId = sheet.getAuditorId();
|
|
|
|
+ User auditor = userMapper.selectById(auditorId);
|
|
|
|
+ wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,auditor.getCorpwxUserid(), sb.toString(), "awayOffice", WxCorpInfoServiceImpl.TEXT_CARD_MSG_BUSTRIP_WAITING_AUDIT);
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public HttpRespMsg delete(Integer id) {
|
|
public HttpRespMsg delete(Integer id) {
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
@@ -346,21 +491,128 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public HttpRespMsg approve(Integer id) {
|
|
public HttpRespMsg approve(Integer id) {
|
|
- BusinessTrip sheet = new BusinessTrip();
|
|
|
|
- sheet.setId(id);
|
|
|
|
- sheet.setStatus(0);
|
|
|
|
- businessTripMapper.updateById(sheet);
|
|
|
|
- return new HttpRespMsg();
|
|
|
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
|
+ //检查操作人权限
|
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
|
+ BusinessTrip originSheet = businessTripMapper.selectById(id);
|
|
|
|
+ if (user.getId().equals(originSheet.getAuditorId())) {
|
|
|
|
+ //是当前的审核人,获取下个审核节点
|
|
|
|
+ AuditWorkflowSetting auditWorkflowSetting = auditWorkflowSettingMapper.selectById(originSheet.getCurAuditSettingId());
|
|
|
|
+ BusinessTrip sheet = new BusinessTrip();
|
|
|
|
+ sheet.setId(id);
|
|
|
|
+ if (auditWorkflowSetting == null) {
|
|
|
|
+ //当前审核节点已不存在,直接审核通过
|
|
|
|
+ sheet.setStatus(0);
|
|
|
|
+ } else {
|
|
|
|
+ Integer seq = auditWorkflowSetting.getSeq();
|
|
|
|
+ AuditWorkflowSetting nextAuditNode = auditWorkflowSettingMapper.selectOne(new QueryWrapper<AuditWorkflowSetting>().eq("type", 2).eq("seq", (seq + 1)).eq("dept_id", auditWorkflowSetting.getDeptId()));
|
|
|
|
+ System.out.println("nextAuditNode=="+nextAuditNode);
|
|
|
|
+ if (nextAuditNode == null) {
|
|
|
|
+ sheet.setStatus(0);
|
|
|
|
+ } else {
|
|
|
|
+ //进入下个审核节点
|
|
|
|
+ if (nextAuditNode.getAuditorType() == 1) {
|
|
|
|
+ //部门负责人审核
|
|
|
|
+ Department department = departmentMapper.selectById(nextAuditNode.getAuditDeptId());
|
|
|
|
+ if (department == null) {
|
|
|
|
+ //部门已被删除,直接审核通过
|
|
|
|
+ sheet.setStatus(0);
|
|
|
|
+ } else {
|
|
|
|
+ if (department.getManagerId() == null) {
|
|
|
|
+ httpRespMsg.setError("尚未设置下个节点的部门负责人,请联系管理员");
|
|
|
|
+ return httpRespMsg;
|
|
|
|
+ } else {
|
|
|
|
+ sheet.setCurAuditSettingId(nextAuditNode.getId());
|
|
|
|
+ sheet.setAuditorId(department.getManagerId());
|
|
|
|
+ sheet.setAuditorName(userMapper.selectById(department.getManagerId()).getName());
|
|
|
|
+ sheet.setAuditorType(nextAuditNode.getAuditorType());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (nextAuditNode.getAuditorType() == 2){
|
|
|
|
+ //指定人员审核
|
|
|
|
+ sheet.setCurAuditSettingId(nextAuditNode.getId());
|
|
|
|
+ sheet.setAuditorId(nextAuditNode.getUserId());
|
|
|
|
+ sheet.setAuditorName(nextAuditNode.getUserName());
|
|
|
|
+ sheet.setAuditorType(nextAuditNode.getAuditorType());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ businessTripMapper.updateById(sheet);
|
|
|
|
+ //保存审核记录
|
|
|
|
+ saveAgreeLog(id, auditWorkflowSetting, user);
|
|
|
|
+ //最终审核通过,发送通过消息
|
|
|
|
+ sheet = businessTripMapper.selectById(id);
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ if (wxCorpInfo != null) {
|
|
|
|
+ if (sheet.getStatus() == 0) {
|
|
|
|
+ //最终通过
|
|
|
|
+ sendAuditResult(wxCorpInfo, user, sheet, null);
|
|
|
|
+ } else {
|
|
|
|
+ //通知下个节点的审核人去审核
|
|
|
|
+ sendAuditNotifyMsg(wxCorpInfo, user, sheet);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (sheet.getStatus() == 0) {
|
|
|
|
+ //最终通过
|
|
|
|
+ saveNotifyToApplier(sheet);
|
|
|
|
+ } else {
|
|
|
|
+ //通知下个节点的审核人去审核
|
|
|
|
+ saveNotifyToAuditor(sheet);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return httpRespMsg;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void saveAgreeLog(int sheetId, AuditWorkflowSetting curAuditNode, User operator) {
|
|
|
|
+ BustripAuditLog log = new BustripAuditLog();
|
|
|
|
+ log.setSheetId(sheetId);
|
|
|
|
+ if (curAuditNode != null) {
|
|
|
|
+ log.setAuditNodeId(curAuditNode.getId());
|
|
|
|
+ }
|
|
|
|
+ log.setAuditorId(operator.getId());
|
|
|
|
+ log.setAuditorName(operator.getName());
|
|
|
|
+ log.setIsPass(1);
|
|
|
|
+ bustripAuditLogMapper.insert(log);
|
|
|
|
+ }
|
|
|
|
+ private void saveDenyLog(int sheetId, AuditWorkflowSetting curAuditNode, User operator, String reason) {
|
|
|
|
+ BustripAuditLog log = new BustripAuditLog();
|
|
|
|
+ log.setSheetId(sheetId);
|
|
|
|
+ if (curAuditNode != null) {
|
|
|
|
+ log.setAuditNodeId(curAuditNode.getId());
|
|
|
|
+ }
|
|
|
|
+ log.setAuditorId(operator.getId());
|
|
|
|
+ log.setAuditorName(operator.getName());
|
|
|
|
+ log.setIsPass(0);
|
|
|
|
+ log.setDenyReason(reason);
|
|
|
|
+ bustripAuditLogMapper.insert(log);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public HttpRespMsg deny(Integer id, String denyReason) {
|
|
|
|
- BusinessTrip sheet = new BusinessTrip();
|
|
|
|
- sheet.setId(id);
|
|
|
|
- sheet.setStatus(2);
|
|
|
|
- sheet.setDenyReason(denyReason);
|
|
|
|
- businessTripMapper.updateById(sheet);
|
|
|
|
- return new HttpRespMsg();
|
|
|
|
|
|
+ public HttpRespMsg deny(Integer id, String reason) {
|
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
|
+ //检查操作人权限
|
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
|
+ BusinessTrip originSheet = businessTripMapper.selectById(id);
|
|
|
|
+ if (user.getId().equals(originSheet.getAuditorId())) {
|
|
|
|
+ //是当前的审核人,获取当前审核节点
|
|
|
|
+ AuditWorkflowSetting auditWorkflowSetting = auditWorkflowSettingMapper.selectById(originSheet.getCurAuditSettingId());
|
|
|
|
+ BusinessTrip sheet = new BusinessTrip();
|
|
|
|
+ sheet.setId(id);
|
|
|
|
+ sheet.setStatus(2);
|
|
|
|
+ businessTripMapper.updateById(sheet);
|
|
|
|
+ saveDenyLog(id, auditWorkflowSetting, user, reason);
|
|
|
|
+ sheet = businessTripMapper.selectById(id);
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ if (wxCorpInfo != null) {
|
|
|
|
+ sendAuditResult(wxCorpInfo, user, sheet, reason);
|
|
|
|
+ }
|
|
|
|
+ saveNotifyToApplier(sheet);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return httpRespMsg;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|