Pu Zhibing
2 天以前 e0201ae86d66acd7127a9c01080731ee22e4b974
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
@@ -9,6 +9,7 @@
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.core.util.ExcelUtil;
import com.stylefeng.guns.core.util.SinataUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.dao.LineShiftDriverMapper;
import com.stylefeng.guns.modular.system.dao.OrderCancelMapper;
import com.stylefeng.guns.modular.system.model.*;
@@ -16,6 +17,9 @@
import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
import com.stylefeng.guns.modular.system.util.PushURL;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -32,10 +36,7 @@
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * 快车改派管理控制器
@@ -43,6 +44,7 @@
 * @author fengshuonan
 * @Date 2020-09-03 14:20:27
 */
@Slf4j
@Controller
@RequestMapping("/tReassign")
public class TReassignController extends BaseController {
@@ -89,8 +91,12 @@
    private ITOrderTaxiService orderTaxiService;
    @Autowired
    private ShiroExtUtil shiroExtUtil;
    @Autowired
    private ITCompanyService iTCompanyService;
    @Autowired
    private IUserService sysUserService;
    /**
     * 跳转到快车改派管理首页
     */
@@ -807,6 +813,7 @@
    @ResponseBody
    public Object optCross(@RequestParam Integer tReassignId,@RequestParam Integer optType) {
        try {
            TReassign tReassign = tReassignService.selectById(tReassignId);
            ShiroUser user = shiroExtUtil.getUser();
            if (1 == optType) {
@@ -828,6 +835,23 @@
                TOrderCrossCity tOrderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId());
                tOrderCrossCity.setState(tOrderCrossCity.getOldState());
                itOrderCrossCityService.updateById(tOrderCrossCity);
                //中台修改订单状态
                if(ToolUtil.isNotEmpty(tOrderCrossCity.getTravelId())){
                    TCompany company = iTCompanyService.selectById(driver.getCompanyId());
                    //中台修改订单状态
                    ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                    request.setOrderId(tOrderCrossCity.getTravelId());
                    request.setStatus(tOrderCrossCity.getState());
                    request.setDriverId(driver.getEmpId().toString());
                    if (2 == tOrderCrossCity.getPromotion()) {
                        TDriver driver1 = itDriverService.selectById(tOrderCrossCity.getPromotionDriverId());
                        request.setPromoterId(driver1.getEmpId().toString());
                    }
                    request.setSupplierShopId(company.getEnterCode());
                    OrderUtil.modifyTravelItinerary(request);
                }
            }else if (2 == optType){
                tReassign.setState(4);
                tReassign.setReviewer(user.getId());
@@ -885,45 +909,40 @@
                        //添加交易明细
                        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){
//                            return ResultUtil.error("订单还未进行支付");
//                        }
//                        Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tReassign.getOrderId() + "_3", orderCrossCity.getOrderNum());
//                        if(Integer.valueOf(merrefund.get("code").toString()) == 0){
//                            boolean b = true;
//                            while (b){
//                                Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), orderCrossCity.getOrderNum());
//                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0){//成功
//                                    //添加交易明细
//                                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, tReassign.getOrderId());
//                                }
//                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1){//失败
//                                    return ResultUtil.error("订单取消失败(退款不成功)");
//                                }
//                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2){//未知
//                                    return ResultUtil.error("退款返回未知异常");
//                                }
//                            }
//                        }
                    }
                        //中台订单退款操作
                        if(ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){
                            User user1 = sysUserService.selectById(user.getId());
                            List<PaymentRecord> list = paymentRecordService.query(1, orderCrossCity.getUserId(), 1, orderCrossCity.getId(), 3, 1, 2);
                            PaymentRecord query = list.get(0);
                            TradeOrderRefundRequest request = new TradeOrderRefundRequest();
                            request.setPartnerPayId(orderCrossCity.getTravelId());
                            request.setPayId(query.getCode());
                            request.setRefundTotalFee(orderCrossCity.getPayMoney().multiply(new BigDecimal(100)).intValue() + "");
                            request.setRemark("服务商取消订单退款");
                            request.setRefundType("RF");
                    //添加负的收入明细
                    List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3));
                    for(Income income : incomes){
                        if(income.getUserType() == 2){//处理司机的收入
                            TDriver driver = itDriverService.selectById(income.getObjectId());
                            driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney())));
                            driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
                            driver.setBusinessMoney(new BigDecimal(driver.getBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
                            itDriverService.updateById(driver);
                            RefundInfoRequest refundInfo = new RefundInfoRequest();
                            refundInfo.setPayItemId(orderCrossCity.getTravelId());
                            refundInfo.setPayId(query.getCode());
                            refundInfo.setTradeFee(orderCrossCity.getPayMoney().multiply(new BigDecimal(100)).intValue() + "");
                            request.setRefundInfos(new ArrayList<RefundInfoRequest>(){{
                                add(refundInfo);
                            }});
                            TradeOrderRefund tradeOrderRefund = OrderUtil.tradeOrderRefund(request);
                            //退款通知
                            OrderRefundNoticeRequest request1 = new OrderRefundNoticeRequest();
                            request1.setOrderId(orderCrossCity.getTravelId());
                            request1.setRefundPayNum(tradeOrderRefund.getRefundId());
                            request1.setRefundType("5");
                            request1.setApplyRefundCharge(orderCrossCity.getPayMoney());
                            request1.setActualRefundCharge(orderCrossCity.getPayMoney());
                            request1.setRefundAccount(user1.getEmpId().toString());
                            request1.setRemark("服务商取消订单退款");
                            OrderUtil.orderRefundNotice(request1);
                            //添加交易明细
                            transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, tReassign.getOrderId());
                        }
                        Income income1 = new Income();
                        BeanUtils.copyProperties(income, income1);
                        income1.setMoney(income.getMoney() * -1);
                        income1.setId(null);
                        income1.setInsertTime(new Date());
                        incomeService.insert(income1);
                    }
                }
