优化
This commit is contained in:
		@ -0,0 +1,46 @@
 | 
			
		||||
package com.ruoyi.bgt.domain.dto;
 | 
			
		||||
 | 
			
		||||
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.math.BigDecimal;
 | 
			
		||||
import java.time.LocalDate;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@Accessors(chain = true)
 | 
			
		||||
@ApiModel("总体考勤情况-工资结算-基础信息")
 | 
			
		||||
public class BgtPayCalculationDetailBaseVO {
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("姓名")
 | 
			
		||||
	private String username;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("评分")
 | 
			
		||||
	private Double score;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("头像")
 | 
			
		||||
	private String avatarName;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("招工主题")
 | 
			
		||||
	private String recruitName;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("任务名")
 | 
			
		||||
	private String taskName;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("进场时间")
 | 
			
		||||
	@JsonFormat(pattern = "yyyy-MM-dd")
 | 
			
		||||
	private LocalDate entryTime;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("总工资")
 | 
			
		||||
	private BigDecimal allAmount;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("已付工资")
 | 
			
		||||
	private BigDecimal payAmount;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("剩余工资")
 | 
			
		||||
	private BigDecimal residueAmount;
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,38 @@
 | 
			
		||||
package com.ruoyi.bgt.domain.dto;
 | 
			
		||||
 | 
			
		||||
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.math.BigDecimal;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@Accessors(chain = true)
 | 
			
		||||
@ApiModel("总体考勤情况-工资结算-结算记录")
 | 
			
		||||
public class BgtPayCalculationDetailListVO {
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("主键自增ID")
 | 
			
		||||
	private Long id;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("工资金额")
 | 
			
		||||
	private BigDecimal recruitAmount;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("出勤天数")
 | 
			
		||||
	private Long num;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("创建时间")
 | 
			
		||||
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 | 
			
		||||
	private LocalDateTime createTime;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("同意|拒绝时间")
 | 
			
		||||
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 | 
			
		||||
	private LocalDateTime auditorTime;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("审核状态(0未读 1待审核 2已同意 3已拒绝)")
 | 
			
		||||
	private String auditorType;
 | 
			
		||||
}
 | 
			
		||||
@ -14,6 +14,13 @@ import java.util.List;
 | 
			
		||||
@ApiModel("包工头招工申请列表查询对象")
 | 
			
		||||
public class BgtProjectRecruitApplyQueryDTO extends BaseEntity {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("分页大小")
 | 
			
		||||
	private Integer pageSize;
 | 
			
		||||
	/** 当前页数 */
 | 
			
		||||
	@ApiModelProperty("当前页数")
 | 
			
		||||
	private Integer pageNum;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("招工ID列表")
 | 
			
		||||
	@NotEmpty(message = "招工ID列表不能为空")
 | 
			
		||||
	private List<Long> recruitIds;
 | 
			
		||||
 | 
			
