总包方

This commit is contained in:
zt
2025-04-08 10:41:50 +08:00
parent 7aa7db4d37
commit 069529f78c
52 changed files with 1180 additions and 88 deletions

View File

@ -48,6 +48,15 @@ public class BgtWageApplicationVO {
@ApiModelProperty("任务地址")
private String taskAddress;
@ApiModelProperty("用工情况")
private String employmentSituation;
@ApiModelProperty("完工情况")
private String completionSituation;
@ApiModelProperty("任务情况")
private String taskSituation;
@ApiModelProperty("审核状态1审核中 2已审核 3未审核")
private String auditStatus;
}

View File

@ -76,7 +76,7 @@ public interface IBgtProjectTaskProgressService extends IServicePlus<BgtProjectT
Boolean fbsAudit(BgtProjectTaskProgress bo);
/**
* 根据任务Id查询任务最新进度-列表
* 根据任务Id查询各个任务最新进度-列表
*/
List<BgtProjectTaskProgress> getProgressByTaskIds(List<Long> taskIds);

View File

@ -3,6 +3,7 @@ package com.ruoyi.common.util;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO;
import com.ruoyi.zbf.domain.vo.ZbfDayAttendanceCountVO;
import java.math.BigDecimal;
import java.math.RoundingMode;
@ -123,4 +124,39 @@ public class DataUtil {
Period period = Period.between(birth, now);
return period.getYears();
}
//--------------------------------------------------------总包方-----------------------------------------------------
public static List<ZbfDayAttendanceCountVO> zbfFillMissingDates(List<ZbfDayAttendanceCountVO> countVOS, LocalDate startDate, LocalDate endDate) {
// 使用 HashSet 存储已有的日期,方便快速查找
Set<LocalDate> existingDates = new HashSet<>();
for (ZbfDayAttendanceCountVO vo : countVOS) {
existingDates.add(vo.getDate());
}
// 创建一个新的列表,用于存储补充后的结果
List<ZbfDayAttendanceCountVO> filledList = new ArrayList<>(countVOS);
// 遍历日期范围,补充缺失的日期
LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) {
if (!existingDates.contains(currentDate)) {
// 如果当前日期不在已有日期集合中,创建一个新的 BgtAttendanceCountVO 对象并添加到结果列表中
filledList.add(new ZbfDayAttendanceCountVO(0,currentDate));
}
// 日期递增一天
currentDate = currentDate.plusDays(1);
}
// 对结果列表按日期排序
filledList.sort(Comparator.comparing(ZbfDayAttendanceCountVO::getDate));
return filledList;
}
}

View File

