1、日报补卡 2消息日报补卡

This commit is contained in:
2025-03-05 17:37:09 +08:00
parent 0e156418d9
commit d3add5b113
5 changed files with 88 additions and 3 deletions

View File

@ -19,10 +19,11 @@ public class WgzAndBgtMessageConstant {
public static final String LARGE_APPLY = "0"; //大类型-报名
public static final String LARGE_SALARY = "1"; //大类型-工资
public static final String LARGE_OTHER = "2"; //大类型-其它
public static final String SMALL_CARD = "0"; //小类型-补卡
public static final String SMALL_CARD = "0"; //小类型-考勤补卡
public static final String SMALL_SYSTEM = "1"; //小类型-系统
public static final String SMALL_EXIT = "2"; //小类型-退场
public static final String SMALL_LEAVE = "3"; //小类型-请假
public static final String SMALL_DAILY = "4"; //小类型-日报补卡
/**
@ -61,6 +62,9 @@ public class WgzAndBgtMessageConstant {
//【请假超时】17-18
public static final String WGZ_SYSTEM_HEADLINE_TIMEOUT = "您【%s】的请假审批已超时未审核";
public static final String WGZ_SYSTEM_SUBHEADING_TIMEOUT = "您在【%s】的请假审批流程未走完现已超时取消请注意核对";
//【日报补卡】19-20
public static final String WGZ_SYSTEM_HEADLINE_DAILY = "您成功发送【%s】日的日报补卡";
public static final String WGZ_SYSTEM_SUBHEADING_DAILY = "您在【%s】日的日报补卡已成功发起";
/**
* 务工者给包工头提示
*/
@ -79,6 +83,9 @@ public class WgzAndBgtMessageConstant {
//【工资结算】9-10
public static final String WGZ_HEADLINE_PAYCALCULATION = "务工者【%s】正在向你发起工资结算";
public static final String WGZ__SUBHEADING_PAYCALCULATION = "务工者【%s】向你发起为期【%s】天金额为【%s】圆整的工资结算操作";
//【日报补卡】11-12
public static final String WGZ_HEADLINE_DAILY = "务工者【%s】正在向你发起【%s】日的日报补卡";
public static final String WGZ__SUBHEADING_DAILY = "务工者【%s】向你发起【%s】日的日报补卡请注意查收处理";
//务工者消息返回
public static String wgzMessage(Map<String, String> mp, String type) {
@ -125,6 +132,10 @@ public class WgzAndBgtMessageConstant {
return String.format(WGZ_SYSTEM_HEADLINE_TIMEOUT,mp.get("data"));
case "118":
return String.format(WGZ_SYSTEM_SUBHEADING_TIMEOUT, mp.get("data"));
case "119":
return String.format(WGZ_SYSTEM_HEADLINE_DAILY,mp.get("data"));
case "120":
return String.format(WGZ_SYSTEM_SUBHEADING_DAILY, mp.get("data"));
//务工者向包工头申请报名
case "201":
return String.format(WGZ_HEADLINE_APPLY, mp.get("userName"), mp.get("post"));
@ -150,6 +161,11 @@ public class WgzAndBgtMessageConstant {
return String.format(WGZ_HEADLINE_PAYCALCULATION, mp.get("userName"));
case "210":
return String.format(WGZ__SUBHEADING_PAYCALCULATION, mp.get("userName"),mp.get("num"),mp.get("money"));
//务工者向包工头发起日报补卡
case "211":
return String.format(WGZ_HEADLINE_DAILY, mp.get("userName"),mp.get("data"));
case "212":
return String.format(WGZ__SUBHEADING_DAILY, mp.get("userName"),mp.get("data"));
default:
return "未知类型";
}

View File

@ -19,6 +19,8 @@ import java.time.LocalDateTime;
@Accessors(chain = true)
@ApiModel("日报打卡请求对象")
public class WgzAppDailyClockReq implements Serializable {
@ApiModelProperty("日报状态0正常 1补卡")
private String status;
@ApiModelProperty("今日完成工作")
private String finishToday;

View File

@ -106,6 +106,11 @@ public class WgzDailyClock implements Serializable {
@ApiModelProperty("未审核|审核时间")
private LocalDateTime auditorTime;
/** 日报状态0正常 1补卡 */
@Excel(name = "日报状态0正常 1补卡" , readConverterExp = "0=正常,1=补卡")
@ApiModelProperty("日报状态0正常 1补卡")
private String status;
/** 删除标志0代表存在 2代表删除 */
@Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除")
@ApiModelProperty("删除标志0代表存在 2代表删除")

View File

@ -6,15 +6,19 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.ruoyi.bgt.domain.BgtMessage;
import com.ruoyi.bgt.domain.BgtProjectRecruit;
import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
import com.ruoyi.bgt.domain.dto.BgtDailyClockListDTO;
import com.ruoyi.bgt.domain.dto.BgtDailyClockUpdateDTO;
import com.ruoyi.bgt.domain.vo.BgtDailyClockDetailVO;
import com.ruoyi.bgt.domain.vo.BgtDailyClockListVO;
import com.ruoyi.bgt.service.IBgtMessageService;
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
import com.ruoyi.bgt.service.IBgtUserService;
import com.ruoyi.common.constants.WgzAndBgtMessageConstant;
import com.ruoyi.common.core.domain.entity.BgtUser;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
@ -29,18 +33,29 @@ import com.ruoyi.wgz.bo.res.WgzAppUserDailyRecordRes;
import com.ruoyi.wgz.bo.res.WgzUserDailyCalendarRes;
import com.ruoyi.wgz.bo.rests.WgzAppAttachmentAcquisitionTwo;
import com.ruoyi.wgz.domain.WgzDailyClock;
import com.ruoyi.wgz.domain.WgzMessage;
import com.ruoyi.wgz.domain.WgzReissueacard;
import com.ruoyi.wgz.domain.WgzUser;
import com.ruoyi.wgz.mapper.WgzDailyClockMapper;
import com.ruoyi.wgz.service.IWgzDailyClockService;
import com.ruoyi.wgz.service.IWgzLeaveService;
import com.ruoyi.wgz.service.IWgzMessageService;
import com.ruoyi.wgz.service.IWgzUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import static com.ruoyi.common.constants.BgtMessageConstant.BGT_SMALL_MAKE_UP;
import static com.ruoyi.common.constants.BgtMessageConstant.BGT_TYPE_SIGN_UP;
import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*;
import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_BGT;
/**
* 日报打卡Service业务层处理
*
@ -67,6 +82,15 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
@Autowired
private IBgtUserService iBgtUserService;
@Autowired
private IWgzUserService wgzUserService;
@Autowired
private IWgzMessageService iWgzMessageService;
@Autowired
private IBgtMessageService iBgtMessageService;
@Override
public WgzDailyClock queryById(Long id){
return getById(id);
@ -196,6 +220,7 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
}
@Override
@Transactional
public Boolean userDailyClock(WgzAppDailyClockReq req) {
//1、获取当前人、当前工的上下班时间范围
Long appUserId = SecurityUtils.getAppUserId();
@ -204,11 +229,48 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
//1、组装数据
WgzDailyClock dc = new WgzDailyClock();
BeanUtils.copyProperties(req,dc);
dc.setStatus(req.getStatus());
dc.setRecruitId(appUserId);
dc.setUserId(appUserId);
dc.setDilyTime(LocalDateTime.now());
dc.setAuditorUserId(appById.getUserId());
return baseMapper.insert(dc) > 0;
int insert = baseMapper.insert(dc);
//2、插入成功且状态为1那么就需要发送消息给【补日报】的人和上级【招工】
if ( insert > 0 && req.getStatus().equals("1")){
WgzUser byId = wgzUserService.findByUserId(appUserId);
Map<String, String> mp = new HashMap<>();
mp.put("data",String.valueOf(LocalDate.now()));
WgzMessage wgzMessage = new WgzMessage().
setSenderType(USERTYPE_SYSTEM).
setRecipientType(USERTYPE_WGZ).
setRecipientId(appUserId).
setHeadline(WgzAndBgtMessageConstant.wgzMessage(mp,"119")).
setSubheading(WgzAndBgtMessageConstant.wgzMessage(mp,"120")).
setTableId(dc.getId()).
setTableName(SqlHelper.table(WgzDailyClock.class).getTableName()).
setMessageLargeType(LARGE_OTHER).
setMessageSmallType(SMALL_DAILY);
if (!iWgzMessageService.sendAMessage(wgzMessage)){
throw new RuntimeException("系统日报补卡消息发送失败!");
}
BgtMessage bgtMessage = new BgtMessage().
setSenderType(USERTYPE_WGZ).
setSenderId(appUserId).
setRecipientType(USERTYPE_BGT).
setRecipientId(appById.getUserId()).
setHeadline(WgzAndBgtMessageConstant.wgzMessage(mp,"211")).
setSubheading(WgzAndBgtMessageConstant.wgzMessage(mp,"212")).
setTableId(dc.getId()).
setTableName(SqlHelper.table(WgzDailyClock.class).getTableName()).
setMessageLargeType(BGT_TYPE_SIGN_UP).
setMessageSmallType(BGT_SMALL_MAKE_UP);
if (!iBgtMessageService.sendAMessage(bgtMessage)){
throw new RuntimeException("发送日报补卡消息失败!");
}
return true;
}else{
return false;
}
}
@Override

View File

@ -98,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bgt_project_recruit as b
LEFT JOIN fbs_project_task as c ON (c.id = b.task_id)
WHERE
b.recruit_end_time &lt;= DATE_FORMAT(now(),'%Y-%m-%d') AND
DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN b.recruit_begin_time AND b.recruit_end_time and
b.id not in (SELECT recruit_id FROM bgt_project_recruit_apply WHERE user_id = #{req.userId})and
b.del_flag = 0
order by b.create_time desc