huangguoce 1 неделя назад
Родитель
Сommit
97dc217afb
14 измененных файлов с 444 добавлено и 9 удалено
  1. 5 0
      jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/factory/AssessApiFallbackFactory.java
  2. 5 0
      jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/feign/IAssessApi.java
  3. 0 1
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/controller/ProjectListController.java
  4. 3 1
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramArchiveMapper.xml
  5. 5 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramArchiveDto.java
  6. 38 3
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/controller/WorkContractController.java
  7. 38 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/domain/WorkContractCancel.java
  8. 49 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/domain/WorkContractInfo.java
  9. 12 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/mapper/WorkContractCancelMapper.java
  10. 22 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/mapper/WorkContractInfoMapper.java
  11. 135 4
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/mapper/xml/WorkContractInfoMapper.xml
  12. 94 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/service/WorkContractService.java
  13. 25 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/service/dto/WorkContractInfoDto.java
  14. 13 0
      jeeplus-modules/jeeplus-xxl-job-executor-sample/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java

+ 5 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/factory/AssessApiFallbackFactory.java

@@ -100,6 +100,11 @@ public class AssessApiFallbackFactory implements FallbackFactory<IAssessApi> {
             public void redInvoiceRetryScheduledTask() {
 
             }
+
+            @Override
+            public void getThreeMonthsUnarchivedContracts() {
+
+            }
         };
     }
 }

+ 5 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/feign/IAssessApi.java

@@ -114,4 +114,9 @@ public interface IAssessApi {
     @GetMapping(value = "/finance/invoice/redInvoiceRetryScheduledTask")
     void redInvoiceRetryScheduledTask();
 
+    /**
+     * 评估合同超过3个月未归档自动提醒
+     */
+    @GetMapping(value = "/workContract/workContractInfo/getThreeMonthsUnarchivedContracts")
+    void getThreeMonthsUnarchivedContracts();
 }

+ 0 - 1
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/controller/ProjectListController.java

@@ -807,5 +807,4 @@ public class ProjectListController {
     public void insertMembers(String projectId,String membersId,String userId) throws Exception {
         projectListService.addMembers(projectId,membersId,userId);
     }
-
 }

+ 3 - 1
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramArchiveMapper.xml

@@ -166,10 +166,12 @@
         ppli.project_mould as projectMould,
         su1.name as currentDisposePersonName,
         su3.name as signatureEvaluatorSecondName,
-        su2.name as signatureEvaluatorFirstName
+        su2.name as signatureEvaluatorFirstName,
+        wci.filed_type as contractStatus
         from program_archive pa
         left join program_report_no prn on prn.program_id = pa.program_id and prn.del_flag = '0'
         left join program_project_list_info ppli on ppli.id = pa.program_id and ppli.del_flag = '0'
+        left join work_contract_info wci on ppli.contract_id = wci.id and wci.del_flag = '0'
         left join sys_user su1 on pa.current_dispose_person= su1.id
         left join sys_user su2 on pa.signature_evaluator_first= su2.id
         left join sys_user su3 on pa.signature_evaluator_second= su3.id

+ 5 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramArchiveDto.java

@@ -256,5 +256,10 @@ public class ProgramArchiveDto extends BaseDTO {
      */
     private String projectMould;
 
+    /**
+     * 合同归档状态
+     */
+    private String contractStatus;
+
     private static final long serialVersionUID = 1L;
 }

+ 38 - 3
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/controller/WorkContractController.java

@@ -5,16 +5,16 @@ import cn.hutool.core.util.StrUtil;
 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.jeeplus.assess.program.configuration.projectList.service.dto.ProgramArchiveDto;
+import com.jeeplus.assess.workContract.domain.WorkContractCancel;
 import com.jeeplus.common.utils.ResponseUtil;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 //import com.jeeplus.sys.utils.TicketQueryUtils;
 import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo;
