Просмотр исходного кода

增加财务中心体现管理和保证金管理导出

wanxl 1 год назад
Родитель
Сommit
f2e557e8e0

+ 5 - 0
src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java

@@ -3,12 +3,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.modules.app.entity.UserMoneyDetails;
+import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+import com.sqx.modules.pay.vo.CashOutVO;
 import com.sqx.modules.pay.vo.WalletDetailVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @Mapper
 public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
@@ -30,4 +33,6 @@ public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
     IPage<WalletDetailVO> walletDetailList(@Param("page") Page<UserMoneyDetails> pages, @Param("query") WalletDetailQuery query);
 
     BigDecimal walletDetailStatistics(@Param("query") WalletDetailQuery query);
+
+    List<WalletDetailVO> excelWalletDetails(@Param("query") WalletDetailQuery query);
 }

+ 9 - 0
src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.entity.UserMoneyDetails;
+import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+import com.sqx.modules.utils.excel.ExcelData;
 
 import java.math.BigDecimal;
 
@@ -29,4 +31,11 @@ public interface UserMoneyDetailsService extends IService<UserMoneyDetails> {
      * @return
      */
     BigDecimal walletDetailStatistics(WalletDetailQuery query);
+
+    /**
+     * 钱包明细导出
+     * @param query
+     * @return
+     */
+    ExcelData excelWalletDetails(WalletDetailQuery query);
 }

+ 44 - 0
src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java

@@ -9,11 +9,18 @@ import com.sqx.common.utils.Result;
 import com.sqx.modules.app.dao.UserMoneyDetailsDao;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
+import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+import com.sqx.modules.pay.vo.CashOutVO;
 import com.sqx.modules.pay.vo.WalletDetailVO;
+import com.sqx.modules.utils.excel.ExcelData;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao, UserMoneyDetails> implements UserMoneyDetailsService {
@@ -77,4 +84,41 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
         BigDecimal result = baseMapper.walletDetailStatistics(query);
         return result;
     }
+
+    @Override
+    public ExcelData excelWalletDetails(WalletDetailQuery query) {
+        List<WalletDetailVO> walletDetailVOS = baseMapper.excelWalletDetails(query);
+        ExcelData data = new ExcelData();
+        data.setName("保证金记录");
+        data.setTitles(WalletDetailExportTitle());
+        List<List<Object>> rows = new ArrayList<>();
+        for (WalletDetailVO walletDetailVO:walletDetailVOS ){
+            List<Object> row = new ArrayList<>();
+            row.add(walletDetailVO.getId());
+            row.add(walletDetailVO.getShopName());
+            row.add(walletDetailVO.getContent());
+            if ("1".equals(walletDetailVO.getType())){
+                row.add("充值");
+            }else if("2".equals(walletDetailVO.getType())){
+                row.add("提现");
+            }else{
+                row.add("");
+            }
+            row.add(walletDetailVO.getCreateTime());
+            row.add(walletDetailVO.getMoney());
+            rows.add(row);
+        }
+        data.setRows(rows);
+        return data;
+    }
+
+    private List<String> WalletDetailExportTitle() {
+        return Arrays.asList(
+                "编号",
+                "店铺名称",
+                "保证金金额",
+                "类别",
+                "提现时间",
+                "金额");
+    }
 }

+ 53 - 1
src/main/java/com/sqx/modules/exportExecl/controller/ExportExeclController.java

@@ -12,6 +12,8 @@ import com.sqx.modules.exportExecl.mapper.ExportJobMapper;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.service.ExportJobService;
 import com.sqx.modules.order.dao.AppOrderDao;
+import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
+import com.sqx.modules.pay.controller.query.WalletDetailQuery;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -88,7 +90,7 @@ public class ExportExeclController {
                 +riderPhone+","+startTime+","+endTime+","+payStartTime+","+payEndTime);
         LocalDateTime localDateTime = LocalDateTime.now();
         String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
