diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtPayCalculationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtPayCalculationController.java index f69e11f..46edc91 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtPayCalculationController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtPayCalculationController.java @@ -1,9 +1,12 @@ package com.ruoyi.web.controller.bgt; -import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailBaseVO; -import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailListVO; +import com.ruoyi.bgt.domain.dto.BgtApplyForWgzPayAddDTO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationListDTO; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationRecordDTO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationUpdateDTO; +import com.ruoyi.bgt.domain.vo.BgtApplyForWgzPayAddInfoVO; +import com.ruoyi.bgt.domain.vo.BgtPayCalculationDetailBaseVO; +import com.ruoyi.bgt.domain.vo.BgtPayCalculationDetailListVO; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; @@ -20,7 +23,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; -import java.util.List; /** * 工资结算Controller @@ -75,8 +77,24 @@ public class AppBgtPayCalculationController extends BaseController { @ApiOperation("总体考勤情况-工资结算-结算记录") @GetMapping("/record") - public AjaxResult> record(Long id, Long recruitId) { - return AjaxResult.success(iWgzPayCalculationService.record(id,recruitId)); + public TableDataInfo record(BgtPayCalculationRecordDTO dto) { + return iWgzPayCalculationService.record(dto); + } + + + @ApiOperation("包工头结算务工者剩余工资") + @Log(title = "包工头结算务工者剩余工资", businessType = BusinessType.INSERT) + @RepeatSubmit + @PostMapping("/bgtAdd") + public AjaxResult bgtAdd(@Validated @RequestBody BgtApplyForWgzPayAddDTO dto) { + return AjaxResult.success(iWgzPayCalculationService.bgtAdd(dto)); + } + + + @ApiOperation("总体考勤情况-工资结算-获取工资结算所需的信息") + @GetMapping("/payInfo") + public AjaxResult payInfo(Long userId, Long recruitId) { + return AjaxResult.success(iWgzPayCalculationService.payInfo(userId,recruitId)); } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/AuditStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/AuditStatus.java index 8acfdf9..f2e569f 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/AuditStatus.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/AuditStatus.java @@ -10,6 +10,7 @@ import java.util.List; */ public enum AuditStatus { + UNREAD("0","未读"), AUDIT("1", "审核中"), PASS("2", "已审核"), REFUSE("3", "未通过"), diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java index 9fdfb31..bb81971 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java @@ -43,4 +43,9 @@ public enum RecruitApplyStatus return Arrays.asList(BGT_PASS.getCode(),WGZ_PASS.getCode(),WORKING.getCode(), OUT_WORK.getCode()); } + //进场和立场 + public static List getWorkStatus(){ + return Arrays.asList(WORKING.getCode(), OUT_WORK.getCode()); + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtApplyForWgzPayAddDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtApplyForWgzPayAddDTO.java new file mode 100644 index 0000000..a62309a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtApplyForWgzPayAddDTO.java @@ -0,0 +1,73 @@ +package com.ruoyi.bgt.domain.dto; + + +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.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("包工头为务工者申请工资结算(新增)请求对象") +public class BgtApplyForWgzPayAddDTO implements Serializable { + + @ApiModelProperty("任务ID") + private Long taskId; + + @ApiModelProperty("招工ID") + private Long recruitId; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("任务地址") + private String taskAddress; + + @ApiModelProperty("招工名称") + private String recruitName; + + @ApiModelProperty("务工者ID") + private Long userId; + + @ApiModelProperty("申请人名称") + private String userName; + + @ApiModelProperty("进场时间") + private LocalDate entryTime; + + @ApiModelProperty("退场时间(注意:完成项目才填写退场时间)") + private LocalDate leaveTime; + + @ApiModelProperty("工资金额") + private BigDecimal recruitAmount; + + @ApiModelProperty("出勤天数") + private Integer num; + + @ApiModelProperty("务工状态") + private String workingState; + + @ApiModelProperty("联系电话") + private String phone; + + @ApiModelProperty("银行") + private String bank; + + @ApiModelProperty("银行卡号") + private String cardNo; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("附件实体数据") + private List payCalculation; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtMessageDetailDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtMessageDetailDTO.java index 5ffdb5e..7818cb1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtMessageDetailDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtMessageDetailDTO.java @@ -6,8 +6,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; -import java.io.Serializable; import java.time.LocalDate; /** @@ -31,6 +31,7 @@ public class BgtMessageDetailDTO { @ApiModelProperty("日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate date; @ApiModelProperty("大类型(字典bgt_message_large_type)") diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationRecordDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationRecordDTO.java new file mode 100644 index 0000000..bbb5e70 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationRecordDTO.java @@ -0,0 +1,36 @@ +package com.ruoyi.bgt.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * 工资结算分页查询对象 wgz_pay_calculation + * + * @author ruoyi + * @date 2025-02-21 + */ + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("包工头工资结算审核记录查询对象") +public class BgtPayCalculationRecordDTO { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + @ApiModelProperty("招工ID") + private Long recruitId; + + @ApiModelProperty("申请人ID") + private Long userId; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtApplyForWgzPayAddInfoVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtApplyForWgzPayAddInfoVO.java new file mode 100644 index 0000000..2eb3e16 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtApplyForWgzPayAddInfoVO.java @@ -0,0 +1,73 @@ +package com.ruoyi.bgt.domain.vo; + + +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.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("包工头为务工者申请工资结算基础信息对象") +public class BgtApplyForWgzPayAddInfoVO implements Serializable { + + @ApiModelProperty("任务ID") + private Long taskId; + + @ApiModelProperty("招工ID") + private Long recruitId; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("任务地址") + private String taskAddress; + + @ApiModelProperty("招工名称") + private String recruitName; + + @ApiModelProperty("务工者ID") + private Long userId; + + @ApiModelProperty("申请人名称") + private String userName; + + @ApiModelProperty("进场时间") + private LocalDate entryTime; + + @ApiModelProperty("退场时间(注意:完成项目才填写退场时间)") + private LocalDate leaveTime; + + @ApiModelProperty("工资金额") + private BigDecimal recruitAmount; + + @ApiModelProperty("出勤天数") + private Integer num; + + @ApiModelProperty("务工状态") + private String workingState; + + @ApiModelProperty("联系电话") + private String phone; + + @ApiModelProperty("银行") + private String bank; + + @ApiModelProperty("银行卡号") + private String cardNo; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("附件实体数据") + private List payCalculation; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtDailyClockDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtDailyClockDetailVO.java index a6b170c..dc2c67b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtDailyClockDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtDailyClockDetailVO.java @@ -71,4 +71,6 @@ public class BgtDailyClockDetailVO { @ApiModelProperty("已读|审核时间") private LocalDateTime auditorTime; + @ApiModelProperty("日报状态(0正常 1补卡)") + private String status; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtDailyClockListVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtDailyClockListVO.java index fae3ff3..e13dac2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtDailyClockListVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtDailyClockListVO.java @@ -33,5 +33,11 @@ public class BgtDailyClockListVO { @ApiModelProperty("姓名") private String username; + @ApiModelProperty("日报状态(0正常 1补卡)") + private String status; + + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtMessageDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtMessageDetailVO.java index 3d71c76..96743a5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtMessageDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtMessageDetailVO.java @@ -27,6 +27,10 @@ public class BgtMessageDetailVO implements Serializable { @ApiModelProperty("主键自增ID") private Long id; + @ApiModelProperty("发送人") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long senderId; + @ApiModelProperty("表ID") private Long tableId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailBaseVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailBaseVO.java similarity index 77% rename from ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailBaseVO.java rename to ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailBaseVO.java index 78685a4..264a5b5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailBaseVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailBaseVO.java @@ -1,4 +1,4 @@ -package com.ruoyi.bgt.domain.dto; +package com.ruoyi.bgt.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -43,4 +43,18 @@ public class BgtPayCalculationDetailBaseVO { @ApiModelProperty("剩余工资") private BigDecimal residueAmount; + + @ApiModelProperty("身份证号") + private String identityCard; + + + //结算工资需要的参数 + @ApiModelProperty("招工Id") + private Long recruitId; + + @ApiModelProperty("任务Id") + private Long taskId; + + @ApiModelProperty("务工者Id") + private Long userId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailListVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailListVO.java similarity index 96% rename from ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailListVO.java rename to ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailListVO.java index 200e033..fff1bae 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtPayCalculationDetailListVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtPayCalculationDetailListVO.java @@ -1,4 +1,4 @@ -package com.ruoyi.bgt.domain.dto; +package com.ruoyi.bgt.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java index 10869f7..ab48e09 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java @@ -146,4 +146,9 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus list = baseMapper.selectList(Wrappers.lambdaQuery().eq(BgtProjectRecruitApply::getTaskId, taskId) - .eq(BgtProjectRecruitApply::getUserId, userId)); + List list = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(BgtProjectRecruitApply::getTaskId, taskId) + .eq(BgtProjectRecruitApply::getUserId, userId) + .orderByDesc(BgtProjectRecruitApply::getCreateTime)); return CollectionUtil.isNotEmpty(list)?list.get(0):new BgtProjectRecruitApply(); } + + @Override + public BgtProjectRecruitApply getOneByUserIdAndRecruitId(Long userId, Long recruitId) { + + List list = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(BgtProjectRecruitApply::getRemark, recruitId) + .eq(BgtProjectRecruitApply::getUserId, userId) + .in(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.getWorkStatus()) + .orderByDesc(BgtProjectRecruitApply::getCreateTime)); + return list.get(0); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java index 41204ed..d48d76a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java @@ -185,7 +185,8 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl appQueryList() { return list(Wrappers.lambdaQuery() - .eq(BgtProjectRecruit::getUserId, SecurityUtils.getAppUserId())); + .eq(BgtProjectRecruit::getUserId, SecurityUtils.getAppUserId()) + .orderByDesc(BgtProjectRecruit::getCreateTime)); } @Override diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskVO.java index 2171002..e6eafd4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/AppTaskVO.java @@ -64,7 +64,7 @@ public class AppTaskVO { private LocalDateTime createTime; @ApiModelProperty("申请数量") - private Integer applyNum; + private Integer applyNum=0; @ApiModelProperty("判断标志") private Boolean myTask; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzPayCalculation.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzPayCalculation.java index 9577213..0e11545 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzPayCalculation.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzPayCalculation.java @@ -129,6 +129,9 @@ public class WgzPayCalculation implements Serializable { @ApiModelProperty("同意|拒绝时间") private LocalDateTime auditorTime; + @ApiModelProperty("申请人类型") + private String operatorType; + /** 删除标志(0代表存在 2代表删除) */ @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") @ApiModelProperty("删除标志(0代表存在 2代表删除)") diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java index 1bba5cf..a0c0dd6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzPayCalculationService.java @@ -1,9 +1,12 @@ package com.ruoyi.wgz.service; -import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailBaseVO; -import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailListVO; +import com.ruoyi.bgt.domain.dto.BgtApplyForWgzPayAddDTO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationListDTO; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationRecordDTO; import com.ruoyi.bgt.domain.dto.BgtPayCalculationUpdateDTO; +import com.ruoyi.bgt.domain.vo.BgtApplyForWgzPayAddInfoVO; +import com.ruoyi.bgt.domain.vo.BgtPayCalculationDetailBaseVO; +import com.ruoyi.bgt.domain.vo.BgtPayCalculationDetailListVO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.wgz.bo.WgzPayCalculationQueryBo; @@ -113,6 +116,9 @@ public interface IWgzPayCalculationService extends IServicePlus record(Long userId, Long recruitId); + TableDataInfo record(BgtPayCalculationRecordDTO dto); + Boolean bgtAdd(BgtApplyForWgzPayAddDTO dto); + + BgtApplyForWgzPayAddInfoVO payInfo(Long userId, Long recruitId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzDailyClockServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzDailyClockServiceImpl.java index cfc6670..4431368 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzDailyClockServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzDailyClockServiceImpl.java @@ -327,9 +327,9 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl list = iWgzPayCalculationMiddleService.list(Wrappers.lambdaQuery() + .eq(WgzPayCalculationMiddle::getCalculationId, dto.getId())); + if(CollectionUtils.isNotEmpty(list)){ + List collect = list.stream().map(WgzPayCalculationMiddle::getAttendanceId).collect(Collectors.toList()); + attendanceService.lambdaUpdate().in(WgzAttendance::getId,collect) + .set(WgzAttendance::getSettlement, 0).update(); + iWgzPayCalculationMiddleService.removeByIds(list.stream().map(WgzPayCalculationMiddle::getId).collect(Collectors.toList())); + } + } //发消息 HashMap mp = new HashMap<>(); mp.put("projectName",iBgtProjectRecruitService.getById(payCalculation.getRecruitId()).getRecruitName()); mp.put("auditor",SecurityUtils.getUsername()); - Map map = bgtMessage(mp, BGT_TYPE_PAY, AuditStatus.PASS.getCode().equals(dto.getAuditorType())); + Map map = bgtMessage(mp, BGT_TYPE_PAY, isPass); WgzMessage wgzMessage = new WgzMessage() .setSenderType(USERTYPE_BGT) .setSenderId(SecurityUtils.getAppUserId()) @@ -380,6 +389,7 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpllambdaQuery() .eq(BgtProjectRecruitApply::getRecruitId, recruitId).eq(BgtProjectRecruitApply::getUserId, userId) .last("limit 1")); @@ -410,10 +424,99 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpl record(Long userId, Long recruitId) { - List wgzPayCalculations = baseMapper.selectList(Wrappers.lambdaQuery() + public TableDataInfo record(BgtPayCalculationRecordDTO dto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(WgzPayCalculation::getUserId, dto.getUserId()) + .eq(WgzPayCalculation::getRecruitId, dto.getRecruitId()) + .eq(WgzPayCalculation::getAuditorUserId, SecurityUtils.getAppUserId()) + .in(WgzPayCalculation::getAuditorType,AuditStatus.getAudit()) + .orderByDesc(WgzPayCalculation::getCreateTime); + Page result = page(PageUtils.buildPage(), wrapper); + Page res = new Page<>(); + res.setRecords(BeanUtil.copyToList(result.getRecords(), BgtPayCalculationDetailListVO.class)); + res.setTotal(result.getTotal()); + return PageUtils.buildDataInfo(res); + } + + + @Override + @Transactional + public Boolean bgtAdd(BgtApplyForWgzPayAddDTO dto) { + + //添加申请 + WgzPayCalculation payCalculation = BeanUtil.copyProperties(dto, WgzPayCalculation.class); + payCalculation.setAuditorType(AuditStatus.PASS.getCode()); + payCalculation.setAuditorTime(LocalDateTime.now()); + payCalculation.setAuditorUserId(SecurityUtils.getAppUserId()); + payCalculation.setAuditorUserName(SecurityUtils.getUsername()); + payCalculation.setOperatorType(Constants.BGT); + boolean save = save(payCalculation); + + //修改标记,添加中间表 + List middleList = new ArrayList<>(); + + List list = iWgzAttendanceService.list(Wrappers.lambdaQuery() + .eq(WgzAttendance::getRecruitId, dto.getRecruitId()) + .eq(WgzAttendance::getSettlement, 0)); + for(WgzAttendance data : list) { + data.setSettlement(1); + WgzPayCalculationMiddle wgzPayCalculationMiddle = new WgzPayCalculationMiddle(); + wgzPayCalculationMiddle.setCalculationId(payCalculation.getId()); + wgzPayCalculationMiddle.setAttendanceId(data.getId()); + middleList.add(wgzPayCalculationMiddle); + } + iWgzAttendanceService.updateBatchById(list); + iWgzPayCalculationMiddleService.saveBatch(middleList); + + //修改其余未审批申请的状态 + List payList = list(Wrappers.lambdaQuery().eq(WgzPayCalculation::getAuditorType, AuditStatus.UNREAD.getCode()) + .eq(WgzPayCalculation::getUserId, dto.getUserId())); + if(CollectionUtil.isNotEmpty(payList)) { + payList.forEach(pay -> { + pay.setAuditorType(AuditStatus.REFUSE.getCode()); + }); + } + updateBatchById(payList); + return save; + } + + @Override + public BgtApplyForWgzPayAddInfoVO payInfo(Long userId, Long recruitId) { + BgtApplyForWgzPayAddInfoVO vo = new BgtApplyForWgzPayAddInfoVO(); + + //招工信息 + BgtProjectRecruit recruit = iBgtProjectRecruitService.getById(recruitId); + vo.setRecruitId(recruitId); + vo.setRecruitAmount(recruit.getRecruitAmount()); + vo.setRecruitName(recruit.getRecruitName()); + + //任务信息 + FbsProjectTask task = taskService.getById(recruit.getTaskId()); + vo.setTaskId(task.getId()); + vo.setTaskName(task.getTaskName()); + vo.setTaskAddress(task.getTaskAddress()); + + //申请信息 + BgtProjectRecruitApply recruitApply = iBgtProjectRecruitApplyService.getOneByUserIdAndRecruitId(userId, recruitId); + vo.setEntryTime(recruitApply.getEntryTime()); + vo.setLeaveTime(recruitApply.getLeaveTime()); + vo.setWorkingState(recruitApply.getStatus()); + + //出勤天数 + //总天数 + Integer i = attendanceService.attendanceDetail(userId, recruitId, null); + //已结算天数 + List list = list(Wrappers.lambdaQuery() .eq(WgzPayCalculation::getUserId, userId) - .eq(WgzPayCalculation::getRecruitId, recruitId)); - return BeanUtil.copyToList(wgzPayCalculations, BgtPayCalculationDetailListVO.class); + .eq(WgzPayCalculation::getRecruitId, recruitId) + .eq(WgzPayCalculation::getAuditorType, AuditStatus.PASS.getCode())); + if(CollectionUtil.isNotEmpty(list)) { + int sum = list.stream().mapToInt(WgzPayCalculation::getNum).sum(); + i = i - sum; + } + vo.setNum(i); + + //个人信息 + return vo; } } diff --git a/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskMapper.xml b/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskMapper.xml index 82dd2fb..7c03bd4 100644 --- a/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/fbs/FbsProjectTaskMapper.xml @@ -45,22 +45,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" fpt.task_describe, fpt.task_address, fpt.create_time, - #{dto.myTask} as myTask, - COALESCE(apply.applyNum, 0) as applyNum, - COALESCE(wage.taskReceiveAmount, 0) as taskReceiveAmount + taskApply.applyNum as applyNum, + wage.taskReceiveAmount as taskReceiveAmount, + #{dto.myTask} as myTask FROM fbs_project_task fpt LEFT JOIN zbf_project zp ON fpt.project_id = zp.id LEFT JOIN (SELECT task_id, COUNT(*) as applyNum FROM fbs_project_task_apply - GROUP BY task_id) - apply ON fpt.id = apply.task_id + GROUP BY task_id) taskApply ON fpt.id = taskApply.task_id LEFT JOIN (SELECT task_id, SUM(applicant_amount) as taskReceiveAmount FROM bgt_wage_application WHERE audit_status = '2' - GROUP BY task_id) - wage ON fpt.id = wage.task_id + GROUP BY task_id) wage ON fpt.id = wage.task_id AND NOT EXISTS ( diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml index 8086365..a4d1548 100644 --- a/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml @@ -53,22 +53,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" wdc.auditor_type, wdc.dily_time, wu.avatar_name, - wu.username + wu.username, + wu.status, + wu.create_time from wgz_daily_clock wdc left join wgz_user wu on wdc.user_id = wu.user_id where wdc.auditor_user_id = #{dto.auditorUserId} - and wdc.recruit_id in (select id from bgt_project_recruit where task_id = #{dto.taskId}) + + and wdc.recruit_id = #{dto.recruitId} + and wu.username like concat('%', #{dto.username}, '%') and wdc.auditor_type = #{dto.auditorType} - + and DATE(wdc.dily_time) = #{dto.dilyTime} order by wdc.create_time desc - diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzPayCalculationMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzPayCalculationMapper.xml index dce1793..bc851cc 100644 --- a/ruoyi-system/src/main/resources/mapper/wgz/WgzPayCalculationMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzPayCalculationMapper.xml @@ -182,13 +182,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where w.auditor_user_id = #{dto.auditorUserId} - and a.task_id = #{dto.taskId} + and w.task_id = #{dto.taskId} and w.user_name like concat('%', #{dto.userName}, '%') - AND bpra.auditor_type IN + AND w.auditor_type IN #{auditorType}