Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

luoyb 1 anno fa
parent
commit
d006b1f458

+ 18 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/PtAccountServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dromara.backstage.basics.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.dromara.backstage.basics.domain.PtOperator;
 import org.dromara.backstage.basics.mapper.PtOperatorMapper;
 import org.dromara.common.core.exception.ServiceException;
@@ -87,6 +88,23 @@ public class PtAccountServiceImpl implements IPtAccountService {
         return lqw;
     }
 
+    private QueryWrapper<PtAccount> buildQueryWrapper(PtAccountBo bo, String tableAlias) {
+        QueryWrapper<PtAccount> lqw = new QueryWrapper<>();
+        String columnPrefix = "";
+        if(StringUtils.isNotBlank(tableAlias)){
+            columnPrefix = tableAlias + ".";
+        }
+        lqw.like(StringUtils.isNotBlank(bo.getAccountName()), columnPrefix+"account_name", bo.getAccountName());
+        lqw.eq(StringUtils.isNotBlank(bo.getAccountCode()), columnPrefix+"account_code", bo.getAccountCode());
+        lqw.eq(StringUtils.isNotBlank(bo.getQueryPwd()), columnPrefix+"query_pwd", bo.getQueryPwd());
+        lqw.eq(StringUtils.isNotBlank(bo.getTelephone()), columnPrefix+"telephone", bo.getTelephone());
+        lqw.eq(StringUtils.isNotBlank(bo.getBankNumber()), columnPrefix+"bank_number", bo.getBankNumber());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), columnPrefix+"status", bo.getStatus());
+        lqw.like(StringUtils.isNotBlank(bo.getAdminName()), columnPrefix+"admin_name", bo.getAdminName());
+        lqw.eq(StringUtils.isNotBlank(bo.getIdNumber()), columnPrefix+"id_number", bo.getIdNumber());
+        return lqw;
+    }
+
     /**
      * 新增结算账户
      *

+ 2 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/vo/PtSubsidyitemVo.java

@@ -120,8 +120,9 @@ public class PtSubsidyitemVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
-    @ExcelProperty(value = "创建人")
     private Long createBy;
+    @ExcelProperty(value = "创建人")
+    private String createByName;
 
     @ExcelProperty(value = "创建时间")
     private Date createTime;

+ 13 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtSubsidyServiceImpl.java

@@ -118,7 +118,8 @@ public class PtSubsidyServiceImpl implements IPtSubsidyService {
         if(flag){
             List<PtSubsidyitemBo> subsidyitemBoList = bo.getSubsidyitemBoList();
             subsidyitemBoList.stream().forEach(subsidyitemBo ->{
-                if(subsidyitemBo.getMainId() == null){
+                setSubsidyInfo(subsidyitemBo, bo);
+                if(subsidyitemBo.getItemId() == null){
                     subsidyitemBo.setMainId(bo.getMainId());
                     subsidyitemService.insertByBo(subsidyitemBo);
                 }else {
@@ -129,6 +130,17 @@ public class PtSubsidyServiceImpl implements IPtSubsidyService {
         return flag;
     }
 
+    /**
+     * 设置补助明细中的补助信息
+     * @param item
+     * @param bo
+     */
+    private void setSubsidyInfo(PtSubsidyitemBo item, PtSubsidyBo bo){
+        item.setMainId(bo.getMainId());
+        item.setSubsidyType(bo.getSubsidyType());
+        item.setFillMoney(bo.getFillMoney());
+        item.setFillDate(bo.getFillDate());
+    }
     /**
      * 保存前的数据校验
      */

+ 30 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtSubsidyitemServiceImpl.java

@@ -1,5 +1,12 @@
 package org.dromara.backstage.cardCenter.service.impl;
 