		||||
@ -32,6 +32,7 @@ public class BgtProjectRecruitApplyVO implements Serializable {
 | 
			
		||||
	private LocalDate entryTime;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty("务工者用户ID")
 | 
			
		||||
	@JsonFormat(shape = JsonFormat.Shape.STRING)
 | 
			
		||||
    private Long userId;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("姓名")
 | 
			
		||||
 | 
			
		||||
@ -6,10 +6,12 @@ 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;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
import java.time.LocalTime;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -96,6 +98,14 @@ public class BgtProjectRecruitDetailVO implements Serializable {
 | 
			
		||||
    @ApiModelProperty("备注")
 | 
			
		||||
    private String remark;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("上班时间")
 | 
			
		||||
	@DateTimeFormat(pattern = "HH:mm:ss")
 | 
			
		||||
	private LocalTime beginWorkTime;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("下班时间")
 | 
			
		||||
	@DateTimeFormat(pattern = "HH:mm:ss")
 | 
			
		||||
	private LocalTime endWorkTime;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("申请者列表")
 | 
			
		||||
	List<BgtProjectRecruitApplyVO> applylist;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtProjectTaskProgressQueryDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
 | 
			
		||||
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
 | 
			
		||||
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
 | 
			
		||||
@ -24,6 +25,8 @@ import java.util.List;
 | 
			
		||||
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
 | 
			
		||||
public interface BgtProjectRecruitApplyMapper extends BaseMapperPlus<BgtProjectRecruitApply> {
 | 
			
		||||
 | 
			
		||||
	Page<BgtProjectRecruitApplyVO> appQueryList(@Param("page")Page<BgtProjectTaskProgressQueryDTO> queryDTOPage,@Param("dto") BgtProjectRecruitApplyQueryDTO dto);
 | 
			
		||||
 | 
			
		||||
	List<BgtProjectRecruitApplyVO> appQueryList(@Param("dto") BgtProjectRecruitApplyQueryDTO dto);
 | 
			
		||||
 | 
			
		||||
	List<BgtProjectRecruitApplyVO> todayAttendanceList(@Param("dto") BgtAttendanceDayDTO dto);
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 | 
			
		||||
import com.ruoyi.wgz.bo.req.WgzAppUnderwayReq;
 | 
			
		||||
import com.ruoyi.wgz.bo.res.WgzAppUnderwayRes;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestBody;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
@ -64,6 +65,11 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus<BgtProjectR
 | 
			
		||||
     */
 | 
			
		||||
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 查询列表
 | 
			
		||||
	 */
 | 
			
		||||
	TableDataInfo<BgtProjectRecruitApplyVO> appQueryPageList(BgtProjectRecruitApplyQueryDTO dto);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 查询列表
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
@ -10,10 +10,7 @@ import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo;
 | 
			
		||||
import com.ruoyi.bgt.domain.BgtMessage;
 | 
			
		||||
import com.ruoyi.bgt.domain.BgtProjectRecruit;
 | 
			
		||||
import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtScoreDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.*;
 | 
			
		||||
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
 | 
			
		||||
import com.ruoyi.bgt.mapper.BgtProjectRecruitApplyMapper;
 | 
			
		||||
import com.ruoyi.bgt.service.IBgtMessageService;
 | 
			
		||||
@ -125,6 +122,15 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec
 | 
			
		||||
        return removeByIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public TableDataInfo<BgtProjectRecruitApplyVO> appQueryPageList(BgtProjectRecruitApplyQueryDTO dto) {
 | 
			
		||||
		Page<BgtProjectTaskProgressQueryDTO> queryDTOPage = new Page<>();
 | 
			
		||||
		queryDTOPage.setCurrent(dto.getPageNum());
 | 
			
		||||
		queryDTOPage.setSize(dto.getPageSize());
 | 
			
		||||
		Page<BgtProjectRecruitApplyVO> queryVOPage = baseMapper.appQueryList(queryDTOPage, dto);
 | 
			
		||||
		return PageUtils.buildDataInfo(queryVOPage);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public List<BgtProjectRecruitApplyVO> appQueryList(BgtProjectRecruitApplyQueryDTO dto) {
 | 
			
		||||
		return baseMapper.appQueryList(dto);
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,6 @@
 | 
			
		||||
package com.ruoyi.common.constants;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
public class WgzAndBgtMessageConstant {
 | 
			
		||||
@ -50,19 +51,46 @@ public class WgzAndBgtMessageConstant {
 | 
			
		||||
	 * =====================================================包工头=====================================================
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	public static final String BGT_HEADLINE_APPLY = "您申请的【%s】项目,已得到回复!";
 | 
			
		||||
	public static final String BGT_SUBHEADING_APPLY = "您申请的【%s】项目,已经过审核人【%s】同意!";
 | 
			
		||||
	//模板
 | 
			
		||||
	public static final String BGT_SIGN_UP_APPLY_HEADLINE = "您申请的【%s】项目,已得到回复!";
 | 
			
		||||
	public static final String BGT_SIGN_UP_APPLY_SUBHEADING = "您申请的【%s】项目,审核人【%s】已%s!";
 | 
			
		||||
	public static final String BGT_PAY_APPLY_HEADLINE = "【%s】项目工资已审批!";
 | 
			
		||||
	public static final String BGT_PAY_APPLY_SUBHEADING = "您申请的【%s】项目工资,审核人【%s】已%s!";
 | 
			
		||||
	public static final String BGT_LEAVE_APPLY_HEADLINE = "您【%s】项目的请假申请,审核人【%s】已%s!";
 | 
			
		||||
	public static final String BGT_LEAVE_APPLY_SUBHEADING = "您【%s】项目的请假申请,审核人【%s】已%s!";
 | 
			
		||||
 | 
			
		||||
	//主副标志
 | 
			
		||||
	public static final String HEADLINE = "headline";          //主标题
 | 
			
		||||
	public static final String SUBHEADING = "subheading";      //副标题
 | 
			
		||||
 | 
			
		||||
	//消息类型
 | 
			
		||||
	public static final String BGT_TYPE_SIGN_UP = "1";    //务工者报名
 | 
			
		||||
	public static final String BGT_TYPE_PAY = "2";        //付款
 | 
			
		||||
	public static final String BGT_TYPE_LEAVE = "3";      //请假
 | 
			
		||||
	public static final String BGT_TYPE_MAKE_UP = "4";    //补卡
 | 
			
		||||
	public static final String BGT_TYPE_EXIT = "5";       //退场
 | 
			
		||||
 | 
			
		||||
	//包工头消息返回
 | 
			
		||||
	public static String bgtMessage(Map<String, String> mp, String type) {
 | 
			
		||||
	public static Map<String,String> bgtMessage(Map<String, String> mp, String type,Boolean isPass) {
 | 
			
		||||
		Map<String, String> map = new HashMap<>();
 | 
			
		||||
		String pass = isPass ? "通过" : "拒绝";
 | 
			
		||||
		switch (type){
 | 
			
		||||
			case "1":
 | 
			
		||||
				return String.format(BGT_HEADLINE_APPLY, mp.get("projectName"));
 | 
			
		||||
				map.put(HEADLINE, String.format(BGT_SIGN_UP_APPLY_HEADLINE, mp.get("projectName")));
 | 
			
		||||
				map.put(SUBHEADING, String.format(BGT_SIGN_UP_APPLY_SUBHEADING, mp.get("projectName"),mp.get("auditor"),pass));
 | 
			
		||||
				break;
 | 
			
		||||
			case "2":
 | 
			
		||||
				return String.format(BGT_SUBHEADING_APPLY, mp.get("projectName"),mp.get("auditor"));
 | 
			
		||||
				map.put(HEADLINE, String.format(BGT_PAY_APPLY_HEADLINE, mp.get("projectName")));
 | 
			
		||||
				map.put(SUBHEADING, String.format(BGT_PAY_APPLY_SUBHEADING, mp.get("projectName"),mp.get("auditor"),pass));
 | 
			
		||||
				break;
 | 
			
		||||
//			case "3":
 | 
			
		||||
//				return String.format(BGT_PAY_APPLY, mp.get("projectName"),mp.get("auditor"));
 | 
			
		||||
//			case "4":
 | 
			
		||||
//				return String.format(BGT_LEAVE_APPLY, mp.get("projectName"),mp.get("auditor"));
 | 
			
		||||
			default:
 | 
			
		||||
				return "未知类型";
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
		return map;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,36 @@
 | 
			
		||||
package com.ruoyi.fbs.domain.vo;
 | 
			
		||||
 | 
			
		||||
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
 | 
			
		||||
import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@ApiModel("包工头项目任务详情-考勤")
 | 
			
		||||
public class AppTaskDetailAttendanceVO {
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("主键ID")
 | 
			
		||||
	private Long id;
 | 
			
		||||
 | 
			
		||||
	//总体考勤情况
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("总人数")
 | 
			
		||||
	private Integer totalNum = 0;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("今日到岗人数")
 | 
			
		||||
	private Integer reportToDutyNum= 0;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("今日到岗率")
 | 
			
		||||
	private Integer reportToDutyRate= 0;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("考勤列表")
 | 
			
		||||
	List<BgtAttendanceCountVO> countVOS;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,19 @@
 | 
			
		||||
package com.ruoyi.fbs.domain.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@ApiModel("包工头项目任务详情-进度")
 | 
			
		||||
public class AppTaskDetailProgressVO {
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("主键ID")
 | 
			
		||||
	private Long id;
 | 
			
		||||
 | 
			
		||||
	//任务进度
 | 
			
		||||
	@ApiModelProperty("任务进度")
 | 
			
		||||
	private Integer progress;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,24 @@
 | 
			
		||||
package com.ruoyi.fbs.domain.vo;
 | 
			
		||||
 | 
			
		||||
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
 | 
			
		||||
import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@ApiModel("包工头项目任务详情-务工者")
 | 
			
		||||
public class AppTaskDetailRecruitVO {
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("主键ID")
 | 
			
		||||
	private Long id;
 | 
			
		||||
	//务工者数量列表
 | 
			
		||||
	@ApiModelProperty("申请者列表")
 | 
			
		||||
	List<BgtProjectRecruitApplyVO> applyList;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -98,8 +98,8 @@ public class AppTaskDetailVO {
 | 
			
		||||
	@ApiModelProperty("任务付款金额")
 | 
			
		||||
	private BigDecimal taskPaymentAmount;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("收款申请列表")
 | 
			
		||||
	private List<BgtWageApplicationListVO> wageApplicationList;
 | 
			
		||||
	@ApiModelProperty("最新一条收款申请")
 | 
			
		||||
	private BgtWageApplicationListVO wageApplication;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	//总体考勤情况
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,29 @@
 | 
			
		||||
package com.ruoyi.fbs.domain.vo;
 | 
			
		||||
 | 
			
		||||
import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO;
 | 
			
		||||
import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@ApiModel("包工头项目任务详情-结算情况")
 | 
			
		||||
public class AppTaskDetailWageVO {
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("主键ID")
 | 
			
		||||
	private Long id;
 | 
			
		||||
 | 
			
		||||
	//结算情况
 | 
			
		||||
	@ApiModelProperty("任务收款金额")
 | 
			
		||||
	private Integer taskReceiveAmount;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("任务付款金额")
 | 
			
		||||
	private BigDecimal taskPaymentAmount;
 | 
			
		||||
 | 
			
		||||
	@ApiModelProperty("最新一条收款申请")
 | 
			
		||||
	private BgtWageApplicationListVO wageApplication;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -6,8 +6,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 | 
			
		||||
import com.ruoyi.fbs.bo.FbsProjectTaskQueryBo;
 | 
			
		||||
import com.ruoyi.fbs.domain.FbsProjectTask;
 | 
			
		||||
import com.ruoyi.fbs.domain.dto.AppTaskDTO;
 | 
			
		||||
import com.ruoyi.fbs.domain.vo.AppTaskDetailVO;
 | 
			
		||||
import com.ruoyi.fbs.domain.vo.AppTaskVO;
 | 
			
		||||
import com.ruoyi.fbs.domain.vo.*;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
@ -69,4 +68,24 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> {
 | 
			
		||||
	 * 任务详情
 | 
			
		||||
	 */
 | 
			
		||||
	AppTaskDetailVO appQueryById(Long id);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 任务详情-考勤
 | 
			
		||||
	 */
 | 
			
		||||
	AppTaskDetailAttendanceVO attendance(Long id);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 任务详情-进度
 | 
			
		||||
	 */
 | 
			
		||||
	AppTaskDetailProgressVO progress(Long id);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 任务详情-结算
 | 
			
		||||
	 */
 | 
			
		||||
	AppTaskDetailWageVO wage(Long id);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 任务详情-务工人员
 | 
			
		||||
	 */
 | 
			
		||||
	AppTaskDetailRecruitVO recruit(Long id);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -27,8 +27,7 @@ import com.ruoyi.common.utils.SecurityUtils;
 | 
			
		||||
import com.ruoyi.fbs.bo.FbsProjectTaskQueryBo;
 | 
			
		||||
import com.ruoyi.fbs.domain.FbsProjectTask;
 | 
			
		||||
import com.ruoyi.fbs.domain.dto.AppTaskDTO;
 | 
			
		||||
import com.ruoyi.fbs.domain.vo.AppTaskDetailVO;
 | 
			
		||||
import com.ruoyi.fbs.domain.vo.AppTaskVO;
 | 
			
		||||
import com.ruoyi.fbs.domain.vo.*;
 | 
			
		||||
import com.ruoyi.fbs.mapper.FbsProjectTaskMapper;
 | 
			
		||||
import com.ruoyi.fbs.service.IFbsProjectTaskApplyService;
 | 
			
		||||
import com.ruoyi.fbs.service.IFbsProjectTaskService;
 | 
			
		||||
@ -180,15 +179,6 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
 | 
			
		||||
 | 
			
		||||
		if(ProjectTaskStatus.PROGRESS.getCode().equals(byId.getStatus())
 | 
			
		||||
			|| ProjectTaskStatus.COMPLETE.getCode().equals(byId.getStatus())){
 | 
			
		||||
			//务工者数量列表
 | 
			
		||||
			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(Collections.singletonList(RecruitApplyStatus.WORKING.getCode()));
 | 
			
		||||
			appTaskDetailVO.setApplyList(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
 | 
			
		||||
			//任务进度
 | 
			
		||||
			appTaskDetailVO.setProgress(progressService.getLastProgress(id));
 | 
			
		||||
 | 
			
		||||
@ -197,7 +187,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
 | 
			
		||||
			BgtWageApplicationQueryDTO wageDTO = new BgtWageApplicationQueryDTO();
 | 
			
		||||
			wageDTO.setTaskId(id);
 | 
			
		||||
			List<BgtWageApplicationListVO> wageList = wageApplicationService.appQueryList(wageDTO);
 | 
			
		||||
			appTaskDetailVO.setWageApplicationList(wageList);
 | 
			
		||||
			appTaskDetailVO.setWageApplication(CollectionUtil.isEmpty(wageList)?null:wageList.get(0));
 | 
			
		||||
			//收款金额
 | 
			
		||||
			Integer taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus()))
 | 
			
		||||
				.mapToInt(BgtWageApplicationListVO::getApplicantAmount)
 | 
			
		||||
@ -206,20 +196,72 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
 | 
			
		||||
			//付款金额
 | 
			
		||||
			BigDecimal payByTaskAndBgt = payCalculationService.getPayByTaskAndBgt(byId.getId(), byId.getUserId());
 | 
			
		||||
			appTaskDetailVO.setTaskPaymentAmount(payByTaskAndBgt);
 | 
			
		||||
			//考勤情况
 | 
			
		||||
			LocalDate date = LocalDate.now();
 | 
			
		||||
			LocalDate startOfMonth = date.withDayOfMonth(1);
 | 
			
		||||
			List<BgtAttendanceCountVO> countVOS = attendanceService.countByTaskId(id, startOfMonth, date);
 | 
			
		||||
			if(CollectionUtil.isNotEmpty(countVOS)){
 | 
			
		||||
				BgtAttendanceCountVO vo = countVOS.get(0);
 | 
			
		||||
				appTaskDetailVO.setCountVOS(DataUtil.fillMissingDates(countVOS, startOfMonth, date));
 | 
			
		||||
				appTaskDetailVO.setTotalNum(vo.getTotalNum());
 | 
			
		||||
				appTaskDetailVO.setReportToDutyNum(vo.getReportToDutyNum());
 | 
			
		||||
				appTaskDetailVO.setReportToDutyRate(vo.getReportToDutyNum()/vo.getTotalNum()*100);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
		return appTaskDetailVO;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public AppTaskDetailAttendanceVO attendance(Long id) {
 | 
			
		||||
		//考勤情况
 | 
			
		||||
		AppTaskDetailAttendanceVO appTaskDetailVO = new AppTaskDetailAttendanceVO();
 | 
			
		||||
		appTaskDetailVO.setId(id);
 | 
			
		||||
		LocalDate date = LocalDate.now();
 | 
			
		||||
		LocalDate startOfMonth = date.withDayOfMonth(1);
 | 
			
		||||
		List<BgtAttendanceCountVO> countVOS = attendanceService.countByTaskId(id, startOfMonth, date);
 | 
			
		||||
		if(CollectionUtil.isNotEmpty(countVOS)){
 | 
			
		||||
			BgtAttendanceCountVO vo = countVOS.get(0);
 | 
			
		||||
			appTaskDetailVO.setCountVOS(DataUtil.fillMissingDates(countVOS, startOfMonth, date));
 | 
			
		||||
			appTaskDetailVO.setTotalNum(vo.getTotalNum());
 | 
			
		||||
			appTaskDetailVO.setReportToDutyNum(vo.getReportToDutyNum());
 | 
			
		||||
			appTaskDetailVO.setReportToDutyRate(vo.getReportToDutyNum()/vo.getTotalNum()*100);
 | 
			
		||||
		}
 | 
			
		||||
		return appTaskDetailVO;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public AppTaskDetailProgressVO progress(Long id) {
 | 
			
		||||
		AppTaskDetailProgressVO appTaskDetailVO = new AppTaskDetailProgressVO();
 | 
			
		||||
		appTaskDetailVO.setId(id);
 | 
			
		||||
		//任务进度
 | 
			
		||||
		appTaskDetailVO.setProgress(progressService.getLastProgress(id));
 | 
			
		||||
		return appTaskDetailVO;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public AppTaskDetailWageVO wage(Long id) {
 | 
			
		||||
		AppTaskDetailWageVO appTaskDetailVO = new AppTaskDetailWageVO();
 | 
			
		||||
		appTaskDetailVO.setId(id);
 | 
			
		||||
		//结算情况
 | 
			
		||||
		//收款申请列表
 | 
			
		||||
		BgtWageApplicationQueryDTO wageDTO = new BgtWageApplicationQueryDTO();
 | 
			
		||||
		wageDTO.setTaskId(id);
 | 
			
		||||
		List<BgtWageApplicationListVO> wageList = wageApplicationService.appQueryList(wageDTO);
 | 
			
		||||
		appTaskDetailVO.setWageApplication(CollectionUtil.isEmpty(wageList)?null:wageList.get(0));
 | 
			
		||||
		//收款金额
 | 
			
		||||
		Integer taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus()))
 | 
			
		||||
			.mapToInt(BgtWageApplicationListVO::getApplicantAmount)
 | 
			
		||||
			.sum();
 | 
			
		||||
		appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount);
 | 
			
		||||
		//付款金额
 | 
			
		||||
		BigDecimal payByTaskAndBgt = payCalculationService.getPayByTaskAndBgt(id, SecurityUtils.getAppUserId());
 | 
			
		||||
		appTaskDetailVO.setTaskPaymentAmount(payByTaskAndBgt);
 | 
			
		||||
		return appTaskDetailVO;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public AppTaskDetailRecruitVO recruit(Long id) {
 | 
			
		||||
		AppTaskDetailRecruitVO appTaskDetailVO = new AppTaskDetailRecruitVO();
 | 
			
		||||
		appTaskDetailVO.setId(id);
 | 
			
		||||
		//务工者数量列表
 | 
			
		||||
		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(Collections.singletonList(RecruitApplyStatus.WORKING.getCode()));
 | 
			
		||||
		appTaskDetailVO.setApplyList(recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO));
 | 
			
		||||
		return appTaskDetailVO;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotBlank;
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@ -15,6 +15,6 @@ import java.io.Serializable;
 | 
			
		||||
@ApiModel("务工者APP-查询个人基本信息对象")
 | 
			
		||||
public class WgzAppPersonalBasicInformationReq implements Serializable {
 | 
			
		||||
	@ApiModelProperty("唯一标识")
 | 
			
		||||
	@NotBlank(message = "唯一标识不能为空")
 | 
			
		||||
	@NotNull(message = "唯一标识不能为空")
 | 
			
		||||
	private Long userId;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,7 @@
 | 
			
		||||
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.BgtPayCalculationListDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtPayCalculationUpdateDTO;
 | 
			
		||||
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
 | 
			
		||||
@ -103,4 +105,14 @@ public interface IWgzPayCalculationService extends IServicePlus<WgzPayCalculatio
 | 
			
		||||
	 */
 | 
			
		||||
	BigDecimal getPayByTaskAndBgt(Long taskId, Long auditorUserId);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 总体考勤情况-工资结算-基础信息
 | 
			
		||||
	 */
 | 
			
		||||
	BgtPayCalculationDetailBaseVO baseInfo(Long userId, Long recruitId);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 总体考勤情况-工资结算-结算记录
 | 
			
		||||
	 */
 | 
			
		||||
	List<BgtPayCalculationDetailListVO> record(Long userId, Long recruitId);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.ruoyi.bgt.domain.BgtProjectRecruit;
 | 
			
		||||
import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailBaseVO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailListVO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtPayCalculationListDTO;
 | 
			
		||||
import com.ruoyi.bgt.domain.dto.BgtPayCalculationUpdateDTO;
 | 
			
		||||
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
 | 
			
		||||
@ -16,15 +18,20 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 | 
			
		||||
import com.ruoyi.common.core.page.TableDataInfo;
 | 
			
		||||
import com.ruoyi.common.utils.PageUtils;
 | 
			
		||||
import com.ruoyi.common.utils.SecurityUtils;
 | 
			
		||||
import com.ruoyi.fbs.domain.FbsProjectTask;
 | 
			
		||||
import com.ruoyi.fbs.service.IFbsProjectTaskService;
 | 
			
		||||
import com.ruoyi.wgz.bo.WgzPayCalculationQueryBo;
 | 
			
		||||
import com.ruoyi.wgz.bo.req.WgzAppApplyForPayrollSettlementListReq;
 | 
			
		||||
import com.ruoyi.wgz.bo.req.WgzApplyForPayrollSettlementAddReq;
 | 
			
		||||
import com.ruoyi.wgz.bo.res.WgzAppApplyForPayrollSettlementListRes;
 | 
			
		||||
import com.ruoyi.wgz.domain.WgzPayCalculation;
 | 
			
		||||
import com.ruoyi.wgz.domain.WgzPayCalculationFiles;
 | 
			
		||||
import com.ruoyi.wgz.domain.WgzUser;
 | 
			
		||||
import com.ruoyi.wgz.mapper.WgzPayCalculationMapper;
 | 
			
		||||
import com.ruoyi.wgz.service.IWgzAttendanceService;
 | 
			
		||||
import com.ruoyi.wgz.service.IWgzPayCalculationFilesService;
 | 
			
		||||
import com.ruoyi.wgz.service.IWgzPayCalculationService;
 | 
			
		||||
import com.ruoyi.wgz.service.IWgzUserService;
 | 
			
		||||
import org.springframework.beans.BeanUtils;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
@ -54,6 +61,14 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpl<WgzPayCalculat
 | 
			
		||||
	@Autowired
 | 
			
		||||
	private IWgzPayCalculationFilesService iWgzPayCalculationFilesService;
 | 
			
		||||
 | 
			
		||||
	@Autowired
 | 
			
		||||
	private IWgzUserService wgzUserService;
 | 
			
		||||
 | 
			
		||||
	@Autowired
 | 
			
		||||
	private IFbsProjectTaskService taskService;
 | 
			
		||||
 | 
			
		||||
	@Autowired
 | 
			
		||||
	private IWgzAttendanceService attendanceService;
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
    public WgzPayCalculation queryById(Long id){
 | 
			
		||||
@ -201,4 +216,48 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpl<WgzPayCalculat
 | 
			
		||||
			.eq(WgzPayCalculation::getAuditorUserId, auditorUserId));
 | 
			
		||||
		return list.stream().map(WgzPayCalculation::getRecruitAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public BgtPayCalculationDetailBaseVO baseInfo(Long userId, Long recruitId) {
 | 
			
		||||
		BgtPayCalculationDetailBaseVO vo = new BgtPayCalculationDetailBaseVO();
 | 
			
		||||
		WgzUser wgzUser = wgzUserService.getById(userId);
 | 
			
		||||
		vo.setScore(wgzUser.getScore());
 | 
			
		||||
		vo.setUsername(wgzUser.getUsername());
 | 
			
		||||
		vo.setAvatarName(wgzUser.getAvatarName());
 | 
			
		||||
 | 
			
		||||
		BgtProjectRecruit recruit = iBgtProjectRecruitService.getById(recruitId);
 | 
			
		||||
		vo.setRecruitName(recruit.getRecruitName());
 | 
			
		||||
 | 
			
		||||
		FbsProjectTask task = taskService.getById(recruit.getTaskId());
 | 
			
		||||
		vo.setTaskName(task.getTaskName());
 | 
			
		||||
 | 
			
		||||
		BgtProjectRecruitApply apply = iBgtProjectRecruitApplyService.getOne(Wrappers.<BgtProjectRecruitApply>lambdaQuery()
 | 
			
		||||
			.eq(BgtProjectRecruitApply::getRecruitId, recruitId).eq(BgtProjectRecruitApply::getUserId, userId)
 | 
			
		||||
			.last("limit 1"));
 | 
			
		||||
		vo.setEntryTime(apply.getEntryTime());
 | 
			
		||||
 | 
			
		||||
		Integer i = attendanceService.attendanceDetail(userId, apply.getId(), null);
 | 
			
		||||
		BigDecimal totalAmount = recruit.getRecruitAmount().multiply(BigDecimal.valueOf(i));
 | 
			
		||||
		vo.setAllAmount(totalAmount);
 | 
			
		||||
 | 
			
		||||
		List<WgzPayCalculation> gzs = findByUserIdRecruitIdNewestData(userId, apply.getId());
 | 
			
		||||
		BigDecimal addSum = new BigDecimal(0);
 | 
			
		||||
		for (WgzPayCalculation gz : gzs) {
 | 
			
		||||
			//金额*天数=实际工资
 | 
			
		||||
			BigDecimal multiply = gz.getRecruitAmount().multiply(BigDecimal.valueOf(gz.getNum()));
 | 
			
		||||
			addSum = addSum.add(multiply);
 | 
			
		||||
		}
 | 
			
		||||
		vo.setPayAmount(totalAmount);
 | 
			
		||||
 | 
			
		||||
		vo.setResidueAmount(vo.getAllAmount().subtract(vo.getPayAmount()));
 | 
			
		||||
		return vo;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public List<BgtPayCalculationDetailListVO> record(Long userId, Long recruitId) {
 | 
			
		||||
		List<WgzPayCalculation> wgzPayCalculations = baseMapper.selectList(Wrappers.<WgzPayCalculation>lambdaQuery()
 | 
			
		||||
			.eq(WgzPayCalculation::getUserId, userId)
 | 
			
		||||
			.eq(WgzPayCalculation::getRecruitId, recruitId));
 | 
			
		||||
		return BeanUtil.copyToList(wgzPayCalculations, BgtPayCalculationDetailListVO.class);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user