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 String responsiblePersonName;
private List<String> demandStatusList; 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()) boolean statusFlag = ProjectDemand.DemandStatusEnum.YWC.value().equals(existDemand.getDemandStatus())
|| ProjectDemand.DemandStatusEnum.YGB.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) { if (statusFlag && timeFlag) {
throw new ServiceException("结束时间不能早于当前时间"); throw new ServiceException("结束时间不能早于当前时间");
} }

View File

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

View File

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

View File

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

View File

@ -72,10 +72,21 @@ public class WorkLoggerServiceImpl implements IWorkLoggerService {
*/ */
@Override @Override
public WorkLogger insert(WorkLogger workLogger) { public WorkLogger insert(WorkLogger workLogger) {
verifyMaxWorkTime(workLogger);
this.workLoggerMapper.insert(workLogger); this.workLoggerMapper.insert(workLogger);
return 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

@ -68,7 +68,9 @@
<foreach collection="demandStatusList" item="item" open="(" separator="," close=")"> <foreach collection="demandStatusList" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
</if>
<if test="queryDate !=null">
and #{queryDate} between t1.create_time and t1.end_time
</if> </if>
</where> </where>
</select> </select>

View File

@ -38,10 +38,10 @@
and release_date = #{releaseDate} and release_date = #{releaseDate}
</if> </if>
<if test="userId != null"> <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>
<if test="demandStatusList!=null and demandStatusList.size>0"> <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=")"> <foreach collection="demandStatusList" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </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.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.update_by, t1.update_time,
t1.create_time,t1.demand_id,t2.nick_name user_name 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 from pms_work_logger t1
left join sys_user t2 on t1.user_id=t2.user_id 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) inner join pms_project t3 on (t1.project_id=t3.project_id and t3.state=0)