+import org.dromara.backstage.basics.domain.bo.PtAccountBo;
+import org.dromara.backstage.basics.domain.vo.PtAccountVo;
+import org.dromara.backstage.basics.mapper.PtAccountMapper;
+import org.dromara.backstage.basics.service.IPtAccountService;
+import org.dromara.backstage.payment.domain.PtUserAccount;
+import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
+import org.dromara.backstage.payment.mapper.PtUserAccountMapper;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -18,6 +25,11 @@ import org.dromara.backstage.cardCenter.service.IPtSubsidyitemService;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import static java.util.stream.Collectors.toMap;
+import static java.util.stream.Collectors.toSet;
 
 /**
  * 补助明细Service业务层处理
@@ -30,6 +42,7 @@ import java.util.Collection;
 public class PtSubsidyitemServiceImpl implements IPtSubsidyitemService {
 
     private final PtSubsidyitemMapper baseMapper;
+    private final PtUserAccountMapper userAccountMapper;
 
 
     /**
@@ -54,9 +67,26 @@ public class PtSubsidyitemServiceImpl implements IPtSubsidyitemService {
     public TableDataInfo<PtSubsidyitemVo> queryPageList(PtSubsidyitemBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<PtSubsidyitem> lqw = buildQueryWrapper(bo);
         Page<PtSubsidyitemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        addUserInfo(result.getRecords());
         return TableDataInfo.build(result);
     }
 
+    /**
+     * 补充人员信息
+     * @param subsidyitemVoList
+     */
+    private void addUserInfo(List<PtSubsidyitemVo> subsidyitemVoList){
+        Set<Long> userIds = subsidyitemVoList.stream().map(PtSubsidyitemVo::getCreateBy).collect(toSet());
+        if(userIds.size() > 0){
+            List<PtUserAccountVo> userAccountVos =
+                userAccountMapper.selectVoList(Wrappers.lambdaQuery(PtUserAccount.class).in(PtUserAccount::getUserId,
+                    userIds));
+            Map<Long, String> userMap = userAccountVos.stream().collect(toMap(PtUserAccountVo::getUserId,
+                PtUserAccountVo::getRealName));
+            subsidyitemVoList.forEach(e -> e.setCreateByName(userMap.get(e.getCreateBy())));
+        }
+    }
+
     /**
      * 查询符合条件的补助明细列表
      *

+ 7 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/controller/PtUserAccountController.java

@@ -13,6 +13,7 @@ import org.dromara.backstage.cardCenter.domain.vo.PtCardVo;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
+import org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountInfoVo;
 import org.dromara.backstage.payment.service.IPtBagService;
 import org.dromara.common.core.utils.StreamUtils;
@@ -62,6 +63,12 @@ public class PtUserAccountController extends BaseController {
         return ptUserAccountService.queryPageList(bo, pageQuery);
     }
 
+    @SaCheckPermission("payment:ptUserAccount:list")
+    @GetMapping("/list4Select")
+    public TableDataInfo<PtUserAccount4SelectVo> list4Select(PtUserAccountBo bo, PageQuery pageQuery) {
+        return ptUserAccountService.queryPageList4Select(bo, pageQuery);
+    }
+
     /**
      * 导出一卡通账户列表
      */

+ 240 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/vo/PtUserAccount4SelectVo.java

