This commit is contained in:
zt
2025-04-16 17:31:18 +08:00
parent 57e0061da9
commit 48d38d1962
52 changed files with 927 additions and 88 deletions

View File

@ -0,0 +1,46 @@
package com.ruoyi.zbf.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 org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
/**
* 消息对象 bgt_message
*
* @author ruoyi
* @date 2025-02-25
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("总包方消息详情查询对象")
public class ZbfMessageDetailDTO {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate date;
@ApiModelProperty("大类型字典fbs_message_large_type")
private String messageLargeType;
@ApiModelProperty("小类型字典fbs_message_small_type")
private String messageSmallType;
@ApiModelProperty("是否待处理")
private Boolean isHandle = false;
}

View File

@ -0,0 +1,28 @@
package com.ruoyi.zbf.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 消息对象 bgt_message
*
* @author ruoyi
* @date 2025-02-25
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("消息列表查询对象")
public class ZbfMessageMyListDTO {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
}

View File

@ -14,7 +14,7 @@ import javax.validation.constraints.NotNull;
*/
@Data
@ApiModel("App包工头工资申请分页查询对象")
@ApiModel("App总包方工资申请审核")
public class ZbfWageAuditDTO {
@ApiModelProperty("主键ID")
@ -24,5 +24,6 @@ public class ZbfWageAuditDTO {
@ApiModelProperty("审核状态1审核中 2已审核 3未通过")
private String auditStatus;
@ApiModelProperty("审核意见")
private String auditOpinion;
}

View File

@ -0,0 +1,36 @@
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.io.Serializable;
/**
* 消息对象 bgt_message
*
* @author ruoyi
* @date 2025-02-25
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("分包商未读消息统计视图对象")
public class ZbfMessageCountVO implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty("项目消息")
private Integer taskMessageCount;
@ApiModelProperty("结算消息")
private Integer settlementMessageCount;
@ApiModelProperty("其他消息")
private Integer otherMessageCount;
@ApiModelProperty("待处理消息")
private Integer handleMessageCount;
}

View File

@ -0,0 +1,58 @@
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.io.Serializable;
import java.time.LocalDateTime;
/**
* 消息对象 bgt_message
*
* @author ruoyi
* @date 2025-02-25
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("总包方消息列表详情视图对象")
public class ZbfMessageDetailVO implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty("主键自增ID")
private Long id;
@ApiModelProperty("发送人")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long senderId;
@ApiModelProperty("表ID")
private Long tableId;
@ApiModelProperty("标题")
private String headline;
@ApiModelProperty("副标题")
private String subheading;
@ApiModelProperty("大类型字典fbs_message_large_type")
private String messageLargeType;
@ApiModelProperty("小类型字典fbs_message_small_type")
private String messageSmallType;
@ApiModelProperty("读状态0未读 1已读")
private String readStatus;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime createTime;
@ApiModelProperty("是否需要操作0不需要 1需要 2已操作")
private String isOperation ;
}

View File

@ -0,0 +1,55 @@
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.io.Serializable;
import java.time.LocalDateTime;
/**
* 消息对象 bgt_message
*
* @author ruoyi
* @date 2025-02-25
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("总包方消息列表视图对象")
public class ZbfMessageVO implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty("主键自增ID")
private Long id;
@ApiModelProperty("表ID")
private Long tableId;
@ApiModelProperty("发送人")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long senderId;
@ApiModelProperty("标题")
private String headline;
@ApiModelProperty("副标题")
private String subheading;
@ApiModelProperty("大类型字典fbs_message_large_type")
private String messageLargeType;
@ApiModelProperty("小类型字典fbs_message_small_type")
private String messageSmallType;
@ApiModelProperty("读状态0未读 1已读")
private String readStatus;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -4,6 +4,11 @@ import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.zbf.bo.ZbfMessageQueryBo;
import com.ruoyi.zbf.domain.ZbfMessage;
import com.ruoyi.zbf.domain.dto.ZbfMessageDetailDTO;
import com.ruoyi.zbf.domain.dto.ZbfMessageMyListDTO;
import com.ruoyi.zbf.domain.vo.ZbfMessageCountVO;
import com.ruoyi.zbf.domain.vo.ZbfMessageDetailVO;
import com.ruoyi.zbf.domain.vo.ZbfMessageVO;
import java.util.Collection;
import java.util.List;
@ -68,5 +73,18 @@ public interface IZbfMessageService extends IServicePlus<ZbfMessage> {
*/
void operationBatch(String recipientType,Long recipientId,List<Long> tableIds,String tableName);
/**
* 总包方的未读消息统计
*/
ZbfMessageCountVO countUnread();
/**
* 总包方消息列表
*/
TableDataInfo<ZbfMessageVO> queryMyPageList(ZbfMessageMyListDTO dto);
/**
* 消息详情列表
*/
TableDataInfo<ZbfMessageDetailVO> queryDetailPageList(ZbfMessageDetailDTO dto);
}