@ -7,7 +7,7 @@ import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@ApiModel("分包商任务进度列表图对象")
@ApiModel("分包商任务进度列表图对象")
public class FbsProgressListVO {
@ApiModelProperty("主键ID")

View File

@ -10,7 +10,6 @@ import java.math.BigDecimal;
@ApiModel("分包商项目分包列表")
public class FbsProjectSubcontractingListVO {
@ApiModelProperty("主键ID")
private Long id;
@ -20,19 +19,18 @@ public class FbsProjectSubcontractingListVO {
@ApiModelProperty("项目地址")
private String projectAddress;
/** 标段ID */
@ApiModelProperty("标段ID")
private Long sectionId;
/** 分包主题 */
@ApiModelProperty("分包主题")
private String subName;
/** 分包描述 */
@ApiModelProperty("分包描述")
private String subDescribe;
/** 分包金额 */
@ApiModelProperty("分包金额")
private BigDecimal subAmount;
/** 资质要求 */
@ApiModelProperty("资质要求")
private String qualification;

View File

@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("App包工头项目详情-任务进度视图对象")
@ApiModel("App分包商项目详情-任务进度视图对象")
public class FbsProjectTaskDetailProgressVO{
@ApiModelProperty("总进度")

View File

@ -17,7 +17,7 @@ import java.math.BigDecimal;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("App包工头项目详情-结算情况视图对象")
@ApiModel("App分包商项目详情-结算情况视图对象")
public class FbsProjectTaskDetailWageVO {
@ApiModelProperty("总金额")

View File

@ -1,10 +1,11 @@
package com.ruoyi.wgz.mapper;
import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO;
import com.ruoyi.wgz.domain.WgzAttendance;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.wgz.domain.WgzAttendance;
import com.ruoyi.zbf.domain.vo.ZbfDayAttendanceCountVO;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
@ -28,8 +29,13 @@ public interface WgzAttendanceMapper extends BaseMapperPlus<WgzAttendance> {
List<BgtDayAttendanceCountVO> countDayByTaskId(@Param("taskId") Long taskId, @Param("beginDate")LocalDate beginDate
, @Param("endDate")LocalDate endDate);
List<ZbfDayAttendanceCountVO> countDayByProjectId(@Param("projectId") Long projectId, @Param("beginDate")LocalDate beginDate
, @Param("endDate")LocalDate endDate);
Integer dayTotalNum(@Param("taskId") Long taskId, @Param("date")LocalDate date);
Integer dayTotalNumByProjectId(@Param("projectId") Long projectId, @Param("date")LocalDate date);
Integer monthTotalNum(@Param("taskId") Long taskId, @Param("beginDate")LocalDate beginDate
, @Param("endDate")LocalDate endDate);
}

View File

@ -15,6 +15,7 @@ import com.ruoyi.wgz.bo.res.WgzAppCardReplacementApplicationRes;
import com.ruoyi.wgz.bo.res.WgzAppPunchTheCalendarRecordRes;
import com.ruoyi.wgz.bo.res.WgzAppUserClockingConditionRes;
import com.ruoyi.wgz.domain.WgzAttendance;
import com.ruoyi.zbf.domain.vo.ZbfDayAttendanceCountVO;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
@ -115,10 +116,20 @@ public interface IWgzAttendanceService extends IServicePlus<WgzAttendance> {
List<BgtDayAttendanceCountVO> countDayByTaskId(Long taskId, LocalDate beginDate, LocalDate endDate);
/**
* 统计某天应打卡人数
* 统计项目每天打卡情况
*/
List<ZbfDayAttendanceCountVO> countDayByProjectId(Long projectId, LocalDate beginDate, LocalDate endDate);
/**
* 统计任务某天应打卡人数
*/
Integer dayTotalNum(Long taskId,LocalDate date);
/**
* 统计项目某天应打卡人数
*/
Integer dayTotalNumByProjectId(Long projectId,LocalDate date);
Integer monthTotalNum(Long taskId,LocalDate beginDate, LocalDate endDate);
/**
* 总体考勤情况-统计

View File

@ -37,6 +37,7 @@ import com.ruoyi.wgz.domain.WgzReissueacard;
import com.ruoyi.wgz.mapper.WgzAttendanceMapper;
import com.ruoyi.wgz.service.IWgzAttendanceService;
import com.ruoyi.wgz.service.IWgzReissueacardService;
import com.ruoyi.zbf.domain.vo.ZbfDayAttendanceCountVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -459,11 +460,21 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl<WgzAttendanceMappe
return baseMapper.countDayByTaskId(taskId, beginDate, endDate);
}
@Override
public List<ZbfDayAttendanceCountVO> countDayByProjectId(Long projectId, LocalDate beginDate, LocalDate endDate) {
return baseMapper.countDayByProjectId(projectId, beginDate, endDate);
}
@Override
public Integer dayTotalNum(Long taskId,LocalDate date){
return baseMapper.dayTotalNum(taskId,date);
}
@Override
public Integer dayTotalNumByProjectId(Long projectId, LocalDate date) {
return baseMapper.dayTotalNumByProjectId(projectId,date);
}
@Override
public Integer monthTotalNum(Long taskId,LocalDate beginDate, LocalDate endDate){
return baseMapper.monthTotalNum(taskId,beginDate,endDate);

View File

@ -1,108 +0,0 @@
package com.ruoyi.zbf.controller;
import java.util.List;
import java.util.Arrays;
import com.ruoyi.zbf.domain.ZbfMessage;
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.zbf.bo.ZbfMessageQueryBo;
import com.ruoyi.zbf.service.IZbfMessageService;
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-03-31
*/
@Api(value = "消息控制器", tags = {"消息管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/zbf/message")
public class ZbfMessageController extends BaseController {
private final IZbfMessageService iZbfMessageService;
/**
* 查询消息列表
*/
@ApiOperation("查询消息列表")
@PreAuthorize("@ss.hasPermi('zbf:message:list')")
@GetMapping("/list")
public TableDataInfo<ZbfMessage> list(@Validated ZbfMessageQueryBo bo) {
return iZbfMessageService.queryPageList(bo);
}
/**
* 导出消息列表
*/
@ApiOperation("导出消息列表")
@PreAuthorize("@ss.hasPermi('zbf:message:export')")
@Log(title = "消息", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult<ZbfMessage> export(@Validated ZbfMessageQueryBo bo) {
List<ZbfMessage> list = iZbfMessageService.queryList(bo);
ExcelUtil<ZbfMessage> util = new ExcelUtil<ZbfMessage>(ZbfMessage.class);
return util.exportExcel(list, "消息");
}
/**
* 获取消息详细信息
*/
@ApiOperation("获取消息详细信息")
@PreAuthorize("@ss.hasPermi('zbf:message:query')")
@GetMapping("/{id}")
public AjaxResult<ZbfMessage> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return AjaxResult.success(iZbfMessageService.queryById(id));
}
/**
* 新增消息
*/
@ApiOperation("新增消息")
@PreAuthorize("@ss.hasPermi('zbf:message:add')")
@Log(title = "消息", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping()
public AjaxResult<Void> add(@Validated @RequestBody ZbfMessage bo) {
return toAjax(iZbfMessageService.insert(bo) ? 1 : 0);
}
/**
* 修改消息
*/
@ApiOperation("修改消息")
@PreAuthorize("@ss.hasPermi('zbf:message:edit')")
@Log(title = "消息", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
public AjaxResult<Void> edit(@Validated @RequestBody ZbfMessage bo) {
return toAjax(iZbfMessageService.update(bo) ? 1 : 0);
}
/**
* 删除消息
*/
@ApiOperation("删除消息")
@PreAuthorize("@ss.hasPermi('zbf:message:remove')")
@Log(title = "消息" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iZbfMessageService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
}
}

View File

@ -0,0 +1,21 @@
package com.ruoyi.zbf.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@ApiModel("总包方任务进度列表查询对象")
public class ZbfProgressListDTO {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("项目ID")
private Long projectId;
}

View File

@ -0,0 +1,25 @@
package com.ruoyi.zbf.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
@ApiModel("分包商项目分包申请列表查询条件")
public class ZbfProjectSubApplyListDTO {
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("分包ID")
@NotNull(message = "分包ID不能为空")
private Long subId;
@ApiModelProperty("名字")
private String username;
}

View File

@ -0,0 +1,19 @@
package com.ruoyi.zbf.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("分包商项目切换列表查询条件")
public class ZbfProjectSwitchListDTO {
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("项目名称")
private String projectName;
}

View File

@ -0,0 +1,19 @@
package com.ruoyi.zbf.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("分包商项目分包切换列表查询条件")
public class ZbfSubSwitchListDTO {
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("总包方用户")
private Long zbfUserId;
}

View File

@ -0,0 +1,26 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("总包方考勤统计")
public class ZbfAttendanceCountVO {
@ApiModelProperty("人员总数")
private Integer totalCount;
@ApiModelProperty("到岗人数")
private Integer reportToDutyNum;
@ApiModelProperty("到岗率")
private Integer rate;
@ApiModelProperty("列表")
List<ZbfDayAttendanceCountVO> countList;
}

View File

@ -0,0 +1,33 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.time.LocalDate;
/**
* 考勤打卡对象 wgz_attendance
*
* @author ruoyi
* @date 2025-02-20
*/
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("务工者每天考勤打卡统计对象")
public class ZbfDayAttendanceCountVO {
@ApiModelProperty("到岗人数")
private Integer reportToDutyNum;
@ApiModelProperty("日期")
private LocalDate date;
}

View File

@ -0,0 +1,23 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("总包方用工数量统计")
public class ZbfPersonCountVO {
@ApiModelProperty("人员总数")
private Integer totalCount;
@ApiModelProperty("班组长")
private Integer bgtCount;
@ApiModelProperty("务工者")
private Integer wgzCount;
}

View File

@ -0,0 +1,21 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@ApiModel("总包方项目进度列表视图对象")
public class ZbfProgressListVO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("进度")
private Integer progress;
@ApiModelProperty("项目名称")
private String taskName;
}

View File

@ -0,0 +1,27 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 包工头项目任务进度对象 bgt_project_task_progress
*
* @author ruoyi
* @date 2025-02-18
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("App总包方项目详情-任务进度视图对象")
public class ZbfProjectDetailProgressVO {
@ApiModelProperty("总进度")
private Integer totalProgress = 0;
@ApiModelProperty("进度")
private Integer progress = 0;
}

View File

@ -0,0 +1,21 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("总包方项目详情-标段信息")
public class ZbfProjectDetailSectionVO {
@ApiModelProperty("包总数")
private Integer subNumber;
@ApiModelProperty("标段列表")
private List<ZbfProjectSectionListVO> sectionList;
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("总包方项目详情")
public class ZbfProjectDetailVO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("单位名称")
private String unitName;
@ApiModelProperty("项目地址")
private String projectAddress;
@ApiModelProperty("项目图片")
private String projectImg;
@ApiModelProperty("项目状态(0-未开工1-已开工2已竣工3已停工)")
private String projectStatus;
}

View File

@ -0,0 +1,33 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* 包工头项目任务进度对象 bgt_project_task_progress
*
* @author ruoyi
* @date 2025-02-18
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("App总包方项目详情-付款情况视图对象")
public class ZbfProjectDetailWageVO {
@ApiModelProperty("总金额")
private BigDecimal totalAmount;
@ApiModelProperty("已结算金额")
private BigDecimal payAmount;
@ApiModelProperty("劳务工资")
private BigDecimal wgzAmount;
}

View File

@ -7,7 +7,7 @@ import lombok.Data;
import java.util.List;
@Data
@ApiModel("分包商项目列表")
@ApiModel("总包方项目列表")
public class ZbfProjectListVO {
@ApiModelProperty("主键ID")

View File

@ -7,7 +7,7 @@ import lombok.Data;
import java.util.List;
@Data
@ApiModel("分包商项目标段列表")
@ApiModel("总包方项目标段列表")
public class ZbfProjectSectionListVO {
@ApiModelProperty("主键ID")

View File

@ -0,0 +1,40 @@
package com.ruoyi.zbf.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("总包方项目分包申请列表")
public class ZbfProjectSubcontractingApplyListVO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("项目ID")
private Long projectId;
@ApiModelProperty("标段ID")
private Long sectionId;
@ApiModelProperty("分包ID")
private Long subId;
@ApiModelProperty("分包商用户ID")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long fbsUserId;
@ApiModelProperty("姓名")
private String username;
@ApiModelProperty("电话")
private String phone;
@ApiModelProperty("电话")
private String avatarName;
@ApiModelProperty("申请状态0申请中 1已同意 2已拒绝 3 已取消)")
private String applyStatus;
}

View File

@ -0,0 +1,53 @@
package com.ruoyi.zbf.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* 总包方项目分包对象 zbf_project_subcontracting
*
* @author ruoyi
* @date 2025-02-17
*/
@Data
@Accessors(chain = true)
@ApiModel("总包方项目分包详情视图对象")
public class ZbfProjectSubcontractingDetailVO {
/** 主键ID */
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("项目ID")
private Long projectId;
@ApiModelProperty("标段ID")
private Long sectionId;
@ApiModelProperty("标段名")
private String sectionName;
@ApiModelProperty("分包主题")
private String subName;
@ApiModelProperty("分包描述")
private String subDescribe;
@ApiModelProperty("分包金额")
private BigDecimal subAmount;
@ApiModelProperty("资质要求")
private String qualification;
@ApiModelProperty("分包商用户ID")
private Long userId;
@ApiModelProperty("备注")
private String remark;
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.zbf.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -7,7 +8,7 @@ import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel("分包商项目分包列表")
@ApiModel("总包方项目分包列表")
public class ZbfProjectSubcontractingListVO {
@ -36,6 +37,10 @@ public class ZbfProjectSubcontractingListVO {
@ApiModelProperty("资质要求")
private String qualification;
@ApiModelProperty("用户Id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long userId;
@ApiModelProperty("申请状态0=申请中,1=已同意,2=已拒绝,3=已取消)")
private String applyStatus;

View File

@ -0,0 +1,89 @@
package com.ruoyi.zbf.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.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 分包商工资申请对象 fbs_wage_application
*
* @author ruoyi
* @date 2025-03-26
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("总包方工资申请审核视图对象")
public class ZbfWageApplicationVO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("项目ID")
private Long projectId;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("标段ID")
private Long sectionId;
@ApiModelProperty("分包ID")
private Long subId;
@ApiModelProperty("分包主题")
private String subName;
@ApiModelProperty("任务地址(项目地址)")
private String projectAddress;
@ApiModelProperty("申请人ID")
private Long userId;
@ApiModelProperty("申请人")
private String username;
@ApiModelProperty("银行")
private String bank;
@ApiModelProperty("银行卡号")
private String cardNo;
@ApiModelProperty("联系电话")
private String phone;
@ApiModelProperty("申请金额")
private BigDecimal applicantAmount;
@ApiModelProperty("申请时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime applyTime;
@ApiModelProperty("用工情况")
private String employmentSituation;
@ApiModelProperty("完工情况")
private String completionSituation;
@ApiModelProperty("任务情况")
private String taskSituation;
@ApiModelProperty("审核状态1审核中 2已审核 3未通过")
private String auditStatus;
@ApiModelProperty("审核人Id")
private Long reviewerId;
@ApiModelProperty("审核人名字")
private String reviewerName;
@ApiModelProperty("备注")
private String remark;
}

View File

@ -7,6 +7,8 @@ import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.fbs.domain.dto.FbsProjectSectionListDTO;
import com.ruoyi.fbs.domain.vo.FbsProjectSectionListVO;
import com.ruoyi.zbf.domain.ZbfProjectSection;
import com.ruoyi.zbf.domain.dto.ZbfSubSwitchListDTO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSectionListVO;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
@ -23,4 +25,7 @@ public interface ZbfProjectSectionMapper extends BaseMapperPlus<ZbfProjectSectio
// 查询分包商已加入的项目标段
Page<FbsProjectSectionListVO> joinSectionList(@Param("page") Page<FbsProjectSectionListDTO> page, @Param("dto") FbsProjectSectionListDTO dto);
// 总包方分包切换列表
Page<ZbfProjectSectionListVO> zbfSubSwitchList(@Param("page") Page<ZbfSubSwitchListDTO> page, @Param("dto") ZbfSubSwitchListDTO dto);
}

View File

@ -1,9 +1,13 @@
package com.ruoyi.zbf.mapper;
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
import com.ruoyi.zbf.domain.dto.ZbfProjectSubApplyListDTO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSubcontractingApplyListVO;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
/**
* 总包方项目分包申请Mapper接口
@ -15,4 +19,7 @@ import org.apache.ibatis.annotations.CacheNamespace;
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
public interface ZbfProjectSubcontractingApplyMapper extends BaseMapperPlus<ZbfProjectSubcontractingApply> {
//总包方获取分包商申请列表
Page<ZbfProjectSubcontractingApplyListVO> getFbsList(@Param("page") Page<ZbfProjectSubApplyListDTO> page, @Param("dto") ZbfProjectSubApplyListDTO dto);
}

View File

@ -7,6 +7,8 @@ import com.ruoyi.fbs.domain.dto.FbsProjectSectionListDTO;
import com.ruoyi.fbs.domain.vo.FbsProjectSectionListVO;
import com.ruoyi.zbf.bo.ZbfProjectSectionQueryBo;
import com.ruoyi.zbf.domain.ZbfProjectSection;
import com.ruoyi.zbf.domain.dto.ZbfSubSwitchListDTO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSectionListVO;
import java.util.Collection;
import java.util.List;
@ -61,4 +63,10 @@ public interface IZbfProjectSectionService extends IServicePlus<ZbfProjectSectio
* 分包商查询自己的项目分包列表
*/
TableDataInfo<FbsProjectSectionListVO> fbsSubList(FbsProjectSectionListDTO dto) ;
/**
* 总包方分包切换列表
*/
TableDataInfo<ZbfProjectSectionListVO> zbfSubSwitchList(ZbfSubSwitchListDTO dto);
}

View File

@ -8,10 +8,11 @@ import com.ruoyi.fbs.domain.dto.FbsProjectListDTO;
import com.ruoyi.fbs.domain.vo.*;
import com.ruoyi.zbf.bo.ZbfProjectQueryBo;
import com.ruoyi.zbf.domain.ZbfProject;
import com.ruoyi.zbf.domain.dto.ZbfProgressListDTO;
import com.ruoyi.zbf.domain.dto.ZbfProjectAddDTO;
import com.ruoyi.zbf.domain.dto.ZbfProjectListDTO;
import com.ruoyi.zbf.domain.vo.ZbfProjectCountVO;
import com.ruoyi.zbf.domain.vo.ZbfProjectListVO;
import com.ruoyi.zbf.domain.dto.ZbfProjectSwitchListDTO;
import com.ruoyi.zbf.domain.vo.*;
import java.util.Collection;
import java.util.List;
@ -139,10 +140,57 @@ public interface IZbfProjectService extends IServicePlus<ZbfProject> {
TableDataInfo<ZbfProjectListVO> queryZbfList(ZbfProjectListDTO dto);
/**
* 总包方查询自建项目统计
* 总包方项目统计
*/
ZbfProjectCountVO projectCount();
/**
* 总包方项目列表(精简)
*/
TableDataInfo<ZbfProject> conciseList(ZbfProjectListDTO dto);
/**
* 总包方项目信息
*/
ZbfProjectDetailVO zbfInfo(Long id);
/**
* 总包方项目详情-标段信息
*/
ZbfProjectDetailSectionVO sectionInfo(Long id);
/**
* 总包方项目详情-用工数量
*/
ZbfPersonCountVO personCount(Long id);
/**
* 总包方项目详情-考勤情况
*/
ZbfAttendanceCountVO attendanceCount(Long id);
/**
* 总包方项目详情-用工进度
*/
ZbfProjectDetailProgressVO zbfProgress(Long projectId);
/**
* 总包方项目详情-用工进度列表
*/
TableDataInfo<ZbfProgressListVO> zbfProgressList(ZbfProgressListDTO dto);
/**
* 总包方项目详情-付款情况
*/
ZbfProjectDetailWageVO zbfWage(Long projectId);
/**
* 总包方项目详情-付款情况查看更多
*/
TableDataInfo<ZbfWageApplicationVO> zbfWageList(Long projectId);
/**
* 总包方项目详情-项目切换
*/
TableDataInfo<ZbfProject> zbfSwitchList(ZbfProjectSwitchListDTO dto);
}

View File

@ -1,9 +1,11 @@
package com.ruoyi.zbf.service;
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
import com.ruoyi.zbf.bo.ZbfProjectSubcontractingApplyQueryBo;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.zbf.bo.ZbfProjectSubcontractingApplyQueryBo;
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
import com.ruoyi.zbf.domain.dto.ZbfProjectSubApplyListDTO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSubcontractingApplyListVO;
import java.util.Collection;
import java.util.List;
@ -57,4 +59,11 @@ public interface IZbfProjectSubcontractingApplyService extends IServicePlus<ZbfP
* 总包方选择分包商
*/
Boolean choose(Long id);
/**
* 总包方查看分包商申请列表
*/
TableDataInfo<ZbfProjectSubcontractingApplyListVO> getFbsList(ZbfProjectSubApplyListDTO dto);
}

View File

@ -53,4 +53,5 @@ public interface IZbfProjectSubcontractingService extends IServicePlus<ZbfProjec
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -3,6 +3,7 @@ package com.ruoyi.zbf.service;
import com.ruoyi.common.core.domain.entity.ZbfUser;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO;
import com.ruoyi.zbf.bo.ZbfUserQueryBo;
import java.util.Collection;
@ -62,4 +63,9 @@ public interface IZbfUserService extends IServicePlus<ZbfUser> {
* 通过userId查询用户
*/
ZbfUser selectUserByUserId(Long userId);
/**
* 企业认证
*/
Long authenticate(CompanyAuthenticateDTO dto);
}

View File

@ -15,6 +15,9 @@ import com.ruoyi.fbs.domain.vo.FbsProjectSubcontractingListVO;
import com.ruoyi.zbf.bo.ZbfProjectSectionQueryBo;
import com.ruoyi.zbf.domain.ZbfProjectSection;
import com.ruoyi.zbf.domain.ZbfProjectSubcontracting;
import com.ruoyi.zbf.domain.dto.ZbfSubSwitchListDTO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSectionListVO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSubcontractingListVO;
import com.ruoyi.zbf.mapper.ZbfProjectSectionMapper;
import com.ruoyi.zbf.service.IZbfProjectSectionService;
import com.ruoyi.zbf.service.IZbfProjectSubcontractingService;
@ -121,4 +124,31 @@ public class ZbfProjectSectionServiceImpl extends ServicePlusImpl<ZbfProjectSect
return PageUtils.buildDataInfo(queryVOPage);
}
@Override
public TableDataInfo<ZbfProjectSectionListVO> zbfSubSwitchList(ZbfSubSwitchListDTO dto) {
Page<ZbfSubSwitchListDTO> queryDTOPage = new Page<>();
queryDTOPage.setCurrent(dto.getPageNum());
queryDTOPage.setSize(dto.getPageSize());
dto.setZbfUserId(SecurityUtils.getAppUserId());
Page<ZbfProjectSectionListVO> queryVOPage = baseMapper.zbfSubSwitchList(queryDTOPage, dto);
for (ZbfProjectSectionListVO sectionListVO : queryVOPage.getRecords()){
//分包处理
List<ZbfProjectSubcontractingListVO> subListVO = new ArrayList<>();
//查询标段下的所有的分包
List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery()
.eq(ZbfProjectSubcontracting::getSectionId, sectionListVO.getId())
);
for (ZbfProjectSubcontracting sub : subList){
ZbfProjectSubcontractingListVO zbfProjectSubcontractingListVO = new ZbfProjectSubcontractingListVO();
BeanUtil.copyProperties(sub, zbfProjectSubcontractingListVO);
zbfProjectSubcontractingListVO.setProjectAddress(sectionListVO.getProjectAddress());
subListVO.add(zbfProjectSubcontractingListVO);
}
sectionListVO.setSubList(subListVO);
}
return PageUtils.buildDataInfo(queryVOPage);
}
}

View File

@ -6,14 +6,18 @@ 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.domain.BgtProjectRecruitApply;
import com.ruoyi.bgt.domain.BgtProjectTaskProgress;
import com.ruoyi.bgt.domain.BgtWageApplication;
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
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.ProjectStatus;
import com.ruoyi.common.enums.RecruitApplyStatus;
import com.ruoyi.common.enums.SubcontractingApplyStatus;
import com.ruoyi.common.util.DataUtil;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.fbs.domain.FbsProjectTask;
@ -23,19 +27,14 @@ import com.ruoyi.fbs.domain.dto.FbsProjectListDTO;
import com.ruoyi.fbs.domain.vo.*;
import com.ruoyi.fbs.service.IFbsProjectTaskService;
import com.ruoyi.fbs.service.IFbsWageApplicationService;
import com.ruoyi.wgz.service.IWgzAttendanceService;
import com.ruoyi.zbf.bo.ZbfProjectQueryBo;
import com.ruoyi.zbf.domain.ZbfProject;
import com.ruoyi.zbf.domain.ZbfProjectSection;
import com.ruoyi.zbf.domain.ZbfProjectSubcontracting;
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
import com.ruoyi.zbf.domain.dto.ZbfProjectAddDTO;
import com.ruoyi.zbf.domain.dto.ZbfProjectListDTO;
import com.ruoyi.zbf.domain.dto.ZbfProjectSectionAddDTO;
import com.ruoyi.zbf.domain.dto.ZbfProjectSubcontractingAddDTO;
import com.ruoyi.zbf.domain.vo.ZbfProjectCountVO;
import com.ruoyi.zbf.domain.vo.ZbfProjectListVO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSectionListVO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSubcontractingListVO;
import com.ruoyi.zbf.domain.dto.*;
import com.ruoyi.zbf.domain.vo.*;
import com.ruoyi.zbf.mapper.ZbfProjectMapper;
import com.ruoyi.zbf.service.IZbfProjectSectionService;
import com.ruoyi.zbf.service.IZbfProjectService;
@ -46,6 +45,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@ -72,6 +73,11 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
private IFbsWageApplicationService fbsWageApplicationService;
@Autowired
private IBgtWageApplicationService bgtWageApplicationService;
@Autowired
private IBgtProjectRecruitApplyService bgtProjectRecruitApplyService;
@Autowired
private IWgzAttendanceService wgzAttendanceService;
@Override
public ZbfProject queryById(Long id) {
@ -632,9 +638,161 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
List<ZbfProject> list = list(wrapper);
zbfProjectCountVO.setAllCount(list.size());
long startCount = list.stream().filter(zbfProject -> StrUtil.equals(zbfProject.getProjectStatus(), ProjectStatus.START.getCode())).count();
long completeCcount = list.stream().filter(zbfProject -> StrUtil.equals(zbfProject.getProjectStatus(), ProjectStatus.COMPLETE.getCode())).count();
long completeCount = list.stream().filter(zbfProject -> StrUtil.equals(zbfProject.getProjectStatus(), ProjectStatus.COMPLETE.getCode())).count();
zbfProjectCountVO.setStartCount((int) startCount);
zbfProjectCountVO.setCompleteCount((int) completeCcount);
zbfProjectCountVO.setCompleteCount((int) completeCount);
return zbfProjectCountVO;
}
@Override
public TableDataInfo<ZbfProject> conciseList(ZbfProjectListDTO dto) {
LambdaQueryWrapper<ZbfProject> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ZbfProject::getUserId, SecurityUtils.getAppUserId());
wrapper.like(StrUtil.isNotBlank(dto.getProjectName()), ZbfProject::getProjectName, dto.getProjectName());
wrapper.eq(StrUtil.isNotBlank(dto.getProjectStatus()), ZbfProject::getProjectStatus, dto.getProjectStatus());
Page<ZbfProject> result = page(PageUtils.buildPage(), wrapper);
return PageUtils.buildDataInfo(result);
}
@Override
public ZbfProjectDetailVO zbfInfo(Long id) {
ZbfProject project = getById(id);
return BeanUtil.copyProperties(project, ZbfProjectDetailVO.class);
}
@Override
public ZbfProjectDetailSectionVO sectionInfo(Long id) {
ZbfProjectDetailSectionVO zbfProjectDetailSectionVO = new ZbfProjectDetailSectionVO();
//标段处理
List<ZbfProjectSectionListVO> sectionListVO = new ArrayList<>();
int subNumber = 0;
//查询项目下的所有标段
List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery()
.eq(ZbfProjectSection::getProjectId, id));
for (ZbfProjectSection zbfProjectSection : sectionList) {
//查询标段下的所有的分包
List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery()
.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()));
ZbfProjectSectionListVO zbfProjectSectionListVO = new ZbfProjectSectionListVO();
BeanUtil.copyProperties(zbfProjectSection, zbfProjectSectionListVO);
zbfProjectSectionListVO.setSubList(BeanUtil.copyToList(subList, ZbfProjectSubcontractingListVO.class));
subNumber += subList.size();
sectionListVO.add(zbfProjectSectionListVO);
}
zbfProjectDetailSectionVO.setSectionList(sectionListVO);
zbfProjectDetailSectionVO.setSubNumber(subNumber);
return zbfProjectDetailSectionVO;
}
@Override
public ZbfPersonCountVO personCount(Long id) {
ZbfPersonCountVO zbfPersonCountVO = new ZbfPersonCountVO();
List<FbsProjectTask> list = fbsProjectTaskService.list(Wrappers.<FbsProjectTask>lambdaQuery()
.eq(FbsProjectTask::getProjectId, id)
.isNotNull(FbsProjectTask::getUserId)
);
zbfPersonCountVO.setBgtCount(list.size());
List<Long> taskIds = list.stream().map(FbsProjectTask::getId).collect(Collectors.toList());
zbfPersonCountVO.setWgzCount(0);
if(CollectionUtil.isNotEmpty(taskIds)){
//任务下的招工
List<BgtProjectRecruitApply> recruitApplyList = bgtProjectRecruitApplyService.list(Wrappers.<BgtProjectRecruitApply>lambdaQuery()
.in(BgtProjectRecruitApply::getTaskId, taskIds)
.in(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.getWorkStatus())
);
zbfPersonCountVO.setWgzCount(recruitApplyList.size());
}
zbfPersonCountVO.setTotalCount(zbfPersonCountVO.getBgtCount()+zbfPersonCountVO.getWgzCount());
return zbfPersonCountVO;
}
@Override
public ZbfAttendanceCountVO attendanceCount(Long id) {
ZbfAttendanceCountVO vo = new ZbfAttendanceCountVO();
LocalDate now = LocalDate.now();
LocalDate previousDate = now.minusDays(7);
List<ZbfDayAttendanceCountVO> zbfDayAttendanceCountVOS = wgzAttendanceService.countDayByProjectId(id, previousDate, now);
List<ZbfDayAttendanceCountVO> countList = DataUtil.zbfFillMissingDates(zbfDayAttendanceCountVOS, previousDate, now);
ZbfDayAttendanceCountVO zbfDayAttendanceCountVO = countList.get(countList.size() - 1);
vo.setReportToDutyNum(zbfDayAttendanceCountVO.getReportToDutyNum());
vo.setCountList(countList);
Integer total = wgzAttendanceService.dayTotalNumByProjectId(id, now);
vo.setTotalCount(total);
vo.setRate(0);
if(total!=null && total>0){
int rate = new BigDecimal(vo.getReportToDutyNum()).divide(new BigDecimal(total), 2, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)).intValue();
vo.setRate(rate);
}
return vo;
}
@Override
public ZbfProjectDetailProgressVO zbfProgress(Long projectId) {
//查询所有创建的任务
List<FbsProjectTask> taskList = fbsProjectTaskService.list(Wrappers.<FbsProjectTask>lambdaQuery()
.eq(FbsProjectTask::getProjectId, projectId)
);
ZbfProjectDetailProgressVO vo = new ZbfProjectDetailProgressVO();
List<Long> taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(taskIds)){
List<BgtProjectTaskProgress> progressByTaskIds = bgtProjectTaskProgressService.getProgressByTaskIds(taskIds);
vo.setProgress(progressByTaskIds.stream().mapToInt(BgtProjectTaskProgress::getProgress).sum());
vo.setTotalProgress(taskList.size() * 100);
}
return vo;
}
@Override
public TableDataInfo<ZbfProgressListVO> zbfProgressList(ZbfProgressListDTO dto) {
Page<ZbfProgressListVO> voPage = new Page<>();
//查询所有创建的任务
List<FbsProjectTask> taskList = fbsProjectTaskService.list(Wrappers.<FbsProjectTask>lambdaQuery()
.eq(FbsProjectTask::getProjectId, dto)
);
List<Long> taskIds = taskList.stream().map(FbsProjectTask::getId).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(taskIds)){
TableDataInfo<BgtProjectTaskProgress> progressByTaskIds = bgtProjectTaskProgressService.getProgressByTaskIds(dto.getPageSize(), dto.getPageNum(), taskIds);
voPage.setTotal(progressByTaskIds.getTotal());
voPage.setRecords(BeanUtil.copyToList(progressByTaskIds.getRows(), ZbfProgressListVO.class));
}
return PageUtils.buildDataInfo(voPage);
}
@Override
public ZbfProjectDetailWageVO zbfWage(Long projectId) {
ZbfProjectDetailWageVO vo = new ZbfProjectDetailWageVO();
List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery()
.eq(ZbfProjectSubcontracting::getProjectId, projectId)
);
List<Long> subIds = subList.stream().map(ZbfProjectSubcontracting::getId).collect(Collectors.toList());
//总金额
BigDecimal totalAmount = subList.stream().map(ZbfProjectSubcontracting::getSubAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
vo.setTotalAmount(totalAmount);
//接收金额
vo.setPayAmount(BigDecimal.ZERO);
if(CollectionUtil.isNotEmpty(subIds)){
List<FbsWageApplication> passList= fbsWageApplicationService.getPassListBySubIds(subIds);
BigDecimal payAmount = passList.stream().map(FbsWageApplication::getApplicantAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
vo.setPayAmount(payAmount);
}
return vo;
}
@Override
public TableDataInfo<ZbfWageApplicationVO> zbfWageList(Long projectId) {
return null;
}
@Override
public TableDataInfo<ZbfProject> zbfSwitchList(ZbfProjectSwitchListDTO dto) {
LambdaQueryWrapper<ZbfProject> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ZbfProject::getUserId, SecurityUtils.getAppUserId());
wrapper.like(StrUtil.isNotBlank(dto.getProjectName()), ZbfProject::getProjectName, dto.getProjectName());
Page<ZbfProject> result = page(PageUtils.buildPage(), wrapper);
return PageUtils.buildDataInfo(result);
}
}

