From f9de931c4457c2a6bfe395879e3b2f2bfd7d9692 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期五, 26 五月 2023 16:55:34 +0800
Subject: [PATCH] 用户端代码

---
 src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java |  262 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 151 insertions(+), 111 deletions(-)

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 abbdcab..d5ab164 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
@@ -115,6 +115,17 @@
     @ResponseBody
     @Transactional(propagation = Propagation.REQUIRES_NEW)
     public Object addDemand(@RequestBody DemandDto demandDto) throws Exception {
+        Integer userId1 = demandDto.getUserId();
+
+        TUser tUser1 = userService.selectById(userId1);
+        if(tUser1.getPhone()==null){
+            return new ErrorTip(5008,"It is necessary to complete the information before issuing the quotation demand");
+        }
+
+
+        int breakNum=0;
+        // 计数
+        int count=0;
         Integer id = demandDto.getId();
         String s1 = System.currentTimeMillis() + ToolUtil.getRandomString(5);
         String s2 = System.currentTimeMillis() + ToolUtil.getRandomString(5);
@@ -223,6 +234,7 @@
         }else {
             List<TCompany> companies = companyService.selectList(new EntityWrapper<TCompany>().in("id", set));
             for (TCompany company : companies) {
+                breakNum=0;
                 TCompanyCalculationResp tCompanyCalculationResp = new TCompanyCalculationResp();
                 ArrayList<TOrder> tOrders = new ArrayList<>();
                 // 超重 价格
@@ -238,6 +250,9 @@
                 }
 
                 for (GoodsListDto goodsListDto : list1) {
+                    if(breakNum==1){
+                        break;
+                    }
                     ArrayList<TPrice> tPrices = new ArrayList<>();
                     // 生成订单
 //                    TOrder tOrder = new TOrder();
@@ -265,35 +280,92 @@
                     List<GoodsDto> list = goodsListDto.getList();
                     ArrayList<TGoods> tGoods1 = new ArrayList<>();
                     for (GoodsDto goodsDto : list) {
-
-                        // 生成订单
-                        TOrder tOrder = new TOrder();
-                        tOrder.setCity(city.getId());
-                        tOrder.setState(state.getId());
-                        tOrder.setUserId(demandDto.getUserId());
-                        tOrder.setAccessorial(demandDto.getAccessorial());
-                        tOrder.setAccessorialStr(demandDto.getAccessorialStr());
-                        tOrder.setPort(demandDto.getPortId());
-                        tOrder.setShipmentDate(demandDto.getShipmentDate());
-                        tOrder.setDeliveryDate(demandDto.getDeliveryDate());
-                        tOrder.seteZipZ(s1);
-                        tOrder.setCreateTime(new Date());
-                        tOrder.setStartLat("1");
-                        tOrder.setStartLon("1");
-                        tOrder.setDeliveryStr(demandDto.getDelivery());
-                        tOrder.setType(demandDto.getType());
-                        tOrder.setZipCode(demandDto.getZipCode());
-                        tOrder.seteAddress(demandDto.getZipCode());
-                        tOrder.setWarehouse(demandDto.getWarehouse());
-                        // TODO 未选择17  下一步选择
-                        tOrder.setStatus("17");
-                        tOrder.setInvoiceNumber(s2);
-                        tOrder.setCompanyId(company.getId());
-                        tOrder.setCreateTime(new Date());
-                        orderService.insert(tOrder);
-                        tOrders.add(tOrder);
-
                         TCompanyResp tCompanyResp = new TCompanyResp();
+                        if("0".equals(demandDto.getWarehouse())){
+                            tCompanyResp=new TCompanyResp();
+                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", demandDto.getDelivery())).getSetValue();
+                            tCompanyResp.setName(demandDto.getDelivery());
+                            tCompanyResp.setPrice(setValue1);
+                            objects.add(tCompanyResp);
+
+                            // 基础价格
+                            String zipCode = demandDto.getZipCode();
+                            // 地址信息
+                            String address1 = AddressLookup.getAddress(zipCode);
+
+                            List<TCompanyBasic> tCompanyBasic = companyBasicService.selectList(new EntityWrapper<TCompanyBasic>().eq("port_id",ratesId).eq("zip_code", zipCode).eq("type", 1));
+                            if(tCompanyBasic.size()>0){
+                                tCompanyResp=new TCompanyResp();
+                                tCompanyResp.setPrice(tCompanyBasic.get(0).getFee());
+                                tCompanyResp.setName("LH+FSC");
+                                objects.add(tCompanyResp);
+                            }else {
+                                // 画圈 拿到的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 {
+                                            breakNum=1;
+                                            count++;
+                                            break;
+                                        }
+                                    }
+                                }else {
+                                    // 距离
+                                    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 {
+                                        breakNum=1;
+                                        count++;
+                                        break;
+                                    }
+                                }
+                            }
+
+                        }else {
+                            tCompanyResp=new TCompanyResp();
+                            TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper<TWarehouse>().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId));
+                            tCompanyResp.setName(UserFeeSettingEnum.LH_FSH.getDesc());
+                            if(Objects.nonNull(tWarehouse)){
+                                tCompanyResp.setPrice(tWarehouse.getWarePrice());
+                            }else {
+                                tCompanyResp.setPrice(new BigDecimal("0"));
+                            }
+                            objects.add(tCompanyResp);
+                        }
+
                         // 是否超重
                         Integer weight = goodsDto.getWeight();
                         long between = DateUtil.between(demandDto.getShipmentDate(), demandDto.getDeliveryDate(), DateUnit.DAY);
