xiari 1 год назад
Родитель
Сommit
a617e8f38d

+ 3 - 20
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/PtSubsidyitemController.java

@@ -140,30 +140,13 @@ public class PtSubsidyitemController extends BaseController {
      * @param pageQuery
      * @return
      */
-    @GetMapping("/queryReportByManager")
+    @GetMapping("/queryUseForIndex")
     public R<List<PtSubsidyFirstPageVo>> queryReportByManager() {
-
-
-        // todo 待完善: 获取当前登录用户的角色,如果角色是管理员、补助管理员、补助发放、补助审核人员则返回数据,否则返回个人的补助列表信息
-        //dict_first_page_show_role
-
-        // todo 提取到service类中
-
-        PtSubsidyReportBo bo = new PtSubsidyReportBo();
-        bo.setCountType("1");
-        PageQuery pageQuery = new PageQuery();
-        pageQuery.setPageNum(1);
-        pageQuery.setPageSize(12);
-
-        TableDataInfo<PtSubsidyReportVo> result = ptSubsidyitemService.queryPageReportList(bo, pageQuery);
-
-        List<PtSubsidyFirstPageVo> list = result.getRows().stream().map(item -> {
-            return new PtSubsidyFirstPageVo(item.getFillDate(), item.getFillMoney(), item.getCountNumber());
-        }).collect(Collectors.toList());
-
+        List<PtSubsidyFirstPageVo> list = ptSubsidyitemService.getPtSubsidyFirstPageVos();
         return R.ok(list);
     }
 
+
     //补助报表导出
     @SaCheckPermission("subsidy:ptSubsidyitem:ptSubsidyitemReport")
     @Log(title = "补助报表导出", businessType = BusinessType.EXPORT)

+ 64 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/vo/PtSubsidyFirstPageVo.java

@@ -0,0 +1,64 @@
+package org.dromara.backstage.cardCenter.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+
+/**
+ * 补助报表 VO对象
+ *
+ */
+@Data
+@ExcelIgnoreUnannotated
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtSubsidyFirstPageVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 到账日期
+     */
+    @ExcelProperty(value = "日期")
+   /* @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")*/
+    private String fillDate;
+
+    /**
+     * 补助金额
+     */
+    @ExcelProperty(value = "补助总金额(元)")
+    private BigDecimal fillMoney;
+
+
+    @ExcelProperty(value = "笔数")
+    private Long countNumber;
+
+    // 补助名称
+    private String subsidyName;
+
+    /**
+     * 操作员姓名
+     */
+    private String operatorName;
+
+    @ExcelProperty(value = "用户姓名")
+    private String realName;
+
+    @ExcelProperty(value = "部门名称")
+    private String deptName;
+
+    // 统计为 为 count, 默认就是个人的
+    private String flag = "self";
+
+}

+ 2 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/mapper/PtSubsidyitemMapper.java

@@ -26,4 +26,6 @@ public interface PtSubsidyitemMapper extends BaseMapperPlus<PtSubsidyitem, PtSub
     Page<PtSubsidyReportVo> queryReportPageList(@Param("page") Page<PtSubsidyReportVo> page, @Param("bo") PtSubsidyReportBo bo);
 
     List<PtSubsidyitemVo> selectPostSubsidyItem(@Param("justDate") String justDate);
+
+    List<PtSubsidyitemVo> selectItemByUserId(@Param("userId") Long userId, @Param("limits") Integer limits);
 }

+ 3 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/IPtSubsidyitemService.java

@@ -3,6 +3,7 @@ package org.dromara.backstage.cardCenter.service;
 import org.dromara.backstage.cardCenter.domain.PtSubsidyitem;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyBo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyReportBo;
+import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyFirstPageVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyitemBo;
@@ -80,4 +81,6 @@ public interface IPtSubsidyitemService {
     List<PtSubsidyitemVo> selectPostSubsidyItem();
 
     Boolean updateBySubsidyBo(PtSubsidyBo bo);
+
+    List<PtSubsidyFirstPageVo> getPtSubsidyFirstPageVos();
 }

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

@@ -1,17 +1,22 @@
 package org.dromara.backstage.cardCenter.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import org.apache.dubbo.config.annotation.DubboReference;
 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.cardCenter.domain.bo.PtSubsidyBo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyReportBo;
+import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyFirstPageVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo;
 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.service.DictService;
+import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -20,6 +25,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.system.api.RemoteDictService;
+import org.dromara.system.api.model.LoginUser;
+import org.dromara.system.api.model.RoleDTO;
 import org.springframework.stereotype.Service;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyitemBo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