View File

@ -8,18 +8,28 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BgtMessageType;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.zbf.bo.ZbfMessageQueryBo;
import com.ruoyi.zbf.domain.ZbfMessage;
import com.ruoyi.zbf.domain.dto.ZbfMessageDetailDTO;
import com.ruoyi.zbf.domain.dto.ZbfMessageMyListDTO;
import com.ruoyi.zbf.domain.vo.ZbfMessageCountVO;
import com.ruoyi.zbf.domain.vo.ZbfMessageDetailVO;
import com.ruoyi.zbf.domain.vo.ZbfMessageVO;
import com.ruoyi.zbf.mapper.ZbfMessageMapper;
import com.ruoyi.zbf.service.IZbfMessageService;
import org.springframework.stereotype.Service;
import java.time.LocalTime;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.OPERATION_ALREADY;
import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.OPERATION_NEED;
/**
* 消息Service业务层处理
@ -124,4 +134,52 @@ public class ZbfMessageServiceImpl extends ServicePlusImpl<ZbfMessageMapper, Zbf
update(wrapper);
}
@Override
public ZbfMessageCountVO countUnread() {
List<ZbfMessage> zbfMessages = baseMapper.selectList(Wrappers.<ZbfMessage>lambdaQuery()
.eq(ZbfMessage::getRecipientId, SecurityUtils.getAppUserId())
.eq(ZbfMessage::getReadStatus, "0"));
Map<String, Long> map = zbfMessages.stream().collect(Collectors.groupingBy(ZbfMessage::getMessageLargeType, Collectors.counting()));
ZbfMessageCountVO zbfMessageCountVO = new ZbfMessageCountVO();
zbfMessageCountVO.setTaskMessageCount(map.getOrDefault(BgtMessageType.TASK.getCode(), 0L).intValue());
zbfMessageCountVO.setSettlementMessageCount(map.getOrDefault(BgtMessageType.SETTLEMENT.getCode(), 0L).intValue());
zbfMessageCountVO.setOtherMessageCount(map.getOrDefault(BgtMessageType.OTHER.getCode(), 0L).intValue());
Integer handle = baseMapper.selectCount(Wrappers.<ZbfMessage>lambdaQuery()
.eq(ZbfMessage::getRecipientId, SecurityUtils.getAppUserId())
.eq(ZbfMessage::getIsOperation, OPERATION_NEED));
zbfMessageCountVO.setHandleMessageCount(handle);
return zbfMessageCountVO;
}
@Override
public TableDataInfo<ZbfMessageVO> queryMyPageList(ZbfMessageMyListDTO dto) {
LambdaQueryWrapper<ZbfMessage> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ZbfMessage::getRecipientId, SecurityUtils.getAppUserId());
wrapper.orderByDesc(ZbfMessage::getCreateTime);
Page<ZbfMessage> result = page(PageUtils.buildPage(), wrapper);
Page<ZbfMessageVO> page = new Page<>();
page.setTotal(result.getTotal());
page.setRecords(BeanUtil.copyToList(result.getRecords(), ZbfMessageVO.class));
return PageUtils.buildDataInfo(page);
}
@Override
public TableDataInfo<ZbfMessageDetailVO> queryDetailPageList(ZbfMessageDetailDTO dto) {
LambdaQueryWrapper<ZbfMessage> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ZbfMessage::getRecipientId, SecurityUtils.getAppUserId());
wrapper.eq(StrUtil.isNotBlank(dto.getMessageLargeType()), ZbfMessage::getMessageLargeType, dto.getMessageLargeType());
wrapper.eq(StrUtil.isNotBlank(dto.getMessageSmallType()), ZbfMessage::getMessageSmallType, dto.getMessageSmallType());
wrapper.eq(dto.getIsHandle(), ZbfMessage::getIsOperation,OPERATION_NEED);
if(dto.getDate() != null) {
wrapper.between(ZbfMessage::getCreateTime, dto.getDate().atStartOfDay(), dto.getDate().atStartOfDay().with(LocalTime.MAX));
}
wrapper.orderByDesc(ZbfMessage::getId);
Page<ZbfMessage> result = page(PageUtils.buildPage(), wrapper);
Page<ZbfMessageDetailVO> page = new Page<>();
page.setTotal(result.getTotal());
page.setRecords(BeanUtil.copyToList(result.getRecords(), ZbfMessageDetailVO.class));
return PageUtils.buildDataInfo(page);
}
}