-import com.jeeplus.assess.workClientInfo.domain.WorkClientInfo;
-import com.jeeplus.assess.workClientInfo.domain.dto.WorkClientInfosDto;
-import com.jeeplus.assess.workClientInfo.service.WorkClientService;
 import com.jeeplus.assess.workContract.domain.WorkContractInfo;
 import com.jeeplus.assess.workContract.service.WorkContractService;
 import com.jeeplus.assess.workContract.service.dto.WorkContractInfoDto;
+import com.jeeplus.logging.annotation.ApiLog;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -50,6 +50,9 @@ public class WorkContractController {
         if (ObjectUtil.isNotEmpty(workClientInfo) && StringUtils.isNotBlank(workClientInfo.getCreateById())) {
             workContractInfoQueryWrapper.eq("a.create_by_id", workClientInfo.getCreateById()).or().like("c.name", workClientInfo.getCreateById());
         }
+        if(StringUtils.isNotBlank(workClientInfo.getCancelStatus())){
+            workContractInfoQueryWrapper.eq("wcc.status",workClientInfo.getCancelStatus());
+        }
         IPage<WorkContractInfo> list = workContractService.list(page, workContractInfoQueryWrapper, clientName, contractDates, contractAmounts, statusList, status,contractType);
         return ResponseEntity.ok (list);
     }
@@ -107,4 +110,36 @@ public class WorkContractController {
         boolean data = workContractService.checkName(name);
         return data;
     }
+
+    /**
+     * 根据id修改状态cancelStatus
+     */
+    @ApiOperation(value = "根据id修改状态cancelStatus")
+    @PostMapping(value = "updatecancelStatusById")
+    public ResponseEntity updatecancelStatusById(@RequestBody WorkContractCancel workContractCancel) {
+        String id = workContractService.updatecancelStatusById(workContractCancel);
+        return ResponseUtil.newInstance().add("businessTable", "work_contract_cancel").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 根据项目id查询关联的合同
+     * @return
+     */
+    @ApiLog("根据项目id查询关联的合同")
+    @GetMapping("/getContractByProgramId")
+    public ResponseEntity<WorkContractInfoDto> getContractByProgramId(@RequestParam("programId") String programId) throws Exception {
+        WorkContractInfoDto workContractInfo = workContractService.getContractByProgramId(programId);
+        return ResponseEntity.ok(workContractInfo);
+    }
+
+
+    /**
+     * 查询超过三个月未归档的合同
+     */
+    @ApiLog("查询超过三个月未归档的合同")
+    @GetMapping("/getThreeMonthsUnarchivedContracts")
+    public void getThreeMonthsUnarchivedContracts() throws Exception {
+        workContractService.getThreeMonthsUnarchivedContracts();
+    }
+
 }

+ 38 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/domain/WorkContractCancel.java

@@ -0,0 +1,38 @@
+package com.jeeplus.assess.workContract.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("work_contract_cancel")
+public class WorkContractCancel extends BaseEntity {
+
+    /**
+     * 合同id
+     */
+    private String contractInfoId;
+    /**
+     * 流程id
+     */
+    private String procInsId;
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 原因
+     */
+    private String reason;
+
+
+    /**
+     * 当前类型
+     */
+    private String type;
+
+
+}

+ 49 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/domain/WorkContractInfo.java

@@ -136,6 +136,48 @@ public class WorkContractInfo extends BaseEntity {
     private String status;
 
     /**
+     * 作废状态
+     */
+    @TableField(exist = false)
+    private String cancelStatus;
+    /**
+     * 类型(作废,恢复)
+     */
+    @TableField(exist = false)
+    private String cancelType;
+
+
+    /**
+     * 作废/恢复原因
+     */
+    @TableField(exist = false)
+    private String reason;
+
+    /**
+     * 作废流程id
+     */
+    @TableField(exist = false)
+    private String procInsIdCancel;
+
+    /**
+     * 作废数据id
+     */
+    @TableField(exist = false)
+    private String cancelId;
+
+    /**
+     * 作废流程任务id
+     */
+    @TableField(exist = false)
+    private String taskIdCancel;
+
+    /**
+     * 作废流程审核人
+     */
+    @TableField(exist = false)
+    private  List<String> auditUserIdsCancel;
+
+    /**
      * 归档状态
      */
     @Query(tableColumn = "d.filed_type")
@@ -181,4 +223,11 @@ public class WorkContractInfo extends BaseEntity {
     @TableField(exist = false)
     private List<String> auditUserIdsFiled;
 
+
+    /**
+     * 合同关联的报告号
+     */
+    @TableField(exist = false)
+    private List<String> reportNo;
+
 }

+ 12 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/mapper/WorkContractCancelMapper.java

@@ -0,0 +1,12 @@
+package com.jeeplus.assess.workContract.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.workContract.domain.WorkContractCancel;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface WorkContractCancelMapper extends BaseMapper<WorkContractCancel> {
+
+}

+ 22 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/mapper/WorkContractInfoMapper.java

@@ -51,6 +51,11 @@ public interface WorkContractInfoMapper extends BaseMapper<WorkContractInfo> {
 
     void updateStatusById(@Param("id") String id, @Param("status")String status);
 
+
+    void updatecancelById(@Param("id") String id, @Param("cancelStatus")String cancelStatus, @Param("type")String type, @Param("reason")String reson);
+
+    void updatecancelStatusById(@Param("id") String id, @Param("cancelStatus")String cancelStatus, @Param("type")String type, @Param("reason")String reson);
+
     IPage<ProgramProjectListInfo> relationProjectList(@Param("id") String id, Page<ProgramProjectListInfo> page);
 
     /**
@@ -61,4 +66,21 @@ public interface WorkContractInfoMapper extends BaseMapper<WorkContractInfo> {
     List<WorkContractInfoDto> getInfoByClientId (@Param("clientId") String clientId);
     //查找合同中与项目编号年份一致的最后一条评估合同的编号
     String getNoByYear(@Param("projectYear")String projectYear, @Param("contractNum")String contractNum);
+
+    List<String> getReportNoByContractId (@Param("id") String id);
+
+    /**
+     * 根据项目id查询合同信息
+     * @param programId
+     * @return
+     */
+    WorkContractInfoDto getContractByProgramId (@Param("programId") String programId);
+
+    /**
+     * 查询超过3个月未归档的合同
+     * @return
+     */
+    List<WorkContractInfoDto> getThreeMonthsUnarchivedContracts();
+
+
 }

+ 135 - 4
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/mapper/xml/WorkContractInfoMapper.xml

@@ -34,6 +34,11 @@
 			a.proc_ins_id,
 			a.process_definition_id,
 			a.status,
+			wcc.status as cancelStatus,
+			wcc.id as cancelId,
+			wcc.type as cancelType,
+			artCan.ID_ as taskIdCancel,
+			wcc.proc_ins_id AS procInsIdCancel,
 			f.borrow_type,
 			b.ID_ as task_id,
 			a.create_by_id as create_id,
@@ -48,6 +53,10 @@
 			LEFT JOIN act_ru_task e ON d.proc_ins_id = e.PROC_INST_ID_
 			LEFT JOIN 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 work_contract_cancel wcc ON a.id = wcc.contract_info_id and wcc.del_flag = 0
+			LEFT JOIN act_ru_task artCan ON wcc.proc_ins_id = artCan.PROC_INST_ID_
+
+
 		${ew.customSqlSegment}
 		ORDER BY a.update_time DESC
 	</select>
@@ -82,6 +91,11 @@
 			a.create_by_id,
 			a.update_time,
 			a.status,
+			wcc.status as cancelStatus,
+			wcc.proc_ins_id AS procInsIdCancel,
+			wcc.reason AS reason,
+			wcc.id as cancelId,
+			wcc.type as cancelType,
 			a.update_by_id,
 			a.del_flag,
 			d.id as contract_file_id,
@@ -89,8 +103,9 @@
 		FROM
 			work_contract_info a
 			LEFT JOIN work_contract_file d ON a.id = d.contract_info_id and d.del_flag = 0
+			LEFT JOIN work_contract_cancel wcc ON a.id = wcc.contract_info_id and wcc.del_flag = 0
 		WHERE
-			a.id = #{id}
+			(a.id = #{id} or wcc.id = #{id})
 			AND a.del_flag = 0
 	</select>
 
@@ -172,6 +187,14 @@
 		UPDATE work_contract_info SET `status` = #{status} WHERE del_flag = 0 AND id = #{id}
 	</update>
 
+	<update id="updatecancelStatusById">
+		UPDATE work_contract_cancel SET
+		                                `status` = #{cancelStatus} ,
+		                                `type` = #{type},
+										reason = #{reason}
+		                            WHERE del_flag = 0 AND id = #{id}
+	</update>
+
 	<select id="relationProjectList" resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
 		SELECT
            a.id,
@@ -230,11 +253,13 @@
            a.mode,
            a.status,
            a.proc_ins_id,
-           a.process_definition_id
+           a.process_definition_id,
+		   pc.status as cancellationStatus
         FROM
             program_project_list_info a
             LEFT JOIN sys_user b ON a.create_by_id = b.id
             LEFT JOIN sys_user c ON a.project_manager = c.id
+			left join program_cancellation pc on pc.project_id = a.id and pc.del_flag = '0'
 		WHERE
 			a.contract_id = #{id}
             ORDER BY a.update_time DESC
@@ -282,7 +307,7 @@
 			a.client_id = #{clientId}
 			AND a.del_flag = 0
 	</select>
-	
+
 	
 	<select id="getNoByYear" resultType="string">
 		SELECT `no`
@@ -293,5 +318,111 @@
 		ORDER BY `no` DESC
 		LIMIT 1;
 	</select>
-	
+
+
+	<select id="getReportNoByContractId" resultType="string">
+		SELECT prn.report_no FROM work_contract_info wci
+		    LEFT JOIN program_project_list_info ppli on ppli.contract_id = wci.id and ppli.del_flag=0
+			LEFT JOIN program_report_no prn on prn.program_id = ppli.id and prn.del_flag=0
+		Where wci.id=#{id}
+	</select>
+
+	<select id="getContractByProgramId" resultType="com.jeeplus.assess.workContract.service.dto.WorkContractInfoDto">
+		SELECT
+			a.id,
+			a.client_id,
+			a.client_name,
+			a.`no`,
+			a.`name`,
+			a.contract_date,
+			a.effective_date,
+			a.closing_date,
+			a.contract_type,
+			a.contract_amount_type,
+			a.contract_amount,
+			a.contract_opposite,
+			a.contract_fee,
+			a.fees,
+			a.describes,
+			a.contract_special,
+			a.remarks,
+			a.filed_by,
+			a.filed_date,
+			a.filed_no,
+			a.filed_remarks,
+			a.proc_ins_id,
+			a.borrow_type,
+			a.create_time,
+			a.create_by_id,
+			a.update_time,
+			a.status,
+			wcc.status as cancelStatus,
+			wcc.proc_ins_id AS procInsIdCancel,
+			wcc.reason AS reason,
+			wcc.id as cancelId,
+			wcc.type as cancelType,
+			a.update_by_id,
+			a.del_flag
+		FROM
+			work_contract_info a
+				LEFT JOIN program_project_list_info ppli ON a.id = ppli.contract_id and ppli.del_flag =0
+				LEFT JOIN work_contract_cancel wcc ON a.id = wcc.contract_info_id and wcc.del_flag = 0
+		WHERE
+			ppli.id = #{programId}
+	</select>
+
+	<select id="getThreeMonthsUnarchivedContracts" resultType="com.jeeplus.assess.workContract.service.dto.WorkContractInfoDto">
+		SELECT
+			a.id,
+			a.client_id,
+			a.client_name,
+			a.`no`,
+			a.`name`,
+			a.contract_date,
+			a.effective_date,
+			a.closing_date,
+			a.contract_type,
+			a.contract_amount_type,
+			a.contract_amount,
+			a.contract_opposite,
+			a.contract_fee,
+			a.fees,
+			a.describes,
+			a.contract_special,
+			a.remarks,
+			a.filed_by,
+			a.filed_date,
+			a.filed_no,
+			d.confirm_filed_no,
+			a.filed_remarks,
+			a.proc_ins_id,
+			a.borrow_type,
+			a.create_time,
+			a.create_by_id as `createBy.id`,
+			a.update_time,
+			a.status,
+			wcc.status as cancelStatus,
+			wcc.proc_ins_id AS procInsIdCancel,
+			wcc.reason AS reason,
+			wcc.id as cancelId,
+			wcc.type as cancelType,
+			a.update_by_id,
+			a.del_flag,
+			d.id as contract_file_id,
+			d.filed_type
+		FROM
+			work_contract_info a
+				LEFT JOIN work_contract_file d ON a.id = d.contract_info_id and d.del_flag = 0
+				LEFT JOIN work_contract_cancel wcc ON a.id = wcc.contract_info_id and wcc.del_flag = 0
+		WHERE
+		a.filed_type != '5'
+		AND a.del_flag='0'
+	    AND (
+        wcc.status != '5'
+        AND wcc.status != '6'
+        OR wcc.status IS NULL
+    	)
+    	AND a.create_time &lt; DATE_SUB(NOW(), INTERVAL 3 MONTH)
+		</select>
+
 </mapper>

+ 94 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/service/WorkContractService.java

@@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.google.common.collect.Lists;
 import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo;
+import com.jeeplus.assess.workContract.domain.WorkContractCancel;
 import com.jeeplus.assess.workContract.domain.WorkContractInfo;
+import com.jeeplus.assess.workContract.mapper.WorkContractCancelMapper;
 import com.jeeplus.assess.workContract.mapper.WorkContractInfoMapper;
 import com.jeeplus.assess.workContract.service.dto.WorkContractInfoDto;
 import com.jeeplus.common.TokenProvider;
@@ -30,6 +32,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 @Service
@@ -47,6 +50,9 @@ public class WorkContractService {
     @Resource
     private IFlowableApi flowTaskService;
 
+    @Resource
+    private WorkContractCancelMapper workContractCancelMapper;
+
     public String saveInfo(WorkContractInfoDto workContractInfoDto) throws Exception {
         if (StringUtils.isNotEmpty(workContractInfoDto.getId())) {
             WorkContractInfo info = workContractInfoMapper.selectById(workContractInfoDto.getId());
@@ -105,6 +111,19 @@ public class WorkContractService {
                     i.setAuditUserIdsFiled(flowTaskService.getTaskAuditUsers(i.getTaskFiledId()));  // 获取数据审核人
                 }
             }
+            // 作废
+            if (StringUtils.isNotBlank(i.getTaskIdCancel()) && StringUtils.isNotBlank(i.getCancelStatus())) {
+                if ("2".equals(i.getCancelStatus())) { // “审核中”的数据要获取数据审核人
+                    i.setAuditUserIdsCancel(flowTaskService.getTaskAuditUsers(i.getTaskIdCancel()));  // 获取数据审核人
+                }
+            }
+
+            //查询合同关联报告号
+            List<String> reportNoList = workContractInfoMapper.getReportNoByContractId(i.getId());
+            if (reportNoList != null && !reportNoList.isEmpty()) {
+                i.setReportNo(reportNoList);
+            }
+
         });
         return pageList;
     }
@@ -199,6 +218,21 @@ public class WorkContractService {
     }
 
     /**
+     * 根据id修改状态cancelStatus
+     */
+    public String updatecancelStatusById(WorkContractCancel workContractCancel) {
+        WorkContractInfo info = workContractInfoMapper.findById(workContractCancel.getContractInfoId());
+        if(StringUtils.isNotBlank(info.getCancelId())){
+            workContractCancelMapper.updateById(workContractCancel);
+        }else{
+            workContractCancelMapper.insert(workContractCancel);
+            info.setCancelId(workContractCancel.getId());
+        }
+        return info.getCancelId();
+    }
+
+
+    /**
      * 保存附件信息
      * @param list 待保存的附件列表
      * @param userDTO 当前登录用户
@@ -512,4 +546,64 @@ public class WorkContractService {
         return false;
 
     }
+
+    /**
+     * 根据项目id查询关联的合同
+     * @return
+     */
+    public WorkContractInfoDto getContractByProgramId(String programId){
+        WorkContractInfoDto contract = workContractInfoMapper.getContractByProgramId(programId);
+        return contract;
+    }
+
+    /**
+     * 查询超过三个月未归档的合同
+     */
+    public void getThreeMonthsUnarchivedContracts(){
+        List<WorkContractInfoDto> threeMonthsUnarchivedContracts = workContractInfoMapper.getThreeMonthsUnarchivedContracts();
+        if (CollectionUtil.isEmpty(threeMonthsUnarchivedContracts)) {
+            return;
+        }
+        IUserApi userApi = SpringUtil.getBean(IUserApi.class);
+        for (WorkContractInfoDto contract : threeMonthsUnarchivedContracts) {
+            try {
+                if(!contract.getFiledType().equals("5") && ( contract.getCancelStatus() == null  || !contract.getCancelStatus().equals("5"))){
+                    // 通知内容
+                    String message = "合同:【" + contract.getName() + "】已超过3个月未归档,请及时归档";
+                    UserDTO user = userApi.getById(contract.getCreateBy().getId());
+                    if (user == null) {
+                        continue;
+                    }
+                    // 发送通知
+                    sendNotify(user, contract.getProcessDefinitionId(), contract.getProcInsId(), message);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 查询超过三个月未归档的合同发送提醒
+     * @param userDto
+     * @param defId
+     * @param procInsId
+     * @param title
+     */
+    public void sendNotify(UserDTO userDto,String defId,String procInsId,String title ){
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String day = format.format(new Date());
+        Map<String ,String > map = new HashMap<>();
+        map.put("taskId",procInsId);
+        map.put("title",title);
+        map.put("defId",defId);
+        map.put("taskName","合同超期未归档提醒");
+        map.put("createUser","管理员");
+        map.put("createTime",day);
+        map.put("noticeName",userDto.getName());
+        map.put("noticeId",userDto.getId());
+        map.put("createById",userDto.getId());
+        SpringUtil.getBean ( IFlowableApi.class ).add(map);
+    }
+
 }

+ 25 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/service/dto/WorkContractInfoDto.java

@@ -1,5 +1,6 @@
 package com.jeeplus.assess.workContract.service.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jeeplus.core.service.dto.BaseDTO;
 import com.jeeplus.sys.domain.WorkAttachmentInfo;
@@ -104,6 +105,30 @@ public class WorkContractInfoDto extends BaseDTO {
     private String status;
 
     /**
+     * 状态
+     */
+    private String cancelStatus;
+    /**
+     * 作废流程id
+     */
+    private String procInsIdCancel;
+
+    /**
+     * 作废原因
+     */
+    private String reason;
+
+    /**
+     * 作废数据id
+     */
+    private String cancelId;
+
+    /**
+     * 作废数据id
+     */
+    private String cancelType;
+
+    /**
      * 附件信息
      */
     private List<WorkAttachmentInfo> workAttachmentList;

+ 13 - 0
jeeplus-modules/jeeplus-xxl-job-executor-sample/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java

@@ -1191,4 +1191,17 @@ public class SampleXxlJob {
         }
     }
 
+
+    /**
+     * 评估合同超过3个月未归档自动提醒
+     */
+    @XxlJob("getThreeMonthsUnarchivedContracts")
+    public void getThreeMonthsUnarchivedContracts() {
+        try {
+            SpringUtil.getBean(IAssessApi.class).getThreeMonthsUnarchivedContracts();
+        } catch (Exception e) {
+            logger.warn("调用失败,可能服务不存在", e);
+        }
+    }
+
 }