yuansh vor 2 Jahren
Ursprung
Commit
807f20bf41
13 geänderte Dateien mit 151 neuen und 6 gelöschten Zeilen
  1. 4 1
      jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActReModelMapper.xml
  2. 4 0
      jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/Impl/ActBusinessServiceImpl.java
  3. 10 2
      jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/Impl/ActZprocessServiceImpl.java
  4. 9 1
      jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActTaskController.java
  5. 7 1
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/activiti/listener/ListenerSendMessage.java
  6. 7 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyCertificates.java
  7. 13 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialMapper.java
  8. 22 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialMapper.xml
  9. 1 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyCertificatesService.java
  10. 41 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyCertificatesServiceImpl.java
  11. 23 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/CertificatesJob.java
  12. 8 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java
  13. 2 1
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml

+ 4 - 1
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActReModelMapper.xml

@@ -130,7 +130,10 @@ FROM
 		INNER JOIN ACT_HI_IDENTITYLINK HI_OR0 ON HI_OR0.TASK_ID_ = RES.ID_
 		WHERE
 		RES.END_TIME_ IS NOT NULL
-		AND ( RES.ASSIGNEE_ = #{map.username} OR ( RES.ASSIGNEE_ IS NULL AND HI_OR0.TYPE_ = 'candidate' AND ( HI_OR0.USER_ID_ = #{map.username} )) )
+
+		AND ( (RES.ASSIGNEE_ = #{map.username} OR ( RES.ASSIGNEE_ IS NULL AND HI_OR0.TYPE_ = 'candidate' AND ( HI_OR0.USER_ID_ = #{map.username} )))
+		    or (RES.ASSIGNEE_ = #{map.userId} OR ( RES.ASSIGNEE_ IS NULL AND HI_OR0.TYPE_ = 'candidate' AND ( HI_OR0.USER_ID_ = #{map.userId} )))
+		    )
 		<if test="map.pkOrg!=null and map.pkOrg!=''">
 			AND RES.pk_org=#{map.pkOrg}
 		</if>

+ 4 - 0
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/Impl/ActBusinessServiceImpl.java

@@ -38,6 +38,10 @@ public class ActBusinessServiceImpl extends ServiceImpl<ActBusinessMapper, ActBu
     public List<ActBusiness> findByProcDefId(String id) {
        return this.list(new LambdaQueryWrapper<ActBusiness>().eq(ActBusiness::getProcDefId,id));
     }
+
+    public List<ActBusiness> findByProcInstId(String id) {
+       return this.list(new LambdaQueryWrapper<ActBusiness>().eq(ActBusiness::getProcInstId,id));
+    }
     /**保存业务表单数据到数据库表
      * <br>该方法相对通用,复杂业务单独定制,套路类似
      * @param tableId 业务表中的数据id

+ 10 - 2
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/Impl/ActZprocessServiceImpl.java

@@ -396,8 +396,16 @@ public class ActZprocessServiceImpl extends ServiceImpl<ActZprocessMapper, ActZp
 
         // 判断获取发起人
         if(actNodeService.hasChooseSponsor(nodeId)){
-            LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-            users.add(loginUser);
+            List<ActBusiness> list = actBusinessService.findByProcInstId(procInstId);
+            if(list.size() > 0){
+                String userid = list.get(0).getUserId();
+                LoginUser loginUser = sysBaseAPI.getUserByName(userid);
+                users.add(loginUser);
+            }else{
+                LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+                users.add(loginUser);
+            }
+
         }
         users = users.stream().filter(u->StrUtil.equals("0",u.getDelFlag())).collect(Collectors.toList());
         return users;

+ 9 - 1
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActTaskController.java

@@ -23,6 +23,7 @@ import org.activiti.engine.task.Comment;
 import org.activiti.engine.task.IdentityLink;
 import org.activiti.engine.task.Task;
 import org.activiti.engine.task.TaskQuery;
+import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.api.ISysBaseAPI;
@@ -339,6 +340,12 @@ public class ActTaskController {
             List<HistoricIdentityLink> identityLinks = historyService.getHistoricIdentityLinksForTask(e.getId());
             // 获取实际审批用户id
             String userId = actBusinessService.findUserIdByTypeAndTaskId(ActivitiConstant.EXECUTOR_TYPE, e.getId());
+            String oldId = null;
+            if(StringUtils.isNotBlank(userId)){
+                LoginUser user = sysBaseAPI.getUserByName(userId);
+                oldId = user.getId();
+            }
+
             for(HistoricIdentityLink hik : identityLinks){
                 // 关联候选用户(分配的候选用户审批人)
                 if("candidate".equals(hik.getType())&& StrUtil.isNotBlank(hik.getUserId())){
@@ -348,7 +355,7 @@ public class ActTaskController {
                     }
                     String username =user1.getRealname();
                     Assignee assignee = new Assignee(username, false);
-                    if(StrUtil.isNotBlank(userId)&&userId.equals(hik.getUserId())){
+                    if(StrUtil.isNotBlank(userId) && (userId.equals(hik.getUserId()) || oldId.equals(hik.getUserId()))){
                         assignee.setIsExecutor(true);
                     }
                     assignees.add(assignee);
@@ -626,6 +633,7 @@ public class ActTaskController {
         Map<String,Object> map=new HashMap<>();
         map.put("username",userId);
         map.put("pkOrg",loginUser.getOrgCode());
+        map.put("userId",loginUser.getId());
         List<HistoricTaskInstanceEntity> taskList=iActReModelService.getHistoricTaskList(map);
         // 转换vo
         List<ComboModel> allUser = sysBaseAPI.queryAllUser();

+ 7 - 1
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/activiti/listener/ListenerSendMessage.java

@@ -88,6 +88,7 @@ public class ListenerSendMessage implements TaskListener, JavaDelegate {
 				HashMap<String,String> userAndTask = getFirstUserAndTaskId(delegateExecution.getProcessInstanceId());
 				String taskId = oConvertUtils.getString(userAndTask.get("taskId"));
 				String applyUser = oConvertUtils.getString(userAndTask.get("user"));
+				String username = oConvertUtils.getString(userAndTask.get("username"));
 				String msgTitle = sysMessageTemplate.getTemplateName().
 						replace(MSG_PARAM_TASK_NAME, taskName).
 						replace(MSG_PARAM_APPLY_USER, applyUser);
@@ -100,7 +101,8 @@ public class ListenerSendMessage implements TaskListener, JavaDelegate {
 				taskParam.put("isUrl", "1");
 				taskParam.put("taskId", taskId);
 				for (String userId : userList){
-					sysBaseAPI.sendSysAnnouncement(loginUser,applyUser,userId,msgTitle,msgBody, CommonConstant.MSG_CATEGORY_2,taskParam);
+//					sysBaseAPI.sendSysAnnouncement(loginUser,applyUser,userId,msgTitle,msgBody, CommonConstant.MSG_CATEGORY_2,taskParam);
+					sysBaseAPI.sendSysAnnouncement(loginUser,username,userId,msgTitle,msgBody, CommonConstant.MSG_CATEGORY_2,taskParam);
 
 				}
 
@@ -123,6 +125,10 @@ public class ListenerSendMessage implements TaskListener, JavaDelegate {
 			SysUser sysUser = sysUserService.getUserByName(userId);
 			if (sysUser != null){
 				ret.put("user", sysUser.getRealname());
+				ret.put("username", sysUser.getUsername());
+			}else{
+				ret.put("user", "未查到该人员");
+				ret.put("username", "未查到该人员");
 			}
 
 		}

+ 7 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyCertificates.java

@@ -88,6 +88,13 @@ public class SyCertificates {
 	@Excel(name = "备注", width = 15)
     @ApiModelProperty(value = "备注")
 	private String remarks;
+	/**附件*/
+    @ApiModelProperty(value = "附件")
+	private String enclosure;
+    /**是否邮件通知*/
+	@Excel(name = "是否邮件通知(1是 0否)", width = 15)
+    @ApiModelProperty(value = "是否邮件通知(1是 0否)")
+	private String isMessage;
 	/**删除标记*/
 	@Excel(name = "删除标记", width = 15)
     @ApiModelProperty(value = "删除标记")

+ 13 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialMapper.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.oa.mapper;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.oa.entity.SyCertificates;
 import org.jeecg.modules.oa.entity.SyMaterial;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -14,4 +15,16 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface SyMaterialMapper extends BaseMapper<SyMaterial> {
 
+    /**
+     * 获取即将到期的证件信息
+     * @return
+     */
+    public List<SyCertificates> selectCertEnd();
+
+    /**
+     * 更新消息发送次数
+     * @return
+     */
+    public int updateCertEnd();
+
 }

+ 22 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialMapper.xml

@@ -1,5 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.oa.mapper.SyMaterialMapper">
+    
+    <select id="selectCertEnd" resultType="org.jeecg.modules.oa.entity.SyCertificates">
 
+        select name,id,end_date,notice_month
+        ,user_id -- 证件所有人
+        ,manage_id -- 管理人
+        from sy_certificates
+        where del_flag = 0 and is_message='1' and msg_num > 0 and end_date &lt; DATE_ADD(CURDATE(),INTERVAL notice_month MONTH)
+
+    </select>
+
+    <update id="updateCertEnd">
+        UPDATE
+        sy_certificates
+        SET msg_num = msg_num - 1
+        WHERE
+        del_flag = 0
+        AND is_message = '1'
+        AND msg_num > 0
+        AND end_date &lt; DATE_ADD( CURDATE(), INTERVAL notice_month MONTH )
+
+    </update>
+    
 </mapper>

+ 1 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyCertificatesService.java

@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ISyCertificatesService extends IService<SyCertificates> {
 
+    public void sentMsg();
 }

+ 41 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyCertificatesServiceImpl.java

@@ -1,12 +1,24 @@
 package org.jeecg.modules.oa.service.impl;
 
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.api.ISysBaseAPI;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.oa.entity.SyCertificates;
 import org.jeecg.modules.oa.mapper.SyCertificatesMapper;
+import org.jeecg.modules.oa.mapper.SyMaterialMapper;
 import org.jeecg.modules.oa.service.ISyCertificatesService;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * @Description: 证件管理
  * @Author: jeecg-boot
@@ -15,5 +27,34 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  */
 @Service
 public class SyCertificatesServiceImpl extends ServiceImpl<SyCertificatesMapper, SyCertificates> implements ISyCertificatesService {
+    @Autowired
+    private ISysBaseAPI sysBaseAPI;
+    @Autowired
+    private SyMaterialMapper syMaterialMapper;
+
+    public void sentMsg(){
+
+        List<SyCertificates> list = syMaterialMapper.selectCertEnd();
+
+        LoginUser loginUser = sysBaseAPI.getUserByName("admin");
+        HashMap<String,Object> taskParam = new HashMap<>();
+        for(SyCertificates o:list){
+
+            String dateString = DateUtils.formatDate(o.getEndDate(),"yyyy-MM-dd");
+
+            if(StringUtils.isNotBlank(o.getManageId())){
+                sysBaseAPI.sendSysAnnouncement(loginUser,"admin",o.getManageId(),"证件到期提醒","您好! 员工 "+o.getUserId()+" 证件"+o.getName()+"到期时间为"+dateString+" ; 已不足"+o.getNoticeMonth()+"个月,请及时处理。", CommonConstant.MSG_CATEGORY_2,taskParam);
+
+            }
+            if(StringUtils.isNotBlank(o.getUserId())){
+                sysBaseAPI.sendSysAnnouncement(loginUser,"admin",o.getUserId(),"证件到期提醒","您好! "+o.getUserId()+" 您的证件"+o.getName()+"到期时间为"+dateString+" ; 已不足"+o.getNoticeMonth()+"个月,请及时处理。", CommonConstant.MSG_CATEGORY_2,taskParam);
+            }
+        }
+
+        if(list.size() > 0){
+            syMaterialMapper.updateCertEnd();
+        }
+
+    }
 
 }

+ 23 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/CertificatesJob.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.quartz.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.oa.service.ISyCertificatesService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@Slf4j
+public class CertificatesJob implements Job {
+
+    @Autowired
+    private ISyCertificatesService iSyCertificatesService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+
+        log.info(String.format(" 证件管理定时任务 CertificatesJob !  时间:" + DateUtils.getTimestamp()));
+        iSyCertificatesService.sentMsg();
+    }
+}

+ 8 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -326,4 +326,12 @@ public class SysUser implements Serializable {
     @Excel(name = "是否OA用户(1是 0否)", width = 15)
     @ApiModelProperty(value = "是否OA用户(1是 0否)")
     private java.lang.String ifOa;
+   /**车牌号*/
+    @Excel(name = "车牌号", width = 15)
+    @ApiModelProperty(value = "车牌号")
+    private java.lang.String licenseCar;
+   /**所属公司*/
+    @Excel(name = "所属公司", width = 15)
+    @ApiModelProperty(value = "所属公司")
+    private java.lang.String belongingCompany;
 }

+ 2 - 1
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml

@@ -30,7 +30,7 @@
 	   		sas.read_flag,
 	   		sa.titile as titile,
 	   		sa.msg_content as msg_content,
-	   		sa.sender as sender,
+				u.realname as sender,
 	   		sa.priority as priority,
 	   		sa.msg_category,
 	   		sa.send_time as send_time,
@@ -39,6 +39,7 @@
 			sa.open_page as open_page
 	   from sys_announcement_send sas 
 	   left join sys_announcement sa ON sas.annt_id = sa.id
+	   left join sys_user u on sa.sender = u.username
 	   where sa.send_status = '1'
 	   and sa.del_flag = '0'
 	   and sas.user_id = #{announcementSendModel.userId}