-        exportJob.setFileName(time+"订单列表.xlsx");
+        exportJob.setFileName((int) (Math.random() * 100) +time+"订单列表.xlsx");
         exportJob.setUserId(userId);
         exportJob.setCreateTime(new Date());
         exportJob.setUpdateTime(new Date());
@@ -127,6 +129,56 @@ public class ExportExeclController {
             return Result.error("新增导出计划失败");
         }
     }
+
+    @GetMapping("excelPayouts")
+    @ApiOperation("提现管理导出")
+    public Result excelPayouts(CashOutQueryDTO queryDTO) throws Exception{
+        if(queryDTO.getUserId()==null){
+            return Result.error("用户id不能为空");
+        }
+        ExportJob exportJob =new ExportJob();
+        exportJob.setFlag(0);
+        exportJob.setFileType("payouts");
+        exportJob.setConditionDetail(queryDTO.toStrMessage());
+        exportJob.setConditions(queryDTO.toStrCode());
+        LocalDateTime localDateTime = LocalDateTime.now();
+        String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+        exportJob.setFileName(time+"提现管理.xlsx");
+        exportJob.setCreateTime(new Date());
+        exportJob.setUpdateTime(new Date());
+        exportJob.setUserId(queryDTO.getUserId()+"");
+        int a=exportJobMapper.insert(exportJob);
+        if (a==1){
+            return Result.success("新增提现管理导出计划成功");
+        }else{
+            return Result.error("新增提现管理导出计划失败");
+        }
+    }
+
+    @GetMapping("excelDeposit")
+    @ApiOperation("导出保证金记录")
+    public Result excelDeposit(WalletDetailQuery queryDTO) throws Exception{
+        if(queryDTO.getUserId()==null){
+            return Result.error("用户id不能为空");
+        }
+        ExportJob exportJob =new ExportJob();
+        exportJob.setFlag(0);
+        exportJob.setFileType("deposit");
+        exportJob.setConditionDetail(queryDTO.toStrMessage());
+        exportJob.setConditions(queryDTO.toStrCode());
+        LocalDateTime localDateTime = LocalDateTime.now();
+        String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+        exportJob.setFileName(time+"保证金记录.xlsx");
+        exportJob.setCreateTime(new Date());
+        exportJob.setUpdateTime(new Date());
+        exportJob.setUserId(queryDTO.getUserId()+"");
+        int a=exportJobMapper.insert(exportJob);
+        if (a==1){
+            return Result.success("新增保证金记录导出计划成功");
+        }else{
+            return Result.error("新增保证金记录导出计划失败");
+        }
+    }
     //    任意文件读取/下载
     @ApiOperation(value = "查询下载列表")
     @GetMapping("listByUser")

+ 1 - 1
src/main/java/com/sqx/modules/exportExecl/model/ExportJob.java

