package com.stylefeng.guns.modular.system.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.util.ToolUtil; 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.ChassisRentalDaysUtil; 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; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * 控制器 * * @author fengshuonan * @Date 2022-12-28 09:33:09 */ @Controller @Api(tags = "主页") @RequestMapping("/api/demand") public class DemandController extends BaseController { @Autowired private ITOrderService orderService; @Autowired private ITCountryService service; @Autowired private ITPortService itPortService; @Autowired private IWarehouseService warehouseService; @Autowired private GoogleMapUtil googleMapUtil; @Autowired private ITCompanyServiceService tCompanyServiceService; @Autowired private ITCompanyService tCompanyService; @Autowired private ITCompanyBasicService companyBasicService; @Autowired private ITCompanyFeeSettingService companyFeeSettingService; @Autowired private ITPortService portService; @Autowired private ITQuoteService quoteService; @Autowired private ITGoodsService goodsService; @Autowired private ITRatesService ratesService; @Autowired private ITCountryService countryService; @Autowired private ITCompanyService companyService; @Autowired private ITPriceService priceService; @Autowired private ITUserService userService; @Autowired private ITGroupService groupService; @Autowired private ITUserFeeSettingService userFeeSettingService; @ApiOperation(value = "发布需求-第一步",notes="发布需求-第一步") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) @PostMapping(value = "/addDemand") @ResponseBody @Transactional(propagation = Propagation.REQUIRES_NEW) public Object addDemand(@RequestBody DemandDto demandDto) throws Exception { Integer id = demandDto.getId(); String s1 = System.currentTimeMillis() + ToolUtil.getRandomString(5); String s2 = System.currentTimeMillis() + ToolUtil.getRandomString(5); // 生成需求 TQuote tQuote = new TQuote(); tQuote.setCreateTime(new Date()); tQuote.setOrderId(s1); // 总重量 tQuote.setTotal(demandDto.getTotal()); tQuote.setState(0); tQuote.setUserId(demandDto.getUserId()); tQuote.setCreateId(id); quoteService.insert(tQuote); String accessorialStr = demandDto.getAccessorialStr(); String[] split = accessorialStr.split(","); // // // 找出目前公司是否符合添加的码头 // // 看当前码头是否为特殊码头 // // 找出当前码头所在的cityid TPort tPort1 = portService.selectById(demandDto.getPortId()); TCountry tCountry = countryService.selectById(tPort1.getCity()); Integer portId = demandDto.getPortId(); TPort tPort = itPortService.selectById(portId); String address = tPort.getAddress(); GeocodeVo geocode = googleMapUtil.getGeocode(address); List tCompanyCalculationRespList = new ArrayList<>(); // List collect1 = set.stream().filter(e -> e.equals(demandDto.getId())).collect(Collectors.toList()); TCompany company = companyService.selectById(demandDto.getId()); TCompanyCalculationResp tCompanyCalculationResp = new TCompanyCalculationResp(); ArrayList tOrders = new ArrayList<>(); // 超重 价格 ArrayList objects = new ArrayList<>(); List list1 = demandDto.getList(); // 判断是否特殊码头 TRates tRates1 = ratesService.selectOne(new EntityWrapper().eq("metro_id", demandDto.getPortId()).eq("type", 2).eq("company_id", company.getId())); int ratesId=0; if(tRates1!=null){ ratesId=tRates1.getId(); }else { TRates t = ratesService.selectOne(new EntityWrapper().eq("metro_id", tCountry.getId()).eq("type", 1).eq("company_id", company.getId())); ratesId=t.getId(); } for (GoodsListDto goodsListDto : list1) { ArrayList tPrices = new ArrayList<>(); List list = goodsListDto.getList(); for (TGoods e : list) { e.setShippingLine(goodsListDto.getShippingLine()); e.setCustRef(goodsListDto.getCustRef()); e.setEntry(goodsListDto.getEntry()); e.setOurRef(goodsListDto.getOurRef()); e.setPo(goodsListDto.getPo()); e.setSb(goodsListDto.getSb()); e.setBillNumber(goodsListDto.getBillNumber()); TOrder tOrder = new TOrder(); 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(String.valueOf(geocode.getLat())); tOrder.setStartLon(String.valueOf(geocode.getLng())); tOrder.setDeliveryStr(demandDto.getDelivery()); tOrder.setType(demandDto.getType()); tOrder.setZipCode(demandDto.getZipCode()); tOrder.setWarehouse(demandDto.getWarehouse()); tOrder.setStatus("0"); tOrder.setInvoiceNumber(s2); tOrder.setCompanyId(company.getId()); tOrder.setCreateTime(new Date()); tOrder.setsName(demandDto.getContactName()); tOrder.setsEmail(demandDto.getContactEmail()); tOrder.setsPhone(demandDto.getContactPhone()); tOrder.seteCompanyName(demandDto.getECompanyName()); tOrder.seteName(demandDto.getEContactName()); tOrder.seteEmail(demandDto.getEContactEmail()); tOrder.setePhone(demandDto.getEContactPhone()); if("0".equals(demandDto.getWarehouse())){ tOrder.seteAddress(demandDto.getEAddress()); }else { TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId)); tOrder.seteAddress(tWarehouse.getAddress()); } tOrder.setOrderType(1); orderService.insert(tOrder); tOrders.add(tOrder); e.setOrderId(tOrder.getId()); TCompanyResp tCompanyResp = new TCompanyResp(); // 是否超重 Integer weight = goodsListDto.getWeight(); String arg1 = tPort.getName(); String arg2=""; if(!"0".equals(demandDto.getWarehouse())){ System.out.println("公司id:"+company.getId()); System.out.println("公司ratesId:"+ratesId); TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId)); if(tWarehouse==null){ return "Please set the relevant price first"; } arg2=tWarehouse.getZipCode(); }else { arg2 = demandDto.getZipCode(); } System.out.println("arg2:"+arg2); DistancematrixVo distancematrix = googleMapUtil.getDistancematrix(tPort.getAddress(), arg2); String arg3=String.valueOf(distancematrix.getDistance()/1609); String arg4= demandDto.getList().get(0).getShippingLine(); String arg5 = demandDto.getType(); TGoods goodsDto1 = demandDto.getList().get(0).getList().get(0); String arg6 =goodsDto1.getSize()+"ft"; String arg7="None"; String arg8 = goodsDto1.getKg(); System.out.println("参数:"+arg1+"|"+arg2+"|"+arg3+"|"+arg4+"|"+arg5+"|"+arg6+"|"+arg7+"|"+arg8); BigDecimal days = new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(1, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)).setScale(0, RoundingMode.HALF_UP); // 相差天数 // long between = DateUtil.between(demandDto.getShipmentDate(), demandDto.getDeliveryDate(), DateUnit.DAY); if(weight==1){ TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.OVERWEIGHT.getDesc())); tCompanyResp.setName(UserFeeSettingEnum.OVERWEIGHT.getDesc()); if(feeSetting==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { tCompanyResp.setPrice(feeSetting.getSetValue()); } objects.add(tCompanyResp); TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", "trl-axle chassis")); tCompanyResp=new TCompanyResp(); tCompanyResp.setName(UserFeeSettingEnum.CHASSIS_FEE.getDesc()); if(feeSetting1==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { tCompanyResp.setPrice(feeSetting1.getSetValue().multiply(days)); tCompanyResp.setDay(days.toString()); } objects.add(tCompanyResp); }else { tCompanyResp=new TCompanyResp(); tCompanyResp.setName(UserFeeSettingEnum.CHASSIS_FEE.getDesc()); TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", "Pool chassis")); if(feeSetting==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days)); tCompanyResp.setDay(days.toString()); } objects.add(tCompanyResp); } // type if ("Live Unload".equals(demandDto.getType())) { // 计算当前公司的价格 tCompanyResp=new TCompanyResp(); TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.PREPULL.getDesc())); tCompanyResp.setName(UserFeeSettingEnum.PREPULL.getDesc()); if(feeSetting==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { tCompanyResp.setPrice(feeSetting.getSetValue()); } objects.add(tCompanyResp); } // 滞留费 tCompanyResp=new TCompanyResp(); TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.DETENTION_CONGESTION.getDesc())); tCompanyResp.setName(UserFeeSettingEnum.DETENTION_CONGESTION.getDesc()); if(feeSetting==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { days = new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(4, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)).setScale(0, RoundingMode.HALF_UP); tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days)); tCompanyResp.setDay(days.toString()); } objects.add(tCompanyResp); // 仓储费 tCompanyResp=new TCompanyResp(); days = new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(2, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)).add(new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(3, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8))).setScale(0, RoundingMode.HALF_UP); System.out.println("仓储费"+days); TCompanyFeeSetting storage = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.STORAGE.getDesc())); System.out.println(storage); if(storage!=null){ tCompanyResp.setName(UserFeeSettingEnum.STORAGE.getDesc()); tCompanyResp.setPrice(storage.getSetValue().multiply(days)); tCompanyResp.setDay(days.toString()); objects.add(tCompanyResp); }else { tCompanyResp.setName(UserFeeSettingEnum.STORAGE.getDesc()); tCompanyResp.setPrice(new BigDecimal(0)); objects.add(tCompanyResp); } if(goodsListDto.getDanger()==1){ tCompanyResp=new TCompanyResp(); TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.HAZMAT.getDesc())); tCompanyResp.setName(UserFeeSettingEnum.HAZMAT.getDesc()); if(feeSetting1==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { tCompanyResp.setPrice(feeSetting1.getSetValue()); } objects.add(tCompanyResp); } if(demandDto.getUrgent()==1){ tCompanyResp=new TCompanyResp(); TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.URGENT_SEE.getDesc())); tCompanyResp.setName(UserFeeSettingEnum.URGENT_SEE.getDesc()); if(feeSetting1==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { tCompanyResp.setPrice(feeSetting1.getSetValue()); } objects.add(tCompanyResp); } if(demandDto.getPiperpass()==1){ tCompanyResp=new TCompanyResp(); TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.PIERPASS.getDesc())); tCompanyResp.setName(UserFeeSettingEnum.PIERPASS.getDesc()); if(feeSetting1==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { tCompanyResp.setPrice(feeSetting1.getSetValue()); } objects.add(tCompanyResp); } if(demandDto.getCTF()==1){ tCompanyResp=new TCompanyResp(); TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.CTF.getDesc())); tCompanyResp.setName(UserFeeSettingEnum.CTF.getDesc()); if(feeSetting1==null){ tCompanyResp.setPrice(new BigDecimal(0)); }else { tCompanyResp.setPrice(feeSetting1.getSetValue()); } objects.add(tCompanyResp); } if("0".equals(demandDto.getWarehouse())){ tCompanyResp=new TCompanyResp(); TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", demandDto.getDelivery())); if(feeSetting1!=null){ tCompanyResp.setName(demandDto.getDelivery()); tCompanyResp.setPrice(feeSetting1.getSetValue()); }else { tCompanyResp.setName(demandDto.getDelivery()); tCompanyResp.setPrice(new BigDecimal(0)); } objects.add(tCompanyResp); // 基础价格 String zipCode = demandDto.getZipCode(); String address1 = AddressLookup.getAddress(zipCode); TCompanyBasic tCompanyBasic = companyBasicService.selectOne(new EntityWrapper().eq("port_id",ratesId).eq("zip_code", zipCode).eq("type", 1)); if(Objects.nonNull(tCompanyBasic)){ tCompanyResp=new TCompanyResp(); tCompanyResp.setPrice(tCompanyBasic.getFee()); tCompanyResp.setName("LH+FSC"); objects.add(tCompanyResp); }else { // 画圈 拿到的zipcode集合 去对比当前zipcode是否在集合中 // 画圈 拿到的zipcode集合 去对比当前zipcode是否在集合中 List type = companyBasicService.selectList(new EntityWrapper().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(companyBasic.getFee()); tCompanyResp.setName("LH+FSC"); objects.add(tCompanyResp); break; } } if(tCompanyResp==null){ // 距离 tCompanyResp=new TCompanyResp(); // 1条数据 不需要zipcode DistancematrixVo distancematrix2 = googleMapUtil.getDistancematrix(address, address1); double distance = distancematrix2.getDistance().doubleValue(); BigDecimal bigDecimal = new BigDecimal(distance * 0.0006214); List type1 = companyBasicService.selectList(new EntityWrapper().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 TCompanyBasic type1 = companyBasicService.selectOne(new EntityWrapper().eq("type", 3).eq("port_id",ratesId)); if(type1!=null) { DistancematrixVo distancematrix1 = googleMapUtil.getDistancematrix(address, type1.getAddress()); double distance = distancematrix1.getDistance().doubleValue(); BigDecimal bigDecimal = new BigDecimal(distance * 0.0006214); BigDecimal multiply = type1.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().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(e1 -> e1.getPrice()).reduce(BigDecimal::add).get(); tOrder.setAllTotal(bigDecimal); tOrder.setPayMoney(bigDecimal); orderService.updateById(tOrder); objects.stream().forEach(e2->e2.setOrderId(tOrder.getId())); for (TCompanyResp object : objects) { TPrice tPrice = new TPrice(); tPrice.setCreateTime(new Date()); tPrice.setOrderId(object.getOrderId()); tPrice.setState("1"); tPrice.setPrice(object.getPrice()); tPrice.setCarPrice(object.getPrice()); tPrice.setType(object.getName()); tPrice.setDay(object.getDay()); tPrices.add(tPrice); } priceService.insertBatch(tPrices); } goodsService.insertBatch(list); } tCompanyCalculationResp.setOrderList(tOrders); tCompanyCalculationResp.setList(objects); tCompanyCalculationResp.setCarGoNumber(String.valueOf(company.getMcNumber())); tCompanyCalculationResp.setCompanyId(company.getId()); tCompanyCalculationResp.setCompanyName(company.getName()); tCompanyCalculationResp.setImg(company.getHeadImg()); tCompanyCalculationResp.setExpirationDate(company.getExpirationTime()); // 起点经纬度 tCompanyCalculationResp.setStartLon(String.valueOf(1)); tCompanyCalculationResp.setStartLat(String.valueOf(1)); // 目的地经纬度 if(!"0".equals(demandDto.getWarehouse())){ TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId)); GeocodeVo geocode1 = googleMapUtil.getGeocode(tWarehouse.getAddress()); tCompanyCalculationResp.setEndLon(String.valueOf(geocode1.getLng())); tCompanyCalculationResp.setEndLat(String.valueOf(geocode1.getLat())); tCompanyCalculationRespList.add(tCompanyCalculationResp); }else { String zipCode = demandDto.getZipCode(); GeocodeVo geocode1 = googleMapUtil.getGeocode(AddressLookup.getAddress(zipCode)); tCompanyCalculationResp.setEndLon(String.valueOf(geocode1.getLng())); tCompanyCalculationResp.setEndLat(String.valueOf(geocode1.getLat())); tCompanyCalculationRespList.add(tCompanyCalculationResp); } for (TCompanyCalculationResp tCompanyCalculationResp1 : tCompanyCalculationRespList) { tCompanyCalculationResp1.setQuoteId(tQuote.getId()); } return new SuccessTip(tCompanyCalculationRespList); } @ApiOperation(value = "发布需求-第二步/修改需求",notes="发布需求-第二步/修改需求") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) @PostMapping(value = "/updateDemandTwo") @ResponseBody public Object updateDemandTwo(@RequestBody DemandTwoDto demandDtoTwo) { Set integers = new HashSet<>(); for (DemandDtoTwo dtoTwo : demandDtoTwo.getDemandDtoTwo()) { List list = dtoTwo.getList(); for (TGoods tGoods : list) { integers.add(tGoods.getOrderId()); } goodsService.updateBatchById(list); } List orders = new ArrayList<>(); for (DemandDtoTwo dtoTwo : demandDtoTwo.getDemandDtoTwo()) { TOrder tOrder = new TOrder(); BeanUtil.copyProperties(dtoTwo,tOrder); orders.add(tOrder); } List tUserFeeSettings =null; Long next = integers.iterator().next(); TOrder tOrder1 = orderService.selectById(next); Integer userId = tOrder1.getUserId(); TUser tUser = userService.selectById(userId); if(tUser.getGroupId()!=null){ TGroup tGroup = groupService.selectById(tUser.getGroupId()); tUserFeeSettings = userFeeSettingService.selectList(new EntityWrapper().eq("user_id", tGroup.getSalesId())); } for (Long order : integers) { TOrder tOrder = orderService.selectById(order); String s = tOrder.geteZipZ(); TQuote quote = quoteService.selectOne(new EntityWrapper().eq("order_id", s)); quote.setState(1); quoteService.updateById(quote); tOrder.setStatus("0"); BigDecimal bigDecimal = new BigDecimal(0); // 通过每个订单 找出当前的用户的sale 找出提成算出应给卡车公司的价格 List prices = priceService.selectList(new EntityWrapper().eq("order_id", order)); if(tUserFeeSettings!=null){ for (TUserFeeSetting tUserFeeSetting : tUserFeeSettings) { for (TPrice price : prices) { if(tUserFeeSetting.getName().equals(price.getType())){ double v = (double) tUserFeeSetting.getFee() / 100; BigDecimal multiply = price.getPrice().multiply(new BigDecimal(v)); BigDecimal subtract = price.getPrice().subtract(multiply); bigDecimal = bigDecimal.add(subtract); }else { bigDecimal = bigDecimal.add(price.getPrice()); } } } } tOrder.setPayMoney(bigDecimal); orderService.updateById(tOrder); } return new SuccessTip(); } @ApiOperation(value = "发布需求-第二步-通过订单id查询货物",notes="发布需求-第二步-通过订单id查询货物") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) @PostMapping(value = "/queryDemandTwo") @ResponseBody public Object queryDemandTwo(@RequestBody String ids) { List strings = Arrays.asList(ids.split(",")); List goods = goodsService.selectList(new EntityWrapper().in("order_id", strings)); return new SuccessTip(goods); } @ApiOperation(value = "需求列表",notes="需求列表") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) @PostMapping(value = "/queryDemandList") @ResponseBody public Object queryDemandList( @RequestBody QueryDemandListDto queryDemandListDto ) { Page objectPage = new Page<>(queryDemandListDto.getPageNumber(),queryDemandListDto.getPageSize()); List list = new ArrayList<>(); list = quoteService.queryDemandList(objectPage,queryDemandListDto.getTime(),queryDemandListDto.getState(),queryDemandListDto.getUserId(),queryDemandListDto.getAccount()); objectPage.setRecords(list); return new SuccessTip(objectPage); } @ApiOperation(value = "需求列表导出",notes="需求列表导出") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) @GetMapping(value = "/demandListExport") @ResponseBody public Object demandListExport( String time,Integer state,Integer userId,String account, HttpServletResponse response ) { List list = new ArrayList<>(); list = quoteService.queryDemandListExport(time,state,userId,account); try { Date date = new Date(); DateFormat format = new SimpleDateFormat("yyyyMMdd"); String time1 = format.format(date); String fileName = "Quote"+time1+".xls"; String[] title = new String[] {"ID","CUSTOMER","PICKUP DATE","ORIGIN","DESTINATION", "LOAD","STATE"}; String[][] values = new String[list.size()][]; for (int i = 0; i < list.size(); i++) { DemandListVo d = list.get(i); values[i] = new String[title.length]; values[i][0] = d.getId().toString(); values[i][1] = d.getUserCompanyName()+"、"+d.getUserId(); values[i][2] = d.getPickupDate()==null?"":d.getPickupDate().toString(); values[i][3] = d.getOrigin(); values[i][4] = d.getDestination(); values[i][5] = d.getWeight(); values[i][6] = d.getState()==0?"In quotation":(d.getState()==1?"Pending payment":"canceled"); } HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Quote"+time1, title, values, null); this.setResponseHeader(response, fileName); OutputStream os = response.getOutputStream(); wb.write(os); os.flush(); os.close(); } catch (Exception e) { e.printStackTrace(); return new ErrorTip(5001,"ERROR"); } return SUCCESS_TIP; } private void setResponseHeader(HttpServletResponse response, String fileName) { try { /*try { fileName = new String(fileName.getBytes(), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }*/ response.setContentType("application/octet-stream;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1")); response.addHeader("Pargam", "no-cache"); response.addHeader("Cache-Control", "no-cache"); } catch (Exception ex) { ex.printStackTrace(); } } @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 = "Long"), }) @PostMapping(value = "/deleteDemand") @ResponseBody public Object deleteDemand( Long id ) { TQuote tQuote = quoteService.selectById(id); tQuote.setState(3); quoteService.updateById(tQuote); return new SuccessTip(); } @ApiOperation(value = "获取state",notes="获取state") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(name = "name", value = "state name", required = false, dataType = "String"), }) @GetMapping(value = "/getState") @ResponseBody public Object getState( String name) { EntityWrapper tCountryEntityWrapper = new EntityWrapper<>(); tCountryEntityWrapper.eq("type",2).eq("remove",0); if(Objects.nonNull(name)){ tCountryEntityWrapper.like("name",name); } List tCountries = service.selectList(tCountryEntityWrapper); return new SuccessTip(tCountries); } @ApiOperation(value = "获取city",notes="获取city") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(name = "name", value = "city name", required = false, dataType = "String"), @ApiImplicitParam(name = "id", value = "state id", required = true, dataType = "String"), }) @GetMapping(value = "/getCity") @ResponseBody public Object getState( String name,Integer id) { EntityWrapper tCountryEntityWrapper = new EntityWrapper<>(); tCountryEntityWrapper.eq("type",3).eq("remove",0).eq("parent_id",id); if(Objects.nonNull(name)){ tCountryEntityWrapper.like("name",name); } List tCountries = service.selectList(tCountryEntityWrapper); return new SuccessTip(tCountries); } @ApiOperation(value = "获取port",notes="获取port") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(name = "name", value = "port name", required = false, dataType = "String"), @ApiImplicitParam(name = "id", value = "city id", required = true, dataType = "String"), }) @GetMapping(value = "/getPort") @ResponseBody public Object getPort( String name,Integer id) { EntityWrapper wrapper = new EntityWrapper<>(); wrapper.eq("remove",0).eq("city",id); if(Objects.nonNull(name)){ wrapper.like("name",name); } List tCountries = itPortService.selectList(wrapper); return new SuccessTip(tCountries); } @ApiOperation(value = "获取亚马逊仓库",notes="获取亚马逊仓库") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(name = "address", value = "address", required = false, dataType = "String"), @ApiImplicitParam(name = "pageNumber", value = "pageNumber", required = true, dataType = "String"), @ApiImplicitParam(name = "pageSize", value = "pageSize", required = true, dataType = "String"), @ApiImplicitParam(name = "portId", value = "portId", required = true, dataType = "int"), @ApiImplicitParam(name = "companyId", value = "companyId", required = true, dataType = "int"), }) @GetMapping(value = "/getWarehouse") @ResponseBody public Object getWarehouse( String address,int pageNumber,int pageSize,int portId,int companyId) { TRates tRates1 = ratesService.selectOne(new EntityWrapper().eq("metro_id", portId).eq("type", 2).eq("company_id", companyId)); int ratesId=0; if(tRates1!=null){ ratesId=tRates1.getId(); }else { // 找出city TPort tPort = portService.selectById(portId); TCountry tCountry = countryService.selectById(tPort.getCity()); // 是否是符合的港区 tRates1 = ratesService.selectOne(new EntityWrapper().eq("metro_id", tCountry.getId()).eq("type", 1).eq("company_id", companyId)); if(tRates1!=null){ ratesId=tRates1.getId(); }else { ratesId=-1; } // ratesId=tCountry.getId(); } Page tWarehousePage = new Page<>(pageNumber, pageSize); EntityWrapper tWarehouseEntityWrapper = new EntityWrapper<>(); tWarehouseEntityWrapper.eq("company_id",companyId); tWarehouseEntityWrapper.eq("port_id",ratesId); tWarehouseEntityWrapper.gt("ware_price",0); if(Objects.nonNull(address)){ tWarehouseEntityWrapper.like("code",address); } Page tWarehousePage1 = warehouseService.selectPage(tWarehousePage, tWarehouseEntityWrapper); return new SuccessTip(tWarehousePage1); } @ApiOperation(value = "获取服务",notes="获取服务") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) @GetMapping(value = "/getServices") @ResponseBody public Object getServices() { List companyServiceList = tCompanyServiceService.selectList(new EntityWrapper().eq("company_id", 2)); return new SuccessTip(companyServiceList); } @ApiOperation(value = "根据需求id获取需求",notes="根据需求id获取需求") @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 = "Long"), }) @GetMapping(value = "/getQuotaFromId") @ResponseBody public Object getQuotaFromId(Long id) { TCompanyCalculationRespOne list =tCompanyService.getQuotaFromId(id); return new SuccessTip(list); } @ApiOperation(value = "根据需求id获取需求-选择公司",notes="根据需求id获取需求-选择公司") @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 = "Long"), @ApiImplicitParam(name = "companyId", value = "companyId", required = true, dataType = "int"), }) @GetMapping(value = "/getQuotaFromIdAndCompanyId") @ResponseBody public Object getQuotaFromIdAndCompanyId(Long id,Integer companyId) { TCompanyCalculationRespOne list =tCompanyService.getQuotaFromIdAndCompanyId(id,companyId); return new SuccessTip(list); } @ApiOperation(value = "根据亚马逊code获取地址",notes="根据亚马逊code获取地址") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(name = "code", value = "code", required = true, dataType = "String"), }) @GetMapping(value = "/getWarehouseFromCode") @ResponseBody public Object getWarehouseFromCode(String code) { TWarehouse tWarehouse = warehouseService.selectList(new EntityWrapper().eq("code", code).eq("company_id", 0)).get(0); return new SuccessTip(tWarehouse.getAddress() ); } }