فهرست منبع

添加内部地址导出接口

liu 9 ماه پیش
والد
کامیت
1addd9754f

+ 4 - 0
src/main/java/com/sqx/modules/address/dao/InsideAddressDao.java

@@ -9,6 +9,8 @@ import com.sqx.modules.address.vo.InsideAddressVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 内部地址 dao
  * @author codingliang
@@ -18,4 +20,6 @@ import org.apache.ibatis.annotations.Param;
 public interface InsideAddressDao extends BaseMapper<InsideAddress> {
 
     IPage<InsideAddressVO> selectPages(@Param("page") Page<InsideAddress> page, @Param("query") InsideAddressQuery query);
+
+    List<InsideAddressVO> exportShippingAddress(@Param("query") InsideAddressQuery query);
 }

+ 30 - 0
src/main/java/com/sqx/modules/address/query/InsideAddressQuery.java

@@ -1,9 +1,11 @@
 package com.sqx.modules.address.query;
 
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sqx.common.query.PageQuery;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.util.StringUtils;
 
 import java.util.Date;
 
@@ -31,4 +33,32 @@ public class InsideAddressQuery extends PageQuery {
     @ApiModelProperty("查询结束时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
+
+    @ApiModelProperty(value = "登录人id")
+    private String userId;
+
+    public String toStrMessage() {
+        StringBuilder stringBuilder=new StringBuilder();
+        stringBuilder
+                .append(StringUtils.hasText(addressDetail)?"地址详情:"+addressDetail+";":"")
+                .append(ObjectUtils.isNotEmpty(startTime) ?"查询开始时间:"+startTime+";":"")
+                .append(ObjectUtils.isNotEmpty(endTime)?"查询结束时间:"+endTime+";":"");
+        if(StringUtils.hasText(status)){
+            switch (status){
+                case "1": stringBuilder.append("状态:启用;");break;
+                case "0": stringBuilder.append("状态:禁用;");break;
+            }
+        }
+        return stringBuilder.toString();
+    }
+
+    public String toStrCode() {
+        return
+                ","+(addressDetail==null?"":addressDetail)
+                        +","+(status==null?"":status)
+                        +","+(stationId==null?"":stationId)
+                        +","+(startTime==null?"":startTime)
+                        +","+(endTime==null?"":endTime)
+                        +",";
+    }
 }

+ 3 - 0
src/main/java/com/sqx/modules/address/service/InsideAddressService.java

@@ -7,6 +7,7 @@ import com.sqx.modules.address.dto.InsideAddressDTO;
 import com.sqx.modules.address.entity.InsideAddress;
 import com.sqx.modules.address.query.InsideAddressQuery;
 import com.sqx.modules.address.vo.InsideAddressShortVO;
+import com.sqx.modules.address.vo.InsideAddressVO;
 
 import java.util.List;
 
@@ -53,4 +54,6 @@ public interface InsideAddressService extends IService<InsideAddress> {
      * @param query 导出查询参数
      */
     void exportData(InsideAddressQuery query);
+
+    List<InsideAddressVO> exportShippingAddress(InsideAddressQuery query);
 }

+ 5 - 0
src/main/java/com/sqx/modules/address/service/impl/InsideAddressServiceImpl.java

@@ -105,6 +105,11 @@ public class InsideAddressServiceImpl extends ServiceImpl<InsideAddressDao, Insi
         EasyExcelUtil.exportExcel(list, InsideAddressVO.class, "内部地址", "sheet1");
     }
 
+    @Override
+    public List<InsideAddressVO> exportShippingAddress(InsideAddressQuery query) {
+       return baseMapper.exportShippingAddress(query);
+    }
+
     private void checkAddressUnique(InsideAddressDTO insideAddressDTO) {
         long count = baseMapper.selectCount(new LambdaQueryWrapper<InsideAddress>()
                 .eq(InsideAddress::getAddressDetail, insideAddressDTO.getAddressDetail())

+ 25 - 0
src/main/java/com/sqx/modules/exportExecl/controller/ExportExeclController.java

@@ -8,6 +8,7 @@ import com.jcraft.jsch.SftpException;
 import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
 import com.sqx.common.utils.SftpUtil;
+import com.sqx.modules.address.query.InsideAddressQuery;
 import com.sqx.modules.common.service.CommonInfoService;
 import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
@@ -34,6 +35,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -293,4 +295,27 @@ public class ExportExeclController {
             return Result.error("新增对账导出计划失败");
         }
     }
+
+    @GetMapping("exportShippingAddress")
+    @ApiOperation("导出内部地址列表")
+    public Result exportShippingAddress(InsideAddressQuery queryDTO) {
+        if(!StringUtils.hasText(queryDTO.getUserId())){
+            return Result.error("用户id不能为空");
+        }
+        String strMessage=queryDTO.toStrMessage();
+        if(StringUtils.hasText(queryDTO.getStationId()+"")){
+            RiderStation riderStation=riderStationService.getById(queryDTO.getStationId());
+            if(riderStation!=null){
+                strMessage=strMessage+"站点:"+riderStation.getStationName()+";";
+            }
+        }
+        ExportJob exportJob =this.buildExportJob("收货地址管理.xlsx","shippingAddress",queryDTO.getUserId(),strMessage,queryDTO.toStrCode());
+        boolean a=exportJobService.save(exportJob);
+        if (a){
+            return Result.success("收货地址管理导出成功");
+        }else{
+            return Result.error("收货地址管理导出失败");
+        }
+    }
+
 }

