This commit is contained in:
zt
2025-02-19 18:36:44 +08:00
parent 8c58c1798d
commit 2228f914db
21 changed files with 396 additions and 132 deletions

View File

@ -1,6 +1,7 @@
package com.ruoyi.web.controller.bgt; package com.ruoyi.web.controller.bgt;
import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO;
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
@ -9,6 +10,9 @@ import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.wgz.bo.req.WgzAppPersonalBasicInformationReq;
import com.ruoyi.wgz.bo.res.WgzAppPersonalBasicInformationRes;
import com.ruoyi.wgz.service.IWgzUserService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -32,7 +36,7 @@ public class AppBgtProjectRecruitApplyController extends BaseController {
private final IBgtProjectRecruitApplyService iBgtProjectRecruitApplyService; private final IBgtProjectRecruitApplyService iBgtProjectRecruitApplyService;
private final IWgzUserService wgzUserService;
@ApiOperation("App务工者列表") @ApiOperation("App务工者列表")
@GetMapping("/list") @GetMapping("/list")
@ -40,10 +44,12 @@ public class AppBgtProjectRecruitApplyController extends BaseController {
return iBgtProjectRecruitApplyService.appQueryList(dto); return iBgtProjectRecruitApplyService.appQueryList(dto);
} }
@ApiOperation("App务工者个人详情")
@GetMapping()
public AjaxResult<WgzAppPersonalBasicInformationRes> userPersonalBasicInformation(@Validated WgzAppPersonalBasicInformationReq req) {
return AjaxResult.success(wgzUserService.userPersonalBasicInformation(req));
}
/**
* 新增包工头招工申请
*/
@ApiOperation("App务工者招工报名") @ApiOperation("App务工者招工报名")
@Log(title = "App务工者招工报名", businessType = BusinessType.INSERT) @Log(title = "App务工者招工报名", businessType = BusinessType.INSERT)
@RepeatSubmit @RepeatSubmit
@ -52,6 +58,14 @@ public class AppBgtProjectRecruitApplyController extends BaseController {
return toAjax(iBgtProjectRecruitApplyService.insert(bo) ? 1 : 0); return toAjax(iBgtProjectRecruitApplyService.insert(bo) ? 1 : 0);
} }
@ApiOperation("App同意申请")
@Log(title = "App同意申请", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
public AjaxResult<Void> consent(@Validated @RequestBody BgtProjectRecruitApplyConsentDTO dto) {
return toAjax(iBgtProjectRecruitApplyService.consent(dto));
}
} }

View File

@ -5,17 +5,14 @@ import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.fbs.domain.FbsProjectTaskApply; import com.ruoyi.fbs.domain.dto.TaskApplyDTO;
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService; import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/** /**
* 分包商项目任务申请Controller * 分包商项目任务申请Controller
@ -35,12 +32,20 @@ public class AppFbsProjectTaskApplyController extends BaseController {
/** /**
* 新增分包商项目任务申请 * 新增分包商项目任务申请
*/ */
@ApiOperation("App申请承接") @ApiOperation("App申请承接项目任务")
@Log(title = "App项目任务申请承接", businessType = BusinessType.INSERT) @Log(title = "App申请承接项目任务", businessType = BusinessType.INSERT)
@RepeatSubmit @RepeatSubmit
@PostMapping() @PostMapping()
public AjaxResult<Void> add(@Validated @RequestBody FbsProjectTaskApply bo) { public AjaxResult<Void> appTaskApply(@Validated @RequestBody TaskApplyDTO dto) {
return toAjax(iFbsProjectTaskApplyService.insert(bo) ? 1 : 0); return toAjax(iFbsProjectTaskApplyService.appTaskApply(dto) ? 1 : 0);
}
@ApiOperation("App取消申请项目任务")
@Log(title = "App取消申请项目任务" , businessType = BusinessType.DELETE)
@DeleteMapping()
public AjaxResult<Void> cancelApply(TaskApplyDTO dto) {
return toAjax(iFbsProjectTaskApplyService.cancelApply(dto) ? 1 : 0);
} }

View File

