2 Revīzijas 6152e76219 ... c0ed6dcc0b

Autors SHA1 Ziņojums Datums
  徐滕 c0ed6dcc0b Merge remote-tracking branch 'origin/master' 3 dienas atpakaļ
  徐滕 8bf3a65e43 跨部门人员项目选择权限调整 3 dienas atpakaļ

+ 23 - 0
jeeplus-common/jeeplus-common-mybatis-plus/src/main/java/com/jeeplus/config/TenantLineHandlerImpl.java

@@ -2,6 +2,7 @@ package com.jeeplus.config;
 
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
+import com.jeeplus.common.SecurityUtils;
 import com.jeeplus.common.TokenProvider;
 import com.jeeplus.common.constant.CommonConstants;
 import com.jeeplus.sys.feign.IRoleApi;
@@ -12,6 +13,7 @@ import com.jeeplus.sys.service.dto.UserDTO;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.StringValue;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -19,6 +21,16 @@ import java.util.List;
  */
 public class TenantLineHandlerImpl implements TenantLineHandler {
 
+    // 你指定的特殊人员姓名
+    private static final List<String> SPECIAL_USER_NAMES = Arrays.asList(
+            "余蕾",
+            "黄秀坚",
+            "王琴",
+            "赵俐",
+            "于星星",
+            "蒋学银"
+    );
+
     @Override
     public Expression getTenantId() {
         String tenantId = SpringUtil.getBean ( ITenantApi.class ).getCurrentTenantId ( );
@@ -109,6 +121,17 @@ public class TenantLineHandlerImpl implements TenantLineHandler {
                     return true;
             }
         }
+
+
+        String currentUsername = SecurityUtils.getCurrentUserDTO().getName();
+        // 如果当前租户是综合管理租户, 部门,用户表进行过滤
+        if (SPECIAL_USER_NAMES.contains(currentUsername)) {
+            switch (tableName) {
+                case "sys_user":
+                case "sys_office":
+                    return true;
+            }
+        }
         return false;
     }
 }

+ 2 - 2
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/ProjectListService.java

@@ -1257,11 +1257,11 @@ public class ProjectListService {
                     break;
                 }
                 //报告收费
