Merge remote-tracking branch 'origin/master'

This commit is contained in:
zt
2025-03-19 10:43:07 +08:00
12 changed files with 180 additions and 14 deletions

View File

@ -484,6 +484,18 @@
return iWgzPayCalculationService.userApplyForPayrollSettlementList(req);
}
/**
* 【首页】【项目进行中】 项目进行中·申请工资结算(详情)
* 【首页】【已完成项目】 已完成项目·申请工资结算(详情) WgzAppUserApplyForPayrollSettlementDetails
*/
@ApiOperation("【首页】【项目进行中|已完成项目】 申请工资结算(详情)")
//@PreAuthorize("@ss.hasPermi('wgzApp:user:userApplyForPayrollSettlementDetails')")
@RepeatSubmit
@PostMapping("/WgzAppUserApplyForPayrollSettlementDetails/{messageId}")
public AjaxResult<WgzAppUserApplyForPayrollSettlementDetails> userApplyForPayrollSettlementDetails(@NotNull(message = "主键ID不能为空") @PathVariable("id") Long id) {
return AjaxResult.success(iWgzPayCalculationService.userApplyForPayrollSettlementDetails(id));
}
/**
* 【消息】消息类型统计
*/

View File

@ -52,7 +52,7 @@ public class BgtApplyForWgzPayAddDTO implements Serializable {
@ApiModelProperty("出勤天数")
private Integer num;
@ApiModelProperty("务工状态")
@ApiModelProperty("务工状态(1进场 2离场)")
private String workingState;
@ApiModelProperty("联系电话")

View File

@ -52,7 +52,7 @@ public class BgtApplyForWgzPayAddInfoVO implements Serializable {
@ApiModelProperty("出勤天数")
private Integer num;
@ApiModelProperty("务工状态")
@ApiModelProperty("务工状态(1进场 2离场)")
private String workingState;
@ApiModelProperty("联系电话")

View File

@ -71,7 +71,7 @@ public class WgzPayCalculationQueryBo extends BaseEntity {
@ApiModelProperty("出勤天数")
private Long num;
/** 务工状态 */
@ApiModelProperty("务工状态")
@ApiModelProperty("务工状态(1进场 2离场)")
private String workingState;
/** 联系电话 */
@ApiModelProperty("联系电话")

View File

@ -13,6 +13,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
@ -56,9 +58,10 @@ public class WgzApplyForPayrollSettlementAddReq implements Serializable {
private BigDecimal recruitAmount;
@ApiModelProperty("出勤天数")
@Min(value = 1, message = "出勤天数不能为 0")
private Integer num;
@ApiModelProperty("务工状态")
@ApiModelProperty("务工状态(1进场 2离场)")
private String workingState;
@ApiModelProperty("联系电话")

View File

@ -55,7 +55,7 @@ public class WgzAppApplyForPayrollSettlementListRes implements Serializable {
@ApiModelProperty("出勤天数")
private Long num;
@ApiModelProperty("务工状态")
@ApiModelProperty("务工状态(1进场 2离场)")
private String workingState;
@ApiModelProperty("联系电话")

View File

@ -0,0 +1,107 @@
package com.ruoyi.wgz.bo.res;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.wgz.bo.WgzPayCalculationFilesQueryBo;
import com.ruoyi.wgz.domain.WgzPayCalculationFiles;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("工资结算详情")
public class WgzAppUserApplyForPayrollSettlementDetails {
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("任务地址")
private String taskAddress;
@ApiModelProperty("招工主题")
private String recruitName;
@ApiModelProperty("申请人名称")
private String userName;
@ApiModelProperty("进场时间")
private LocalDate entryTime;
@ApiModelProperty("离场时间")
private LocalDate leaveTime;
@ApiModelProperty("结算人")
private String auditorUserName;
@ApiModelProperty("结算时间")
private LocalDateTime createTime;
@ApiModelProperty("工资金额")
private BigDecimal recruitAmount;
@ApiModelProperty("出勤天数")
private Integer num;
@ApiModelProperty("务工状态(1进场 2离场)")
private String workingState;
@ApiModelProperty("联系电话")
private String phone;
@ApiModelProperty("银行")
private String bank;
@ApiModelProperty("银行卡号")
private String cardNo;
@ApiModelProperty("附件")
private List<WgzPayCalculationFiles> files;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("任务ID")
private Long taskId;
@ApiModelProperty("招工ID")
private Long recruitId;
@ApiModelProperty("务工者ID")
private Long userId;
@ApiModelProperty("审核人ID")
private Long auditorUserId;
@ApiModelProperty("审核状态0未读 1待审核 2已同意 3已拒绝")
private String auditorType;
@ApiModelProperty("审核意见")
private String auditorOpinion;
@ApiModelProperty("同意|拒绝时间")
private LocalDateTime auditorTime;
@ApiModelProperty("申请人类型")
private String operatorType;
@ApiModelProperty("备注")
private String remark;
}

View File

@ -88,7 +88,7 @@ public class WgzPayCalculation implements Serializable {
/** 务工状态 */
@Excel(name = "务工状态")
@ApiModelProperty("务工状态")
@ApiModelProperty("务工状态(1进场 2离场)")
private String workingState;
/** 联系电话 */

View File

@ -13,9 +13,12 @@ import com.ruoyi.wgz.bo.WgzPayCalculationQueryBo;
import com.ruoyi.wgz.bo.req.WgzAppApplyForPayrollSettlementListReq;
import com.ruoyi.wgz.bo.req.WgzApplyForPayrollSettlementAddReq;
import com.ruoyi.wgz.bo.res.WgzAppApplyForPayrollSettlementListRes;
import com.ruoyi.wgz.bo.res.WgzAppUserApplyForPayrollSettlementDetails;
import com.ruoyi.wgz.domain.WgzPayCalculation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
@ -88,6 +91,11 @@ public interface IWgzPayCalculationService extends IServicePlus<WgzPayCalculatio
*/
List<WgzPayCalculation> findByUserIdRecruitIdNewestData(Long userId, Long recruitId);
/**
* 用户申请结算(详情)
*/
WgzAppUserApplyForPayrollSettlementDetails userApplyForPayrollSettlementDetails(Long id);
/**
* 查询列表
*/

View File

@ -207,6 +207,7 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
} else {
wgzAttendance.setClockInTime(now);
LocalTime beginWorkTime = appById.getBeginWorkTime(); //上班
wgzAttendance.setExceptionType("0");
if (!localTime.isBefore(beginWorkTime)) {
wgzAttendance.setLate(1); //迟到
wgzAttendance.setLateTime(now);
@ -322,15 +323,15 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
WgzAppPunchTheCalendarRecordTwo two = new WgzAppPunchTheCalendarRecordTwo().setId(wa.getId());
LocalDate clockDate = wa.getDate();
if (clockDate.equals(date)) {
//上班
if (wa.getClockInTime() != null || wa.getMissedIn() == 1 || wa.getLeaveMarkId() != 0) {
// 上班
if (wa.getClockInTime() != null || wa.getMissedIn() == 1 || (wa.getLeaveMarkId() != null && wa.getLeaveMarkId() != 0)) {
two.setNum(1);
two.setSb(sbOrXb(wa, 1));
}
//下班
if (wa.getClockOutTime() != null || wa.getMissedOut()== 1 || wa.getLeaveMarkId() != 0) {
// 下班
if (wa.getClockOutTime() != null || wa.getMissedOut() == 1 || (wa.getLeaveMarkId() != null && wa.getLeaveMarkId() != 0)) {
two.setNum(2);
if (wa.getClockInTime() != null && wa.getClockOutTime() != null ) {
if (wa.getClockInTime() != null && wa.getClockOutTime() != null) {
two.setManHour(calculateWorkingHours(wa.getClockInTime(), wa.getClockOutTime()));
}
two.setXb(sbOrXb(wa, 2));

View File

@ -180,7 +180,11 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
}
//2、查询当前人员指定日期的所有日报情况
Long appUserId = SecurityUtils.getAppUserId();
LambdaQueryWrapper<WgzDailyClock> apply = new LambdaQueryWrapper<WgzDailyClock>().eq(WgzDailyClock::getUserId, appUserId).apply("DATE_FORMAT(dily_time, '%Y-%m') = {0}", req.getYearMonth());
BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(appUserId);
LambdaQueryWrapper<WgzDailyClock> apply = new LambdaQueryWrapper<WgzDailyClock>()
.eq(WgzDailyClock::getRecruitId, by.getRecruitId())
.eq(WgzDailyClock::getUserId, appUserId)
.apply("DATE_FORMAT(dily_time, '%Y-%m') = {0}", req.getYearMonth());
List<WgzDailyClock> wgzDailyClocks = baseMapper.selectList(apply);
//3、查看当前人、当前项目、当前月是否有请假
Map<LocalDate, LocalDate> ll = iWgzLeaveService.selectByUserCancelLeave(req.getYearMonth());
@ -204,8 +208,22 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
}
}
});
//4、获取当前务工者的招工信息的主题及招工创建人的基本信息
BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(SecurityUtils.getAppUserId());
//5、查看fh的key最大和最小的日期之间差哪些日期然后补齐数据
LocalDate minDate = fh.keySet().stream().map(LocalDate::parse).min(LocalDate::compareTo).orElse(null);
LocalDate now = LocalDate.now();
if (minDate != null){
LocalDate temp = minDate;
while (!temp.isAfter(now)) {
//判断当前日期是否存在fh的key,存在跳過,不存在就添加
if (!fh.containsKey(temp.toString())) {
fh.put(temp.toString(),new WgzAppAttachmentAcquisitionTwo().setStatus("1"));
}
temp = temp.plusDays(1);
}
}
//6、获取当前务工者的招工信息的主题及招工创建人的基本信息
BgtProjectRecruit appById = iBgtProjectRecruitService.getAppById(by.getRecruitId());
BgtUser one = iBgtUserService.getOne(
new LambdaQueryWrapper<BgtUser>().

View File

@ -35,10 +35,12 @@ import com.ruoyi.wgz.bo.WgzPayCalculationQueryBo;
import com.ruoyi.wgz.bo.req.WgzAppApplyForPayrollSettlementListReq;
import com.ruoyi.wgz.bo.req.WgzApplyForPayrollSettlementAddReq;
import com.ruoyi.wgz.bo.res.WgzAppApplyForPayrollSettlementListRes;
import com.ruoyi.wgz.bo.res.WgzAppUserApplyForPayrollSettlementDetails;
import com.ruoyi.wgz.domain.*;
import com.ruoyi.wgz.mapper.WgzPayCalculationMapper;
import com.ruoyi.wgz.service.*;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.xmlbeans.impl.validator.ValidatingXMLStreamReader;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -368,6 +370,21 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpl<WgzPayCalculat
return baseMapper.selectList(eq);
}
@Override
public WgzAppUserApplyForPayrollSettlementDetails userApplyForPayrollSettlementDetails(Long id) {
WgzAppUserApplyForPayrollSettlementDetails wgz = new WgzAppUserApplyForPayrollSettlementDetails();
//1、获取结算详情
WgzPayCalculation wgzPayCalculation = baseMapper.selectById(id);
BeanUtils.copyProperties(wgzPayCalculation, wgz);
//2、获取附件信息
List<WgzPayCalculationFiles> files = iWgzPayCalculationFilesService.list(
Wrappers.<WgzPayCalculationFiles>lambdaQuery()
.eq(WgzPayCalculationFiles::getCalculationId, id)
);
wgz.setFiles(files);
return wgz;
}
@Override
public TableDataInfo<WgzAppApplyForPayrollSettlementListRes> appQueryPageList(BgtPayCalculationListDTO dto) {
dto.setAuditorUserId(SecurityUtils.getAppUserId());