@ -140,10 +140,10 @@ public class Constants
/** /**
* 包工头用户标志 前缀 * 包工头用户标志 前缀
*/ */
public static final String BGT = "bgt_"; public static final String BGT = "bgt";
/** /**
* 务工者用户标志 前缀 * 务工者用户标志 前缀
*/ */
public static final String WGZ = "wgz_"; public static final String WGZ = "wgz";
} }

View File

@ -0,0 +1,33 @@
package com.ruoyi.common.enums;
/**
* 用户状态
*
* @author ruoyi
*/
public enum ProjectTaskStatus
{
APPLY("0", "申请中"),
PROGRESS("1", "进行中"),
COMPLETE("2", "已完成"),
;
private final String code;
private final String info;
ProjectTaskStatus(String code, String info)
{
this.code = code;
this.info = info;
}
public String getCode()
{
return code;
}
public String getInfo()
{
return info;
}
}

View File

@ -26,110 +26,156 @@ public class BgtProjectRecruit implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 主键ID */ /**
* 主键ID
*/
@ApiModelProperty("主键ID") @ApiModelProperty("主键ID")
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
/** 项目ID */ /**
* 项目ID
*/
@Excel(name = "项目ID") @Excel(name = "项目ID")
@ApiModelProperty("项目ID") @ApiModelProperty("项目ID")
private Long projectId; private Long projectId;
/** 标段ID */ /**
* 标段ID
*/
@Excel(name = "标段ID") @Excel(name = "标段ID")
@ApiModelProperty("标段ID") @ApiModelProperty("标段ID")
private Long sectionId; private Long sectionId;
/** 分包ID */ /**
* 分包ID
*/
@Excel(name = "分包ID") @Excel(name = "分包ID")
@ApiModelProperty("分包ID") @ApiModelProperty("分包ID")
private Long subId; private Long subId;
/** 任务ID */ /**
* 任务ID
*/
@Excel(name = "任务ID") @Excel(name = "任务ID")
@ApiModelProperty("任务ID") @ApiModelProperty("任务ID")
private Long taskId; private Long taskId;
/** 招工名称 */ /**
* 招工名称
*/
@Excel(name = "招工名称") @Excel(name = "招工名称")
@ApiModelProperty("招工名称") @ApiModelProperty("招工名称")
private String recruitName; private String recruitName;
/** 招工地址 */ /**
* 招工地址
*/
@Excel(name = "招工地址") @Excel(name = "招工地址")
@ApiModelProperty("招工地址") @ApiModelProperty("招工地址")
private String recruitAddress; private String recruitAddress;
/** 招工金额 */ /**
* 招工金额
*/
@Excel(name = "招工金额") @Excel(name = "招工金额")
@ApiModelProperty("招工金额") @ApiModelProperty("招工金额")
private Long recruitAmount; private Long recruitAmount;
/** 招工数量 */ /**
* 招工数量
*/
@Excel(name = "招工数量") @Excel(name = "招工数量")
@ApiModelProperty("招工数量") @ApiModelProperty("招工数量")
private Long recruitStaffNum; private Long recruitStaffNum;
/** 招工开始时间 */ /**
* 招工开始时间
*/
@Excel(name = "招工开始时间") @Excel(name = "招工开始时间")
@ApiModelProperty("招工开始时间") @ApiModelProperty("招工开始时间")
private String recruitBeginTime; private String recruitBeginTime;
/** 联系人 */ /**
* 联系人
*/
@Excel(name = "联系人") @Excel(name = "联系人")
@ApiModelProperty("联系人") @ApiModelProperty("联系人")
private String recruitContactPerson; private String recruitContactPerson;
/** 联系电话 */ /**
* 联系电话
*/
@Excel(name = "联系电话") @Excel(name = "联系电话")
@ApiModelProperty("联系电话") @ApiModelProperty("联系电话")
private String recruitContactPhone; private String recruitContactPhone;
/** 招工描述 */ /**
* 招工描述
*/
@Excel(name = "招工描述") @Excel(name = "招工描述")
@ApiModelProperty("招工描述") @ApiModelProperty("招工描述")
private String subDescribe; private String subDescribe;
/** 招工要求 */ /**
* 招工要求
*/
@Excel(name = "招工要求") @Excel(name = "招工要求")
@ApiModelProperty("招工要求") @ApiModelProperty("招工要求")
private String recruitRequirement; private String recruitRequirement;
@ApiModelProperty("上班时间")
private String beginWorkTime;
@ApiModelProperty("下班时间")
private String endWorkTime;
@ApiModelProperty("创建者ID") @ApiModelProperty("创建者ID")
private Long userId; private Long userId;
/** 删除标志0代表存在 2代表删除 */ /**
* 删除标志0代表存在 2代表删除
*/
@Excel(name = "删除标志", readConverterExp = "0=代表存在,2=代表删除") @Excel(name = "删除标志", readConverterExp = "0=代表存在,2=代表删除")
@ApiModelProperty("删除标志0代表存在 2代表删除") @ApiModelProperty("删除标志0代表存在 2代表删除")
// @TableLogic // @TableLogic
private String delFlag; private String delFlag;
/** 创建者 */ /**
* 创建者
*/
@Excel(name = "创建者") @Excel(name = "创建者")
@ApiModelProperty("创建者") @ApiModelProperty("创建者")
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private String createBy; private String createBy;
/** 创建时间 */ /**
* 创建时间
*/
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime; private LocalDateTime createTime;
/** 更新者 */ /**
* 更新者
*/
@Excel(name = "更新者") @Excel(name = "更新者")
@ApiModelProperty("更新者") @ApiModelProperty("更新者")
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy; private String updateBy;
/** 更新时间 */ /**
* 更新时间
*/
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间") @ApiModelProperty("更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime; private LocalDateTime updateTime;
/** 备注 */ /**
* 备注
*/
@Excel(name = "备注") @Excel(name = "备注")
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String remark; private String remark;

