package com.ruoyi.order.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.entity.ChangeDispatch; import com.ruoyi.order.entity.Order; import com.ruoyi.order.request.ChangeDispatchRequest; import com.ruoyi.order.service.ChangeDispatchService; import com.ruoyi.order.service.OrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** *

* 改派管理 前端控制器 *

* * @author hjl * @since 2024-05-31 */ @RestController @RequestMapping("/changeDispatch") @Api(tags = {"后台-系统设置-订单改派管理"}) public class ChangeDispatchController { @Resource private ChangeDispatchService changeDispatchService; @Resource private OrderService orderService; /** * 订单改派分页列表 * * @param request 查询参数 */ @RequiresPermissions("reassignment_apply") @ApiOperation(value = "订单改派分页查询列表", tags = {"后台-系统设置-订单改派管理"}) @PostMapping(value = "/page") @ApiImplicitParams({ @ApiImplicitParam(value = "师傅名称", name = "workerName", dataType = "String"), @ApiImplicitParam(value = "订单编号", name = "orderNumber", dataType = "String"), @ApiImplicitParam(value = "下单用户名称", name = "userName", dataType = "String"), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> queryPageList(@RequestBody ChangeDispatchRequest request) { Page page = changeDispatchService.queryPageList(request, Page.of(request.getPageNum(), request.getPageSize())); for (ChangeDispatch record : page.getRecords()) { Order byId = orderService.getById(record.getOrderId()); // if (byId!=null){ // record.setType(byId.getType()); // // } } return R.ok(page); } /** * 订单改派详情 * * @param changeDispatch 订单改派信息 */ @ApiOperation(value = "新增订单改派", tags = {"后台-系统设置-订单改派管理"}) @PostMapping(value = "/save") public R save(@RequestBody ChangeDispatch changeDispatch) { return R.ok(changeDispatchService.save(changeDispatch)); } /** * 订单改派详情 * * @param changeDispatch 订单改派信息 */ @ApiOperation(value = "订单改派新逻辑", tags = {"后台-系统设置-订单改派管理"}) @PostMapping(value = "/saveRecord") public R saveRecord(@RequestBody ChangeDispatch changeDispatch) { String orderId = changeDispatch.getOrderId(); ChangeDispatch record = changeDispatchService.lambdaQuery() .eq(ChangeDispatch::getOrderId, orderId) .orderByDesc(ChangeDispatch::getCreateTime) .last("limit 1").one(); boolean result = true; if (null == record || record.getState() == 1 || record.getState() == 2) { result = changeDispatchService.save(changeDispatch); } else { changeDispatchService.lambdaUpdate() .set(ChangeDispatch::getState, Constants.ONE) .eq(ChangeDispatch::getId, record.getId()).update(); } return R.ok(result); } /** * 订单改派 -远程调用 * * @param changeDispatch 订单改派信息 */ @ApiOperation(value = "新增订单改派", tags = {"后台-系统设置-订单改派管理"}) @PostMapping(value = "/changeDispatchSave") public R changeDispatchSave(@RequestBody ChangeDispatch changeDispatch) { return R.ok(changeDispatchService.save(changeDispatch)); } /** * 订单改派详情 * * @param id 订单改派id */ @ApiOperation(value = "订单改派详情", tags = {"后台-系统设置-订单改派管理"}) @GetMapping(value = "/detail") @ApiImplicitParams({ @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "Integer", required = true) }) public R detail(@RequestParam("id") String id) { return R.ok(changeDispatchService.lambdaQuery().eq(ChangeDispatch::getId, id) .eq(ChangeDispatch::getIsDelete, 0).one()); } /** * 订单改派详情 远程调用 * * @param id 订单id */ @GetMapping(value = "/one") @ApiImplicitParams({ @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "Integer", required = true) }) public R one(@RequestParam("id") Integer id) { ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery() .eq(ChangeDispatch::getOrderId, id) .eq(ChangeDispatch::getState, Constants.ZERO) .one(); return R.ok(changeDispatch); } /** * 订单改派详情 远程调用 * * @param id 订单id */ @GetMapping(value = "/changeDispatchOne") @ApiImplicitParams({ @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "String", required = true) }) public R changeDispatchOne(@RequestParam("id") String id) { ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery() .eq(ChangeDispatch::getOrderId, id) .eq(ChangeDispatch::getState, Constants.ZERO) .orderByDesc(ChangeDispatch::getCreateTime) .last("limit 1") .one(); return R.ok(changeDispatch); } /** * 拒绝订单改派申请 * * @param id 订单id */ @GetMapping(value = "/refuseChangeDispatch") @ApiImplicitParams({ @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "String", required = true) }) public R refuseChangeDispatch(@RequestParam("id") String id) { ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery() .eq(ChangeDispatch::getId, id) .eq(ChangeDispatch::getIsDelete, Constants.ZERO) .one(); if (null == changeDispatch) { throw new GlobalException("改派申请不存在或已删除!"); } changeDispatch.setState(Constants.TWO); boolean update = changeDispatchService.updateById(changeDispatch); // 订单重新派给提交申请的师傅 Order order = orderService.lambdaQuery() .eq(Order::getId, changeDispatch.getOrderId()) .eq(Order::getIsDelete, 0).one(); order.setState(Constants.ONE); Integer serverId = order.getServerId(); return R.ok(update && orderService.updateById(order)); } /** * 根据id批量删除订单改派 * * @param ids 订单改派多条id拼接 */ @RequiresPermissions("reassignment_apply") @ApiOperation(value = "批量删除订单改派", tags = {"后台-系统设置-订单改派管理"}) @GetMapping(value = "/batchDelete") @ApiImplicitParams({ @ApiImplicitParam(value = "多条订单改派id ',' 拼接", name = "ids", dataType = "String", required = true) }) public R batchDelete(@RequestParam String ids) { List idList = Arrays.stream(ids.split(",")).collect(Collectors.toList()); List list = changeDispatchService.lambdaQuery().in(ChangeDispatch::getId, idList).list(); list.forEach(data -> data.setIsDelete(1)); return changeDispatchService.updateBatchById(list) ? R.ok() : R.fail(); } /** * 订单改派师傅 * * @param changeId 改派订单id * @param workerId 师傅id */ @RequiresPermissions("reassignment_apply") @ApiOperation(value = "订单改派师傅", tags = {"后台-系统设置-订单改派管理"}) @GetMapping(value = "/changeWorker") @ApiImplicitParams({ @ApiImplicitParam(value = "改派订单id", name = "changeId", dataType = "Integer", required = true), @ApiImplicitParam(value = "师傅id", name = "workerId", dataType = "Integer", required = true), @ApiImplicitParam(value = "师傅姓名", name = "name", dataType = "String", required = true), @ApiImplicitParam(value = "师傅电话", name = "phone", dataType = "String", required = true) }) public R changeWorker(@RequestParam("changeId") String changeId, @RequestParam("workerId") Integer workerId, @RequestParam("name") String name, @RequestParam("phone") String phone) { ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery().eq(ChangeDispatch::getId, changeId) .eq(ChangeDispatch::getIsDelete, 0).one(); if (null == changeDispatch || Constants.ONE.equals(changeDispatch.getState())) { throw new GlobalException("改派申请不存在或已改派!"); } Order order = orderService.lambdaQuery().eq(Order::getId, changeDispatch.getOrderId()) .eq(Order::getIsDelete, 0).one(); if (null == order) { throw new GlobalException("订单不存在!"); } // 更改订单信息为再投单 boolean orderUpdate = orderService.lambdaUpdate() .set(Order::getIsReinvest, Constants.ONE) .set(Order::getAcceptTime, new Date()) .set(Order::getArriveTime, null) .set(Order::getCompleteTime, null).set(Order::getAcceptTime, LocalDateTime.now()) // 原订单状态改为 1:待上门,已选择师傅 .set(Order::getState, Constants.ONE).set(Order::getServerId, workerId).set(Order::getServerName, name).set(Order::getServerPhone, phone) .eq(Order::getId, order.getId()).update(); // 改派信息 boolean update = changeDispatchService.lambdaUpdate().set(ChangeDispatch::getState, 1) .eq(ChangeDispatch::getId, changeId).eq(ChangeDispatch::getIsDelete, 0).update(); return R.ok(orderUpdate && update); } }