+ 76 - 0
src/main/java/com/sqx/scheduler/export/ExportScheduler.java

@@ -1,7 +1,12 @@
 package com.sqx.scheduler.export;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.sqx.common.utils.Constant;
 import com.sqx.common.utils.SftpUtil;
+import com.sqx.modules.address.query.InsideAddressQuery;
+import com.sqx.modules.address.service.InsideAddressService;
+import com.sqx.modules.address.vo.InsideAddressVO;
 import com.sqx.modules.app.entity.RechargeRecord;
 import com.sqx.modules.app.service.RechargeRecordService;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
@@ -38,6 +43,9 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -67,6 +75,8 @@ public class ExportScheduler {
     private final DataCentreService dataCentreService;
     private final PlatformBillService platformBillService;
 
+    private final InsideAddressService insideAddressService;
+
 
     /**
      * 将所有超过失效时间的优惠券改为失效状态
@@ -130,7 +140,10 @@ public class ExportScheduler {
                         excelData=getShopBillExcelData(exportJob);
                     }else if("platformBill".equals(fileType)){
                         excelData=getPlatformBillExcelData(exportJob);
+                    }else if ("shippingAddress".equals(fileType)){
+                        excelData=getShippingAddressExcelData(exportJob);
                     }else{
+
                         continue;
                     }
                     String value=commonInfoService.findOne(430).getValue();
@@ -174,6 +187,69 @@ public class ExportScheduler {
         }
     }
 
+    private ExcelData getShippingAddressExcelData(ExportJob exportJob) {
+        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String[] conditions=exportJob.getConditions().split(",",-1);
+        InsideAddressQuery query = new InsideAddressQuery();
+        query.setAddressDetail(conditions[1]);
+        query.setStatus(conditions[2]);
+        if(!"".equals(conditions[3])){
+            query.setStationId(Long.valueOf(conditions[3]));
+        }
+        if(!"".equals(conditions[4])){
+            Date start = Date.from(LocalDateTime.parse(conditions[4], dateTimeFormatter1).atZone(ZoneId.systemDefault()).toInstant());
+            query.setStartTime(start);
+        }
+        if(!"".equals(conditions[5])){
+            Date end = Date.from(LocalDateTime.parse(conditions[5], dateTimeFormatter1).atZone(ZoneId.systemDefault()).toInstant());
+            query.setEndTime(end);
+        }
+
+        ExcelData data = new ExcelData();
+        data.setName("内部地址表");
+        List<String> titles = new ArrayList();
+        titles.add("编号");
+        titles.add("骑手站点");
+        titles.add("省");
+        titles.add("市");
+        titles.add("区/县");
+        titles.add("地址名");
+        titles.add("经度");
+        titles.add("纬度");
+        titles.add("地址配送费");
+        titles.add("排序");
+        titles.add("是否启用");
+        titles.add("创建时间");
+        data.setTitles(titles);
+
+        List<InsideAddressVO> recordList=insideAddressService.exportShippingAddress(query);
+        List<List<Object>> rows = new ArrayList<>();
+        for (int i = 0; i < recordList.size(); i++) {
+            InsideAddressVO record = recordList.get(i);
+            List<Object> row = new ArrayList<>();
+            row.add(i+1);
+            row.add(record.getStationName());
+            row.add(record.getProvince());
+            row.add(record.getCity());
+            row.add(record.getDistrict());
+            row.add(record.getAddressDetail());
+            row.add(record.getLng());
+            row.add(record.getLat());
+            row.add(record.getDeliveryFee());
+            row.add(record.getSort());
+            String status="禁用";
+            if (ObjectUtils.isNotEmpty(record.getStatus())) {
+                if ("1".equals(record.getStatus())) {
+                    status="启用";
+                }
+            }
+            row.add(status);
+            row.add(record.getCreateTime());
+            rows.add(row);
+        }
+        data.setRows(rows);
+        return data;
+    }
 
 
     //订单导出

+ 40 - 0
src/main/resources/mapper/address/InsideAddressDao.xml

@@ -42,4 +42,44 @@
         ORDER BY
             a.sort
     </select>
+    <select id="exportShippingAddress" resultType="com.sqx.modules.address.vo.InsideAddressVO">
+        SELECT
+        a.id,
+        a.create_time AS createTime,
+        a.update_time AS updateTime,
+        a.station_id AS stationId,
+        rs.station_name AS stationName,
+        a.delivery_fee AS deliveryFee,
+        a.province,
+        a.city,
+        a.district,
+        a.address_detail AS addressDetail,
+        a.lng,
+        a.lat,
+        a.status,
+        a.sort
+        FROM
+        inside_address a
+        LEFT JOIN
+        rider_station rs ON a.station_id = rs.id
+        WHERE
+        a.del_flag = '0'
+        <if test="query.addressDetail != null and query.addressDetail != ''">
+            AND a.address_detail LIKE CONCAT('%', #{query.addressDetail}, '%')
+        </if>
+        <if test="query.status != null and query.status != ''">
+            AND a.status = #{query.status}
+        </if>
+        <if test="query.stationId != null">
+            AND a.station_id = #{query.stationId}
+        </if>
+        <if test="query.startTime != null">
+            AND a.create_time &gt;= #{query.startTime}
+        </if>
+        <if test="query.endTime != null">
+            AND a.create_time &lt;= #{query.endTime}
+        </if>
+        ORDER BY
+        a.sort
+    </select>
 </mapper>