View File

@ -22,6 +22,8 @@ import com.ruoyi.zbf.domain.ZbfMessage;
import com.ruoyi.zbf.domain.ZbfProject;
import com.ruoyi.zbf.domain.ZbfProjectSubcontracting;
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
import com.ruoyi.zbf.domain.dto.ZbfProjectSubApplyListDTO;
import com.ruoyi.zbf.domain.vo.ZbfProjectSubcontractingApplyListVO;
import com.ruoyi.zbf.mapper.ZbfProjectSubcontractingApplyMapper;
import com.ruoyi.zbf.service.IZbfMessageService;
import com.ruoyi.zbf.service.IZbfProjectService;
@ -231,4 +233,13 @@ public class ZbfProjectSubcontractingApplyServiceImpl extends ServicePlusImpl<Zb
// fbsMessageService.operationBatch(USERTYPE_FBS,SecurityUtils.getAppUserId(),list.stream().map(FbsProjectTaskApply::getId).collect(Collectors.toList()),SqlHelper.table(FbsProjectTaskApply.class).getTableName());
return super.updateBatchById(list);
}
@Override
public TableDataInfo<ZbfProjectSubcontractingApplyListVO> getFbsList(ZbfProjectSubApplyListDTO dto) {
Page<ZbfProjectSubApplyListDTO> queryDTOPage = new Page<>();
queryDTOPage.setCurrent(dto.getPageNum());
queryDTOPage.setSize(dto.getPageSize());
Page<ZbfProjectSubcontractingApplyListVO> fbsList = baseMapper.getFbsList(queryDTOPage, dto);
return PageUtils.buildDataInfo(fbsList);
}
}

