yuansh 2 years ago
parent
commit
0f6f20e2d9
16 changed files with 293 additions and 22 deletions
  1. 8 6
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/activiti/listener/ListenerAnnualLeave.java
  2. 14 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/SyMaterialMapper.java
  3. 19 1
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/mapper/xml/SyMaterialMapper.xml
  4. 1 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/ISyCertificatesService.java
  5. 56 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyCertificatesServiceImpl.java
  6. 23 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/PersonnelJob.java
  7. 31 1
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java
  8. 2 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
  9. 53 11
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  10. 6 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java
  11. 6 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
  12. 6 1
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
  13. 10 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
  14. 6 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java
  15. 5 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
  16. 47 0
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/MyThread.java

+ 8 - 6
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/activiti/listener/ListenerAnnualLeave.java

@@ -34,29 +34,31 @@ public class ListenerAnnualLeave implements TaskListener, JavaDelegate {
 
 		String jsonString = json.getExpressionText();
 		JSONObject jsonObject = JSON.parseObject(jsonString);
-		String field_unit = oConvertUtils.getString(jsonObject.get("field_unit")); // 时长单位 1分 2天
+		String field_category = oConvertUtils.getString(jsonObject.get("field_category")); // 请假类别 年假 2
+//		String field_unit = oConvertUtils.getString(jsonObject.get("field_unit")); // 时长单位 1分 2天
 		String field_practical = oConvertUtils.getString(jsonObject.get("field_practical")); // 实际请假时长
 		String field_name = oConvertUtils.getString(jsonObject.get("field_name")); // 员工
 
-		if(StringUtils.isBlank(field_unit) && StringUtils.isBlank(field_practical) && StringUtils.isBlank(field_name)){
+		if(StringUtils.isBlank(field_category) && StringUtils.isBlank(field_practical) && StringUtils.isBlank(field_name)){
 			return;
 		}
 
-		if(!delegateExecution.getVariableInstances().containsKey(field_unit) ||
+		if(!delegateExecution.getVariableInstances().containsKey(field_category) ||
 				!delegateExecution.getVariableInstances().containsKey(field_practical) ||
 				!delegateExecution.getVariableInstances().containsKey(field_name)){
 			return;
 		}
 
-		String unit = delegateExecution.getVariableInstances().get(field_unit).getTextValue();
+//		String unit = delegateExecution.getVariableInstances().get(field_unit).getTextValue();
+		String category = delegateExecution.getVariableInstances().get(field_category).getTextValue();
 		String practical_leave = delegateExecution.getVariableInstances().get(field_practical).getTextValue();
 		String employe_name = delegateExecution.getVariableInstances().get(field_name).getTextValue();
 
-		if(StringUtils.isBlank(unit) && StringUtils.isBlank(practical_leave)){
+		if(StringUtils.isBlank(category) && StringUtils.isBlank(practical_leave)){
 			return;
 		}
 
-		if(unit.equals("2")){
+		if(category.equals("2")){
 			try {
 				sysUserMapper.updateAnnualInfo(employe_name,Double.valueOf(practical_leave));
 			}catch (Exception e){

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

@@ -6,6 +6,7 @@ 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;
+import org.jeecg.modules.system.entity.SysUser;
 
 /**
  * @Description: 物资登记表
@@ -27,4 +28,17 @@ public interface SyMaterialMapper extends BaseMapper<SyMaterial> {
      */
     public int updateCertEnd();
 
+
+    /**
+     * 获取入职超过50天的人员
+     * @return
+     */
+    public List<SysUser> selectUserEnd();
+
+    /**
+     * 更新消息发送次数(人员)
+     * @return
+     */
+    public int updateUserEnd();
+
 }

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

@@ -23,5 +23,23 @@
         AND end_date &lt; DATE_ADD( CURDATE(), INTERVAL notice_month MONTH )
 
     </update>
-    
+
+    <select id="selectUserEnd" resultType="org.jeecg.modules.system.entity.SysUser">
+
+        select *
+        from sys_user
+        where del_flag = 0 and IFNULL(n_personnel_type,'未转正') !='转正' and n_induction_time is not null and msg_num > 0
+			and DATEDIFF(NOW(),n_induction_time) >= 50
+
+    </select>
+
+    <update id="updateUserEnd">
+        UPDATE
+            sys_user
+        SET msg_num = msg_num - 1
+        where del_flag = 0 and IFNULL(n_personnel_type,'未转正') !='转正' and n_induction_time is not null and msg_num > 0
+			and DATEDIFF(NOW(),n_induction_time) >= 50
+
+    </update>
+
 </mapper>

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

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

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

@@ -1,5 +1,7 @@
 package org.jeecg.modules.oa.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.api.ISysBaseAPI;
@@ -16,6 +18,8 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 
@@ -31,6 +35,8 @@ public class SyCertificatesServiceImpl extends ServiceImpl<SyCertificatesMapper,
     private ISysBaseAPI sysBaseAPI;
     @Autowired
     private SyMaterialMapper syMaterialMapper;
+    @Autowired
+    private ISysUserService sysUserService;
 
     public void sentMsg(){
 
@@ -57,4 +63,54 @@ public class SyCertificatesServiceImpl extends ServiceImpl<SyCertificatesMapper,
 
     }
 
+
+    /**
+     * 提前50天的周一(以员工档案入司时间算起) 提醒转正
+     */
+    public void sentMsgPersonnelJob(){
+
+        Date date = new Date();
+        SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
+        String currSun = dateFm.format(date);
+        if(!currSun.equals("星期一")){
+            return;
+        }
+
+        List<SysUser> selectUserEnd = syMaterialMapper.selectUserEnd();
+
+        Page<SysUser> page = new Page<SysUser>(1, 100);
+        IPage<SysUser> pageList = sysUserService.getUserByDepId(page,"0d230bd2c41e49aebf41d26281360784",null);
+
+        if(pageList.getRecords().size() < 1){
+            return;
+        }
+
+        LoginUser loginUser = sysBaseAPI.getUserByName("admin");
+        HashMap<String,Object> taskParam = new HashMap<>();
+        for(SysUser o:selectUserEnd){
+
+            String dateString = DateUtils.formatDate(o.getNInductionTime(),"yyyy-MM-dd");
+
+            for(SysUser a:pageList.getRecords()){
+
+                sysBaseAPI.sendSysAnnouncement(loginUser,"admin",a.getUsername(),"人员转正提醒","您好! 员工 "+o.getRealname()+" 工号"+o.getWorkNo()+" 入职时间为"+dateString+" ; 已超过50天,请及时进行转正处理。", CommonConstant.MSG_CATEGORY_2,taskParam);
+
+            }
+
+        }
+
+        if(selectUserEnd.size() > 0){
+            syMaterialMapper.updateUserEnd();
+        }
+
+    }
+
+
+    public static void main(String[] args) {
+        Date date = new Date();
+        SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
+        String currSun = dateFm.format(date);
+        System.out.println(currSun);
+    }
+
 }

+ 23 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/PersonnelJob.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 PersonnelJob implements Job {
+
+    @Autowired
+    private ISyCertificatesService iSyCertificatesService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+
+        log.info(String.format(" 提前50天的周一(以员工档案入司时间算起) PersonnelJob !  时间:" + DateUtils.getTimestamp()));
+        iSyCertificatesService.sentMsgPersonnelJob();
+    }
+}

+ 31 - 1
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java

@@ -110,11 +110,13 @@ public class LoginController {
 			result.error500("用户名或密码错误");
 			return result;
 		}
-				
 		//用户登录信息
 		userInfo(sysUser, result);
 		sysBaseAPI.addLog("用户名: " + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null);
 
+		String is_possess = getDeptHead(username,sysUser.getOrgCode());
+		sysUser.setIsPossess(is_possess);
+
 		return result;
 	}
 
@@ -277,12 +279,40 @@ public class LoginController {
 		String orgCode= user.getOrgCode();
 		this.sysUserService.updateUserDepart(username, orgCode);
 		SysUser sysUser = sysUserService.getUserByName(username);
+
+		String is_possess = getDeptHead(username,orgCode);
+		sysUser.setIsPossess(is_possess);
+
 		JSONObject obj = new JSONObject();
 		obj.put("userInfo", sysUser);
 		result.setResult(obj);
 		return result;
 	}
 
+
+	/**
+	 * 获取该用户是否有部门负责人
+	 * @param username
+	 * @return
+	 */
+	public String getDeptHead(String username,String orgCode){
+
+		String is_possess = "0";
+		SysDepart sysDepart= sysDepartService.getById(orgCode);
+		List<SysDepart> list = sysDepartService.queryDepartsByUsernameByOrg(username,sysDepart.getOrgCode());
+
+		for(SysDepart o:list){
+			List<String> aa = sysBaseAPI.getDeptHeadByDepId(o.getId());
+			if(aa.size() > 0){
+				is_possess = "1";
+				return is_possess;
+			}
+		}
+
+		return is_possess;
+	}
+
+
 	/**
 	 * 短信登录接口
 	 * 

+ 2 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java

@@ -282,6 +282,7 @@ public class SysAnnouncementController {
 		Result<Map<String,Object>> result = new Result<Map<String,Object>>();
 		LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
 		String userId = sysUser.getId();
+		String pkOrg = sysUser.getPkOrg();
 		// 1.将系统消息补充到用户通告阅读标记表中
 		Collection<String> anntIds = sysAnnouncementSendService.queryByUserId(userId);
 		LambdaQueryWrapper<SysAnnouncement> querySaWrapper = new LambdaQueryWrapper<SysAnnouncement>();
@@ -296,6 +297,7 @@ public class SysAnnouncementController {
 		if(announcements.size()>0) {
 			for(int i=0;i<announcements.size();i++) {
 				SysAnnouncementSend announcementSend = new SysAnnouncementSend();
+				announcementSend.setPkOrg(pkOrg);
 				announcementSend.setAnntId(announcements.get(i).getId());
 				announcementSend.setUserId(userId);
 				announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);

+ 53 - 11
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -17,6 +17,7 @@ import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.apache.shiro.authz.annotation.RequiresRoles;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.query.QueryGenerator;
@@ -25,16 +26,11 @@ import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.PasswordUtil;
 import org.jeecg.common.util.RedisUtil;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.system.entity.SysDepart;
-import org.jeecg.modules.system.entity.SysUser;
-import org.jeecg.modules.system.entity.SysUserDepart;
-import org.jeecg.modules.system.entity.SysUserRole;
+import org.jeecg.modules.system.entity.*;
 import org.jeecg.modules.system.model.DepartIdModel;
 import org.jeecg.modules.system.model.SysUserSysDepartModel;
-import org.jeecg.modules.system.service.ISysDepartService;
-import org.jeecg.modules.system.service.ISysUserDepartService;
-import org.jeecg.modules.system.service.ISysUserRoleService;
-import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecg.modules.system.service.*;
+import org.jeecg.modules.system.util.MyThread;
 import org.jeecg.modules.system.vo.SysDepartUsersVO;
 import org.jeecg.modules.system.vo.SysUserRoleVO;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
@@ -51,6 +47,7 @@ import org.springframework.web.servlet.ModelAndView;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.text.ParseException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -68,8 +65,10 @@ import java.util.stream.Collectors;
 public class SysUserController {
 	@Autowired
 	private ISysBaseAPI sysBaseAPI;
-	
-	@Autowired
+    @Autowired
+    private ISysPositionService sysPositionService;
+
+    @Autowired
 	private ISysUserService sysUserService;
 
     @Autowired
@@ -112,7 +111,9 @@ public class SysUserController {
         }
 		result.setSuccess(true);
 		result.setResult(pageList);
-		log.info(pageList.toString());
+
+
+        log.info(pageList.toString());
 		return result;
 	}
 
@@ -133,6 +134,10 @@ public class SysUserController {
 			user.setDelFlag("0");
 			sysUserService.addUserWithRole(user, selectedRoles);
             sysUserService.addUserWithDepart(user, selectedDeparts);
+
+            MyThread mt = new MyThread(user);
+            mt.start();
+
 			result.success("添加成功!");
 		} catch (Exception e) {
 			log.error(e.getMessage(), e);
@@ -407,6 +412,27 @@ public class SysUserController {
        }
         //update-end--Author:kangxiaolin  Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据----------------------
         List<SysUser> pageList = sysUserService.list(queryWrapper);
+        List<SysPosition> list2 = sysPositionService.list();
+        Map<String,String> map = new HashMap<>();
+        for(SysPosition o:list2){
+            map.put(o.getCode(),o.getName());
+        }
+       for(SysUser o:pageList){
+           if(StringUtils.isNotBlank(o.getIfOa()) && o.getIfOa().equals("1")){
+               o.setIfOa("是");
+           }else{
+               o.setIfOa("否");
+           }
+           if(StringUtils.isNotBlank(o.getNMarriage()) && o.getNMarriage().equals("1")){
+               o.setNMarriage("是");
+           }
+           if(StringUtils.isNotBlank(o.getNMarriage()) && o.getNMarriage().equals("0")){
+               o.setNMarriage("否");
+           }
+           if(StringUtils.isNotBlank(o.getPost()) && map.containsKey(o.getPost())){
+               o.setPost(map.get(o.getPost()));
+           }
+       }
 
         //导出文件名称
         mv.addObject(NormalExcelConstants.FILE_NAME, "用户列表");
@@ -1206,4 +1232,20 @@ public class SysUserController {
         return result;
     }
 
+    @AutoLog(value = "变更社保/公积金基数")
+    @RequestMapping(value = "/updateUserBatch", method = RequestMethod.PUT)
+    public Result<?> handleInfo(@RequestBody JSONObject jsonObject) throws ParseException {
+        String ids = jsonObject.getString("ids");
+        String gongJiJin = jsonObject.getString("gongJiJin");
+        String sheBao = jsonObject.getString("sheBao");
+
+        String[] idList = ids.split(",");
+        if(idList.length > 0){
+            for(String o:idList){
+                sysUserService.updateUserBatch(o,Double.valueOf(gongJiJin),Double.valueOf(sheBao));
+            }
+        }
+
+        return Result.ok("OK");
+    }
 }

+ 6 - 2
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.system.entity;
 
 import java.util.Date;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -130,9 +131,9 @@ public class SysUser implements Serializable {
     private String post;
 
     /**
-     * 座机号
+     * 家庭电话
      */
-    @Excel(name = "座机号", width = 15)
+    @Excel(name = "家庭电话", width = 15)
     private String telephone;
 
     /**
@@ -334,4 +335,7 @@ public class SysUser implements Serializable {
     @Excel(name = "所属公司", width = 15)
     @ApiModelProperty(value = "所属公司")
     private java.lang.String belongingCompany;
+
+    @TableField(exist = false)
+    private java.lang.String isPossess;//该用户是否有部门负责人 0否 1是
 }

+ 6 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java

@@ -35,6 +35,12 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 	 */
 	public int updateAnnualInfo(@Param("username") String username,@Param("num") Double num);
 
+	/**
+	  * 更新员工的公积金、社保
+	 * @return
+	 */
+	public int updateUserBatch(@Param("id") String id,@Param("gongJiJin") Double gongJiJin,@Param("sheBao") Double sheBao);
+
 	/**
 	  * 通过用户账号查询用户信息
 	 * @param username

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

@@ -12,6 +12,11 @@
 		where username = #{username}
 	</update>
 
+	<update id="updateUserBatch">
+		update 	sys_user set n_Fund_Base = #{gongJiJin} , n_Social_Base = #{sheBao}
+		where id = #{id}
+	</update>
+
 	<!-- 根据用户名查询 -->
 	<select id="getUserByName" resultType="org.jeecg.modules.system.entity.SysUser">
 		select * from  sys_user  where username = #{username} and del_flag = '0'
@@ -138,7 +143,7 @@
 			</if>
 		</if>
 		group by a.username,a.realname
-		order by c.org_code ,a.username ASC
+		order by substring_index(work_no, '-', 1) + 0 ASC
 	</select>
 
 	<update id="updateCommunication">

+ 10 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -15,6 +15,7 @@ import org.jeecg.modules.system.entity.SysUser;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.system.model.SysUserSysDepartModel;
+import org.springframework.context.annotation.DependsOn;
 
 /**
  * <p>
@@ -26,6 +27,15 @@ import org.jeecg.modules.system.model.SysUserSysDepartModel;
  */
 public interface ISysUserService extends IService<SysUser> {
 
+	/**
+	 * 更新公积金和社保
+	 * @param id
+	 * @param gongJiJin
+	 * @param sheBao
+	 * @return
+	 */
+	public int updateUserBatch(String id,Double gongJiJin, Double sheBao);
+
 	/**
 	 * 重置密码
 	 *

+ 6 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java

@@ -7,7 +7,9 @@ import java.util.List;
 
 import javax.annotation.Resource;
 
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.system.entity.SysAnnouncement;
 import org.jeecg.modules.system.entity.SysAnnouncementSend;
@@ -39,6 +41,9 @@ public class SysAnnouncementServiceImpl extends ServiceImpl<SysAnnouncementMappe
 	@Transactional
 	@Override
 	public void saveAnnouncement(SysAnnouncement sysAnnouncement) {
+		LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+		String pkOrg = loginUser.getPkOrg();
+		sysAnnouncement.setPkOrg(pkOrg);
 		if(sysAnnouncement.getMsgType().equals(CommonConstant.MSG_TYPE_ALL)) {
 			sysAnnouncementMapper.insert(sysAnnouncement);
 		}else {
@@ -51,6 +56,7 @@ public class SysAnnouncementServiceImpl extends ServiceImpl<SysAnnouncementMappe
 			Date refDate = new Date();
 			for(int i=0;i<userIds.length;i++) {
 				SysAnnouncementSend announcementSend = new SysAnnouncementSend();
+				announcementSend.setPkOrg(pkOrg);
 				announcementSend.setAnntId(anntId);
 				announcementSend.setUserId(userIds[i]);
 				announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);

+ 5 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CacheConstant;
 import org.jeecg.common.constant.CommonConstant;
@@ -55,6 +56,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	@Autowired
 	private SysDepartMapper sysDepartMapper;
 
+    @Override
+	public int updateUserBatch(String id,Double gongJiJin, Double sheBao){
+    	return userMapper.updateUserBatch(id,gongJiJin,sheBao);
+	}
     @Override
     @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
     public Result<?> resetPassword(String username, String oldpassword, String newpassword, String confirmpassword) {

+ 47 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/MyThread.java

@@ -0,0 +1,47 @@
+package org.jeecg.modules.system.util;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.google.common.collect.Maps;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.api.ISysBaseAPI;
+import org.jeecg.common.system.vo.ComboModel;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.SpringContextUtils;
+import org.jeecg.modules.system.entity.SysUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.context.ContextLoader;
+import org.springframework.web.context.WebApplicationContext;
+
+import java.io.UnsupportedEncodingException;
+import java.util.*;
+
+public class MyThread extends Thread {
+
+    private SysUser user;//
+
+    public MyThread(SysUser user){
+        this.user = user;
+    }
+
+    @Override
+    public void run() {
+
+        ISysBaseAPI sysBaseAPI = SpringContextUtils.getBean(ISysBaseAPI.class);
+
+        HashMap<String,Object> taskParam = new HashMap<>();
+        LoginUser loginUser = sysBaseAPI.getUserByName("admin");
+
+        List<ComboModel> list = sysBaseAPI.queryAllUser();
+
+        for(ComboModel o:list){
+
+            sysBaseAPI.sendSysAnnouncement(loginUser,"admin",o.getUsername(),"通讯录变更提醒","您好! 新员工 "+user.getRealname()+" 已更新通讯录信息,请至通讯录管理页面查看。", CommonConstant.MSG_CATEGORY_2,taskParam);
+
+        }
+
+
+    }
+
+
+}