Pu Zhibing
2024-12-13 73b750200f25df08aa64124da49e7461f9de6653
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
@@ -45,6 +45,8 @@
    @Autowired
    private ITOrderPrivateCarService itOrderPrivateCarService;
    @Autowired
    private ITOrderTransferService orderTransferService;
    @Autowired
    private ITOrderCrossCityService itOrderCrossCityService;
@@ -109,6 +111,13 @@
        return PREFIX + "smallPieceLogistics.html";
    }
    /**
     * 跳转到接送机改派管理首页
     */
    @RequestMapping("/transfer")
    public String transfer() {
        return PREFIX + "transfer.html";
    }
    /**
     * 跳转到添加专车改派管理
@@ -154,6 +163,15 @@
    public String tReassign_reassignmentSmall(@PathVariable Integer tReassignId, Model model) {
        model.addAttribute("tReassignId",tReassignId);
        return PREFIX + "tReassign_reassignmentSmall.html";
    }
    /**
     * 跳转到修改专车改派管理
     */
    @RequestMapping("/tReassign_reassignmentTransfer/{transferId}")
    public String tReassign_reassignmentTransfer(@PathVariable Integer transferId, Model model) {
        model.addAttribute("transferId",transferId);
        return PREFIX + "tReassign_reassignmentTransfer.html";
    }
    /**
@@ -232,6 +250,31 @@
        return super.packForBT(page);
    }
    /**
     * 获取专车改派管理列表
     */
    @RequestMapping(value = "/listTransfer")
    @ResponseBody
    public Object listTransfer(String insertTime,
                       String originalDriverName,
                       String originalDriverPhone,
                       String orderNum,
                       String nowDriverName,
                       String nowDriverPhone,
                       Integer orderState,
                       Integer state) {
        String beginTime = null;
        String endTime = null;
        if (SinataUtil.isNotEmpty(insertTime)){
            String[] timeArray = insertTime.split(" - ");
            beginTime = timeArray[0];
            endTime = timeArray[1];
        }
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tReassignService.getTransferOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
        return super.packForBT(page);
    }
    /**
     * 选择司机列表
@@ -278,6 +321,21 @@
        TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(reassign.getOrderId());
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tReassignService.getCanSelectSmallDriverList(page,tOrderLogistics.getCompanyId(), tOrderLogistics.getType(),name,phone));
        return super.packForBT(page);
    }
    /**
     * 选择司机列表
     */
    @RequestMapping(value = "/selectTransferDriver/{orderId}")
    @ResponseBody
    public Object selectTransferDriver(@PathVariable Integer orderId,
                               String name,
                               String phone) {
        TReassign reassign = tReassignService.selectById(orderId);
        TOrderTransfer orderTransfer = orderTransferService.selectById(reassign.getOrderId());
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tReassignService.getCanSelectTransferDriverList(page,orderTransfer.getCompanyId(),orderTransfer.getType(),name,phone));
        return super.packForBT(page);
    }