-                if (StringUtils.isBlank(item.getReportCharges())){
+                /*if (StringUtils.isBlank(item.getReportCharges())){
                     isOver=false;
                     item.setIsOver(isOver);
                     break;
-                }
+                }*/
                 //是否开票
                 if (StringUtils.isBlank(item.getIsInvoice())){
                     isOver=false;

+ 4 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/contractRegistration/mapper/ContractInfoMapper.java

@@ -29,6 +29,10 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
 
     IPage<ContractInfo> findPageList(Page<ContractInfo> page, @Param("officeIds") String officeIds, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
 
+    // 新增方法(指定用户用,忽略数据权限)
+    @InterceptorIgnore(dataPermission = "true") // ✅ 官方原生注解,只忽略数据权限
+    IPage<ContractInfo> findPageListNoDataPerm(Page<ContractInfo> page, @Param("officeIds") String officeIds, @Param(Constants.WRAPPER) QueryWrapper<ContractInfo> wrapper);
+
     ContractInfo findById (@Param("id") String id);
 
     ContractInfo findFileInfoById (@Param("id") String id);

+ 67 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/contractRegistration/mapper/xml/ContractInfoMapper.xml

@@ -89,6 +89,73 @@
 		${ew.customSqlSegment}
 		ORDER BY a.update_time DESC
     </select>
+
+
+    <select id="findPageListNoDataPerm" resultType="com.jeeplus.finance.contractRegistration.domain.ContractInfo">
+        SELECT
+            DISTINCT a.id,
+                     c.`name` AS create_by,
+                     c.`name` AS createName,
+                     c.`id` AS createId,
+                     a.create_time,
+                     a.update_by_id,
+                     a.update_time,
+                     a.del_flag,
+                     a.contract_no as contractNo,
+                     a.contract_name as contractName,
+                     a.payer_subject as payerSubject,
+                     a.payment_method as paymentMethod,
+                     DATE_FORMAT(a.signing_date,'%Y-%m-%d') as signingDate,
+                     a.contract_amount as contractAmount,
+                     a.actual_contract_amount as actualContractAmount,
+                     a.contract_num as contractNum,
+                     a.payment_agreement as paymentAgreement,
+                     a.change_num as changeNum,
+                     a.department,
+                     a.client_contacts as clientContacts,
+                     a.client_contacts_phone as clientContactsPhone,
+                     a.contract_approval_type as contractApprovalType,
+                     a.proc_ins_id as procInsId,
+                     a.process_definition_id as processDefinitionId,
+                     a.contract_amount_type,
+                     a.contract_opposite,
+                     a.contract_fee,
+                     a.payment_describe,
+                     a.contract_type,
+                     a.contract_serial_number,
+                     a.fees,
+                     a.status,
+                     b.filed_type as filedType,
+                     e.ID_ as taskFiledId,
+                     b.proc_ins_id as taskFiledProcInsId,
+                     d.name as departmentName,
+                     f.borrow_type,
+                     f.create_by_id as borrowUserId,
+                     g.ID_ as task_borrow_id,
+                     h.filed_paper_type as filedPaperType,
+                     h.filed_no as filedNo,
+                     h.confirm_filed_no as confirmFiledNo,
+                     h.proc_ins_id as taskFiledPaperProcInsId,
+                     cw_wcb.name as client_contacts_name,
+                     art.ID_ as task_id,
+                     art_fp.ID_ as file_paper_task_id
+        FROM
+            cw_work_contract_info a
+                LEFT JOIN cw_work_contract_file b on a.id = b.contract_info_id
+                LEFT JOIN sys_user c ON a.create_by_id = c.id
+                left join sys_user_manage_office sumo on sumo.office_id = c.office_id
+                LEFT JOIN act_ru_task e ON b.proc_ins_id = e.PROC_INST_ID_
+                LEFT JOIN sys_office d on a.department = d.id
+                LEFT JOIN cw_work_contract_borrow f ON a.id = f.contract_info_id
+                LEFT JOIN act_ru_task g ON f.proc_ins_id = g.PROC_INST_ID_
+                LEFT JOIN cw_work_contract_file_paper h on a.id = h.contract_info_id
+                LEFT JOIN cw_work_client_base cw_wcb on a.client_contacts = cw_wcb.id and cw_wcb.del_flag = '0'
+                LEFT JOIN act_ru_task art ON a.proc_ins_id = art.PROC_INST_ID_
+                LEFT JOIN act_ru_task art_fp ON h.proc_ins_id = art_fp.PROC_INST_ID_
+            ${ew.customSqlSegment}
+        ORDER BY a.update_time DESC
+    </select>
+
     <select id="findById" resultType="com.jeeplus.finance.contractRegistration.domain.ContractInfo">
         SELECT
 			a.id,

+ 23 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/contractRegistration/service/ContractInfoService.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
+import com.jeeplus.common.SecurityUtils;
 import com.jeeplus.common.TokenProvider;
 import com.jeeplus.core.domain.BaseEntity;
 import com.jeeplus.finance.contractRegistration.domain.ContractFile;
@@ -209,7 +210,28 @@ public class ContractInfoService {
             }
         }*/
 
-        IPage<ContractInfo> pageList = mapper.findPageList(page, officeIds.toString(), wrapper);
+        // ===================== 最终、唯一、正确代码 =====================
+        // 指定的3个人
+        List<String> SPECIAL_USERS = Arrays.asList(
+                "1602914069562048513",
+                "1602914075140472833",
+                "1602914077761912834"
+        );
+
+        // 当前登录人ID
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+
+        IPage<ContractInfo> pageList;
+
+        // ✅ 是这几个人 → 调用【无数据权限】方法
+        if (SPECIAL_USERS.contains(userDTO.getId())) {
+            pageList = mapper.findPageListNoDataPerm(page, officeIds.toString(), wrapper);
+        }
+        // ✅ 普通用户 → 调用原有方法
+        else {
+            pageList = mapper.findPageList(page, officeIds.toString(), wrapper);
+        }
+// ===============================================================
 
         return pageList;
     }

+ 2 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectReportData.java

@@ -629,11 +629,13 @@ public class CwProjectReportData extends BaseDTO {
      * 签字注师1名字
      */
     @TableField(exist = false)
+    @Excel(name = "签字注师1",width = 12,orderNum = "24")
     private String signatureAnnotator1Name;
     /**
      * 签字注师2名字
      */
     @TableField(exist = false)
+    @Excel(name = "签字注师2",width = 12,orderNum = "25")
     private String signatureAnnotator2Name;
     /**
      * 实际创建人名字

+ 5 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportMapper.xml

@@ -143,6 +143,8 @@
                         cw_prs3.process_definition_id as process_definition_id3,
                         cw_prs3.status as status3,
                         cw_prs3.id as sid3,
+            su1.name as signatureAnnotator1Name,
+            su2.name as signatureAnnotator2Name,
                         artar.ID_ as review_task_number_id,
                         art.ID_ as rev_task_id,
                         arta.ID_ as rev_task_id2,
@@ -151,6 +153,9 @@
                         art3.ID_ as sign_task_id3,
                         actru.ID_ as revocationTaskId
         FROM cw_project_report a
+
+                 LEFT JOIN sys_user su1 on a.signature_annotator1 = su1.id
+                 LEFT JOIN sys_user su2 on a.signature_annotator2 = su2.id
                  LEFT JOIN cw_project_records b ON a.project_id = b.id
                  LEFT JOIN sys_office c ON a.office_id = c.id
                  LEFT JOIN sys_user d ON a.create_by_id = d.id