8.3
luodangjia
2024-08-03 67157345fe1878681e39ec186ef37ff6b3b5c1fc
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
@@ -2,32 +2,41 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.admin.entity.MasterWorker;
import com.ruoyi.admin.entity.RecoveryServe;
import com.ruoyi.admin.entity.Site;
import com.ruoyi.admin.entity.*;
import com.ruoyi.admin.netty.NettyChannelMap;
import com.ruoyi.admin.netty.NettyWebSocketController;
import com.ruoyi.admin.service.MasterWorkerService;
import com.ruoyi.admin.service.OrderService;
import com.ruoyi.admin.service.RecoveryServeService;
import com.ruoyi.admin.service.SiteService;
import com.ruoyi.admin.service.*;
import com.ruoyi.admin.utils.AddressDto;
import com.ruoyi.admin.utils.DescribeInstances;
import com.ruoyi.admin.utils.OcrBase;
import com.ruoyi.admin.vo.OrderDetailVO;
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.domain.Result;
import com.ruoyi.common.core.utils.GaoDeMapUtil;
import com.ruoyi.common.core.utils.SnowflakeIdWorker;
import com.ruoyi.common.core.vo.CityInfoVO;
import com.ruoyi.common.security.annotation.Logical;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.api.entity.*;
import com.ruoyi.order.api.entity.ChangeDispatch;
import com.ruoyi.order.api.entity.Order;
import com.ruoyi.order.api.feignClient.ExchangeDispatchClient;
import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.order.api.request.OrderCountDataRequest;
import com.ruoyi.system.api.model.LoginUser;
import com.tencentcloudapi.ocr.v20181119.models.BusinessCardOCRResponse;
import com.tencentcloudapi.ocr.v20181119.models.ClassifyDetectOCRResponse;
import com.tencentcloudapi.ocr.v20181119.models.SmartStructuralOCRV2Response;
import com.tencentcloudapi.ocr.v20181119.models.WaybillOCRResponse;
import io.netty.channel.ChannelHandlerContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.Get;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -36,6 +45,7 @@
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * <p>
@@ -102,6 +112,9 @@
        // 独立orderService
        return R.ok(orderService.orderListDetail(id));
    }
    @Resource
    private RecoveryClassifyService recoveryClassifyService;
    /**
     * 订单列表
@@ -117,8 +130,18 @@
            return R.loginExpire("登录失效!");
        }
        if (loginUser.getIsFranchisee()) {
            orderQueryRequest.setCityList(loginUser.getCityList());
            if (null == orderQueryRequest.getCityList() || orderQueryRequest.getCityList().isEmpty()) {
                orderQueryRequest.setCityList(loginUser.getCityList());
            } else {
                orderQueryRequest.getCityList().addAll(loginUser.getCityList());
            }
        }
        List<Integer> servIds = new ArrayList<>();
        if (orderQueryRequest.getClassNameId()!=null){
            List<Integer> classIds = recoveryClassifyService.lambdaQuery().eq(RecoveryClassify::getId, orderQueryRequest.getClassNameId()).list().stream().map(RecoveryClassify::getId).collect(Collectors.toList());
            servIds = recoveryServeService.lambdaQuery().eq(BaseEntity::getIsDelete,0).in(RecoveryServe::getClassifyId, classIds).list().stream().map(RecoveryServe::getId).collect(Collectors.toList());
        }
        orderQueryRequest.setServIds(servIds);
        Page<Order> data = orderClient.queryPage(orderQueryRequest).getData();
        if (null != data) {
            for (Order record : data.getRecords()) {
@@ -130,6 +153,9 @@
                if (null != masterWorker) {
                    record.setServerName(masterWorker.getRealName());
                    record.setServerPhone(masterWorker.getPhone());
                }
                if (record.getAddress()!=null) {
                    record.setReservationAddress(record.getReservationAddress() + record.getAddress());
                }
            }
        }
@@ -143,6 +169,24 @@
    @ApiOperation(value = "订单列表-各订单数量统计", tags = {"后台-订单管理"})
    @PostMapping(value = "/orderPageCount")
    public R<OrderPageCountVO> orderPageCount(@RequestBody OrderQueryRequest orderQueryRequest) {
        LoginUser loginUser = tokenService.getLoginUser();
        if (null == loginUser) {
            return R.loginExpire("登录失效!");
        }
        if (loginUser.getIsFranchisee()) {
            if (null == orderQueryRequest.getCityList() || orderQueryRequest.getCityList().isEmpty()) {
                orderQueryRequest.setCityList(loginUser.getCityList());
            } else {
                orderQueryRequest.getCityList().addAll(loginUser.getCityList());
            }
        }
        List<Integer> servIds = new ArrayList<>();
        if (orderQueryRequest.getClassNameId()!=null){
            List<Integer> classIds = recoveryClassifyService.lambdaQuery().eq(RecoveryClassify::getId, orderQueryRequest.getClassNameId()).list().stream().map(RecoveryClassify::getId).collect(Collectors.toList());
            servIds = recoveryServeService.lambdaQuery().eq(BaseEntity::getIsDelete,0).in(RecoveryServe::getClassifyId, classIds).list().stream().map(RecoveryServe::getId).collect(Collectors.toList());
        }
        orderQueryRequest.setServIds(servIds);
        return R.ok(orderClient.orderPageCount(orderQueryRequest).getData());
    }
@@ -161,6 +205,9 @@
        return R.ok(orderClient.detail(id).getData());
    }
    @Resource
    private RecoveryServePriceService recoveryServePriceService;
    /**
     * 新增订单
     * 后台订单为指定订单,默认为待上门状态
@@ -197,9 +244,15 @@
        RecoveryServe recoveryServe = recoveryServeService.lambdaQuery()
                .eq(RecoveryServe::getId, order.getServeId())
                .eq(RecoveryServe::getIsDelete, 0).one();
        order.setServeName(recoveryServe.getServeName());
        order.setServePrice(recoveryServe.getDefaultPrice());
        order.setOrderMoney(recoveryServe.getDefaultPrice());
        RecoveryServePrice one = recoveryServePriceService.lambdaQuery().eq(RecoveryServePrice::getCity, order.getCityCode()).eq(RecoveryServePrice::getRecoveryServeId, order.getServeId()).eq(BaseEntity::getIsDelete, 0).one();
        if (one==null) {
            order.setOrderMoney(recoveryServe.getDefaultPrice());
        }else {
            order.setOrderMoney(one.getRecoveryPrice());
        }
        Boolean data = orderClient.save(order).getData();
        if (null == data) {
            return R.fail(orderClient.save(order).getMsg());
@@ -214,6 +267,52 @@
        return data ? R.ok() : R.fail();
    }
    @ApiOperation(value = "订单列表-编辑", tags = {"后台-订单管理"})
    @PostMapping(value = "/edit")
    public R<String> edit(@RequestBody OrderRequest order) {
        // 站点信息
        Site site = siteService.lambdaQuery()
                .eq(Site::getId, order.getSiteId())
                .eq(Site::getIsDelete, 0).one();
        order.setSiteName(site.getSiteName());
        // 师傅信息
        if (null != order.getServerId()) {
            MasterWorker masterWorker = masterWorkerService.lambdaQuery()
                    .eq(MasterWorker::getId, order.getServerId())
                    .eq(MasterWorker::getIsDelete, 0).one();
            order.setServerName(masterWorker.getRealName());
            order.setServerPhone(masterWorker.getPhone());
        } else {
            // 待派单状态
            order.setState(Constants.ZERO);
        }
        RecoveryServe recoveryServe = recoveryServeService.lambdaQuery()
                .eq(RecoveryServe::getId, order.getServeId())
                .eq(RecoveryServe::getIsDelete, 0).one();
        RecoveryServePrice one = recoveryServePriceService.lambdaQuery().eq(RecoveryServePrice::getCity, order.getCityCode()).eq(RecoveryServePrice::getRecoveryServeId, order.getServeId()).eq(BaseEntity::getIsDelete, 0).last("limit 1").one();
        if (one==null) {
            order.setOrderMoney(recoveryServe.getDefaultPrice());
        }else {
            order.setOrderMoney(one.getRecoveryPrice());
        }
        // 后台订单
        order.setType(Constants.ONE);
        Boolean data = orderClient.edit(order).getData();
        System.out.println("服务人员id:" + order.getServerId());
        ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(order.getServerId()));
        System.out.println("socket连接信息:" + context);
        if (null != context) {
            System.out.println("服务端发送消息到: " + order.getServerId());
            NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!");
        }
        return data ? R.ok() : R.fail();
    }
    /**
     * 订单派单/改派
     *
@@ -290,6 +389,8 @@
        return R.ok(orderClient.batchDelete(ids).getData());
    }
    /**
     * 订单列表-excel导出
     *
@@ -316,6 +417,12 @@
        return orderClient.oldData(index, pageNum, pageSize);
    }
    @ApiOperation(value = "ocr识别", tags = {"后台-首页"})
    @PostMapping (value = "/ocr")
    public R<AddressDto> ocr(OcrBase ocrBase) {
        return R.ok(DescribeInstances.orcr(ocrBase.getBase()));
    }
    /**
     * 订单列表-excel导出
     *