@@ -349,7 +407,7 @@
                    tReassign.setReviewerType(2);
                    tReassignService.updateById(tReassign);
                    //添加交易明细
                    transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "直通车改派拒绝退款", money, 1, 1, 2, 1, tReassign.getOrderId());
                    transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "跨城改派拒绝退款", money, 1, 1, 2, 1, tReassign.getOrderId());
                }
                if(tReassign.getPayType() == 2){//支付宝
                    Map<String, String> map = payMoneyUtil.aliRefund(tReassign.getPayOrder(), money.toString());
@@ -358,7 +416,7 @@
                        tReassign.setReviewerType(2);
                        tReassignService.updateById(tReassign);
                        //添加交易明细
                        transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "直通车改派拒绝退款", money, 1, 1, 2, 1, tReassign.getOrderId());
                        transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "跨城改派拒绝退款", money, 1, 1, 2, 1, tReassign.getOrderId());
                    }
                    if(null == map || !"10000".equals(map.get("code"))){
                        System.err.println(map.get("msg"));
@@ -469,7 +527,7 @@
                map.put("id", orderCrossCity.getId().toString());
                map.put("orderType", "3");
                String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
                System.out.println("直通车取消:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result);
                System.out.println("跨城取消:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result);
                //已支付的情况下进行退款操作
@@ -479,7 +537,7 @@
                        tUser.setBalance(tUser.getBalance().add(orderCrossCity.getPayMoney()));
                        userService.updateById(tUser);
                        //添加交易明细
                        transactionDetailsService.saveData(orderCrossCity.getUserId(), "直通车改派取消退款", orderCrossCity.getPayMoney().doubleValue(), 1, 1, 1, 3, tReassign.getOrderId());
                        transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城改派取消退款", orderCrossCity.getPayMoney().doubleValue(), 1, 1, 1, 3, tReassign.getOrderId());
                    }else{
                        PaymentRecord query = paymentRecordService.query(1, null, null, tReassign.getOrderId(), 3, null, 2).get(0);
                        if(null == query){
@@ -492,14 +550,14 @@
                                return ResultUtil.error(map1.get("return_msg"));
                            }
                            //添加交易明细
                            transactionDetailsService.saveData(query.getUserId(), "直通车改派取消退款", query.getAmount(), 1, 1, query.getType(), 3, orderCrossCity.getId());
                            transactionDetailsService.saveData(query.getUserId(), "跨城改派取消退款", query.getAmount(), 1, 1, query.getType(), 3, orderCrossCity.getId());
                        }else{//支付宝
                            Map<String, String> map1 = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
                            if(!"10000".equals(map1.get("code"))){
                                return ResultUtil.error(map1.get("msg"));
                            }
                            //添加交易明细
                            transactionDetailsService.saveData(query.getUserId(), "直通车改派取消退款", query.getAmount(), 1, 1, query.getType(), 3, orderCrossCity.getId());
                            transactionDetailsService.saveData(query.getUserId(), "跨城改派取消退款", query.getAmount(), 1, 1, query.getType(), 3, orderCrossCity.getId());
                        }
                    }
@@ -548,7 +606,7 @@
                    tReassign.setReviewerType(2);
                    tReassignService.updateById(tReassign);
                    //添加交易明细
                    transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "直通车改派拒绝退款", money, 1, 1, 2, 3, tReassign.getOrderId());
                    transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "跨城改派拒绝退款", money, 1, 1, 2, 3, tReassign.getOrderId());
                }
                if(tReassign.getPayType() == 2){//支付宝
                    Map<String, String> map = payMoneyUtil.aliRefund(tReassign.getPayOrder(), money.toString());
@@ -557,7 +615,7 @@
                        tReassign.setReviewerType(2);
                        tReassignService.updateById(tReassign);
                        //添加交易明细
                        transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "直通车改派拒绝退款", money, 1, 1, 2, 3, tReassign.getOrderId());
                        transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "跨城改派拒绝退款", money, 1, 1, 2, 3, tReassign.getOrderId());
                    }
                    if(null == map || !"10000".equals(map.get("code"))){
                        System.err.println(map.get("msg"));
@@ -715,6 +773,125 @@
        return SUCCESS_TIP;
    }
    /**
     * 操作专车改派管理
     * optType 1=拒绝 2=取消
     */
    @RequestMapping(value = "/optTransfer")
    @ResponseBody
    public Object optTransfer(@RequestParam Integer transferId,@RequestParam Integer optType) {
        try {
            ShiroUser user = ShiroKit.getUser();
            TReassign tReassign = tReassignService.selectById(transferId);
            Integer state = tReassign.getState();
            if(state == 3){//已改派
                return "不能重复操作";
            }
            if(state == 4){//已改派
                return "不能重复操作";
            }
            if(state == 5){//已改派
                return "不能重复操作";
            }
            if (1 == optType){
                tReassign.setState(5);
                tReassignService.updateById(tReassign);
                //还原订单状态
                TOrderTransfer orderTransfer = orderTransferService.selectById(tReassign.getOrderId());
                orderTransfer.setState(orderTransfer.getOldState());
                orderTransferService.updateById(orderTransfer);
            }else if (2 == optType){
                tReassign.setState(4);
                tReassignService.updateById(tReassign);
                //修改订单状态"已取消"
                TOrderTransfer orderTransfer = orderTransferService.selectById(tReassign.getOrderId());
                orderTransfer.setState(10);
                orderTransferService.updateById(orderTransfer);
                //修改司机状态"空闲"
                TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId());
                driver.setState(2);
                itDriverService.updateById(driver);
                //添加取消记录
                OrderCancel orderCancel = new OrderCancel();
                orderCancel.setOrderId(tReassign.getOrderId());
                orderCancel.setOrderType(tReassign.getOrderType());
                orderCancel.setReason("调度端取消订单");
                orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作");
                orderCancel.setState(2);
                orderCancel.setInsertTime(new Date());
                orderCancel.setUserType(3);
                orderCancel.setUserId(user.getId());
                orderCancelMapper.insert(orderCancel);
                //调用推送
                Map<String,String> map = new HashMap<>();
                map.put("id", orderTransfer.getId().toString());
                map.put("orderType", "7");
                String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
                System.out.println("接送机取消:【orderId="+orderTransfer.getId().toString()+"】,调用接口:"+result);
            }
            if(state == 2){//退款操作
                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
                String out_refund_no = sdf.format(new Date()) + "_" + tReassign.getId();
                Double money = tReassign.getMoney();
                if(tReassign.getPayType() == 1){//微信
                    Map<String, String> map = payMoneyUtil.wxRefund(tReassign.getPayOrder(), out_refund_no, money.toString(), money.toString(), "/dispatch/base/order/reassignRefundCallback");
                    if(null == map || !"SUCCESS".equals(map.get("return_code"))){
                        System.err.println(map.get("return_msg"));
                        return ResultUtil.error(map.get("return_msg"));
                    }
                    tReassign.setReviewer(ShiroKit.getUser().getId());
                    tReassign.setReviewerType(2);
                    tReassignService.updateById(tReassign);
                    //添加交易明细
                    transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "接送机改派拒绝退款", money, 1, 1, 2, 7, tReassign.getOrderId());
                }
                if(tReassign.getPayType() == 2){//支付宝
                    Map<String, String> map = payMoneyUtil.aliRefund(tReassign.getPayOrder(), money.toString());
                    if(null != map && "10000".equals(map.get("code"))){
                        tReassign.setReviewer(ShiroKit.getUser().getId());
                        tReassign.setReviewerType(2);
                        tReassignService.updateById(tReassign);
                        //添加交易明细
                        transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "接送机改派拒绝退款", money, 1, 1, 2, 7, tReassign.getOrderId());
                    }
                    if(null == map || !"10000".equals(map.get("code"))){
                        System.err.println(map.get("msg"));
                        return ResultUtil.error(map.get("msg"));
                    }
                }
                if(tReassign.getPayType() == 3){//余额
                    TDriver tDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
                    tDriver.setBalance(tDriver.getBalance().add(new BigDecimal(money)));
                    tDriver.setLaveBusinessMoney(tDriver.getLaveBusinessMoney() + money);
                    itDriverService.updateById(tDriver);
                }
            }
            //增加交易明细
            TPubTransactionDetails details = new TPubTransactionDetails();
            details.setUserId(tReassign.getOriginalDriverId());
            details.setInsertTime(new Date());
            details.setRemark("【接送改派】:改派失败或订单取消");
            details.setMoney(new BigDecimal(tReassign.getMoney()));
            details.setState(1);
            details.setType(1);
            details.setUserType(2);
            details.setOrderType(3);
            details.setOrderId(tReassign.getOrderId());
            itPubTransactionDetailsService.insert(details);
            return SUCCESS_TIP;
        }catch (Exception e){
            e.printStackTrace();
            return "ERROR";
        }
    }
    /**
     * 专车订单改派司机
@@ -868,7 +1045,7 @@
        map.put("orderId", tOrderCrossCity.getId().toString());
        map.put("orderType", "3");
        String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map);
        System.out.println("直通车改派:【orderId="+tOrderCrossCity.getId().toString()+"】,调用接口:"+result);
        System.out.println("跨城改派:【orderId="+tOrderCrossCity.getId().toString()+"】,调用接口:"+result);
        return SUCCESS_TIP;
    }
@@ -922,4 +1099,65 @@
        System.out.println("小件物流改派:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result);
        return SUCCESS_TIP;
    }
    /**
     * 接送机订单改派司机
     */
    @RequestMapping(value = "/selectTransferDriver")
    @ResponseBody
    public Object selectTransferDriver(@RequestParam Integer orderId,@RequestParam Integer driverId) {
        //修改订单
        TReassign tReassign = tReassignService.selectById(orderId);
        TOrderTransfer orderTransfer = orderTransferService.selectById(tReassign.getOrderId());
        //修改之前司机状态 -- 空闲
        TDriver oldDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
        oldDriver.setState(2);
        itDriverService.updateById(oldDriver);
        //查找司机对象
        TDriver nowDriver = itDriverService.selectById(driverId);
        nowDriver.setState(3);
        itDriverService.updateById(nowDriver);
        //修改专车订单
        orderTransfer.setState(orderTransfer.getOldState());
        orderTransfer.setDriverId(driverId);
        orderTransfer.setCarId(nowDriver.getCarId());
        orderTransferService.updateById(orderTransfer);
        //修改专车改派订单
        tReassign.setNowDriverId(driverId);
        tReassign.setNowCarId(nowDriver.getCarId());
        tReassign.setState(3);
        tReassign.setCompleteTime(new Date());
        tReassignService.updateById(tReassign);
        List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("userType", 2).eq("type", 2).eq("incomeId", orderTransfer.getId()).eq("orderType", orderTransfer.getType()));
        for(Income income : incomes){
            income.setObjectId(driverId);
            incomeService.updateById(income);
            TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId());
            driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney())));
            driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney());
            driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
            itDriverService.updateById(driver);
            driver = itDriverService.selectById(driverId);
            driver.setBalance(driver.getBalance().add(new BigDecimal(income.getMoney())));
            driver.setBusinessMoney(driver.getBusinessMoney() + income.getMoney());
            driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() + income.getMoney());
            itDriverService.updateById(driver);
        }
        //增加推送
        Map<String,String> map = new HashMap<>();
        map.put("orderId", orderTransfer.getId().toString());
        map.put("orderType", "7");
        String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map);
        System.out.println("接送机改派:【orderId="+orderTransfer.getId().toString()+"】,调用接口:"+result);
        return SUCCESS_TIP;
    }
}