@@ -46,6 +55,8 @@ public class PtSubsidyitemServiceImpl implements IPtSubsidyitemService {
     private final PtSubsidyitemMapper baseMapper;
     private final PtUserAccountMapper userAccountMapper;
 
+    private final DictService dictService;
+
 
     /**
      * @param bo
@@ -210,4 +221,69 @@ public class PtSubsidyitemServiceImpl implements IPtSubsidyitemService {
 
         return baseMapper.update(null, updateWrapper) > 0;
     }
+
+    // 获取当前登录用户的角色,如果角色是管理员、补助管理员、补助发放、补助审核人员则返回数据,否则返回个人的补助列表信息
+    @Override
+    public List<PtSubsidyFirstPageVo> getPtSubsidyFirstPageVos() {
+        // 查询当前登录的人的角色
+        LoginUser loginUser = LoginHelper.getLoginUser();
+
+        List<RoleDTO> roles = loginUser.getRoles();
+        if (CollectionUtil.isEmpty(roles)) {
+            return queryPersonalSubsidyItem(loginUser);
+        }
+        // 查询字典
+        Map<String, String> showRole = dictService.getAllDictByDictType("dict_first_page_show_role");
+
+        boolean hasRole = false;
+        for (RoleDTO role : roles) {
+            String s = showRole.get(role.getRoleKey());
+            if(StringUtils.isNotBlank(s)){
+                hasRole = true;
+                break;
+            }
+        }
+
+        if(!hasRole){
+            return queryPersonalSubsidyItem(loginUser);
+        }
+
+        PtSubsidyReportBo bo = new PtSubsidyReportBo();
+        bo.setCountType("1"); // 统计方式 按月
+        PageQuery pageQuery = new PageQuery();
+        pageQuery.setPageNum(1);
+        pageQuery.setPageSize(12);
+
+        TableDataInfo<PtSubsidyReportVo> result = queryPageReportList(bo, pageQuery);
+
+        List<PtSubsidyFirstPageVo> list = result.getRows().stream().map(item -> {
+            PtSubsidyFirstPageVo vo = new PtSubsidyFirstPageVo();
+            vo.setFillDate(item.getFillDate());
+            vo.setFillMoney(item.getFillMoney());
+            vo.setCountNumber(item.getCountNumber());
+            vo.setFlag("count");
+            return vo;
+        }).collect(Collectors.toList());
+        return list;
+    }
+
+    // 查询个人的补助记录
+    private List<PtSubsidyFirstPageVo> queryPersonalSubsidyItem(LoginUser loginUser) {
+        List<PtSubsidyFirstPageVo> rs = new ArrayList<>();
+        List<PtSubsidyitemVo> ptSubsidyitemVos = baseMapper.selectItemByUserId(loginUser.getUserId(), 12);
+        for (PtSubsidyitemVo ptSubsidyitemVo : ptSubsidyitemVos) {
+            PtSubsidyFirstPageVo item = new PtSubsidyFirstPageVo();
+            item.setSubsidyName(ptSubsidyitemVo.getSubsidyName());
+            item.setFillDate(DateUtils.parseDateToStr("yyyy-MM-dd", ptSubsidyitemVo.getFillDate()));
+            item.setFillMoney(ptSubsidyitemVo.getFillMoney());
+            item.setCountNumber(1L);
+            item.setRealName(ptSubsidyitemVo.getRealName());
+            item.setDeptName(ptSubsidyitemVo.getDeptName());
+            item.setOperatorName(ptSubsidyitemVo.getOperatorName());
+            rs.add(item);
+        }
+
+        return rs;
+    }
+
 }

+ 13 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/cardCenter/cardOperation/PtSubsidyitemMapper.xml

@@ -60,6 +60,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
 
+    <select id="selectItemByUserId" resultType="org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo">
+        SELECT
+            b.subsidy_name,a.item_id,a.user_id, a.subsidy_type, a.fill_money, a.fill_date, a.fill_status, a.get_date
+             , a.before_money, a.after_money, a.original_id, a.user_numb, a.real_name, a.dept_name, a.remark, a.del_flag
+             , a.create_dept, a.create_by, a.create_time, a.update_by, u.real_name as operator_name
+        FROM
+            t_pt_subsidyItem a
+                left join t_pt_subsidy b on a.main_id = b.main_id
+                left join t_sys_user u on a.create_by = u.user_id
+        where
+            a.del_flag = 0 and b.del_flag = 0 and b.audit_status = 'Y' and  a.user_id = #{userId} order by a.create_time desc limit ${limits}
+    </select>
+
     <select id="queryReportList" resultType="org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo">
         select (case  #{bo.countType} when '0' then to_char(i.fill_date, '%Y') when '1' then to_char(i.fill_date, '%Y-%m') else to_char(i.fill_date, '%Y-%m-%d') end) fillDate,
                (case when #{bo.subsidyType} is not null and #{bo.subsidyType} != '' then i.subsidy_type else '所有' end) subsidyType,