View File

@ -0,0 +1,36 @@
package com.ruoyi.bgt.domain.dto;
import com.ruoyi.common.domain.dto.AnnexDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 包工头招工申请对象 bgt_project_recruit_apply
*
* @author ruoyi
* @date 2025-02-18
*/
@Data
@ApiModel("包工头同意申请对象")
public class BgtProjectRecruitApplyConsentDTO implements Serializable {
private static final long serialVersionUID=1L;
/** 主键ID */
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("进场时间")
private String entryTime;
@ApiModelProperty("入场材料")
List<AnnexDTO> entryMaterials;
@ApiModelProperty("保险")
List<AnnexDTO> insurances;
}

View File

@ -6,16 +6,17 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel("包工头招工申请列表查询对象") @ApiModel("包工头招工申请列表查询对象")
public class BgtProjectRecruitApplyQueryDTO extends BaseEntity { public class BgtProjectRecruitApplyQueryDTO extends BaseEntity {
@ApiModelProperty("招工ID") @ApiModelProperty("招工ID列表")
@NotNull(message = "招工ID不能为空") @NotEmpty(message = "招工ID列表不能为空")
private Long recruitId; private List<Long> recruitIds;
@ApiModelProperty("选择状态0未选择 1已选择") @ApiModelProperty("选择状态0未选择 1已选择")
private String status; private String status;

View File

@ -22,6 +22,9 @@ public class BgtProjectRecruitApplyVO implements Serializable {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("务工者用户ID") @ApiModelProperty("务工者用户ID")
private Long userId; private Long userId;

View File

@ -2,6 +2,7 @@ package com.ruoyi.bgt.service;
import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo; import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo;
import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO;
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
@ -72,4 +73,9 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus<BgtProjectR
*/ */
BgtProjectRecruitApply selectByUserIdProjectRecruitApplyId(Long id); BgtProjectRecruitApply selectByUserIdProjectRecruitApplyId(Long id);
/**
* 同意申请
*/
Boolean consent(BgtProjectRecruitApplyConsentDTO dto);
} }

View File

@ -1,19 +1,26 @@
package com.ruoyi.bgt.service.impl; package com.ruoyi.bgt.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo; import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo;
import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO;
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import com.ruoyi.bgt.mapper.BgtProjectRecruitApplyMapper; import com.ruoyi.bgt.mapper.BgtProjectRecruitApplyMapper;
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.RecruitApplyStatus;
import com.ruoyi.common.exception.BaseException;
import com.ruoyi.common.service.IAnnexService;
import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.PageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -28,6 +35,10 @@ import java.util.Map;
@Service @Service
public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjectRecruitApplyMapper, BgtProjectRecruitApply> implements IBgtProjectRecruitApplyService { public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjectRecruitApplyMapper, BgtProjectRecruitApply> implements IBgtProjectRecruitApplyService {
@Autowired
private IAnnexService annexService;
@Override @Override
public BgtProjectRecruitApply queryById(Long id){ public BgtProjectRecruitApply queryById(Long id){
return getById(id); return getById(id);
@ -88,6 +99,27 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec
return baseMapper.appQueryList(dto); return baseMapper.appQueryList(dto);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean consent(BgtProjectRecruitApplyConsentDTO dto) {
BgtProjectRecruitApply recruitApply = getById(dto.getId());
List<BgtProjectRecruitApply> list = baseMapper.selectList(Wrappers.<BgtProjectRecruitApply>lambdaQuery()
.eq(BgtProjectRecruitApply::getUserId, recruitApply.getUserId())
.eq(BgtProjectRecruitApply::getStatus,RecruitApplyStatus.PASS.getCode())
.isNotNull(BgtProjectRecruitApply::getLeaveTime));
if(CollectionUtil.isNotEmpty(list)){
throw new BaseException("该务工者已进入其他工地");
}
recruitApply.setEntryTime(dto.getEntryTime());
recruitApply.setStatus(RecruitApplyStatus.PASS.getCode());
dto.getEntryMaterials().addAll(dto.getInsurances());
annexService.insertBatch(dto.getEntryMaterials());
return updateById(recruitApply);
}
/** /**
* LC-APP相关 * LC-APP相关

View File

@ -23,9 +23,7 @@ import com.ruoyi.fbs.service.IFbsProjectTaskService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.*;
import java.util.List;
import java.util.Map;
/** /**
* 包工头招工Service业务层处理 * 包工头招工Service业务层处理
@ -39,7 +37,6 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl<BgtProjectRecr
@Autowired @Autowired
private IFbsProjectTaskService fbsProjectTaskService; private IFbsProjectTaskService fbsProjectTaskService;
@Autowired @Autowired
private IBgtProjectRecruitApplyService bgtProjectRecruitApplyService; private IBgtProjectRecruitApplyService bgtProjectRecruitApplyService;
@ -118,7 +115,7 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl<BgtProjectRecr
Page<BgtProjectRecruitVO> queryVOPage = baseMapper.appQueryPageList(queryDTOPage, dto); Page<BgtProjectRecruitVO> queryVOPage = baseMapper.appQueryPageList(queryDTOPage, dto);
for(BgtProjectRecruitVO vo : queryVOPage.getRecords()) { for(BgtProjectRecruitVO vo : queryVOPage.getRecords()) {
BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO(); BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO();
bgtProjectRecruitApplyQueryDTO.setRecruitId(vo.getId()); bgtProjectRecruitApplyQueryDTO.setRecruitIds(Collections.singletonList(vo.getId()));
bgtProjectRecruitApplyQueryDTO.setStatus(dto.getStatus()); bgtProjectRecruitApplyQueryDTO.setStatus(dto.getStatus());
vo.setApplylist(bgtProjectRecruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO)); vo.setApplylist(bgtProjectRecruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
} }
@ -132,11 +129,10 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl<BgtProjectRecr
FbsProjectTask task = fbsProjectTaskService.getById(vo.getTaskId()); FbsProjectTask task = fbsProjectTaskService.getById(vo.getTaskId());
vo.setTaskName(task.getTaskName()); vo.setTaskName(task.getTaskName());
BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO(); BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO();
bgtProjectRecruitApplyQueryDTO.setRecruitId(vo.getId()); bgtProjectRecruitApplyQueryDTO.setRecruitIds(Collections.singletonList(vo.getId()));
bgtProjectRecruitApplyQueryDTO.setStatus(RecruitApplyStatus.TO_PASS.getCode()); bgtProjectRecruitApplyQueryDTO.setStatus(RecruitApplyStatus.TO_PASS.getCode());
vo.setApplylist(bgtProjectRecruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO)); vo.setApplylist(bgtProjectRecruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
return vo;
return null;
} }
/** /**

View File

@ -1,28 +1,27 @@
package com.ruoyi.common.service.impl; package com.ruoyi.common.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.domain.dto.AnnexDTO;
import com.ruoyi.common.tool.FileDeletionService;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.bo.AnnexQueryBo; import com.ruoyi.common.bo.AnnexQueryBo;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.domain.Annex; import com.ruoyi.common.domain.Annex;
import com.ruoyi.common.domain.dto.AnnexDTO;
import com.ruoyi.common.mapper.AnnexMapper; import com.ruoyi.common.mapper.AnnexMapper;
import com.ruoyi.common.service.IAnnexService; import com.ruoyi.common.service.IAnnexService;
import com.ruoyi.common.tool.FileDeletionService;
import com.ruoyi.common.utils.PageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.tools.Tool; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -108,7 +107,9 @@ public class AnnexServiceImpl extends ServicePlusImpl<AnnexMapper, Annex> implem
return annex; return annex;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
baseMapper.insertAll(annexes); if(CollectionUtil.isNotEmpty(annexes)){
super.saveAll(annexes);
}
} }
@Override @Override

View File

@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
@ApiModel("app项目任务列表查询条件") @ApiModel("app项目任务列表查询条件")
public class AppTaskDTO { public class AppTaskDTO {
@ -19,6 +21,12 @@ public class AppTaskDTO {
@ApiModelProperty("承接人") @ApiModelProperty("承接人")
private Long userId; private Long userId;
@ApiModelProperty("任务状态1进行中 2已完成") @ApiModelProperty("任务状态(0申请中 1进行中 2已完成")
private String status; private String status;
@ApiModelProperty("是否我的任务")
private Boolean myTask;
@ApiModelProperty(value = "申请任务ID",hidden = true)
private List<Long> taskIds;
} }

View File

@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@Data @Data
@ApiModel("app申请承接任务") @ApiModel("app申请/取消项目任务")
public class TaskApplyDTO { public class TaskApplyDTO {
@ApiModelProperty("任务ID") @ApiModelProperty("任务ID")

View File

@ -1,11 +1,13 @@
package com.ruoyi.fbs.domain.vo; package com.ruoyi.fbs.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Data @Data
@ -66,4 +68,9 @@ public class AppTaskDetailVO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime; private LocalDateTime createTime;
@ApiModelProperty("申请者列表")
List<BgtProjectRecruitApplyVO> applylist;
} }

View File

@ -54,5 +54,18 @@ public interface IFbsProjectTaskApplyService extends IServicePlus<FbsProjectTask
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 申请承接
*/
Boolean appTaskApply(TaskApplyDTO dto); Boolean appTaskApply(TaskApplyDTO dto);
/**
* 获取包工头申请的所有任务ID
*/
List<Long> getTaskIdsByUserId(Long userId);
/**
* 取消申请
*/
Boolean cancelApply(TaskApplyDTO dto);
} }

View File

@ -63,5 +63,8 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> {
*/ */
TableDataInfo<AppTaskVO> appQueryPageList(AppTaskDTO dto); TableDataInfo<AppTaskVO> appQueryPageList(AppTaskDTO dto);
/**
* 任务详情
*/
AppTaskDetailVO appQueryById(Long id); AppTaskDetailVO appQueryById(Long id);
} }

View File

@ -1,11 +1,13 @@
package com.ruoyi.fbs.service.impl; package com.ruoyi.fbs.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.BaseException;
import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.fbs.bo.FbsProjectTaskApplyQueryBo; import com.ruoyi.fbs.bo.FbsProjectTaskApplyQueryBo;
import com.ruoyi.fbs.domain.FbsProjectTaskApply; import com.ruoyi.fbs.domain.FbsProjectTaskApply;
@ -17,6 +19,7 @@ import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 分包商项目任务申请Service业务层处理 * 分包商项目任务申请Service业务层处理
@ -75,8 +78,9 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa
wrapper.eq(FbsProjectTaskApply::getTaskId, entity.getTaskId()); wrapper.eq(FbsProjectTaskApply::getTaskId, entity.getTaskId());
wrapper.eq(FbsProjectTaskApply::getUserId, entity.getUserId()); wrapper.eq(FbsProjectTaskApply::getUserId, entity.getUserId());
List<FbsProjectTaskApply> list = baseMapper.selectList(wrapper); List<FbsProjectTaskApply> list = baseMapper.selectList(wrapper);
if (CollUtil.isNotEmpty(list)) {
//TODO 做一些数据校验,如唯一约束 throw new BaseException("该任务已申请");
}
} }
@Override @Override
@ -91,6 +95,19 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa
public Boolean appTaskApply(TaskApplyDTO dto) { public Boolean appTaskApply(TaskApplyDTO dto) {
FbsProjectTaskApply fbsProjectTaskApply = BeanUtil.copyProperties(dto, FbsProjectTaskApply.class); FbsProjectTaskApply fbsProjectTaskApply = BeanUtil.copyProperties(dto, FbsProjectTaskApply.class);
validEntityBeforeSave(fbsProjectTaskApply); validEntityBeforeSave(fbsProjectTaskApply);
return null; return save(fbsProjectTaskApply);
}
@Override
public List<Long> getTaskIdsByUserId(Long userId) {
List<FbsProjectTaskApply> list = baseMapper.selectList(Wrappers.<FbsProjectTaskApply>lambdaQuery().eq(FbsProjectTaskApply::getUserId, userId));
return list.stream().map(FbsProjectTaskApply::getTaskId).collect(Collectors.toList());
}
@Override
public Boolean cancelApply(TaskApplyDTO dto) {
int delete = baseMapper.delete(Wrappers.<FbsProjectTaskApply>lambdaQuery().eq(FbsProjectTaskApply::getTaskId, dto.getTaskId())
.eq(FbsProjectTaskApply::getUserId, dto.getUserId()));
return delete>0;
} }
} }

