| doc/前端联调文档-设备报修保养财务模块改造.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/device/controller/DeviceRepairController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/device/pojo/DeviceRepair.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/device/pojo/MaintenanceTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/device/service/IDeviceRepairService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/device/DeviceRepairMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
doc/ǰ¶ËÁªµ÷Îĵµ-É豸±¨ÐÞ±£Ñø²ÆÎñÄ£¿é¸ÄÔì.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,233 @@ # å端èè°ææ¡£ï¼è®¾å¤æ¥ä¿® / 设å¤ä¿å »å®æ¶ä»»å¡ / è´¢å¡ç§ç®æ»è´¦ï¼ ## 1. åæ´èå´ æ¬æ¬¡èè°æ¶å 3 个模åï¼ 1. è´¢å¡æ¨¡åï¼ç§ç®æ»è´¦å»æåè¯åå·ãæè¦ï¼åªè¿å 1 æ¡åè®¡æ°æ®ã 2. 设å¤ä¿å »å®æ¶ä»»å¡ï¼æ°å¢ `ä¿å »äºº` åæ®µï¼å®æ¶ä»»å¡çæä¿å »è®°å½æ¶å¸¦å ¥ã 3. è®¾å¤æ¥ä¿®ï¼ç¡®è®¤æ¥ä¿®åæ°å¢éªæ¶å®¡æ¹ï¼éªæ¶éè¿åæç®å®ç»ã --- ## 2. æ¥å£æ¸ å ### 2.1 è´¢å¡-ç§ç®æ»è´¦ - **GET** `/financial/ledger/general` - 说æï¼è¿åç§ç®æ»è´¦å计ï¼ä» 1 æ¡è®°å½ã #### 请æ±åæ°ï¼Queryï¼ | åæ° | ç±»å | å¿ å¡« | 说æ | |---|---|---|---| | `subjectCode` | string | æ¯ | ç§ç®ç¼ç | | `startMonth` | string | æ¯ | å¼å§æä»½ï¼æ ¼å¼ `YYYY-MM` | | `endMonth` | string | æ¯ | ç»ææä»½ï¼æ ¼å¼ `YYYY-MM` | #### è¿åç»æ `R<List<FinLedgerRowVo>>` ```json { "code": 200, "msg": "æä½æå", "data": [ { "rowType": "yearly_total", "date": "2026-05-31", "debit": 12000.00, "credit": 8000.00, "direction": "å", "balance": 4000.00 } ] } ``` #### èè°æ³¨æ 1. `data` åºå®åªæ 1 æ¡ï¼å计ï¼ã 2. `voucherNo`ã`summary` ä¸è¿åï¼ä¸åå±ç¤ºåè¯åå·ãæè¦ï¼ã --- ### 2.2 设å¤ä¿å »å®æ¶ä»»å¡ï¼æ°å¢ä¿å »äººï¼ - åºç¡è·¯å¾ï¼`/deviceMaintenanceTask` - ç¸å ³æ¥å£ï¼ - **POST** `/add` - **POST** `/update` - **GET** `/listPage` #### æ°å¢å段 | åæ®µ | ç±»å | 说æ | |---|---|---| | `maintenancePerson` | string | ä¿å »äºº | #### æ°å¢/æ´æ°è¯·æ±ç¤ºä¾ ```json { "id": 1, "taskName": "ç©ºåæºä¿å »ä»»å¡", "taskId": 1001, "maintenancePerson": "å¼ ä¸", "frequencyType": "MONTHLY", "frequencyDetail": "10,09:00", "remarks": "æ¯æä¾è¡ä¿å »" } ``` #### 宿¶ä»»å¡ä¸åè¡ä¸º 宿¶ä»»å¡æ§è¡åï¼ç³»ç»èªå¨å建ä¿å »è®°å½ï¼`device_maintenance`ï¼æ¶ä¼åå ¥ï¼ - `maintenanceActuallyName = maintenancePerson` å³å端å¨å®æ¶ä»»å¡éç»´æ¤çä¿å »äººï¼ä¼èªå¨å¸¦å ¥å°ä¿å »è®°å½ã --- ### 2.3 è®¾å¤æ¥ä¿®ï¼ç¡®è®¤åéªæ¶å®¡æ¹ï¼ - åºç¡è·¯å¾ï¼`/device/repair` #### ç¶æå®ä¹ | ç¶æå¼ | å«ä¹ | |---|---| | `0` | å¾ ç»´ä¿® | | `3` | å¾ éªæ¶ | | `1` | å®ç» | | `2` | 失败 | #### 2.3.1 维修确认ï¼å确认æ¥ä¿®ï¼ - **POST** `/device/repair/repair` - 说æï¼æäº¤åç¶æä» `å¾ ç»´ä¿®(0)` è¿å ¥ `å¾ éªæ¶(3)`ï¼ä¸åç´æ¥å®ç»ã 请æ±ç¤ºä¾ï¼ ```json { "id": 10001, "maintenanceName": "æå", "maintenanceTime": "2026-05-14 10:30:00", "maintenanceResult": "æ´æ¢è½´æ¿å¹¶è¯è¿è¡æ£å¸¸", "sparePartsUseList": [ { "id": 501, "quantity": 2 } ] } ``` 常è§å¤±è´¥æç¤ºï¼ç¨äºå端弹çªï¼ï¼ - `æ¥ä¿®è®°å½ä¸åå¨` - `该æ¥ä¿®å·²å®ç»ï¼ä¸è½éå¤ç¡®è®¤ç»´ä¿®` - `该æ¥ä¿®å·²æäº¤éªæ¶å®¡æ¹` - `å¤ä»¶ xxx æ°éä¸è¶³` #### 2.3.2 éªæ¶å®¡æ¹ï¼æ°å¢ï¼ - **POST** `/device/repair/acceptance` - 说æï¼ä» `å¾ éªæ¶(3)` å¯å®¡æ¹ï¼å®¡æ¹éè¿åç¶ææ¹ä¸º `å®ç»(1)`ã 请æ±åæ°ï¼Bodyï¼ï¼ | åæ®µ | ç±»å | å¿ å¡« | 说æ | |---|---|---|---| | `id` | long | æ¯ | æ¥ä¿®è®°å½ID | | `acceptanceName` | string | æ¯ | éªæ¶äºº | | `acceptanceTime` | string | æ¯ | éªæ¶æ¶é´ï¼æ ¼å¼ `yyyy-MM-dd HH:mm:ss` | | `acceptanceRemark` | string | æ¯ | éªæ¶å¤æ³¨ | 请æ±ç¤ºä¾ï¼ ```json { "id": 10001, "acceptanceName": "çäº", "acceptanceTime": "2026-05-14 11:00:00", "acceptanceRemark": "ç»´ä¿®é¡¹æ ¸éªéè¿ï¼è®¾å¤è¿è¡æ£å¸¸" } ``` 常è§å¤±è´¥æç¤ºï¼ - `æ¥ä¿®è®°å½idä¸è½ä¸ºç©º` - `æ¥ä¿®è®°å½ä¸åå¨` - `该æ¥ä¿®æªè¿å ¥å¾ éªæ¶ç¶æï¼ä¸è½å®¡æ¹` - `éªæ¶äººä¸è½ä¸ºç©º` - `éªæ¶æ¶é´ä¸è½ä¸ºç©º` - `éªæ¶å¤æ³¨ä¸è½ä¸ºç©º` #### 2.3.3 æ®éæ´æ°æ¥å£éå¶ - **PUT** `/device/repair` - éå¶ï¼ä¸è½éè¿æ®éæ´æ°ç´æ¥æç¶ææ¹æ `å®ç»(1)`ï¼å¿ é¡»èµ°éªæ¶å®¡æ¹æ¥å£ï¼ã - 失败æç¤ºï¼`è¯·å æäº¤éªæ¶å®¡æ¹ï¼éªæ¶éè¿åæå¯å®ç»` --- ## 3. è¿ååæ®µåæ´ï¼æ¥ä¿®å表/详æ ï¼ ä»¥ä¸æ¥å£è¿åå·²æ°å¢éªæ¶åæ®µï¼ - **GET** `/device/repair/page` - **GET** `/device/repair/{id}` æ°å¢è¿ååæ®µï¼ | åæ®µ | ç±»å | 说æ | |---|---|---| | `acceptanceName` | string | éªæ¶äºº | | `acceptanceTime` | string | éªæ¶æ¶é´ | | `acceptanceRemark` | string | éªæ¶å¤æ³¨ | --- ## 4. å端æ¹é 建议 1. æ¥ä¿®å表å¢å ç¶æå¼ `3=å¾ éªæ¶` çå±ç¤ºææ¡ä¸çé项ã 2. â确认维修âæé®è°ç¨ `/device/repair/repair`ï¼æååå·æ°ä¸ºå¾ éªæ¶ç¶æã 3. æ°å¢âéªæ¶å®¡æ¹âå¼¹çªï¼å¿ å¡«ï¼ - éªæ¶äºº - éªæ¶æ¶é´ - éªæ¶å¤æ³¨ 4. ç¦æ¢å¨æ®éç¼è¾é¡µç´æ¥å°ç¶æç½®ä¸ºå®ç»ã 5. 设å¤ä¿å »å®æ¶ä»»å¡æ°å¢âä¿å »äººâè¾å ¥é¡¹ï¼å¹¶å¨å表/详æ å±ç¤ºã 6. ç§ç®æ»è´¦é¡µé¢æåè¡å计渲æï¼ä¸åæ¾ç¤ºåè¯åå·ãæè¦åã --- ## 5. èè°æ£æ¥æ¸ å 1. ç§ç®æ»è´¦æ¥è¯¢è¿å `data.length === 1`ï¼ä¸æ `voucherNo/summary`ã 2. æ°å¢ä¿å »å®æ¶ä»»å¡æ¶ä¼ `maintenancePerson`ï¼å表è½åæ¾ã 3. 宿¶ä»»å¡è§¦ååï¼çæçä¿å »è®°å½ `maintenanceActuallyName` ä¸å®æ¶ä»»å¡ä¿å »äººä¸è´ã 4. æ¥ä¿®åæµç¨ï¼`0å¾ ç»´ä¿® -> 3å¾ éªæ¶ -> 1å®ç»`ã 5. å¾ éªæ¶åæ®æªå¡«éªæ¶äºº/éªæ¶æ¶é´/éªæ¶å¤æ³¨æ¶ï¼å端è¿å对åºé误æç¤ºã 6. å°è¯éè¿ `PUT /device/repair` ç´æ¥è®¾ä¸ºå®ç»æ¶ï¼å端è¿åæ¦æªæç¤ºã --- ## 6. æ°æ®åºåæ´ï¼èè°åç¡®è®¤ï¼ ```sql ALTER TABLE maintenance_task ADD COLUMN maintenance_person VARCHAR(100) NULL COMMENT 'ä¿å »äºº'; ALTER TABLE device_repair ADD COLUMN acceptance_name VARCHAR(100) NULL COMMENT 'éªæ¶äºº', ADD COLUMN acceptance_time DATETIME NULL COMMENT 'éªæ¶æ¶é´', ADD COLUMN acceptance_remark VARCHAR(500) NULL COMMENT 'éªæ¶å¤æ³¨'; ``` > è¥æªæ§è¡ä»¥ä¸ SQLï¼ç¸å ³æ¥å£ä¼åºç°å段ä¸åå¨å¼å¸¸ã src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
@@ -46,10 +46,16 @@ return deviceRepairService.updateDeviceRepair(deviceRepairDto); } @PostMapping ("repair") @PostMapping ("/repair") @Operation(summary = "设å¤ç»´ä¿®") public AjaxResult repair( @RequestBody DeviceRepairDto deviceRepairDto) { return deviceRepairService.updateDeviceRepair(deviceRepairDto); return deviceRepairService.confirmRepair(deviceRepairDto); } @PostMapping ("/acceptance") @Operation(summary = "è®¾å¤æ¥ä¿®éªæ¶å®¡æ¹") public AjaxResult acceptance(@RequestBody DeviceRepairDto deviceRepairDto) { return deviceRepairService.approveRepairAcceptance(deviceRepairDto); } @DeleteMapping("/{ids}") src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java
@@ -47,6 +47,18 @@ @Excel(name = "ç»´ä¿®ç»æ") private String maintenanceResult; @Schema(description = "éªæ¶äºº") @Excel(name = "éªæ¶äºº") private String acceptanceName; @Schema(description = "éªæ¶æ¶é´") @Excel(name = "éªæ¶æ¶é´", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private LocalDateTime acceptanceTime; @Schema(description = "éªæ¶å¤æ³¨") @Excel(name = "éªæ¶å¤æ³¨") private String acceptanceRemark; @Schema(description = "ç¶æ") @Excel(name = "ç¶æ") private String statusStr; src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
@@ -50,7 +50,19 @@ @Schema(description = "ç»´ä¿®ç»æ") private String maintenanceResult; @Schema(description = "éªæ¶äºº") private String acceptanceName; @Schema(description = "éªæ¶æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime acceptanceTime; @Schema(description = "éªæ¶å¤æ³¨") private String acceptanceRemark; @Schema(description = "ç¶æ 0 å¾ ç»´ä¿® 1å®ç» 2 失败") // 0:å¾ ç»´ä¿® 1:å®ç» 2:失败 3:å¾ éªæ¶ private Integer status; @Schema(description = "å建æ¶é´") src/main/java/com/ruoyi/device/pojo/MaintenanceTask.java
@@ -44,6 +44,10 @@ @Schema(description = "设å¤id") private Long taskId; @Schema(description = "ä¿å »äºº") @Excel(name = "ä¿å »äºº") private String maintenancePerson; @Schema(description = "颿¬¡") @Excel(name = "颿¬¡") private String frequencyType; src/main/java/com/ruoyi/device/service/IDeviceRepairService.java
@@ -19,6 +19,10 @@ AjaxResult updateDeviceRepair(DeviceRepairDto deviceRepairDto); AjaxResult confirmRepair(DeviceRepairDto deviceRepairDto); AjaxResult approveRepairAcceptance(DeviceRepairDto deviceRepairDto); void export(HttpServletResponse response, Long[] ids); DeviceRepairVo detailById(Long id); src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -47,6 +47,11 @@ private final SparePartsRequisitionRecordService sparePartsRequisitionRecordService; private final FileUtil fileUtil; private static final int STATUS_PENDING_REPAIR = 0; private static final int STATUS_COMPLETED = 1; private static final int STATUS_FAILED = 2; private static final int STATUS_PENDING_ACCEPTANCE = 3; @Override public IPage<DeviceRepairVo> queryPage(Page page, DeviceRepairDto deviceRepairDto) { IPage<DeviceRepairVo> pageDto = deviceRepairMapper.queryPage(page, deviceRepairDto); @@ -62,6 +67,9 @@ DeviceLedger byId = deviceLedgerService.getById(deviceRepairDto.getDeviceLedgerId()); deviceRepairDto.setDeviceName(byId.getDeviceName()); deviceRepairDto.setDeviceModel(byId.getDeviceModel()); if (deviceRepairDto.getStatus() == null) { deviceRepairDto.setStatus(STATUS_PENDING_REPAIR); } boolean save = this.save(deviceRepairDto); if (save) { // å¤çå¾çä¸ä¼ @@ -75,6 +83,15 @@ @Transactional(rollbackFor = Exception.class) public AjaxResult updateDeviceRepair(DeviceRepairDto deviceRepairDto) { DeviceRepair oldDeviceRepair = this.getById(deviceRepairDto.getId()); if (oldDeviceRepair == null) { return AjaxResult.error("æ¥ä¿®è®°å½ä¸åå¨"); } if (deviceRepairDto.getStatus() != null && deviceRepairDto.getStatus() == STATUS_COMPLETED && (oldDeviceRepair.getStatus() == null || oldDeviceRepair.getStatus() != STATUS_COMPLETED)) { return AjaxResult.error("è¯·å æäº¤éªæ¶å®¡æ¹ï¼éªæ¶éè¿åæå¯å®ç»"); } // å¤çå¤ä»¶ä½¿ç¨æ åµ if (CollectionUtils.isNotEmpty(deviceRepairDto.getSparePartsUseList())) { List<Long> sparePartIds = new ArrayList<>(); @@ -131,6 +148,58 @@ } @Override @Transactional(rollbackFor = Exception.class) public AjaxResult confirmRepair(DeviceRepairDto deviceRepairDto) { DeviceRepair oldDeviceRepair = this.getById(deviceRepairDto.getId()); if (oldDeviceRepair == null) { return AjaxResult.error("æ¥ä¿®è®°å½ä¸åå¨"); } if (oldDeviceRepair.getStatus() != null && oldDeviceRepair.getStatus() == STATUS_COMPLETED) { return AjaxResult.error("该æ¥ä¿®å·²å®ç»ï¼ä¸è½éå¤ç¡®è®¤ç»´ä¿®"); } if (oldDeviceRepair.getStatus() != null && oldDeviceRepair.getStatus() == STATUS_PENDING_ACCEPTANCE) { return AjaxResult.error("该æ¥ä¿®å·²æäº¤éªæ¶å®¡æ¹"); } deviceRepairDto.setStatus(STATUS_PENDING_ACCEPTANCE); return updateDeviceRepair(deviceRepairDto); } @Override @Transactional(rollbackFor = Exception.class) public AjaxResult approveRepairAcceptance(DeviceRepairDto deviceRepairDto) { if (deviceRepairDto.getId() == null) { return AjaxResult.error("æ¥ä¿®è®°å½idä¸è½ä¸ºç©º"); } DeviceRepair oldDeviceRepair = this.getById(deviceRepairDto.getId()); if (oldDeviceRepair == null) { return AjaxResult.error("æ¥ä¿®è®°å½ä¸åå¨"); } if (oldDeviceRepair.getStatus() == null || oldDeviceRepair.getStatus() != STATUS_PENDING_ACCEPTANCE) { return AjaxResult.error("该æ¥ä¿®æªè¿å ¥å¾ éªæ¶ç¶æï¼ä¸è½å®¡æ¹"); } if (StringUtils.isBlank(deviceRepairDto.getAcceptanceName())) { return AjaxResult.error("éªæ¶äººä¸è½ä¸ºç©º"); } if (deviceRepairDto.getAcceptanceTime() == null) { return AjaxResult.error("éªæ¶æ¶é´ä¸è½ä¸ºç©º"); } if (StringUtils.isBlank(deviceRepairDto.getAcceptanceRemark())) { return AjaxResult.error("éªæ¶å¤æ³¨ä¸è½ä¸ºç©º"); } DeviceRepair update = new DeviceRepair(); update.setId(deviceRepairDto.getId()); update.setAcceptanceName(deviceRepairDto.getAcceptanceName()); update.setAcceptanceTime(deviceRepairDto.getAcceptanceTime()); update.setAcceptanceRemark(deviceRepairDto.getAcceptanceRemark()); update.setStatus(STATUS_COMPLETED); if (this.updateById(update)) { return AjaxResult.success(); } return AjaxResult.error("éªæ¶å®¡æ¹å¤±è´¥"); } @Override public void export(HttpServletResponse response, Long[] ids) { if (ids == null || ids.length == 0) { List<DeviceRepair> supplierManageList = this.list(); @@ -138,24 +207,19 @@ supplierManageList.stream().forEach(deviceRepair -> { DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto(); BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto); deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "å¾ ç»´ä¿®" : deviceRepair.getStatus() == 1 ? "å®ç»" : "失败"); deviceRepairExeclDto.setStatusStr(resolveStatusText(deviceRepair.getStatus())); deviceLedgerExeclDtos.add(deviceRepairExeclDto); }); ExcelUtil<DeviceRepairExeclDto> util = new ExcelUtil<DeviceRepairExeclDto>(DeviceRepairExeclDto.class); util.exportExcel(response, deviceLedgerExeclDtos, "è®¾å¤æ¥ä¿®å¯¼åº"); }else { ArrayList<Long> arrayList = new ArrayList<>(); Arrays.stream(ids).map(id -> { return arrayList.add( id); }); ArrayList<Long> arrayList = new ArrayList<>(Arrays.asList(ids)); List<DeviceRepair> supplierManageList = deviceRepairMapper.selectBatchIds(arrayList); ArrayList<DeviceRepairExeclDto> deviceLedgerExeclDtos = new ArrayList<>(); supplierManageList.stream().forEach(deviceRepair -> { DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto(); BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto); deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "å¾ ç»´ä¿®" : deviceRepair.getStatus() == 1 ? "å®ç»" : "失败"); deviceRepairExeclDto.setStatusStr(resolveStatusText(deviceRepair.getStatus())); deviceLedgerExeclDtos.add(deviceRepairExeclDto); }); ExcelUtil<DeviceRepairExeclDto> util = new ExcelUtil<DeviceRepairExeclDto>(DeviceRepairExeclDto.class); @@ -164,6 +228,25 @@ } private String resolveStatusText(Integer status) { if (status == null) { return ""; } if (status == STATUS_PENDING_REPAIR) { return "å¾ ç»´ä¿®"; } if (status == STATUS_COMPLETED) { return "å®ç»"; } if (status == STATUS_FAILED) { return "失败"; } if (status == STATUS_PENDING_ACCEPTANCE) { return "å¾ éªæ¶"; } return "æªç¥"; } @Override public DeviceRepairVo detailById(Long id) { DeviceRepairVo vo = deviceRepairMapper.detailById(id); src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
@@ -93,6 +93,7 @@ inspectionTask.setMaintenanceTaskId(timingTask.getId()); inspectionTask.setDeviceLedgerId(timingTask.getTaskId()); inspectionTask.setMaintenancePlanTime(LocalDateTime.now()); inspectionTask.setMaintenanceActuallyName(timingTask.getMaintenancePerson()); inspectionTask.setFrequencyType(timingTask.getFrequencyType()); inspectionTask.setFrequencyDetail(timingTask.getFrequencyDetail()); inspectionTask.setTenantId(timingTask.getTenantId()); src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml
@@ -4,13 +4,27 @@ <select id="listPage" resultType="com.ruoyi.collaborativeApproval.dto.SealApplicationManagementDTO"> select sam.*, su.user_name as create_user_name, d.dept_name as department, su1.nick_name as approveUserName from seal_application_management sam left join sys_user su on sam.create_user = su.user_id left join sys_user su1 on sam.approve_user_id = su1.user_id left join sys_user_dept sud on su.user_id = sud.user_id left join sys_dept d on sud.dept_id = d.dept_id SELECT sam.*, su.user_name AS create_user_name, GROUP_CONCAT(DISTINCT d.dept_name ORDER BY d.dept_id SEPARATOR ',') AS department, su1.nick_name AS approveUserName FROM seal_application_management sam LEFT JOIN sys_user su ON sam.create_user = su.user_id LEFT JOIN sys_user su1 ON sam.approve_user_id = su1.user_id LEFT JOIN sys_user_dept sud ON su.user_id = sud.user_id LEFT JOIN sys_dept d ON sud.dept_id = d.dept_id <where> <if test="ew.applicationNum != null and ew.applicationNum != ''"> and sam.application_num like concat('%',#{ew.applicationNum},'%') @@ -22,5 +36,6 @@ and sam.status = #{ew.status} </if> </where> GROUP BY sam.id </select> </mapper> src/main/resources/mapper/device/DeviceRepairMapper.xml
@@ -11,10 +11,13 @@ dr.repair_time, dr.repair_name, dr.remark, dr.maintenance_name, dr.maintenance_time, dr.maintenance_result, dr.status, dr.maintenance_name, dr.maintenance_time, dr.maintenance_result, dr.acceptance_name, dr.acceptance_time, dr.acceptance_remark, dr.status, dr.create_time, dr.update_time, dr.create_user, @@ -60,6 +63,9 @@ dr.maintenance_name, dr.maintenance_time, dr.maintenance_result, dr.acceptance_name, dr.acceptance_time, dr.acceptance_remark, dr.status, dr.create_time, dr.update_time,