diff --git a/db/1003pjcloudx_view.sql b/db/1003pjcloudx_view.sql new file mode 100644 index 000000000..c9448c588 --- /dev/null +++ b/db/1003pjcloudx_view.sql @@ -0,0 +1,43 @@ +CREATE OR REPLACE VIEW pjcloudx_wallet.v_mch_dept_tree AS +WITH RECURSIVE + root AS (SELECT m.dept_id AS root_dept_id, + m.id AS mch_id, + m.name AS mch_name + FROM pjcloudx_wallet.mch_manage AS m + JOIN pjcloudx.sys_dept AS d + ON d.dept_id = m.dept_id + AND d.del_flag = '0' + WHERE m.del_flag = '0' + AND m.types = '1'), + r (dept_id, parent_id, dept_name, root_dept_id, mch_id, mch_name, level) AS (SELECT d.dept_id, + d.parent_id, + d.name, + root.root_dept_id, + root.mch_id, + root.mch_name, + 0 + FROM pjcloudx.sys_dept AS d + JOIN root + ON root.root_dept_id = d.dept_id + WHERE d.del_flag = '0' + UNION ALL + SELECT c.dept_id, + c.parent_id, + c.name, + r.root_dept_id, + r.mch_id, + r.mch_name, + r.level + 1 + FROM pjcloudx.sys_dept AS c + JOIN r + ON c.parent_id = r.dept_id + WHERE c.del_flag = '0') +SELECT root_dept_id AS mchDeptId, + mch_id AS mchId, + mch_name AS mchName, + dept_id AS deptId, + parent_id AS parentId, + dept_name AS deptName, + level AS level +FROM r +ORDER BY mchDeptId, level, deptId; \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java index 76c8a076d..f6398a928 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java @@ -23,6 +23,11 @@ public class WalletTransactionDto extends WalletTransactionEntity implements Bas private Integer type; + /** + * 商户相关 + */ + private Long mchId; + /** * 用户id */ @@ -41,6 +46,8 @@ public class WalletTransactionDto extends WalletTransactionEntity implements Bas */ private Boolean isFindOrder = false; + private List totalDpetIds; + /** * 部门ids */ diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/WalletMchDeptViewDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/WalletMchDeptViewDto.java new file mode 100644 index 000000000..1f79560db --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/mch/WalletMchDeptViewDto.java @@ -0,0 +1,13 @@ +package com.bsd.pjcloud.wallet.api.dto.mch; + +import com.bsd.pjcloud.wallet.api.entity.mch.view.WalletMchDeptViewEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class WalletMchDeptViewDto extends WalletMchDeptViewEntity { + + private List mchIdList; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/view/WalletMchDeptViewEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/view/WalletMchDeptViewEntity.java new file mode 100644 index 000000000..3bc3ba566 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/view/WalletMchDeptViewEntity.java @@ -0,0 +1,48 @@ +package com.bsd.pjcloud.wallet.api.entity.mch.view; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 商户部门视图 + */ +@Data +@Schema(description = "商户部门视图") +public class WalletMchDeptViewEntity { + + /** + * 商户部门id + */ + private Long mchDeptId; + + /** + * 商户id + */ + private Long mchId; + + /** + * 商户名 + */ + private String mchName; + + /** + * 上级部门id + */ + private Long parentId; + + /** + * 部门id + */ + private Long deptId; + + /** + * 部门名 + */ + private String deptName; + + /** + * 层级 + */ + private Long level; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletCzTotalVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletCzTotalVo.java new file mode 100644 index 000000000..319a64956 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletCzTotalVo.java @@ -0,0 +1,55 @@ +package com.bsd.pjcloud.wallet.api.vo; + +import lombok.Data; + +@Data +public class WalletCzTotalVo { + + /** + * 商户id + */ + private Long mchId; + + /** + * 商户名 + */ + private String mchName; + + /** + * 部门id + */ + private Long deptId; + + /** + * 部门名 + */ + private String deptName; + + /** + * 充值金额 + */ + private Long price = 0L; + + private String priceStr; + + /** + * 充值人数 + */ + private Long personCount = 0L; + + private String personCountStr; + + /** + * 充值次数 + */ + private Long timeCount = 0L; + + private String timeCountStr; + + /** + * 导出相关 + */ + private Long lineNumber; + + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTypeCountVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTypeCountVo.java index c1cba5230..5bbb52ebd 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTypeCountVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletTypeCountVo.java @@ -5,6 +5,11 @@ import lombok.Data; @Data public class WalletTypeCountVo { + /** + * 部门id + */ + private Long deptId; + /** * 充值次数 */ @@ -15,4 +20,9 @@ public class WalletTypeCountVo { */ private Long priceTotal; + /** + * 充值人数 + */ + private Long personTotal; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/mch/WalletMchDeptViewVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/mch/WalletMchDeptViewVo.java new file mode 100644 index 000000000..3660267ae --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/mch/WalletMchDeptViewVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.vo.mch; + +import com.bsd.pjcloud.wallet.api.entity.mch.view.WalletMchDeptViewEntity; +import lombok.Data; + +@Data +public class WalletMchDeptViewVo extends WalletMchDeptViewEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java index 21d6c8edc..0b7e97d2c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java @@ -5,7 +5,6 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; -import com.bsd.pjcloud.common.data.datascope.DataScopeFuncEnum; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; @@ -15,6 +14,7 @@ import com.bsd.pjcloud.wallet.api.dto.WalletBalanceTransactionDto; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionSumAndCountDto; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletCzTotalVo; import com.bsd.pjcloud.wallet.api.vo.WalletTransactionSumAndCountVo; import com.bsd.pjcloud.wallet.api.vo.WalletTypeTotalVo; import com.bsd.pjcloud.wallet.api.vo.transaction.WalletTransactionVo; @@ -101,6 +101,42 @@ public class WalletTransactionController { return R.ok(walletTransactionService.scopePageList(page, dto, dataScope)); } + @Operation(summary = "后台充值统计", description = "后台充值统计") + @PostMapping("/page-cz-total") + public R> listCzTotal(@RequestBody WalletTransactionDto dto) { + dto.setBizTypes(WalletBizEnum.getTopUpCodes()); + dto.setType(WalletTransactionDto.TYPE_INCOME); + if (ObjectUtil.isNotEmpty(dto.getPrice())) { + dto.setPrice(dto.getPrice() * 100); + } + + DataScope dataScope = new DataScope(); + return R.ok(walletTransactionService.pageCzTotalList(dto, dataScope)); + } + + @Operation(summary = "后台充值统计(导出)", description = "后台充值统计(导出)") + @PostMapping("/export-cz-total") + public void exportCzTotal(HttpServletResponse response, @RequestBody WalletTransactionDto dto) { + dto.setBizTypes(WalletBizEnum.getTopUpCodes()); + dto.setType(WalletTransactionDto.TYPE_INCOME); + if (ObjectUtil.isNotEmpty(dto.getPrice())) { + dto.setPrice(dto.getPrice() * 100); + } + walletTransactionService.exportCzTotal(response, dto, null); + } + + @Operation(summary = "后台充值统计", description = "后台充值统计") + @PostMapping("/page-cz-dept-total") + public R> listDeptCzTotal(@RequestBody WalletTransactionDto dto) { + dto.setBizTypes(WalletBizEnum.getTopUpCodes()); + dto.setType(WalletTransactionDto.TYPE_INCOME); + if (ObjectUtil.isNotEmpty(dto.getPrice())) { + dto.setPrice(dto.getPrice() * 100); + } + DataScope dataScope = new DataScope(); + return R.ok(walletTransactionService.listDeptCzTotal(dto, dataScope)); + } + @Operation(summary = "后台记账扣款记录分页", description = "后台记账扣款记录分页") @PostMapping("/page-jz") public R pageJz(@ParameterObject Page page, @RequestBody WalletTransactionDto dto) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java index d5e25f9eb..81453e7b8 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java @@ -71,6 +71,8 @@ public interface WalletTransactionMapper extends PjcloudBaseMapper walletTypetotalByDept(@Param("dto") WalletTransactionDto dto, @Param("dataScope") DataScope dataScope); + default List scopeList(WalletTransactionDto dto, DataScope dataScope) { List list = selectListByScope(commonWrapperQuery(dto), dataScope); return BeanUtils.toBean(list, WalletTransactionVo.class); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/view/MchDeptViewMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/view/MchDeptViewMapper.java new file mode 100644 index 000000000..4184bd696 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/view/MchDeptViewMapper.java @@ -0,0 +1,17 @@ +package com.bsd.pjcloud.wallet.mapper.mch.view; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.dto.mch.WalletMchDeptViewDto; +import com.bsd.pjcloud.wallet.api.entity.mch.view.WalletMchDeptViewEntity; +import com.bsd.pjcloud.wallet.api.vo.mch.WalletMchDeptViewVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface MchDeptViewMapper { + + List selectList(@Param("dto") WalletMchDeptViewDto dto); + +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java index bfc27c7d1..939bc09b8 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java @@ -6,6 +6,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletCzTotalVo; import com.bsd.pjcloud.wallet.api.vo.WalletTypeTotalVo; import com.bsd.pjcloud.wallet.api.vo.transaction.WalletTransactionVo; import jakarta.servlet.http.HttpServletResponse; @@ -16,6 +17,16 @@ public interface WalletTransactionService extends IService scopePageList(Page page, WalletTransactionDto dto, DataScope dataScope); + /** + * 后台充值统计 + */ + List pageCzTotalList(WalletTransactionDto dto, DataScope dataScope); + + /** + * 后台充值统计(按照部门) + */ + List listDeptCzTotal(WalletTransactionDto dto, DataScope dataScope); + /** * 记账列表 */ @@ -57,4 +68,9 @@ public interface WalletTransactionService extends IService list); + + /** + * 后台充值统计(导出) + */ + void exportCzTotal(HttpServletResponse response, WalletTransactionDto dto, DataScope dataScope); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java index 8cace247f..dc6c7014b 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java @@ -21,21 +21,30 @@ import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.constant.mch.WalletMchSupType; +import com.bsd.pjcloud.wallet.api.dto.MchManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; +import com.bsd.pjcloud.wallet.api.dto.mch.WalletMchDeptViewDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import com.bsd.pjcloud.wallet.api.vo.WalletCzTotalVo; import com.bsd.pjcloud.wallet.api.vo.WalletTypeCountVo; import com.bsd.pjcloud.wallet.api.vo.WalletTypeTotalVo; +import com.bsd.pjcloud.wallet.api.vo.mch.WalletMchDeptViewVo; import com.bsd.pjcloud.wallet.api.vo.transaction.WalletTransactionVo; import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; import com.bsd.pjcloud.wallet.mapper.WalletTransactionMapper; import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; +import com.bsd.pjcloud.wallet.mapper.mch.view.MchDeptViewMapper; +import com.bsd.pjcloud.wallet.service.MchManageService; import com.bsd.pjcloud.wallet.service.WalletManageService; import com.bsd.pjcloud.wallet.service.WalletThirdZyService; import com.bsd.pjcloud.wallet.service.WalletTransactionService; @@ -74,6 +83,9 @@ public class WalletTransactionServiceImpl extends ServiceImpl pageCzTotalList(WalletTransactionDto dto, DataScope dataScope) { + List resultList = new ArrayList<>(); + // 查询食堂 + MchManageDto mchQueryDto = MchManageDto.builder().typesList(List.of(HardTypeEnum.SUPERMARKET.getType())).build(); + if (ObjectUtil.isNotEmpty(dto.getMchId())) { + mchQueryDto.setId(dto.getMchId()); + } + List list = mchManageService.list(mchQueryDto); + if (ObjectUtil.isEmpty(list)) return List.of(); + resultList = list.stream().map(item -> { + WalletCzTotalVo entity = new WalletCzTotalVo(); + entity.setMchId(item.getId()); + entity.setMchName(item.getName()); + entity.setDeptId(item.getDeptId()); + entity.setDeptName(item.getDeptName()); + return entity; + }).toList(); + // 查询食堂的充值情况 + WalletMchDeptViewDto query = new WalletMchDeptViewDto(); + query.setMchIdList(list.stream().map(MchManageVo::getId).toList()); + List mchDeptList = mchDeptViewMapper.selectList(query); + if (ObjectUtil.isEmpty(list)) return List.of(); + for (WalletCzTotalVo item : resultList) { + Long mchId = item.getMchId(); + List mchAllDeptIdList = mchDeptList.stream().filter(v -> ObjectUtil.equals(v.getMchId(), mchId)).map(WalletMchDeptViewVo::getDeptId).toList(); + if (ObjectUtil.isEmpty(mchAllDeptIdList)) continue; + + WalletTransactionDto totalQuery = BeanUtils.toBean(dto, WalletTransactionDto.class); + totalQuery.setTotalDpetIds(mchAllDeptIdList); + WalletTypeCountVo totalVo = baseMapper.walletTypetotal(totalQuery, null); + if (ObjectUtil.isEmpty(totalVo)) continue; + item.setPrice(totalVo.getPriceTotal()); + item.setPersonCount(totalVo.getPersonTotal()); + item.setTimeCount(totalVo.getTimeTotal()); + } + return resultList; + } + + /** + * 后台充值统计(按照部门) + */ + @Override + public List listDeptCzTotal(WalletTransactionDto dto, DataScope dataScope) { + List resultList = new ArrayList<>(); + // 查询食堂的充值情况 + WalletMchDeptViewDto query = new WalletMchDeptViewDto(); + query.setMchId(dto.getMchId()); + List mchDeptList = mchDeptViewMapper.selectList(query); + if (ObjectUtil.isEmpty(mchDeptList)) return List.of(); + resultList = mchDeptList.stream().map(item -> { + WalletCzTotalVo entity = new WalletCzTotalVo(); + entity.setMchId(item.getMchId()); + entity.setMchName(item.getMchName()); + entity.setDeptId(item.getDeptId()); + entity.setDeptName(item.getDeptName()); + return entity; + }).toList(); + // 查询部门的充值情况 + WalletTransactionDto totalQuery = BeanUtils.toBean(dto, WalletTransactionDto.class); + totalQuery.setTotalDpetIds(resultList.stream().map(WalletCzTotalVo::getDeptId).toList()); + List deptTotalList = baseMapper.walletTypetotalByDept(totalQuery, null); + + for (WalletCzTotalVo item : resultList) { + Long deptId = item.getDeptId(); + WalletTypeCountVo targetTotal = deptTotalList.stream().filter(v -> ObjectUtil.equals(v.getDeptId(), deptId)).findFirst().orElse(null); + if (ObjectUtil.isEmpty(targetTotal)) { + continue; + } + item.setPrice(targetTotal.getPriceTotal()); + item.setPersonCount(targetTotal.getPersonTotal()); + item.setTimeCount(targetTotal.getTimeTotal()); + } + return resultList; + } + /** * 记账列表 */ @@ -261,6 +352,56 @@ public class WalletTransactionServiceImpl extends ServiceImpl list = pageCzTotalList(dto, dataScope); + + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); + Map map = new HashMap(); + if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { + map.put("timeSpan", " 到 "); + map.put("startTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); + map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[1], DatePattern.NORM_DATETIME_PATTERN)); + } + if (ObjectUtil.isNotEmpty(list)) { + BigDecimal priceTotal = BigDecimal.ZERO; + BigDecimal personCountTotal = BigDecimal.ZERO; + BigDecimal timeCountTotal = BigDecimal.ZERO; + Long lineNumber = 1L; + for (WalletCzTotalVo v : list) { + v.setLineNumber(lineNumber); + lineNumber++; + if (ObjectUtil.isNotEmpty(v.getPrice())) { + priceTotal = priceTotal.add(BigDecimal.valueOf(v.getPrice())); + v.setPriceStr(BigDecimal.valueOf(v.getPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); + } + if (ObjectUtil.isNotEmpty(v.getPersonCount())) { + v.setPersonCountStr(v.getPersonCount().toString()); + personCountTotal = personCountTotal.add(BigDecimal.valueOf(v.getPersonCount())); + } + if (ObjectUtil.isNotEmpty(v.getTimeCount())) { + v.setTimeCountStr(v.getTimeCount().toString()); + timeCountTotal = timeCountTotal.add(BigDecimal.valueOf(v.getTimeCount())); + } + } + map.put("priceTotal", priceTotal.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); + map.put("personCountTotal", personCountTotal.toString()); + map.put("timeCountTotal", timeCountTotal.toString()); + } + excelWriter.fill(map, writeSheet); + excelWriter.fill(list, fillConfig, writeSheet); + } catch (IOException e) { + e.printStackTrace(); + log.error("|{}|后台充值统计(导出),dto:|{}|,fileName:|{}|,error:|{}|", TAG, JSON.toJSONString(dto), fileName, e.getMessage()); + } + } private void disposeList(List list, WalletTransactionDto dto) { if (ObjectUtil.isNotEmpty(list)) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/钱包充值统计.xlsx b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/钱包充值统计.xlsx new file mode 100644 index 000000000..0f6a7eaf2 Binary files /dev/null and b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/钱包充值统计.xlsx differ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml index dd6ab9665..a5844eccc 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml @@ -47,6 +47,9 @@ and a.dept_id = #{dto.deptId} + + and a.price = #{dto.price} + and a.price > 0 @@ -68,6 +71,12 @@ and a.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]} + + and a.dept_id IN + + #{v} + + @@ -224,7 +233,7 @@ + + \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml index a536907d5..d8304eb83 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml @@ -59,6 +59,9 @@ a.del_flag = 0 + + and a.id = #{dto.id} + and a.types = #{dto.types} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/view/MchDeptViewMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/view/MchDeptViewMapper.xml new file mode 100644 index 000000000..709f63c6e --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/view/MchDeptViewMapper.xml @@ -0,0 +1,55 @@ + + + + + + + select a.mchDeptId, + a.mchId, + a.mchName, + a.deptId, + a.parentId, + a.deptName, + a.level + + + + + and a.mchDeptId = #{dto.mchDeptId} + + + and a.mchId = #{dto.mchId} + + + and a.mchId IN + + #{v} + + + + and a.mchName like concat('%',#{dto.mchName},'%') + + + and a.deptId = #{dto.deptId} + + + and a.parentId = #{dto.parentId} + + + and a.deptName like concat('%',#{dto.deptName},'%') + + + and a.level = #{dto.level} + + + + + + \ No newline at end of file