| | |
| | | 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.*; |
| | |
| | | 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; |
| | |
| | | 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.*; |
| | | |
| | | /** |
| | | * 快车改派管理控制器 |
| | |
| | | * @author fengshuonan |
| | | * @Date 2020-09-03 14:20:27 |
| | | */ |
| | | @Slf4j |
| | | @Controller |
| | | @RequestMapping("/tReassign") |
| | | public class TReassignController extends BaseController { |
| | |
| | | private ITOrderTaxiService orderTaxiService; |
| | | @Autowired |
| | | private ShiroExtUtil shiroExtUtil; |
| | | |
| | | |
| | | @Autowired |
| | | private ITCompanyService iTCompanyService; |
| | | @Autowired |
| | | private IUserService sysUserService; |
| | | |
| | | |
| | | /** |
| | | * 跳转到快车改派管理首页 |
| | | */ |
| | |
| | | @ResponseBody |
| | | public Object optCross(@RequestParam Integer tReassignId,@RequestParam Integer optType) { |
| | | try { |
| | | |
| | | TReassign tReassign = tReassignService.selectById(tReassignId); |
| | | ShiroUser user = shiroExtUtil.getUser(); |
| | | if (1 == optType) { |
| | |
| | | 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()); |
| | |
| | | //添加交易明细 |
| | | 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); |
| | | } |
| | | } |
| | | |
| | |
| | | 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(); |
| | | } |
| | |
| | | } |
| | | if(driver.getState() == 2){ |
| | | driver.setState(3); |
| | | itDriverService.updateById(driver); |
| | | } |
| | | |
| | | //修改订单数据 |
| | |
| | | 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()); |