View File

@ -1,12 +1,20 @@
package com.ruoyi.fbs.service.impl; package com.ruoyi.fbs.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.service.IBgtProjectRecruitApplyService;
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.ProjectTaskStatus;
import com.ruoyi.common.enums.RecruitApplyStatus;
import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.fbs.bo.FbsProjectTaskQueryBo; import com.ruoyi.fbs.bo.FbsProjectTaskQueryBo;
import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.fbs.domain.FbsProjectTask;
@ -14,15 +22,18 @@ import com.ruoyi.fbs.domain.dto.AppTaskDTO;
import com.ruoyi.fbs.domain.vo.AppTaskDetailVO; import com.ruoyi.fbs.domain.vo.AppTaskDetailVO;
import com.ruoyi.fbs.domain.vo.AppTaskVO; import com.ruoyi.fbs.domain.vo.AppTaskVO;
import com.ruoyi.fbs.mapper.FbsProjectTaskMapper; import com.ruoyi.fbs.mapper.FbsProjectTaskMapper;
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
import com.ruoyi.fbs.service.IFbsProjectTaskService; import com.ruoyi.fbs.service.IFbsProjectTaskService;
import com.ruoyi.zbf.domain.ZbfProject; import com.ruoyi.zbf.domain.ZbfProject;
import com.ruoyi.zbf.service.IZbfProjectService; import com.ruoyi.zbf.service.IZbfProjectService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 分包商项目任务Service业务层处理 * 分包商项目任务Service业务层处理
@ -36,6 +47,16 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
@Autowired @Autowired
private IZbfProjectService zbfProjectService; private IZbfProjectService zbfProjectService;
@Autowired
private IFbsProjectTaskApplyService taskApplyService;
@Autowired
@Lazy
private IBgtProjectRecruitService recruitService;
@Autowired
private IBgtProjectRecruitApplyService recruitApplyService;
@Override @Override
public FbsProjectTask queryById(Long id){ public FbsProjectTask queryById(Long id){
return getById(id); return getById(id);
@ -108,6 +129,10 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
Page<AppTaskDTO> appTaskDTOPage = new Page<>(); Page<AppTaskDTO> appTaskDTOPage = new Page<>();
appTaskDTOPage.setCurrent(dto.getPageNum()); appTaskDTOPage.setCurrent(dto.getPageNum());
appTaskDTOPage.setSize(dto.getPageSize()); appTaskDTOPage.setSize(dto.getPageSize());
if(dto.getMyTask() && ObjectUtil.equals(ProjectTaskStatus.APPLY.getCode(),dto.getStatus())){
List<Long> taskIds = taskApplyService.getTaskIdsByUserId(dto.getUserId());
dto.setTaskIds(taskIds);
}
Page<AppTaskVO> appTaskVOPage = baseMapper.appQueryPageList(appTaskDTOPage, dto); Page<AppTaskVO> appTaskVOPage = baseMapper.appQueryPageList(appTaskDTOPage, dto);
return PageUtils.buildDataInfo(appTaskVOPage); return PageUtils.buildDataInfo(appTaskVOPage);
} }
@ -116,8 +141,21 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
public AppTaskDetailVO appQueryById(Long id) { public AppTaskDetailVO appQueryById(Long id) {
FbsProjectTask byId = getById(id); FbsProjectTask byId = getById(id);
AppTaskDetailVO appTaskDetailVO = BeanUtil.copyProperties(byId, AppTaskDetailVO.class); AppTaskDetailVO appTaskDetailVO = BeanUtil.copyProperties(byId, AppTaskDetailVO.class);
//项目信息
ZbfProject project = zbfProjectService.getById(byId.getProjectId()); ZbfProject project = zbfProjectService.getById(byId.getProjectId());
appTaskDetailVO.setProjectName(project.getProjectName()); appTaskDetailVO.setProjectName(project.getProjectName());
//申请者信息
BgtProjectRecruitQueryBo bgtProjectRecruitQueryBo = new BgtProjectRecruitQueryBo();
bgtProjectRecruitQueryBo.setTaskId(id);
List<Long> recruitIds = recruitService.queryList(bgtProjectRecruitQueryBo).stream().map(BgtProjectRecruit::getId).collect(Collectors.toList());
BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO();
bgtProjectRecruitApplyQueryDTO.setRecruitIds(recruitIds);
bgtProjectRecruitApplyQueryDTO.setStatus(RecruitApplyStatus.PASS.getCode());
appTaskDetailVO.setApplylist(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
return appTaskDetailVO; return appTaskDetailVO;
} }
} }