@@ -367,90 +439,39 @@
                         }
 
 
-                        if("0".equals(demandDto.getWarehouse())){
-                            tCompanyResp=new TCompanyResp();
-                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", demandDto.getDelivery())).getSetValue();
-                            tCompanyResp.setName(demandDto.getDelivery());
-                            tCompanyResp.setPrice(setValue1);
-                            objects.add(tCompanyResp);
 
-                            // 基础价格
-                            String zipCode = demandDto.getZipCode();
-                            // 地址信息
-                            String address1 = AddressLookup.getAddress(zipCode);
-                            List<TCompanyBasic> tCompanyBasic = companyBasicService.selectList(new EntityWrapper<TCompanyBasic>().eq("port_id",ratesId).eq("zip_code", zipCode).eq("type", 1));
-                            if(tCompanyBasic.size()>0){
-                                tCompanyResp=new TCompanyResp();
-                                tCompanyResp.setPrice(tCompanyBasic.get(0).getFee());
-                                tCompanyResp.setName("LH+FSC");
-                                objects.add(tCompanyResp);
-                            }else {
-                                // 画圈 拿到的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
-                                    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();
-                            TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper<TWarehouse>().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId));
-                            tCompanyResp.setName(UserFeeSettingEnum.LH_FSH.getDesc());
-                            if(Objects.nonNull(tWarehouse)){
-                                tCompanyResp.setPrice(tWarehouse.getWarePrice());
-                            }else {
-                                tCompanyResp.setPrice(new BigDecimal("0"));
-                            }
-                            objects.add(tCompanyResp);
-                        }
                         BigDecimal bigDecimal = objects.stream().map(e -> e.getPrice()==null?new BigDecimal(0):e.getPrice()).reduce(BigDecimal::add).get();
