操作工作票优化

This commit is contained in:
guoshengxiong 2025-10-23 17:37:07 +08:00
parent 4dcd0596a2
commit d8616fa68d
3 changed files with 36 additions and 1 deletions

View File

@ -54,4 +54,6 @@ public interface WorkTicketMapper extends BaseMapper<WorkTicket> {
WorkTicketVo queryById(String id);
CountWorkTicketVo countWorkTicket(HashMap<String, Object> map);
List<Long> getPoliceCameraIdsByWorkTicketId(Long id);
}

View File

@ -35,4 +35,11 @@
and t.project_sn = #{projectSn}
</if>
</select>
<select id="getPoliceCameraIdsByWorkTicketId" resultType="java.lang.Long">
select distinct pci.item_id
from work_ticket_camera_rel wtcr
join police_camera_item pci on pci.item_id=wtcr.police_camera_id
where wtcr.work_ticket_id=#{id}
</select>
</mapper>

View File

@ -192,6 +192,9 @@ public class WorkTicketServiceImpl extends ServiceImpl<WorkTicketMapper, WorkTic
if (oldWorkTicket == null) {
throw new OpenAlertException("未找到对应实体");
}
if (Objects.equals(oldWorkTicket.getStatus(), 4)) {
throw new OpenAlertException("已完工状态不能修改工作票");
}
int count = this.count(new LambdaQueryWrapper<WorkTicket>()
.eq(WorkTicket::getProjectSn, workTicketDto.getProjectSn())
.eq(WorkTicket::getWorkTicketNumber, workTicketDto.getWorkTicketNumber())
@ -200,6 +203,21 @@ public class WorkTicketServiceImpl extends ServiceImpl<WorkTicketMapper, WorkTic
if (count > 0) {
throw new OpenAlertException("工作票编号已存在");
}
if (Objects.equals(workTicketDto.getStatus(), 2)) {
//施工状态不能修改执法记录仪
List<Long> pcids = baseMapper.getPoliceCameraIdsByWorkTicketId(workTicketDto.getId());
if (CollUtil.isEmpty(pcids) != StrUtil.isBlank(workTicketDto.getPoliceCameraIds())) {
throw new OpenAlertException("施工中不得修改作业监控,请先暂停作业重试");
}
if (StrUtil.isNotBlank(workTicketDto.getPoliceCameraIds())) {
List<Long> getItemIds = policeCameraItemService.list(new LambdaQueryWrapper<PoliceCameraItem>()
.in(PoliceCameraItem::getItemId, StrUtil.split(workTicketDto.getPoliceCameraIds(), ","))).stream().map(PoliceCameraItem::getItemId).collect(Collectors.toList());
if (pcids.size() != getItemIds.size() || !getItemIds.containsAll(pcids)) {
throw new OpenAlertException("施工中不得修改作业监控,请先暂停作业重试");
}
}
}
//施工中不得新增作业监控请先暂停作业重试
baseMapper.updateById(workTicketDto);
workTicketCameraRelService.remove(new LambdaQueryWrapper<WorkTicketCameraRel>()
.eq(WorkTicketCameraRel::getWorkTicketId, workTicketDto.getId()));
@ -228,6 +246,10 @@ public class WorkTicketServiceImpl extends ServiceImpl<WorkTicketMapper, WorkTic
baseMapper.deleteById(id);
workTicketOrderService.remove(new LambdaQueryWrapper<WorkTicketOrder>()
.eq(WorkTicketOrder::getWorkTicketId, id));
workTicketCameraRelService.remove(new LambdaQueryWrapper<WorkTicketCameraRel>()
.eq(WorkTicketCameraRel::getWorkTicketId, id));
workTicketHistoryService.remove(new LambdaQueryWrapper<WorkTicketHistory>()
.eq(WorkTicketHistory::getWorkTicketId, id));
}
@Override
@ -259,6 +281,10 @@ public class WorkTicketServiceImpl extends ServiceImpl<WorkTicketMapper, WorkTic
default:
throw new OpenAlertException("operateStatus参数异常");
}
boolean enableBindCamera = workTicketService.enableBindCamera(ticket.getProjectSn());
if (workTicketDto.getOperateStatus() == 1 && enableBindCamera && CollUtil.isEmpty(ticket.getItemList())) {
throw new OpenAlertException("请先绑定工作票监控");
}
this.updateById(ticket);
WorkTicketHistory his = null;
Long ticketId = ticket.getId();
@ -278,7 +304,7 @@ public class WorkTicketServiceImpl extends ServiceImpl<WorkTicketMapper, WorkTic
);
workTicketHistoryService.completeEndTimeByTicketId(ticketId);
}
if (workTicketService.enableBindCamera(ticket.getProjectSn())) {
if (enableBindCamera) {
if (workTicketDto.getOperateStatus() == 1 || workTicketDto.getOperateStatus() == 3) {
for (PoliceCameraItem item : ticket.getItemList()) {
WorkTicketOrder order = new WorkTicketOrder();