View File

@ -17,7 +17,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<select id="appQueryList" resultType="com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO"> <select id="appQueryList" resultType="com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO">
select wu.user_id, wu.phone, wu.score, wu.avatar_name, wu.username select bpra.id, wu.user_id, wu.phone, wu.score, wu.avatar_name, wu.username
from bgt_project_recruit_apply bpra from bgt_project_recruit_apply bpra
left join wgz_user wu on bpra.user_id = wu.user_id left join wgz_user wu on bpra.user_id = wu.user_id
where bpra.recruit_id = #{dto.recruitId} where bpra.recruit_id = #{dto.recruitId}

View File

@ -41,9 +41,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
(select count(task_id) from fbs_project_task_apply where task_id = fpt.id) as applyNum (select count(task_id) from fbs_project_task_apply where task_id = fpt.id) as applyNum
from fbs_project_task fpt 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 fpt.user_id is null <where>
<if test="dto.taskName != null and dto.taskName != '' "> <if test="dto.taskIds != null and dto.taskIds.size() > 0">
and fpt.task_name like concat('%', #{dto.taskName}, '%') and fpt.id IN
<foreach item="item" index="index" collection="dto.taskIds"
open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
<if test="dto.taskName != null and dto.taskName != '' "> <if test="dto.taskName != null and dto.taskName != '' ">
and fpt.task_name like concat('%', #{dto.taskName}, '%') and fpt.task_name like concat('%', #{dto.taskName}, '%')
@ -54,6 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="dto.status != null and dto.status != '' "> <if test="dto.status != null and dto.status != '' ">
and fpt.status = #{dto.status} and fpt.status = #{dto.status}
</if> </if>
</where>
</select> </select>
</mapper> </mapper>