+                        // 生成订单
+                        TOrder tOrder = new TOrder();
+                        tOrder.setCity(city.getId());
+                        tOrder.setState(state.getId());
+                        tOrder.setUserId(demandDto.getUserId());
+                        tOrder.setAccessorial(demandDto.getAccessorial());
+                        tOrder.setAccessorialStr(demandDto.getAccessorialStr());
+                        tOrder.setPort(demandDto.getPortId());
+                        tOrder.setShipmentDate(demandDto.getShipmentDate());
+                        tOrder.setDeliveryDate(demandDto.getDeliveryDate());
+                        tOrder.seteZipZ(s1);
+                        tOrder.setCreateTime(new Date());
+                        tOrder.setStartLat("1");
+                        tOrder.setStartLon("1");
+                        tOrder.setDeliveryStr(demandDto.getDelivery());
+                        tOrder.setType(demandDto.getType());
+                        tOrder.setZipCode(demandDto.getZipCode());
+                        if("0".equals(demandDto.getWarehouse())){
+                            tOrder.seteAddress(demandDto.getZipCode());
+                        }else {
+                            TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper<TWarehouse>().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId));
+                            tOrder.seteAddress(tWarehouse.getAddress());
+                        }
+
+                        tOrder.setWarehouse(demandDto.getWarehouse());
+                        tOrder.setStatus("17");
+                        tOrder.setInvoiceNumber(s2);
+                        tOrder.setCompanyId(company.getId());
+                        tOrder.setCreateTime(new Date());
+                        orderService.insert(tOrder);
+                        tOrders.add(tOrder);
                         tOrder.setAllTotal(bigDecimal);
                         orderService.updateById(tOrder);
                         objects.stream().forEach(e->e.setOrderId(tOrder.getId()));
@@ -538,12 +559,17 @@
                 }else {
                     String zipCode = demandDto.getZipCode();
 //                    GeocodeVo geocode1 = googleMapUtil.getGeocode(zipCode);
-//                    tCompanyCalculationResp.setEndLon(String.valueOf(geocode1.getLng()));
 //                    tCompanyCalculationResp.setEndLat(String.valueOf(geocode1.getLat()));
+//                    tCompanyCalculationResp.setEndLon(String.valueOf(geocode1.getLng()));
+                    tCompanyCalculationResp.setEndLat(String.valueOf(1));
+                    tCompanyCalculationResp.setEndLon(String.valueOf(1));
                     tCompanyCalculationRespList.add(tCompanyCalculationResp);
                 }
 
 
+            }
+            if(count==companies.size()){
+                return  new ErrorTip(5001,"No truck company was matched to meet the demand");
             }
 
         }
@@ -583,18 +609,32 @@
         List<TOrder> orders = orderService.selectList(new EntityWrapper<TOrder>().eq("e_zip_z", quote.getOrderId()).eq("status", 0));
         ArrayList<TGoods> goods = new ArrayList<>();
         BigDecimal bigDecimal = new BigDecimal(0);
+        ArrayList<TPrice> tPrices = new ArrayList<>();
         for (TOrder order : orders) {
             TGoods tGoods = goodsService.selectOne(new EntityWrapper<TGoods>().eq("order_id", order.getId()));
             goods.add(tGoods);
             bigDecimal=bigDecimal.add(order.getAllTotal());
+            List<TPrice> prices = priceService.selectList(new EntityWrapper<TPrice>().eq("order_id", order.getId()));
+            tPrices.addAll(prices);
         }
+        Map<String, BigDecimal> sumMap = tPrices.stream()
+                .collect(Collectors.groupingBy(TPrice::getType, Collectors.reducing(BigDecimal.ZERO, TPrice::getPrice, BigDecimal::add)));
+        List<PriceList> pricesList = sumMap.entrySet().stream()
+                .map(entry -> new PriceList(entry.getKey(), entry.getValue()))
+                .collect(Collectors.toList());
+        Integer userId = orders.get(0).getUserId();
+        TUser tUser = userService.selectById(userId);
+        String residueLimit = tUser.getResidueLimit();
         HashMap<String, Object> map = new HashMap<>();
         map.put("money",bigDecimal);
         map.put("data",goods);
+        map.put("residueLimit",residueLimit);
+        map.put("prices",pricesList);
         return new SuccessTip(map);
     }
 
 
+
     @ApiOperation(value = "发布需求-第二步/修改需求",notes="发布需求-第二步/修改需求")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),

--
Gitblit v1.7.1