| | |
| | | WorkOrderServiceImpl self = applicationContext.getBean(WorkOrderServiceImpl.class); |
| | | return self.batchAddWorkOrder(workOrderList); |
| | | } |
| | | |
| | | private boolean isSameDay(Date date1, Date date2) { |
| | | if (date1 == null || date2 == null) { |
| | | return false; |
| | | } |
| | | LocalDate localDate1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | LocalDate localDate2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | return localDate1.isEqual(localDate2); |
| | | } |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Boolean batchAddWorkOrder(List<WorkOrder> workOrderList) { |
| | | int total = workOrderList.size(); |
| | |
| | | for (WorkOrder workOrder : workOrderList) { |
| | | WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber()); |
| | | if (Objects.nonNull(databaseWorkOrder)) { |
| | | //判断是否是今天的工单 |
| | | if (!isSameDay(databaseWorkOrder.getCreateTime(), now)) { |
| | | // 若为前一天的工单,不更新,直接当作新工单新增 |
| | | workOrder.setCreateTime(now); |
| | | workOrder.setUpdateTime(now); |
| | | waitAddList.add(workOrder); |
| | | continue; // 跳过后续的更新逻辑 |
| | | } |
| | | |
| | | List<String> errorNameList = databaseWorkOrder.getErrorTypeList(); |
| | | List<String> errorTypes = workOrder.getErrorTypeList(); |
| | | if (errorNameList.containsAll(errorTypes)) { |
| | |
| | | } |
| | | |
| | | // 是否报备 |
| | | boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper) |
| | | .eq(Report::getSerialNumber, workOrder.getSerialNumber()) |
| | | .exists(); |
| | | workOrder.setHasReport(hasReport); |
| | | Date target = workOrder.getCreateTime(); |
| | | |
| | | Report reports = new LambdaQueryChainWrapper<>(reportMapper) |
| | | .eq(Report::getSerialNumber,workOrder.getWorkOrderNo()) |
| | | .eq(Report::getStatus,1) |
| | | .orderByDesc(Report::getCreateTime) |
| | | .last("LIMIT 1") |
| | | .one(); |
| | | boolean isInRange = false; |
| | | if (reports != null){ |
| | | Date start = reports.getBeginCreateTime(); |
| | | Date end = reports.getEndCreateTime(); |
| | | isInRange = target.after(start) || target.equals(start) // target >= start |
| | | && target.before(end) || target.equals(end); |
| | | } |
| | | |
| | | workOrder.setHasReport(isInRange); |
| | | // 故障类型 |
| | | List<SysDictData> errorList = workOrderErrorTypeService.getBaseMapper().getErrorList(workOrder.getWorkOrderNo()); |
| | | List<String> errList = errorList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList()); |