From 4becc1e8cdb2fbe0dcb94493b75a59ec1817028c Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期六, 04 十一月 2023 16:05:04 +0800 Subject: [PATCH] 修改bug --- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 1090 ++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 723 insertions(+), 367 deletions(-) diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 547000e..ae75ffa 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -24,6 +24,7 @@ import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo; import com.stylefeng.guns.modular.system.util.Tingg.TinggPayUtil; import com.stylefeng.guns.modular.system.util.Tingg.model.CheckoutRequest; +import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.EndPushWarpper; import com.stylefeng.guns.modular.system.warpper.OrderInfoWarpper; @@ -50,10 +51,7 @@ import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; +import java.io.*; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; @@ -183,6 +181,21 @@ @Value("${spring.mail.template-path}") private String templatePath; + + @Autowired + private ISettlementDetailService settlementDetailService; + + @Autowired + private ISettlementRecordService settlementRecordService; + + @Autowired + private ISettlementAllocationService settlementAllocationService; + + @Autowired + private TEmailService emailService; + + @Autowired + private IPhoneService phoneService; @@ -741,6 +754,7 @@ PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); //获取空闲司机 List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + System.err.println("【" + orderPrivateCar.getId() + "】空闲司机:" + JSON.toJSONString(list)); if(list.size() > 0){ double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) @@ -827,6 +841,9 @@ list.addAll(list1); return list; } + + + @Override public ResultUtil payPrivateCarOrder(Integer payType, Integer bankCardId, Integer orderId, Integer couponId, Integer type, Integer language) throws Exception { @@ -998,125 +1015,207 @@ } if(ToolUtil.isNotEmpty(userInfo.getEmail())){ - String path = templatePath + "user/receipt.html"; - Document document = Jsoup.parse(new File(path), "UTF-8"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); - SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); - Car car = carMapper.selectById(orderPrivateCar.getCarId()); - Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); - Double aDouble = 0D; - if(null != orderPrivateCar.getDriverId()){ - aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId()); - } - Double aDouble1 = Double.valueOf(orderPrivateCar.getMileage() / 1000); - if(1 == language){ - document.getElementById("english").remove(); - document.getElementById("french").remove(); - Element title_chinese = document.getElementById("title_chinese"); - title_chinese.text(sdf.format(orderPrivateCar.getTravelTime()) + ",您在I-GO1个订单消费GHS " + orderPrivateCar.getPayMoney()); - Element xcf_chinese = document.getElementById("xcf_chinese"); - xcf_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_chinese = document.getElementById("xj_chinese"); - xj_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_chinese = document.getElementById("pay_type_chinese"); - pay_type_chinese.text("余额"); - Element pay_money_chinese = document.getElementById("pay_money_chinese"); - pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_chinese = document.getElementById("pay_time_chinese"); - pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_chinese = document.getElementsByClass("driver_chinese"); - for (int i = 0; i < driver_chinese.size(); i++) { - Element element = driver_chinese.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_chinese = document.getElementById("cp_chinese"); - cp_chinese.text("车牌:" + car.getCarLicensePlate()); - Element pf_chinese = document.getElementById("pf_chinese"); - pf_chinese.text("司机评分:" + aDouble); - Element lc_chinese = document.getElementById("lc_chinese"); - lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟"); - Element start_time_chinese = document.getElementById("start_time_chinese"); - start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_chinese = document.getElementById("start_address_chinese"); - start_address_chinese.text(orderPrivateCar.getStartAddress()); - Element end_time_chinese = document.getElementById("end_time_chinese"); - end_time_chinese.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_chinese = document.getElementById("end_address_chinese"); - end_address_chinese.text(orderPrivateCar.getEndAddress()); - } - if(2 == language){ - document.getElementById("chinese").remove(); - document.getElementById("french").remove(); - Element title_english = document.getElementById("title_english"); - title_english.text(sdf.format(orderPrivateCar.getTravelTime()) + ",You spent GHS " + orderPrivateCar.getPayMoney() + " on the trip "); - Element xcf_english = document.getElementById("xcf_english"); - xcf_english.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_english = document.getElementById("xj_english"); - xj_english.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_english = document.getElementById("pay_type_english"); - pay_type_english.text("balance"); - Element pay_money_english = document.getElementById("pay_money_english"); - pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_english = document.getElementById("pay_time_english"); - pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_english = document.getElementsByClass("driver_english"); - for (int i = 0; i < driver_english.size(); i++) { - Element element = driver_english.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_english = document.getElementById("cp_english"); - cp_english.text("Number Plate:" + car.getCarLicensePlate()); - Element pf_english = document.getElementById("pf_english"); - pf_english.text("Driver Rating:" + aDouble); - Element lc_english = document.getElementById("lc_english"); - lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes"); - Element start_time_english = document.getElementById("start_time_english"); - start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_english = document.getElementById("start_address_english"); - start_address_english.text(orderPrivateCar.getStartAddress()); - Element end_time_english = document.getElementById("end_time_english"); - end_time_english.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_english = document.getElementById("end_address_english"); - end_address_english.text(orderPrivateCar.getEndAddress()); - } - if(3 == language){ - document.getElementById("chinese").remove(); - document.getElementById("english").remove(); - Element title_french = document.getElementById("title_french"); - title_french.text("Vous consommez GHS " + orderPrivateCar.getPayMoney() + " sur votre commande i-go1 le " + sdf.format(orderPrivateCar.getTravelTime())); - Element xcf_french = document.getElementById("xcf_french"); - xcf_french.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_french = document.getElementById("xj_french"); - xj_french.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_french = document.getElementById("pay_type_french"); - pay_type_french.text("Le solde"); - Element pay_money_french = document.getElementById("pay_money_french"); - pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_french = document.getElementById("pay_time_french"); - pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_french = document.getElementsByClass("driver_french"); - for (int i = 0; i < driver_french.size(); i++) { - Element element = driver_french.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_french = document.getElementById("cp_french"); - cp_french.text("Plaque d’immatriculation:" + car.getCarLicensePlate()); - Element pf_french = document.getElementById("pf_french"); - pf_french.text("Évaluation des pilotes: " + aDouble); - Element lc_french = document.getElementById("lc_french"); - lc_french.text("Kilométrage: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes"); - Element start_time_french = document.getElementById("start_time_french"); - start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_french = document.getElementById("start_address_french"); - start_address_french.text(orderPrivateCar.getStartAddress()); - Element end_time_french = document.getElementById("end_time_french"); - end_time_french.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_french = document.getElementById("end_address_french"); - end_address_french.text(orderPrivateCar.getEndAddress()); - } + new Thread(new Runnable() { + @Override + public void run() { + try { + String path = templatePath + "user/receipt.html"; + Document document = Jsoup.parse(new File(path), "UTF-8"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); + SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); + Car car = carMapper.selectById(orderPrivateCar.getCarId()); + Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); + Double aDouble = 0D; + if(null != orderPrivateCar.getDriverId()){ + aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId()); + } + Double aDouble1 = Double.valueOf(orderPrivateCar.getMileage() / 1000); + if(1 == language){ + document.getElementById("english").remove(); + document.getElementById("french").remove(); + Element title_chinese = document.getElementById("title_chinese"); + title_chinese.text(sdf.format(orderPrivateCar.getTravelTime()) + ",您在I-GO1个订单消费GHS " + orderPrivateCar.getPayMoney()); + Element xcf_chinese = document.getElementById("xcf_chinese"); + xcf_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_chinese = document.getElementById("xj_chinese"); + xj_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_chinese = document.getElementById("pay_type_chinese"); + pay_type_chinese.text("余额"); + Element pay_money_chinese = document.getElementById("pay_money_chinese"); + pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + Element lost_item_chinese = document.getElementById("lost_item_chinese"); + lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1"); + Element track_chinese = document.getElementById("track_chinese"); + track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); + Element pay_time_chinese = document.getElementById("pay_time_chinese"); + pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_chinese = document.getElementsByClass("driver_chinese"); + for (int i = 0; i < driver_chinese.size(); i++) { + Element element = driver_chinese.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_chinese = document.getElementById("cp_chinese"); + cp_chinese.text("车牌:" + car.getCarLicensePlate()); + Element pf_chinese = document.getElementById("pf_chinese"); + pf_chinese.text("司机评分:" + aDouble); + Element lc_chinese = document.getElementById("lc_chinese"); + lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟"); + Element start_time_chinese = document.getElementById("start_time_chinese"); + start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_chinese = document.getElementById("start_address_chinese"); + start_address_chinese.text(orderPrivateCar.getStartAddress()); + Element end_time_chinese = document.getElementById("end_time_chinese"); + end_time_chinese.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_chinese = document.getElementById("end_address_chinese"); + end_address_chinese.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_chinese = document.getElementById("server_tel_chinese"); + server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(2 == language){ + document.getElementById("chinese").remove(); + document.getElementById("french").remove(); + Element title_english = document.getElementById("title_english"); + title_english.text(sdf.format(orderPrivateCar.getTravelTime()) + ",You spent GHS " + orderPrivateCar.getPayMoney() + " on the trip "); + Element xcf_english = document.getElementById("xcf_english"); + xcf_english.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_english = document.getElementById("xj_english"); + xj_english.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_english = document.getElementById("pay_type_english"); + pay_type_english.text("balance"); + Element pay_money_english = document.getElementById("pay_money_english"); + pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + Element lost_item_english = document.getElementById("lost_item_english"); + lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1"); + Element track_english = document.getElementById("track_english"); + track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); + Element pay_time_english = document.getElementById("pay_time_english"); + pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_english = document.getElementsByClass("driver_english"); + for (int i = 0; i < driver_english.size(); i++) { + Element element = driver_english.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_english = document.getElementById("cp_english"); + cp_english.text("Number Plate:" + car.getCarLicensePlate()); + Element pf_english = document.getElementById("pf_english"); + pf_english.text("Driver Rating:" + aDouble); + Element lc_english = document.getElementById("lc_english"); + lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes"); + Element start_time_english = document.getElementById("start_time_english"); + start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_english = document.getElementById("start_address_english"); + start_address_english.text(orderPrivateCar.getStartAddress()); + Element end_time_english = document.getElementById("end_time_english"); + end_time_english.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_english = document.getElementById("end_address_english"); + end_address_english.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_english = document.getElementById("server_tel_english"); + server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(3 == language){ + document.getElementById("chinese").remove(); + document.getElementById("english").remove(); + Element title_french = document.getElementById("title_french"); + title_french.text("Vous consommez GHS " + orderPrivateCar.getPayMoney() + " sur votre commande i-go1 le " + sdf.format(orderPrivateCar.getTravelTime())); + Element xcf_french = document.getElementById("xcf_french"); + xcf_french.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_french = document.getElementById("xj_french"); + xj_french.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_french = document.getElementById("pay_type_french"); + pay_type_french.text("Le solde"); + Element pay_money_french = document.getElementById("pay_money_french"); + pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + Element lost_item_french = document.getElementById("lost_item_french"); + lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1"); + Element track_french = document.getElementById("track_french"); + track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); + Element pay_time_french = document.getElementById("pay_time_french"); + pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_french = document.getElementsByClass("driver_french"); + for (int i = 0; i < driver_french.size(); i++) { + Element element = driver_french.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_french = document.getElementById("cp_french"); + cp_french.text("Plaque d’immatriculation:" + car.getCarLicensePlate()); + Element pf_french = document.getElementById("pf_french"); + pf_french.text("Évaluation des pilotes: " + aDouble); + Element lc_french = document.getElementById("lc_french"); + lc_french.text("Kilométrage: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes"); + Element start_time_french = document.getElementById("start_time_french"); + start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_french = document.getElementById("start_address_french"); + start_address_french.text(orderPrivateCar.getStartAddress()); + Element end_time_french = document.getElementById("end_time_french"); + end_time_french.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_french = document.getElementById("end_address_french"); + end_address_french.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_french = document.getElementById("server_tel_french"); + server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", document.html()); - EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", document.html()); + //开始生成pdf收据和html收据 + File file = new File("/usr/local/nginx/html/files/html/"); + if(!file.exists()){ + file.mkdirs(); + } + file = new File("/usr/local/nginx/html/files/html/ride_receipt_" + orderId + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + FileInputStream fileInputStream = new FileInputStream(file); + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/ride_receipt_" + orderId + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream); + + + String link ="http://182.160.16.251:81/files/html/ride_receipt_" + orderId + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setUserId(uid); + tEmail.setName(language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride"); + tEmail.setType(1); + tEmail.setOrderId(orderId); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + tEmail.setWeek(EmailUtil.getWeek(language,i)); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée"); + }else { + tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi"); + } + emailService.insert(tEmail); + + + + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); } @@ -1146,7 +1245,7 @@ orderPrivateCar.setState(8); orderPrivateCar.setPayType(4); - orderPrivateCar.setDriverPay(1); + orderPrivateCar.setDriverPay(2); orderPrivateCar.setPayMoney(orderMoney); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+orderPrivateCar.getFreeMoney().doubleValue()); @@ -1176,135 +1275,254 @@ d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); } - incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); - incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue()); +// incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); +// incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue()); Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); - driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driverService.updateById(driver); +// driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); +// driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); +// driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); +// driverService.updateById(driver); + + + //记录司机待结算金额 + if(d.compareTo(new BigDecimal(0)) > 0){ + SettlementDetail settlementDetail = new SettlementDetail(); + settlementDetail.setOrderId(orderId); + settlementDetail.setOrderType(1); + settlementDetail.setDriverId(driver.getId()); + settlementDetail.setOrderMoney(orderPrivateCar.getOrderMoney()); + settlementDetail.setPrice(d.doubleValue()); + settlementDetail.setCreateTime(new Date()); + settlementDetailService.insert(settlementDetail); + + SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null); + if(null != settlementAllocation){ + JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent()); + Double maxPrice = jsonObject.getDouble("maxPrice"); + List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driver.getId()).isNull("settlementRecordId").last(" and DATE_FORMAT(now(), '%Y-%m-%d') = DATE_FORMAT(createTime, '%Y-%m-%d')")); + BigDecimal total = new BigDecimal(0); + for (SettlementDetail detail : settlementDetailList) { + total = total.add(new BigDecimal(detail.getPrice())); + } + if(maxPrice.compareTo(total.doubleValue()) <= 0){ + SettlementRecord settlementRecord = new SettlementRecord(); + settlementRecord.setDay(new Date()); + settlementRecord.setDriverId(driver.getId()); + settlementRecord.setType(1); + settlementRecord.setPaymentStatus(1); + settlementRecord.setPayMoney(total.doubleValue()); + settlementRecord.setInsertTime(new Date()); + settlementRecordService.insert(settlementRecord); + + for (SettlementDetail detail : settlementDetailList) { + detail.setSettlementRecordId(settlementRecord.getId()); + settlementDetailService.updateById(detail); + } + } + } + } } if(ToolUtil.isNotEmpty(userInfo.getEmail())){ - String path = templatePath + "user/receipt.html"; - Document document = Jsoup.parse(new File(path), "UTF-8"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); - SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); - Car car = carMapper.selectById(orderPrivateCar.getCarId()); - Double aDouble = 0D; - if(null != orderPrivateCar.getDriverId()){ - aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId()); - } - Double aDouble1 = Double.valueOf(orderPrivateCar.getMileage() / 1000); - Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); - if(1 == language){ - document.getElementById("english").remove(); - document.getElementById("french").remove(); - Element title_chinese = document.getElementById("title_chinese"); - title_chinese.text(sdf.format(orderPrivateCar.getTravelTime()) + ",您在I-GO1个订单消费GHS " + orderPrivateCar.getPayMoney()); - Element xcf_chinese = document.getElementById("xcf_chinese"); - xcf_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_chinese = document.getElementById("xj_chinese"); - xj_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_chinese = document.getElementById("pay_type_chinese"); - pay_type_chinese.text("现金"); - Element pay_money_chinese = document.getElementById("pay_money_chinese"); - pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_chinese = document.getElementById("pay_time_chinese"); - pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_chinese = document.getElementsByClass("driver_chinese"); - for (int i = 0; i < driver_chinese.size(); i++) { - Element element = driver_chinese.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_chinese = document.getElementById("cp_chinese"); - cp_chinese.text("车牌:" + car.getCarLicensePlate()); - Element pf_chinese = document.getElementById("pf_chinese"); - pf_chinese.text("司机评分:" + aDouble); - Element lc_chinese = document.getElementById("lc_chinese"); - lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟"); - Element start_time_chinese = document.getElementById("start_time_chinese"); - start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_chinese = document.getElementById("start_address_chinese"); - start_address_chinese.text(orderPrivateCar.getStartAddress()); - Element end_time_chinese = document.getElementById("end_time_chinese"); - end_time_chinese.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_chinese = document.getElementById("end_address_chinese"); - end_address_chinese.text(orderPrivateCar.getEndAddress()); - } - if(2 == language){ - document.getElementById("chinese").remove(); - document.getElementById("french").remove(); - Element title_english = document.getElementById("title_english"); - title_english.text(sdf.format(orderPrivateCar.getTravelTime()) + ",You spent GHS " + orderPrivateCar.getPayMoney() + " on the trip "); - Element xcf_english = document.getElementById("xcf_english"); - xcf_english.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_english = document.getElementById("xj_english"); - xj_english.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_english = document.getElementById("pay_type_english"); - pay_type_english.text("Cash"); - Element pay_money_english = document.getElementById("pay_money_english"); - pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_english = document.getElementById("pay_time_english"); - pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_english = document.getElementsByClass("driver_english"); - for (int i = 0; i < driver_english.size(); i++) { - Element element = driver_english.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_english = document.getElementById("cp_english"); - cp_english.text("Number Plate:" + car.getCarLicensePlate()); - Element pf_english = document.getElementById("pf_english"); - pf_english.text("Driver Rating:" + aDouble); - Element lc_english = document.getElementById("lc_english"); - lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes"); - Element start_time_english = document.getElementById("start_time_english"); - start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_english = document.getElementById("start_address_english"); - start_address_english.text(orderPrivateCar.getStartAddress()); - Element end_time_english = document.getElementById("end_time_english"); - end_time_english.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_english = document.getElementById("end_address_english"); - end_address_english.text(orderPrivateCar.getEndAddress()); - } - if(3 == language){ - document.getElementById("chinese").remove(); - document.getElementById("english").remove(); - Element title_french = document.getElementById("title_french"); - title_french.text("Vous consommez GHS " + orderPrivateCar.getPayMoney() + " sur votre commande i-go1 le " + sdf.format(orderPrivateCar.getTravelTime())); - Element xcf_french = document.getElementById("xcf_french"); - xcf_french.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_french = document.getElementById("xj_french"); - xj_french.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_french = document.getElementById("pay_type_french"); - pay_type_french.text("espèces"); - Element pay_money_french = document.getElementById("pay_money_french"); - pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_french = document.getElementById("pay_time_french"); - pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_french = document.getElementsByClass("driver_french"); - for (int i = 0; i < driver_french.size(); i++) { - Element element = driver_french.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_french = document.getElementById("cp_french"); - cp_french.text("Plaque d’immatriculation:" + car.getCarLicensePlate()); - Element pf_french = document.getElementById("pf_french"); - pf_french.text("Évaluation des pilotes: " + aDouble); - Element lc_french = document.getElementById("lc_french"); - lc_french.text("Kilométrage: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes"); - Element start_time_french = document.getElementById("start_time_french"); - start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_french = document.getElementById("start_address_french"); - start_address_french.text(orderPrivateCar.getStartAddress()); - Element end_time_french = document.getElementById("end_time_french"); - end_time_french.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_french = document.getElementById("end_address_french"); - end_address_french.text(orderPrivateCar.getEndAddress()); - } + new Thread(new Runnable() { + @Override + public void run() { + try { + String path = templatePath + "user/receipt.html"; + Document document = Jsoup.parse(new File(path), "UTF-8"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); + SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); + Car car = carMapper.selectById(orderPrivateCar.getCarId()); + Double aDouble = 0D; + if(null != orderPrivateCar.getDriverId()){ + aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId()); + } + Double aDouble1 = Double.valueOf(orderPrivateCar.getMileage() / 1000); + Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); + if(1 == language){ + document.getElementById("english").remove(); + document.getElementById("french").remove(); + Element title_chinese = document.getElementById("title_chinese"); + title_chinese.text(sdf.format(orderPrivateCar.getTravelTime()) + ",您在I-GO1个订单消费GHS " + orderPrivateCar.getPayMoney()); + Element xcf_chinese = document.getElementById("xcf_chinese"); + xcf_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_chinese = document.getElementById("xj_chinese"); + xj_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_chinese = document.getElementById("pay_type_chinese"); + pay_type_chinese.text("现金"); + Element pay_money_chinese = document.getElementById("pay_money_chinese"); + pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + Element lost_item_chinese = document.getElementById("lost_item_chinese"); + lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1"); + Element track_chinese = document.getElementById("track_chinese"); + track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); + Element pay_time_chinese = document.getElementById("pay_time_chinese"); + pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_chinese = document.getElementsByClass("driver_chinese"); + for (int i = 0; i < driver_chinese.size(); i++) { + Element element = driver_chinese.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_chinese = document.getElementById("cp_chinese"); + cp_chinese.text("车牌:" + car.getCarLicensePlate()); + Element pf_chinese = document.getElementById("pf_chinese"); + pf_chinese.text("司机评分:" + aDouble); + Element lc_chinese = document.getElementById("lc_chinese"); + lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟"); + Element start_time_chinese = document.getElementById("start_time_chinese"); + start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_chinese = document.getElementById("start_address_chinese"); + start_address_chinese.text(orderPrivateCar.getStartAddress()); + Element end_time_chinese = document.getElementById("end_time_chinese"); + end_time_chinese.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_chinese = document.getElementById("end_address_chinese"); + end_address_chinese.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_chinese = document.getElementById("server_tel_chinese"); + server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(2 == language){ + document.getElementById("chinese").remove(); + document.getElementById("french").remove(); + Element title_english = document.getElementById("title_english"); + title_english.text(sdf.format(orderPrivateCar.getTravelTime()) + ",You spent GHS " + orderPrivateCar.getPayMoney() + " on the trip "); + Element xcf_english = document.getElementById("xcf_english"); + xcf_english.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_english = document.getElementById("xj_english"); + xj_english.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_english = document.getElementById("pay_type_english"); + pay_type_english.text("Cash"); + Element pay_money_english = document.getElementById("pay_money_english"); + pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + Element lost_item_english = document.getElementById("lost_item_english"); + lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1"); + Element track_english = document.getElementById("track_english"); + track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); + Element pay_time_english = document.getElementById("pay_time_english"); + pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_english = document.getElementsByClass("driver_english"); + for (int i = 0; i < driver_english.size(); i++) { + Element element = driver_english.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_english = document.getElementById("cp_english"); + cp_english.text("Number Plate:" + car.getCarLicensePlate()); + Element pf_english = document.getElementById("pf_english"); + pf_english.text("Driver Rating:" + aDouble); + Element lc_english = document.getElementById("lc_english"); + lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes"); + Element start_time_english = document.getElementById("start_time_english"); + start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_english = document.getElementById("start_address_english"); + start_address_english.text(orderPrivateCar.getStartAddress()); + Element end_time_english = document.getElementById("end_time_english"); + end_time_english.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_english = document.getElementById("end_address_english"); + end_address_english.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_english = document.getElementById("server_tel_english"); + server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(3 == language){ + document.getElementById("chinese").remove(); + document.getElementById("english").remove(); + Element title_french = document.getElementById("title_french"); + title_french.text("Vous consommez GHS " + orderPrivateCar.getPayMoney() + " sur votre commande i-go1 le " + sdf.format(orderPrivateCar.getTravelTime())); + Element xcf_french = document.getElementById("xcf_french"); + xcf_french.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_french = document.getElementById("xj_french"); + xj_french.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_french = document.getElementById("pay_type_french"); + pay_type_french.text("espèces"); + Element pay_money_french = document.getElementById("pay_money_french"); + pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + Element lost_item_french = document.getElementById("lost_item_french"); + lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1"); + Element track_french = document.getElementById("track_french"); + track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); + Element pay_time_french = document.getElementById("pay_time_french"); + pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_french = document.getElementsByClass("driver_french"); + for (int i = 0; i < driver_french.size(); i++) { + Element element = driver_french.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_french = document.getElementById("cp_french"); + cp_french.text("Plaque d’immatriculation:" + car.getCarLicensePlate()); + Element pf_french = document.getElementById("pf_french"); + pf_french.text("Évaluation des pilotes: " + aDouble); + Element lc_french = document.getElementById("lc_french"); + lc_french.text("Kilométrage: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes"); + Element start_time_french = document.getElementById("start_time_french"); + start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_french = document.getElementById("start_address_french"); + start_address_french.text(orderPrivateCar.getStartAddress()); + Element end_time_french = document.getElementById("end_time_french"); + end_time_french.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_french = document.getElementById("end_address_french"); + end_address_french.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_french = document.getElementById("server_tel_french"); + server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } - EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", document.html()); + EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", document.html()); + + //开始生成pdf收据和html收据 + File file = new File("/usr/local/nginx/html/files/html/"); + if(!file.exists()){ + file.mkdirs(); + } + file = new File("/usr/local/nginx/html/files/html/ride_receipt_" + orderId + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + FileInputStream fileInputStream = new FileInputStream(file); + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/ride_receipt_" + orderId + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream); + String link ="http://182.160.16.251:81/files/html/ride_receipt_" + orderId + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setUserId(uid); + tEmail.setName(language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride"); + tEmail.setType(1); + tEmail.setOrderId(orderId); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + tEmail.setWeek(EmailUtil.getWeek(language,i)); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée"); + }else { + tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi"); + } + emailService.insert(tEmail); + + + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); } @@ -1327,6 +1545,7 @@ this.updateAllColumnById(orderPrivateCar); return resultUtil; } + @Override public synchronized ResultUtil<BaseWarpper> queryRedMoney(Integer orderId) throws Exception { @@ -1434,6 +1653,49 @@ } EmailUtil.send(userInfo.getEmail(), language == 1 ? "红包活动" : language == 2 ? "Red envelope activity" : "Activité de l’enveloppe rouge", document.html()); + //开始生成pdf收据和html收据 + File file = new File("/usr/local/nginx/html/files/html/"); + if(!file.exists()){ + file.mkdirs(); + } + file = new File("/usr/local/nginx/html/files/html/redpacket_" + orderId + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + FileInputStream fileInputStream = new FileInputStream(file); + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/redpacket_" + orderId + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream); + + String link ="http://182.160.16.251:81/files/html/redpacket_" + orderId + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setUserId(userInfo.getId()); + tEmail.setType(1); + tEmail.setName( language == 1 ? "红包活动" : language == 2 ? "Red envelope activity" : "Activité de l’enveloppe rouge"); + tEmail.setOrderId(orderId); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + tEmail.setWeek(EmailUtil.getWeek(language,i)); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée"); + }else { + tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi"); + } + emailService.insert(tEmail); + } } @@ -1566,125 +1828,206 @@ if(ToolUtil.isNotEmpty(userInfo.getEmail())){ - String path = templatePath + "user/receipt.html"; - Document document = Jsoup.parse(new File(path), "UTF-8"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); - SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); - Car car = carMapper.selectById(orderPrivateCar.getCarId()); - Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); - Double aDouble = 0D; - if(null != orderPrivateCar.getDriverId()){ - aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId()); - } - Double aDouble1 = Double.valueOf(orderPrivateCar.getMileage() / 1000); - if(1 == language){ - document.getElementById("english").remove(); - document.getElementById("french").remove(); - Element title_chinese = document.getElementById("title_chinese"); - title_chinese.text(sdf.format(orderPrivateCar.getTravelTime()) + ",您在I-GO1个订单消费GHS " + orderPrivateCar.getPayMoney()); - Element xcf_chinese = document.getElementById("xcf_chinese"); - xcf_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_chinese = document.getElementById("xj_chinese"); - xj_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_chinese = document.getElementById("pay_type_chinese"); - pay_type_chinese.text("现金"); - Element pay_money_chinese = document.getElementById("pay_money_chinese"); - pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_chinese = document.getElementById("pay_time_chinese"); - pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_chinese = document.getElementsByClass("driver_chinese"); - for (int i = 0; i < driver_chinese.size(); i++) { - Element element = driver_chinese.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_chinese = document.getElementById("cp_chinese"); - cp_chinese.text("车牌:" + car.getCarLicensePlate()); - Element pf_chinese = document.getElementById("pf_chinese"); - pf_chinese.text("司机评分:" + aDouble); - Element lc_chinese = document.getElementById("lc_chinese"); - lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟"); - Element start_time_chinese = document.getElementById("start_time_chinese"); - start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_chinese = document.getElementById("start_address_chinese"); - start_address_chinese.text(orderPrivateCar.getStartAddress()); - Element end_time_chinese = document.getElementById("end_time_chinese"); - end_time_chinese.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_chinese = document.getElementById("end_address_chinese"); - end_address_chinese.text(orderPrivateCar.getEndAddress()); - } - if(2 == language){ - document.getElementById("chinese").remove(); - document.getElementById("french").remove(); - Element title_english = document.getElementById("title_english"); - title_english.text(sdf.format(orderPrivateCar.getTravelTime()) + ",You spent GHS " + orderPrivateCar.getPayMoney() + " on the trip "); - Element xcf_english = document.getElementById("xcf_english"); - xcf_english.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_english = document.getElementById("xj_english"); - xj_english.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_english = document.getElementById("pay_type_english"); - pay_type_english.text("Cash"); - Element pay_money_english = document.getElementById("pay_money_english"); - pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_english = document.getElementById("pay_time_english"); - pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_english = document.getElementsByClass("driver_english"); - for (int i = 0; i < driver_english.size(); i++) { - Element element = driver_english.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_english = document.getElementById("cp_english"); - cp_english.text("Number Plate:" + car.getCarLicensePlate()); - Element pf_english = document.getElementById("pf_english"); - pf_english.text("Driver Rating:" + aDouble); - Element lc_english = document.getElementById("lc_english"); - lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes"); - Element start_time_english = document.getElementById("start_time_english"); - start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_english = document.getElementById("start_address_english"); - start_address_english.text(orderPrivateCar.getStartAddress()); - Element end_time_english = document.getElementById("end_time_english"); - end_time_english.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_english = document.getElementById("end_address_english"); - end_address_english.text(orderPrivateCar.getEndAddress()); - } - if(3 == language){ - document.getElementById("chinese").remove(); - document.getElementById("english").remove(); - Element title_french = document.getElementById("title_french"); - title_french.text("Vous consommez GHS " + orderPrivateCar.getPayMoney() + " sur votre commande i-go1 le " + sdf.format(orderPrivateCar.getTravelTime())); - Element xcf_french = document.getElementById("xcf_french"); - xcf_french.text("GHS " + orderPrivateCar.getOrderMoney()); - Element xj_french = document.getElementById("xj_french"); - xj_french.text("GHS " + orderPrivateCar.getOrderMoney()); - Element pay_type_french = document.getElementById("pay_type_french"); - pay_type_french.text("espèces"); - Element pay_money_french = document.getElementById("pay_money_french"); - pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); - Element pay_time_french = document.getElementById("pay_time_french"); - pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); - Elements driver_french = document.getElementsByClass("driver_french"); - for (int i = 0; i < driver_french.size(); i++) { - Element element = driver_french.get(i); - element.text(driver.getFirstName() + "." + driver.getLastName()); - } - Element cp_french = document.getElementById("cp_french"); - cp_french.text("Plaque d’immatriculation:" + car.getCarLicensePlate()); - Element pf_french = document.getElementById("pf_french"); - pf_french.text("Évaluation des pilotes: " + aDouble); - Element lc_french = document.getElementById("lc_french"); - lc_french.text("Kilométrage: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes"); - Element start_time_french = document.getElementById("start_time_french"); - start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime())); - Element start_address_french = document.getElementById("start_address_french"); - start_address_french.text(orderPrivateCar.getStartAddress()); - Element end_time_french = document.getElementById("end_time_french"); - end_time_french.text(sdf2.format(orderPrivateCar.getEndServiceTime())); - Element end_address_french = document.getElementById("end_address_french"); - end_address_french.text(orderPrivateCar.getEndAddress()); - } + new Thread(new Runnable() { + @Override + public void run() { + try { + String path = templatePath + "user/receipt.html"; + Document document = Jsoup.parse(new File(path), "UTF-8"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); + SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); + Car car = carMapper.selectById(orderPrivateCar.getCarId()); + Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); + Double aDouble = 0D; + if(null != orderPrivateCar.getDriverId()){ + aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId()); + } + Double aDouble1 = Double.valueOf(orderPrivateCar.getMileage() / 1000); + if(1 == language){ + document.getElementById("english").remove(); + document.getElementById("french").remove(); + Element title_chinese = document.getElementById("title_chinese"); + title_chinese.text(sdf.format(orderPrivateCar.getTravelTime()) + ",您在I-GO1个订单消费GHS " + orderPrivateCar.getPayMoney()); + Element xcf_chinese = document.getElementById("xcf_chinese"); + xcf_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_chinese = document.getElementById("xj_chinese"); + xj_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_chinese = document.getElementById("pay_type_chinese"); + pay_type_chinese.text(orderPrivateCar.getPayType() == 1 ? "手机" : "银行卡"); + Element pay_money_chinese = document.getElementById("pay_money_chinese"); + pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=1"); + Element lost_item_chinese = document.getElementById("lost_item_chinese"); + lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=1"); + Element track_chinese = document.getElementById("track_chinese"); + track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + id); + Element pay_time_chinese = document.getElementById("pay_time_chinese"); + pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_chinese = document.getElementsByClass("driver_chinese"); + for (int i = 0; i < driver_chinese.size(); i++) { + Element element = driver_chinese.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_chinese = document.getElementById("cp_chinese"); + cp_chinese.text("车牌:" + car.getCarLicensePlate()); + Element pf_chinese = document.getElementById("pf_chinese"); + pf_chinese.text("司机评分:" + aDouble); + Element lc_chinese = document.getElementById("lc_chinese"); + lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟"); + Element start_time_chinese = document.getElementById("start_time_chinese"); + start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_chinese = document.getElementById("start_address_chinese"); + start_address_chinese.text(orderPrivateCar.getStartAddress()); + Element end_time_chinese = document.getElementById("end_time_chinese"); + end_time_chinese.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_chinese = document.getElementById("end_address_chinese"); + end_address_chinese.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_chinese = document.getElementById("server_tel_chinese"); + server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(2 == language){ + document.getElementById("chinese").remove(); + document.getElementById("french").remove(); + Element title_english = document.getElementById("title_english"); + title_english.text(sdf.format(orderPrivateCar.getTravelTime()) + ",You spent GHS " + orderPrivateCar.getPayMoney() + " on the trip "); + Element xcf_english = document.getElementById("xcf_english"); + xcf_english.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_english = document.getElementById("xj_english"); + xj_english.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_english = document.getElementById("pay_type_english"); + pay_type_english.text(orderPrivateCar.getPayType() == 1 ? "Mobile" : "Bank card"); + Element pay_money_english = document.getElementById("pay_money_english"); + pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=1"); + Element lost_item_english = document.getElementById("lost_item_english"); + lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=1"); + Element track_english = document.getElementById("track_english"); + track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + id); + Element pay_time_english = document.getElementById("pay_time_english"); + pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_english = document.getElementsByClass("driver_english"); + for (int i = 0; i < driver_english.size(); i++) { + Element element = driver_english.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_english = document.getElementById("cp_english"); + cp_english.text("Number Plate:" + car.getCarLicensePlate()); + Element pf_english = document.getElementById("pf_english"); + pf_english.text("Driver Rating:" + aDouble); + Element lc_english = document.getElementById("lc_english"); + lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes"); + Element start_time_english = document.getElementById("start_time_english"); + start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_english = document.getElementById("start_address_english"); + start_address_english.text(orderPrivateCar.getStartAddress()); + Element end_time_english = document.getElementById("end_time_english"); + end_time_english.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_english = document.getElementById("end_address_english"); + end_address_english.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_english = document.getElementById("server_tel_english"); + server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(3 == language){ + document.getElementById("chinese").remove(); + document.getElementById("english").remove(); + Element title_french = document.getElementById("title_french"); + title_french.text("Vous consommez GHS " + orderPrivateCar.getPayMoney() + " sur votre commande i-go1 le " + sdf.format(orderPrivateCar.getTravelTime())); + Element xcf_french = document.getElementById("xcf_french"); + xcf_french.text("GHS " + orderPrivateCar.getOrderMoney()); + Element xj_french = document.getElementById("xj_french"); + xj_french.text("GHS " + orderPrivateCar.getOrderMoney()); + Element pay_type_french = document.getElementById("pay_type_french"); + pay_type_french.text(orderPrivateCar.getPayType() == 1 ? "Mobile" : "Carte bancaire"); + Element pay_money_french = document.getElementById("pay_money_french"); + pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=1"); + Element lost_item_french = document.getElementById("lost_item_french"); + lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=1"); + Element track_french = document.getElementById("track_french"); + track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + id); + Element pay_time_french = document.getElementById("pay_time_french"); + pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); + Elements driver_french = document.getElementsByClass("driver_french"); + for (int i = 0; i < driver_french.size(); i++) { + Element element = driver_french.get(i); + element.text(driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_french = document.getElementById("cp_french"); + cp_french.text("Plaque d’immatriculation:" + car.getCarLicensePlate()); + Element pf_french = document.getElementById("pf_french"); + pf_french.text("Évaluation des pilotes: " + aDouble); + Element lc_french = document.getElementById("lc_french"); + lc_french.text("Kilométrage: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes"); + Element start_time_french = document.getElementById("start_time_french"); + start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime())); + Element start_address_french = document.getElementById("start_address_french"); + start_address_french.text(orderPrivateCar.getStartAddress()); + Element end_time_french = document.getElementById("end_time_french"); + end_time_french.text(sdf2.format(orderPrivateCar.getEndServiceTime())); + Element end_address_french = document.getElementById("end_address_french"); + end_address_french.text(orderPrivateCar.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_french = document.getElementById("server_tel_french"); + server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } - EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", document.html()); + EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", document.html()); + + //开始生成pdf收据和html收据 + File file = new File("/usr/local/nginx/html/files/html/"); + if(!file.exists()){ + file.mkdirs(); + } + file = new File("/usr/local/nginx/html/files/html/ride_receipt_" + id + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + FileInputStream fileInputStream = new FileInputStream(file); + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/ride_receipt_" + id + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream); + + + String link ="http://182.160.16.251:81/files/html/ride_receipt_" + id + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setName( language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride"); + tEmail.setUserId(userInfo.getId()); + tEmail.setType(1); + tEmail.setOrderId(id); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + tEmail.setWeek(EmailUtil.getWeek(language,i)); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée"); + }else { + tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi"); + } + emailService.insert(tEmail); + + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); } @@ -1715,8 +2058,15 @@ pageNum = (pageNum - 1) * size; List<Map<String, Object>> maps = orderPrivateCarMapper.queryMyOrderList(uid, pageNum, size); for(Map<String, Object> map : maps){ - if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ + Integer orderId = Integer.valueOf(String.valueOf(map.get("orderId"))); + Integer state = Integer.valueOf(String.valueOf(map.get("state"))); + if(state == 11){ map.put("state", map.get("oldState")); + } + if(state == 8 || state == 9){ + map.put("receipt", "http://182.160.16.251:81/files/html/ride_receipt_" + orderId + ".html"); + }else{ + map.put("receipt", ""); } } return maps; @@ -1732,12 +2082,13 @@ @Override public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception { Map<String, Object> map = orderPrivateCarMapper.queryOrderInfo(orderId); + Integer state = Integer.valueOf(String.valueOf(map.get("state"))); if(null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2){//改派完成,重新获取了新的司机数据,开始修改数据防止继续调用 OrderPrivateCar orderPrivateCar = this.selectById(orderId); orderPrivateCar.setReassignNotice(0); this.updateById(orderPrivateCar); } - if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ + if(state == 11){ map.put("state", map.get("oldState")); } if(Integer.valueOf(String.valueOf(map.get("state"))) != 8 && Integer.valueOf(String.valueOf(map.get("state"))) != 9){ @@ -1765,6 +2116,11 @@ String driverId = redisUtil.getValue("DEVICE_" + map.get("driverId")); map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); map.put("orderType", 1); + if(state == 8 || state == 9){ + map.put("receipt", "http://182.160.16.251:81/files/html/ride_receipt_" + orderId + ".html"); + }else{ + map.put("receipt", ""); + } return map; } -- Gitblit v1.7.1