修复部分bug

This commit is contained in:
tangcy 2026-03-27 09:31:59 +08:00
parent 1a8223a358
commit fb657b810e
3 changed files with 86 additions and 43 deletions

View File

@ -17,13 +17,13 @@ import java.util.List;
@Schema(description = "工作票申请")
public class WorkTicket extends BaseEntity {
@Schema(description = "工作票ID")
@Schema(description = "工作票 ID")
private Long ticketId;
@Schema(description = "票证编号")
private String ticketNumber;
@Schema(description = "所属项目ID")
@Schema(description = "所属项目 ID")
private Long projectId;
@Schema(description = "项目编号(联查 work_plan 返回,表中不存)")
@ -35,7 +35,7 @@ public class WorkTicket extends BaseEntity {
@Schema(description = "作业地点")
private String workLocation;
@Schema(description = "作业负责人ID")
@Schema(description = "作业负责人 ID")
private Long supervisorId;
@Schema(description = "作业负责人姓名")
@ -44,9 +44,18 @@ public class WorkTicket extends BaseEntity {
@Schema(description = "作业负责人职位")
private String supervisorPosition;
@Schema(description = "负责人所属部门名称(根据负责人ID联查列表返回")
@Schema(description = "负责人所属部门名称(根据负责人 ID 联查,列表返回)")
private String supervisorDeptName;
@Schema(description = "搜索关键字(不映射到数据库,用于模糊查询 projectCode 和 projectName")
private String keyword;
@Schema(description = "开始时间(不映射到数据库,用于时间范围查询)")
private String startTime;
@Schema(description = "结束时间(不映射到数据库,用于时间范围查询)")
private String endTime;
@Schema(description = "作业内容")
private String workContent;

View File

@ -20,32 +20,33 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 工作票申请Service业务层处理
*
*
* @author ruoyi
*/
@Service
public class WorkTicketServiceImpl implements IWorkTicketService {
@Autowired
private WorkTicketMapper workTicketMapper;
@Autowired
private WorkPlanMapper workPlanMapper;
@Autowired(required = false)
private IRiskControlCardService riskControlCardService;
@Autowired(required = false)
private IOwnerIssuerService ownerIssuerService;
private static final ObjectMapper objectMapper = new ObjectMapper();
/**
* 查询工作票申请
*
*
* @param ticketId 工作票ID
* @return 工作票申请信息
*/
@ -69,7 +70,7 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
if (workPlan != null) {
if (ticket.getProjectName() == null) {
ticket.setProjectName(workPlan.getProjectName());
}
}
if (ticket.getProjectCode() == null) {
ticket.setProjectCode(workPlan.getProjectCode());
}
@ -78,21 +79,46 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
}
return ticket;
}
/**
* 查询工作票申请列表
*
*
* @param workTicket 工作票申请信息
* @return 工作票申请集合
*/
@Override
public List<WorkTicket> selectWorkTicketList(WorkTicket workTicket) {
return workTicketMapper.selectWorkTicketList(workTicket);
List<WorkTicket> workTickets = workTicketMapper.selectWorkTicketList(workTicket);
// 在内存中根据 supervisorDeptName 字段进行模糊过滤
if (StringUtils.isNotBlank(workTicket.getSupervisorDeptName())) {
String keyword = workTicket.getSupervisorDeptName();
workTickets = workTickets.stream()
.filter(ticket -> ticket.getSupervisorDeptName() != null
&& ticket.getSupervisorDeptName().contains(keyword))
.collect(Collectors.toList());
}
// 在内存中根据 keyword 字段进行模糊过滤匹配 projectCode projectName
if (StringUtils.isNotBlank(workTicket.getKeyword())) {
String keyword = workTicket.getKeyword();
workTickets = workTickets.stream()
.filter(ticket -> {
boolean matchProjectCode = StringUtils.isNotBlank(ticket.getProjectCode())
&& ticket.getTicketNumber().contains(keyword);
boolean matchProjectName = StringUtils.isNotBlank(ticket.getProjectName())
&& ticket.getProjectName().contains(keyword);
return matchProjectCode || matchProjectName;
})
.collect(Collectors.toList());
}
return workTickets;
}
/**
* 根据项目ID查询工作票
*
*
* @param projectId 项目ID
* @return 工作票申请信息
*/
@ -104,10 +130,10 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
}
return ticket;
}
/**
* 新增工作票申请
*
*
* @param workTicket 工作票申请信息
* @return 结果
*/
@ -121,27 +147,27 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
if (workPlanMapper.selectWorkPlanById(workTicket.getProjectId()) == null) {
throw new ServiceException("项目不存在");
}
// 生成票证编号
if (StringUtils.isEmpty(workTicket.getTicketNumber())) {
workTicket.setTicketNumber(generateTicketNumber());
}
// 默认状态为草稿
if (StringUtils.isEmpty(workTicket.getStatus())) {
workTicket.setStatus("0");
}
// 处理JSON字段
processJsonFields(workTicket);
workTicket.setCreateBy(SecurityUtils.getUsername());
return workTicketMapper.insertWorkTicket(workTicket);
}
/**
* 修改工作票申请
*
*
* @param workTicket 工作票申请信息
* @return 结果
*/
@ -153,10 +179,10 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
workTicket.setUpdateBy(SecurityUtils.getUsername());
return workTicketMapper.updateWorkTicket(workTicket);
}
/**
* 批量删除工作票申请
*
*
* @param ticketIds 需要删除的工作票ID
* @return 结果
*/
@ -165,10 +191,10 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
public int deleteWorkTicketByIds(Long[] ticketIds) {
return workTicketMapper.deleteWorkTicketByIds(ticketIds);
}
/**
* 保存草稿
*
*
* @param workTicket 工作票申请信息
* @return 结果
*/
@ -182,10 +208,10 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
return updateWorkTicket(workTicket);
}
}
/**
* 提交工作票申请
*
*
* @param ticketId 工作票ID
* @return 结果
*/
@ -201,11 +227,11 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
}
return workTicketMapper.updateTicketStatus(ticketId, "1", null, null); // 待审核状态
}
/**
* 审批工作票通过/已签发
*
* @param ticketId 工作票ID
*
* @param ticketId 工作票ID
* @param reviewComment 审核意见
* @return 结果
*/
@ -236,11 +262,11 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
String reviewer = SecurityUtils.getUsername();
return workTicketMapper.updateTicketStatus(ticketId, "2", reviewer, reviewComment); // 已签发
}
/**
* 审批工作票驳回
*
* @param ticketId 工作票ID
*
* @param ticketId 工作票ID
* @param reviewComment 审核意见
* @return 结果
*/
@ -271,7 +297,7 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
String reviewer = SecurityUtils.getUsername();
return workTicketMapper.updateTicketStatus(ticketId, "3", reviewer, reviewComment); // 已驳回
}
/**
* 处理JSON字段
*/
@ -287,7 +313,7 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
throw new ServiceException("数据格式错误");
}
}
/**
* 解析JSON字段
*/
@ -295,21 +321,23 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
try {
if (StringUtils.isNotEmpty(workTicket.getGeneralSafetyMeasures())) {
workTicket.setSafetyMeasuresList(objectMapper.readValue(
workTicket.getGeneralSafetyMeasures(),
new TypeReference<List<String>>() {}
workTicket.getGeneralSafetyMeasures(),
new TypeReference<List<String>>() {
}
));
}
if (StringUtils.isNotEmpty(workTicket.getTeamMemberQualifications())) {
workTicket.setQualificationList(objectMapper.readValue(
workTicket.getTeamMemberQualifications(),
new TypeReference<List<com.admin.contractor.domain.TeamMemberQualification>>() {}
workTicket.getTeamMemberQualifications(),
new TypeReference<List<com.admin.contractor.domain.TeamMemberQualification>>() {
}
));
}
} catch (Exception e) {
// 忽略JSON解析错误
}
}
/**
* 生成票证编号
*/

View File

@ -112,6 +112,12 @@
<if test="projectId != null">
and wt.project_id = #{projectId}
</if>
<if test="startTime != null and startTime != ''">
and wt.create_time &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
and wt.create_time &lt;= DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY)
</if>
order by wt.create_time desc
</select>