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.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.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.math.BigDecimal; 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 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(","); // Map map = new HashMap<>(split.length); // for (String s :split){ // map.put(s,s); // } // // List companyServiceList = new ArrayList<>(); // // // for (Map.Entry entry : map.entrySet()) { // companyServiceList.addAll(tCompanyServiceService.selectList(new EntityWrapper() // .eq("service_name", entry.getKey()).ne("service_value", 0))); // } // // // TODO size 是否包含 收费 收费站、收费基础 // // // 根据公司id去重 // List companyServices = companyServiceList.stream().collect(Collectors. // collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(TCompanyService::getCompanyId))),ArrayList::new)); // // 拿出符合规则的公司id // List companyIds = companyServices.stream().map(TCompanyService::getCompanyId).collect(Collectors.toList()); // // List tCompanyList = new ArrayList<>(); // for (Integer companyId : companyIds) { // List collect = companyServiceList.stream().filter(company -> company.getCompanyId().equals(companyId)).collect(Collectors.toList()); // if(map.size() == collect.size()){ // // 找出符合规则的公司 // TCompany company = tCompanyService.selectOne(new EntityWrapper().eq("status", 1) // .eq("id",companyId)); // if(Objects.nonNull(company)){ // tCompanyList.add(company); // } // } // } // // // 符合规则的公司id集合 // List companyIdList = tCompanyList.stream().map(TCompany::getId).collect(Collectors.toList()); // // HashSet set = new HashSet<>(); // // // 找出目前公司是否符合添加的码头 // // 看当前码头是否为特殊码头 // // 找出当前码头所在的cityid TPort tPort1 = portService.selectById(demandDto.getPortId()); TCountry tCountry = countryService.selectById(tPort1.getCity()); // List integers = Arrays.asList(demandDto.getPortId(), tCountry.getId()); // List tRates = ratesService.selectList(new EntityWrapper().in("metro_id", integers)); // // 满足码头的公司 // companyIdList.stream().forEach(t->{ // for (TRates tRate : tRates) { // if(tRate.getCompanyId().equals(t)){ // set.add(t); // } // } // }); 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 { ratesId=tCountry.getId(); } for (GoodsListDto goodsListDto : list1) { ArrayList tPrices = new ArrayList<>(); List list = goodsListDto.getList(); for (TGoods e : list) { 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("1"); tOrder.setStartLon("1"); 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.seteAddress(demandDto.getEAddress()); tOrder.setOrderType(1); orderService.insert(tOrder); tOrders.add(tOrder); e.setOrderId(tOrder.getId()); TCompanyResp tCompanyResp = new TCompanyResp(); // 是否超重 Integer weight = goodsListDto.getWeight(); // 相差天数 long between = DateUtil.between(demandDto.getShipmentDate(), demandDto.getDeliveryDate(), DateUnit.DAY); if(between==0){ between=1; } 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(new BigDecimal(between))); } 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(new BigDecimal(between))); } 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 { tCompanyResp.setPrice(feeSetting.getSetValue()); } 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(); BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper().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); 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(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 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 distancematrix = googleMapUtil.getDistancematrix(address, type1.getAddress()); double distance = distancematrix.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); 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.setType(object.getName()); 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 { // TODO String zipCode = demandDto.getZipCode(); // GeocodeVo geocode1 = googleMapUtil.getGeocode(zipCode); tCompanyCalculationResp.setEndLon(String.valueOf(1)); tCompanyCalculationResp.setEndLat(String.valueOf(1)); 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"), }) @GetMapping(value = "/getWarehouse") @ResponseBody public Object getWarehouse( String address,int pageNumber,int pageSize) { Page tWarehousePage = new Page<>(pageNumber, pageSize); EntityWrapper tWarehouseEntityWrapper = new EntityWrapper<>(); tWarehouseEntityWrapper.eq("company_id",0); if(Objects.nonNull(address)){ tWarehouseEntityWrapper.like("address",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() ); } }