diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 5adaa80db..52f9738f0 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -46,7 +46,7 @@ CREATE TABLE wallet_manage total_expense int DEFAULT 0 NOT NULL COMMENT '累计支出,单位分', total_recharge int DEFAULT 0 NOT NULL COMMENT '累计充值,单位分', freeze_price int DEFAULT 0 NOT NULL COMMENT '冻结金额,单位分', - is_freeze char(1) DEFAULT '0' NOT NULL COMMENT '是否冻结饭卡', + is_freeze char(1) DEFAULT '0' NOT NULL COMMENT '是否冻结饭卡', active_bind_time timestamp COMMENT '绑定饭卡时间', active_bind_status char(10) COMMENT '饭卡绑定状态', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', @@ -117,6 +117,7 @@ CREATE TABLE wallet_freeze id bigint NOT NULL COMMENT '编号', process_id varchar(256) COMMENT '流程id', process_status varchar(10) NOT NULL COMMENT '审核状体', + process_time datetime COMMENT '审核时间', wallet_id bigint NOT NULL COMMENT '钱包id', user_id bigint NOT NULL COMMENT '用户id', dept_id bigint NOT NULL COMMENT '部门id', @@ -191,6 +192,7 @@ CREATE TABLE wallet_recharge_apply user_id bigint NOT NULL COMMENT '申请人ID', process_id varchar(256) COMMENT '流程id', process_status varchar(10) COMMENT '审核状体', + process_time datetime COMMENT '审核时间', biz_type tinytext DEFAULT NULL COMMENT '充值类型', wallet_type_id bigint DEFAULT NULL COMMENT '饭卡类型id', dept_id bigint NOT NULL COMMENT '部门ID', @@ -238,6 +240,7 @@ CREATE TABLE wallet_stride id bigint NOT NULL COMMENT '编号', process_id varchar(256) COMMENT '流程id', process_status varchar(10) NOT NULL COMMENT '审核状体', + process_time datetime COMMENT '审核时间', dept_id bigint NOT NULL COMMENT '部门id', count int NOT NULL COMMENT '申请数量', use_count int DEFAULT 0 COMMENT '使用数量', @@ -263,6 +266,7 @@ CREATE TABLE wallet_foreign user_id bigint NOT NULL COMMENT '用户id', process_id varchar(256) COMMENT '流程id', process_status varchar(10) NOT NULL COMMENT '审核状体', + process_time datetime COMMENT '审核时间', dept_id bigint NOT NULL COMMENT '部门id', apply_start_time date NULL COMMENT '申请使用开始时间', apply_end_time date NULL COMMENT '申请使用结束时间', diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java index ba3a559df..fd014b2cf 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java @@ -71,6 +71,7 @@ public class UserDTO extends SysUser { * true 当前部门及子部门 */ private Boolean isDeepDept = false; + private List deptIds; } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java index 4ef0bee0f..5295c5fda 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java @@ -22,6 +22,7 @@ package com.bsd.pjcloud.admin.api.feign; import com.bsd.pjcloud.admin.api.dto.UserDTO; import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.admin.api.vo.UserVO; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.feign.annotation.NoToken; @@ -77,6 +78,9 @@ public interface RemoteUserService { @GetMapping("/user/list") R> getUserById(@RequestParam("userIds") List userIds); + @GetMapping("/user/user-dept") + R> getUserDeptByIds(@RequestParam("userIds") List userIds); + /** * 通过社交账号或手机号查询用户、角色信息 * diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java index 88e002702..54d1d2e82 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java @@ -6,8 +6,10 @@ import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.entity.SysMenu; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.vo.SysUserFaceVo; +import com.bsd.pjcloud.admin.api.vo.UserVO; import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; import com.bsd.pjcloud.admin.api.vo.base.BaseFacesInterface; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserDeptInterface; import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import com.bsd.pjcloud.common.core.util.CollectionUtils; import lombok.experimental.UtilityClass; @@ -106,6 +108,20 @@ public class DataUtil { return v; } + public List convertUserDeptList(List list, Map map) { + return CollectionUtils.convertList(list, user -> convertUserDept(user, map.get(user.getUserId()))); + } + + public T convertUserDept(T v, UserVO user) { + if (ObjectUtil.isEmpty(user)) return v; + v.setUsername(user.getName()); + v.setUserMobile(user.getPhone()); + v.setUserAvatar(user.getAvatar()); + v.setUserDeptId(user.getDeptId()); + v.setUserDeptName(user.getDeptName()); + return v; + } + public List convertDeptList(List list, Map map) { return CollectionUtils.convertList(list, user -> convertDept(user, map.get(user.getDeptId()))); } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseUserDeptInterface.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseUserDeptInterface.java new file mode 100644 index 000000000..da93225a0 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseUserDeptInterface.java @@ -0,0 +1,45 @@ +package com.bsd.pjcloud.admin.api.vo.base; + +public interface BaseUserDeptInterface { + /** + * 用户id + */ + Long getUserId(); + + void setUserId(Long userId); + + /** + * 用户名 + */ + String getUsername(); + + void setUsername(String username); + + /** + * 用户手机号 + */ + String getUserMobile(); + + void setUserMobile(String userMobile); + + /** + * 用户头像 + */ + String getUserAvatar(); + + void setUserAvatar(String userAvatar); + + /** + * 用户部门id + */ + Long getUserDeptId(); + + void setUserDeptId(Long userDeptId); + + /** + * 用户部门 + */ + String getUserDeptName(); + + void setUserDeptName(String deptName); +} diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java index a054f5c51..bd43c2dd3 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java @@ -27,6 +27,7 @@ import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.vo.UserExcelFaceVo; import com.bsd.pjcloud.admin.api.vo.UserExcelVO; +import com.bsd.pjcloud.admin.api.vo.UserVO; import com.bsd.pjcloud.admin.service.SysUserService; import com.bsd.pjcloud.common.core.constant.CommonConstants; import com.bsd.pjcloud.common.core.exception.ErrorCodes; @@ -344,6 +345,10 @@ public class SysUserController { return R.ok(userService.list(Wrappers.lambdaQuery().in(SysUser::getUserId, userIds))); } + @GetMapping("/user-dept") + public R> getUserDeptByIds(@RequestParam("userIds") List userIds) { + return R.ok(userService.getUserDeptByIds(userIds)); + } /** * 根据浙政钉号和手机号查询 diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java index 77f9991f5..7527efdcc 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java @@ -189,4 +189,6 @@ public interface SysUserService extends IService { * @return */ R resetUserPassword(UserDTO userDto); + + List getUserDeptByIds(List userIds); } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java index 4e2cc33a0..a2d05e162 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java @@ -56,6 +56,7 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.MsgUtils; 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.data.resolver.ParamResolver; import com.bsd.pjcloud.common.excel.vo.ErrorMessage; import com.bsd.pjcloud.common.file.core.FileProperties; @@ -762,4 +763,8 @@ public class SysUserServiceImpl extends ServiceImpl impl return baseMapper.selectList(Wrappers.lambdaQuery().in(SysUser::getDeptId, deptIdList)); } + @Override + public List getUserDeptByIds(List userIds) { + return baseMapper.selectVoListByScope(new UserDTO(), userIds.toArray(new Long[0]), null); + } } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java index d8b3a2e61..a07973446 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java @@ -3,7 +3,24 @@ package com.bsd.pjcloud.wallet.api.dto.recharge; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; import lombok.Data; +import java.time.LocalDateTime; +import java.util.List; + @Data public class WalletRechargeImportDto extends WalletRechargeImportEntity { - + + private String processStatus; + + private Long walletTypeId; + + private List userIds; + + private Long userDeptId; + + private List userDeptIds; + + private LocalDateTime[] createTimeList; + + private LocalDateTime[] processTimeList; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/excel/WalletRechargeExcelDto.java similarity index 91% rename from pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java rename to pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/excel/WalletRechargeExcelDto.java index e65800fd7..6697c9dfa 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/excel/WalletRechargeExcelDto.java @@ -1,4 +1,4 @@ -package com.bsd.pjcloud.wallet.api.dto.excel; +package com.bsd.pjcloud.wallet.api.dto.recharge.excel; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; @@ -47,4 +47,7 @@ public class WalletRechargeExcelDto { // 用户id private Long userId; + + // 用户部门id + private Long userDeptId; } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java index 493f01693..4f46ebf51 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java @@ -46,6 +46,12 @@ public class WalletRechargeApplyEntity extends Model @Schema(description = "流程状态") private String processStatus; + /** + * 审核时间 + */ + @Schema(description = "审核时间") + private LocalDateTime processTime; + /** * 申请人ID */ diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeImportEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeImportEntity.java index 2586091e4..74c8715a5 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeImportEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeImportEntity.java @@ -37,6 +37,12 @@ public class WalletRechargeImportEntity extends Model exportExcel(WalletRechargeImportDto dto) { + dto.setApplyId(dto.getId()); + dto.setId(null); + return walletRechargeApplyService.exportExcel(dto); + } + @ResponseExcel @GetMapping("/export") @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_export')") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java new file mode 100644 index 000000000..44b8526ef --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java @@ -0,0 +1,94 @@ +package com.bsd.pjcloud.wallet.controller.recharge; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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.log.annotation.SysLog; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; +import com.bsd.pjcloud.wallet.service.WalletRechargeImportService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * 充值导入表 + * + * @author pjcloud + * @date 2025-01-20 17:56:46 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/wallet-recharge-import") +@Tag(description = "wallet-recharge-import", name = "充值导入表管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class WalletRechargeImportController { + + private final WalletRechargeImportService walletRechargeImportService; + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeImport_view')") + public R getWalletRechargeImportPage(@ParameterObject Page page, @ParameterObject WalletRechargeImportEntity walletRechargeImport) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + return R.ok(walletRechargeImportService.page(page, wrapper)); + } + + @Operation(summary = "分页复杂查询", description = "分页复杂查询") + @GetMapping("/page-join") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeImport_view')") + public R scopePageList(@ParameterObject Page page, @ParameterObject WalletRechargeImportDto dto) { + return R.ok(walletRechargeImportService.scopePageList(page, dto, DataScope.of())); + } + + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeImport_view')") + public R getById(@PathVariable("id") Long id) { + return R.ok(walletRechargeImportService.getById(id)); + } + + @Operation(summary = "新增充值导入表", description = "新增充值导入表") + @SysLog("新增充值导入表") + @PostMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeImport_add')") + public R save(@RequestBody WalletRechargeImportEntity walletRechargeImport) { + return R.ok(walletRechargeImportService.save(walletRechargeImport)); + } + + @Operation(summary = "修改充值导入表", description = "修改充值导入表") + @SysLog("修改充值导入表") + @PutMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeImport_edit')") + public R updateById(@RequestBody WalletRechargeImportEntity walletRechargeImport) { + return R.ok(walletRechargeImportService.updateById(walletRechargeImport)); + } + + @Operation(summary = "通过id删除充值导入表", description = "通过id删除充值导入表") + @SysLog("通过id删除充值导入表") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeImport_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(walletRechargeImportService.removeBatchByIds(CollUtil.toList(ids))); + } + + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeImport_export')") + public List export(WalletRechargeImportEntity walletRechargeImport, Long[] ids) { + return walletRechargeImportService.list(Wrappers.lambdaQuery(walletRechargeImport).in(ArrayUtil.isNotEmpty(ids), WalletRechargeImportEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java index 4e2f2b7f6..0bad11aef 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java @@ -14,6 +14,8 @@ import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface WalletRechargeApplyMapper extends PjcloudBaseMapper { @@ -29,6 +31,19 @@ public interface WalletRechargeApplyMapper extends PjcloudBaseMapper listJoin(WalletRechargeApplyDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(WalletRechargeApplyEntity.class) + .selectAs(WalletTypeEntity::getName, WalletRechargeApplyVo::getWalletTypeName) + .selectAs(WalletTypeEntity::getUniqueCode, WalletRechargeApplyVo::getWalletTypeUniqueCode) + .leftJoin(WalletTypeEntity.class, WalletTypeEntity::getId, WalletRechargeApplyEntity::getWalletTypeId) + .eqIfExists(WalletRechargeApplyEntity::getWalletTypeId, dto.getWalletTypeId()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()) + .in(ObjectUtil.isNotEmpty(dto.getWalletTypeIds()), WalletManageEntity::getWalletTypeId, dto.getWalletTypeIds()); + return selectJoinList(WalletRechargeApplyVo.class, wrapper); + } + + default Page scopePageList(Page page, WalletRechargeApplyDto dto) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper() .eq(ObjectUtil.isNotEmpty(dto.getWalletTypeId()), WalletRechargeApplyEntity::getWalletTypeId, dto.getWalletTypeId()) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeImportMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeImportMapper.java index d6d6830e9..a4104f25b 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeImportMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeImportMapper.java @@ -1,20 +1,33 @@ package com.bsd.pjcloud.wallet.mapper.recharge; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeImportVo; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface WalletRechargeImportMapper extends PjcloudBaseMapper { + Page scopePageList(Page page, @Param("dto") WalletRechargeImportDto dto, DataScope dataScope); + default Page pageJoin(Page page, WalletRechargeImportDto dto) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper() .eqIfExists(WalletRechargeImportEntity::getId, dto.getId()) .eqIfExists(WalletRechargeImportEntity::getApplyId, dto.getApplyId()); return selectJoinPage(page, WalletRechargeImportVo.class, wrapper); } + + default List listJoin(WalletRechargeImportDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .eqIfExists(WalletRechargeImportEntity::getId, dto.getId()) + .eqIfExists(WalletRechargeImportEntity::getApplyId, dto.getApplyId()); + return selectJoinList(WalletRechargeImportVo.class, wrapper); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java index 5b09f9ebd..339122e9e 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java @@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; -import com.bsd.pjcloud.wallet.api.dto.excel.WalletRechargeExcelDto; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; +import com.bsd.pjcloud.wallet.api.dto.recharge.excel.WalletRechargeExcelDto; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; +import com.bsd.pjcloud.wallet.api.vo.recharge.excel.WalletRechargeByApplyExcelVo; import org.springframework.validation.BindingResult; import java.util.List; @@ -20,6 +22,8 @@ public interface WalletRechargeApplyService extends IService pageJoin(Page page, WalletRechargeApplyDto dto); + List listJoin(WalletRechargeApplyDto dto); + Page scopePageList(Page page, WalletRechargeApplyDto dto); /** @@ -50,4 +54,6 @@ public interface WalletRechargeApplyService extends IService exportExcel(WalletRechargeImportDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeImportService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeImportService.java index f35e7e453..c3ef45338 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeImportService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeImportService.java @@ -3,12 +3,18 @@ package com.bsd.pjcloud.wallet.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeImportVo; +import java.util.List; + public interface WalletRechargeImportService extends IService { Page pageJoin(Page page, WalletRechargeImportDto dto); + List listJoin(WalletRechargeImportDto dto); + + Page scopePageList(Page page, WalletRechargeImportDto 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/MchManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java index 64786ac3c..ab46196f4 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java @@ -11,7 +11,6 @@ import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; import com.bsd.pjcloud.admin.api.feign.RemoteFileService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.common.core.constant.CacheConstants; -import com.bsd.pjcloud.common.core.exception.CheckedException; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.QRCodeImageGenerator; import com.bsd.pjcloud.common.core.util.R; @@ -66,10 +65,10 @@ public class MchManageServiceImpl extends ServiceImpl listJoin(WalletRechargeApplyDto dto) { + List list = baseMapper.listJoin(dto); + if (ObjectUtil.isNotEmpty(list)) { + // 用户 + List userIds = list.stream().map(WalletRechargeApplyVo::getUserId).distinct().toList(); + if (ObjectUtil.isNotEmpty(userIds)) { + R> userList = userService.getUserById(new ArrayList<>(userIds)); + if (ObjectUtil.isNotEmpty(userList.getData())) { + DataUtil.convertUserList(list, CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); + } + } + // 部门 + List deptIds = list.stream().map(WalletRechargeApplyVo::getDeptId).distinct().toList(); + if (ObjectUtil.isNotEmpty(deptIds)) { + R> deptList = deptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(list, deptList.getData()); + } + } + } + return list; + } + @Override public Page scopePageList(Page page, WalletRechargeApplyDto dto) { Page list = baseMapper.scopePageList(page, dto); @@ -166,15 +194,15 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl batchSaveList = list.stream().map(v -> WalletRechargeImportEntity.builder().price(v.getPriceNumber()).userId(v.getUserId()).build()).toList(); + List batchSaveList = list.stream().map(v -> WalletRechargeImportEntity.builder().price(v.getPriceNumber()).userId(v.getUserId()).userDeptId(v.getUserDeptId()).build()).toList(); batchSaveList.forEach(v -> v.setApplyId(insertObj.getId())); rechargeImportService.saveBatch(batchSaveList); return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); @@ -288,7 +317,7 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl importList = rechargeImportService.list(new LambdaQueryWrapper() .eq(WalletRechargeImportEntity::getApplyId, detail.getId()) @@ -338,6 +367,25 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl exportExcel(WalletRechargeImportDto dto) { + List result = new ArrayList<>(); + List list = rechargeImportService.listJoin(dto); + if (ObjectUtil.isEmpty(list)) return result; + for (WalletRechargeImportVo v : list) { + WalletRechargeByApplyExcelVo item = new WalletRechargeByApplyExcelVo(); + item.setUsername(v.getUsername()); + item.setUserMobile(v.getUserMobile()); + item.setUserDeptName(v.getUserDeptName()); + if (ObjectUtil.isNotEmpty(v.getPrice())) { + String price = new BigDecimal(v.getPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString(); + item.setPrice(price); + } + result.add(item); + } + return result; + } + private boolean isCheckData(Long walletId) { Long count = baseMapper.selectCount(new LambdaQueryWrapper() .eq(WalletRechargeApplyEntity::getUserId, walletId) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java index e5d693f1a..4e7a48e1d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java @@ -3,18 +3,26 @@ package com.bsd.pjcloud.wallet.service.impl.recharge; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.admin.api.dto.UserDTO; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; +import com.bsd.pjcloud.admin.api.vo.UserVO; 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.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; +import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; +import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeImportVo; +import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargeImportMapper; import com.bsd.pjcloud.wallet.service.WalletRechargeImportService; +import com.bsd.pjcloud.wallet.service.WalletTypeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -35,6 +43,8 @@ import java.util.List; @Service public class WalletRechargeImportServiceImpl extends ServiceImpl implements WalletRechargeImportService { + private final WalletTypeMapper walletTypeMapper; + private final RemoteUserService userService; private final RemoteDeptService deptService; @@ -45,13 +55,53 @@ public class WalletRechargeImportServiceImpl extends ServiceImpl userIds = list.getRecords().stream().map(WalletRechargeImportVo::getUserId).distinct().toList(); if (ObjectUtil.isNotEmpty(userIds)) { - R> userList = userService.getUserById(new ArrayList<>(userIds)); + R> userList = userService.getUserDeptByIds(new ArrayList<>(userIds)); if (ObjectUtil.isNotEmpty(userList.getData())) { - DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); + DataUtil.convertUserDeptList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), UserVO::getUserId)); } } } return list; } + @Override + public List listJoin(WalletRechargeImportDto dto) { + List list = baseMapper.listJoin(dto); + if (ObjectUtil.isNotEmpty(list)) { + // 用户 + List userIds = list.stream().map(WalletRechargeImportVo::getUserId).distinct().toList(); + if (ObjectUtil.isNotEmpty(userIds)) { + R> userList = userService.getUserDeptByIds(new ArrayList<>(userIds)); + if (ObjectUtil.isNotEmpty(userList.getData())) { + DataUtil.convertUserDeptList(list, CollectionUtils.convertMap(userList.getData(), UserVO::getUserId)); + } + } + } + return list; + } + + @Override + public Page scopePageList(Page page, WalletRechargeImportDto dto, DataScope dataScope) { + Page list = baseMapper.scopePageList(page, dto, dataScope); + if (ObjectUtil.isNotEmpty(list.getRecords())) { + // 用户 + List userIds = list.getRecords().stream().map(WalletRechargeImportVo::getUserId).distinct().toList(); + if (ObjectUtil.isNotEmpty(userIds)) { + R> userList = userService.getUserDeptByIds(new ArrayList<>(userIds)); + if (ObjectUtil.isNotEmpty(userList.getData())) { + DataUtil.convertUserDeptList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), UserVO::getUserId)); + } + } + // 饭卡类型 + List walletTypeId = list.getRecords().stream().map(WalletRechargeImportVo::getWalletTypeId).distinct().toList(); + if (ObjectUtil.isNotEmpty(walletTypeId)) { + WalletTypeDto walletTypeDto = new WalletTypeDto(); + List walletTypeList = walletTypeMapper.list(walletTypeDto); + if (ObjectUtil.isNotEmpty(walletTypeList)) { + WalletDataUtil.convertWalletTypeList(list.getRecords(), CollectionUtils.convertMap(walletTypeList, WalletTypeEntity::getId)); + } + } + } + return list; + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml index 1778e5e38..b7e811d78 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml @@ -2,7 +2,8 @@ - + @@ -15,4 +16,68 @@ + + + select a.id, + a.user_id, + a.user_dept_id, + a.apply_id, + a.before_price, + a.price, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id, + + + + a.del_flag = 0 + + and a.user_id in + + #{v} + + + + and a.user_dept_id in + + #{v} + + + + and a.user_dept_id = #{dto.userDeptId} + + + and a.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]} + + + + \ No newline at end of file