|
@@ -54,9 +54,13 @@ import java.util.stream.Collectors;
|
|
@Service
|
|
@Service
|
|
@Transactional
|
|
@Transactional
|
|
public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, ExpenseSheet> implements ExpenseSheetService {
|
|
public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, ExpenseSheet> implements ExpenseSheetService {
|
|
|
|
+ @Resource
|
|
|
|
+ private HttpServletRequest request;
|
|
@Resource
|
|
@Resource
|
|
private UserMapper userMapper;
|
|
private UserMapper userMapper;
|
|
@Resource
|
|
@Resource
|
|
|
|
+ private InformationMapper informationMapper;
|
|
|
|
+ @Resource
|
|
private ExpenseSheetMapper expenseSheetMapper;
|
|
private ExpenseSheetMapper expenseSheetMapper;
|
|
@Resource
|
|
@Resource
|
|
private ExpenseItemService expenseItemService;
|
|
private ExpenseItemService expenseItemService;
|
|
@@ -262,23 +266,83 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public HttpRespMsg approve(Integer id) {
|
|
public HttpRespMsg approve(Integer id) {
|
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
|
+ User user = userMapper.selectById(token);
|
|
ExpenseSheet sheet = new ExpenseSheet();
|
|
ExpenseSheet sheet = new ExpenseSheet();
|
|
sheet.setId(id);
|
|
sheet.setId(id);
|
|
sheet.setStatus(0);
|
|
sheet.setStatus(0);
|
|
expenseSheetMapper.updateById(sheet);
|
|
expenseSheetMapper.updateById(sheet);
|
|
|
|
+
|
|
|
|
+ sheet = expenseSheetMapper.selectById(id);
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ if (wxCorpInfo != null) {
|
|
|
|
+ sendAuditResult(wxCorpInfo, user, sheet, null);
|
|
|
|
+ }
|
|
|
|
+ saveNotifyToApplier(sheet, user);
|
|
|
|
+
|
|
return new HttpRespMsg();
|
|
return new HttpRespMsg();
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public HttpRespMsg deny(Integer id,String denyReason) {
|
|
public HttpRespMsg deny(Integer id,String denyReason) {
|
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
|
+ User user = userMapper.selectById(token);
|
|
ExpenseSheet sheet = new ExpenseSheet();
|
|
ExpenseSheet sheet = new ExpenseSheet();
|
|
sheet.setId(id);
|
|
sheet.setId(id);
|
|
sheet.setStatus(2);
|
|
sheet.setStatus(2);
|
|
sheet.setDenyReason(denyReason);
|
|
sheet.setDenyReason(denyReason);
|
|
expenseSheetMapper.updateById(sheet);
|
|
expenseSheetMapper.updateById(sheet);
|
|
|
|
+
|
|
|
|
+ //给填报人发送消息
|
|
|
|
+ sheet = expenseSheetMapper.selectById(id);
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ if (wxCorpInfo != null) {
|
|
|
|
+ sendAuditResult(wxCorpInfo, user, sheet, denyReason);
|
|
|
|
+ }
|
|
|
|
+ saveNotifyToApplier(sheet, user);
|
|
|
|
+
|
|
return new HttpRespMsg();
|
|
return new HttpRespMsg();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ //发送审核结果消息提醒
|
|
|
|
+ private void sendAuditResult(WxCorpInfo wxCorpInfo, User auditor, ExpenseSheet sheet, String denyReason) {
|
|
|
|
+ //推送到企业微信
|
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M月d日");
|
|
|
|
+ stringBuilder.append("$userName="+auditor.getCorpwxUserid()+"$")
|
|
|
|
+ .append(sheet.getStatus() == 0?"通过":"驳回")
|
|
|
|
+ .append("了您")
|
|
|
|
+ .append(dateTimeFormatter.format(sheet.getCreateDate()))
|
|
|
|
+ .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(), "expense",
|
|
|
|
+ sheet.getStatus() == 0?WxCorpInfoServiceImpl.TEXT_CARD_MSG_EXPENSE_AGREE:WxCorpInfoServiceImpl.TEXT_CARD_MSG_EXPENSE_DENY);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void saveNotifyToApplier(ExpenseSheet sheet, User auditor) {
|
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M月d日");
|
|
|
|
+ String ownerId = sheet.getOwnerId();
|
|
|
|
+ User owner = userMapper.selectById(ownerId);
|
|
|
|
+ //系统内消息
|
|
|
|
+ Information information=new Information();
|
|
|
|
+ information.setUserId(owner.getId());
|
|
|
|
+ information.setTime(LocalDateTime.now());
|
|
|
|
+ information.setMsg("您"+dateTimeFormatter.format(sheet.getCreateDate()) + "费用报销申请审核"+(sheet.getStatus() == 0?"已通过":"已驳回")+", 审核人:"
|
|
|
|
+ +(auditor.getCorpwxUserid() != null ? ("$userName="+auditor.getCorpwxUserid()+"$"):auditor.getName()));
|
|
|
|
+ information.setType(3);//费用报销模块
|
|
|
|
+ information.setContent(sheet.getId()+"");
|
|
|
|
+ informationMapper.insert(information);
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public HttpRespMsg importData(HttpServletRequest request,MultipartFile[] files) {
|
|
public HttpRespMsg importData(HttpServletRequest request,MultipartFile[] files) {
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
HttpRespMsg msg = new HttpRespMsg();
|