@@ -59,7 +59,7 @@ public class ExportJob implements Serializable {
     @ApiModelProperty(value = "文件大小")
     private String fileSize;
 
-    @ApiModelProperty(value = "状态 0待导出 1导出已完成 2导出失败")
+    @ApiModelProperty(value = "状态 0待导出 1导出已完成 2导出失败 -1 导出中")
     private Integer flag;
 
 

+ 47 - 0
src/main/java/com/sqx/modules/pay/controller/query/CashOutQueryDTO.java

@@ -4,6 +4,7 @@ import com.sqx.common.query.PageQuery;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.util.StringUtils;
 
 /**
  * 提现信息查询dto
@@ -37,4 +38,50 @@ public class CashOutQueryDTO extends PageQuery {
     private String startTime;
     @ApiModelProperty("查询结束时间")
     private String endTime;
+
+    public String toStrCode() {
+        return
+//                ","+bankCardNo+
+//                ","+bankRealName+
+//                ","+openBank+
+                ","+zhifubaoName+
+                ","+zhifubao+
+                ","+shopName+
+//                ","+userId+
+                ","+state+
+//                ","+phone+
+                ","+type+
+//                ","+classify+
+                ","+startTime+
+                ","+endTime+",";
+    }
+    public String toStrMessage() {
+        StringBuffer stringBuffer=new StringBuffer();
+
+        stringBuffer
+//                .append(bankCardNo==null||bankCardNo==""?"":"银行卡号:"+bankCardNo+";")
+//                .append(bankRealName==null||bankRealName==""?"":"银行卡户主名称:"+bankRealName+";")
+//                .append(openBank==null||openBank==""?"":"银行卡开户行:"+openBank+";")
+                .append(zhifubaoName==null||zhifubaoName==""?"":"支付宝名称:"+zhifubaoName+";")
+                .append(zhifubao==null||zhifubao==""?"":"支付宝账号:"+zhifubao+";")
+                .append(shopName==null||shopName==""?"":"店铺名称:"+shopName+";")
+//                .append(phone==null||phone==""?"":"用户手机号:"+phone+";")
+//                .append(classify==null?"":"支付渠道:"+classify+";")
+                .append(startTime==null||startTime==""?"":"开始时间:"+startTime+";")
+                .append(endTime==null||endTime==""?"":"结束时间:"+endTime+";");
+        if(state!=null){
+            switch (state){
+                case 0: stringBuffer.append("状态:待转账;");
+                case 1: stringBuffer.append("状态:已转账;");
+                case 2: stringBuffer.append("状态:已拒绝;");
+            }
+        }
+        if(StringUtils.hasText(type)){
+            switch (type){
+                case "1": stringBuffer.append("状态:用户提现;");
+                case "2": stringBuffer.append("状态:退保证金;");
+            }
+        }
+        return stringBuffer.toString();
+    }
 }

+ 35 - 2
src/main/java/com/sqx/modules/pay/controller/query/WalletDetailQuery.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.util.StringUtils;
 
 import java.util.Date;
 
@@ -26,9 +27,41 @@ public class WalletDetailQuery extends PageQuery {
 
     @ApiModelProperty("查询开始时间, 时间格式yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date startTime;
+    private String startTime;
 
     @ApiModelProperty("查询截止时间, 时间格式yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date endTime;
+    private String endTime;
+
+    @ApiModelProperty("登录人id")
+    private String userId;
+
+    public String toStrMessage() {
+        StringBuilder stringBuilder=new StringBuilder();
+        stringBuilder.append(StringUtils.hasText(shopName)?"":"店铺名称:"+shopName+";")
+                .append(StringUtils.hasText(startTime)?"":"开始时间:"+startTime+";")
+                .append(StringUtils.hasText(endTime)?"":"截止时间:"+endTime+";");
+        if(StringUtils.hasText(type)){
+            switch (type){
+                case "1": stringBuilder.append("状态:充值;");
+                case "2": stringBuilder.append("状态:提现;");
+            }
+        }
+        if(StringUtils.hasText(classify)){
+            switch (classify){
+                case "1": stringBuilder.append("明细类别:骑手保证金;");
+                case "2": stringBuilder.append("明细类别:商户保证金;");
+                case "3": stringBuilder.append("明细类别:钱包明细;");
+            }
+        }
+        return stringBuilder.toString();
+    }
+
+    public String toStrCode() {
+        return ","+shopName
+                +","+type
+                +","+classify
+                +","+startTime
+                +","+endTime+",";
+    }
 }

+ 45 - 2
src/main/java/com/sqx/scheduler/export/ExportScheduler.java

@@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.sqx.common.utils.SftpUtil;
 import com.sqx.modules.app.entity.RechargeRecord;
 import com.sqx.modules.app.service.RechargeRecordService;
+import com.sqx.modules.app.service.UserMoneyDetailsService;
 import com.sqx.modules.common.service.CommonInfoService;
 import com.sqx.modules.exportExecl.mapper.ExportJobMapper;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.service.ExportJobService;
 import com.sqx.modules.order.service.AppOrderService;
+import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
+import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+import com.sqx.modules.pay.service.CashOutService;
 import com.sqx.modules.utils.excel.ExcelData;
 import com.sqx.modules.utils.excel.ExportExcelUtils;
 import com.sqx.scheduler.config.SchedulerLock;
@@ -55,6 +59,8 @@ public class ExportScheduler {
     private final AppOrderService appOrderService;
     private final RechargeRecordService rechargeRecordService;
     private final SftpUtil sftpUtil;
+    private final CashOutService cashOutService;
+    private final UserMoneyDetailsService userMoneyDetailsService;
 
 
     /**
@@ -62,8 +68,8 @@ public class ExportScheduler {
      * 每分钟运行一次
      */
     @Async
-    @Scheduled(cron = "18 */1 * * * ?", zone = "Asia/Shanghai")
-//    @GetMapping("excelOrder")
+//    @Scheduled(cron = "18 */1 * * * ?", zone = "Asia/Shanghai")
+    @GetMapping("excelOrder")
     public void orderExport() throws Exception {
         List<ExportJob> exportJobList=exportJobService.list(new QueryWrapper<ExportJob>()
                 .eq("flag",0).last("order by create_time limit 10"));
@@ -103,6 +109,12 @@ public class ExportScheduler {
                         excelData=getOrderExcelData(exportJob);
                     }else if("recharge".equals(fileType)){
                         excelData=getRechargeOrderExcelData(exportJob);
+                    }else if("payouts".equals(fileType)){
+                        excelData=getPayoutsExcelData(exportJob);
+                    }else if("deposit".equals(fileType)){
+                        excelData=getDepositExcelData(exportJob);
+                    }else{
+                        continue;
                     }
                     String value=commonInfoService.findOne(430).getValue();
                     ExportExcelUtils.writeExcel2(os,fileName,excelData);
@@ -216,4 +228,35 @@ public class ExportScheduler {
         data.setRows(rows);
         return data;
     }
+
+    //提现管理导出
+    private ExcelData getPayoutsExcelData(ExportJob exportJob){
+        String[] conditions=exportJob.getConditions().split(",",-1);
+        CashOutQueryDTO queryDTO =new CashOutQueryDTO();
+        queryDTO.setZhifubaoName(conditions[1]);
+        queryDTO.setZhifubao(conditions[2]);
+        queryDTO.setShopName(conditions[3]);
+        if(!"".equals(conditions[4])){
+            queryDTO.setState(Integer.valueOf(conditions[4]));
+        }
+        queryDTO.setType(conditions[5]);
+        queryDTO.setStartTime(conditions[6]);
+        queryDTO.setEndTime(conditions[7]);
+        ExcelData excelData = cashOutService.excelPayDetails(queryDTO);
+        return excelData;
+    }
+
+    //导出保证金记录
+    private ExcelData getDepositExcelData(ExportJob exportJob){
+        String[] conditions=exportJob.getConditions().split(",",-1);
+        WalletDetailQuery queryDTO =new WalletDetailQuery();
+        queryDTO.setShopName(conditions[1]);
+        queryDTO.setType(conditions[2]);
+        queryDTO.setClassify(conditions[3]);
+        queryDTO.setStartTime(conditions[4]);
+        queryDTO.setEndTime(conditions[5]);
+        ExcelData excelData = userMoneyDetailsService.excelWalletDetails(queryDTO);
+
+        return excelData;
+    }
 }

+ 17 - 0
src/main/resources/mapper/userMoney/UserMoneyDetailsMapper.xml

@@ -55,6 +55,23 @@
         order by umd.create_time desc
     </select>
 
+    <select id="excelWalletDetails" resultType="com.sqx.modules.pay.vo.WalletDetailVO">
+        select
+        umd.id,
+        gs.shop_name,
+        umd.title,
+        umd.content,
+        umd.type,
+        umd.classify,
+        umd.money,
+        umd.create_time
+        from
+        user_money_details umd
+        left join goods_shop gs on gs.shop_id = umd.shop_id
+        <include refid="walletQueryCondition"></include>
+        order by umd.create_time desc
+    </select>
+
     <select id="walletDetailStatistics" resultType="java.math.BigDecimal">
         select
             sum(o.amount)