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 af2f42b..4405e15 100644 --- a/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java +++ b/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java @@ -22,6 +22,7 @@ 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.IMessageService; import org.springblade.modules.business.service.IWorkOrderApprovalService; import org.springblade.modules.business.service.IWorkOrderFlowService; import org.springblade.modules.business.service.IWorkOrderService; @@ -50,455 +51,457 @@ import java.util.Map; @RequestMapping(CommonConstant.APPLICATION_PROJECT + "/work-order") public class WorkOrderController extends BladeController { - private final IWorkOrderService workOrderService; - - private final IWorkOrderApprovalService approvalService; - - private final IWorkOrderFlowService flowService; - - /** - * 查询工作订单列表 - * - * @param workOrderDTO 工作订单DTO,包含查询条件 - * @param query 分页查询对象 - * @return 返回工作订单列表的响应对象 - */ - @GetMapping("/page") - public R> page(WorkOrderDTO workOrderDTO, Query query) { - // 创建工作订单的查询条件包装器 - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(WorkOrder.class); - - // 数据权限 - if (StringUtils.isNotBlank(workOrderDTO.getDataType())) { - switch (workOrderDTO.getDataType()) { - case "1": - // 客户 - wrapper.and(wrp -> wrp.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()).or().eq(WorkOrder::getReportUnit, AuthUtil.getDeptId())); - break; - case "2": - // 客服 - // eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId())); - wrapper.ne(WorkOrder::getStatus, WorkOrderStatusEnum.KH_ORDER_DRAFT.getValue()); - break; - case "3": - // 维修负责人 - wrapper.ge(WorkOrder::getStatus, WorkOrderStatusEnum.WX_ORDER_ACCEPT.getValue()); - break; - case "4": - // 维修人员 - wrapper.eq(WorkOrder::getRepairPerson, AuthUtil.getUserId()); - break; - default: - log.error("数据权限设置失败"); - return R.fail("数据权限设置失败"); - } - } - - // 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序 - 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), wrapper); - - - pages.getRecords().forEach(order -> { - Dept dept = DeptCache.getDept(order.getReportUnit()); - if (Func.isNotEmpty(dept)) { - order.setReportUnitName(dept.getDeptName()); - } - }); - - // 返回查询结果 - return R.data(pages); - } - - /** - * 客服查询自己提报的订单列表 - * - * @param workOrderDTO 工作订单DTO,包含查询条件 - * @param query 分页查询对象 - * @return 返回工作订单列表的响应对象 - */ - @GetMapping("/service-page") - public R> servicePage(WorkOrderDTO workOrderDTO, Query query) { - // 创建工作订单的查询条件包装器 - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(WorkOrder.class); - wrapper.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()); - // 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序 - 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), wrapper); - - pages.getRecords().forEach(order -> { - Dept dept = DeptCache.getDept(order.getReportUnit()); - if (Func.isNotEmpty(dept)) { - order.setReportUnitName(dept.getDeptName()); - } - }); - - // 返回查询结果 - return R.data(pages); - } - - /** - * 工单表 详情 - */ - @GetMapping("/detail") - public R detail(WorkOrder workOrder) { - WorkOrderVO detail = workOrderService.detail(workOrder); - return R.data(detail); - } - - /** - * 保存工单并提交 - */ - @ApiLog(value = "提报管理-保存工单并提交") - @PostMapping("/customer-save") - public R customerSave(@RequestBody List workOrder) { - return R.status(workOrderService.saveAndSubmit(workOrder)); - } - - /** - * 保存工单为草稿 - */ - @ApiLog(value = "提报管理-保存工单为草稿") - @PostMapping("/customer-draft") - public R customerDraft(@RequestBody List workOrder) { - return R.status(workOrderService.saveDraft(workOrder)); - } - - /** - * 客服保存工单并提交 - */ - @ApiLog(value = "提报管理-客服保存工单并提交") - @PostMapping("/service-save") - public R serviceSave(@RequestBody List workOrder) { - return R.status(workOrderService.serviceSaveAndSubmit(workOrder)); - } - - /** - * 客服工单为草稿 - */ - @ApiLog(value = "提报管理-客服工单为草稿") - @PostMapping("/service-draft") - public R serviceDraft(@RequestBody List workOrder) { - return R.status(workOrderService.serviceSave(workOrder)); - } - - /** - * 修改工单信息 - */ - @ApiLog(value = "提报管理-修改工单信息") - @PostMapping("/update") - public R update(@RequestBody WorkOrderVO workOrder) { - return R.status(workOrderService.updateAttach(workOrder)); - } - - /** - * 客服审核指定维修人员 - */ - @ApiLog(value = "提报管理-客服审核指定维修人员") - @PostMapping("/service-to-serviceman") - public R serviceToServiceman(@RequestBody WorkOrder workOrder) { - WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); - workOrderOld.setRepairPerson(workOrder.getRepairPerson()); - workOrderOld.setDispatchTime(DateUtil.now()); - workOrderOld.setPlanCompleteTime(workOrder.getPlanCompleteTime()); - workOrderOld.setRemark(workOrder.getRemark()); - workOrderOld.setCustomerOpinion(workOrder.getCustomerOpinion()); - workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_ALLOT.getValue()); - workOrderService.updateById(workOrderOld); - // todo 审核通过 - - return R.success(""); - } - - /** - * 维修人员接收工单 - */ - @ApiLog(value = "提报管理-维修人员接收工单") - @PostMapping("/serviceman-receive") - public R serviceReceive(@RequestBody WorkOrder workOrder) { - WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); - workOrderOld.setReceiveOrderTime(DateUtil.now()); - workOrderOld.setStatus(WorkOrderStatusEnum.WX_ORDER_ACCEPT.getValue()); - workOrderService.updateById(workOrderOld); - - // todo 审核通过 - - return R.success(""); - } - - /** - * 维修人员拒绝接收工单 - */ - @ApiLog(value = "提报管理-维修人员拒绝接收工单") - @PostMapping("/serviceman-reject") - public R serviceReject(@RequestBody WorkOrder workOrder) { - WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); - workOrderOld.setRepaiRejectReason(workOrder.getRepaiRejectReason()); - workOrderOld.setStatus(WorkOrderStatusEnum.WX_ORDER_REFUSE.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(""); - } - - /** - * 维修人员提交维修方案 - */ - @ApiLog(value = "提报管理-维修人员提交维修方案") - @PostMapping("/serviceman-submit") - public R serviceSubmit(@RequestBody WorkOrder workOrder) { - workOrderService.repairPlanSubmit(workOrder); - - return R.success(""); - } - - /** - * 主管确认维修方案 - */ - @ApiLog(value = "提报管理-主管确认维修方案") - @PostMapping("/supervisor-confirm") - 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()); - workOrderOld.setApproveRemark(workOrder.getApproveRemark()); - workOrderOld.setStatus(WorkOrderStatusEnum.ZG_REPAIR_PLAN_PASS.getValue()); - workOrderService.updateById(workOrderOld); - - WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); - approvalService.save(approval); - - return R.success(""); - } - - /** - * 主管驳回维修方案 - */ - @ApiLog(value = "提报管理-主管驳回维修方案") - @PostMapping("/supervisor-reject") - public R supervisorReject(@RequestBody WorkOrder workOrder) { - workOrderService.repairPlanRefuse(workOrder); - - return R.success(""); - } - - /** - * 客户确认维修方案 - */ - @ApiLog(value = "提报管理-客户确认维修方案") - @PostMapping("/customer-confirm") - 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()); - workOrderOld.setApproveRemark(workOrder.getApproveRemark()); - workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_PASS.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(""); - } - - /** - * 客户驳回维修方案 - */ - @ApiLog(value = "提报管理-客户驳回维修方案") - @PostMapping("/customer-reject") - 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.KH_REPAIR_PLAN_REFUSE.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(""); - } - - /** - * 维修人员提交维修结果 - */ - @ApiLog(value = "提报管理-维修人员提交维修结果") - @PostMapping("/serviceman-repair-submit") - public R servicemanRepairSubmit(@RequestBody WorkOrder workOrder) { - WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); - workOrderOld.setCloseReason(workOrder.getCloseReason()); - workOrderOld.setStatus(WorkOrderStatusEnum.WX_REPAIR_FINISH.getValue()); - workOrderService.updateById(workOrderOld); - - // todo 审核通过 - - return R.success(""); - } - - /** - * 评价签字 - */ - @ApiLog(value = "提报管理-评价签字") - @PostMapping("/customer-repair-confirm") - public R customerRepairConfirm(@RequestBody WorkOrder workOrder) { - workOrderService.repairFinish(workOrder); - - return R.success(""); - } - - /** - * 评价签字 - */ - @ApiLog(value = "提报管理-客户确认未完成") - @PostMapping("/customer-repair-reject") - 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.setApproveRemark(workOrder.getApproveRemark()); - workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_PASS.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(""); - } - - /** - * 工单表 客服维修完成 - */ - @ApiLog(value = "提报管理-客服维修完成") - @PostMapping("/service-repair-submit") - public R serviceRepairFinish(@RequestBody WorkOrder workOrder) { - WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); - workOrderOld.setCloseReason(workOrder.getCloseReason()); - workOrderOld.setStatus(WorkOrderStatusEnum.KF_REPAIR_FINISH.getValue()); - workOrderService.updateById(workOrderOld); - - return R.success(""); - } - - /** - * 工单表 客服关闭 - */ - @ApiLog(value = "提报管理-工单关闭") - @PostMapping("/service-close") - public R serviceClose(@RequestBody WorkOrder workOrder) { - WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); - workOrderOld.setCloseReason(workOrder.getCloseReason()); - workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_CLOSE.getValue()); - workOrderService.updateById(workOrderOld); - - return R.success(""); - } - - /** - * 已开发票 - */ - @ApiLog(value = "提报管理-已开发票") - @PostMapping("/service-invoice") - public R serviceInvoice(@RequestBody List orderList) { - List orderOldList = new ArrayList<>(); - for (WorkOrder workOrder : orderList) { - WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); - workOrderOld.setStatus(WorkOrderStatusEnum.KF_TICKET_FINISH.getValue()); - orderOldList.add(workOrderOld); - } - - workOrderService.updateBatchById(orderOldList); - - return R.success(""); - } - - /** - * 封装百度接口 - * - * @param query - * @return - * @throws Exception - */ - @GetMapping("/suggestion") - public R suggestion(String query) throws Exception { - String ak = "NqGy7LGcdxNUNqR7pBwPqeOkZ11Arn5Y"; - String url = "https://api.map.baidu.com/place/v2/suggestion?"; - Map params = new LinkedHashMap(); - params.put("query", query); - params.put("region", "全国"); - params.put("city_limit", "true"); - params.put("output", "json"); - params.put("ak", ak); - String resultStr = requestGetAK(url, params); - JSONObject jsonObject = new JSONObject(resultStr); - Map map = jsonObject.toMap(); - return R.data(map); - } - - private String requestGetAK(String strUrl, Map param) throws Exception { - if (strUrl == null || strUrl.length() <= 0 || param == null || param.size() <= 0) { - return null; - } - - StringBuffer queryString = new StringBuffer(); - queryString.append(strUrl); - for (Map.Entry pair : param.entrySet()) { - queryString.append(pair.getKey() + "="); - // 第一种方式使用的 jdk 自带的转码方式 第二种方式使用的 spring 的转码方法 两种均可 - queryString.append(URLEncoder.encode((String) pair.getValue(), "UTF-8").replace("+", "%20") + "&"); - } - - if (queryString.length() > 0) { - queryString.deleteCharAt(queryString.length() - 1); - } - - URL url = new URL(queryString.toString()); - URLConnection httpConnection = url.openConnection(); - httpConnection.connect(); - - InputStreamReader isr = new InputStreamReader(httpConnection.getInputStream()); - BufferedReader reader = new BufferedReader(isr); - StringBuffer buffer = new StringBuffer(); - String line; - while ((line = reader.readLine()) != null) { - buffer.append(line); - } - reader.close(); - isr.close(); - return buffer.toString(); - } + private final IWorkOrderService workOrderService; + + private final IWorkOrderApprovalService approvalService; + + private final IWorkOrderFlowService flowService; + + + /** + * 查询工作订单列表 + * + * @param workOrderDTO 工作订单DTO,包含查询条件 + * @param query 分页查询对象 + * @return 返回工作订单列表的响应对象 + */ + @GetMapping("/page") + public R> page(WorkOrderDTO workOrderDTO, Query query) { + // 创建工作订单的查询条件包装器 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(WorkOrder.class); + + // 数据权限 + if (StringUtils.isNotBlank(workOrderDTO.getDataType())) { + switch (workOrderDTO.getDataType()) { + case "1": + // 客户 + wrapper.and(wrp -> wrp.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()).or().eq(WorkOrder::getReportUnit, AuthUtil.getDeptId())); + break; + case "2": + // 客服 + // eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId())); + wrapper.ne(WorkOrder::getStatus, WorkOrderStatusEnum.KH_ORDER_DRAFT.getValue()); + break; + case "3": + // 维修负责人 + wrapper.ge(WorkOrder::getStatus, WorkOrderStatusEnum.WX_ORDER_ACCEPT.getValue()); + break; + case "4": + // 维修人员 + wrapper.eq(WorkOrder::getRepairPerson, AuthUtil.getUserId()); + break; + default: + log.error("数据权限设置失败"); + return R.fail("数据权限设置失败"); + } + } + + // 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序 + 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), wrapper); + + + pages.getRecords().forEach(order -> { + Dept dept = DeptCache.getDept(order.getReportUnit()); + if (Func.isNotEmpty(dept)) { + order.setReportUnitName(dept.getDeptName()); + } + }); + + // 返回查询结果 + return R.data(pages); + } + + /** + * 客服查询自己提报的订单列表 + * + * @param workOrderDTO 工作订单DTO,包含查询条件 + * @param query 分页查询对象 + * @return 返回工作订单列表的响应对象 + */ + @GetMapping("/service-page") + public R> servicePage(WorkOrderDTO workOrderDTO, Query query) { + // 创建工作订单的查询条件包装器 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(WorkOrder.class); + wrapper.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()); + // 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序 + 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), wrapper); + + pages.getRecords().forEach(order -> { + Dept dept = DeptCache.getDept(order.getReportUnit()); + if (Func.isNotEmpty(dept)) { + order.setReportUnitName(dept.getDeptName()); + } + }); + + // 返回查询结果 + return R.data(pages); + } + + /** + * 工单表 详情 + */ + @GetMapping("/detail") + public R detail(WorkOrder workOrder) { + WorkOrderVO detail = workOrderService.detail(workOrder); + return R.data(detail); + } + + /** + * 保存工单并提交 + */ + @ApiLog(value = "提报管理-保存工单并提交") + @PostMapping("/customer-save") + public R customerSave(@RequestBody List workOrder) { + ; + return R.status(workOrderService.saveAndSubmit(workOrder)); + } + + /** + * 保存工单为草稿 + */ + @ApiLog(value = "提报管理-保存工单为草稿") + @PostMapping("/customer-draft") + public R customerDraft(@RequestBody List workOrder) { + return R.status(workOrderService.saveDraft(workOrder)); + } + + /** + * 客服保存工单并提交 + */ + @ApiLog(value = "提报管理-客服保存工单并提交") + @PostMapping("/service-save") + public R serviceSave(@RequestBody List workOrder) { + return R.status(workOrderService.serviceSaveAndSubmit(workOrder)); + } + + /** + * 客服工单为草稿 + */ + @ApiLog(value = "提报管理-客服工单为草稿") + @PostMapping("/service-draft") + public R serviceDraft(@RequestBody List workOrder) { + return R.status(workOrderService.serviceSave(workOrder)); + } + + /** + * 修改工单信息 + */ + @ApiLog(value = "提报管理-修改工单信息") + @PostMapping("/update") + public R update(@RequestBody WorkOrderVO workOrder) { + return R.status(workOrderService.updateAttach(workOrder)); + } + + /** + * 客服审核指定维修人员 + */ + @ApiLog(value = "提报管理-客服审核指定维修人员") + @PostMapping("/service-to-serviceman") + public R serviceToServiceman(@RequestBody WorkOrder workOrder) { + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setRepairPerson(workOrder.getRepairPerson()); + workOrderOld.setDispatchTime(DateUtil.now()); + workOrderOld.setPlanCompleteTime(workOrder.getPlanCompleteTime()); + workOrderOld.setRemark(workOrder.getRemark()); + workOrderOld.setCustomerOpinion(workOrder.getCustomerOpinion()); + workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_ALLOT.getValue()); + workOrderService.updateById(workOrderOld); + // todo 审核通过 + + return R.success(""); + } + + /** + * 维修人员接收工单 + */ + @ApiLog(value = "提报管理-维修人员接收工单") + @PostMapping("/serviceman-receive") + public R serviceReceive(@RequestBody WorkOrder workOrder) { + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setReceiveOrderTime(DateUtil.now()); + workOrderOld.setStatus(WorkOrderStatusEnum.WX_ORDER_ACCEPT.getValue()); + workOrderService.updateById(workOrderOld); + + // todo 审核通过 + + return R.success(""); + } + + /** + * 维修人员拒绝接收工单 + */ + @ApiLog(value = "提报管理-维修人员拒绝接收工单") + @PostMapping("/serviceman-reject") + public R serviceReject(@RequestBody WorkOrder workOrder) { + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setRepaiRejectReason(workOrder.getRepaiRejectReason()); + workOrderOld.setStatus(WorkOrderStatusEnum.WX_ORDER_REFUSE.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(""); + } + + /** + * 维修人员提交维修方案 + */ + @ApiLog(value = "提报管理-维修人员提交维修方案") + @PostMapping("/serviceman-submit") + public R serviceSubmit(@RequestBody WorkOrder workOrder) { + workOrderService.repairPlanSubmit(workOrder); + + return R.success(""); + } + + /** + * 主管确认维修方案 + */ + @ApiLog(value = "提报管理-主管确认维修方案") + @PostMapping("/supervisor-confirm") + 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()); + workOrderOld.setApproveRemark(workOrder.getApproveRemark()); + workOrderOld.setStatus(WorkOrderStatusEnum.ZG_REPAIR_PLAN_PASS.getValue()); + workOrderService.updateById(workOrderOld); + + WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); + approvalService.save(approval); + + return R.success(""); + } + + /** + * 主管驳回维修方案 + */ + @ApiLog(value = "提报管理-主管驳回维修方案") + @PostMapping("/supervisor-reject") + public R supervisorReject(@RequestBody WorkOrder workOrder) { + workOrderService.repairPlanRefuse(workOrder); + + return R.success(""); + } + + /** + * 客户确认维修方案 + */ + @ApiLog(value = "提报管理-客户确认维修方案") + @PostMapping("/customer-confirm") + 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()); + workOrderOld.setApproveRemark(workOrder.getApproveRemark()); + workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_PASS.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(""); + } + + /** + * 客户驳回维修方案 + */ + @ApiLog(value = "提报管理-客户驳回维修方案") + @PostMapping("/customer-reject") + 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.KH_REPAIR_PLAN_REFUSE.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(""); + } + + /** + * 维修人员提交维修结果 + */ + @ApiLog(value = "提报管理-维修人员提交维修结果") + @PostMapping("/serviceman-repair-submit") + public R servicemanRepairSubmit(@RequestBody WorkOrder workOrder) { + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setCloseReason(workOrder.getCloseReason()); + workOrderOld.setStatus(WorkOrderStatusEnum.WX_REPAIR_FINISH.getValue()); + workOrderService.updateById(workOrderOld); + + // todo 审核通过 + + return R.success(""); + } + + /** + * 评价签字 + */ + @ApiLog(value = "提报管理-评价签字") + @PostMapping("/customer-repair-confirm") + public R customerRepairConfirm(@RequestBody WorkOrder workOrder) { + workOrderService.repairFinish(workOrder); + + return R.success(""); + } + + /** + * 评价签字 + */ + @ApiLog(value = "提报管理-客户确认未完成") + @PostMapping("/customer-repair-reject") + 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.setApproveRemark(workOrder.getApproveRemark()); + workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_PASS.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(""); + } + + /** + * 工单表 客服维修完成 + */ + @ApiLog(value = "提报管理-客服维修完成") + @PostMapping("/service-repair-submit") + public R serviceRepairFinish(@RequestBody WorkOrder workOrder) { + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setCloseReason(workOrder.getCloseReason()); + workOrderOld.setStatus(WorkOrderStatusEnum.KF_REPAIR_FINISH.getValue()); + workOrderService.updateById(workOrderOld); + + return R.success(""); + } + + /** + * 工单表 客服关闭 + */ + @ApiLog(value = "提报管理-工单关闭") + @PostMapping("/service-close") + public R serviceClose(@RequestBody WorkOrder workOrder) { + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setCloseReason(workOrder.getCloseReason()); + workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_CLOSE.getValue()); + workOrderService.updateById(workOrderOld); + + return R.success(""); + } + + /** + * 已开发票 + */ + @ApiLog(value = "提报管理-已开发票") + @PostMapping("/service-invoice") + public R serviceInvoice(@RequestBody List orderList) { + List orderOldList = new ArrayList<>(); + for (WorkOrder workOrder : orderList) { + WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); + workOrderOld.setStatus(WorkOrderStatusEnum.KF_TICKET_FINISH.getValue()); + orderOldList.add(workOrderOld); + } + + workOrderService.updateBatchById(orderOldList); + + return R.success(""); + } + + /** + * 封装百度接口 + * + * @param query + * @return + * @throws Exception + */ + @GetMapping("/suggestion") + public R suggestion(String query) throws Exception { + String ak = "NqGy7LGcdxNUNqR7pBwPqeOkZ11Arn5Y"; + String url = "https://api.map.baidu.com/place/v2/suggestion?"; + Map params = new LinkedHashMap(); + params.put("query", query); + params.put("region", "全国"); + params.put("city_limit", "true"); + params.put("output", "json"); + params.put("ak", ak); + String resultStr = requestGetAK(url, params); + JSONObject jsonObject = new JSONObject(resultStr); + Map map = jsonObject.toMap(); + return R.data(map); + } + + private String requestGetAK(String strUrl, Map param) throws Exception { + if (strUrl == null || strUrl.length() <= 0 || param == null || param.size() <= 0) { + return null; + } + + StringBuffer queryString = new StringBuffer(); + queryString.append(strUrl); + for (Map.Entry pair : param.entrySet()) { + queryString.append(pair.getKey() + "="); + // 第一种方式使用的 jdk 自带的转码方式 第二种方式使用的 spring 的转码方法 两种均可 + queryString.append(URLEncoder.encode((String) pair.getValue(), "UTF-8").replace("+", "%20") + "&"); + } + + if (queryString.length() > 0) { + queryString.deleteCharAt(queryString.length() - 1); + } + + URL url = new URL(queryString.toString()); + URLConnection httpConnection = url.openConnection(); + httpConnection.connect(); + + InputStreamReader isr = new InputStreamReader(httpConnection.getInputStream()); + BufferedReader reader = new BufferedReader(isr); + StringBuffer buffer = new StringBuffer(); + String line; + while ((line = reader.readLine()) != null) { + buffer.append(line); + } + reader.close(); + isr.close(); + return buffer.toString(); + } } diff --git a/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java index 0f75b99..6f9c205 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java @@ -22,16 +22,16 @@ public class MessageServiceImpl extends BaseServiceImpl /** * 保存消息 * - * @param title + * @param requirementCode * @param content * @param messageUser * @param messageType */ @Override - public void saveMessage(String title, String content, Long messageUser, Integer messageType) { + public void saveMessage(String requirementCode, String content, Long messageUser, Integer messageType) { Message saveInformation = new Message(); saveInformation.setSystemType("1"); - saveInformation.setTitle(title); + saveInformation.setTitle("需求单"); saveInformation.setContent(content); saveInformation.setMessageUser(messageUser); saveInformation.setTenantId(AuthUtil.getTenantId()); diff --git a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java index 29db514..4f6c57f 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java @@ -118,6 +118,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl workOrders) { + String role = "1839536982874193922"; + User customerService = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getRoleId, role)); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); Date now = DateUtil.date(); String todayStr = format.format(now); @@ -131,6 +133,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl