|
|
|
@ -11,6 +11,7 @@ import lombok.AllArgsConstructor; |
|
|
|
|
|
|
|
|
|
|
|
import javax.validation.Valid; |
|
|
|
import javax.validation.Valid; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springblade.core.log.annotation.ApiLog; |
|
|
|
import org.springblade.core.log.annotation.ApiLog; |
|
|
|
import org.springblade.core.secure.BladeUser; |
|
|
|
import org.springblade.core.secure.BladeUser; |
|
|
|
import org.springblade.core.mp.support.Condition; |
|
|
|
import org.springblade.core.mp.support.Condition; |
|
|
|
@ -34,8 +35,10 @@ import org.springblade.core.excel.util.ExcelUtil; |
|
|
|
import org.springblade.core.tool.constant.BladeConstant; |
|
|
|
import org.springblade.core.tool.constant.BladeConstant; |
|
|
|
import springfox.documentation.annotations.ApiIgnore; |
|
|
|
import springfox.documentation.annotations.ApiIgnore; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -44,6 +47,7 @@ import javax.servlet.http.HttpServletResponse; |
|
|
|
* @author BladeX |
|
|
|
* @author BladeX |
|
|
|
* @since 2024-10-14 |
|
|
|
* @since 2024-10-14 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
@Slf4j |
|
|
|
@RestController |
|
|
|
@RestController |
|
|
|
@AllArgsConstructor |
|
|
|
@AllArgsConstructor |
|
|
|
@RequestMapping("/workOrder") |
|
|
|
@RequestMapping("/workOrder") |
|
|
|
@ -65,35 +69,87 @@ public class WorkOrderController extends BladeController { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 工单表 分页 |
|
|
|
* 查询工作订单列表 |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @param workOrderDTO 工作订单DTO,包含查询条件 |
|
|
|
|
|
|
|
* @param query 分页查询对象 |
|
|
|
|
|
|
|
* @return 返回工作订单列表的响应对象 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@GetMapping("/list") |
|
|
|
@GetMapping("/list") |
|
|
|
@ApiOperationSupport(order = 2) |
|
|
|
@ApiOperationSupport(order = 2) |
|
|
|
@ApiOperation(value = "分页", notes = "传入workOrder") |
|
|
|
@ApiOperation(value = "分页", notes = "传入workOrder") |
|
|
|
public R<IPage<WorkOrder>> list(@ApiIgnore WorkOrderDTO workOrderDTO, Query query) { |
|
|
|
public R<IPage<WorkOrder>> list(@ApiIgnore WorkOrderDTO workOrderDTO, Query query) { |
|
|
|
|
|
|
|
// 创建工作订单的查询条件包装器
|
|
|
|
LambdaQueryWrapper<WorkOrder> eq = Wrappers.lambdaQuery(WorkOrder.class); |
|
|
|
LambdaQueryWrapper<WorkOrder> eq = Wrappers.lambdaQuery(WorkOrder.class); |
|
|
|
|
|
|
|
|
|
|
|
// 数据权限
|
|
|
|
// 数据权限
|
|
|
|
|
|
|
|
try { |
|
|
|
if (StringUtils.isNotBlank(workOrderDTO.getDataType())) { |
|
|
|
if (StringUtils.isNotBlank(workOrderDTO.getDataType())) { |
|
|
|
eq.eq("1".equals(workOrderDTO.getDataType()), WorkOrder::getCreateUser, AuthUtil.getUserId());// 客户
|
|
|
|
setDataTypeConditions(eq, workOrderDTO.getDataType()); |
|
|
|
eq.in("2".equals(workOrderDTO.getDataType()), WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId()));// 客服
|
|
|
|
} |
|
|
|
eq.eq("3".equals(workOrderDTO.getDataType()), WorkOrder::getMaintenanceTeam, AuthUtil.getDeptId());// 维修负责人
|
|
|
|
} catch (Exception e) { |
|
|
|
eq.eq("4".equals(workOrderDTO.getDataType()), WorkOrder::getRepairPerson, AuthUtil.getUserId());// 维修人员
|
|
|
|
// 处理异常,例如记录日志或返回错误信息
|
|
|
|
|
|
|
|
log.error("Error setting data type conditions", e); |
|
|
|
|
|
|
|
return R.fail("数据权限设置失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序
|
|
|
|
eq.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()) |
|
|
|
eq.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()) |
|
|
|
.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()) |
|
|
|
.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()) |
|
|
|
.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()) |
|
|
|
.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()) |
|
|
|
.orderByDesc(WorkOrder::getCreateTime); |
|
|
|
.orderByDesc(WorkOrder::getCreateTime); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 执行分页查询
|
|
|
|
IPage<WorkOrder> pages = workOrderService.page(Condition.getPage(query), eq); |
|
|
|
IPage<WorkOrder> pages = workOrderService.page(Condition.getPage(query), eq); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取查询结果列表
|
|
|
|
List<WorkOrder> records = pages.getRecords(); |
|
|
|
List<WorkOrder> records = pages.getRecords(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 批量查询设备名称
|
|
|
|
|
|
|
|
List<Long> deviceIds = records.stream().map(WorkOrder::getDeviceId).collect(Collectors.toList()); |
|
|
|
|
|
|
|
Map<Long, String> deviceNameMap = getDeviceNameMap(deviceIds); |
|
|
|
|
|
|
|
|
|
|
|
for (WorkOrder record : records) { |
|
|
|
for (WorkOrder record : records) { |
|
|
|
Device device = deviceService.getById(record.getDeviceId()); |
|
|
|
record.setDeviceName(deviceNameMap.getOrDefault(record.getDeviceId(), "")); |
|
|
|
record.setDeviceName(device != null ? device.getName() : ""); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更新查询结果列表
|
|
|
|
pages.setRecords(records); |
|
|
|
pages.setRecords(records); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 返回查询结果
|
|
|
|
return R.data(pages); |
|
|
|
return R.data(pages); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void setDataTypeConditions(LambdaQueryWrapper<WorkOrder> eq, String dataType) { |
|
|
|
|
|
|
|
switch (dataType) { |
|
|
|
|
|
|
|
case "1": |
|
|
|
|
|
|
|
eq.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()); // 客户
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "2": |
|
|
|
|
|
|
|
eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId())); // 客服
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "3": |
|
|
|
|
|
|
|
eq.eq(WorkOrder::getMaintenanceTeam, AuthUtil.getDeptId()); // 维修负责人
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "4": |
|
|
|
|
|
|
|
eq.eq(WorkOrder::getRepairPerson, AuthUtil.getUserId()); // 维修人员
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
// 处理未知的数据类型
|
|
|
|
|
|
|
|
log.warn("Unknown data type: {}", dataType); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Map<Long, String> getDeviceNameMap(List<Long> deviceIds) { |
|
|
|
|
|
|
|
if (deviceIds.isEmpty()) { |
|
|
|
|
|
|
|
return Collections.emptyMap(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Device> devices = deviceService.listByIds(deviceIds); |
|
|
|
|
|
|
|
return devices.stream().collect(Collectors.toMap(Device::getId, Device::getName)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 工单表 自定义分页 |
|
|
|
* 工单表 自定义分页 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -116,6 +172,16 @@ public class WorkOrderController extends BladeController { |
|
|
|
return R.status(workOrderService.saveAndAttach(workOrder)); |
|
|
|
return R.status(workOrderService.saveAndAttach(workOrder)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 工单表 保存草稿 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
@ApiLog(value = "提报管理-保存草稿") |
|
|
|
|
|
|
|
@PostMapping("/draft") |
|
|
|
|
|
|
|
@ApiOperation(value = "保存草稿", notes = "传入workOrder") |
|
|
|
|
|
|
|
public R draft(@Valid @RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
|
|
|
return R.status(workOrderService.draftAndAttach(workOrder)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 工单表 修改 |
|
|
|
* 工单表 修改 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|