package com.xiaopeng.maintenance.controller; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.xiaopeng.api.model.maintenance.XpWorkOrder; import com.xiaopeng.api.model.maintenance.XpWorkOrderLog; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.log.annotation.AdminOperationLog; import com.xiaopeng.common.log.enums.AdminBusinessType; import com.xiaopeng.common.log.enums.AdminOperationType; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.evi.oss.service.AliOssService; import com.xiaopeng.maintenance.model.query.WorkOrderPageListQuery; import com.xiaopeng.maintenance.service.IXpWorkOrderLogService; import com.xiaopeng.maintenance.service.IXpWorkOrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.io.UnsupportedEncodingException; import java.util.ArrayList; /** *

* 管理后台 任务规则设置 *

* * @author mitao * @since 2026-02-03 */ @RestController @Slf4j @Api(tags = "管理后台-工单管理") @RequestMapping("/api/v1/workOrder") public class XpWorkOrderController { @Resource private IXpWorkOrderService workOrderService; @Resource private IXpWorkOrderLogService workOrderLogService; @Resource private TokenService tokenService; @Resource private AliOssService aliOssService; @ApiOperation(value = "工单管理分页列表") @PostMapping("/pageList") public R> pageList(@RequestBody WorkOrderPageListQuery query) { query.setUserId(tokenService.getLoginUser().getSysUser().getId()); PageInfo pageList = workOrderService.pageList(query); return R.ok(pageList); } @ApiOperation(value = "创建工单") @PostMapping("/saveWorkOrder") @AdminOperationLog( businessType = AdminBusinessType.WORK_ORDER_MANAGEMENT, operationType = AdminOperationType.ADD, contentExpression = "'创建工单,feedbackTypeId=' + #p0.feedbackTypeId + ',priority=' + #p0.priority", appendRequestData = false ) public R saveWordOrder(@RequestBody XpWorkOrder workOrder) { workOrder.setCreateById(tokenService.getLoginUser().getSysUser().getId()); workOrderService.save(workOrder); return R.ok(); } @ApiOperation(value = "编辑工单") @PostMapping("/updateWorkOrder") @AdminOperationLog( businessType = AdminBusinessType.WORK_ORDER_MANAGEMENT, operationType = AdminOperationType.EDIT, contentExpression = "'编辑工单,id=' + #p0.id + ',feedbackTypeId=' + #p0.feedbackTypeId + ',priority=' + #p0.priority", appendRequestData = false ) public R updateWordOrder(@RequestBody XpWorkOrder workOrder) { workOrderService.updateById(workOrder); return R.ok(); } @ApiOperation(value = "处理工单") @PostMapping("/handleWorkOrder") @AdminOperationLog( businessType = AdminBusinessType.WORK_ORDER_MANAGEMENT, operationType = AdminOperationType.EDIT, contentExpression = "'处理工单,workOrderId=' + #p0.workOrderId + ',handleType=' + #p0.handleType", appendRequestData = false ) public R handleWorkOrder(@RequestBody XpWorkOrderLog workOrderLog) { workOrderService.handleWorkOrder(workOrderLog); return R.ok(); } @ApiOperation(value = "删除工单") @DeleteMapping("/deleteWorkOrder") @AdminOperationLog( businessType = AdminBusinessType.WORK_ORDER_MANAGEMENT, operationType = AdminOperationType.DELETE, contentExpression = "'删除工单,id=' + #p0", appendRequestData = false ) public R deleteWordOrder(Long id) { workOrderService.removeById(id); return R.ok(); } @ApiOperation(value = "工单详情") @GetMapping("/workOrderDetail") public R workOrderDetail(Long id) { XpWorkOrder detail =workOrderService.workOrderDetail(id); if(detail.getProblemImage()!=null){ String problemImage = detail.getProblemImage(); if (StringUtils.isNotBlank(problemImage)) { JSONArray jsonArray = JSONArray.parseArray(problemImage); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); // 1 String downloadUrl = jsonObject.getString("url");; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { log.error("获取图片下载地址失败", e); } jsonObject.put("url", downloadUrl); } detail.setProblemImage(JSONArray.toJSONString(jsonArray)); } } return R.ok(detail); } }