feat(business): 增加查询日期参数并优化相关逻辑- 在 ProjectDemand 和 ProjectVersion模型中添加 queryDate 字段

- 更新 ProjectDemandMapper 和 ProjectVersionMapper XML 文件,添加查询日期相关的 SQL 条件
- 修改 ProjectDemandServiceImpl 中的时间逻辑判断- 在 ProjectVersionServiceImpl 中添加查询日期参数的设置
- 在 WorkLogger 模型中添加 versionId 字段
- 更新 WorkLoggerMapper XML 文件,加入 versionId 的查询条件
- 在 WorkLoggerServiceImpl 中添加最大工作时间验证逻辑
dev_1.2.0
chenhao 2025-03-27 09:35:26 +08:00
parent f0e3ecc142
commit 86c262ed4d
9 changed files with 26 additions and 7 deletions

View File

@ -59,6 +59,7 @@ public class ProjectDemand implements Serializable {
//负责人名称
private String responsiblePersonName;
private List<String> demandStatusList;
private Date queryDate;
/**
*
*/

View File

@ -94,7 +94,7 @@ public class ProjectDemandServiceImpl implements IProjectDemandService {
boolean statusFlag = ProjectDemand.DemandStatusEnum.YWC.value().equals(existDemand.getDemandStatus())
|| ProjectDemand.DemandStatusEnum.YGB.value().equals(existDemand.getDemandStatus());
// 当前状态发生变化,并且结束时间在当前时间之前
boolean timeFlag = !existDemand.getDemandStatus().equals(projectDemand.getDemandStatus()) && DateUtils.getNowDate().before(projectDemand.getEndTime());
boolean timeFlag = !existDemand.getDemandStatus().equals(projectDemand.getDemandStatus()) && DateUtils.getNowDate().after(projectDemand.getEndTime());
if (statusFlag && timeFlag) {
throw new ServiceException("结束时间不能早于当前时间");
}

View File

@ -41,6 +41,7 @@ public class ProjectVersion implements Serializable {
*
*/
private Date createTime;
private Date queryDate;
private List<ProjectDemand> demandList;

View File

@ -83,6 +83,9 @@ public class ProjectVersionServiceImpl implements IProjectVersionService {
if (projectVersion.getUserId() != null) {
param.setResponsiblePerson(projectVersion.getUserId());
}
if (projectVersion.getQueryDate() != null) {
param.setQueryDate(projectVersion.getQueryDate());
}
if (CollUtil.isNotEmpty(projectVersion.getDemandStatusList())) {
param.setDemandStatusList(projectVersion.getDemandStatusList());
}

View File

@ -56,6 +56,7 @@ public class WorkLogger extends BaseEntity {
private List<Integer> projectIdList;
private Integer examineId;
private Integer versionId;
private String projectName;
private String title;
private String versionNumber;

View File

@ -72,10 +72,21 @@ public class WorkLoggerServiceImpl implements IWorkLoggerService {
*/
@Override
public WorkLogger insert(WorkLogger workLogger) {
verifyMaxWorkTime(workLogger);
this.workLoggerMapper.insert(workLogger);
return workLogger;
}
private void verifyMaxWorkTime(WorkLogger workLogger) {
//当天剩余工时
WorkLogger queryParam = new WorkLogger();
queryParam.setLoggerDate(workLogger.getLoggerDate());
String remaining = this.getRemaining(queryParam);
if (new BigDecimal(remaining).compareTo(new BigDecimal(workLogger.getWorkTime()))<0){
throw new RuntimeException("超出最大可填写工时");
}
}
/**
*
*

View File

@ -34,7 +34,7 @@
and t1.id = #{id}
</if>
<if test="title != null and title != ''">
and t1.title like concat(#{title},'%')
and t1.title like concat(#{title},'%')
</if>
<if test="versionId != null and versionId != ''">
and t1.version_id = #{versionId}
@ -61,14 +61,16 @@
and t1.project_id = #{projectId}
</if>
<if test="responsiblePersonName != null and responsiblePersonName != ''">
and t3.nick_name like concat(#{responsiblePersonName},"%")
and t3.nick_name like concat(#{responsiblePersonName},"%")
</if>
<if test="demandStatusList!=null and demandStatusList.size>0">
and t1.demand_status in
<foreach collection="demandStatusList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="queryDate !=null">
and #{queryDate} between t1.create_time and t1.end_time
</if>
</where>
</select>

View File

@ -38,10 +38,10 @@
and release_date = #{releaseDate}
</if>
<if test="userId != null">
and (select version_id from pms_project_demand where responsible_person = #{userId})
and id in (select version_id from pms_project_demand where responsible_person = #{userId})
</if>
<if test="demandStatusList!=null and demandStatusList.size>0">
and (select version_id from pms_project_demand where demand_status in
and id in (select version_id from pms_project_demand where demand_status in
<foreach collection="demandStatusList" item="item" open="(" separator="," close=")">
#{item}
</foreach>

View File

@ -56,7 +56,7 @@
t1.logger_id, t1.logger_date, t1.project_id, t1.user_id, t1.work_time, t1.work_content, t1.state, t1.create_by,
t1.update_by, t1.update_time,
t1.create_time,t1.demand_id,t2.nick_name user_name
,t3.project_name,t4.title ,t5.version_number
,t3.project_name,t4.title ,t5.version_number,t4.version_id
from pms_work_logger t1
left join sys_user t2 on t1.user_id=t2.user_id
inner join pms_project t3 on (t1.project_id=t3.project_id and t3.state=0)