package com.stylefeng.guns.modular.system.controller.specialTrain; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.modular.system.dao.OrderCancelMapper; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.ITCarService; import com.stylefeng.guns.modular.system.service.ITDriverService; import com.stylefeng.guns.modular.system.service.ITOrderLogisticsService; import com.stylefeng.guns.modular.system.service.ITUserService; import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil; import com.stylefeng.guns.modular.system.util.HttpRequestUtil; import com.stylefeng.guns.modular.system.util.PushURL; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * 小件物流订单控制器 * * @author fengshuonan * @Date 2020-09-24 14:20:41 */ @Controller @RequestMapping("/tOrderLogistics") public class TOrderLogisticsController extends BaseController { private String PREFIX = "/system/tOrderLogistics/"; @Autowired private ITOrderLogisticsService tOrderLogisticsService; @Autowired private FleetEngineUtil fleetEngineUtil; @Resource private ITUserService userService; @Resource private OrderCancelMapper orderCancelMapper; @Resource private ITCarService carService; @Autowired private ITDriverService itDriverService; /** * 跳转到小件物流订单首页 */ @RequestMapping("") public String index() { return PREFIX + "tOrderLogistics.html"; } /** * 跳转到添加小件物流订单 */ @RequestMapping("/tOrderLogistics_add") public String tOrderLogisticsAdd() { return PREFIX + "tOrderLogistics_add.html"; } /** * 跳转到查看小件物流订单 */ @RequestMapping("/tOrderLogistics_detail/{tOrderLogisticsId}") public String tOrderLogistics_detail(@PathVariable Integer tOrderLogisticsId, Model model) { Map tOrderLogistics = tOrderLogisticsService.getLogisticsOrderDetailById(tOrderLogisticsId); model.addAttribute("item",tOrderLogistics); return PREFIX + "tOrderLogistics_detail.html"; } /** * 获取小件物流订单列表 */ @RequestMapping(value = "/list") @ResponseBody public Object list(String insertTime, String orderNum, Integer type, Integer orderSource, String userName, String userPhone, String recipient, String recipientPhone, String driver, Integer state) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Page> page = new PageFactory>().defaultPage(); page.setRecords(tOrderLogisticsService.getLogisticsOrderList(page,beginTime,endTime,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(), orderNum,orderSource,type,userName,userPhone,recipient,recipientPhone,driver,state)); return super.packForBT(page); } /** * 取消小件物流订单 */ @RequestMapping(value = "/cancel") @ResponseBody public Object cancel(@RequestParam Integer tOrderLogisticsId) { TOrderLogistics tOrderLogistics = tOrderLogisticsService.selectById(tOrderLogisticsId); if(Arrays.asList(6, 7, 8, 9, 10).contains(tOrderLogistics.getState())){ return ERROR; } //修改之前司机状态 -- 空闲 if(null != tOrderLogistics.getDriverId()){ TDriver driver = itDriverService.selectById(tOrderLogistics.getDriverId()); driver.setState(2); itDriverService.updateById(driver); } tOrderLogistics.setState(10); tOrderLogisticsService.updateById(tOrderLogistics); TUser tUser = userService.selectById(tOrderLogistics.getUserId()); Integer language = tUser.getLanguage(); OrderCancel orderCancel = new OrderCancel(); orderCancel.setOrderId(tOrderLogisticsId); orderCancel.setOrderType(4); orderCancel.setReason(language == 1 ? "平台取消订单" : language == 2 ? "The platform cancelled the order" : "La plateforme a annulé la commande"); orderCancel.setRemark(language == 1 ? "平台取消订单" : language == 2 ? "The platform cancelled the order" : "La plateforme a annulé la commande"); orderCancel.setUserType(2); orderCancel.setState(2); orderCancel.setInsertTime(new Date()); orderCancelMapper.insert(orderCancel); //修改行程信息 TCar car = carService.selectById(tOrderLogistics.getCarId()); //修改行程信息 boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tOrderLogistics.getTripId(), null, null, null, null, tOrderLogistics.getId(), 4); if(!updateTrip){ for (int i = 0; i < 5; i++) { updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tOrderLogistics.getTripId(), null, null, null, null, tOrderLogistics.getId(), 4); if(updateTrip){ tOrderLogistics.setIsover(1); tOrderLogisticsService.updateById(tOrderLogistics); break; } try { Thread.sleep(3000L); } catch (InterruptedException e) { throw new RuntimeException(e); } } }else{ tOrderLogistics.setIsover(1); tOrderLogisticsService.updateById(tOrderLogistics); } //增加推送 Map map = new HashMap<>(); map.put("id", tOrderLogistics.getId().toString()); map.put("orderType", tOrderLogistics.getType().toString()); map.put("from", "admin"); String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map); System.out.println("小件物流取消:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result); return SUCCESS_TIP; } /** * 删除小件物流订单 */ @RequestMapping(value = "/delete") @ResponseBody public Object delete(@RequestParam Integer tOrderLogisticsId) { TOrderLogistics tOrderLogistics = tOrderLogisticsService.selectById(tOrderLogisticsId); tOrderLogistics.setIsDelete(2); tOrderLogisticsService.updateById(tOrderLogistics); return SUCCESS_TIP; } }