diff --git a/src/main/java/org/springblade/common/constant/CommonConstant.java b/src/main/java/org/springblade/common/constant/CommonConstant.java index 09b6edc..23fd438 100644 --- a/src/main/java/org/springblade/common/constant/CommonConstant.java +++ b/src/main/java/org/springblade/common/constant/CommonConstant.java @@ -81,4 +81,10 @@ public interface CommonConstant { */ Integer API_SCOPE_CATEGORY = 2; + String TRUE_STR = "1"; + String FALSE_STR = "0"; + + Integer TRUE_INT = 1; + Integer FALSE_INT = 0; + } diff --git a/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java b/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java index dbbf0e4..cdf5aae 100644 --- a/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java @@ -6,23 +6,25 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; -import org.springblade.common.cache.SysCache; -import org.springblade.common.cache.UserCache; import org.springblade.common.constant.CommonConstant; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; -import org.springblade.modules.business.pojo.dto.FeedbackDTO; -import org.springblade.modules.business.pojo.entity.Feedback; +import org.springblade.modules.business.enums.MaintenanceStatusEnum; +import org.springblade.modules.business.pojo.dto.MaintenanceTaskDto; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail; import org.springblade.modules.business.service.IMaintenancePlanService; -import org.springblade.modules.system.pojo.entity.User; +import org.springblade.modules.business.service.IMaintenanceTaskDetailService; +import org.springblade.modules.business.service.IMaintenanceTaskService; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; +import java.util.List; /** * 维保控制器 @@ -31,11 +33,14 @@ import java.time.LocalDate; */ @RestController @AllArgsConstructor -@RequestMapping(CommonConstant.APPLICATION_PROJECT+"/maintenance") +@RequestMapping(CommonConstant.APPLICATION_PROJECT + "/maintenance") @Tag(name = "维保控制器", description = "维控制器") public class MaintenanceController extends BladeController { - private final IMaintenancePlanService maintenancePlanService; + private final IMaintenancePlanService planService; + + private final IMaintenanceTaskService taskService; + private final IMaintenanceTaskDetailService taskDetailService; /*---------- 维修计划开始 ----------*/ @@ -43,45 +48,38 @@ public class MaintenanceController extends BladeController { @Operation(summary = "维保计划列表", description = "维保计划列表") public R> planPage(MaintenancePlan plan, Query query) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(plan).orderByDesc(MaintenancePlan::getCreateTime); - IPage pages = maintenancePlanService.page(Condition.getPage(query), wrapper); + IPage pages = this.planService.page(Condition.getPage(query), wrapper); return R.data(pages); } @GetMapping("/plan-detail") @Operation(summary = "维保计划明细", description = "维保计划明细") public R planDetail(MaintenancePlan plan) { - return R.data(maintenancePlanService.planDetail(plan)); + return R.data(this.planService.planDetail(plan)); } @PostMapping("/plan-create") @Operation(summary = "创建维保计划", description = "创建维保计划") public R planCreate(@RequestBody MaintenancePlan plan) { - return R.status(maintenancePlanService.create(plan)); + return R.status(this.planService.create(plan)); } @PostMapping("/plan-update") @Operation(summary = "修改维保计划", description = "修改维保计划") public R planUpdate(@RequestBody MaintenancePlan plan) { - return R.status(maintenancePlanService.planUpdate(plan)); + return R.status(this.planService.planUpdate(plan)); } @PostMapping("/plan-open") @Operation(summary = "维保计划开启/关闭", description = "维保计划开启/关闭") public R planOpen(@RequestBody MaintenancePlan plan) { - return R.status(maintenancePlanService.planOpen(plan)); + return R.status(this.planService.planOpen(plan)); } @PostMapping("/plan-remove") @Operation(summary = "删除维保计划", description = "删除维保计划") public R planRemove(@RequestParam String ids) { - return R.status(maintenancePlanService.planRemove(Func.toLongList(ids))); - } - - @GetMapping("/task-page") - @Operation(summary = "维保任务列表", description = "维保任务列表") - public R taskPage() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + return R.status(planService.planRemove(Func.toLongList(ids))); } /*---------- 维修计划结束 ----------*/ @@ -93,109 +91,229 @@ public class MaintenanceController extends BladeController { public R taskCreate() { LocalDate now = LocalDate.now(); // 注意要查询上一次巡检计划中发现但未维修的 - return R.status(maintenancePlanService.createTask(now)); + return R.status(planService.createTask(now)); + } + + @GetMapping("/task-page") + @Operation(summary = "维保任务列表", description = "维保任务列表") + public R taskPage(MaintenanceTask task, Query query) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(MaintenanceTask.class); + wrapper.eq(MaintenanceTask::getIsDeleted, CommonConstant.FALSE_STR); + + IPage pages = taskService.page(Condition.getPage(query), wrapper); + return R.data(pages); } @GetMapping("/task-detail") @Operation(summary = "任务明细", description = "任务明细") - public R taskDetail() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R taskDetail(@RequestParam Long id) { + MaintenanceTask task = taskService.getById(id); + List detailList = taskDetailService.list(Wrappers.lambdaQuery(MaintenanceTaskDetail.class).eq(MaintenanceTaskDetail::getTaskId, id)); + + MaintenanceTaskDto taskDto = new MaintenanceTaskDto(task, detailList); + return R.data(taskDto); } - @GetMapping("/task-supervisor-check") + @PostMapping("/task-supervisor-confirm") @Operation(summary = "主管审核并指定维修人员", description = "主管审核并指定维修人员") - public R taskSupervisorCheck() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R taskSupervisorConfirm(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setServicemanId(task.getServicemanId()); + taskOld.setTaskStatus(MaintenanceStatusEnum.TASK_SUPERVISOR_CONFIRM.getValue()); + taskService.updateById(taskOld); + + return R.success(); } - @GetMapping("/task-serviceman-receive") + @PostMapping("/task-serviceman-receive") @Operation(summary = "维修人员确认接收", description = "维修人员确认接收") - public R taskServicemanReceive() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R taskServicemanReceive(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setTaskStatus(MaintenanceStatusEnum.TASK_SERVICEMAN_CONFIRM.getValue()); + taskService.updateById(taskOld); + + return R.success(); } - @GetMapping("/task-serviceman-update-time") + @PostMapping("/task-serviceman-update-time") @Operation(summary = "维修人员更新预约时间", description = "维修人员更新预约时间") - public R taskServicemanUpdateTime() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R taskServicemanUpdateTime(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setReservationTime(task.getReservationTime()); + taskService.updateById(taskOld); + + return R.success(); } @GetMapping("/task-serviceman-update-detail") @Operation(summary = "维修人员更新维修明细", description = "维修人员更新维修明细") - public R taskServicemanUpdateDetail() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R taskServicemanUpdateDetail(@RequestBody List taskDetailList) { + // 只更新设备状态 + taskDetailService.saveBatch(taskDetailList); + + return R.success(); } - @GetMapping("/task-serviceman-submit") + @PostMapping("/task-serviceman-submit") @Operation(summary = "维修人员提交巡检完成", description = "维修人员提交巡检完成") - public R taskServicemanSubmit() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R taskServicemanSubmit(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setTaskStatus(MaintenanceStatusEnum.TASK_SERVICEMAN_SUBMIT.getValue()); + taskOld.setFinishTime(DateUtil.now()); + taskService.updateById(taskOld); + + return R.success(); } - @GetMapping("/task-customer-confirm") - @Operation(summary = "客户确认", description = "客户确认") - public R taskCustomerConfirm() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + @PostMapping("/task-customer-confirm") + @Operation(summary = "客户确认巡检完成", description = "客户确认巡检完成") + public R taskCustomerConfirm(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setTaskStatus(MaintenanceStatusEnum.TASK_CUSTOMER_CONFIRM.getValue()); + taskService.updateById(taskOld); + + return R.success(); + } + + @PostMapping("/task-customer-refuse") + @Operation(summary = "客户确认巡检未完成", description = "客户确认巡检未完成") + public R taskCustomerRefuse(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setApprovePoint("客户确认巡检结果"); + taskOld.setApprovePerson(task.getApprovePerson()); + taskOld.setApproveResult(task.getApproveResult()); + taskOld.setApproveRemark(task.getApproveRemark()); + taskOld.setApproveTime(DateUtil.now()); + taskOld.setTaskStatus(MaintenanceStatusEnum.TASK_SERVICEMAN_CONFIRM.getValue()); + taskService.updateById(taskOld); + + return R.success(); } /*---------- 维修任务结束 ----------*/ /*---------- 维修方案开始 ----------*/ - @PostMapping("/solution-serviceman-save") + @PostMapping("/repair-solution-save") @Operation(summary = "维修人员保存维修方案", description = "维修人员保存维修方案") - public R solutionServicemanSave() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R repairSolutionSave(@RequestBody MaintenanceTaskDto taskDto) { + MaintenanceTask task = taskDto.getTask(); + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_SERVICEMAN_CREATE.getValue()); + taskService.updateById(taskOld); + + List detailList = taskDto.getDetailList(); + taskDetailService.saveBatch(detailList); + + return R.success(); } - @GetMapping("/solution-serviceman-submit") + @PostMapping("/repair-solution-submit") @Operation(summary = "维修人员提交维修方案", description = "维修人员提交维修方案") - public R solutionServicemanSubmit() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R repairSolutionSubmit(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_SERVICEMAN_SUBMIT.getValue()); + taskService.updateById(taskOld); + + return R.success(); + } + + @PostMapping("/repair-solution-supervisor-confirm") + @Operation(summary = "主管审核维修方案", description = "主管审核维修方案") + public R repairSupervisorConfirm(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_CUSTOMER_CONFIRM.getValue()); + taskService.updateById(taskOld); + + return R.success(); } - @GetMapping("/solution-supervisor-check") + @PostMapping("/repair-solution-supervisor-refuse") @Operation(summary = "主管审核维修方案", description = "主管审核维修方案") - public R solutionSupervisorCheck() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R repairSupervisorRefuse(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_SERVICEMAN_CREATE.getValue()); + taskService.updateById(taskOld); + + return R.success(); } - @GetMapping("/solution-customer-check-detail") + @PostMapping("/repair-solution-customer-confirm") @Operation(summary = "客户确认维修明细", description = "客户确认维修明细") - public R solutionCustomerCheckDetail() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R repairCustomerConfirmDetail(@RequestBody MaintenanceTaskDto taskDto) { + MaintenanceTask task = taskDto.getTask(); + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_REPAIRING.getValue()); + taskService.updateById(taskOld); + + List detailList = taskDto.getDetailList(); + taskDetailService.saveBatch(detailList); + + return R.success(); + } + + @PostMapping("/repair-solution-customer-refuse") + @Operation(summary = "客户驳回维修明细", description = "客户驳回维修明细") + public R repairCustomerRefuseDetail(@RequestBody MaintenanceTaskDto taskDto) { + MaintenanceTask task = taskDto.getTask(); + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_SERVICEMAN_CREATE.getValue()); + taskService.updateById(taskOld); + + List detailList = taskDto.getDetailList(); + taskDetailService.saveBatch(detailList); + + return R.success(); } - @GetMapping("/solution-serviceman-finish") + @PostMapping("/repair-serviceman-submit") @Operation(summary = "维修人员维修完成", description = "维修人员维修完成") - public R solutionServicemanFinish() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R repairServicemanFinish(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_REPAIR_FINISH.getValue()); + taskService.updateById(taskOld); + + return R.success(); } - @GetMapping("/solution-customer-check-finish") + @PostMapping("/repair-customer-confirm-finish") @Operation(summary = "客户确认维修完成", description = "客户确认维修完成") - public R solutionCustomerCheckFinish() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R repairCustomerConfirmFinish(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_EVALUATE_FINISH.getValue()); + taskService.updateById(taskOld); + + return R.success(); } - @GetMapping("/solution-service-check") + @PostMapping("/repair-customer-refuse-finish") + @Operation(summary = "客户确认维修完成", description = "客户确认维修完成") + public R repairCustomerRefuseFinish(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_REPAIRING.getValue()); + taskService.updateById(taskOld); + + return R.success(); + } + + @PostMapping("/repair-service-confirm") @Operation(summary = "客服确认客户付款", description = "客服确认客户付款") - public R solutionServiceCheck() { - User user = UserCache.getUser(AuthUtil.getUserId()); - return R.success(""); + public R repairServiceConfirm(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_FINISH.getValue()); + taskService.updateById(taskOld); + + return R.success(); + } + + @PostMapping("/repair-service-confirm-invoice") + @Operation(summary = "客服确认开发票", description = "客服确认开发票") + public R repairServiceConfirmInvoice(@RequestBody MaintenanceTask task) { + MaintenanceTask taskOld = taskService.getById(task.getId()); + taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_INVOICE.getValue()); + taskService.updateById(taskOld); + + return R.success(); } /*---------- 维修方案结束 ----------*/ diff --git a/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java b/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java index 5113ab7..c3c8721 100644 --- a/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java +++ b/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.json.JSONObject; @@ -16,10 +15,13 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.StringPool; import org.springblade.modules.business.enums.WorkOrderStatusEnum; import org.springblade.modules.business.pojo.dto.workorder.WorkOrderDTO; import org.springblade.modules.business.pojo.entity.workorder.WorkOrder; +import org.springblade.modules.business.pojo.entity.workorder.WorkOrderApproval; import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO; +import org.springblade.modules.business.service.IWorkOrderApprovalService; import org.springblade.modules.business.service.IWorkOrderFlowService; import org.springblade.modules.business.service.IWorkOrderService; import org.springframework.web.bind.annotation.*; @@ -47,6 +49,8 @@ public class WorkOrderController extends BladeController { private final IWorkOrderService workOrderService; + private final IWorkOrderApprovalService approvalService; + private final IWorkOrderFlowService flowService; /** @@ -59,27 +63,27 @@ public class WorkOrderController extends BladeController { @GetMapping("/page") public R> page(WorkOrderDTO workOrderDTO, Query query) { // 创建工作订单的查询条件包装器 - LambdaQueryWrapper eq = Wrappers.lambdaQuery(WorkOrder.class); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(WorkOrder.class); // 数据权限 if (StringUtils.isNotBlank(workOrderDTO.getDataType())) { switch (workOrderDTO.getDataType()) { case "1": // 客户 - eq.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()); + wrapper.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()); break; case "2": // 客服 // eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId())); - eq.ne(WorkOrder::getStatus, WorkOrderStatusEnum.DRAFT.getValue()); + wrapper.ne(WorkOrder::getStatus, WorkOrderStatusEnum.DRAFT.getValue()); break; case "3": // 维修负责人 - eq.ge(WorkOrder::getStatus, WorkOrderStatusEnum.SERVICEMAN_CONFIRM.getValue()); + wrapper.ge(WorkOrder::getStatus, WorkOrderStatusEnum.SERVICEMAN_CONFIRM.getValue()); break; case "4": // 维修人员 - eq.eq(WorkOrder::getRepairPerson, AuthUtil.getUserId()); + wrapper.eq(WorkOrder::getRepairPerson, AuthUtil.getUserId()); break; default: log.error("数据权限设置失败"); @@ -88,15 +92,17 @@ public class WorkOrderController extends BladeController { } // 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序 - eq.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()); - eq.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()); - eq.in(workOrderDTO.getStatus() != null, WorkOrder::getStatus, workOrderDTO.getStatus()); - eq.like(StringUtils.isNotBlank(workOrderDTO.getRequirementCode()), WorkOrder::getRequirementCode, workOrderDTO.getRequirementCode()); - eq.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()); - eq.orderByDesc(WorkOrder::getCreateTime); + wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()); + wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()); + if (StringUtils.isNotBlank(workOrderDTO.getStatusSearch())) { + wrapper.in(WorkOrder::getStatus, workOrderDTO.getStatusSearch().split(",")); + } + wrapper.like(StringUtils.isNotBlank(workOrderDTO.getRequirementCode()), WorkOrder::getRequirementCode, workOrderDTO.getRequirementCode()); + wrapper.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()); + wrapper.orderByDesc(WorkOrder::getCreateTime); // 执行分页查询 - IPage pages = workOrderService.page(Condition.getPage(query), eq); + IPage pages = workOrderService.page(Condition.getPage(query), wrapper); // 返回查询结果 return R.data(pages); @@ -134,7 +140,6 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-修改工单信息") @PostMapping("/update") - @ApiOperationSupport(order = 5) public R update(@RequestBody WorkOrderVO workOrder) { return R.status(workOrderService.updateAttach(workOrder)); } @@ -144,7 +149,6 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-客服审核指定维修人员") @PostMapping("/service-to-serviceman") - @ApiOperationSupport(order = 6) public R serviceToServiceman(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); workOrderOld.setRepairPerson(workOrder.getRepairPerson()); @@ -154,7 +158,6 @@ public class WorkOrderController extends BladeController { workOrderOld.setCustomerOpinion(workOrder.getCustomerOpinion()); workOrderOld.setStatus(WorkOrderStatusEnum.SERVICE_SUBMIT.getValue()); workOrderService.updateById(workOrderOld); - // todo 审核通过 return R.success(""); @@ -165,7 +168,6 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-维修人员接收工单") @PostMapping("/serviceman-receive") - @ApiOperationSupport(order = 6) public R serviceReceive(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); workOrderOld.setReceiveOrderTime(DateUtil.now()); @@ -182,13 +184,14 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-维修人员拒绝接收工单") @PostMapping("/serviceman-reject") - @ApiOperationSupport(order = 6) public R serviceReject(@RequestBody WorkOrder workOrder) { - workOrder = workOrderService.getById(workOrder.getId()); - workOrder.setRepaiRejectReason(workOrder.getRepaiRejectReason()); - workOrder.setStatus(WorkOrderStatusEnum.CUSTOMER_SUBMIT.getValue()); - workOrderService.updateById(workOrder); + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setRepaiRejectReason(workOrder.getRepaiRejectReason()); + workOrderOld.setStatus(WorkOrderStatusEnum.CUSTOMER_SUBMIT.getValue()); + workOrderService.updateById(workOrderOld); + WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getRepaiRejectReason()); + approvalService.save(approval); // todo 审核拒绝 return R.success(""); @@ -199,11 +202,10 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-维修人员提交维修方案") @PostMapping("/serviceman-submit") - @ApiOperationSupport(order = 6) public R serviceSubmit(@RequestBody WorkOrder workOrder) { - workOrder = workOrderService.getById(workOrder.getId()); - workOrder.setStatus(WorkOrderStatusEnum.SUPERVISOR_CONFIRM.getValue()); - workOrderService.updateById(workOrder); + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setStatus(WorkOrderStatusEnum.SUPERVISOR_CONFIRM.getValue()); + workOrderService.updateById(workOrderOld); // todo 审核通过 @@ -215,9 +217,9 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-主管确认维修方案") @PostMapping("/supervisor-confirm") - @ApiOperationSupport(order = 6) public R supervisorConfirm(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setApprovePoint("主管审批维修方案"); workOrderOld.setApprovePerson(workOrder.getApprovePerson()); workOrderOld.setApproveResult(workOrder.getApproveResult()); workOrderOld.setApproveTime(workOrder.getApproveTime()); @@ -225,6 +227,8 @@ public class WorkOrderController extends BladeController { workOrderOld.setStatus(WorkOrderStatusEnum.CUSTOMER_CONFIRM.getValue()); workOrderService.updateById(workOrderOld); + WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); + approvalService.save(approval); // todo 审核通过 return R.success(""); @@ -235,17 +239,20 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-主管驳回维修方案") @PostMapping("/supervisor-reject") - @ApiOperationSupport(order = 6) public R supervisorReject(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setApprovePoint("主管审批维修方案"); workOrderOld.setApprovePerson(workOrder.getApprovePerson()); workOrderOld.setApproveResult(workOrder.getApproveResult()); workOrderOld.setApproveTime(workOrder.getApproveTime()); workOrderOld.setApproveRemark(workOrder.getApproveRemark()); workOrderOld.setRepaiTeamRejectReason(workOrder.getRepaiTeamRejectReason()); - workOrderOld.setStatus(WorkOrderStatusEnum.SERVICE_SUBMIT.getValue()); + workOrderOld.setStatus(WorkOrderStatusEnum.SERVICEMAN_CONFIRM.getValue()); workOrderService.updateById(workOrderOld); + WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getApproveRemark()); + approvalService.save(approval); + // todo 审核通过 return R.success(""); @@ -256,9 +263,9 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-客户确认维修方案") @PostMapping("/customer-confirm") - @ApiOperationSupport(order = 6) public R customerConfirm(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setApprovePoint("客户审批维修方案"); workOrderOld.setApprovePerson(workOrder.getApprovePerson()); workOrderOld.setApproveResult(workOrder.getApproveResult()); workOrderOld.setApproveTime(workOrder.getApproveTime()); @@ -266,6 +273,9 @@ public class WorkOrderController extends BladeController { workOrderOld.setStatus(WorkOrderStatusEnum.REPAIRING.getValue()); workOrderService.updateById(workOrderOld); + WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); + approvalService.save(approval); + // todo 审核通过 return R.success(""); @@ -276,16 +286,18 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-客户驳回维修方案") @PostMapping("/customer-reject") - @ApiOperationSupport(order = 6) public R customerReject(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setApprovePoint("客户审批维修方案"); workOrderOld.setApprovePerson(workOrder.getApprovePerson()); workOrderOld.setApproveResult(workOrder.getApproveResult()); workOrderOld.setApproveTime(workOrder.getApproveTime()); workOrderOld.setApproveRemark(workOrder.getApproveRemark()); - workOrderOld.setStatus(WorkOrderStatusEnum.SERVICE_SUBMIT.getValue()); + workOrderOld.setStatus(WorkOrderStatusEnum.SERVICEMAN_CONFIRM.getValue()); workOrderService.updateById(workOrderOld); + WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getApproveRemark()); + approvalService.save(approval); // todo 审核通过 return R.success(""); @@ -296,7 +308,6 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-维修人员提交维修结果") @PostMapping("/serviceman-repair-submit") - @ApiOperationSupport(order = 6) public R servicemanRepairSubmit(@RequestBody WorkOrder workOrder) { workOrder = workOrderService.getById(workOrder.getId()); workOrder.setStatus(WorkOrderStatusEnum.REPAIR_FINISH.getValue()); @@ -312,9 +323,14 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-评价签字") @PostMapping("/customer-repair-confirm") - @ApiOperationSupport(order = 10) public R customerRepairConfirm(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setApprovePoint("客户审批维修结果"); + workOrderOld.setApprovePerson(AuthUtil.getUserId()); + workOrderOld.setApproveResult(CommonConstant.TRUE_INT); + workOrderOld.setApproveTime(DateUtil.now()); + workOrderOld.setApproveRemark(StringPool.EMPTY); + workOrderOld.setSignaturePerson(workOrder.getSignaturePerson()); workOrderOld.setSignatureUrl(workOrder.getSignatureUrl()); workOrderOld.setSignatureTime(workOrder.getSignatureTime()); @@ -329,6 +345,9 @@ public class WorkOrderController extends BladeController { } workOrderService.updateById(workOrderOld); + WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); + approvalService.save(approval); + // todo 审核通过 return R.success(""); @@ -339,16 +358,19 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-客户确认未完成") @PostMapping("/customer-repair-reject") - @ApiOperationSupport(order = 10) public R customerRepairReject(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setApprovePoint("客户审批维修结果"); workOrderOld.setApprovePerson(workOrder.getApprovePerson()); workOrderOld.setApproveResult(workOrder.getApproveResult()); workOrderOld.setApproveTime(workOrder.getApproveTime()); - workOrderOld.setApproveResult(workOrder.getApproveResult()); - workOrderOld.setStatus(WorkOrderStatusEnum.SERVICE_SUBMIT.getValue()); + workOrderOld.setApproveRemark(workOrder.getApproveRemark()); + workOrderOld.setStatus(WorkOrderStatusEnum.REPAIRING.getValue()); workOrderService.updateById(workOrderOld); + WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getApproveRemark()); + approvalService.save(approval); + // todo 审核通过 return R.success(""); @@ -359,7 +381,6 @@ public class WorkOrderController extends BladeController { */ @ApiLog(value = "提报管理-工单关闭") @PostMapping("/service-close") - @ApiOperationSupport(order = 6) public R serviceClose(@RequestBody WorkOrder workOrder) { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); workOrderOld.setCloseReason(workOrder.getCloseReason()); @@ -371,6 +392,19 @@ public class WorkOrderController extends BladeController { return R.success(""); } + /** + * 已开发票 + */ + @ApiLog(value = "提报管理-已开发票") + @PostMapping("/service-invoice") + public R serviceInvoice(@RequestBody WorkOrder workOrder) { + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setStatus(WorkOrderStatusEnum.TICKET.getValue()); + workOrderService.updateById(workOrderOld); + + return R.success(""); + } + /** * 封装百度接口 * diff --git a/src/main/java/org/springblade/modules/business/enums/MaintenanceStatusEnum.java b/src/main/java/org/springblade/modules/business/enums/MaintenanceStatusEnum.java new file mode 100644 index 0000000..0aa8c43 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/enums/MaintenanceStatusEnum.java @@ -0,0 +1,81 @@ +package org.springblade.modules.business.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 系统字典枚举类 + * + * @author Chill + */ +@Getter +@AllArgsConstructor +public enum MaintenanceStatusEnum { + + /** + * 任务创建,由巡检计划定时任务自动生成巡检任务, 等待主管审核并分配巡检人员 + */ + TASK_CREATE(0), + /** + * 主管审核并分配巡检人员, 等待维修人员接收 + */ + TASK_SUPERVISOR_CONFIRM(1), + /** + * 维修人员确认, 等待执行巡检任务 + */ + TASK_SERVICEMAN_CONFIRM(2), + /** + * 维修人员提交,待客户确认巡检完成 + */ + TASK_SERVICEMAN_SUBMIT(3), + /** + * 巡检完成 + */ + TASK_CUSTOMER_CONFIRM(4), + + /** + * 无需维修 + */ + REPAIR_NO(0), + + /** + * 维修人员创建维修方案,等待提交 + */ + REPAIR_SERVICEMAN_CREATE(1), + /** + * 维修人员提交,待客户确认巡检完成 + */ + REPAIR_SERVICEMAN_SUBMIT(2), + /** + * 维修人员提交,待主管审批 + */ + REPAIR_SUPERVISOR_CONFIRM(3), + /** + * 主管审批通过,待客户审批 + */ + REPAIR_CUSTOMER_CONFIRM(4), + /** + * 客户审批通过, 维修中 + */ + REPAIR_REPAIRING(5), + /** + * 维修完成,待评价 + */ + REPAIR_REPAIR_FINISH(6), + /** + * 评价完成,待客服确认付款 + */ + REPAIR_EVALUATE_FINISH(7), + /** + * 客服确认付款, 维修完成 + */ + REPAIR_FINISH(8), + /** + * 客服确认开发票 + */ + REPAIR_INVOICE(9), + ; + + final int value; + +} diff --git a/src/main/java/org/springblade/modules/business/mapper/WorkOrderApprovalMapper.java b/src/main/java/org/springblade/modules/business/mapper/WorkOrderApprovalMapper.java new file mode 100644 index 0000000..573c513 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/WorkOrderApprovalMapper.java @@ -0,0 +1,23 @@ + +package org.springblade.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.modules.business.pojo.entity.workorder.WorkOrderApproval; + +/** + * 工单审核记录 Mapper 接口 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface WorkOrderApprovalMapper extends BaseMapper { + + /** + * 查询最后一次审核 + * + * @param workOrderId 工单ID + * @return + */ + WorkOrderApproval selectLastApproval(Long workOrderId); + +} diff --git a/src/main/java/org/springblade/modules/business/mapper/WorkOrderApprovalMapper.xml b/src/main/java/org/springblade/modules/business/mapper/WorkOrderApprovalMapper.xml new file mode 100644 index 0000000..a2a74bc --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/WorkOrderApprovalMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/src/main/java/org/springblade/modules/business/pojo/dto/MaintenanceTaskDto.java b/src/main/java/org/springblade/modules/business/pojo/dto/MaintenanceTaskDto.java new file mode 100644 index 0000000..4b438f0 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/dto/MaintenanceTaskDto.java @@ -0,0 +1,22 @@ +package org.springblade.modules.business.pojo.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail; + +import java.util.List; + +/** + * @author 84018 + * @date 2024-11-25 16:16 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MaintenanceTaskDto { + MaintenanceTask task; + + List detailList; +} diff --git a/src/main/java/org/springblade/modules/business/pojo/dto/workorder/WorkOrderDTO.java b/src/main/java/org/springblade/modules/business/pojo/dto/workorder/WorkOrderDTO.java index a6cf15c..66b85eb 100644 --- a/src/main/java/org/springblade/modules/business/pojo/dto/workorder/WorkOrderDTO.java +++ b/src/main/java/org/springblade/modules/business/pojo/dto/workorder/WorkOrderDTO.java @@ -46,4 +46,9 @@ public class WorkOrderDTO extends WorkOrder{ * 数据权限标识(1客户 2客服 3维修负责人 4维修人员) */ private String dataType; + + /** + * 状态查询字段 + */ + private String statusSearch; } diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java index 193433d..34ab54b 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java @@ -59,22 +59,56 @@ public class MaintenanceTask extends BaseEntity { /** * 计划开始时间 */ - @DateTimeFormat( - pattern = "yyyy-MM-dd" - ) - @JsonFormat( - pattern = "yyyy-MM-dd" - ) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") private Date startTime; /** * 预约上门时间 */ - @DateTimeFormat( - pattern = "yyyy-MM-dd" - ) - @JsonFormat( - pattern = "yyyy-MM-dd" - ) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") private Date reservationTime; + /** + * 任务状态 + */ + private Integer taskStatus; + + /** + * 巡检完成时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date finishTime; + + /** + * 维修状态 + */ + private Integer repairStatus; + + /** + * 审批结果(0不通过 1通过) + */ + private Integer approveResult; + + /** + * 审核节点 + */ + private String approvePoint; + + /** + * 审批人 + */ + private Long approvePerson; + + /** + * 审批时间 + */ + private Date approveTime; + + /** + * 审批备注 + */ + private String approveRemark; + } diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java b/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java index 7ef3b8d..e2c38c1 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java @@ -142,7 +142,10 @@ public class WorkOrder extends BaseEntity { * 审批结果(0不通过 1通过) */ private Integer approveResult; - + /** + * 审核节点 + */ + private String approvePoint; /** * 审批人 */ diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrderApproval.java b/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrderApproval.java new file mode 100644 index 0000000..b68d4c4 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrderApproval.java @@ -0,0 +1,88 @@ +package org.springblade.modules.business.pojo.entity.workorder; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springblade.core.mp.base.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 工单审核表 实体类 + * + * @author BladeX + * @since 2024-10-14 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("lab_work_order_approval") +@EqualsAndHashCode(callSuper = true) +public class WorkOrderApproval extends BaseEntity { + + public WorkOrderApproval(Long orderId, Long personId, String result, Date createTime, String remark) { + this.orderId = orderId; + this.personId = personId; + this.result = result; + this.createTime = createTime; + this.remark = remark; + } + + @Schema( + description = "主键id" + ) + @TableId( + value = "id", + type = IdType.ASSIGN_ID + ) + private Long id; + + /** + * 申请单ID + */ + private Long orderId; + + /** + * 审核人 + */ + @JsonSerialize( + using = ToStringSerializer.class + ) + @Schema( + description = "审核人", + hidden = true + ) + private Long personId; + + /** + * 审核结果 + */ + private String result; + + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @Schema( + description = "审核时间", + hidden = true + ) + private Date createTime; + + /** + * 备注 + */ + private String remark; + +} diff --git a/src/main/java/org/springblade/modules/business/service/IWorkOrderApprovalService.java b/src/main/java/org/springblade/modules/business/service/IWorkOrderApprovalService.java new file mode 100644 index 0000000..f7094a4 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/IWorkOrderApprovalService.java @@ -0,0 +1,22 @@ +package org.springblade.modules.business.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.workorder.WorkOrderApproval; + +/** + * 工单审核记录 服务类 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface IWorkOrderApprovalService extends BaseService { + + /** + * 查询最后一次审核 + * + * @param workOrderId 工单ID + * @return + */ + WorkOrderApproval selectLastApproval(Long workOrderId); + +} diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java index 28f4017..bf9e75e 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java @@ -49,9 +49,6 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl implements IWorkOrderApprovalService { + + + @Override + public WorkOrderApproval selectLastApproval(Long workOrderId) { + return baseMapper.selectLastApproval(workOrderId); + } +}