From bf1df93b1fe5a45a677c5e8ef6a50d1210b6c8d5 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Mon, 3 Nov 2025 18:29:53 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/supermarket/controller/ReportController.java | 1 + .../src/main/resources/mapper/InventoryReportMapper.xml | 6 +++--- .../src/main/resources/mapper/SalesReportMapper.xml | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/ReportController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/ReportController.java index 00f6cc9c0..17e5aabfc 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/ReportController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/ReportController.java @@ -162,6 +162,7 @@ public class ReportController { public List exportInventoryReport( @Parameter(description = "查询条件") @ParameterObject InventoryReportQueryDTO queryDTO) { log.info("开始导出进销存报表,查询条件:{}", queryDTO); + log.info("开始导出进销存报表,查询条件:{}", queryDTO); List list = inventoryReportService.exportExcel(queryDTO); log.info("导出进销存报表成功,导出记录数:{}", list.size()); return list; diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryReportMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryReportMapper.xml index 20133f11b..772705f26 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryReportMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryReportMapper.xml @@ -50,6 +50,8 @@ spu.id AS product_id, spu.product_code, spu.product_name, + spu.dept_id, + spu.create_by, cat.name AS category_name, base.spec AS spec, base.unit AS unit, @@ -165,9 +167,7 @@ AND r.supplier_id = #{param.supplierId} - - ${dataScope.sqlFilter} - + GROUP BY spu.id, spu.product_code, spu.product_name, cat.name, base.spec, base.unit, base.package_num, base.purchase_price, base.retail_price, stock.current_stock diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SalesReportMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SalesReportMapper.xml index 3928d33e2..4a49c9693 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SalesReportMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SalesReportMapper.xml @@ -32,6 +32,8 @@ spu.id AS product_id, spu.product_code, spu.product_name, + spu.dept_id, + spu.create_by, cat.name AS category_name, base.spec AS spec, base.unit AS unit, From 5fbb2c9b945db01a9749126ba8f9779d6ba2c85c Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Mon, 10 Nov 2025 15:42:30 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8F=90=E4=BA=A4=E5=A4=84=E7=90=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MaintenanceOrderController.java | 75 +++++++++++++++++-- .../entity/MaintenanceOrderEntity.java | 24 ++++++ .../mapper/MaintenanceOrderMapper.xml | 4 + 3 files changed, 97 insertions(+), 6 deletions(-) diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/MaintenanceOrderController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/MaintenanceOrderController.java index 0b805a9e3..cd4b6a046 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/MaintenanceOrderController.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/MaintenanceOrderController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.feign.RemoteDictService; @@ -24,7 +25,10 @@ import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import com.bsd.pjcloud.integrated.dto.MaintenanceOrderAppCreateDTO; +import com.bsd.pjcloud.integrated.dto.MaintenanceOrderHandleDTO; import com.bsd.pjcloud.integrated.vo.maintenance.MaintenanceOrderScreenVo; +import com.bsd.pjcloud.integrated.vo.maintenance.app.MaintenanceOrderAppDetailVo; +import com.bsd.pjcloud.integrated.vo.maintenance.app.MaintenanceOrderAppListVo; import com.bsd.pjcloud.integrated.vo.MaintenanceTypeVO; import com.bsd.pjcloud.admin.api.entity.SysDictItem; @@ -34,6 +38,7 @@ import java.util.HashMap; import java.util.List; import java.util.Objects; +import java.time.LocalDateTime; /** * 维修工单主表 @@ -64,6 +69,7 @@ public class MaintenanceOrderController { public R getMaintenanceOrderPage(@ParameterObject Page page, @ParameterObject MaintenanceOrderEntity maintenanceOrder) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(StrUtil.isNotBlank(maintenanceOrder.getTitle()),MaintenanceOrderEntity::getTitle,maintenanceOrder.getTitle()); + wrapper.orderByDesc(MaintenanceOrderEntity::getCreateTime); return R.ok(maintenanceOrderService.page(page, wrapper)); } @@ -158,13 +164,22 @@ public class MaintenanceOrderController { * @return R */ @GetMapping("/app/my") - @Operation(summary = "App端-我的维修分页列表", description = "App端用户分页查询自己的维修单") + @Operation(summary = "App端-我的维修分页列表", description = "App端用户分页查询自己的维修单,按创建时间倒序") // @PreAuthorize("@pms.hasPermission('integrated_maintenanceOrder_view')") - public R myMaintenanceOrders(@ParameterObject Page page) { + public R> myMaintenanceOrders(@ParameterObject Page page) { Long userId = SecurityUtils.getUser().getId(); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(MaintenanceOrderEntity::getUserId, userId); - return R.ok(maintenanceOrderService.page(page, wrapper)); + wrapper.orderByDesc(MaintenanceOrderEntity::getCreateTime); // 按创建时间倒序,最新的在第一条 + + IPage entityPage = maintenanceOrderService.page(page, wrapper); + + // 转换为VO + IPage voPage = entityPage.convert(entity -> + BeanUtils.toBean(entity, MaintenanceOrderAppListVo.class) + ); + + return R.ok(voPage); } /** @@ -173,15 +188,18 @@ public class MaintenanceOrderController { * @return R */ @GetMapping("/app/my/{id}") - @Operation(summary = "App端-我的维修单详情", description = "App端用户查看自己维修单详情") + @Operation(summary = "App端-我的维修单详情", description = "App端用户查看自己维修单详情,包含处理说明和处理图片") // @PreAuthorize("@pms.hasPermission('integrated_maintenanceOrder_view')") - public R myMaintenanceOrderDetail(@PathVariable("id") Long id) { + public R myMaintenanceOrderDetail(@PathVariable("id") Long id) { Long userId = SecurityUtils.getUser().getId(); MaintenanceOrderEntity entity = maintenanceOrderService.getById(id); if (entity == null || !Objects.equals(entity.getUserId(), userId)) { return R.failed("无权查看该维修单"); } - return R.ok(entity); + + // 转换为VO + MaintenanceOrderAppDetailVo vo = BeanUtils.toBean(entity, MaintenanceOrderAppDetailVo.class); + return R.ok(vo); } /** @@ -233,4 +251,49 @@ public class MaintenanceOrderController { return R.ok(voList); } + + /** + * 后台处理维修工单(支持填写处理情况和图片URL) + * @param dto 处理工单DTO + * @return R + */ + @Operation(summary = "后台处理维修工单", description = "后台管理员处理工单,可填写处理说明和图片URL") + @SysLog("后台处理维修工单") + @PostMapping("/handle") + @PreAuthorize("@pms.hasPermission('integrated_maintenanceOrder_edit')") + public R handleMaintenanceOrder(@RequestBody MaintenanceOrderHandleDTO dto) { + // 查询工单 + MaintenanceOrderEntity entity = maintenanceOrderService.getById(dto.getId()); + if (entity == null) { + return R.failed("工单不存在"); + } + + // 更新工单信息 + if (StrUtil.isNotBlank(dto.getHandleRemark())) { + entity.setHandleRemark(dto.getHandleRemark()); + } + if (StrUtil.isNotBlank(dto.getHandlePicUrl())) { + // 如果已有图片,追加新图片(用逗号分隔) + String existingPics = entity.getHandlePicUrl(); + if (StrUtil.isNotBlank(existingPics)) { + entity.setHandlePicUrl(existingPics + "," + dto.getHandlePicUrl()); + } else { + entity.setHandlePicUrl(dto.getHandlePicUrl()); + } + } + if (StrUtil.isNotBlank(dto.getStatus())) { + entity.setStatus(dto.getStatus()); + } + + // 设置处理时间和处理人 + entity.setHandleTime(LocalDateTime.now()); + entity.setHandleBy(SecurityUtils.getUser().getUsername()); + + boolean success = maintenanceOrderService.updateById(entity); + if (success) { + return R.ok("工单处理成功"); + } else { + return R.failed("工单处理失败"); + } + } } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/MaintenanceOrderEntity.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/MaintenanceOrderEntity.java index 891505653..be068136b 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/MaintenanceOrderEntity.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/MaintenanceOrderEntity.java @@ -140,4 +140,28 @@ public class MaintenanceOrderEntity extends Model { */ @Schema(description="维修类型") private Long maintainType; + + /** + * 处理说明/回复内容 + */ + @Schema(description="处理说明/回复内容") + private String handleRemark; + + /** + * 处理图片(多个图片URL,逗号分隔) + */ + @Schema(description="处理图片(多个用逗号分隔)") + private String handlePicUrl; + + /** + * 处理时间 + */ + @Schema(description="处理时间") + private LocalDateTime handleTime; + + /** + * 处理人 + */ + @Schema(description="处理人") + private String handleBy; } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/MaintenanceOrderMapper.xml b/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/MaintenanceOrderMapper.xml index 227ef9a9d..899ad7504 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/MaintenanceOrderMapper.xml +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/MaintenanceOrderMapper.xml @@ -22,5 +22,9 @@ + + + + \ No newline at end of file From d6a384815d1cae57ea6a3e33d78efa1b208bab5d Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Mon, 10 Nov 2025 22:19:43 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E5=B7=A5=E5=8D=95DTO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/MaintenanceOrderHandleDTO.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/dto/MaintenanceOrderHandleDTO.java diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/dto/MaintenanceOrderHandleDTO.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/dto/MaintenanceOrderHandleDTO.java new file mode 100644 index 000000000..354d33304 --- /dev/null +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/dto/MaintenanceOrderHandleDTO.java @@ -0,0 +1,40 @@ +package com.bsd.pjcloud.integrated.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 维修工单处理DTO + * + * @author zjf + * @date 2025-01-27 + */ +@Data +@Schema(description = "维修工单处理DTO") +public class MaintenanceOrderHandleDTO { + + /** + * 工单ID + */ + @Schema(description = "工单ID") + private Long id; + + /** + * 处理说明/回复内容 + */ + @Schema(description = "处理说明/回复内容") + private String handleRemark; + + /** + * 处理图片(多个图片URL,逗号分隔) + */ + @Schema(description = "处理图片URL(多个用逗号分隔)") + private String handlePicUrl; + + /** + * 状态(可选,如:已完成、处理中等) + */ + @Schema(description = "状态") + private String status; +} + From 7742b7b21d806cd1cf560bbde04170f210202d31 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Mon, 10 Nov 2025 22:24:29 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E5=B7=A5=E5=8D=95vo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/MaintenanceOrderAppDetailVo.java | 103 ++++++++++++++++++ .../app/MaintenanceOrderAppListVo.java | 91 ++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/maintenance/app/MaintenanceOrderAppDetailVo.java create mode 100644 pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/maintenance/app/MaintenanceOrderAppListVo.java diff --git a/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/maintenance/app/MaintenanceOrderAppDetailVo.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/maintenance/app/MaintenanceOrderAppDetailVo.java new file mode 100644 index 000000000..c173473a0 --- /dev/null +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/maintenance/app/MaintenanceOrderAppDetailVo.java @@ -0,0 +1,103 @@ +package com.bsd.pjcloud.integrated.vo.maintenance.app; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * App端维修工单详情VO + * + * @author zjf + * @date 2025-01-27 + */ +@Data +@Schema(description = "App端维修工单详情VO") +public class MaintenanceOrderAppDetailVo { + + /** + * id + */ + @Schema(description = "id") + private Long id; + + /** + * 设备名称 + */ + @Schema(description = "设备名称") + private String title; + + /** + * 图片 + */ + @Schema(description = "图片") + private String picUrl; + + /** + * 描述 + */ + @Schema(description = "描述") + private String description; + + /** + * 状态 + */ + @Schema(description = "状态") + private String status; + + /** + * 发现日期 + */ + @Schema(description = "发现日期") + private LocalDate dateFound; + + /** + * 发现地点 + */ + @Schema(description = "设备位置") + private String location; + + /** + * 工单紧急层度'high', 'medium', 'low' + */ + @Schema(description = "工单紧急层度'high', 'medium', 'low'") + private String urgency; + + /** + * 维修类型 + */ + @Schema(description = "维修类型") + private Long maintainType; + + /** + * 创建时间 + */ + @Schema(description = "创建时间") + private LocalDateTime createTime; + + /** + * 处理说明/回复内容 + */ + @Schema(description = "处理说明/回复内容") + private String handleRemark; + + /** + * 处理图片(多个图片URL,逗号分隔) + */ + @Schema(description = "处理图片URL(多个用逗号分隔)") + private String handlePicUrl; + + /** + * 处理时间 + */ + @Schema(description = "处理时间") + private LocalDateTime handleTime; + + /** + * 处理人 + */ + @Schema(description = "处理人") + private String handleBy; +} + diff --git a/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/maintenance/app/MaintenanceOrderAppListVo.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/maintenance/app/MaintenanceOrderAppListVo.java new file mode 100644 index 000000000..cf3b3e14b --- /dev/null +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/maintenance/app/MaintenanceOrderAppListVo.java @@ -0,0 +1,91 @@ +package com.bsd.pjcloud.integrated.vo.maintenance.app; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * App端维修工单列表VO + * + * @author zjf + * @date 2025-01-27 + */ +@Data +@Schema(description = "App端维修工单列表VO") +public class MaintenanceOrderAppListVo { + + /** + * id + */ + @Schema(description = "id") + private Long id; + + /** + * 设备名称 + */ + @Schema(description = "设备名称") + private String title; + + /** + * 图片 + */ + @Schema(description = "图片") + private String picUrl; + + /** + * 描述 + */ + @Schema(description = "描述") + private String description; + + /** + * 状态 + */ + @Schema(description = "状态") + private String status; + + /** + * 发现日期 + */ + @Schema(description = "发现日期") + private LocalDate dateFound; + + /** + * 发现地点 + */ + @Schema(description = "设备位置") + private String location; + + /** + * 工单紧急层度'high', 'medium', 'low' + */ + @Schema(description = "工单紧急层度'high', 'medium', 'low'") + private String urgency; + + /** + * 维修类型 + */ + @Schema(description = "维修类型") + private Long maintainType; + + /** + * 创建时间 + */ + @Schema(description = "创建时间") + private LocalDateTime createTime; + + /** + * 处理时间 + */ + @Schema(description = "处理时间") + private LocalDateTime handleTime; + + /** + * 处理人 + */ + @Schema(description = "处理人") + private String handleBy; +} +