From fb657b810e17782fca66be63a471972aae1aa1ca Mon Sep 17 00:00:00 2001 From: tangcy <406968399@qq.com> Date: Fri, 27 Mar 2026 09:31:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contractor/domain/WorkTicket.java | 17 ++- .../service/impl/WorkTicketServiceImpl.java | 106 +++++++++++------- .../resources/mapper/WorkTicketMapper.xml | 6 + 3 files changed, 86 insertions(+), 43 deletions(-) diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/WorkTicket.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/WorkTicket.java index 2646c821..92d9b241 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/WorkTicket.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/WorkTicket.java @@ -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; diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/WorkTicketServiceImpl.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/WorkTicketServiceImpl.java index e346a5aa..56d13def 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/WorkTicketServiceImpl.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/WorkTicketServiceImpl.java @@ -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 selectWorkTicketList(WorkTicket workTicket) { - return workTicketMapper.selectWorkTicketList(workTicket); + List 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>() {} + workTicket.getGeneralSafetyMeasures(), + new TypeReference>() { + } )); } if (StringUtils.isNotEmpty(workTicket.getTeamMemberQualifications())) { workTicket.setQualificationList(objectMapper.readValue( - workTicket.getTeamMemberQualifications(), - new TypeReference>() {} + workTicket.getTeamMemberQualifications(), + new TypeReference>() { + } )); } } catch (Exception e) { // 忽略JSON解析错误 } } - + /** * 生成票证编号 */ diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/WorkTicketMapper.xml b/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/WorkTicketMapper.xml index a07e5b6c..90227216 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/WorkTicketMapper.xml +++ b/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/WorkTicketMapper.xml @@ -112,6 +112,12 @@ and wt.project_id = #{projectId} + + and wt.create_time >= #{startTime} + + + and wt.create_time <= DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY) + order by wt.create_time desc