@@ -0,0 +1,240 @@
+package org.dromara.backstage.payment.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.backstage.payment.domain.PtUserAccount;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.dromara.common.sensitive.annotation.Sensitive;
+import org.dromara.common.sensitive.core.SensitiveStrategy;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 一卡通账户视图对象 t_pt_userAccount
+ *
+ * @author LionLi
+ * @date 2024-08-05
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = PtUserAccount.class)
+public class PtUserAccount4SelectVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 账户Id,主键
+     */
+    @ExcelProperty(value = "账户Id,主键")
+    private Long userId;
+
+    /**
+     * 岗位Id
+     */
+    @ExcelProperty(value = "岗位Id")
+    private Long postId;
+
+    /**
+     * 部门Id
+     */
+    @ExcelProperty(value = "部门Id")
+    private Long deptId;
+
+    /**
+     * 账户名/登录账号
+     */
+    @ExcelProperty(value = "账户名/登录账号")
+    private String userName;
+
+    /**
+     * 登录密码
+     */
+    @ExcelProperty(value = "登录密码")
+    private String password;
+
+    /**
+     * 账户编号/工号
+     */
+    @ExcelProperty(value = "账户编号/工号")
+    private String userNumb;
+
+    /**
+     * 账户姓名
+     */
+    @ExcelProperty(value = "账户姓名")
+    private String realName;
+
+    /**
+     * 账户性别,见sys_user_sex字典类型
+     */
+    @ExcelProperty(value = "账户性别,见sys_user_sex字典类型")
+    private String sex;
+
+    /**
+     * 账户类型(0=内部账户 1=老师 2=学生 3=家长  4=其他人员)
+     */
+    @ExcelProperty(value = "账户类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0==内部账户,1==老师,2==学生,3==家长,4==其他人员")
+    private String category;
+
+    /**
+     * 账户邮箱
+     */
+    @ExcelProperty(value = "账户邮箱")
+    private String email;
+
+    /**
+     * 通信地址
+     */
+    @ExcelProperty(value = "通信地址")
+    private String address;
+
+    /**
+     * 手机号码
+     */
+    @Sensitive(strategy= SensitiveStrategy.PHONE)
+    @ExcelProperty(value = "手机号码")
+    private String phone;
+
+    /**
+     * 头像地址
+     */
+    @ExcelProperty(value = "头像地址")
+    private Long avatar;
+
+    /**
+     * 身份证号
+     */
+    @ExcelProperty(value = "身份证号")
+    private String idNumber;
+
+    /**
+     * 一卡通账户状态(0-未开户  1-已开户  -1已销户)
+     */
+    @ExcelProperty(value = "一卡通账户状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=-未开户,1=-已开户,-=1已销户")
+    private String accountStatus;
+
+    /**
+     * 账户是否被冻结,见sys_yes_no字典类型
+     */
+    @ExcelProperty(value = "账户是否被冻结,见sys_yes_no字典类型")
+    private String freezeStatus;
+
+    /**
+     * 消费密码
+     */
+    @ExcelProperty(value = "消费密码")
+    private String consumePwd;
+
+    /**
+     * 账户流水号
+     */
+    @ExcelProperty(value = "账户流水号")
+    private Long userNo;
+
+    /**
+     * 账户卡片类型
+     */
+    @ExcelProperty(value = "账户卡片类型")
+    private Long cardType;
+
+    /**
+     * 账户有效期
+     */
+    @ExcelProperty(value = "账户有效期")
+    private Date lifespan;
+
+    /**
+     * 64位2进制数据,某位的数据1代表具备某个属性
+     */
+    @ExcelProperty(value = "64位2进制数据,某位的数据1代表具备某个属性")
+    private Long userAttr;
+
+    /**
+     * 人脸照片地址
+     */
+    @ExcelProperty(value = "人脸照片地址")
+    private String photo;
+
+    /**
+     * 人员编制,对应 ZXXBZLB 字典类型
+     */
+    @ExcelProperty(value = "人员编制,对应 ZXXBZLB 字典类型")
+    private String formation;
+
+    /**
+     * 是否隐藏,见sys_yes_no字典类型,内置的系统账号是需要隐藏的
+     */
+    @ExcelProperty(value = "是否隐藏,见sys_yes_no字典类型,内置的系统账号是需要隐藏的")
+    private String hidden;
+
+    /**
+     * 唯一身份标识,第三方统一身份认证ID
+     */
+    @ExcelProperty(value = "唯一身份标识,第三方统一身份认证ID")
+    private String otherId;
+
+    /**
+     * 第三方人员状态
+     */
+    @ExcelProperty(value = "第三方人员状态")
+    private String userState;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 最后登录IP
+     */
+    @ExcelProperty(value = "最后登录IP")
+    private String loginIp;
+
+    /**
+     * 最后登录时间
+     */
+    @ExcelProperty(value = "最后登录时间")
+    private Date loginDate;
+
+    /**
+     * 账户状态,见sys_normal_disable字典类型
+     */
+    @ExcelProperty(value = "账户状态,见sys_normal_disable字典类型")
+    private String status;
+
+    /**
+     * 部门名
+     */
+//    @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "deptId")
+    private String deptName;
+
+    /**
+     * 卡类名
+     */
+//    @Translation(type = TransConstant.CARD_TYPE_ID_TO_NAME, mapper = "cardType")
+    private String cardTypeName;
+
+    /**
+     * 账户余额
+     */
+//    @Translation(type = TransConstant.USER_ID_TO_BALANCE, mapper = "userId")
+    private String accountBalance;
+
+    /**
+     * 账户发卡信息
+     */
+//    @Translation(type = TransConstant.USER_ID_TO_CARD_INFO, mapper = "userId")
+    private String accountCard;
+}

+ 8 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/mapper/PtUserAccountMapper.java

@@ -1,6 +1,12 @@
 package org.dromara.backstage.payment.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.backstage.basics.domain.PtOperator;
+import org.dromara.backstage.basics.domain.vo.PtOperatorVo;
 import org.dromara.backstage.payment.domain.PtUserAccount;
+import org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
@@ -12,4 +18,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
 public interface PtUserAccountMapper extends BaseMapperPlus<PtUserAccount, PtUserAccountVo> {
 
+    Page<PtUserAccount4SelectVo> customPageList(@Param("page") Page<PtUserAccount> page, @Param("ew") Wrapper<PtUserAccount> wrapper);
+
 }

+ 2 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtUserAccountService.java

@@ -1,5 +1,6 @@
 package org.dromara.backstage.payment.service;
 
