Pārlūkot izejas kodu

徐珊业务需求 评估显示,项目归档待办

sangwenwei 1 gadu atpakaļ
vecāks
revīzija
d249d60da5

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

@@ -575,4 +575,7 @@ public class CwProjectReportData extends BaseDTO {
      * 修改签字注师  流程taskId
      */
     private String taskSigId;
+
+    //当前登录人角色是否是苏州报告签字盖章代办
+    private String isXs;
 }

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

@@ -34,6 +34,16 @@ public interface CwProjectReportMapper extends BaseMapper<CwProjectReport> {
     //@InterceptorIgnore(tenantLine = "true")
     IPage<CwProjectReportData> findList(Page<CwProjectReportData> page, @Param("isBmzr") String isBmzr, @Param("officeIds") String officeIds, @Param(Constants.WRAPPER) QueryWrapper<CwProjectReportData> queryWrapper);
 
+    /**
+     * 苏州报告签字盖章代办列表查询
+     * @param page
+     * @param isBmzr
+     * @param officeIds
+     * @param queryWrapper
+     * @return
+     */
+    IPage<CwProjectReportData> findList2(Page<CwProjectReportData> page, @Param("isBmzr") String isBmzr, @Param("officeIds") String officeIds, @Param(Constants.WRAPPER) QueryWrapper<CwProjectReportData> queryWrapper);
+
     @InterceptorIgnore(tenantLine = "true")
     List<WorkAttachmentInfo> findFileList(@Param("id") String id);
     @InterceptorIgnore(tenantLine = "true")

+ 3 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/CwProjectReportSignatureMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jeeplus.finance.projectReport.domain.CwProjectReportSignature;
 import com.jeeplus.finance.projectReport.domain.CwSignatureAnnotator;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -20,6 +21,8 @@ public interface CwProjectReportSignatureMapper extends BaseMapper<CwProjectRepo
     void updateInfoById(CwProjectReportSignature info);
 
     List<CwSignatureAnnotator> getSignatureAnnotatorList(String reportId);
+
+    void deleteByTaskId(@Param("taskIdByprocInstId") String taskIdByprocInstId);
 }
 
 

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

@@ -136,6 +136,107 @@
         ${ew.customSqlSegment}
         ORDER BY a.create_time DESC
     </select>
+
+    <select id="findList2" resultType="com.jeeplus.finance.projectReport.domain.CwProjectReportData">
+        SELECT
+        DISTINCT a.id,
+        a.create_by_id as createById,
+        a.create_time,
+        a.update_by_id,
+        a.update_time,
+        a.del_flag,
+        a.remarks,
+        a.status,
+        a.document_no,
+        a.project_report_number,
+        a.project_id,
+        a.office_id,
+        a.signature_type,
+        a.signature_annotator1,
+        a.signature_annotator2,
+        a.signature_contract_id,
+        a.real_create,
+        a.proc_ins_id,
+        a.process_definition_id,
+        a.signature_annotator_status,
+        b.project_number as projectNumber,
+        b.project_name as projectName,
+        b.project_master_id as projectMasterId,
+        b.real_header as projectMasterId2,
+        c.name as departmentName,
+        d.name as userName,
+        ifnull(cw_pa.audit_money,"0") as "auditFees",
+        e.name as projectMasterName,
+        b.real_header as projectMaster2Id,
+        f.name as projectMaster2Name,
+        cw_prs1.proc_ins_id as proc_ins_id1,
+        cw_prs1.process_definition_id as process_definition_id1,
+        cw_prs1.status as status1,
+        cw_prs1.id as sid1,
+        cw_prs2.proc_ins_id as proc_ins_id2,
+        cw_prs2.process_definition_id as process_definition_id2,
+        cw_prs2.status as status2,
+        cw_prs2.id as sid2,
+        cw_prs3.proc_ins_id as proc_ins_ids3,
+        cw_prs3.process_definition_id as process_definition_id3,
+        cw_prs3.status as status3,
+        cw_prs3.id as sid3,
+        ifnull(cw_rev.review_status,'0') as reviewStatus,
+        cw_rev.proc_ins_id as procInsId3,
+        cw_rev.new_type as newType,
+        cw_rev.audit_time as auditTime,
+        new_line.report_no as reportNo,
+        cwcb.name as servedUnitName,
+        art.ID_ as rev_task_id,
+        arta.ID_ as rev_task_id2,
+        art1.ID_ as sign_task_id1,
+        art2.ID_ as sign_task_id2,
+        art3.ID_ as sign_task_id3,
+        a.industry,
+        a.business_objects,
+        a.report_name,
+        cw_na.proc_ins_id as applyProcId,
+        cw_na.process_definition_id as applyProcDefId,
+        ifnull(cw_na.review_status,'0') as applyStatus,
+        ifnull(cw_na.take_number_type,'0') as takeNumberType,
+        cw_na.improper_take_cause as improperTakeCause,
+
+        artar.ID_ as review_task_number_id,
+        cw_nra.proc_ins_id as applyReviewProcId,
+        cw_nra.process_definition_id as applyReviewProcDefId,
+        ifnull(cw_nra.review_status,'0') as applyReviewStatus,
+        cw_ci.contract_name
+        FROM cw_project_report a
+        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
+        LEFT JOIN sys_user e on b.project_master_id = e.id
+        LEFT JOIN sys_user f on b.real_header = f.id
+
+        LEFT JOIN cw_project_report_signature cw_prs1 on cw_prs1.report_id = a.id and cw_prs1.type = '1' and cw_prs1.del_flag = '0'
+        LEFT JOIN cw_project_report_signature cw_prs2 on cw_prs2.report_id = a.id and cw_prs2.type = '2' and cw_prs2.del_flag = '0'
+        LEFT JOIN cw_project_report_signature cw_prs3 on cw_prs3.report_id = a.id and cw_prs3.type = '3' and cw_prs3.del_flag = '0'
+        left join act_ru_task art1 ON cw_prs1.proc_ins_id = art1.PROC_INST_ID_
+        left join act_ru_task art2 ON cw_prs2.proc_ins_id = art2.PROC_INST_ID_
+        left join act_ru_task art3 ON cw_prs3.proc_ins_id = art3.PROC_INST_ID_
+
+        left join cw_project_report_new_line new_line on a.id = new_line.report_id and new_line.del_flag = '0'
+        left join cw_project_report_review cw_rev on a.id = cw_rev.report_id and cw_rev.del_flag = '0'
+        LEFT JOIN cw_project_report_archive cw_pa on  a.id = cw_pa.report_id and cw_pa.del_flag = '0'
+        left join act_ru_task art ON cw_rev.proc_ins_id = art.PROC_INST_ID_
+        left join cw_project_members cpm on b.id = cpm.project_id
+        left join sys_user sub on cpm.user_id = sub.id
+        left join sys_user_manage_office sumo on sumo.office_id = sub.office_id
+        left join cw_work_client_base cwcb on new_line.served_unit_id = cwcb.id
+        LEFT JOIN cw_work_contract_info cw_ci on  b.contract_id=cw_ci.id
+        LEFT JOIN cw_project_report_number_apply cw_na on  a.id = cw_na.report_id
+        LEFT JOIN cw_project_report_number_review_apply cw_nra on  a.id = cw_nra.report_id
+         left join act_ru_task arta ON cw_na.proc_ins_id = arta.PROC_INST_ID_
+         left join act_ru_task artar ON cw_nra.proc_ins_id = artar.PROC_INST_ID_
+        ${ew.customSqlSegment}
+        ORDER BY cw_rev.audit_time DESC
+    </select>
+
     <select id="queryById" resultType="com.jeeplus.finance.projectReport.domain.CwProjectReportData">
         SELECT
         a.id,

+ 4 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportSignatureMapper.xml

@@ -99,5 +99,9 @@
         where sa.create_by_id=(SELECT create_by_id from cw_project_report where id=#{reportId}) and sa.report_id=#{reportId} and sa.del_flag='0'
     </select>
 
+    <delete id="deleteByTaskId">
+        delete from my_notice_list where task_id = #{taskIdByprocInstId}
+    </delete>
+
 
 </mapper>

+ 79 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportService.java

@@ -36,8 +36,10 @@ import com.jeeplus.flowable.feign.IFlowableApi;
 import com.jeeplus.sys.domain.User;
 import com.jeeplus.sys.domain.WorkAttachmentInfo;
 import com.jeeplus.sys.feign.IDictApi;
+import com.jeeplus.sys.feign.IRoleApi;
 import com.jeeplus.sys.feign.IUserApi;
 import com.jeeplus.sys.feign.IWorkAttachmentApi;
+import com.jeeplus.sys.service.dto.RoleDTO;
 import com.jeeplus.sys.service.dto.UserDTO;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -635,6 +637,17 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         IPage<CwProjectReportData> list = reportMapper.findList(page,isBmzr, officeIds.toString(), queryWrapper);
         long l2 = System.currentTimeMillis();
         System.out.println("报告列表查询service方法消耗时间:" + (l2-l1));
+
+        //获取当前登录人角色是否是苏州报告签字盖章代办
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+        if (CollectionUtil.isNotEmpty(userDTO.getRoleDTOList())){
+            for (RoleDTO roleDTO : userDTO.getRoleDTOList()) {
+                RoleDTO dtoById = SpringUtil.getBean(IRoleApi.class).getRoleDTOById(roleDTO.getId());
+                if ("szbgqzgzdb".equals(dtoById.getEnName())){
+                    list = reportMapper.findList2(page,isBmzr, officeIds.toString(), queryWrapper);
+                }
+            }
+        }
         List<UserDTO> allUserInfo = (List<UserDTO>) RedisUtils.getInstance().get(CacheNames.USER_CACHE_USER_ALL_INFO);
         if (null == allUserInfo || allUserInfo.size() == 0) {
             allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
@@ -1098,6 +1111,17 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
             reportData.setProcInsSigId(cwSignatureAnnotator.getProcInsId());
             reportData.setSigReason(cwSignatureAnnotator.getReason());
         }
+        //获取当前登录人角色是否是苏州报告签字盖章代办
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+        if (CollectionUtil.isNotEmpty(userDTO.getRoleDTOList())){
+            for (RoleDTO roleDTO : userDTO.getRoleDTOList()) {
+                RoleDTO dtoById = SpringUtil.getBean(IRoleApi.class).getRoleDTOById(roleDTO.getId());
+                if ("szbgqzgzdb".equals(dtoById.getEnName())){
+                    reportData.setIsXs("1");
+                }
+            }
+        }
+
         return reportData;
     }
 
@@ -2866,7 +2890,30 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
             cwProjectReportSignature.setSignatureAnnotator2Status("0");
             cwProjectReportSignature.setSealAdminStatus("0");
         }
+        //判断是否是撤回签章
+        if ("3".equals(data.getStatus())){
+            //获取当前登录人角色是否是苏州报告签字盖章代办
+            UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+            if (CollectionUtil.isNotEmpty(userDTO.getRoleDTOList())){
+                for (RoleDTO roleDTO : userDTO.getRoleDTOList()) {
+                    RoleDTO dtoById = SpringUtil.getBean(IRoleApi.class).getRoleDTOById(roleDTO.getId());
+                    if ("szbgqzgzdb".equals(dtoById.getEnName())){
+                        //根据id查询procInsId
+                        CwProjectReportSignature signature = this.findBySignatureId(data.getId());
+                        if (ObjectUtil.isNotEmpty(signature)){
+                            //根据procInsId查找taskId
+                            String taskIdByprocInstId = flowTaskService.getTaskIdByprocInstId(signature.getProcInsId());
+                            //根据taskid将通知表中的该条记录进行删除
+                            cwProjectReportSignatureMapper.deleteByTaskId(taskIdByprocInstId);
+                        }
+                    }
+                }
+            }
+        }
         cwProjectReportSignatureMapper.updateInfoById(cwProjectReportSignature);
+
+
+
         return "操作成功";
     }
 
@@ -3280,6 +3327,22 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         }
         // 5. 根据报告id删除报告归档信息  // 逻辑删除
         cwProjectReportArchiveMapper.delete(new LambdaQueryWrapper<CwProjectReportArchive>().eq(CwProjectReportArchive::getReportId, reportId));
+        //删除通知表中的对应通知数据 物理删除
+        for (CwProjectReportSignature cwProjectReportSignature : signList) {
+                //获取当前登录人角色是否是苏州报告签字盖章代办
+                UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+                if (CollectionUtil.isNotEmpty(userDTO.getRoleDTOList())){
+                    for (RoleDTO roleDTO : userDTO.getRoleDTOList()) {
+                        RoleDTO dtoById = SpringUtil.getBean(IRoleApi.class).getRoleDTOById(roleDTO.getId());
+                        if ("szbgqzgzdb".equals(dtoById.getEnName())){
+                            //根据procInsId查找taskId
+                            String taskIdByprocInstId = flowTaskService.getTaskIdByprocInstId(cwProjectReportSignature.getProcInsId());
+                            //根据taskid将通知表中的该条记录进行删除
+                            cwProjectReportSignatureMapper.deleteByTaskId(taskIdByprocInstId);
+                        }
+                    }
+                }
+        }
     }
 
     /**
@@ -3325,7 +3388,22 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
 
         //6.修改质量复核流程信息
         mapper.updateReviewStatusByReportId("0",reportId);
-
+        //删除通知表中的对应通知数据 物理删除
+        for (CwProjectReportSignature cwProjectReportSignature : signList) {
+            //获取当前登录人角色是否是苏州报告签字盖章代办
+            UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+            if (CollectionUtil.isNotEmpty(userDTO.getRoleDTOList())){
+                for (RoleDTO roleDTO : userDTO.getRoleDTOList()) {
+                    RoleDTO dtoById = SpringUtil.getBean(IRoleApi.class).getRoleDTOById(roleDTO.getId());
+                    if ("szbgqzgzdb".equals(dtoById.getEnName())){
+                        //根据procInsId查找taskId
+                        String taskIdByprocInstId = flowTaskService.getTaskIdByprocInstId(cwProjectReportSignature.getProcInsId());
+                        //根据taskid将通知表中的该条记录进行删除
+                        cwProjectReportSignatureMapper.deleteByTaskId(taskIdByprocInstId);
+                    }
+                }
+            }
+        }
     }
 
     /**

+ 11 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/mapper/MyNoticeListMapper.java

@@ -86,6 +86,15 @@ public interface MyNoticeListMapper extends BaseMapper<MyNoticeList> {
     IPage<MyNoticeList> selectNoticePage2(Page<MyNoticeList> page, @Param(Constants.WRAPPER)QueryWrapper<MyNoticeList> queryWrapper);
 
     /**
+     * (苏州报告签字盖章代办)查询我的通知列表数据
+     * @param page
+     * @param queryWrapper
+     * @return
+     */
+    @InterceptorIgnore(tenantLine = "true")
+    IPage<MyNoticeList> selectNoticePage3(Page<MyNoticeList> page, @Param(Constants.WRAPPER)QueryWrapper<MyNoticeList> queryWrapper);
+
+    /**
      *查询通知信息
      * @param wrapper
      * @return
@@ -99,4 +108,6 @@ public interface MyNoticeListMapper extends BaseMapper<MyNoticeList> {
      */
     @InterceptorIgnore(tenantLine = "true")
     void updateInfoById(@Param("id")String id);
+    @InterceptorIgnore(tenantLine = "true")
+    void updateInfoById2(@Param("id")String id);
 }

+ 15 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/mapper/xml/MyNoticeListMapper.xml

@@ -149,6 +149,18 @@
 		 FROM my_notice_list a
 		 LEFT JOIN sys_user su ON a.notice_id = su.id
 		 ${ew.customSqlSegment}
+		 order by a.create_time DESC
+	</select>
+	<select id="selectNoticePage3" resultType="com.jeeplus.flowable.model.MyNoticeList">
+		SELECT
+		 a.id, a.create_by_id, a.create_time,
+		 a.update_by_id, a.update_time, a.del_flag, a.task_id,
+		 a.title, a.def_id, a.task_name, a.link, a.create_user, a.create_time,
+		 a.type, a.repetition_count, a.notice_id, su.name AS "noticeName"
+		 FROM my_notice_list a
+		 LEFT JOIN sys_user su ON a.notice_id = su.id
+		 ${ew.customSqlSegment}
+		 order by a.view_time DESC
 	</select>
 
     <insert id="insertMyNotice">
@@ -215,4 +227,7 @@
 	<update id="updateInfoById">
 		update my_notice_list set type = 1 where id = #{id}
 	</update>
+	<update id="updateInfoById2">
+		update my_notice_list set type = 1,view_time = NOW() where id = #{id}
+	</update>
 </mapper>

+ 6 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/model/MyNoticeList.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jeeplus.core.domain.BaseEntity;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -67,4 +68,9 @@ public class MyNoticeList extends BaseEntity {
      */
     private Integer repetitionCount;
 
+    //查看时间
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date viewTime;
+
 }

+ 34 - 1
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/MyNoticeService.java

@@ -1,5 +1,6 @@
 package com.jeeplus.flowable.service;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -11,7 +12,9 @@ import com.jeeplus.core.domain.BaseEntity;
 import com.jeeplus.flowable.mapper.MyNoticeListMapper;
 import com.jeeplus.flowable.model.ActRuTaskInfo;
 import com.jeeplus.flowable.model.MyNoticeList;
+import com.jeeplus.sys.feign.IRoleApi;
 import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.service.dto.RoleDTO;
 import com.jeeplus.sys.service.dto.UserDTO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.core.Authentication;
@@ -74,7 +77,7 @@ public class MyNoticeService {
         // 获取当前登录人名称查询出未查看通知列表
         QueryWrapper<MyNoticeList> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("a.notice_id", SpringUtil.getBean ( IUserApi.class ).getByToken (TokenProvider.getCurrentToken()).getId());
-        queryWrapper.orderByDesc("a.create_time");
+//        queryWrapper.orderByDesc("a.create_time");
 
         if (StringUtils.isNotEmpty(type)) {
             queryWrapper.eq("a.type", Integer.parseInt(type));
@@ -89,6 +92,16 @@ public class MyNoticeService {
         }
 //        Page<MyNoticeList> listPage = mapper.selectPage(page, queryWrapper);
         IPage<MyNoticeList> listPage = mapper.selectNoticePage2(page, queryWrapper);
+        //获取当前登录人角色是否是苏州报告签字盖章代办
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+        if (CollectionUtil.isNotEmpty(userDTO.getRoleDTOList())){
+            for (RoleDTO roleDTO : userDTO.getRoleDTOList()) {
+                RoleDTO dtoById = SpringUtil.getBean(IRoleApi.class).getRoleDTOById(roleDTO.getId());
+                if ("szbgqzgzdb".equals(dtoById.getEnName())){
+                    listPage = mapper.selectNoticePage3(page, queryWrapper);
+                }
+            }
+        }
         if (CollectionUtils.isNotEmpty(listPage.getRecords())) {
             for (MyNoticeList notice : listPage.getRecords()) {
                 notice.setType("0".equals(notice.getType())? "未读":"已读");
@@ -158,6 +171,8 @@ public class MyNoticeService {
     }
 
     public String update(String taskId, String noticeId,String taskName) {
+        //获取当前登录人角色是否是苏州报告签字盖章代办
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
         LambdaQueryWrapper<MyNoticeList> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(BaseEntity::getDelFlag, 0).eq(MyNoticeList::getTaskId, taskId).eq(MyNoticeList::getNoticeName, noticeId).eq(MyNoticeList::getType, 0);
         //如果流程名称不为空,则添加流程名称筛选项
@@ -169,6 +184,24 @@ public class MyNoticeService {
             one.setType("1");
             mapper.updateInfoById(one.getId());
         }
+        if (CollectionUtil.isNotEmpty(userDTO.getRoleDTOList())){
+            for (RoleDTO roleDTO : userDTO.getRoleDTOList()) {
+                RoleDTO dtoById = SpringUtil.getBean(IRoleApi.class).getRoleDTOById(roleDTO.getId());
+                if ("szbgqzgzdb".equals(dtoById.getEnName())){
+                    LambdaQueryWrapper<MyNoticeList> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.eq(BaseEntity::getDelFlag, 0).eq(MyNoticeList::getTaskId, taskId).eq(MyNoticeList::getNoticeName, noticeId);
+                    //如果流程名称不为空,则添加流程名称筛选项
+                    if(StringUtils.isNotBlank(taskName)){
+                        queryWrapper.eq(MyNoticeList::getTaskName,taskName);
+                    }
+                    MyNoticeList one1 = mapper.selectInfo(queryWrapper);
+                    if (one1 != null) {
+                        one1.setType("1");
+                        mapper.updateInfoById2(one1.getId());
+                    }
+                }
+            }
+        }
         return "操作成功";
     }