Merge remote-tracking branch 'origin/master'

# Conflicts:
#	ruoyi-system/src/main/java/com/ruoyi/bgt/domain/BgtProjectRecruit.java
This commit is contained in:
2025-02-20 13:53:22 +08:00
35 changed files with 1040 additions and 45 deletions

View File

@ -0,0 +1,69 @@
package com.ruoyi.web.controller.bgt;
import com.ruoyi.bgt.domain.BgtWageApplication;
import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationDetailVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationVO;
import com.ruoyi.bgt.service.IBgtWageApplicationService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
/**
* 包工头工资申请Controller
*
* @author ruoyi
* @date 2025-02-20
*/
@Api(value = "App包工头工资申请控制器", tags = {"App包工头工资申请管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/app/bgt/application")
public class AppBgtWageApplicationController extends BaseController {
private final IBgtWageApplicationService iBgtWageApplicationService;
/**
* 查询包工头工资申请列表
*/
@ApiOperation("App查询包工头工资申请列表")
@GetMapping("/list")
public TableDataInfo<BgtWageApplicationVO> list(@Validated BgtWageApplicationQueryDTO dto) {
return iBgtWageApplicationService.appQueryPageList(dto);
}
/**
* 获取包工头工资申请详细信息
*/
@ApiOperation("App获取包工头工资申请详细信息")
@GetMapping("/{id}")
public AjaxResult<BgtWageApplicationDetailVO> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return AjaxResult.success(iBgtWageApplicationService.appQueryById(id));
}
/**
* 新增包工头工资申请
*/
@ApiOperation("新增包工头工资申请")
@PreAuthorize("@ss.hasPermi('bgt:application:add')")
@Log(title = "包工头工资申请", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping()
public AjaxResult<Void> add(@Validated @RequestBody BgtWageApplication bo) {
return toAjax(iBgtWageApplicationService.insert(bo) ? 1 : 0);
}
}

View File

@ -0,0 +1,108 @@
package com.ruoyi.web.controller.bgt;
import java.util.List;
import java.util.Arrays;
import com.ruoyi.bgt.domain.BgtWageApplication;
import lombok.RequiredArgsConstructor;
import javax.validation.constraints.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.bgt.bo.BgtWageApplicationQueryBo;
import com.ruoyi.bgt.service.IBgtWageApplicationService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 包工头工资申请Controller
*
* @author ruoyi
* @date 2025-02-20
*/
@Api(value = "包工头工资申请控制器", tags = {"包工头工资申请管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/bgt/application")
public class BgtWageApplicationController extends BaseController {
private final IBgtWageApplicationService iBgtWageApplicationService;
/**
* 查询包工头工资申请列表
*/
@ApiOperation("查询包工头工资申请列表")
@PreAuthorize("@ss.hasPermi('bgt:application:list')")
@GetMapping("/list")
public TableDataInfo<BgtWageApplication> list(@Validated BgtWageApplicationQueryBo bo) {
return iBgtWageApplicationService.queryPageList(bo);
}
/**
* 导出包工头工资申请列表
*/
@ApiOperation("导出包工头工资申请列表")
@PreAuthorize("@ss.hasPermi('bgt:application:export')")
@Log(title = "包工头工资申请", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult<BgtWageApplication> export(@Validated BgtWageApplicationQueryBo bo) {
List<BgtWageApplication> list = iBgtWageApplicationService.queryList(bo);
ExcelUtil<BgtWageApplication> util = new ExcelUtil<BgtWageApplication>(BgtWageApplication.class);
return util.exportExcel(list, "包工头工资申请");
}
/**
* 获取包工头工资申请详细信息
*/
@ApiOperation("获取包工头工资申请详细信息")
@PreAuthorize("@ss.hasPermi('bgt:application:query')")
@GetMapping("/{id}")
public AjaxResult<BgtWageApplication> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return AjaxResult.success(iBgtWageApplicationService.queryById(id));
}
/**
* 新增包工头工资申请
*/
@ApiOperation("新增包工头工资申请")
@PreAuthorize("@ss.hasPermi('bgt:application:add')")
@Log(title = "包工头工资申请", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping()
public AjaxResult<Void> add(@Validated @RequestBody BgtWageApplication bo) {
return toAjax(iBgtWageApplicationService.insert(bo) ? 1 : 0);
}
/**
* 修改包工头工资申请
*/
@ApiOperation("修改包工头工资申请")
@PreAuthorize("@ss.hasPermi('bgt:application:edit')")
@Log(title = "包工头工资申请", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
public AjaxResult<Void> edit(@Validated @RequestBody BgtWageApplication bo) {
return toAjax(iBgtWageApplicationService.update(bo) ? 1 : 0);
}
/**
* 删除包工头工资申请
*/
@ApiOperation("删除包工头工资申请")
@PreAuthorize("@ss.hasPermi('bgt:application:remove')")
@Log(title = "包工头工资申请" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iBgtWageApplicationService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
}
}

View File

@ -0,0 +1,33 @@
package com.ruoyi.common.enums;
/**
* 审核状态
*
* @author ruoyi
*/
public enum AuditStatus
{
AUDIT("1", "审核中"),
PASS("2", "已审核"),
REFUSE("3", "未通过"),
;
private final String code;
private final String info;
AuditStatus(String code, String info)
{
this.code = code;
this.info = info;
}
public String getCode()
{
return code;
}
public String getInfo()
{
return info;
}
}

View File

@ -1,7 +1,7 @@
package com.ruoyi.common.enums;
/**
* 用户状态
* 项目任务状态
*
* @author ruoyi
*/

View File

@ -52,10 +52,10 @@ public class BgtProjectRecruitQueryBo extends BaseEntity {
private String recruitAddress;
/** 招工金额 */
@ApiModelProperty("招工金额")
private Long recruitAmount;
private Integer recruitAmount;
/** 招工数量 */
@ApiModelProperty("招工数量")
private Long recruitStaffNum;
private Integer recruitStaffNum;
/** 招工开始时间 */
@ApiModelProperty("招工开始时间")
private String recruitBeginTime;

View File

@ -55,7 +55,7 @@ public class BgtProjectTaskProgressQueryBo extends BaseEntity {
private String uploader;
/** 进度 */
@ApiModelProperty("进度")
private Long progress;
private Integer progress;
/** 进度描述 */
@ApiModelProperty("进度描述")
private String progressDescribe;

View File

@ -0,0 +1,69 @@
package com.ruoyi.bgt.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 包工头工资申请分页查询对象 bgt_wage_application
*
* @author ruoyi
* @date 2025-02-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("包工头工资申请分页查询对象")
public class BgtWageApplicationQueryBo extends BaseEntity {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
/** 排序列 */
@ApiModelProperty("排序列")
private String orderByColumn;
/** 排序的方向desc或者asc */
@ApiModelProperty(value = "排序的方向", example = "asc,desc")
private String isAsc;
/** 项目ID */
@ApiModelProperty("项目ID")
private Long projectId;
/** 标段ID */
@ApiModelProperty("标段ID")
private Long sectionId;
/** 分包ID */
@ApiModelProperty("分包ID")
private Long subId;
/** 任务ID */
@ApiModelProperty("任务ID")
private Long taskId;
/** 申请人ID */
@ApiModelProperty("申请人ID")
private Long userId;
/** 申请金额 */
@ApiModelProperty("申请金额")
private Integer applicantAmount;
/** 用工情况 */
@ApiModelProperty("用工情况")
private String employmentSituation;
/** 完工情况 */
@ApiModelProperty("完工情况")
private String completionSituation;
/** 任务情况 */
@ApiModelProperty("任务情况")
private String taskSituation;
/** 审核状态1审核中 2已审核 3未审核 */
@ApiModelProperty("审核状态1审核中 2已审核 3未审核")
private String auditStatus;
/** 审核人Id */
@ApiModelProperty("审核人Id")
private Long reviewerId;
}

View File

@ -89,7 +89,7 @@ public class BgtProjectRecruit implements Serializable {
*/
@Excel(name = "招工数量")
@ApiModelProperty("招工数量")
private Long recruitStaffNum;
private Integer recruitStaffNum;
/**
* 招工开始时间

View File

@ -69,7 +69,7 @@ public class BgtProjectTaskProgress implements Serializable {
/** 进度 */
@Excel(name = "进度")
@ApiModelProperty("进度")
private Long progress;
private Integer progress;
/** 进度描述 */
@Excel(name = "进度描述")

View File

@ -0,0 +1,126 @@
package com.ruoyi.bgt.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
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.time.LocalDateTime;
/**
* 包工头工资申请对象 bgt_wage_application
*
* @author ruoyi
* @date 2025-02-20
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("bgt_wage_application")
@ApiModel("包工头工资申请视图对象")
public class BgtWageApplication implements Serializable {
private static final long serialVersionUID=1L;
/** 主键ID */
@ApiModelProperty("主键ID")
@TableId(value = "id")
private Long id;
/** 项目ID */
@Excel(name = "项目ID")
@ApiModelProperty("项目ID")
private Long projectId;
/** 标段ID */
@Excel(name = "标段ID")
@ApiModelProperty("标段ID")
private Long sectionId;
/** 分包ID */
@Excel(name = "分包ID")
@ApiModelProperty("分包ID")
private Long subId;
/** 任务ID */
@Excel(name = "任务ID")
@ApiModelProperty("任务ID")
private Long taskId;
/** 申请人ID */
@Excel(name = "申请人ID")
@ApiModelProperty("申请人ID")
private Long userId;
/** 申请金额 */
@Excel(name = "申请金额")
@ApiModelProperty("申请金额")
private Integer applicantAmount;
/** 用工情况 */
@Excel(name = "用工情况")
@ApiModelProperty("用工情况")
private String employmentSituation;
/** 完工情况 */
@Excel(name = "完工情况")
@ApiModelProperty("完工情况")
private String completionSituation;
/** 任务情况 */
@Excel(name = "任务情况")
@ApiModelProperty("任务情况")
private String taskSituation;
/** 审核状态1审核中 2已审核 3未审核 */
@Excel(name = "审核状态" , readConverterExp = "1=审核中,2=已审核,3=未审核")
@ApiModelProperty("审核状态1审核中 2已审核 3未审核")
private String auditStatus;
/** 审核人Id */
@Excel(name = "审核人Id")
@ApiModelProperty("审核人Id")
private Long reviewerId;
/** 删除标志0代表存在 2代表删除 */
@Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除")
@ApiModelProperty("删除标志0代表存在 2代表删除")
private String delFlag;
/** 创建者 */
@Excel(name = "创建者")
@ApiModelProperty("创建者")
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 创建时间 */
@Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 更新者 */
@Excel(name = "更新者")
@ApiModelProperty("更新者")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/** 更新时间 */
@Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
/** 备注 */
@Excel(name = "备注")
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,41 @@
package com.ruoyi.bgt.domain.dto;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 包工头工资申请分页查询对象 bgt_wage_application
*
* @author ruoyi
* @date 2025-02-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("App包工头工资申请分页查询对象")
public class BgtWageApplicationQueryDTO extends BaseEntity {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("任务ID")
private Long taskId;
@ApiModelProperty("任务名")
private String taskName;
/** 申请人ID */
@ApiModelProperty("申请人ID")
private Long userId;
/** 审核状态1审核中 2已审核 3未审核 */
@ApiModelProperty("审核状态1审核中 2已审核 3未通过")
private String auditStatus;
}

View File

@ -55,10 +55,10 @@ public class BgtProjectRecruitDetailVO implements Serializable {
private String recruitAddress;
@ApiModelProperty("招工金额")
private Long recruitAmount;
private Integer recruitAmount;
@ApiModelProperty("招工数量")
private Long recruitStaffNum;
private Integer recruitStaffNum;
@ApiModelProperty("招工开始时间")
private String recruitBeginTime;

View File

@ -39,10 +39,10 @@ public class BgtProjectRecruitVO implements Serializable {
private String recruitAddress;
@ApiModelProperty("招工金额")
private Long recruitAmount;
private Integer recruitAmount;
@ApiModelProperty("招工数量")
private Long recruitStaffNum;
private Integer recruitStaffNum;
@ApiModelProperty("招工要求")
private String recruitRequirement;

View File

@ -47,10 +47,10 @@ public class BgtProjectTaskProgressDetailVO implements Serializable {
private String uploader;
@ApiModelProperty("进度")
private Long progress;
private Integer progress;
@ApiModelProperty("用工数量")
private Long taskStaffNum;
private Integer taskStaffNum;
@ApiModelProperty("审核状态1审核中 2已审核 3未审核")
private String auditStatus;

View File

@ -41,10 +41,10 @@ public class BgtProjectTaskProgressVO implements Serializable {
private String uploader;
@ApiModelProperty("进度")
private Long progress;
private Integer progress;
@ApiModelProperty("用工数量")
private Long taskStaffNum;
private Integer taskStaffNum;
@ApiModelProperty("审核状态1审核中 2已审核 3未审核")
private String auditStatus;

View File

@ -0,0 +1,71 @@
package com.ruoyi.bgt.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 包工头工资申请分页查询对象 bgt_wage_application
*
* @author ruoyi
* @date 2025-02-20
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("App包工头工资申请详情视图对象")
public class BgtWageApplicationDetailVO {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("项目名")
private String projectName;
@ApiModelProperty("任务名")
private String taskName;
@ApiModelProperty("任务地址")
private String taskAddress;
@ApiModelProperty("用工数量")
private Integer taskStaffNum;
@ApiModelProperty("申请金额")
private Integer applicantAmount;
@ApiModelProperty("申请人")
private String username;
@ApiModelProperty("申请时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@ApiModelProperty("联系电话")
private String phone;
@ApiModelProperty("银行")
private String bank;
@ApiModelProperty("银行卡号")
private String cardNo;
@ApiModelProperty("用工情况")
private String employmentSituation;
@ApiModelProperty("完工情况")
private String completionSituation;
@ApiModelProperty("任务情况")
private String taskSituation;
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,35 @@
package com.ruoyi.bgt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 包工头工资申请分页查询对象 bgt_wage_application
*
* @author ruoyi
* @date 2025-02-20
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("App包工头申请列表对象")
public class BgtWageApplicationListVO {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("申请人")
private String username;
@ApiModelProperty("申请金额")
private Integer applicantAmount;
@ApiModelProperty("审核状态1审核中 2已审核 3未审核")
private String auditStatus;
}

View File

@ -0,0 +1,51 @@
package com.ruoyi.bgt.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 包工头工资申请分页查询对象 bgt_wage_application
*
* @author ruoyi
* @date 2025-02-20
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("App包工头工资申请分页视图对象")
public class BgtWageApplicationVO {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("项目名")
private String projectName;
@ApiModelProperty("申请人")
private String username;
@ApiModelProperty("申请金额")
private Integer applicantAmount;
@ApiModelProperty("申请时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@ApiModelProperty("任务名")
private String taskName;
@ApiModelProperty("用工数量")
private Integer taskStaffNum;
@ApiModelProperty("任务地址")
private String taskAddress;
}

View File

@ -0,0 +1,28 @@
package com.ruoyi.bgt.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.bgt.domain.BgtWageApplication;
import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationVO;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 包工头工资申请Mapper接口
*
* @author ruoyi
* @date 2025-02-20
*/
// 如使需切换数据源 请勿使用缓存 会造成数据不一致现象
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
public interface BgtWageApplicationMapper extends BaseMapperPlus<BgtWageApplication> {
Page<BgtWageApplicationVO> appQueryPageList(@Param("page") Page<BgtWageApplicationQueryDTO> page, @Param("dto") BgtWageApplicationQueryDTO dto);
List<BgtWageApplicationListVO> appQueryList(@Param("dto") BgtWageApplicationQueryDTO dto);
}

View File

@ -63,8 +63,11 @@ public interface IBgtProjectTaskProgressService extends IServicePlus<BgtProjectT
/**
* app查询单个
* @return
*/
BgtProjectTaskProgressDetailVO appQueryById(Long id);
/**
* 获取最新项目进度
*/
Integer getLastProgress(Long taskId);
}

View File

@ -58,9 +58,6 @@ public interface IBgtUserService extends IServicePlus<BgtUser> {
/**
* 通过电话查询用户
*
* @param phone 电话
* @return 用户对象信息
*/
BgtUser selectUserByPhone(String phone);
@ -71,4 +68,9 @@ public interface IBgtUserService extends IServicePlus<BgtUser> {
Boolean realNameAuthentication(@Validated @RequestBody UserRealNameAuthenticationDTO dto);
/**
* 通过唯一标识查询用户
*/
BgtUser selectUserByUserId(Long userId);
}

View File

@ -0,0 +1,74 @@
package com.ruoyi.bgt.service;
import com.ruoyi.bgt.bo.BgtWageApplicationQueryBo;
import com.ruoyi.bgt.domain.BgtWageApplication;
import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationDetailVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationVO;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import java.util.Collection;
import java.util.List;
/**
* 包工头工资申请Service接口
*
* @author ruoyi
* @date 2025-02-20
*/
public interface IBgtWageApplicationService extends IServicePlus<BgtWageApplication> {
/**
* 查询单个
* @return
*/
BgtWageApplication queryById(Long id);
/**
* 查询列表
*/
TableDataInfo<BgtWageApplication> queryPageList(BgtWageApplicationQueryBo bo);
/**
* 查询列表
*/
List<BgtWageApplication> queryList(BgtWageApplicationQueryBo bo);
/**
* 根据新增业务对象插入包工头工资申请
* @param bo 包工头工资申请新增业务对象
* @return
*/
Boolean insert(BgtWageApplication bo);
/**
* 根据编辑业务对象修改包工头工资申请
* @param bo 包工头工资申请编辑业务对象
* @return
*/
Boolean update(BgtWageApplication bo);
/**
* 校验并删除数据
* @param ids 主键集合
* @param isValid 是否校验,true-删除前校验,false-不校验
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* app查询列表
*/
TableDataInfo<BgtWageApplicationVO> appQueryPageList(BgtWageApplicationQueryDTO dto);
/**
* app查询单个
*/
BgtWageApplicationDetailVO appQueryById(Long id);
/**
* 查询不分页列表
*/
List<BgtWageApplicationListVO> appQueryList(BgtWageApplicationQueryDTO dto);
}

View File

@ -1,6 +1,7 @@
package com.ruoyi.bgt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -129,4 +130,13 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl<BgtProjec
bean.setTaskStaffNum(task.getTaskStaffNum());
return bean;
}
@Override
public Integer getLastProgress(Long taskId) {
LambdaQueryWrapper<BgtProjectTaskProgress> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BgtProjectTaskProgress::getTaskId, taskId);
wrapper.orderByDesc(BgtProjectTaskProgress::getProgress);
List<BgtProjectTaskProgress> list = baseMapper.selectList(wrapper);
return CollectionUtil.isEmpty(list)?0:list.get(0).getProgress();
}
}

View File

@ -129,4 +129,9 @@ public class BgtUserServiceImpl extends ServicePlusImpl<BgtUserMapper, BgtUser>
annexService.insertBatch(dto.getAnnexList());
return baseMapper.updateById(bgtUser)>0;
}
@Override
public BgtUser selectUserByUserId(Long userId) {
return baseMapper.selectOne(new LambdaQueryWrapper<BgtUser>().eq(BgtUser::getUserId, userId));
}
}

View File

@ -0,0 +1,148 @@
package com.ruoyi.bgt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.bgt.bo.BgtWageApplicationQueryBo;
import com.ruoyi.bgt.domain.BgtWageApplication;
import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationDetailVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationVO;
import com.ruoyi.bgt.mapper.BgtWageApplicationMapper;
import com.ruoyi.bgt.service.IBgtUserService;
import com.ruoyi.bgt.service.IBgtWageApplicationService;
import com.ruoyi.common.core.domain.entity.BgtUser;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.fbs.domain.FbsProjectTask;
import com.ruoyi.fbs.service.IFbsProjectTaskService;
import com.ruoyi.zbf.domain.ZbfProject;
import com.ruoyi.zbf.service.IZbfProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 包工头工资申请Service业务层处理
*
* @author ruoyi
* @date 2025-02-20
*/
@Service
public class BgtWageApplicationServiceImpl extends ServicePlusImpl<BgtWageApplicationMapper, BgtWageApplication> implements IBgtWageApplicationService {
@Autowired
private IZbfProjectService projectService;
@Autowired
private IFbsProjectTaskService taskService;
@Autowired
private IBgtUserService bgtUserService;
@Override
public BgtWageApplication queryById(Long id){
return getById(id);
}
@Override
public TableDataInfo<BgtWageApplication> queryPageList(BgtWageApplicationQueryBo bo) {
Page<BgtWageApplication> result = page(PageUtils.buildPage(), buildQueryWrapper(bo));
return PageUtils.buildDataInfo(result);
}
@Override
public List<BgtWageApplication> queryList(BgtWageApplicationQueryBo bo) {
return list(buildQueryWrapper(bo));
}
private LambdaQueryWrapper<BgtWageApplication> buildQueryWrapper(BgtWageApplicationQueryBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BgtWageApplication> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getProjectId() != null, BgtWageApplication::getProjectId, bo.getProjectId());
lqw.eq(bo.getSectionId() != null, BgtWageApplication::getSectionId, bo.getSectionId());
lqw.eq(bo.getSubId() != null, BgtWageApplication::getSubId, bo.getSubId());
lqw.eq(bo.getTaskId() != null, BgtWageApplication::getTaskId, bo.getTaskId());
lqw.eq(bo.getUserId() != null, BgtWageApplication::getUserId, bo.getUserId());
lqw.eq(bo.getApplicantAmount() != null, BgtWageApplication::getApplicantAmount, bo.getApplicantAmount());
lqw.eq(StrUtil.isNotBlank(bo.getEmploymentSituation()), BgtWageApplication::getEmploymentSituation, bo.getEmploymentSituation());
lqw.eq(StrUtil.isNotBlank(bo.getCompletionSituation()), BgtWageApplication::getCompletionSituation, bo.getCompletionSituation());
lqw.eq(StrUtil.isNotBlank(bo.getTaskSituation()), BgtWageApplication::getTaskSituation, bo.getTaskSituation());
lqw.eq(StrUtil.isNotBlank(bo.getAuditStatus()), BgtWageApplication::getAuditStatus, bo.getAuditStatus());
lqw.eq(bo.getReviewerId() != null, BgtWageApplication::getReviewerId, bo.getReviewerId());
return lqw;
}
@Override
public Boolean insert(BgtWageApplication bo) {
BgtWageApplication add = BeanUtil.toBean(bo, BgtWageApplication.class);
validEntityBeforeSave(add);
return save(add);
}
@Override
public Boolean update(BgtWageApplication bo) {
BgtWageApplication update = BeanUtil.toBean(bo, BgtWageApplication.class);
validEntityBeforeSave(update);
return updateById(update);
}
/**
* 保存前的数据校验
*
* @param entity 实体类数据
*/
private void validEntityBeforeSave(BgtWageApplication entity){
//TODO 做一些数据校验,如唯一约束
}
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return removeByIds(ids);
}
@Override
public TableDataInfo<BgtWageApplicationVO> appQueryPageList(BgtWageApplicationQueryDTO dto) {
Page<BgtWageApplicationQueryDTO> queryDTOPage = new Page<>();
queryDTOPage.setCurrent(dto.getPageNum());
queryDTOPage.setSize(dto.getPageSize());
Page<BgtWageApplicationVO> queryVOPage = baseMapper.appQueryPageList(queryDTOPage, dto);
return PageUtils.buildDataInfo(queryVOPage);
}
@Override
public BgtWageApplicationDetailVO appQueryById(Long id) {
BgtWageApplication application = getById(id);
BgtWageApplicationDetailVO detailVO = BeanUtil.copyProperties(application, BgtWageApplicationDetailVO.class);
//项目
ZbfProject project = projectService.getById(application.getProjectId());
detailVO.setProjectName(project.getProjectName());
//任务
FbsProjectTask task = taskService.getById(application.getTaskId());
detailVO.setTaskAddress(task.getTaskAddress());
detailVO.setTaskName(task.getTaskName());
detailVO.setTaskStaffNum(task.getTaskStaffNum());
//人员
BgtUser bgtUser = bgtUserService.selectUserByUserId(application.getUserId());
detailVO.setBank(bgtUser.getBank());
detailVO.setCardNo(bgtUser.getCardNo());
detailVO.setPhone(bgtUser.getPhone());
return detailVO;
}
@Override
public List<BgtWageApplicationListVO> appQueryList(BgtWageApplicationQueryDTO dto) {
return baseMapper.appQueryList(dto);
}
}

View File

@ -49,10 +49,10 @@ public class FbsProjectTaskQueryBo extends BaseEntity {
private String taskAddress;
/** 任务金额 */
@ApiModelProperty("任务金额")
private Long taskAmount;
private Integer taskAmount;
/** 用工数量 */
@ApiModelProperty("用工数量")
private Long taskStaffNum;
private Integer taskStaffNum;
/** 任务开始时间 */
@ApiModelProperty("任务开始时间")
private String taskBeginTime;

View File

@ -59,12 +59,12 @@ public class FbsProjectTask implements Serializable {
/** 任务金额 */
@Excel(name = "任务金额")
@ApiModelProperty("任务金额")
private Long taskAmount;
private Integer taskAmount;
/** 用工数量 */
@Excel(name = "用工数量")
@ApiModelProperty("用工数量")
private Long taskStaffNum;
private Integer taskStaffNum;
/** 任务开始时间 */
@Excel(name = "任务开始时间")

View File

@ -2,6 +2,7 @@ package com.ruoyi.fbs.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -27,11 +28,11 @@ public class AppTaskDetailVO {
/** 任务金额 */
@ApiModelProperty("任务金额")
private Long taskAmount;
private Integer taskAmount;
/** 用工数量 */
@ApiModelProperty("用工数量")
private Long taskStaffNum;
private Integer taskStaffNum;
/** 任务开始时间 */
@ApiModelProperty("任务开始时间")
@ -68,9 +69,25 @@ public class AppTaskDetailVO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
//任务进度
@ApiModelProperty("任务进度")
private Integer progress;
//结算情况
@ApiModelProperty("任务收款金额")
private Integer taskReceiveAmount;
@ApiModelProperty("任务付款金额")
private Integer taskPaymentAmount;
@ApiModelProperty("收款申请列表")
private List<BgtWageApplicationListVO> wageApplicationList;
//务工者数量列表
@ApiModelProperty("申请者列表")
List<BgtProjectRecruitApplyVO> applylist;
List<BgtProjectRecruitApplyVO> applyList;
}

View File

@ -22,10 +22,10 @@ public class AppTaskVO {
private String taskAddress;
/** 任务金额 */
@ApiModelProperty("任务金额")
private Long taskAmount;
private Integer taskAmount;
/** 用工数量 */
@ApiModelProperty("用工数量")
private Long taskStaffNum;
private Integer taskStaffNum;
@ApiModelProperty("项目名")
private String projectName;
@ -36,4 +36,7 @@ public class AppTaskVO {
@ApiModelProperty("申请数量")
private Integer applyNum;
@ApiModelProperty("任务收款金额")
private Integer taskReceiveAmount;
}

View File

@ -9,10 +9,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.bgt.bo.BgtProjectRecruitQueryBo;
import com.ruoyi.bgt.domain.BgtProjectRecruit;
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO;
import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
import com.ruoyi.bgt.service.IBgtProjectTaskProgressService;
import com.ruoyi.bgt.service.IBgtWageApplicationService;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.AuditStatus;
import com.ruoyi.common.enums.ProjectTaskStatus;
import com.ruoyi.common.enums.RecruitApplyStatus;
import com.ruoyi.common.utils.PageUtils;
@ -46,16 +51,17 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
@Autowired
private IZbfProjectService zbfProjectService;
@Autowired
private IFbsProjectTaskApplyService taskApplyService;
@Autowired
@Lazy
private IBgtProjectRecruitService recruitService;
@Autowired
private IBgtProjectRecruitApplyService recruitApplyService;
@Autowired
private IBgtProjectTaskProgressService progressService;
@Autowired
private IBgtWageApplicationService wageApplicationService;
@Override
public FbsProjectTask queryById(Long id){
@ -144,7 +150,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
//项目信息
ZbfProject project = zbfProjectService.getById(byId.getProjectId());
appTaskDetailVO.setProjectName(project.getProjectName());
//申请者信息
//务工者数量列表
BgtProjectRecruitQueryBo bgtProjectRecruitQueryBo = new BgtProjectRecruitQueryBo();
bgtProjectRecruitQueryBo.setTaskId(id);
List<Long> recruitIds = recruitService.queryList(bgtProjectRecruitQueryBo).stream().map(BgtProjectRecruit::getId).collect(Collectors.toList());
@ -152,8 +158,25 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO();
bgtProjectRecruitApplyQueryDTO.setRecruitIds(recruitIds);
bgtProjectRecruitApplyQueryDTO.setStatus(RecruitApplyStatus.PASS.getCode());
appTaskDetailVO.setApplylist(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
appTaskDetailVO.setApplyList(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
//任务进度
appTaskDetailVO.setProgress(progressService.getLastProgress(id));
//结算情况
//收款申请列表
BgtWageApplicationQueryDTO wageDTO = new BgtWageApplicationQueryDTO();
wageDTO.setTaskId(id);
List<BgtWageApplicationListVO> wageList = wageApplicationService.appQueryList(wageDTO);
appTaskDetailVO.setWageApplicationList(wageList);
//收款金额
Integer taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus()))
.mapToInt(BgtWageApplicationListVO::getApplicantAmount)
.sum();
appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
//付款金额
//考勤情况
return appTaskDetailVO;

View File

@ -46,7 +46,7 @@ public class ZbfProjectSubcontractingQueryBo extends BaseEntity {
private String subDescribe;
/** 分包金额 */
@ApiModelProperty("分包金额")
private Long subAmount;
private Integer subAmount;
/** 资质要求 */
@ApiModelProperty("资质要求")
private String qualification;

View File

@ -54,7 +54,7 @@ public class ZbfProjectSubcontracting implements Serializable {
/** 分包金额 */
@Excel(name = "分包金额")
@ApiModelProperty("分包金额")
private Long subAmount;
private Integer subAmount;
/** 资质要求 */
@Excel(name = "资质要求")

View File

@ -31,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select bpr.id,bpr.recruit_name,bpr.recruit_address,bpr.recruit_amount,bpr.recruit_staff_num,bpr.recruit_requirement,bpr.create_time,fpt.task_name
from bgt_project_recruit bpr left join fbs_project_task fpt on bpr.task_id = fpt.id
<where>
<if test="dto.user_id != null ">
<if test="dto.userId != null ">
and bpr.user_id = #{dto.userId}
</if>
<if test="dto.recruitName != null and dto.recruitName != ''">

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.bgt.mapper.BgtWageApplicationMapper">
<resultMap type="com.ruoyi.bgt.domain.BgtWageApplication" id="BgtWageApplicationResult">
<result property="id" column="id"/>
<result property="projectId" column="project_id"/>
<result property="sectionId" column="section_id"/>
<result property="subId" column="sub_id"/>
<result property="taskId" column="task_id"/>
<result property="userId" column="user_id"/>
<result property="applicantAmount" column="applicant_amount"/>
<result property="employmentSituation" column="employment_situation"/>
<result property="completionSituation" column="completion_situation"/>
<result property="taskSituation" column="task_situation"/>
<result property="auditStatus" column="audit_status"/>
<result property="reviewerId" column="reviewer_id"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
</resultMap>
<select id="appQueryPageList" resultType="com.ruoyi.bgt.domain.vo.BgtWageApplicationVO">
select fpt.task_name,
fpt.task_staff_num,
fpt.task_address,
bwa.applicant_amount,
bwa.create_time,
bwa.id,
bu.username,
zp.project_name
from bgt_wage_application bwa
left join bgt_user bu on bwa.user_id = bu.user_id
left join zbf_project zp on zp.id = bwa.project_id
left join fbs_project_task fpt on fpt.id = bwa.task_id
<where>
<if test="dto.userId != null ">
and bwa.user_id = #{dto.userId}
</if>
<if test="dto.taskId != null ">
and bwa.task_id = #{dto.taskId}
</if>
<if test="dto.taskName != null and dto.taskName != ''">
and bpr.task_name like concat('%', #{dto.taskName}, '%')
</if>
<if test="dto.auditStatus != null and dto.auditStatus != '' ">
and bwa.audit_status = #{dto.auditStatus}
</if>
</where>
</select>
<select id="appQueryList" resultType="com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO">
select bwa.applicant_amount,
bwa.id,
bwa.audit_status,
bu.username
from bgt_wage_application bwa
left join bgt_user bu on bwa.user_id = bu.user_id
<where>
<if test="dto.userId != null ">
and bwa.user_id = #{dto.userId}
</if>
<if test="dto.taskId != null ">
and bwa.task_id = #{dto.taskId}
</if>
<if test="dto.auditStatus != null and dto.auditStatus != '' ">
and bwa.audit_status = #{dto.auditStatus}
</if>
</where>
</select>
</mapper>

View File

@ -30,17 +30,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="appQueryPageList" resultType="com.ruoyi.fbs.domain.vo.AppTaskVO">
select fpt.id,
fpt.task_name,
task_staff_num,
task_amount,
zp.project_name,
task_describe,
task_address,
fpt.create_time,
(select count(task_id) from fbs_project_task_apply where task_id = fpt.id) as applyNum
select fpt.id,
fpt.task_name,
fpt.task_staff_num,
fpt.task_amount,
zp.project_name,
fpt.task_describe,
fpt.task_address,
fpt.create_time,
(select count(task_id) from fbs_project_task_apply where task_id = fpt.id) as applyNum,
(select sum(applicant_amount) from bgt_wage_application where audit_status = '2'and task_id = fpt.id) as taskReceiveAmount
from fbs_project_task fpt
left join zbf_project zp on fpt.project_id = zp.id
left join zbf_project zp on fpt.project_id = zp.id
<where>
<if test="dto.taskIds != null and dto.taskIds.size() > 0">
and fpt.id IN