+import org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -32,6 +33,7 @@ public interface IPtUserAccountService {
      * @return 一卡通账户分页列表
      */
     TableDataInfo<PtUserAccountVo> queryPageList(PtUserAccountBo bo, PageQuery pageQuery);
+    TableDataInfo<PtUserAccount4SelectVo> queryPageList4Select(PtUserAccountBo bo, PageQuery pageQuery);
 
     /**
      * 查询符合条件的一卡通账户列表

+ 28 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java

@@ -1,8 +1,10 @@
 package org.dromara.backstage.payment.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
+import org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo;
 import org.dromara.backstage.payment.service.IPtBagService;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -67,6 +69,16 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
         return TableDataInfo.build(result);
     }
 
+
+    @Override
+    public TableDataInfo<PtUserAccount4SelectVo> queryPageList4Select(PtUserAccountBo bo, PageQuery pageQuery) {
+        // 方法1. 使用子查询,使得where 后 只有一个表(效率会低点) 方法2. 使用queryWrapper 自己指定字段,字段名带表别名
+        QueryWrapper<PtUserAccount> wrapper = buildQueryWrapper(bo, "u");
+        wrapper.orderByAsc("u.dept_id").orderByAsc("u.real_name");
+        Page<PtUserAccount4SelectVo> result = baseMapper.customPageList(pageQuery.build(), wrapper);
+        return TableDataInfo.build(result);
+    }
+
     /**
      * 查询符合条件的一卡通账户列表
      *
@@ -115,6 +127,22 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
         return lqw;
     }
 
+    private QueryWrapper<PtUserAccount> buildQueryWrapper(PtUserAccountBo bo,String tableAlias) {
+        QueryWrapper<PtUserAccount> wrapper = new QueryWrapper<>();
+        String columnPrefix = "";
+        if(StringUtils.isNotBlank(tableAlias)){
+            columnPrefix = tableAlias + ".";
+        }
+        wrapper.eq(bo.getPostId() != null, columnPrefix+"post_id", bo.getPostId());
+        wrapper.eq(bo.getDeptId() != null, columnPrefix+"dept_id", bo.getDeptId());
+        wrapper.eq(StringUtils.isNotBlank(bo.getUserNumb()), columnPrefix+"user_numb", bo.getUserNumb());
+        wrapper.like(StringUtils.isNotBlank(bo.getRealName()), columnPrefix+"real_name", bo.getRealName());
+        wrapper.eq(StringUtils.isNotBlank(bo.getAccountStatus()), columnPrefix+"account_status", bo.getAccountStatus());
+        wrapper.eq(StringUtils.isNotBlank(bo.getFreezeStatus()), columnPrefix+"freeze_status", bo.getFreezeStatus());
+        wrapper.eq(StringUtils.isNotBlank(bo.getStatus()), columnPrefix+"status", bo.getStatus());
+        return wrapper;
+    }
+
     /**
      * 新增一卡通账户
      *

+ 5 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/payment/PtUserAccountMapper.xml

@@ -45,4 +45,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <result property="updateTime"    column="update_time"    />
             <result property="userType"    column="user_type"    />
     </resultMap>
+
+    <select id="customPageList" resultType="org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo">
+        select u.*,a.dept_name deptName from t_pt_userAccount u left join t_sys_dept a
+        on u.dept_id = a.dept_id and u.del_flag = '0' and a.del_flag = '0' ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 31 - 0
ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm

@@ -7,6 +7,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 #end
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
@@ -99,6 +100,36 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
         return lqw;
     }
 
+    private QueryWrapper<${ClassName}> buildQueryWrapper(${ClassName}Bo bo,String tableAlias) {
+        QueryWrapper<${ClassName}> lqw = new QueryWrapper<>();
+        String columnPrefix = "";
+        if(StringUtils.isNotBlank(tableAlias)){
+            columnPrefix = tableAlias + ".";
+        }
+#foreach($column in $columns)
+#if($column.query)
+#set($queryType=$column.queryType)
+#set($javaField=$column.javaField)
+#set($javaType=$column.javaType)
+#set($columnName=$column.columnName)
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#set($mpMethod=$column.queryType.toLowerCase())
+#if($queryType != 'BETWEEN')
+    #if($javaType == 'String')
+        #set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())')
+    #else
+        #set($condition='bo.get'+$AttrName+'() != null')
+    #end
+        lqw.$mpMethod($condition, columnPrefix+"$columnName", bo.get$AttrName());
+#else
+        lqw.between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null,
+        columnPrefix+"$columnName" ,params.get("begin$AttrName"), params.get("end$AttrName"));
+#end
+#end
+#end
+        return lqw;
+    }
+
     /**
      * 新增${functionName}
      *