View File

@ -8,10 +8,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.entity.ZbfUser;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.domain.Company;
import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO;
import com.ruoyi.common.service.ICompanyService;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.zbf.bo.ZbfUserQueryBo;
import com.ruoyi.zbf.mapper.ZbfUserMapper;
import com.ruoyi.zbf.service.IZbfUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
@ -27,6 +32,9 @@ import java.util.Map;
@Service
public class ZbfUserServiceImpl extends ServicePlusImpl<ZbfUserMapper, ZbfUser> implements IZbfUserService {
@Autowired
private ICompanyService companyService;
@Override
public ZbfUser queryById(Long id){
return getById(id);
@ -107,4 +115,14 @@ public class ZbfUserServiceImpl extends ServicePlusImpl<ZbfUserMapper, ZbfUser>
public ZbfUser selectUserByUserId(Long userId) {
return baseMapper.selectOne(new LambdaQueryWrapper<ZbfUser>().eq(ZbfUser::getUserId, userId));
}
@Override
public Long authenticate(CompanyAuthenticateDTO dto) {
Company company = BeanUtil.copyProperties(dto, Company.class);
companyService.save(company);
ZbfUser zbfUser = selectUserByUserId(SecurityUtils.getAppUserId());
zbfUser.setCompanyId(company.getId());
updateById(zbfUser);
return company.getId();
}
}

View File

@ -288,7 +288,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bpra.task_id
from bgt_project_recruit_apply bpra
left join wgz_user wu on bpra.user_id = wu.user_id
left join fbs_project_task fpt on fpt.id = bpr.task_id
left join fbs_project_task fpt on fpt.id = bpra.task_id
<where>
<if test="dto.username !=null and dto.username !='' ">
and wu.username like concat('%', #{dto.username}, '%')
@ -303,7 +303,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND bpra.status in ('5','6')
</if>
</where>
order by bpra.create_time desc
order by bpra.id desc
</select>

View File

@ -82,7 +82,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bwa.id,
bwa.username,
bwa.project_name,
bwa.audit_status
bwa.audit_status,
bwa.employment_situation,
bwa.completion_situation,
bwa.task_situation
from bgt_wage_application bwa
<where>
<if test="dto.reviewerId != null ">

View File

@ -52,12 +52,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
group by date order by date
</select>
<select id="countDayByProjectId" resultType="com.ruoyi.zbf.domain.vo.ZbfDayAttendanceCountVO">
select count(1) as reportToDutyNum,
date
from wgz_attendance
where date between #{beginDate} and #{endDate}
and (clock_in_time is not null or clock_out_time is not null)
and recruit_id in (select id from bgt_project_recruit where project_id = #{projectId} )
group by date order by date
</select>
<select id="dayTotalNum" resultType="Integer">
select count(1) from bgt_project_recruit_apply where entry_time &lt;= #{date} and ((leave_time is null and status = '5')or leave_time>=#{date})
and recruit_id in (select id from bgt_project_recruit where task_id = #{taskId} )
</select>
<select id="dayTotalNumByProjectId" resultType="Integer">
select count(1) from bgt_project_recruit_apply where entry_time &lt;= #{date} and ((leave_time is null and status = '5')or leave_time>=#{date})
and recruit_id in (select id from bgt_project_recruit where project_id = #{projectId} )
</select>
<select id="monthTotalNum" resultType="Integer">
select count(1)
from bgt_project_recruit_apply

View File

@ -31,4 +31,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="zbfSubSwitchList" resultType="com.ruoyi.zbf.domain.vo.ZbfProjectSectionListVO">
SELECT zps.id,zps.project_id,zps.section_name
FROM zbf_project_section zps
left JOIN zbf_project zp ON zps.project_id = zp.id
WHERE zp.user_id = #{dto.zbfUserId}
</select>
</mapper>

View File

@ -19,5 +19,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="remark" column="remark"/>
</resultMap>
<select id="getFbsList" resultType="com.ruoyi.zbf.domain.vo.ZbfProjectSubcontractingApplyListVO">
select zpsa.id,
zpsa.project_id,
zpsa.section_id,
zpsa.sub_id,
zpsa.fbs_user_id,
zpsa.apply_status,
fu.username,
fu.phone,
fu.avatar_name
from zbf_project_subcontracting_apply zpsa left join fbs_user fu on zpsa.fbs_user_id = fu.user_id
where zpsa.sub_id = #{dto.subId}
<if test="dto.username != null and dto.username != ''">
and fu.username like concat('%', #{dto.username}, '%')
</if>
</select>
</mapper>