From 0c9e25aff0133d05bdaca55d1369eb90342b0b05 Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期三, 24 五月 2023 08:55:04 +0800 Subject: [PATCH] broker 卡车公司端 --- src/main/java/com/stylefeng/guns/modular/system/controller/RatesController.java | 31 +++++ src/main/java/com/stylefeng/guns/modular/system/model/TDriverSelectVo.java | 3 src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java | 19 ++- src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java | 42 ++++++- src/main/java/com/stylefeng/guns/modular/system/model/TClaimVo.java | 2 src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml | 4 src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java | 2 src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java | 2 src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TClaimMapper.xml | 2 src/main/java/com/stylefeng/guns/modular/system/controller/IndexController.java | 2 src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java | 2 src/main/java/com/stylefeng/guns/modular/system/utils/PointInPolygon.java | 97 ++++++++++++++++ src/main/java/com/stylefeng/guns/modular/system/utils/AddressLookup.java | 61 ++++++++++ src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java | 2 src/main/java/com/stylefeng/guns/modular/api/ApiController.java | 8 src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java | 53 ++++++-- 16 files changed, 295 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/stylefeng/guns/modular/api/ApiController.java b/src/main/java/com/stylefeng/guns/modular/api/ApiController.java index 7274f75..47287f9 100644 --- a/src/main/java/com/stylefeng/guns/modular/api/ApiController.java +++ b/src/main/java/com/stylefeng/guns/modular/api/ApiController.java @@ -26,10 +26,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Random; +import java.util.*; /** * 接口控制器提供 @@ -70,6 +67,9 @@ if (user.size()==0) { return new ErrorTip(500, "Account password error!"); } + if(user.get(0).getExpirationTime().getTime()<new Date().getTime()){ + return new ErrorTip(500, "Account Expire!"); + } UserInfo userInfo = new UserInfo(); BeanUtils.copyProperties(user, userInfo); // String credentials = user.getPassword(); diff --git a/src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java b/src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java index ea901a2..3ff8cd1 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java +++ b/src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java @@ -10,10 +10,12 @@ import com.stylefeng.guns.modular.system.enums.UserFeeSettingEnum; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.utils.AddressLookup; import com.stylefeng.guns.modular.system.utils.ExcelUtil; import com.stylefeng.guns.modular.system.utils.GoogleMap.DistancematrixVo; import com.stylefeng.guns.modular.system.utils.GoogleMap.GeocodeVo; import com.stylefeng.guns.modular.system.utils.GoogleMap.GoogleMapUtil; +import com.stylefeng.guns.modular.system.utils.PointInPolygon; import com.stylefeng.guns.modular.system.utils.tips.ErrorTip; import com.stylefeng.guns.modular.system.utils.tips.SuccessTip; import io.swagger.annotations.Api; @@ -355,6 +357,7 @@ // 基础价格 String zipCode = demandDto.getZipCode(); + String address1 = AddressLookup.getAddress(zipCode); TCompanyBasic tCompanyBasic = companyBasicService.selectOne(new EntityWrapper<TCompanyBasic>().eq("port_id",ratesId).eq("zip_code", zipCode).eq("type", 1)); if(Objects.nonNull(tCompanyBasic)){ tCompanyResp=new TCompanyResp(); @@ -363,12 +366,39 @@ objects.add(tCompanyResp); }else { // 画圈 拿到的zipcode集合 去对比当前zipcode是否在集合中 - TCompanyBasic type = companyBasicService.selectOne(new EntityWrapper<TCompanyBasic>().eq("type", 2).eq("port_id",ratesId).like("zip_code", zipCode)); - if(Objects.nonNull(type)){ - tCompanyResp=new TCompanyResp(); - tCompanyResp.setPrice(type.getFee()); - tCompanyResp.setName("LH+FSC"); - objects.add(tCompanyResp); + // 画圈 拿到的zipcode集合 去对比当前zipcode是否在集合中 + List<TCompanyBasic> type = companyBasicService.selectList(new EntityWrapper<TCompanyBasic>().eq("type", 2).eq("port_id",ratesId).orderBy("fee",true)); + if(type.size()>0){ + GeocodeVo geocode1 = googleMapUtil.getGeocode(zipCode); + for (TCompanyBasic companyBasic : type) { + boolean inPolygon = PointInPolygon.isInPolygon(geocode1.getLat(), geocode1.getLng(), companyBasic.getLonLat()); + if(inPolygon){ + tCompanyResp=new TCompanyResp(); + tCompanyResp.setPrice(type.get(0).getFee()); + tCompanyResp.setName("LH+FSC"); + objects.add(tCompanyResp); + break; + } + } + if(tCompanyResp==null){ + // 距离 + tCompanyResp=new TCompanyResp(); + // 1条数据 不需要zipcode + DistancematrixVo distancematrix = googleMapUtil.getDistancematrix(address, address1); + double distance = distancematrix.getDistance().doubleValue(); + BigDecimal bigDecimal = new BigDecimal(distance * 0.0006214); + List<TCompanyBasic> type1 = companyBasicService.selectList(new EntityWrapper<TCompanyBasic>().eq("type", 3).eq("port_id",ratesId).le("start",bigDecimal.doubleValue()).orderBy("start",true)); + if(type1.size()>0) { + BigDecimal multiply = type1.get(0).getFee().multiply(bigDecimal); + tCompanyResp.setPrice(multiply); + tCompanyResp.setName("LH+FSC"); + objects.add(tCompanyResp); + }else { + tCompanyResp.setPrice(new BigDecimal(0)); + tCompanyResp.setName("LH+FSC"); + objects.add(tCompanyResp); + } + } }else { tCompanyResp=new TCompanyResp(); // 1条数据 不需要zipcode diff --git a/src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java b/src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java index f719f9c..ec41f12 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java +++ b/src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java @@ -151,6 +151,8 @@ @PostMapping(value = "/updatePrice") @ResponseBody public Object updatePrice(@RequestBody List<TPrice> prices,String note) { + String randomString = ToolUtil.getRandomString(15); + prices.forEach(e->e.setNumber(randomString)); priceService.insertBatch(prices); Long orderId = prices.get(0).getOrderId(); TOrder tOrder = orderService.selectById(orderId); diff --git a/src/main/java/com/stylefeng/guns/modular/system/controller/IndexController.java b/src/main/java/com/stylefeng/guns/modular/system/controller/IndexController.java index c71dc1e..23402d9 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/controller/IndexController.java +++ b/src/main/java/com/stylefeng/guns/modular/system/controller/IndexController.java @@ -36,7 +36,7 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(name = "time", value = "2000-01-01 - 2000-11-11", required = false, dataType = "String"), - @ApiImplicitParam(name = "id", value = "卡车公司id", required = true, dataType = "String"), + @ApiImplicitParam(name = "id", value = "卡车公司id", required = true, dataType = "int"), }) @GetMapping(value = "/index") @ResponseBody diff --git a/src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java b/src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java index 07f6f9d..7c0c9d5 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java +++ b/src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java @@ -142,6 +142,17 @@ return new SuccessTip(orderInfo); } + @ApiOperation(value = "订单详情--修改reference numbers",notes="订单详情--修改reference numbers") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + @PostMapping(value = "/updateReference") + @ResponseBody + public Object updateReference( TGoods tGoods) { + boolean b = goodsService.updateById(tGoods); + return new SuccessTip(); + } + @Resource private TTransportationService tTransportationService; @@ -178,10 +189,12 @@ if(driverIdOne!=null){ driverIds.add(driverIdOne); } - List<TTransportation> tTransportations = tTransportationService.selectList(new EntityWrapper<TTransportation>().eq("order_id", orderId).in("driver_id", driverIds)); + transportInfo.setShipmentDate(tOrder.getShipmentDate()); + List<TTransportation> tTransportations = tTransportationService.selectList(new EntityWrapper<TTransportation>().eq("order_id", orderId).in("driver_id", driverIds).orderBy("type")); for (TTransportation tDriver : tTransportations) { OrderDriverInfo orderDriverInfo = new OrderDriverInfo(); orderDriverInfo.setId(tDriver.getId()); + orderDriverInfo.setDriverId(tDriver.getDriverId()); if(tDriver.getId().equals(sDriverIdOne)&&tDriver.getType()==2){ orderDriverInfo.setPickUp(tDriver.getPickDate()); } @@ -315,11 +328,14 @@ List<TTransportation> list = companySelectDriverDto.getList(); tOrder.setsDriverid(list.get(0).getDriverId()); tOrder.setsDriverIdOne(list.get(1).getDriverId()); - tOrder.seteDriverid(list.get(2).getDriverId()); - tOrder.seteDriverIdOne(list.get(3).getDriverId()); + if(companySelectDriverDto.getStreetTurn()==1){ + tOrder.seteDriverid(list.get(2).getDriverId()); + tOrder.seteDriverIdOne(list.get(3).getDriverId()); + } tOrder.setTruckCompany(companySelectDriverDto.getTruckCompany()); tOrder.setPickupTimeTruck(companySelectDriverDto.getPickupTime()); tOrder.setStreetTurn(companySelectDriverDto.getStreetTurn()); + companySelectDriverDto.getList().forEach(e->e.setOrderId(orderId)); // 添加司机信息 tTransportationService.insertBatch(companySelectDriverDto.getList()); // 更改订单信息 @@ -345,17 +361,20 @@ // 找出这个订单 TOrder tOrder = orderService.selectById(orderId); List<TTransportation> list = companySelectDriverDto.getList(); + list.forEach(e->e.setOrderId(companySelectDriverDto.getOrderId())); tOrder.setsDriverid(list.get(0).getDriverId()); tOrder.setsDriverIdOne(list.get(1).getDriverId()); - tOrder.seteDriverid(list.get(2).getDriverId()); - tOrder.seteDriverIdOne(list.get(3).getDriverId()); + if(companySelectDriverDto.getStreetTurn()==1){ + tOrder.seteDriverid(list.get(2).getDriverId()); + tOrder.seteDriverIdOne(list.get(3).getDriverId()); + } tOrder.setTruckCompany(companySelectDriverDto.getTruckCompany()); tOrder.setPickupTimeTruck(companySelectDriverDto.getPickupTime()); tOrder.setStreetTurn(companySelectDriverDto.getStreetTurn()); // 删除原来的司机信息 tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId)); // 添加新司机信息 - tTransportationService.insertBatch(companySelectDriverDto.getList()); + tTransportationService.insertBatch(list); // 更改订单信息 orderService.updateById(tOrder); return new SuccessTip(); @@ -379,18 +398,19 @@ // 找出这个订单 TOrder tOrder = orderService.selectById(orderId); TTransportation list = companySelectDriverSingleDto.getList(); + list.setOrderId(companySelectDriverSingleDto.getOrderId()); Integer type = companySelectDriverSingleDto.getType(); if(type==1){ - tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverid())); + tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverid()).eq("type",1)); tOrder.setsDriverid(list.getDriverId()); }else if(type==2){ - tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverIdOne())); + tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverIdOne()).eq("type",2)); tOrder.setsDriverIdOne(list.getDriverId()); }else if(type==3){ - tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.geteDriverid())); + tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.geteDriverid()).eq("type",3)); tOrder.seteDriverid(list.getDriverId()); }else { - tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.geteDriverIdOne())); + tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.geteDriverIdOne()).eq("type",4)); tOrder.seteDriverIdOne(list.getDriverId()); } tTransportationService.insert(list); @@ -422,22 +442,22 @@ // 找出这个订单 TOrder tOrder = orderService.selectById(orderId); Integer type = companyLocationDto.getType(); - if(type==1){ - TTransportation tTransportation = tTransportationService.selectOne(new EntityWrapper<TTransportation>().eq("order_id", orderId).eq("driver_id", tOrder.getsDriverIdOne())); + if(type==2){ + TTransportation tTransportation = tTransportationService.selectOne(new EntityWrapper<TTransportation>().eq("order_id", orderId).eq("driver_id", tOrder.getsDriverIdOne()).eq("type",2)); if(tTransportation!=null){ Integer yardId = tTransportation.getYardId(); TYard tYard = yardService.selectById(yardId); return new SuccessTip(tYard); } - }else if(type==2){ - TTransportation tTransportation = tTransportationService.selectOne(new EntityWrapper<TTransportation>().eq("order_id", orderId).eq("driver_id", tOrder.geteDriverid())); + }else if(type==3){ + TTransportation tTransportation = tTransportationService.selectOne(new EntityWrapper<TTransportation>().eq("order_id", orderId).eq("driver_id", tOrder.geteDriverid()).eq("type",3)); if(tTransportation!=null) { Integer yardId = tTransportation.getYardId(); TYard tYard = yardService.selectById(yardId); return new SuccessTip(tYard); } - }else if(type==3){ - TTransportation tTransportation = tTransportationService.selectOne(new EntityWrapper<TTransportation>().eq("order_id", orderId).eq("driver_id", tOrder.geteDriverIdOne())); + }else if(type==4){ + TTransportation tTransportation = tTransportationService.selectOne(new EntityWrapper<TTransportation>().eq("order_id", orderId).eq("driver_id", tOrder.geteDriverIdOne()).eq("type",4)); if(tTransportation!=null) { Integer portId = tTransportation.getPortId(); TPort tPort = portService.selectById(portId); @@ -624,7 +644,6 @@ TOrder tOrder = orderService.selectById(orderId); // 根据订单获取报价 - map.put("invoice",tOrder.getInvoiceNumber()); map.put("pickUpDate",tOrder.getShipmentDate()); map.put("returnDate",tOrder.getOrderOkTime()); diff --git a/src/main/java/com/stylefeng/guns/modular/system/controller/RatesController.java b/src/main/java/com/stylefeng/guns/modular/system/controller/RatesController.java index 576591a..129b1ee 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/controller/RatesController.java +++ b/src/main/java/com/stylefeng/guns/modular/system/controller/RatesController.java @@ -18,6 +18,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -283,7 +284,37 @@ } + @ApiOperation(value = "卡车公司- 点对点/范围/距离详情",notes="卡车公司-点对点/范围/距离详情") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "int",paramType = "query"), + }) + @PostMapping(value = "/laneInfo") + @ResponseBody + public Object laneInfo( int id) { + TCompanyBasic tCompanyBasic = basicService.selectById(id); + HashMap<String, Object> map = new HashMap<>(); + map.put("data",tCompanyBasic); + + if(tCompanyBasic.getType()==2){ + String lonLat = tCompanyBasic.getLonLat(); + String[] split = lonLat.split("_"); + ArrayList<LonLat> lonLats = new ArrayList<>(); + for (String s : split) { + String[] split1 = s.split(","); + LonLat lonLat1 = new LonLat(); + lonLat1.setLat(split1[0]); + lonLat1.setLng(split1[1]); + lonLats.add(lonLat1); + } + map.put("lonlat",lonLats); + }else { + map.put("lonlat",new ArrayList<>()); + } + return new SuccessTip(map); + } @ApiOperation(value = "卡车公司- 添加点对点/范围/距离",notes="卡车公司-添加点对点/范围/距离") + @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) diff --git a/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TClaimMapper.xml b/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TClaimMapper.xml index e048c50..b473230 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TClaimMapper.xml +++ b/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TClaimMapper.xml @@ -47,7 +47,7 @@ t1.describe, t1.remark, t1.number, - t1.price,t1.order_id orderId + t1.price,t1.order_id orderId,t1.status FROM t_claim t1 LEFT JOIN t_company t2 on t1.trucking_company_id = t2.id where t1.id =#{id} </select> diff --git a/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml b/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml index 503cb11..c62711f 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml +++ b/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml @@ -65,8 +65,8 @@ order_id, file, name, - create_time - ) value (null ,#{orderId},#{url},#{name},now()) + create_time,category + ) value (null ,#{orderId},#{url},#{name},now(),4) </insert> <update id="agreePay"> diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java b/src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java index 8c7cf3b..f2d817d 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java +++ b/src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java @@ -27,4 +27,6 @@ private TPowerUnits chassiess; + private Integer driverId; + } diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java b/src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java index 1a5b4f2..9a2e529 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java +++ b/src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java @@ -78,4 +78,6 @@ private Integer state; + private Integer goodsId; + } diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/TClaimVo.java b/src/main/java/com/stylefeng/guns/modular/system/model/TClaimVo.java index 2611414..9eced13 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/model/TClaimVo.java +++ b/src/main/java/com/stylefeng/guns/modular/system/model/TClaimVo.java @@ -67,6 +67,8 @@ ) private Long orderId; + private Integer status; + } diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/TDriverSelectVo.java b/src/main/java/com/stylefeng/guns/modular/system/model/TDriverSelectVo.java index 447974b..24ac960 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/model/TDriverSelectVo.java +++ b/src/main/java/com/stylefeng/guns/modular/system/model/TDriverSelectVo.java @@ -25,6 +25,9 @@ @TableField("create_time") private Date createTime; + private String contactNumber; + + } diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java b/src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java index ece0afe..089a2e3 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java +++ b/src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java @@ -24,4 +24,6 @@ private Date pickupTime; private Integer streetTurn; + + private Date shipmentDate; } diff --git a/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java b/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java index d5beb48..ee0ad1b 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java +++ b/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java @@ -248,8 +248,12 @@ } // 获取卡车公司收入 Double companyIncome = this.baseMapper.getCompanyIncome(id, sTime, eTime); + if(companyIncome==null){ + indexInfo.setAccountsReceivable(new BigDecimal(0)); + }else { - indexInfo.setAccountsReceivable(new BigDecimal(companyIncome)); + indexInfo.setAccountsReceivable(new BigDecimal(companyIncome)); + } // 获取卡车公司支出-》 是否存在承运商 -》算价格 EntityWrapper<TOrder> wrapper = new EntityWrapper<>(); wrapper.eq("company_id",id); @@ -299,7 +303,7 @@ for (int i = 0; i <12; i++) { if(i==0){ IndexMonth indexMonth = new IndexMonth(); - int month = DateUtil.thisMonth(); + int month = DateUtil.thisMonth()+1; indexMonth.setMonth(month); indexMonth.setOrderNumber(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id).between("pay_time",DateUtil.beginOfMonth(new Date()),DateUtil.endOfMonth(new Date())))); indexMonths.add(indexMonth); @@ -307,7 +311,7 @@ IndexMonth indexMonth = new IndexMonth(); instance.add(Calendar.MONTH, -1); Date time1 = instance.getTime(); - int month = DateUtil.month(time1); + int month = DateUtil.month(time1)+1; indexMonth.setMonth(month); indexMonth.setOrderNumber(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id).between("pay_time",DateUtil.beginOfMonth(time1),DateUtil.endOfMonth(time1)))); indexMonths.add(indexMonth); @@ -364,7 +368,7 @@ } // 根据订单id 获取价格 - List<TPrice> prices = priceMapper.selectList(new EntityWrapper<TPrice>().eq("order_id", tOrder.getId())); + List<TPrice> prices = priceMapper.selectList(new EntityWrapper<TPrice>().eq("order_id", tOrder.getId()).eq("status",1)); ArrayList<TPriceVo> priceVos = new ArrayList<TPriceVo>(); for (TPrice price : prices) { @@ -485,9 +489,11 @@ if(!"0".equals(warehouse)){ TWarehouse tWarehouse = wareHouseMapper.selectList(new EntityWrapper<TWarehouse>().eq("company_id", tOrder.getCompanyId()).eq("code", warehouse)).get(0); orderInfo.setWareHouse(tWarehouse.getAddress()); + orderInfo.setEndAddress(tWarehouse.getAddress()); + }else { + // destination信息 + orderInfo.setEndAddress(tOrder.geteAddress()); } - // destination信息 - orderInfo.setEndAddress(tOrder.geteAddress()); orderInfo.setECompanyName(tOrder.geteCompanyName()); orderInfo.setEContactName(tOrder.geteName()); orderInfo.setEContactPhone(tOrder.getePhone()); @@ -501,6 +507,7 @@ ArrayList<String> strings = new ArrayList<>(); goods.forEach(e->{ strings.add(e.getContainerNumber()); + orderInfo.setGoodsId(e.getId()); orderInfo.setBl(e.getBillNumber()); }); orderInfo.setContainer(strings); diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/AddressLookup.java b/src/main/java/com/stylefeng/guns/modular/system/utils/AddressLookup.java new file mode 100644 index 0000000..45782f6 --- /dev/null +++ b/src/main/java/com/stylefeng/guns/modular/system/utils/AddressLookup.java @@ -0,0 +1,61 @@ +package com.stylefeng.guns.modular.system.utils; + +import com.google.maps.GeoApiContext; +import com.google.maps.GeocodingApi; +import com.google.maps.model.AddressComponent; +import com.google.maps.model.GeocodingResult; + +public class AddressLookup { + + public static String getAddress(String administrativeCode) { + GeoApiContext context = new GeoApiContext.Builder() + .apiKey("AIzaSyBBW0XxW1FK7IXmmS7KFtAjX3o99eFPsss") // REPLACE WITH YOUR API KEY + .build(); + + GeocodingResult[] results = GeocodingApi.geocode(context, "EN " + administrativeCode).awaitIgnoreError(); + + if (results == null || results.length == 0) { + return null; + } + + AddressComponent[] components = results[0].addressComponents; + String province = getComponent(components, "administrative_area_level_1"); + String city = getComponent(components, "locality"); + String district = getComponent(components, "administrative_area_level_3"); + String street = getComponent(components, "route"); + String number = getComponent(components, "street_number"); + + StringBuilder builder = new StringBuilder(); + + if (province != null) { + builder.append(province); + } + + if (city != null && !city.equals(province)) { + builder.append(city); + } + + if (district != null && !district.equals(city)) { + builder.append(district); + } + + if (street != null) { + builder.append(street); + } + + if (number != null) { + builder.append(number); + } + + return builder.toString(); + } + + private static String getComponent(AddressComponent[] components, String type) { + for (AddressComponent component : components) { + if (component.types[0].equals(type)) { + return component.longName; + } + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PointInPolygon.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PointInPolygon.java new file mode 100644 index 0000000..d61e7b9 --- /dev/null +++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PointInPolygon.java @@ -0,0 +1,97 @@ +package com.stylefeng.guns.modular.system.utils; + +import java.awt.geom.Point2D; +import java.util.ArrayList; +import java.util.List; + +public class PointInPolygon { + + /** + * 判断当前位置是否在多边形区域内 + * @param partitionLocation 区域顶点 + * @return + */ + public static boolean isInPolygon(double p_x,double p_y,String partitionLocation){ + Point2D.Double point = new Point2D.Double(p_x, p_y); + List<Point2D.Double> pointList= new ArrayList<Point2D.Double>(); + String[] strList = partitionLocation.split("_"); + for (String str : strList){ + String[] points = str.split(","); + double polygonPoint_x=Double.parseDouble(points[0]); + double polygonPoint_y=Double.parseDouble(points[1]); + Point2D.Double polygonPoint = new Point2D.Double(polygonPoint_x,polygonPoint_y); + pointList.add(polygonPoint); + } + return IsPtInPoly(point,pointList); + } + /** + * 判断点是否在多边形内,如果点位于多边形的顶点或边上,也算做点在多边形内,直接返回true + * @param point 检测点 + * @param pts 多边形的顶点 + * @return 点在多边形内返回true,否则返回false + */ + public static boolean IsPtInPoly(Point2D.Double point, List<Point2D.Double> pts){ + + int N = pts.size(); + boolean boundOrVertex = true; //如果点位于多边形的顶点或边上,也算做点在多边形内,直接返回true + int intersectCount = 0;//cross points count of x + double precision = 2e-10; //浮点类型计算时候与0比较时候的容差 + Point2D.Double p1, p2;//neighbour bound vertices + Point2D.Double p = point; //当前点 + + p1 = pts.get(0);//left vertex + for(int i = 1; i <= N; ++i){//check all rays + if(p.equals(p1)){ + return boundOrVertex;//p is an vertex + } + + p2 = pts.get(i % N); + if(p.x < Math.min(p1.x, p2.x) || p.x > Math.max(p1.x, p2.x)){ + p1 = p2; + continue; + } + + if(p.x > Math.min(p1.x, p2.x) && p.x < Math.max(p1.x, p2.x)){ + if(p.y <= Math.max(p1.y, p2.y)){ + if(p1.x == p2.x && p.y >= Math.min(p1.y, p2.y)){ + return boundOrVertex; + } + + if(p1.y == p2.y){ + if(p1.y == p.y){ + return boundOrVertex; + }else{//before ray + ++intersectCount; + } + }else{ + double xinters = (p.x - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y; + if(Math.abs(p.y - xinters) < precision){ + return boundOrVertex; + } + + if(p.y < xinters){ + ++intersectCount; + } + } + } + }else{ + if(p.x == p2.x && p.y <= p2.y){ + Point2D.Double p3 = pts.get((i+1) % N); + if(p.x >= Math.min(p1.x, p3.x) && p.x <= Math.max(p1.x, p3.x)){ + ++intersectCount; + }else{ + intersectCount += 2; + } + } + } + p1 = p2; + } + + if(intersectCount % 2 == 0){//偶数在多边形外 + return false; + } else { //奇数在多边形内 + return true; + } + } + +} -- Gitblit v1.7.1