package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.mapper.ProjectMainMapper;
import com.ruoyi.system.model.ContractTemplate;
import com.ruoyi.system.model.ProjectMain;
import com.ruoyi.system.query.ProjectMainListQuery;
import com.ruoyi.system.query.ProjectPhaseListQuery;
import com.ruoyi.system.service.ProjectMainService;
import com.ruoyi.system.vo.ProjectMainListVO;
import com.ruoyi.system.vo.ProjectPhaseListVO;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
/**
*
* 项目主表 服务实现类
*
*
* @author WuGuanFengYue
* @since 2025-10-16
*/
@Service
public class ProjectMainServiceImpl extends ServiceImpl implements ProjectMainService {
@Override
public PageInfo pageList(ProjectMainListQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = this.baseMapper.pageList(query, pageInfo);
pageInfo.setRecords(list);
return pageInfo;
}
public static void main(String[] args) {
LocalDate date1 = LocalDate.of(2023, 1, 10);
LocalDate date2 = LocalDate.of(2023, 1, 1);
long daysBetween = ChronoUnit.DAYS.between(date1, date2);
System.out.println(daysBetween); // 输出: 9
}
@Override
public PageInfo pageListPhase(ProjectPhaseListQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = this.baseMapper.pageListPhase(query, pageInfo);
for (ProjectPhaseListVO projectPhaseListVO : list) {
LocalDate createTime = projectPhaseListVO.getCreateTime().toLocalDate();
LocalDate settleTime = projectPhaseListVO.getSettleTime();
if (createTime.isAfter(settleTime)){
projectPhaseListVO.setSettleTimeRange(0);
}else{
long daysBetween = ChronoUnit.DAYS.between(createTime, settleTime)+1;
projectPhaseListVO.setSettleTimeRange((int) daysBetween);
}
// 根据settleTime 赋值warningStatus,红灯:办结时限前一周橙灯:办结时限前15天 黄灯:办结时限前30天 绿灯:正常状态,未到办结事项预警时限或已办结
if (StringUtils.hasLength(projectPhaseListVO.getFileUrl())){
projectPhaseListVO.setWarningStatus(1);
}else{
if (projectPhaseListVO.getSettleTime().isBefore(LocalDate.now().plusDays(7))) {
projectPhaseListVO.setWarningStatus(4);
} else if (projectPhaseListVO.getSettleTime().isBefore(LocalDate.now().plusDays(15))) {
projectPhaseListVO.setWarningStatus(3);
} else if (projectPhaseListVO.getSettleTime().isBefore(LocalDate.now().plusDays(30))) {
projectPhaseListVO.setWarningStatus(2);
} else {
projectPhaseListVO.setWarningStatus(1);
}
}
}
pageInfo.setRecords(list);
return pageInfo;
}
}