@@ -939,22 +958,6 @@
                orderCancel.setUserId(user.getId());
                orderCancelMapper.insert(orderCancel);
            }
            //返回驾驶员处罚金
            TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
            //增加交易明细
            TPubTransactionDetails details = new TPubTransactionDetails();
            details.setUserId(originalDriver.getId());
            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);
        }catch (Exception e){
            e.printStackTrace();
        }
@@ -1276,6 +1279,7 @@
        }
        if(driver.getState() == 2){
            driver.setState(3);
            itDriverService.updateById(driver);
        }
        //修改订单数据
@@ -1300,24 +1304,23 @@
        tReassign.setCompleteTime(new Date());
        tReassignService.updateById(tReassign);
        //修改收入明细,转给新司机(因为是先支付金额)
        List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("userType", 2).eq("objectId", oldDriver.getId()).eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3));
        if(incomes.size() > 0){
            Income income = incomes.get(0);
            income.setObjectId(driverId);
            incomeService.updateById(income);
        TCompany company = iTCompanyService.selectById(driver.getCompanyId());
            oldDriver.setBusinessMoney(oldDriver.getBusinessMoney() - income.getMoney());
            oldDriver.setLaveBusinessMoney(oldDriver.getLaveBusinessMoney() - income.getMoney());
            oldDriver.setBalance(oldDriver.getBalance().subtract(new BigDecimal(income.getMoney())));
            driver.setBusinessMoney(driver.getBusinessMoney() + income.getMoney());
            driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() + income.getMoney());
            driver.setBalance(driver.getBalance().add(new BigDecimal(income.getMoney())));
        //中台修改订单状态
        if(ToolUtil.isNotEmpty(tOrderCrossCity.getTravelId())){
            ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
            request1.setOrderId(tOrderCrossCity.getTravelId());
            request1.setStatus(tOrderCrossCity.getState());
            if (null != tOrderCrossCity.getDriverId()) {
                request1.setDriverId(driver.getEmpId().toString());
                request1.setSupplierShopId(company.getEnterCode());
            }
            if (2 == tOrderCrossCity.getPromotion()) {
                TDriver driver2 = itDriverService.selectById(tOrderCrossCity.getPromotionDriverId());
                request1.setPromoterId(driver2.getEmpId().toString());
            }
            OrderUtil.modifyTravelItinerary(request1);
        }
        itDriverService.updateById(oldDriver);
        itDriverService.updateById(driver);
        //增加推送
        Map<String,String> map = new HashMap<>();
        map.put("orderId", tOrderCrossCity.getId().toString());