| | |
| | | import com.ruoyi.admin.service.*; |
| | | import com.ruoyi.admin.utils.DescribeInstances; |
| | | import com.ruoyi.admin.utils.HttpUtil; |
| | | import com.ruoyi.admin.vo.OrderByServeRecordVO; |
| | | import com.ruoyi.admin.vo.OrderDetailVO; |
| | | import com.ruoyi.admin.vo.OrderReasinDto; |
| | | import com.ruoyi.admin.vo.ReassinDto; |
| | | import com.ruoyi.admin.utils.PrivateNumberUtil; |
| | | import com.ruoyi.admin.vo.*; |
| | | import com.ruoyi.admin.voice.util.AXBUtil; |
| | | import com.ruoyi.common.core.constant.Constants; |
| | | import com.ruoyi.common.core.domain.BaseEntity; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.exception.GlobalException; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.common.core.utils.GaoDeMapUtil; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | |
| | | private ExchangeDispatchClient dispatchClient; |
| | | @Resource |
| | | private TokenService tokenService; |
| | | @Resource |
| | | private RecoveryClassifyService recoveryClassifyService; |
| | | |
| | | @Resource |
| | | private FranchiseeService franchiseeService; |
| | | @Resource |
| | | private PrivateNumberUtil privateNumberUtil; |
| | | @Autowired |
| | | private IamConfigService iamConfigService; |
| | | @Autowired |
| | | private OrderRecordingService orderRecordingService; |
| | | /** |
| | | * 雪花算法类 |
| | | */ |
| | |
| | | } |
| | | return R.ok(orderDetailVO); |
| | | } |
| | | @Resource |
| | | private RecoveryClassifyService recoveryClassifyService; |
| | | |
| | | @Resource |
| | | private FranchiseeService franchiseeService; |
| | | /** |
| | | * 订单列表 |
| | | * |
| | |
| | | }else { |
| | | order.setOrderMoney(one.getRecoveryPrice()); |
| | | } |
| | | Boolean data = orderClient.save(order).getData(); |
| | | if (null == data) { |
| | | return R.fail(orderClient.save(order).getMsg()); |
| | | R<String> saveResult = orderClient.save(order); |
| | | String orderId = saveResult.getData(); |
| | | if (!StringUtils.hasLength(orderId)) { |
| | | return R.fail(saveResult.getMsg()); |
| | | } |
| | | System.out.println("服务人员id:" + order.getServerId()); |
| | | ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(order.getServerId())); |
| | |
| | | System.out.println("服务端发送消息到: " + order.getServerId()); |
| | | NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!"); |
| | | } |
| | | return data ? R.ok() : R.fail(); |
| | | |
| | | if (null != order.getServerId()) { |
| | | MasterWorker masterWorker = masterWorkerService.lambdaQuery() |
| | | .eq(MasterWorker::getId, order.getServerId()) |
| | | .eq(MasterWorker::getIsDelete, 0).one(); |
| | | try{ |
| | | // 虚拟号码 师傅号码备案 |
| | | String fileName = privateNumberUtil.uploadNumberFile(masterWorker.getProfilePicture()).getData(); |
| | | R r = privateNumberUtil.addANumber(masterWorker.getPhone(), masterWorker.getRealName(), masterWorker.getIdNumber(), fileName); |
| | | }catch (Exception e){ |
| | | throw new GlobalException("虚拟号码绑定异常!"); |
| | | } |
| | | // 虚拟号码配置 |
| | | IamConfig iamConfig = iamConfigService.getById(1); |
| | | if(Objects.nonNull(order.getIsOpenVirtualNumber()) && order.getIsOpenVirtualNumber() == 1){ |
| | | // 虚拟号码绑定 |
| | | String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), iamConfig.getVirtualNumber(), order.getReservationPhone(), masterWorker.getPhone()); |
| | | // 存储绑定后的唯一标识 |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | String subscriptionId = jsonObject.getString("subscriptionId"); |
| | | orderClient.updateSubscriptionId(orderId, subscriptionId,iamConfig.getVirtualNumber()); |
| | | } |
| | | } |
| | | |
| | | return StringUtils.hasLength(orderId) ? R.ok() : R.fail(); |
| | | } |
| | | |
| | | |
| | |
| | | .eq(MasterWorker::getIsDelete, 0).one(); |
| | | order.setServerName(masterWorker.getRealName()); |
| | | order.setServerPhone(masterWorker.getPhone()); |
| | | |
| | | IamConfig iamConfig = iamConfigService.getById(1); |
| | | if(Objects.nonNull(order.getIsOpenVirtualNumber()) && order.getIsOpenVirtualNumber() == 1){ |
| | | // 虚拟号码绑定 |
| | | String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), iamConfig.getVirtualNumber(), order.getReservationPhone(), masterWorker.getPhone()); |
| | | // 存储绑定后的唯一标识 |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | String subscriptionId = jsonObject.getString("subscriptionId"); |
| | | orderClient.updateSubscriptionId(orderData.getId(), subscriptionId,iamConfig.getVirtualNumber()); |
| | | } |
| | | |
| | | } else { |
| | | // 待派单状态 |
| | | order.setState(Constants.ZERO); |
| | |
| | | @RequiresPermissions("order_reassignment") |
| | | @ApiOperation(value = "订单列表-订单派单/改派", tags = {"后台-订单管理"}) |
| | | @PostMapping(value = "/reassignment") |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R<String> reassignment(@RequestBody OrderReasinDto orderReasinDto) { |
| | | // String[] split = orderIds.split(","); |
| | | for (ReassinDto orderId : orderReasinDto.getReassinDtos()) { |
| | | |
| | | MasterWorker masterWorker = masterWorkerService.lambdaQuery() |
| | | .eq(MasterWorker::getId, orderReasinDto.getWorkerId()) |
| | | .eq(MasterWorker::getIsDelete, 0).one(); |
| | | Order item = orderClient.detail(orderId.getOrderId()).getData(); |
| | | Order order = orderClient.exchangeOrder(orderId.getType(), orderId.getOrderId(), orderReasinDto.getWorkerId(), |
| | | masterWorker.getRealName(), masterWorker.getPhone()).getData(); |
| | | // 订单派单 |
| | | boolean result = true; |
| | | if (Constants.TWO.equals(orderId.getType())) { |
| | | orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime()); |
| | | |
| | | if (order.getState().equals(Constants.SIX) || order.getState().equals(Constants.THREE)) { |
| | | orderClient.updateState(order.getId(), 7); |
| | | |
| | | //如果是待改派,将上门时间设置为最新的,并且更新再投原因 |
| | | if (order.getState().equals(Constants.SIX)){ |
| | | dispatchClient.changeReason(order.getId(), ""); |
| | | MasterWorker masterWorker = masterWorkerService.lambdaQuery() |
| | | .eq(MasterWorker::getId, orderReasinDto.getWorkerId()) |
| | | .eq(MasterWorker::getIsDelete, 0).one(); |
| | | try{ |
| | | // 虚拟号码 师傅号码备案 |
| | | String fileName = privateNumberUtil.uploadNumberFile(masterWorker.getProfilePicture()).getData(); |
| | | R r = privateNumberUtil.addANumber(masterWorker.getPhone(), masterWorker.getRealName(), masterWorker.getIdNumber(), fileName); |
| | | if(r.getCode() == 500){ |
| | | throw new GlobalException(r.getMsg()); |
| | | } |
| | | }catch (Exception e){ |
| | | throw new GlobalException("虚拟号码绑定异常!"); |
| | | } |
| | | Order order = orderClient.exchangeOrder(orderId.getType(), orderId.getOrderId(), orderReasinDto.getWorkerId(), |
| | | masterWorker.getRealName(), masterWorker.getPhone()).getData(); |
| | | // 虚拟号码配置 |
| | | IamConfig iamConfig = iamConfigService.getById(1); |
| | | // 订单派单 |
| | | if (Constants.TWO.equals(orderId.getType())) { |
| | | orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime()); |
| | | if (order.getState().equals(Constants.SIX) || order.getState().equals(Constants.THREE)) { |
| | | orderClient.updateState(order.getId(), 7); |
| | | //如果是待改派,将上门时间设置为最新的,并且更新再投原因 |
| | | if (order.getState().equals(Constants.SIX)){ |
| | | dispatchClient.changeReason(order.getId(), ""); |
| | | } |
| | | } |
| | | // 订单状态为 待完工时,需要更改状态 待上门且清空师傅到达预约点时间 |
| | | if (order.getState().equals(Constants.TWO)) { |
| | | orderClient.updateStateAndArrivalTime(orderId.getOrderId(), Constants.ONE); |
| | | } |
| | | |
| | | if(Objects.nonNull(order.getIsOpenVirtualNumber()) && order.getIsOpenVirtualNumber() == 1){ |
| | | if(StringUtils.hasLength(order.getSubscriptionId())){ |
| | | // 虚拟号码更换 |
| | | AXBUtil.axbModifyNumber(iamConfig.getAppKey(),iamConfig.getAppSecret(),order.getSubscriptionId(), order.getReservationPhone(), masterWorker.getPhone()); |
| | | }else { |
| | | // 虚拟号码绑定 |
| | | String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), iamConfig.getVirtualNumber(), order.getReservationPhone(), masterWorker.getPhone()); |
| | | // 存储绑定后的唯一标识 |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | String subscriptionId = jsonObject.getString("subscriptionId"); |
| | | orderClient.updateSubscriptionId(order.getId(), subscriptionId,iamConfig.getVirtualNumber()); |
| | | } |
| | | } |
| | | |
| | | |
| | | }else { |
| | | orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime()); |
| | | orderClient.updateState(order.getId(), 7); |
| | | if(Objects.nonNull(order.getIsOpenVirtualNumber()) && order.getIsOpenVirtualNumber() == 1){ |
| | | // 虚拟号码绑定 |
| | | String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), iamConfig.getVirtualNumber(), order.getReservationPhone(), masterWorker.getPhone()); |
| | | // 存储绑定后的唯一标识 |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | String subscriptionId = jsonObject.getString("subscriptionId"); |
| | | orderClient.updateSubscriptionId(order.getId(), subscriptionId,iamConfig.getVirtualNumber()); |
| | | } |
| | | } |
| | | // 订单状态为 待完工时,需要更改状态 待上门且清空师傅到达预约点时间 |
| | | if (order.getState().equals(Constants.TWO)) { |
| | | orderClient.updateStateAndArrivalTime(orderId.getOrderId(), Constants.ONE); |
| | | ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(orderReasinDto.getWorkerId())); |
| | | if (null != context) { |
| | | NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | // 生成改派信息 |
| | | // ChangeDispatch changeDispatch = new ChangeDispatch(); |
| | | // changeDispatch.setWorkerId(item.getServerId()); |
| | | // changeDispatch.setWorkerName(item.getServerName()); |
| | | // changeDispatch.setApplyReason(orderReasinDto.getApplyReason()); |
| | | // changeDispatch.setApplyTime(new Date()); |
| | | // changeDispatch.setState(Constants.ONE); |
| | | // changeDispatch.setOrderId(orderId.getOrderId()); |
| | | // changeDispatch.setOrderNumber(item.getOrderNumber()); |
| | | // if (null != item.getUserId()) { |
| | | // changeDispatch.setUserId(item.getUserId()); |
| | | // } |
| | | // changeDispatch.setUserName(item.getReservationName()); |
| | | // changeDispatch.setIsDelete(Constants.ZERO); |
| | | // result = dispatchClient.saveRecord(changeDispatch).getData(); |
| | | }else { |
| | | orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime()); |
| | | orderClient.updateState(order.getId(), 7); |
| | | } |
| | | ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(orderReasinDto.getWorkerId())); |
| | | if (null != context) { |
| | | NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!"); |
| | | } |
| | | // try { |
| | | // WebSocketServer.sendInfo("您有一条新的订单,请注意查收!", String.valueOf(workerId)); |
| | | // } catch (IOException e) { |
| | | // return R.fail("订单推送失败!"); |
| | | // } |
| | | } |
| | | |
| | | return R.ok() ; |
| | | } |
| | | |
| | |
| | | } |
| | | orderQueryRequest.setServIds(servIds); |
| | | Integer franchiseeId = loginUser.getSysUser().getFranchiseeId(); |
| | | Integer isDisplay = 0; |
| | | if (franchiseeId!=null) { |
| | | Franchisee byId = franchiseeService.getById(franchiseeId); |
| | | isDisplay = byId.getIsDisplay(); |
| | | String[] siteIds = byId.getSiteIds().split(","); |
| | | orderQueryRequest.setSiteIds(siteIds); |
| | | if (loginUser.getIsFranchisee() && siteIds.length == 0) { |
| | |
| | | |
| | | |
| | | R<List<Order>> result = orderClient.excelExport(orderQueryRequest); |
| | | if(franchiseeId!=null){ |
| | | if(isDisplay == 0){ |
| | | for (Order datum : result.getData()) { |
| | | if(StringUtils.hasLength(datum.getServerName())){ |
| | | datum.setServerName(datum.getServerName().charAt(0)+"***"); |
| | | } |
| | | if(StringUtils.hasLength(datum.getServerPhone())){ |
| | | datum.setServerPhone(around(datum.getServerPhone(), 3, 4)); |
| | | } |
| | | } |
| | | return orderService.excelExport(result.getData(), response); |
| | | } |
| | | return orderService.excelExport(result.getData(), response); |
| | | } |
| | | for (Order datum : result.getData()) { |
| | | if(StringUtils.hasLength(datum.getServerName()) && !"admin".equals(loginUser.getSysUser().getAccount())){ |
| | | datum.setServerName(datum.getServerName().charAt(0)+"***"); |
| | |
| | | /** |
| | | * 订单列表-excel导出 |
| | | * |
| | | * @param name 师傅姓名 |
| | | * @param phone 师傅电话 |
| | | */ |
| | | @RequiresPermissions("order_count") |
| | | @ApiOperation(value = "订单统计", tags = {"后台-订单管理"}) |
| | |
| | | }else { |
| | | order.setOrderMoney(one.getRecoveryPrice()); |
| | | } |
| | | Boolean data = orderClient.save(order).getData(); |
| | | if (null == data) { |
| | | return R.fail(orderClient.save(order).getMsg()); |
| | | R<String> saveResult = orderClient.save(order); |
| | | String orderId = saveResult.getData(); |
| | | if (!StringUtils.hasLength(orderId)) { |
| | | return R.fail(saveResult.getMsg()); |
| | | } |
| | | System.out.println("服务人员id:" + order.getServerId()); |
| | | ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(order.getServerId())); |